From ede1e75b297ed3fb5bb3e815f90621913eebe916 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Thu, 13 May 2021 21:33:02 +0200 Subject: [PATCH 01/17] Updated to diStorm 3.5.2 --- .../Dependencies/distorm/include/distorm.h | 93 +- .../Dependencies/distorm/include/mnemonics.h | 472 +- NativeCore/Dependencies/distorm/src/config.h | 7 +- NativeCore/Dependencies/distorm/src/decoder.c | 786 ++- NativeCore/Dependencies/distorm/src/decoder.h | 18 +- NativeCore/Dependencies/distorm/src/distorm.c | 450 +- .../Dependencies/distorm/src/instructions.c | 126 +- .../Dependencies/distorm/src/instructions.h | 304 +- NativeCore/Dependencies/distorm/src/insts.c | 5253 +++++++++-------- NativeCore/Dependencies/distorm/src/insts.h | 2 +- .../Dependencies/distorm/src/mnemonics.c | 465 +- .../Dependencies/distorm/src/operands.c | 1109 ++-- .../Dependencies/distorm/src/operands.h | 9 +- NativeCore/Dependencies/distorm/src/prefix.c | 387 +- NativeCore/Dependencies/distorm/src/prefix.h | 37 +- .../Dependencies/distorm/src/textdefs.c | 174 +- .../Dependencies/distorm/src/textdefs.h | 13 +- NativeCore/Dependencies/distorm/src/wstring.h | 31 +- NativeCore/Dependencies/distorm/src/x86defs.h | 2 +- NativeCore/Unix/Makefile | 10 +- NativeCore/Unix/NativeCore.Unix.vcxproj | 1 - .../Unix/NativeCore.Unix.vcxproj.filters | 6 - NativeCore/Windows/NativeCore.vcxproj | 1 - NativeCore/Windows/NativeCore.vcxproj.filters | 3 - 24 files changed, 4882 insertions(+), 4877 deletions(-) diff --git a/NativeCore/Dependencies/distorm/include/distorm.h b/NativeCore/Dependencies/distorm/include/distorm.h index d99bbc39..2e09c4a6 100644 --- a/NativeCore/Dependencies/distorm/include/distorm.h +++ b/NativeCore/Dependencies/distorm/include/distorm.h @@ -1,4 +1,4 @@ -/* diStorm 3.4.0 */ +/* diStorm 3.5.2 */ /* distorm.h @@ -6,7 +6,7 @@ distorm.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -33,29 +33,27 @@ This library is licensed under the BSD license. See the file COPYING. #undef SUPPORT_64BIT_OFFSET #endif -/* If your compiler doesn't support stdint.h, define your own 64 bits type. */ -#ifdef SUPPORT_64BIT_OFFSET - #ifdef _MSC_VER - #define OFFSET_INTEGER unsigned __int64 - #else - #include - #define OFFSET_INTEGER uint64_t - #endif +#ifndef _MSC_VER +#include #else - /* 32 bit offsets are used. */ - #define OFFSET_INTEGER unsigned long +/* Since MSVC < 2010 isn't shipped with stdint.h, + * here are those from MSVC 2017, which also match + * those in tinycc/libc. */ +typedef signed char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef long long int64_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; #endif -#ifdef _MSC_VER -/* Since MSVC isn't shipped with stdint.h, we will have our own: */ -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; -typedef signed __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef signed __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef signed __int8 int8_t; -typedef unsigned __int8 uint8_t; +#ifdef SUPPORT_64BIT_OFFSET +#define OFFSET_INTEGER uint64_t +#else +/* 32 bit offsets are used. */ +#define OFFSET_INTEGER uint32_t #endif /* Support C++ compilers */ @@ -67,10 +65,10 @@ typedef unsigned __int8 uint8_t; /* *** Helper Macros *** */ /* Get the ISC of the instruction, used with the definitions below. */ -#define META_GET_ISC(meta) (((meta) >> 3) & 0x1f) -#define META_SET_ISC(di, isc) (((di)->meta) |= ((isc) << 3)) +#define META_GET_ISC(meta) (((meta) >> 8) & 0x1f) +#define META_SET_ISC(di, isc) (((di)->meta) |= ((isc) << 8)) /* Get the flow control flags of the instruction, see 'features for decompose' below. */ -#define META_GET_FC(meta) ((meta) & 0x7) +#define META_GET_FC(meta) ((meta) & 0xf) /* Get the target address of a branching instruction. O_PC operand type. */ #define INSTRUCTION_GET_TARGET(di) ((_OffsetType)(((di)->addr + (di)->imm.addr + (di)->size))) @@ -91,7 +89,7 @@ typedef unsigned __int8 uint8_t; #define FLAG_GET_OPSIZE(flags) (((flags) >> 8) & 3) #define FLAG_GET_ADDRSIZE(flags) (((flags) >> 10) & 3) /* To get the LOCK/REPNZ/REP prefixes. */ -#define FLAG_GET_PREFIX(flags) ((flags) & 7) +#define FLAG_GET_PREFIX(flags) (((unsigned int)((int16_t)flags)) & 7) /* Indicates whether the instruction is privileged. */ #define FLAG_GET_PRIVILEGED(flags) (((flags) & FLAG_PRIVILEGED_INSTRUCTION) != 0) @@ -99,10 +97,10 @@ typedef unsigned __int8 uint8_t; * Macros to extract segment registers from 'segment': */ #define SEGMENT_DEFAULT 0x80 -#define SEGMENT_SET(di, seg) ((di->segment) |= seg) #define SEGMENT_GET(segment) (((segment) == R_NONE) ? R_NONE : ((segment) & 0x7f)) -#define SEGMENT_IS_DEFAULT(segment) (((segment) & SEGMENT_DEFAULT) == SEGMENT_DEFAULT) - +#define SEGMENT_GET_UNSAFE(segment) ((segment) & 0x7f) +#define SEGMENT_IS_DEFAULT(segment) (((int8_t)segment) < -1) /* Quick check it's a negative number that isn't -1, so it's (0x80 | SEGREG). */ +#define SEGMENT_IS_DEFAULT_OR_NONE(segment) (((uint8_t)(segment)) > 0x80) /* Decodes modes of the disassembler, 16 bits or 32 bits or 64 bits for AMD64, x86-64. */ typedef enum { Decode16Bits = 0, Decode32Bits = 1, Decode64Bits = 2 } _DecodeType; @@ -110,7 +108,8 @@ typedef enum { Decode16Bits = 0, Decode32Bits = 1, Decode64Bits = 2 } _DecodeTyp typedef OFFSET_INTEGER _OffsetType; typedef struct { - _OffsetType codeOffset, nextOffset; /* nextOffset is OUT only. */ + _OffsetType codeOffset, addrMask; + _OffsetType nextOffset; /* nextOffset is OUT only. */ const uint8_t* code; int codeLen; /* Using signed integer makes it easier to detect an underflow. */ _DecodeType dt; @@ -243,6 +242,8 @@ typedef struct { uint16_t opcode; /* Up to four operands per instruction, ignored if ops[n].type == O_NONE. */ _Operand ops[OPERANDS_NO]; + /* Number of valid ops entries. */ + uint8_t opsNo; /* Size of the whole instruction in bytes. */ uint8_t size; /* Segment information of memory indirection, default segment, or overriden one, can be -1. Use SEGMENT macros. */ @@ -251,8 +252,8 @@ typedef struct { uint8_t base, scale; uint8_t dispSize; /* Meta defines the instruction set class, and the flow control flags. Use META macros. */ - uint8_t meta; - /* The CPU flags that the instruction operates upon. */ + uint16_t meta; + /* The CPU flags that the instruction operates upon, set only with DF_FILL_EFLAGS enabled, otherwise 0. */ uint16_t modifiedFlagsMask, testedFlagsMask, undefinedFlagsMask; } _DInst; @@ -271,11 +272,11 @@ typedef struct { * This structure holds all information the disassembler generates per instruction. */ typedef struct { + _OffsetType offset; /* Start offset of the decoded instruction. */ + unsigned int size; /* Size of decoded instruction in bytes. */ _WString mnemonic; /* Mnemonic of decoded instruction, prefixed if required by REP, LOCK etc. */ _WString operands; /* Operands of the decoded instruction, up to 3 operands, comma-seperated. */ _WString instructionHex; /* Hex dump - little endian, including prefixes. */ - unsigned int size; /* Size of decoded instruction in bytes. */ - _OffsetType offset; /* Start offset of the decoded instruction. */ } _DecodedInst; #endif /* DISTORM_LIGHT */ @@ -285,7 +286,7 @@ typedef struct { #define RM_CX 2 /* CL, CH, CX, ECX, RCX */ #define RM_DX 4 /* DL, DH, DX, EDX, RDX */ #define RM_BX 8 /* BL, BH, BX, EBX, RBX */ -#define RM_SP 0x10 /* SPL, SP, ESP, RSP */ +#define RM_SP 0x10 /* SPL, SP, ESP, RSP */ #define RM_BP 0x20 /* BPL, BP, EBP, RBP */ #define RM_SI 0x40 /* SIL, SI, ESI, RSI */ #define RM_DI 0x80 /* DIL, DI, EDI, RDI */ @@ -303,6 +304,7 @@ typedef struct { #define RM_R13 0x80000 /* R13B, R13W, R13D, R13 */ #define RM_R14 0x100000 /* R14B, R14W, R14D, R14 */ #define RM_R15 0x200000 /* R15B, R15W, R15D, R15 */ +#define RM_SEG 0x400000 /* CS, SS, DS, ES, FS, GS */ /* RIP should be checked using the 'flags' field and FLAG_RIP_RELATIVE. * Segments should be checked using the segment macros. @@ -384,8 +386,21 @@ typedef struct { #define DF_STOP_ON_INT 0x100 /* The decoder will stop and return to the caller when any of the 'CMOVxx' instruction was decoded. */ #define DF_STOP_ON_CMOV 0x200 +/* The decoder will stop and return to the caller when it encounters the HLT instruction. */ +#define DF_STOP_ON_HLT 0x400 +/* The decoder will stop and return to the caller when it encounters a privileged instruction. */ +#define DF_STOP_ON_PRIVILEGED 0x800 +/* The decoder will stop and return to the caller when an instruction couldn't be decoded. */ +#define DF_STOP_ON_UNDECODEABLE 0x1000 +/* The decoder will not synchronize to the next byte after the previosuly decoded instruction, instead it will start decoding at the next byte. */ +#define DF_SINGLE_BYTE_STEP 0x2000 +/* The decoder will fill in the eflags fields for the decoded instruction. */ +#define DF_FILL_EFLAGS 0x4000 +/* The decoder will use the addrMask in CodeInfo structure instead of DF_MAXIMUM_ADDR16/32. */ +#define DF_USE_ADDR_MASK 0x8000 + /* The decoder will stop and return to the caller when any flow control instruction was decoded. */ -#define DF_STOP_ON_FLOW_CONTROL (DF_STOP_ON_CALL | DF_STOP_ON_RET | DF_STOP_ON_SYS | DF_STOP_ON_UNC_BRANCH | DF_STOP_ON_CND_BRANCH | DF_STOP_ON_INT | DF_STOP_ON_CMOV) +#define DF_STOP_ON_FLOW_CONTROL (DF_STOP_ON_CALL | DF_STOP_ON_RET | DF_STOP_ON_SYS | DF_STOP_ON_UNC_BRANCH | DF_STOP_ON_CND_BRANCH | DF_STOP_ON_INT | DF_STOP_ON_CMOV | DF_STOP_ON_HLT) /* Indicates the instruction is not a flow-control instruction. */ #define FC_NONE 0 @@ -406,9 +421,11 @@ typedef struct { #define FC_INT 6 /* Indicates the instruction is one of: CMOVxx. */ #define FC_CMOV 7 +/* Indicates the instruction is HLT. */ +#define FC_HLT 8 /* Return code of the decoding function. */ -typedef enum { DECRES_NONE, DECRES_SUCCESS, DECRES_MEMORYERR, DECRES_INPUTERR, DECRES_FILTERED } _DecodeResult; +typedef enum { DECRES_NONE, DECRES_SUCCESS, DECRES_MEMORYERR, DECRES_INPUTERR } _DecodeResult; /* Define the following interface functions only for outer projects. */ #if !(defined(DISTORM_STATIC) || defined(DISTORM_DYNAMIC)) @@ -431,7 +448,7 @@ typedef enum { DECRES_NONE, DECRES_SUCCESS, DECRES_MEMORYERR, DECRES_INPUTERR, D * Notes: 1)The minimal size of maxInstructions is 15. * 2)You will have to synchronize the offset,code and length by yourself if you pass code fragments and not a complete code block! */ - + /* distorm_decompose * See more documentation online at the GitHub project's wiki. * diff --git a/NativeCore/Dependencies/distorm/include/mnemonics.h b/NativeCore/Dependencies/distorm/include/mnemonics.h index 32d71be8..3a784cca 100644 --- a/NativeCore/Dependencies/distorm/include/mnemonics.h +++ b/NativeCore/Dependencies/distorm/include/mnemonics.h @@ -4,7 +4,7 @@ mnemonics.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -41,245 +41,245 @@ extern const _WRegister _REGISTERS[]; #define GET_MNEMONIC_NAME(m) ((_WMnemonic*)&_MNEMONICS[(m)])->p typedef enum { - I_UNDEFINED = 0, I_AAA = 66, I_AAD = 389, I_AAM = 384, I_AAS = 76, I_ADC = 31, I_ADD = 11, I_ADDPD = 3132, - I_ADDPS = 3125, I_ADDSD = 3146, I_ADDSS = 3139, I_ADDSUBPD = 6416, I_ADDSUBPS = 6426, - I_AESDEC = 9231, I_AESDECLAST = 9248, I_AESENC = 9189, I_AESENCLAST = 9206, - I_AESIMC = 9172, I_AESKEYGENASSIST = 9817, I_AND = 41, I_ANDNPD = 3043, I_ANDNPS = 3035, - I_ANDPD = 3012, I_ANDPS = 3005, I_ARPL = 111, I_BLENDPD = 9394, I_BLENDPS = 9375, - I_BLENDVPD = 7641, I_BLENDVPS = 7631, I_BOUND = 104, I_BSF = 4368, I_BSR = 4380, + I_UNDEFINED = 0, I_AAA = 66, I_AAD = 389, I_AAM = 384, I_AAS = 76, I_ADC = 31, I_ADD = 11, I_ADDPD = 3144, + I_ADDPS = 3137, I_ADDSD = 3158, I_ADDSS = 3151, I_ADDSUBPD = 6428, I_ADDSUBPS = 6438, + I_AESDEC = 9243, I_AESDECLAST = 9260, I_AESENC = 9201, I_AESENCLAST = 9218, + I_AESIMC = 9184, I_AESKEYGENASSIST = 9829, I_AND = 41, I_ANDNPD = 3055, I_ANDNPS = 3047, + I_ANDPD = 3024, I_ANDPS = 3017, I_ARPL = 111, I_BLENDPD = 9406, I_BLENDPS = 9387, + I_BLENDVPD = 7653, I_BLENDVPS = 7643, I_BOUND = 104, I_BSF = 4380, I_BSR = 4392, I_BSWAP = 960, I_BT = 872, I_BTC = 934, I_BTR = 912, I_BTS = 887, I_CALL = 456, - I_CALL_FAR = 260, I_CBW = 228, I_CDQ = 250, I_CDQE = 239, I_CLC = 492, I_CLD = 512, - I_CLFLUSH = 4351, I_CLGI = 1855, I_CLI = 502, I_CLTS = 541, I_CMC = 487, I_CMOVA = 694, - I_CMOVAE = 663, I_CMOVB = 656, I_CMOVBE = 686, I_CMOVG = 754, I_CMOVGE = 738, - I_CMOVL = 731, I_CMOVLE = 746, I_CMOVNO = 648, I_CMOVNP = 723, I_CMOVNS = 708, - I_CMOVNZ = 678, I_CMOVO = 641, I_CMOVP = 716, I_CMOVS = 701, I_CMOVZ = 671, - I_CMP = 71, I_CMPEQPD = 4471, I_CMPEQPS = 4392, I_CMPEQSD = 4629, I_CMPEQSS = 4550, - I_CMPLEPD = 4489, I_CMPLEPS = 4410, I_CMPLESD = 4647, I_CMPLESS = 4568, I_CMPLTPD = 4480, - I_CMPLTPS = 4401, I_CMPLTSD = 4638, I_CMPLTSS = 4559, I_CMPNEQPD = 4510, I_CMPNEQPS = 4431, - I_CMPNEQSD = 4668, I_CMPNEQSS = 4589, I_CMPNLEPD = 4530, I_CMPNLEPS = 4451, - I_CMPNLESD = 4688, I_CMPNLESS = 4609, I_CMPNLTPD = 4520, I_CMPNLTPS = 4441, - I_CMPNLTSD = 4678, I_CMPNLTSS = 4599, I_CMPORDPD = 4540, I_CMPORDPS = 4461, - I_CMPORDSD = 4698, I_CMPORDSS = 4619, I_CMPS = 301, I_CMPUNORDPD = 4498, I_CMPUNORDPS = 4419, - I_CMPUNORDSD = 4656, I_CMPUNORDSS = 4577, I_CMPXCHG = 898, I_CMPXCHG16B = 6395, - I_CMPXCHG8B = 6384, I_COMISD = 2801, I_COMISS = 2793, I_CPUID = 865, I_CQO = 255, - I_CRC32 = 9280, I_CVTDQ2PD = 6809, I_CVTDQ2PS = 3329, I_CVTPD2DQ = 6819, I_CVTPD2PI = 2703, - I_CVTPD2PS = 3255, I_CVTPH2PS = 4183, I_CVTPI2PD = 2517, I_CVTPI2PS = 2507, - I_CVTPS2DQ = 3339, I_CVTPS2PD = 3245, I_CVTPS2PH = 4193, I_CVTPS2PI = 2693, - I_CVTSD2SI = 2723, I_CVTSD2SS = 3275, I_CVTSI2SD = 2537, I_CVTSI2SS = 2527, - I_CVTSS2SD = 3265, I_CVTSS2SI = 2713, I_CVTTPD2DQ = 6798, I_CVTTPD2PI = 2636, - I_CVTTPS2DQ = 3349, I_CVTTPS2PI = 2625, I_CVTTSD2SI = 2658, I_CVTTSS2SI = 2647, - I_CWD = 245, I_CWDE = 233, I_DAA = 46, I_DAS = 56, I_DEC = 86, I_DIV = 1646, - I_DIVPD = 3521, I_DIVPS = 3514, I_DIVSD = 3535, I_DIVSS = 3528, I_DPPD = 9637, - I_DPPS = 9624, I_EMMS = 4122, I_ENTER = 340, I_EXTRACTPS = 9502, I_EXTRQ = 4158, - I_F2XM1 = 1192, I_FABS = 1123, I_FADD = 1023, I_FADDP = 1549, I_FBLD = 1601, - I_FBSTP = 1607, I_FCHS = 1117, I_FCLEX = 7311, I_FCMOVB = 1376, I_FCMOVBE = 1392, - I_FCMOVE = 1384, I_FCMOVNB = 1445, I_FCMOVNBE = 1463, I_FCMOVNE = 1454, I_FCMOVNU = 1473, - I_FCMOVU = 1401, I_FCOM = 1035, I_FCOMI = 1512, I_FCOMIP = 1623, I_FCOMP = 1041, - I_FCOMPP = 1563, I_FCOS = 1311, I_FDECSTP = 1238, I_FDIV = 1061, I_FDIVP = 1594, - I_FDIVR = 1067, I_FDIVRP = 1586, I_FEDISI = 1488, I_FEMMS = 574, I_FENI = 1482, - I_FFREE = 1527, I_FIADD = 1317, I_FICOM = 1331, I_FICOMP = 1338, I_FIDIV = 1361, - I_FIDIVR = 1368, I_FILD = 1418, I_FIMUL = 1324, I_FINCSTP = 1247, I_FINIT = 7326, - I_FIST = 1432, I_FISTP = 1438, I_FISTTP = 1424, I_FISUB = 1346, I_FISUBR = 1353, - I_FLD = 1074, I_FLD1 = 1141, I_FLDCW = 1098, I_FLDENV = 1090, I_FLDL2E = 1155, - I_FLDL2T = 1147, I_FLDLG2 = 1170, I_FLDLN2 = 1178, I_FLDPI = 1163, I_FLDZ = 1186, - I_FMUL = 1029, I_FMULP = 1556, I_FNCLEX = 7303, I_FNINIT = 7318, I_FNOP = 1111, - I_FNSAVE = 7333, I_FNSTCW = 7288, I_FNSTENV = 7271, I_FNSTSW = 7348, I_FPATAN = 1213, - I_FPREM = 1256, I_FPREM1 = 1230, I_FPTAN = 1206, I_FRNDINT = 1288, I_FRSTOR = 1519, - I_FSAVE = 7341, I_FSCALE = 1297, I_FSETPM = 1496, I_FSIN = 1305, I_FSINCOS = 1279, - I_FSQRT = 1272, I_FST = 1079, I_FSTCW = 7296, I_FSTENV = 7280, I_FSTP = 1084, - I_FSTSW = 7356, I_FSUB = 1048, I_FSUBP = 1579, I_FSUBR = 1054, I_FSUBRP = 1571, - I_FTST = 1129, I_FUCOM = 1534, I_FUCOMI = 1504, I_FUCOMIP = 1614, I_FUCOMP = 1541, - I_FUCOMPP = 1409, I_FXAM = 1135, I_FXCH = 1105, I_FXRSTOR = 9914, I_FXRSTOR64 = 9923, - I_FXSAVE = 9886, I_FXSAVE64 = 9894, I_FXTRACT = 1221, I_FYL2X = 1199, I_FYL2XP1 = 1263, - I_GETSEC = 633, I_HADDPD = 4203, I_HADDPS = 4211, I_HLT = 482, I_HSUBPD = 4237, - I_HSUBPS = 4245, I_IDIV = 1651, I_IMUL = 117, I_IN = 447, I_INC = 81, I_INS = 123, - I_INSERTPS = 9569, I_INSERTQ = 4165, I_INT = 367, I_INT_3 = 360, I_INT1 = 476, - I_INTO = 372, I_INVD = 555, I_INVEPT = 8306, I_INVLPG = 1727, I_INVLPGA = 1869, - I_INVPCID = 8323, I_INVVPID = 8314, I_IRET = 378, I_JA = 166, I_JAE = 147, - I_JB = 143, I_JBE = 161, I_JCXZ = 427, I_JECXZ = 433, I_JG = 202, I_JGE = 192, - I_JL = 188, I_JLE = 197, I_JMP = 462, I_JMP_FAR = 467, I_JNO = 138, I_JNP = 183, - I_JNS = 174, I_JNZ = 156, I_JO = 134, I_JP = 179, I_JRCXZ = 440, I_JS = 170, - I_JZ = 152, I_LAHF = 289, I_LAR = 522, I_LDDQU = 7016, I_LDMXCSR = 9944, I_LDS = 335, - I_LEA = 223, I_LEAVE = 347, I_LES = 330, I_LFENCE = 4287, I_LFS = 917, I_LGDT = 1703, - I_LGS = 922, I_LIDT = 1709, I_LLDT = 1668, I_LMSW = 1721, I_LODS = 313, I_LOOP = 421, - I_LOOPNZ = 406, I_LOOPZ = 414, I_LSL = 527, I_LSS = 907, I_LTR = 1674, I_LZCNT = 4385, - I_MASKMOVDQU = 7141, I_MASKMOVQ = 7131, I_MAXPD = 3581, I_MAXPS = 3574, I_MAXSD = 3595, - I_MAXSS = 3588, I_MFENCE = 4313, I_MINPD = 3461, I_MINPS = 3454, I_MINSD = 3475, - I_MINSS = 3468, I_MONITOR = 1771, I_MOV = 218, I_MOVAPD = 2481, I_MOVAPS = 2473, - I_MOVBE = 9273, I_MOVD = 3942, I_MOVDDUP = 2208, I_MOVDQ2Q = 6544, I_MOVDQA = 3968, - I_MOVDQU = 3976, I_MOVHLPS = 2173, I_MOVHPD = 2367, I_MOVHPS = 2359, I_MOVLHPS = 2350, - I_MOVLPD = 2190, I_MOVLPS = 2182, I_MOVMSKPD = 2837, I_MOVMSKPS = 2827, I_MOVNTDQ = 6871, - I_MOVNTDQA = 7917, I_MOVNTI = 952, I_MOVNTPD = 2578, I_MOVNTPS = 2569, I_MOVNTQ = 6863, - I_MOVNTSD = 2596, I_MOVNTSS = 2587, I_MOVQ = 3948, I_MOVQ2DQ = 6535, I_MOVS = 295, - I_MOVSD = 2132, I_MOVSHDUP = 2375, I_MOVSLDUP = 2198, I_MOVSS = 2125, I_MOVSX = 939, - I_MOVSXD = 10027, I_MOVUPD = 2117, I_MOVUPS = 2109, I_MOVZX = 927, I_MPSADBW = 9650, - I_MUL = 1641, I_MULPD = 3192, I_MULPS = 3185, I_MULSD = 3206, I_MULSS = 3199, - I_MWAIT = 1780, I_NEG = 1636, I_NOP = 581, I_NOT = 1631, I_OR = 27, I_ORPD = 3075, - I_ORPS = 3069, I_OUT = 451, I_OUTS = 128, I_PABSB = 7710, I_PABSD = 7740, I_PABSW = 7725, - I_PACKSSDW = 3871, I_PACKSSWB = 3703, I_PACKUSDW = 7938, I_PACKUSWB = 3781, - I_PADDB = 7226, I_PADDD = 7256, I_PADDQ = 6503, I_PADDSB = 6952, I_PADDSW = 6969, - I_PADDUSB = 6642, I_PADDUSW = 6661, I_PADDW = 7241, I_PALIGNR = 9432, I_PAND = 6629, - I_PANDN = 6687, I_PAUSE = 10035, I_PAVGB = 6702, I_PAVGUSB = 2100, I_PAVGW = 6747, - I_PBLENDVB = 7621, I_PBLENDW = 9413, I_PCLMULQDQ = 9669, I_PCMPEQB = 4065, - I_PCMPEQD = 4103, I_PCMPEQQ = 7898, I_PCMPEQW = 4084, I_PCMPESTRI = 9748, - I_PCMPESTRM = 9725, I_PCMPGTB = 3724, I_PCMPGTD = 3762, I_PCMPGTQ = 8109, - I_PCMPGTW = 3743, I_PCMPISTRI = 9794, I_PCMPISTRM = 9771, I_PEXTRB = 9451, - I_PEXTRD = 9468, I_PEXTRQ = 9476, I_PEXTRW = 6333, I_PF2ID = 1936, I_PF2IW = 1929, - I_PFACC = 2050, I_PFADD = 1999, I_PFCMPEQ = 2057, I_PFCMPGE = 1960, I_PFCMPGT = 2006, - I_PFMAX = 2015, I_PFMIN = 1969, I_PFMUL = 2066, I_PFNACC = 1943, I_PFPNACC = 1951, - I_PFRCP = 1976, I_PFRCPIT1 = 2022, I_PFRCPIT2 = 2073, I_PFRSQIT1 = 2032, I_PFRSQRT = 1983, - I_PFSUB = 1992, I_PFSUBR = 2042, I_PHADDD = 7397, I_PHADDSW = 7414, I_PHADDW = 7380, - I_PHMINPOSUW = 8281, I_PHSUBD = 7473, I_PHSUBSW = 7490, I_PHSUBW = 7456, I_PI2FD = 1922, - I_PI2FW = 1915, I_PINSRB = 9552, I_PINSRD = 9590, I_PINSRQ = 9598, I_PINSRW = 6316, - I_PMADDUBSW = 7433, I_PMADDWD = 7095, I_PMAXSB = 8196, I_PMAXSD = 8213, I_PMAXSW = 6986, - I_PMAXUB = 6670, I_PMAXUD = 8247, I_PMAXUW = 8230, I_PMINSB = 8128, I_PMINSD = 8145, - I_PMINSW = 6924, I_PMINUB = 6612, I_PMINUD = 8179, I_PMINUW = 8162, I_PMOVMSKB = 6553, - I_PMOVSXBD = 7776, I_PMOVSXBQ = 7797, I_PMOVSXBW = 7755, I_PMOVSXDQ = 7860, - I_PMOVSXWD = 7818, I_PMOVSXWQ = 7839, I_PMOVZXBD = 8004, I_PMOVZXBQ = 8025, - I_PMOVZXBW = 7983, I_PMOVZXDQ = 8088, I_PMOVZXWD = 8046, I_PMOVZXWQ = 8067, - I_PMULDQ = 7881, I_PMULHRSW = 7560, I_PMULHRW = 2083, I_PMULHUW = 6762, I_PMULHW = 6781, - I_PMULLD = 8264, I_PMULLW = 6518, I_PMULUDQ = 7076, I_POP = 22, I_POPA = 98, - I_POPCNT = 4360, I_POPF = 277, I_POR = 6941, I_PREFETCH = 1894, I_PREFETCHNTA = 2424, - I_PREFETCHT0 = 2437, I_PREFETCHT1 = 2449, I_PREFETCHT2 = 2461, I_PREFETCHW = 1904, - I_PSADBW = 7114, I_PSHUFB = 7363, I_PSHUFD = 4010, I_PSHUFHW = 4018, I_PSHUFLW = 4027, - I_PSHUFW = 4002, I_PSIGNB = 7509, I_PSIGND = 7543, I_PSIGNW = 7526, I_PSLLD = 7046, - I_PSLLDQ = 9869, I_PSLLQ = 7061, I_PSLLW = 7031, I_PSRAD = 6732, I_PSRAW = 6717, - I_PSRLD = 6473, I_PSRLDQ = 9852, I_PSRLQ = 6488, I_PSRLW = 6458, I_PSUBB = 7166, - I_PSUBD = 7196, I_PSUBQ = 7211, I_PSUBSB = 6890, I_PSUBSW = 6907, I_PSUBUSB = 6574, - I_PSUBUSW = 6593, I_PSUBW = 7181, I_PSWAPD = 2092, I_PTEST = 7651, I_PUNPCKHBW = 3802, - I_PUNPCKHDQ = 3848, I_PUNPCKHQDQ = 3917, I_PUNPCKHWD = 3825, I_PUNPCKLBW = 3634, - I_PUNPCKLDQ = 3680, I_PUNPCKLQDQ = 3892, I_PUNPCKLWD = 3657, I_PUSH = 16, - I_PUSHA = 91, I_PUSHF = 270, I_PXOR = 7003, I_RCL = 977, I_RCPPS = 2975, I_RCPSS = 2982, - I_RCR = 982, I_RDFSBASE = 9904, I_RDGSBASE = 9934, I_RDMSR = 600, I_RDPMC = 607, - I_RDRAND = 10048, I_RDTSC = 593, I_RDTSCP = 1886, I_RET = 325, I_RETF = 354, - I_ROL = 967, I_ROR = 972, I_ROUNDPD = 9318, I_ROUNDPS = 9299, I_ROUNDSD = 9356, - I_ROUNDSS = 9337, I_RSM = 882, I_RSQRTPS = 2937, I_RSQRTSS = 2946, I_SAHF = 283, + I_CALL_FAR = 260, I_CBW = 228, I_CDQ = 250, I_CDQE = 239, I_CLAC = 1787, I_CLC = 492, + I_CLD = 512, I_CLFLUSH = 4363, I_CLGI = 1867, I_CLI = 502, I_CLTS = 541, I_CMC = 487, + I_CMOVA = 694, I_CMOVAE = 663, I_CMOVB = 656, I_CMOVBE = 686, I_CMOVG = 754, + I_CMOVGE = 738, I_CMOVL = 731, I_CMOVLE = 746, I_CMOVNO = 648, I_CMOVNP = 723, + I_CMOVNS = 708, I_CMOVNZ = 678, I_CMOVO = 641, I_CMOVP = 716, I_CMOVS = 701, + I_CMOVZ = 671, I_CMP = 71, I_CMPEQPD = 4483, I_CMPEQPS = 4404, I_CMPEQSD = 4641, + I_CMPEQSS = 4562, I_CMPLEPD = 4501, I_CMPLEPS = 4422, I_CMPLESD = 4659, I_CMPLESS = 4580, + I_CMPLTPD = 4492, I_CMPLTPS = 4413, I_CMPLTSD = 4650, I_CMPLTSS = 4571, I_CMPNEQPD = 4522, + I_CMPNEQPS = 4443, I_CMPNEQSD = 4680, I_CMPNEQSS = 4601, I_CMPNLEPD = 4542, + I_CMPNLEPS = 4463, I_CMPNLESD = 4700, I_CMPNLESS = 4621, I_CMPNLTPD = 4532, + I_CMPNLTPS = 4453, I_CMPNLTSD = 4690, I_CMPNLTSS = 4611, I_CMPORDPD = 4552, + I_CMPORDPS = 4473, I_CMPORDSD = 4710, I_CMPORDSS = 4631, I_CMPS = 301, I_CMPUNORDPD = 4510, + I_CMPUNORDPS = 4431, I_CMPUNORDSD = 4668, I_CMPUNORDSS = 4589, I_CMPXCHG = 898, + I_CMPXCHG16B = 6407, I_CMPXCHG8B = 6396, I_COMISD = 2813, I_COMISS = 2805, + I_CPUID = 865, I_CQO = 255, I_CRC32 = 9292, I_CVTDQ2PD = 6821, I_CVTDQ2PS = 3341, + I_CVTPD2DQ = 6831, I_CVTPD2PI = 2715, I_CVTPD2PS = 3267, I_CVTPH2PS = 4195, + I_CVTPI2PD = 2529, I_CVTPI2PS = 2519, I_CVTPS2DQ = 3351, I_CVTPS2PD = 3257, + I_CVTPS2PH = 4205, I_CVTPS2PI = 2705, I_CVTSD2SI = 2735, I_CVTSD2SS = 3287, + I_CVTSI2SD = 2549, I_CVTSI2SS = 2539, I_CVTSS2SD = 3277, I_CVTSS2SI = 2725, + I_CVTTPD2DQ = 6810, I_CVTTPD2PI = 2648, I_CVTTPS2DQ = 3361, I_CVTTPS2PI = 2637, + I_CVTTSD2SI = 2670, I_CVTTSS2SI = 2659, I_CWD = 245, I_CWDE = 233, I_DAA = 46, + I_DAS = 56, I_DEC = 86, I_DIV = 1646, I_DIVPD = 3533, I_DIVPS = 3526, I_DIVSD = 3547, + I_DIVSS = 3540, I_DPPD = 9649, I_DPPS = 9636, I_EMMS = 4134, I_ENTER = 340, + I_EXTRACTPS = 9514, I_EXTRQ = 4170, I_F2XM1 = 1192, I_FABS = 1123, I_FADD = 1023, + I_FADDP = 1549, I_FBLD = 1601, I_FBSTP = 1607, I_FCHS = 1117, I_FCLEX = 7323, + I_FCMOVB = 1376, I_FCMOVBE = 1392, I_FCMOVE = 1384, I_FCMOVNB = 1445, I_FCMOVNBE = 1463, + I_FCMOVNE = 1454, I_FCMOVNU = 1473, I_FCMOVU = 1401, I_FCOM = 1035, I_FCOMI = 1512, + I_FCOMIP = 1623, I_FCOMP = 1041, I_FCOMPP = 1563, I_FCOS = 1311, I_FDECSTP = 1238, + I_FDIV = 1061, I_FDIVP = 1594, I_FDIVR = 1067, I_FDIVRP = 1586, I_FEDISI = 1488, + I_FEMMS = 574, I_FENI = 1482, I_FFREE = 1527, I_FIADD = 1317, I_FICOM = 1331, + I_FICOMP = 1338, I_FIDIV = 1361, I_FIDIVR = 1368, I_FILD = 1418, I_FIMUL = 1324, + I_FINCSTP = 1247, I_FINIT = 7338, I_FIST = 1432, I_FISTP = 1438, I_FISTTP = 1424, + I_FISUB = 1346, I_FISUBR = 1353, I_FLD = 1074, I_FLD1 = 1141, I_FLDCW = 1098, + I_FLDENV = 1090, I_FLDL2E = 1155, I_FLDL2T = 1147, I_FLDLG2 = 1170, I_FLDLN2 = 1178, + I_FLDPI = 1163, I_FLDZ = 1186, I_FMUL = 1029, I_FMULP = 1556, I_FNCLEX = 7315, + I_FNINIT = 7330, I_FNOP = 1111, I_FNSAVE = 7345, I_FNSTCW = 7300, I_FNSTENV = 7283, + I_FNSTSW = 7360, I_FPATAN = 1213, I_FPREM = 1256, I_FPREM1 = 1230, I_FPTAN = 1206, + I_FRNDINT = 1288, I_FRSTOR = 1519, I_FSAVE = 7353, I_FSCALE = 1297, I_FSETPM = 1496, + I_FSIN = 1305, I_FSINCOS = 1279, I_FSQRT = 1272, I_FST = 1079, I_FSTCW = 7308, + I_FSTENV = 7292, I_FSTP = 1084, I_FSTSW = 7368, I_FSUB = 1048, I_FSUBP = 1579, + I_FSUBR = 1054, I_FSUBRP = 1571, I_FTST = 1129, I_FUCOM = 1534, I_FUCOMI = 1504, + I_FUCOMIP = 1614, I_FUCOMP = 1541, I_FUCOMPP = 1409, I_FXAM = 1135, I_FXCH = 1105, + I_FXRSTOR = 9926, I_FXRSTOR64 = 9935, I_FXSAVE = 9898, I_FXSAVE64 = 9906, + I_FXTRACT = 1221, I_FYL2X = 1199, I_FYL2XP1 = 1263, I_GETSEC = 633, I_HADDPD = 4215, + I_HADDPS = 4223, I_HLT = 482, I_HSUBPD = 4249, I_HSUBPS = 4257, I_IDIV = 1651, + I_IMUL = 117, I_IN = 447, I_INC = 81, I_INS = 123, I_INSERTPS = 9581, I_INSERTQ = 4177, + I_INT = 367, I_INT_3 = 360, I_INT1 = 476, I_INTO = 372, I_INVD = 555, I_INVEPT = 8318, + I_INVLPG = 1727, I_INVLPGA = 1881, I_INVPCID = 8335, I_INVVPID = 8326, I_IRET = 378, + I_JA = 166, I_JAE = 147, I_JB = 143, I_JBE = 161, I_JCXZ = 427, I_JECXZ = 433, + I_JG = 202, I_JGE = 192, I_JL = 188, I_JLE = 197, I_JMP = 462, I_JMP_FAR = 467, + I_JNO = 138, I_JNP = 183, I_JNS = 174, I_JNZ = 156, I_JO = 134, I_JP = 179, + I_JRCXZ = 440, I_JS = 170, I_JZ = 152, I_LAHF = 289, I_LAR = 522, I_LDDQU = 7028, + I_LDMXCSR = 9956, I_LDS = 335, I_LEA = 223, I_LEAVE = 347, I_LES = 330, I_LFENCE = 4299, + I_LFS = 917, I_LGDT = 1703, I_LGS = 922, I_LIDT = 1709, I_LLDT = 1668, I_LMSW = 1721, + I_LODS = 313, I_LOOP = 421, I_LOOPNZ = 406, I_LOOPZ = 414, I_LSL = 527, I_LSS = 907, + I_LTR = 1674, I_LZCNT = 4397, I_MASKMOVDQU = 7153, I_MASKMOVQ = 7143, I_MAXPD = 3593, + I_MAXPS = 3586, I_MAXSD = 3607, I_MAXSS = 3600, I_MFENCE = 4325, I_MINPD = 3473, + I_MINPS = 3466, I_MINSD = 3487, I_MINSS = 3480, I_MONITOR = 1771, I_MOV = 218, + I_MOVAPD = 2493, I_MOVAPS = 2485, I_MOVBE = 9285, I_MOVD = 3954, I_MOVDDUP = 2220, + I_MOVDQ2Q = 6556, I_MOVDQA = 3980, I_MOVDQU = 3988, I_MOVHLPS = 2185, I_MOVHPD = 2379, + I_MOVHPS = 2371, I_MOVLHPS = 2362, I_MOVLPD = 2202, I_MOVLPS = 2194, I_MOVMSKPD = 2849, + I_MOVMSKPS = 2839, I_MOVNTDQ = 6883, I_MOVNTDQA = 7929, I_MOVNTI = 952, I_MOVNTPD = 2590, + I_MOVNTPS = 2581, I_MOVNTQ = 6875, I_MOVNTSD = 2608, I_MOVNTSS = 2599, I_MOVQ = 3960, + I_MOVQ2DQ = 6547, I_MOVS = 295, I_MOVSD = 2144, I_MOVSHDUP = 2387, I_MOVSLDUP = 2210, + I_MOVSS = 2137, I_MOVSX = 939, I_MOVSXD = 10039, I_MOVUPD = 2129, I_MOVUPS = 2121, + I_MOVZX = 927, I_MPSADBW = 9662, I_MUL = 1641, I_MULPD = 3204, I_MULPS = 3197, + I_MULSD = 3218, I_MULSS = 3211, I_MWAIT = 1780, I_NEG = 1636, I_NOP = 581, + I_NOT = 1631, I_OR = 27, I_ORPD = 3087, I_ORPS = 3081, I_OUT = 451, I_OUTS = 128, + I_PABSB = 7722, I_PABSD = 7752, I_PABSW = 7737, I_PACKSSDW = 3883, I_PACKSSWB = 3715, + I_PACKUSDW = 7950, I_PACKUSWB = 3793, I_PADDB = 7238, I_PADDD = 7268, I_PADDQ = 6515, + I_PADDSB = 6964, I_PADDSW = 6981, I_PADDUSB = 6654, I_PADDUSW = 6673, I_PADDW = 7253, + I_PALIGNR = 9444, I_PAND = 6641, I_PANDN = 6699, I_PAUSE = 10047, I_PAVGB = 6714, + I_PAVGUSB = 2112, I_PAVGW = 6759, I_PBLENDVB = 7633, I_PBLENDW = 9425, I_PCLMULQDQ = 9681, + I_PCMPEQB = 4077, I_PCMPEQD = 4115, I_PCMPEQQ = 7910, I_PCMPEQW = 4096, I_PCMPESTRI = 9760, + I_PCMPESTRM = 9737, I_PCMPGTB = 3736, I_PCMPGTD = 3774, I_PCMPGTQ = 8121, + I_PCMPGTW = 3755, I_PCMPISTRI = 9806, I_PCMPISTRM = 9783, I_PEXTRB = 9463, + I_PEXTRD = 9480, I_PEXTRQ = 9488, I_PEXTRW = 6345, I_PF2ID = 1948, I_PF2IW = 1941, + I_PFACC = 2062, I_PFADD = 2011, I_PFCMPEQ = 2069, I_PFCMPGE = 1972, I_PFCMPGT = 2018, + I_PFMAX = 2027, I_PFMIN = 1981, I_PFMUL = 2078, I_PFNACC = 1955, I_PFPNACC = 1963, + I_PFRCP = 1988, I_PFRCPIT1 = 2034, I_PFRCPIT2 = 2085, I_PFRSQIT1 = 2044, I_PFRSQRT = 1995, + I_PFSUB = 2004, I_PFSUBR = 2054, I_PHADDD = 7409, I_PHADDSW = 7426, I_PHADDW = 7392, + I_PHMINPOSUW = 8293, I_PHSUBD = 7485, I_PHSUBSW = 7502, I_PHSUBW = 7468, I_PI2FD = 1934, + I_PI2FW = 1927, I_PINSRB = 9564, I_PINSRD = 9602, I_PINSRQ = 9610, I_PINSRW = 6328, + I_PMADDUBSW = 7445, I_PMADDWD = 7107, I_PMAXSB = 8208, I_PMAXSD = 8225, I_PMAXSW = 6998, + I_PMAXUB = 6682, I_PMAXUD = 8259, I_PMAXUW = 8242, I_PMINSB = 8140, I_PMINSD = 8157, + I_PMINSW = 6936, I_PMINUB = 6624, I_PMINUD = 8191, I_PMINUW = 8174, I_PMOVMSKB = 6565, + I_PMOVSXBD = 7788, I_PMOVSXBQ = 7809, I_PMOVSXBW = 7767, I_PMOVSXDQ = 7872, + I_PMOVSXWD = 7830, I_PMOVSXWQ = 7851, I_PMOVZXBD = 8016, I_PMOVZXBQ = 8037, + I_PMOVZXBW = 7995, I_PMOVZXDQ = 8100, I_PMOVZXWD = 8058, I_PMOVZXWQ = 8079, + I_PMULDQ = 7893, I_PMULHRSW = 7572, I_PMULHRW = 2095, I_PMULHUW = 6774, I_PMULHW = 6793, + I_PMULLD = 8276, I_PMULLW = 6530, I_PMULUDQ = 7088, I_POP = 22, I_POPA = 98, + I_POPCNT = 4372, I_POPF = 277, I_POR = 6953, I_PREFETCH = 1906, I_PREFETCHNTA = 2436, + I_PREFETCHT0 = 2449, I_PREFETCHT1 = 2461, I_PREFETCHT2 = 2473, I_PREFETCHW = 1916, + I_PSADBW = 7126, I_PSHUFB = 7375, I_PSHUFD = 4022, I_PSHUFHW = 4030, I_PSHUFLW = 4039, + I_PSHUFW = 4014, I_PSIGNB = 7521, I_PSIGND = 7555, I_PSIGNW = 7538, I_PSLLD = 7058, + I_PSLLDQ = 9881, I_PSLLQ = 7073, I_PSLLW = 7043, I_PSRAD = 6744, I_PSRAW = 6729, + I_PSRLD = 6485, I_PSRLDQ = 9864, I_PSRLQ = 6500, I_PSRLW = 6470, I_PSUBB = 7178, + I_PSUBD = 7208, I_PSUBQ = 7223, I_PSUBSB = 6902, I_PSUBSW = 6919, I_PSUBUSB = 6586, + I_PSUBUSW = 6605, I_PSUBW = 7193, I_PSWAPD = 2104, I_PTEST = 7663, I_PUNPCKHBW = 3814, + I_PUNPCKHDQ = 3860, I_PUNPCKHQDQ = 3929, I_PUNPCKHWD = 3837, I_PUNPCKLBW = 3646, + I_PUNPCKLDQ = 3692, I_PUNPCKLQDQ = 3904, I_PUNPCKLWD = 3669, I_PUSH = 16, + I_PUSHA = 91, I_PUSHF = 270, I_PXOR = 7015, I_RCL = 977, I_RCPPS = 2987, I_RCPSS = 2994, + I_RCR = 982, I_RDFSBASE = 9916, I_RDGSBASE = 9946, I_RDMSR = 600, I_RDPMC = 607, + I_RDRAND = 10060, I_RDTSC = 593, I_RDTSCP = 1898, I_RET = 325, I_RETF = 354, + I_ROL = 967, I_ROR = 972, I_ROUNDPD = 9330, I_ROUNDPS = 9311, I_ROUNDSD = 9368, + I_ROUNDSS = 9349, I_RSM = 882, I_RSQRTPS = 2949, I_RSQRTSS = 2958, I_SAHF = 283, I_SAL = 997, I_SALC = 394, I_SAR = 1002, I_SBB = 36, I_SCAS = 319, I_SETA = 807, I_SETAE = 780, I_SETB = 774, I_SETBE = 800, I_SETG = 859, I_SETGE = 845, I_SETL = 839, I_SETLE = 852, I_SETNO = 767, I_SETNP = 832, I_SETNS = 819, I_SETNZ = 793, - I_SETO = 761, I_SETP = 826, I_SETS = 813, I_SETZ = 787, I_SFENCE = 4343, I_SGDT = 1691, - I_SHL = 987, I_SHLD = 876, I_SHR = 992, I_SHRD = 892, I_SHUFPD = 6358, I_SHUFPS = 6350, - I_SIDT = 1697, I_SKINIT = 1861, I_SLDT = 1657, I_SMSW = 1715, I_SQRTPD = 2877, - I_SQRTPS = 2869, I_SQRTSD = 2893, I_SQRTSS = 2885, I_STC = 497, I_STD = 517, - I_STGI = 1849, I_STI = 507, I_STMXCSR = 9973, I_STOS = 307, I_STR = 1663, I_SUB = 51, - I_SUBPD = 3401, I_SUBPS = 3394, I_SUBSD = 3415, I_SUBSS = 3408, I_SWAPGS = 1878, - I_SYSCALL = 532, I_SYSENTER = 614, I_SYSEXIT = 624, I_SYSRET = 547, I_TEST = 206, - I_TZCNT = 4373, I_UCOMISD = 2764, I_UCOMISS = 2755, I_UD2 = 569, I_UNPCKHPD = 2318, - I_UNPCKHPS = 2308, I_UNPCKLPD = 2276, I_UNPCKLPS = 2266, I_VADDPD = 3161, - I_VADDPS = 3153, I_VADDSD = 3177, I_VADDSS = 3169, I_VADDSUBPD = 6436, I_VADDSUBPS = 6447, - I_VAESDEC = 9239, I_VAESDECLAST = 9260, I_VAESENC = 9197, I_VAESENCLAST = 9218, - I_VAESIMC = 9180, I_VAESKEYGENASSIST = 9834, I_VANDNPD = 3060, I_VANDNPS = 3051, - I_VANDPD = 3027, I_VANDPS = 3019, I_VBLENDPD = 9403, I_VBLENDPS = 9384, I_VBLENDVPD = 9703, - I_VBLENDVPS = 9692, I_VBROADCASTF128 = 7694, I_VBROADCASTSD = 7680, I_VBROADCASTSS = 7666, - I_VCMPEQPD = 5110, I_VCMPEQPS = 4708, I_VCMPEQSD = 5914, I_VCMPEQSS = 5512, - I_VCMPEQ_OSPD = 5291, I_VCMPEQ_OSPS = 4889, I_VCMPEQ_OSSD = 6095, I_VCMPEQ_OSSS = 5693, - I_VCMPEQ_UQPD = 5197, I_VCMPEQ_UQPS = 4795, I_VCMPEQ_UQSD = 6001, I_VCMPEQ_UQSS = 5599, - I_VCMPEQ_USPD = 5400, I_VCMPEQ_USPS = 4998, I_VCMPEQ_USSD = 6204, I_VCMPEQ_USSS = 5802, - I_VCMPFALSEPD = 5232, I_VCMPFALSEPS = 4830, I_VCMPFALSESD = 6036, I_VCMPFALSESS = 5634, - I_VCMPFALSE_OSPD = 5441, I_VCMPFALSE_OSPS = 5039, I_VCMPFALSE_OSSD = 6245, - I_VCMPFALSE_OSSS = 5843, I_VCMPGEPD = 5259, I_VCMPGEPS = 4857, I_VCMPGESD = 6063, - I_VCMPGESS = 5661, I_VCMPGE_OQPD = 5471, I_VCMPGE_OQPS = 5069, I_VCMPGE_OQSD = 6275, - I_VCMPGE_OQSS = 5873, I_VCMPGTPD = 5269, I_VCMPGTPS = 4867, I_VCMPGTSD = 6073, - I_VCMPGTSS = 5671, I_VCMPGT_OQPD = 5484, I_VCMPGT_OQPS = 5082, I_VCMPGT_OQSD = 6288, - I_VCMPGT_OQSS = 5886, I_VCMPLEPD = 5130, I_VCMPLEPS = 4728, I_VCMPLESD = 5934, - I_VCMPLESS = 5532, I_VCMPLE_OQPD = 5317, I_VCMPLE_OQPS = 4915, I_VCMPLE_OQSD = 6121, - I_VCMPLE_OQSS = 5719, I_VCMPLTPD = 5120, I_VCMPLTPS = 4718, I_VCMPLTSD = 5924, - I_VCMPLTSS = 5522, I_VCMPLT_OQPD = 5304, I_VCMPLT_OQPS = 4902, I_VCMPLT_OQSD = 6108, - I_VCMPLT_OQSS = 5706, I_VCMPNEQPD = 5153, I_VCMPNEQPS = 4751, I_VCMPNEQSD = 5957, - I_VCMPNEQSS = 5555, I_VCMPNEQ_OQPD = 5245, I_VCMPNEQ_OQPS = 4843, I_VCMPNEQ_OQSD = 6049, - I_VCMPNEQ_OQSS = 5647, I_VCMPNEQ_OSPD = 5457, I_VCMPNEQ_OSPS = 5055, I_VCMPNEQ_OSSD = 6261, - I_VCMPNEQ_OSSS = 5859, I_VCMPNEQ_USPD = 5345, I_VCMPNEQ_USPS = 4943, I_VCMPNEQ_USSD = 6149, - I_VCMPNEQ_USSS = 5747, I_VCMPNGEPD = 5210, I_VCMPNGEPS = 4808, I_VCMPNGESD = 6014, - I_VCMPNGESS = 5612, I_VCMPNGE_UQPD = 5413, I_VCMPNGE_UQPS = 5011, I_VCMPNGE_UQSD = 6217, - I_VCMPNGE_UQSS = 5815, I_VCMPNGTPD = 5221, I_VCMPNGTPS = 4819, I_VCMPNGTSD = 6025, - I_VCMPNGTSS = 5623, I_VCMPNGT_UQPD = 5427, I_VCMPNGT_UQPS = 5025, I_VCMPNGT_UQSD = 6231, - I_VCMPNGT_UQSS = 5829, I_VCMPNLEPD = 5175, I_VCMPNLEPS = 4773, I_VCMPNLESD = 5979, - I_VCMPNLESS = 5577, I_VCMPNLE_UQPD = 5373, I_VCMPNLE_UQPS = 4971, I_VCMPNLE_UQSD = 6177, - I_VCMPNLE_UQSS = 5775, I_VCMPNLTPD = 5164, I_VCMPNLTPS = 4762, I_VCMPNLTSD = 5968, - I_VCMPNLTSS = 5566, I_VCMPNLT_UQPD = 5359, I_VCMPNLT_UQPS = 4957, I_VCMPNLT_UQSD = 6163, - I_VCMPNLT_UQSS = 5761, I_VCMPORDPD = 5186, I_VCMPORDPS = 4784, I_VCMPORDSD = 5990, - I_VCMPORDSS = 5588, I_VCMPORD_SPD = 5387, I_VCMPORD_SPS = 4985, I_VCMPORD_SSD = 6191, - I_VCMPORD_SSS = 5789, I_VCMPTRUEPD = 5279, I_VCMPTRUEPS = 4877, I_VCMPTRUESD = 6083, - I_VCMPTRUESS = 5681, I_VCMPTRUE_USPD = 5497, I_VCMPTRUE_USPS = 5095, I_VCMPTRUE_USSD = 6301, - I_VCMPTRUE_USSS = 5899, I_VCMPUNORDPD = 5140, I_VCMPUNORDPS = 4738, I_VCMPUNORDSD = 5944, - I_VCMPUNORDSS = 5542, I_VCMPUNORD_SPD = 5330, I_VCMPUNORD_SPS = 4928, I_VCMPUNORD_SSD = 6134, - I_VCMPUNORD_SSS = 5732, I_VCOMISD = 2818, I_VCOMISS = 2809, I_VCVTDQ2PD = 6841, - I_VCVTDQ2PS = 3360, I_VCVTPD2DQ = 6852, I_VCVTPD2PS = 3296, I_VCVTPS2DQ = 3371, - I_VCVTPS2PD = 3285, I_VCVTSD2SI = 2744, I_VCVTSD2SS = 3318, I_VCVTSI2SD = 2558, - I_VCVTSI2SS = 2547, I_VCVTSS2SD = 3307, I_VCVTSS2SI = 2733, I_VCVTTPD2DQ = 6829, - I_VCVTTPS2DQ = 3382, I_VCVTTSD2SI = 2681, I_VCVTTSS2SI = 2669, I_VDIVPD = 3550, - I_VDIVPS = 3542, I_VDIVSD = 3566, I_VDIVSS = 3558, I_VDPPD = 9643, I_VDPPS = 9630, - I_VERR = 1679, I_VERW = 1685, I_VEXTRACTF128 = 9538, I_VEXTRACTPS = 9513, - I_VFMADD132PD = 8409, I_VFMADD132PS = 8396, I_VFMADD132SD = 8435, I_VFMADD132SS = 8422, - I_VFMADD213PD = 8689, I_VFMADD213PS = 8676, I_VFMADD213SD = 8715, I_VFMADD213SS = 8702, - I_VFMADD231PD = 8969, I_VFMADD231PS = 8956, I_VFMADD231SD = 8995, I_VFMADD231SS = 8982, - I_VFMADDSUB132PD = 8348, I_VFMADDSUB132PS = 8332, I_VFMADDSUB213PD = 8628, - I_VFMADDSUB213PS = 8612, I_VFMADDSUB231PD = 8908, I_VFMADDSUB231PS = 8892, - I_VFMSUB132PD = 8461, I_VFMSUB132PS = 8448, I_VFMSUB132SD = 8487, I_VFMSUB132SS = 8474, - I_VFMSUB213PD = 8741, I_VFMSUB213PS = 8728, I_VFMSUB213SD = 8767, I_VFMSUB213SS = 8754, - I_VFMSUB231PD = 9021, I_VFMSUB231PS = 9008, I_VFMSUB231SD = 9047, I_VFMSUB231SS = 9034, - I_VFMSUBADD132PD = 8380, I_VFMSUBADD132PS = 8364, I_VFMSUBADD213PD = 8660, - I_VFMSUBADD213PS = 8644, I_VFMSUBADD231PD = 8940, I_VFMSUBADD231PS = 8924, - I_VFNMADD132PD = 8514, I_VFNMADD132PS = 8500, I_VFNMADD132SD = 8542, I_VFNMADD132SS = 8528, - I_VFNMADD213PD = 8794, I_VFNMADD213PS = 8780, I_VFNMADD213SD = 8822, I_VFNMADD213SS = 8808, - I_VFNMADD231PD = 9074, I_VFNMADD231PS = 9060, I_VFNMADD231SD = 9102, I_VFNMADD231SS = 9088, - I_VFNMSUB132PD = 8570, I_VFNMSUB132PS = 8556, I_VFNMSUB132SD = 8598, I_VFNMSUB132SS = 8584, - I_VFNMSUB213PD = 8850, I_VFNMSUB213PS = 8836, I_VFNMSUB213SD = 8878, I_VFNMSUB213SS = 8864, - I_VFNMSUB231PD = 9130, I_VFNMSUB231PS = 9116, I_VFNMSUB231SD = 9158, I_VFNMSUB231SS = 9144, - I_VHADDPD = 4219, I_VHADDPS = 4228, I_VHSUBPD = 4253, I_VHSUBPS = 4262, I_VINSERTF128 = 9525, - I_VINSERTPS = 9579, I_VLDDQU = 7023, I_VLDMXCSR = 9963, I_VMASKMOVDQU = 7153, - I_VMASKMOVPD = 7971, I_VMASKMOVPS = 7959, I_VMAXPD = 3610, I_VMAXPS = 3602, - I_VMAXSD = 3626, I_VMAXSS = 3618, I_VMCALL = 1735, I_VMCLEAR = 10011, I_VMFUNC = 1803, - I_VMINPD = 3490, I_VMINPS = 3482, I_VMINSD = 3506, I_VMINSS = 3498, I_VMLAUNCH = 1743, - I_VMLOAD = 1833, I_VMMCALL = 1824, I_VMOVAPD = 2498, I_VMOVAPS = 2489, I_VMOVD = 3954, - I_VMOVDDUP = 2256, I_VMOVDQA = 3984, I_VMOVDQU = 3993, I_VMOVHLPS = 2217, - I_VMOVHPD = 2404, I_VMOVHPS = 2395, I_VMOVLHPS = 2385, I_VMOVLPD = 2236, I_VMOVLPS = 2227, - I_VMOVMSKPD = 2858, I_VMOVMSKPS = 2847, I_VMOVNTDQ = 6880, I_VMOVNTDQA = 7927, - I_VMOVNTPD = 2615, I_VMOVNTPS = 2605, I_VMOVQ = 3961, I_VMOVSD = 2165, I_VMOVSHDUP = 2413, - I_VMOVSLDUP = 2245, I_VMOVSS = 2157, I_VMOVUPD = 2148, I_VMOVUPS = 2139, I_VMPSADBW = 9659, - I_VMPTRLD = 10002, I_VMPTRST = 6407, I_VMREAD = 4150, I_VMRESUME = 1753, I_VMRUN = 1817, - I_VMSAVE = 1841, I_VMULPD = 3221, I_VMULPS = 3213, I_VMULSD = 3237, I_VMULSS = 3229, - I_VMWRITE = 4174, I_VMXOFF = 1763, I_VMXON = 10020, I_VORPD = 3088, I_VORPS = 3081, - I_VPABSB = 7717, I_VPABSD = 7747, I_VPABSW = 7732, I_VPACKSSDW = 3881, I_VPACKSSWB = 3713, - I_VPACKUSDW = 7948, I_VPACKUSWB = 3791, I_VPADDB = 7233, I_VPADDD = 7263, - I_VPADDQ = 6510, I_VPADDSB = 6960, I_VPADDSW = 6977, I_VPADDUSW = 6651, I_VPADDW = 7248, - I_VPALIGNR = 9441, I_VPAND = 6635, I_VPANDN = 6694, I_VPAVGB = 6709, I_VPAVGW = 6754, - I_VPBLENDVB = 9714, I_VPBLENDW = 9422, I_VPCLMULQDQ = 9680, I_VPCMPEQB = 4074, - I_VPCMPEQD = 4112, I_VPCMPEQQ = 7907, I_VPCMPEQW = 4093, I_VPCMPESTRI = 9759, - I_VPCMPESTRM = 9736, I_VPCMPGTB = 3733, I_VPCMPGTD = 3771, I_VPCMPGTQ = 8118, - I_VPCMPGTW = 3752, I_VPCMPISTRI = 9805, I_VPCMPISTRM = 9782, I_VPERM2F128 = 9287, - I_VPERMILPD = 7592, I_VPERMILPS = 7581, I_VPEXTRB = 9459, I_VPEXTRD = 9484, - I_VPEXTRQ = 9493, I_VPEXTRW = 6341, I_VPHADDD = 7405, I_VPHADDSW = 7423, I_VPHADDW = 7388, - I_VPHMINPOSUW = 8293, I_VPHSUBD = 7481, I_VPHSUBSW = 7499, I_VPHSUBW = 7464, - I_VPINSRB = 9560, I_VPINSRD = 9606, I_VPINSRQ = 9615, I_VPINSRW = 6324, I_VPMADDUBSW = 7444, - I_VPMADDWD = 7104, I_VPMAXSB = 8204, I_VPMAXSD = 8221, I_VPMAXSW = 6994, I_VPMAXUB = 6678, - I_VPMAXUD = 8255, I_VPMAXUW = 8238, I_VPMINSB = 8136, I_VPMINSD = 8153, I_VPMINSW = 6932, - I_VPMINUB = 6620, I_VPMINUD = 8187, I_VPMINUW = 8170, I_VPMOVMSKB = 6563, - I_VPMOVSXBD = 7786, I_VPMOVSXBQ = 7807, I_VPMOVSXBW = 7765, I_VPMOVSXDQ = 7870, - I_VPMOVSXWD = 7828, I_VPMOVSXWQ = 7849, I_VPMOVZXBD = 8014, I_VPMOVZXBQ = 8035, - I_VPMOVZXBW = 7993, I_VPMOVZXDQ = 8098, I_VPMOVZXWD = 8056, I_VPMOVZXWQ = 8077, - I_VPMULDQ = 7889, I_VPMULHRSW = 7570, I_VPMULHUW = 6771, I_VPMULHW = 6789, - I_VPMULLD = 8272, I_VPMULLW = 6526, I_VPMULUDQ = 7085, I_VPOR = 6946, I_VPSADBW = 7122, - I_VPSHUFB = 7371, I_VPSHUFD = 4036, I_VPSHUFHW = 4045, I_VPSHUFLW = 4055, - I_VPSIGNB = 7517, I_VPSIGND = 7551, I_VPSIGNW = 7534, I_VPSLLD = 7053, I_VPSLLDQ = 9877, - I_VPSLLQ = 7068, I_VPSLLW = 7038, I_VPSRAD = 6739, I_VPSRAW = 6724, I_VPSRLD = 6480, - I_VPSRLDQ = 9860, I_VPSRLQ = 6495, I_VPSRLW = 6465, I_VPSUBB = 7173, I_VPSUBD = 7203, - I_VPSUBQ = 7218, I_VPSUBSB = 6898, I_VPSUBSW = 6915, I_VPSUBUSB = 6583, I_VPSUBUSW = 6602, - I_VPSUBW = 7188, I_VPTEST = 7658, I_VPUNPCKHBW = 3813, I_VPUNPCKHDQ = 3859, - I_VPUNPCKHQDQ = 3929, I_VPUNPCKHWD = 3836, I_VPUNPCKLBW = 3645, I_VPUNPCKLDQ = 3691, - I_VPUNPCKLQDQ = 3904, I_VPUNPCKLWD = 3668, I_VPXOR = 7009, I_VRCPPS = 2989, - I_VRCPSS = 2997, I_VROUNDPD = 9327, I_VROUNDPS = 9308, I_VROUNDSD = 9365, - I_VROUNDSS = 9346, I_VRSQRTPS = 2955, I_VRSQRTSS = 2965, I_VSHUFPD = 6375, - I_VSHUFPS = 6366, I_VSQRTPD = 2910, I_VSQRTPS = 2901, I_VSQRTSD = 2928, I_VSQRTSS = 2919, - I_VSTMXCSR = 9992, I_VSUBPD = 3430, I_VSUBPS = 3422, I_VSUBSD = 3446, I_VSUBSS = 3438, - I_VTESTPD = 7612, I_VTESTPS = 7603, I_VUCOMISD = 2783, I_VUCOMISS = 2773, - I_VUNPCKHPD = 2339, I_VUNPCKHPS = 2328, I_VUNPCKLPD = 2297, I_VUNPCKLPS = 2286, - I_VXORPD = 3117, I_VXORPS = 3109, I_VZEROALL = 4140, I_VZEROUPPER = 4128, - I_WAIT = 10042, I_WBINVD = 561, I_WRFSBASE = 9953, I_WRGSBASE = 9982, I_WRMSR = 586, - I_XABORT = 1007, I_XADD = 946, I_XBEGIN = 1015, I_XCHG = 212, I_XEND = 1811, - I_XGETBV = 1787, I_XLAT = 400, I_XOR = 61, I_XORPD = 3102, I_XORPS = 3095, - I_XRSTOR = 4295, I_XRSTOR64 = 4303, I_XSAVE = 4271, I_XSAVE64 = 4278, I_XSAVEOPT = 4321, - I_XSAVEOPT64 = 4331, I_XSETBV = 1795, I__3DNOW = 10056 + I_SETO = 761, I_SETP = 826, I_SETS = 813, I_SETZ = 787, I_SFENCE = 4355, I_SGDT = 1691, + I_SHL = 987, I_SHLD = 876, I_SHR = 992, I_SHRD = 892, I_SHUFPD = 6370, I_SHUFPS = 6362, + I_SIDT = 1697, I_SKINIT = 1873, I_SLDT = 1657, I_SMSW = 1715, I_SQRTPD = 2889, + I_SQRTPS = 2881, I_SQRTSD = 2905, I_SQRTSS = 2897, I_STAC = 1793, I_STC = 497, + I_STD = 517, I_STGI = 1861, I_STI = 507, I_STMXCSR = 9985, I_STOS = 307, I_STR = 1663, + I_SUB = 51, I_SUBPD = 3413, I_SUBPS = 3406, I_SUBSD = 3427, I_SUBSS = 3420, + I_SWAPGS = 1890, I_SYSCALL = 532, I_SYSENTER = 614, I_SYSEXIT = 624, I_SYSRET = 547, + I_TEST = 206, I_TZCNT = 4385, I_UCOMISD = 2776, I_UCOMISS = 2767, I_UD2 = 569, + I_UNPCKHPD = 2330, I_UNPCKHPS = 2320, I_UNPCKLPD = 2288, I_UNPCKLPS = 2278, + I_VADDPD = 3173, I_VADDPS = 3165, I_VADDSD = 3189, I_VADDSS = 3181, I_VADDSUBPD = 6448, + I_VADDSUBPS = 6459, I_VAESDEC = 9251, I_VAESDECLAST = 9272, I_VAESENC = 9209, + I_VAESENCLAST = 9230, I_VAESIMC = 9192, I_VAESKEYGENASSIST = 9846, I_VANDNPD = 3072, + I_VANDNPS = 3063, I_VANDPD = 3039, I_VANDPS = 3031, I_VBLENDPD = 9415, I_VBLENDPS = 9396, + I_VBLENDVPD = 9715, I_VBLENDVPS = 9704, I_VBROADCASTF128 = 7706, I_VBROADCASTSD = 7692, + I_VBROADCASTSS = 7678, I_VCMPEQPD = 5122, I_VCMPEQPS = 4720, I_VCMPEQSD = 5926, + I_VCMPEQSS = 5524, I_VCMPEQ_OSPD = 5303, I_VCMPEQ_OSPS = 4901, I_VCMPEQ_OSSD = 6107, + I_VCMPEQ_OSSS = 5705, I_VCMPEQ_UQPD = 5209, I_VCMPEQ_UQPS = 4807, I_VCMPEQ_UQSD = 6013, + I_VCMPEQ_UQSS = 5611, I_VCMPEQ_USPD = 5412, I_VCMPEQ_USPS = 5010, I_VCMPEQ_USSD = 6216, + I_VCMPEQ_USSS = 5814, I_VCMPFALSEPD = 5244, I_VCMPFALSEPS = 4842, I_VCMPFALSESD = 6048, + I_VCMPFALSESS = 5646, I_VCMPFALSE_OSPD = 5453, I_VCMPFALSE_OSPS = 5051, I_VCMPFALSE_OSSD = 6257, + I_VCMPFALSE_OSSS = 5855, I_VCMPGEPD = 5271, I_VCMPGEPS = 4869, I_VCMPGESD = 6075, + I_VCMPGESS = 5673, I_VCMPGE_OQPD = 5483, I_VCMPGE_OQPS = 5081, I_VCMPGE_OQSD = 6287, + I_VCMPGE_OQSS = 5885, I_VCMPGTPD = 5281, I_VCMPGTPS = 4879, I_VCMPGTSD = 6085, + I_VCMPGTSS = 5683, I_VCMPGT_OQPD = 5496, I_VCMPGT_OQPS = 5094, I_VCMPGT_OQSD = 6300, + I_VCMPGT_OQSS = 5898, I_VCMPLEPD = 5142, I_VCMPLEPS = 4740, I_VCMPLESD = 5946, + I_VCMPLESS = 5544, I_VCMPLE_OQPD = 5329, I_VCMPLE_OQPS = 4927, I_VCMPLE_OQSD = 6133, + I_VCMPLE_OQSS = 5731, I_VCMPLTPD = 5132, I_VCMPLTPS = 4730, I_VCMPLTSD = 5936, + I_VCMPLTSS = 5534, I_VCMPLT_OQPD = 5316, I_VCMPLT_OQPS = 4914, I_VCMPLT_OQSD = 6120, + I_VCMPLT_OQSS = 5718, I_VCMPNEQPD = 5165, I_VCMPNEQPS = 4763, I_VCMPNEQSD = 5969, + I_VCMPNEQSS = 5567, I_VCMPNEQ_OQPD = 5257, I_VCMPNEQ_OQPS = 4855, I_VCMPNEQ_OQSD = 6061, + I_VCMPNEQ_OQSS = 5659, I_VCMPNEQ_OSPD = 5469, I_VCMPNEQ_OSPS = 5067, I_VCMPNEQ_OSSD = 6273, + I_VCMPNEQ_OSSS = 5871, I_VCMPNEQ_USPD = 5357, I_VCMPNEQ_USPS = 4955, I_VCMPNEQ_USSD = 6161, + I_VCMPNEQ_USSS = 5759, I_VCMPNGEPD = 5222, I_VCMPNGEPS = 4820, I_VCMPNGESD = 6026, + I_VCMPNGESS = 5624, I_VCMPNGE_UQPD = 5425, I_VCMPNGE_UQPS = 5023, I_VCMPNGE_UQSD = 6229, + I_VCMPNGE_UQSS = 5827, I_VCMPNGTPD = 5233, I_VCMPNGTPS = 4831, I_VCMPNGTSD = 6037, + I_VCMPNGTSS = 5635, I_VCMPNGT_UQPD = 5439, I_VCMPNGT_UQPS = 5037, I_VCMPNGT_UQSD = 6243, + I_VCMPNGT_UQSS = 5841, I_VCMPNLEPD = 5187, I_VCMPNLEPS = 4785, I_VCMPNLESD = 5991, + I_VCMPNLESS = 5589, I_VCMPNLE_UQPD = 5385, I_VCMPNLE_UQPS = 4983, I_VCMPNLE_UQSD = 6189, + I_VCMPNLE_UQSS = 5787, I_VCMPNLTPD = 5176, I_VCMPNLTPS = 4774, I_VCMPNLTSD = 5980, + I_VCMPNLTSS = 5578, I_VCMPNLT_UQPD = 5371, I_VCMPNLT_UQPS = 4969, I_VCMPNLT_UQSD = 6175, + I_VCMPNLT_UQSS = 5773, I_VCMPORDPD = 5198, I_VCMPORDPS = 4796, I_VCMPORDSD = 6002, + I_VCMPORDSS = 5600, I_VCMPORD_SPD = 5399, I_VCMPORD_SPS = 4997, I_VCMPORD_SSD = 6203, + I_VCMPORD_SSS = 5801, I_VCMPTRUEPD = 5291, I_VCMPTRUEPS = 4889, I_VCMPTRUESD = 6095, + I_VCMPTRUESS = 5693, I_VCMPTRUE_USPD = 5509, I_VCMPTRUE_USPS = 5107, I_VCMPTRUE_USSD = 6313, + I_VCMPTRUE_USSS = 5911, I_VCMPUNORDPD = 5152, I_VCMPUNORDPS = 4750, I_VCMPUNORDSD = 5956, + I_VCMPUNORDSS = 5554, I_VCMPUNORD_SPD = 5342, I_VCMPUNORD_SPS = 4940, I_VCMPUNORD_SSD = 6146, + I_VCMPUNORD_SSS = 5744, I_VCOMISD = 2830, I_VCOMISS = 2821, I_VCVTDQ2PD = 6853, + I_VCVTDQ2PS = 3372, I_VCVTPD2DQ = 6864, I_VCVTPD2PS = 3308, I_VCVTPS2DQ = 3383, + I_VCVTPS2PD = 3297, I_VCVTSD2SI = 2756, I_VCVTSD2SS = 3330, I_VCVTSI2SD = 2570, + I_VCVTSI2SS = 2559, I_VCVTSS2SD = 3319, I_VCVTSS2SI = 2745, I_VCVTTPD2DQ = 6841, + I_VCVTTPS2DQ = 3394, I_VCVTTSD2SI = 2693, I_VCVTTSS2SI = 2681, I_VDIVPD = 3562, + I_VDIVPS = 3554, I_VDIVSD = 3578, I_VDIVSS = 3570, I_VDPPD = 9655, I_VDPPS = 9642, + I_VERR = 1679, I_VERW = 1685, I_VEXTRACTF128 = 9550, I_VEXTRACTPS = 9525, + I_VFMADD132PD = 8421, I_VFMADD132PS = 8408, I_VFMADD132SD = 8447, I_VFMADD132SS = 8434, + I_VFMADD213PD = 8701, I_VFMADD213PS = 8688, I_VFMADD213SD = 8727, I_VFMADD213SS = 8714, + I_VFMADD231PD = 8981, I_VFMADD231PS = 8968, I_VFMADD231SD = 9007, I_VFMADD231SS = 8994, + I_VFMADDSUB132PD = 8360, I_VFMADDSUB132PS = 8344, I_VFMADDSUB213PD = 8640, + I_VFMADDSUB213PS = 8624, I_VFMADDSUB231PD = 8920, I_VFMADDSUB231PS = 8904, + I_VFMSUB132PD = 8473, I_VFMSUB132PS = 8460, I_VFMSUB132SD = 8499, I_VFMSUB132SS = 8486, + I_VFMSUB213PD = 8753, I_VFMSUB213PS = 8740, I_VFMSUB213SD = 8779, I_VFMSUB213SS = 8766, + I_VFMSUB231PD = 9033, I_VFMSUB231PS = 9020, I_VFMSUB231SD = 9059, I_VFMSUB231SS = 9046, + I_VFMSUBADD132PD = 8392, I_VFMSUBADD132PS = 8376, I_VFMSUBADD213PD = 8672, + I_VFMSUBADD213PS = 8656, I_VFMSUBADD231PD = 8952, I_VFMSUBADD231PS = 8936, + I_VFNMADD132PD = 8526, I_VFNMADD132PS = 8512, I_VFNMADD132SD = 8554, I_VFNMADD132SS = 8540, + I_VFNMADD213PD = 8806, I_VFNMADD213PS = 8792, I_VFNMADD213SD = 8834, I_VFNMADD213SS = 8820, + I_VFNMADD231PD = 9086, I_VFNMADD231PS = 9072, I_VFNMADD231SD = 9114, I_VFNMADD231SS = 9100, + I_VFNMSUB132PD = 8582, I_VFNMSUB132PS = 8568, I_VFNMSUB132SD = 8610, I_VFNMSUB132SS = 8596, + I_VFNMSUB213PD = 8862, I_VFNMSUB213PS = 8848, I_VFNMSUB213SD = 8890, I_VFNMSUB213SS = 8876, + I_VFNMSUB231PD = 9142, I_VFNMSUB231PS = 9128, I_VFNMSUB231SD = 9170, I_VFNMSUB231SS = 9156, + I_VHADDPD = 4231, I_VHADDPS = 4240, I_VHSUBPD = 4265, I_VHSUBPS = 4274, I_VINSERTF128 = 9537, + I_VINSERTPS = 9591, I_VLDDQU = 7035, I_VLDMXCSR = 9975, I_VMASKMOVDQU = 7165, + I_VMASKMOVPD = 7983, I_VMASKMOVPS = 7971, I_VMAXPD = 3622, I_VMAXPS = 3614, + I_VMAXSD = 3638, I_VMAXSS = 3630, I_VMCALL = 1735, I_VMCLEAR = 10023, I_VMFUNC = 1815, + I_VMINPD = 3502, I_VMINPS = 3494, I_VMINSD = 3518, I_VMINSS = 3510, I_VMLAUNCH = 1743, + I_VMLOAD = 1845, I_VMMCALL = 1836, I_VMOVAPD = 2510, I_VMOVAPS = 2501, I_VMOVD = 3966, + I_VMOVDDUP = 2268, I_VMOVDQA = 3996, I_VMOVDQU = 4005, I_VMOVHLPS = 2229, + I_VMOVHPD = 2416, I_VMOVHPS = 2407, I_VMOVLHPS = 2397, I_VMOVLPD = 2248, I_VMOVLPS = 2239, + I_VMOVMSKPD = 2870, I_VMOVMSKPS = 2859, I_VMOVNTDQ = 6892, I_VMOVNTDQA = 7939, + I_VMOVNTPD = 2627, I_VMOVNTPS = 2617, I_VMOVQ = 3973, I_VMOVSD = 2177, I_VMOVSHDUP = 2425, + I_VMOVSLDUP = 2257, I_VMOVSS = 2169, I_VMOVUPD = 2160, I_VMOVUPS = 2151, I_VMPSADBW = 9671, + I_VMPTRLD = 10014, I_VMPTRST = 6419, I_VMREAD = 4162, I_VMRESUME = 1753, I_VMRUN = 1829, + I_VMSAVE = 1853, I_VMULPD = 3233, I_VMULPS = 3225, I_VMULSD = 3249, I_VMULSS = 3241, + I_VMWRITE = 4186, I_VMXOFF = 1763, I_VMXON = 10032, I_VORPD = 3100, I_VORPS = 3093, + I_VPABSB = 7729, I_VPABSD = 7759, I_VPABSW = 7744, I_VPACKSSDW = 3893, I_VPACKSSWB = 3725, + I_VPACKUSDW = 7960, I_VPACKUSWB = 3803, I_VPADDB = 7245, I_VPADDD = 7275, + I_VPADDQ = 6522, I_VPADDSB = 6972, I_VPADDSW = 6989, I_VPADDUSW = 6663, I_VPADDW = 7260, + I_VPALIGNR = 9453, I_VPAND = 6647, I_VPANDN = 6706, I_VPAVGB = 6721, I_VPAVGW = 6766, + I_VPBLENDVB = 9726, I_VPBLENDW = 9434, I_VPCLMULQDQ = 9692, I_VPCMPEQB = 4086, + I_VPCMPEQD = 4124, I_VPCMPEQQ = 7919, I_VPCMPEQW = 4105, I_VPCMPESTRI = 9771, + I_VPCMPESTRM = 9748, I_VPCMPGTB = 3745, I_VPCMPGTD = 3783, I_VPCMPGTQ = 8130, + I_VPCMPGTW = 3764, I_VPCMPISTRI = 9817, I_VPCMPISTRM = 9794, I_VPERM2F128 = 9299, + I_VPERMILPD = 7604, I_VPERMILPS = 7593, I_VPEXTRB = 9471, I_VPEXTRD = 9496, + I_VPEXTRQ = 9505, I_VPEXTRW = 6353, I_VPHADDD = 7417, I_VPHADDSW = 7435, I_VPHADDW = 7400, + I_VPHMINPOSUW = 8305, I_VPHSUBD = 7493, I_VPHSUBSW = 7511, I_VPHSUBW = 7476, + I_VPINSRB = 9572, I_VPINSRD = 9618, I_VPINSRQ = 9627, I_VPINSRW = 6336, I_VPMADDUBSW = 7456, + I_VPMADDWD = 7116, I_VPMAXSB = 8216, I_VPMAXSD = 8233, I_VPMAXSW = 7006, I_VPMAXUB = 6690, + I_VPMAXUD = 8267, I_VPMAXUW = 8250, I_VPMINSB = 8148, I_VPMINSD = 8165, I_VPMINSW = 6944, + I_VPMINUB = 6632, I_VPMINUD = 8199, I_VPMINUW = 8182, I_VPMOVMSKB = 6575, + I_VPMOVSXBD = 7798, I_VPMOVSXBQ = 7819, I_VPMOVSXBW = 7777, I_VPMOVSXDQ = 7882, + I_VPMOVSXWD = 7840, I_VPMOVSXWQ = 7861, I_VPMOVZXBD = 8026, I_VPMOVZXBQ = 8047, + I_VPMOVZXBW = 8005, I_VPMOVZXDQ = 8110, I_VPMOVZXWD = 8068, I_VPMOVZXWQ = 8089, + I_VPMULDQ = 7901, I_VPMULHRSW = 7582, I_VPMULHUW = 6783, I_VPMULHW = 6801, + I_VPMULLD = 8284, I_VPMULLW = 6538, I_VPMULUDQ = 7097, I_VPOR = 6958, I_VPSADBW = 7134, + I_VPSHUFB = 7383, I_VPSHUFD = 4048, I_VPSHUFHW = 4057, I_VPSHUFLW = 4067, + I_VPSIGNB = 7529, I_VPSIGND = 7563, I_VPSIGNW = 7546, I_VPSLLD = 7065, I_VPSLLDQ = 9889, + I_VPSLLQ = 7080, I_VPSLLW = 7050, I_VPSRAD = 6751, I_VPSRAW = 6736, I_VPSRLD = 6492, + I_VPSRLDQ = 9872, I_VPSRLQ = 6507, I_VPSRLW = 6477, I_VPSUBB = 7185, I_VPSUBD = 7215, + I_VPSUBQ = 7230, I_VPSUBSB = 6910, I_VPSUBSW = 6927, I_VPSUBUSB = 6595, I_VPSUBUSW = 6614, + I_VPSUBW = 7200, I_VPTEST = 7670, I_VPUNPCKHBW = 3825, I_VPUNPCKHDQ = 3871, + I_VPUNPCKHQDQ = 3941, I_VPUNPCKHWD = 3848, I_VPUNPCKLBW = 3657, I_VPUNPCKLDQ = 3703, + I_VPUNPCKLQDQ = 3916, I_VPUNPCKLWD = 3680, I_VPXOR = 7021, I_VRCPPS = 3001, + I_VRCPSS = 3009, I_VROUNDPD = 9339, I_VROUNDPS = 9320, I_VROUNDSD = 9377, + I_VROUNDSS = 9358, I_VRSQRTPS = 2967, I_VRSQRTSS = 2977, I_VSHUFPD = 6387, + I_VSHUFPS = 6378, I_VSQRTPD = 2922, I_VSQRTPS = 2913, I_VSQRTSD = 2940, I_VSQRTSS = 2931, + I_VSTMXCSR = 10004, I_VSUBPD = 3442, I_VSUBPS = 3434, I_VSUBSD = 3458, I_VSUBSS = 3450, + I_VTESTPD = 7624, I_VTESTPS = 7615, I_VUCOMISD = 2795, I_VUCOMISS = 2785, + I_VUNPCKHPD = 2351, I_VUNPCKHPS = 2340, I_VUNPCKLPD = 2309, I_VUNPCKLPS = 2298, + I_VXORPD = 3129, I_VXORPS = 3121, I_VZEROALL = 4152, I_VZEROUPPER = 4140, + I_WAIT = 10054, I_WBINVD = 561, I_WRFSBASE = 9965, I_WRGSBASE = 9994, I_WRMSR = 586, + I_XABORT = 1007, I_XADD = 946, I_XBEGIN = 1015, I_XCHG = 212, I_XEND = 1823, + I_XGETBV = 1799, I_XLAT = 400, I_XOR = 61, I_XORPD = 3114, I_XORPS = 3107, + I_XRSTOR = 4307, I_XRSTOR64 = 4315, I_XSAVE = 4283, I_XSAVE64 = 4290, I_XSAVEOPT = 4333, + I_XSAVEOPT64 = 4343, I_XSETBV = 1807, I__3DNOW = 10068 } _InstructionType; typedef enum { diff --git a/NativeCore/Dependencies/distorm/src/config.h b/NativeCore/Dependencies/distorm/src/config.h index 3fdaf44a..e78dba36 100644 --- a/NativeCore/Dependencies/distorm/src/config.h +++ b/NativeCore/Dependencies/distorm/src/config.h @@ -4,7 +4,7 @@ config.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -13,7 +13,7 @@ This library is licensed under the BSD license. See the file COPYING. #define CONFIG_H /* diStorm version number. */ -#define __DISTORMV__ 0x030400 +#define __DISTORMV__ 0x030502 #include /* memset, memcpy - can be easily self implemented for libc independency. */ @@ -57,6 +57,7 @@ This library is licensed under the BSD license. See the file COPYING. #define _DLLEXPORT_ #define _FASTCALL_ +/* Keep inline as static (arrrrg) as it would break linux on some flavors otherwise. */ #define _INLINE_ static /* GCC ignores this directive... */ /*#define _FASTCALL_ __attribute__((__fastcall__))*/ @@ -94,7 +95,7 @@ This library is licensed under the BSD license. See the file COPYING. #define _DLLEXPORT_ #define _FASTCALL_ -#define _INLINE_ +#define _INLINE_ static /* End of __TINYC__ */ diff --git a/NativeCore/Dependencies/distorm/src/decoder.c b/NativeCore/Dependencies/distorm/src/decoder.c index 188996df..29adcd43 100644 --- a/NativeCore/Dependencies/distorm/src/decoder.c +++ b/NativeCore/Dependencies/distorm/src/decoder.c @@ -4,7 +4,7 @@ decoder.c diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -24,30 +24,34 @@ This library is licensed under the BSD license. See the file COPYING. static _DecodeType decode_get_effective_addr_size(_DecodeType dt, _iflags decodedPrefixes) { /* - * This table is to map from the current decoding mode to an effective address size: + * Map from the current decoding mode to an effective address size: * Decode16 -> Decode32 * Decode32 -> Decode16 * Decode64 -> Decode32 */ - static _DecodeType AddrSizeTable[] = {Decode32Bits, Decode16Bits, Decode32Bits}; /* Switch to non default mode if prefix exists, only for ADDRESS SIZE. */ - if (decodedPrefixes & INST_PRE_ADDR_SIZE) dt = AddrSizeTable[dt]; + if (decodedPrefixes & INST_PRE_ADDR_SIZE) { + if (dt == Decode32Bits) return Decode16Bits; + return Decode32Bits; + } return dt; } static _DecodeType decode_get_effective_op_size(_DecodeType dt, _iflags decodedPrefixes, unsigned int rex, _iflags instFlags) { /* - * This table is to map from the current decoding mode to an effective operand size: + * Map from the current decoding mode to an effective operand size: * Decode16 -> Decode32 * Decode32 -> Decode16 * Decode64 -> Decode16 * Not that in 64bits it's a bit more complicated, because of REX and promoted instructions. */ - static _DecodeType OpSizeTable[] = {Decode32Bits, Decode16Bits, Decode16Bits}; - if (decodedPrefixes & INST_PRE_OP_SIZE) return OpSizeTable[dt]; + if (decodedPrefixes & INST_PRE_OP_SIZE) { + if (dt == Decode16Bits) return Decode32Bits; + return Decode16Bits; + } if (dt == Decode64Bits) { /* @@ -60,83 +64,71 @@ static _DecodeType decode_get_effective_op_size(_DecodeType dt, _iflags decodedP /* Automatically promoted instructions have only INST_64BITS SET! */ if (((instFlags & (INST_64BITS | INST_PRE_REX)) == INST_64BITS) || /* Other instructions in 64 bits can be promoted only with a REX prefix. */ - ((decodedPrefixes & INST_PRE_REX) && (rex & PREFIX_EX_W))) dt = Decode64Bits; - else dt = Decode32Bits; /* Default. */ + ((decodedPrefixes & INST_PRE_REX) && (rex & PREFIX_EX_W))) return Decode64Bits; + return Decode32Bits; /* Default. */ } + return dt; } -/* A helper macro to convert from diStorm's CPU flags to EFLAGS. */ +/* + * A helper macro to convert from diStorm's CPU flags to EFLAGS. + * Copy eflags from compact version (8 bits) to eflags compatible (16 bits). + * From D_COMPACT_IF to D_IF, bit index 1 to 9. + * From D_COMPACT_DF to D_DF, bit index 3 to 10. + * From D_COMPACT_OF to D_OF, bit index 5 to 11. + */ #define CONVERT_FLAGS_TO_EFLAGS(dst, src, field) dst->field = ((src->field & D_COMPACT_SAME_FLAGS) | \ - ((src->field & D_COMPACT_IF) ? D_IF : 0) | \ - ((src->field & D_COMPACT_DF) ? D_DF : 0) | \ - ((src->field & D_COMPACT_OF) ? D_OF : 0)); + ((src->field & D_COMPACT_IF) << (9 - 1)) | \ + ((src->field & D_COMPACT_DF) << (10 - 3)) | \ + ((src->field & D_COMPACT_OF) << (11 - 5))); -static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) +/* If DECRES_SUCCESS is returned, CI is in sync, otherwise it loses sync. */ +/* Important note: CI is keeping track only for code and codeLen, in case of a failure caller has to restart on their own. */ +static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, const uint8_t* startCode, _DInst* di) { - /* Remember whether the instruction is privileged. */ - uint16_t privilegedFlag = 0; - - /* The ModR/M byte of the current instruction. */ - unsigned int modrm = 0; - - /* The REX/VEX prefix byte value. */ - unsigned int vrex = ps->vrex; - - /* - * Backup original input, so we can use it later if a problem occurs - * (like not enough data for decoding, invalid opcode, etc). - */ - const uint8_t* startCode = ci->code; - /* Holds the info about the current found instruction. */ - _InstInfo* ii = NULL; - _InstInfo iip; /* Privileged instruction cache. */ - _InstSharedInfo* isi = NULL; - - /* Used only for special CMP instructions which have pseudo opcodes suffix. */ - unsigned char cmpType = 0; - - /* - * Indicates whether it is right to LOCK the instruction by decoding its first operand. - * Only then you know if it's ok to output the LOCK prefix's text... - * Used for first operand only. - */ - int lockable = FALSE; + _InstInfo* ii; + _InstSharedInfo* isi; /* Calculate (and cache) effective-operand-size and effective-address-size only once. */ _DecodeType effOpSz, effAdrSz; _iflags instFlags; - ii = inst_lookup(ci, ps); + /* The ModR/M byte of the current instruction. */ + unsigned int modrm = 0; + int isPrefixed = 0; + + ii = inst_lookup(ci, ps, &isPrefixed); if (ii == NULL) goto _Undecodable; + isi = &InstSharedInfoTable[ii->sharedIndex]; instFlags = FlagsTable[isi->flagsIndex]; - privilegedFlag = ii->opcodeId & OPCODE_ID_PRIVILEGED; - if (privilegedFlag) { + /* Cache the effective operand-size and address-size. */ + if (isPrefixed) { + /* - * Copy the privileged instruction info so we can remove the privileged bit - * from the opcodeId field. This makes sure we're not modifying the tables - * in case we lookup this privileged instruction later. - */ - iip = *ii; - iip.opcodeId &= ~OPCODE_ID_PRIVILEGED; - ii = &iip; - } + * If both REX and OpSize are available we will have to disable the OpSize, because REX has precedence. + * However, only if REX.W is set! + * We had to wait with this test, since the operand size may be a mandatory prefix, + * and we know it only after fetching opcode. + */ + if ((ps->decodedPrefixes & INST_PRE_OP_SIZE) && + (ps->prefixExtType == PET_REX) && + (ps->vrex & PREFIX_EX_W) && + (!ps->isOpSizeMandatory)) { + ps->decodedPrefixes &= ~INST_PRE_OP_SIZE; + prefixes_ignore(ps, PFXIDX_OP_SIZE); + } - /* - * If both REX and OpSize are available we will have to disable the OpSize, because REX has precedence. - * However, only if REX.W is set ! - * We had to wait with this test, since the operand size may be a mandatory prefix, - * and we know it only after prefetching. - */ - if ((ps->prefixExtType == PET_REX) && - (ps->decodedPrefixes & INST_PRE_OP_SIZE) && - (!ps->isOpSizeMandatory) && - (vrex & PREFIX_EX_W)) { - ps->decodedPrefixes &= ~INST_PRE_OP_SIZE; - prefixes_ignore(ps, PFXIDX_OP_SIZE); + effAdrSz = decode_get_effective_addr_size(ci->dt, ps->decodedPrefixes); + effOpSz = decode_get_effective_op_size(ci->dt, ps->decodedPrefixes, ps->vrex, instFlags); + } + else + { + effAdrSz = ci->dt; /* Default is current decoding type since there's no prefix. */ + effOpSz = decode_get_effective_op_size(ci->dt, 0, 0, instFlags); } /* @@ -153,161 +145,188 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) * Though, don't drop an instruction which is also supported in 16 and 32 bits. */ - /* ! ! ! DISABLED UNTIL FURTHER NOTICE ! ! ! Decode16Bits CAN NOW DECODE 32 BITS INSTRUCTIONS ! ! !*/ - /* if (ii && (dt == Decode16Bits) && (instFlags & INST_32BITS) && (~instFlags & INST_16BITS)) ii = NULL; */ + /* ! ! ! DISABLED UNTIL FURTHER NOTICE ! ! ! Decode16Bits CAN NOW DECODE 32 BITS INSTRUCTIONS ! ! !*/ + /* if (ii && (dt == Decode16Bits) && (instFlags & INST_32BITS) && (~instFlags & INST_16BITS)) ii = NULL; */ - /* Drop instructions which are invalid in 64 bits. */ - if ((ci->dt == Decode64Bits) && (instFlags & INST_INVALID_64BITS)) goto _Undecodable; - - /* If it's only a 64 bits instruction drop it in other decoding modes. */ - if ((ci->dt != Decode64Bits) && (instFlags & INST_64BITS_FETCH)) goto _Undecodable; + memset(di, 0, sizeof(_DInst)); if (instFlags & INST_MODRM_REQUIRED) { /* If the ModRM byte is not part of the opcode, skip the last byte code, so code points now to ModRM. */ - if (~instFlags & INST_MODRM_INCLUDED) { + if (!(instFlags & INST_MODRM_INCLUDED)) { ci->code++; if (--ci->codeLen < 0) goto _Undecodable; } modrm = *ci->code; - - /* Some instructions enforce that reg=000, so validate that. (Specifically EXTRQ). */ - if ((instFlags & INST_FORCE_REG0) && (((modrm >> 3) & 7) != 0)) goto _Undecodable; - /* Some instructions enforce that mod=11, so validate that. */ - if ((instFlags & INST_MODRR_REQUIRED) && (modrm < INST_DIVIDED_MODRM)) goto _Undecodable; } ci->code++; /* Skip the last byte we just read (either last opcode's byte code or a ModRM). */ - /* Cache the effective operand-size and address-size. */ - effOpSz = decode_get_effective_op_size(ci->dt, ps->decodedPrefixes, vrex, instFlags); - effAdrSz = decode_get_effective_addr_size(ci->dt, ps->decodedPrefixes); - - memset(di, 0, sizeof(_DInst)); - di->base = R_NONE; + di->addr = ci->codeOffset & ci->addrMask; + di->opcode = ii->opcodeId; + di->flags = isi->meta & META_INST_PRIVILEGED; /* - * Try to extract the next operand only if the latter exists. - * For example, if there is not first operand, no reason to try to extract second operand... - * I decided that a for-break is better for readability in this specific case than goto. - * Note: do-while with a constant 0 makes the compiler warning about it. + * Store the address size inside the flags. + * This is necessary for the caller to know the size of rSP when using PUSHA for example. */ - for (;;) { - if (isi->d != OT_NONE) { - if (!operands_extract(ci, di, ii, instFlags, (_OpType)isi->d, ONT_1, modrm, ps, effOpSz, effAdrSz, &lockable)) goto _Undecodable; - } else break; + di->base = R_NONE; + di->segment = R_NONE; + + FLAG_SET_ADDRSIZE(di, effAdrSz); + + /* Try to extract the next operand only if the latter exists. */ + if (isi->d != OT_NONE) { + unsigned int opsNo = 1; + _Operand* op = &di->ops[0]; + if (instFlags & (INST_MODRR_REQUIRED | INST_FORCE_REG0)) { + /* Some instructions enforce that mod=11, so validate that. */ + if ((modrm < INST_DIVIDED_MODRM) && (instFlags & INST_MODRR_REQUIRED)) goto _Undecodable; + /* Some instructions enforce that reg=000, so validate that. (Specifically EXTRQ). */ + if ((instFlags & INST_FORCE_REG0) && (((modrm >> 3) & 7) != 0)) goto _Undecodable; + } + if (!operands_extract(ci, di, ii, instFlags, (_OpType)isi->d, modrm, ps, effOpSz, effAdrSz, op++)) goto _Undecodable; if (isi->s != OT_NONE) { - if (!operands_extract(ci, di, ii, instFlags, (_OpType)isi->s, ONT_2, modrm, ps, effOpSz, effAdrSz, NULL)) goto _Undecodable; - } else break; - - /* Use third operand, only if the flags says this InstInfo requires it. */ - if (instFlags & INST_USE_OP3) { - if (!operands_extract(ci, di, ii, instFlags, (_OpType)((_InstInfoEx*)ii)->op3, ONT_3, modrm, ps, effOpSz, effAdrSz, NULL)) goto _Undecodable; - } else break; - - /* Support for a fourth operand is added for (i.e:) INSERTQ instruction. */ - if (instFlags & INST_USE_OP4) { - if (!operands_extract(ci, di, ii, instFlags, (_OpType)((_InstInfoEx*)ii)->op4, ONT_4, modrm, ps, effOpSz, effAdrSz, NULL)) goto _Undecodable; + if (!operands_extract(ci, di, ii, instFlags, (_OpType)isi->s, modrm, ps, effOpSz, effAdrSz, op++)) goto _Undecodable; + opsNo++; + /* Use third operand, only if the flags says this InstInfo requires it. */ + if (instFlags & INST_USE_OP3) { + if (!operands_extract(ci, di, ii, instFlags, (_OpType)((_InstInfoEx*)ii)->op3, modrm, ps, effOpSz, effAdrSz, op++)) goto _Undecodable; + opsNo++; + /* Support for a fourth operand is added for (e.g:) INSERTQ instruction. */ + if (instFlags & INST_USE_OP4) { + if (!operands_extract(ci, di, ii, instFlags, (_OpType)((_InstInfoEx*)ii)->op4, modrm, ps, effOpSz, effAdrSz, op++)) goto _Undecodable; + opsNo++; + } + } } - break; - } /* Continue here after all operands were extracted. */ - - /* If it were a 3DNow! instruction, we will have to find the instruction itself now that we got its operands extracted. */ - if (instFlags & INST_3DNOW_FETCH) { - ii = inst_lookup_3dnow(ci); - if (ii == NULL) goto _Undecodable; - isi = &InstSharedInfoTable[ii->sharedIndex]; - instFlags = FlagsTable[isi->flagsIndex]; + + /* Copy DST_WR flag. */ + di->flags |= (instFlags & INST_DST_WR) >> (31 - 6); /* Copy bit from INST_DST_WR (bit 31) to FLAG_DST_WR (bit 6). */ + /* operands_extract may touched it for FPU operands, so add on top. */ + di->opsNo += (uint8_t)opsNo; } - /* Check whether pseudo opcode is needed, only for CMP instructions: */ - if (instFlags & INST_PSEUDO_OPCODE) { - if (--ci->codeLen < 0) goto _Undecodable; - cmpType = *ci->code; - ci->code++; - if (instFlags & INST_PRE_VEX) { - /* AVX Comparison type must be between 0 to 32, otherwise Reserved. */ - if (cmpType >= INST_VCMP_MAX_RANGE) goto _Undecodable; - } else { - /* SSE Comparison type must be between 0 to 8, otherwise Reserved. */ - if (cmpType >= INST_CMP_MAX_RANGE) goto _Undecodable; + if (instFlags & (INST_3DNOW_FETCH | + INST_PSEUDO_OPCODE | + INST_NATIVE | + INST_PRE_REPNZ | + INST_PRE_REP | + INST_PRE_ADDR_SIZE | + INST_INVALID_64BITS | + INST_64BITS_FETCH)) { /* 8 for 1! */ + + /* If it's a native instruction copy OpSize Prefix. */ + if (ps && instFlags & INST_NATIVE) ps->usedPrefixes |= (ps->decodedPrefixes & INST_PRE_OP_SIZE); + + if (ci->dt != Decode64Bits) { + /* If it's only a 64 bits instruction drop it in other decoding modes. */ + if (instFlags & INST_64BITS_FETCH) goto _Undecodable; + } + else { + /* Drop instructions which are invalid in 64 bits. */ + if (instFlags & INST_INVALID_64BITS) goto _Undecodable; } - } - /* - * There's a limit of 15 bytes on instruction length. The only way to violate - * this limit is by putting redundant prefixes before an instruction. - * start points to first prefix if any, otherwise it points to instruction first byte. - */ - if ((ci->code - ps->start) > INST_MAXIMUM_SIZE) goto _Undecodable; /* Drop instruction. */ + /* If it were a 3DNow! instruction, we will have to find the instruction itself now that we got its operands extracted. */ + if (instFlags & INST_3DNOW_FETCH) { + ii = inst_lookup_3dnow(ci); + if (ii == NULL) goto _Undecodable; + isi = &InstSharedInfoTable[ii->sharedIndex]; + instFlags = FlagsTable[isi->flagsIndex]; + di->opcode = ii->opcodeId; + } - /* - * If we reached here the instruction was fully decoded, we located the instruction in the DB and extracted operands. - * Use the correct mnemonic according to the DT. - * If we are in 32 bits decoding mode it doesn't necessarily mean we will choose mnemonic2, alas, - * it means that if there is a mnemonic2, it will be used. - */ + /* Check whether pseudo opcode is needed, only for CMP instructions: */ + if (instFlags & INST_PSEUDO_OPCODE) { + /* Used only for special CMP instructions which have pseudo opcodes suffix. */ + unsigned int cmpType; - /* Start with prefix LOCK. */ - if ((lockable == TRUE) && (instFlags & INST_PRE_LOCK)) { - ps->usedPrefixes |= INST_PRE_LOCK; - di->flags |= FLAG_LOCK; - } else if ((instFlags & INST_PRE_REPNZ) && (ps->decodedPrefixes & INST_PRE_REPNZ)) { - ps->usedPrefixes |= INST_PRE_REPNZ; - di->flags |= FLAG_REPNZ; - } else if ((instFlags & INST_PRE_REP) && (ps->decodedPrefixes & INST_PRE_REP)) { - ps->usedPrefixes |= INST_PRE_REP; - di->flags |= FLAG_REP; - } + if (--ci->codeLen < 0) goto _Undecodable; + cmpType = *ci->code; + ci->code++; - /* If it's JeCXZ the ADDR_SIZE prefix affects them. */ - if ((instFlags & (INST_PRE_ADDR_SIZE | INST_USE_EXMNEMONIC)) == (INST_PRE_ADDR_SIZE | INST_USE_EXMNEMONIC)) { - ps->usedPrefixes |= INST_PRE_ADDR_SIZE; - if (effAdrSz == Decode16Bits) di->opcode = ii->opcodeId; - else if (effAdrSz == Decode32Bits) di->opcode = ((_InstInfoEx*)ii)->opcodeId2; - /* Ignore REX.W in 64bits, JECXZ is promoted. */ - else /* Decode64Bits */ di->opcode = ((_InstInfoEx*)ii)->opcodeId3; - } + /* + * The opcodeId is the offset to the FIRST pseudo compare mnemonic, + * we will have to fix it so it offsets into the corrected mnemonic. + * Therefore, we use another table to fix the offset. + */ + if (instFlags & INST_PRE_VEX) { + /* AVX Comparison type must be between 0 to 32, otherwise Reserved. */ + if (cmpType >= INST_VCMP_MAX_RANGE) goto _Undecodable; + + /* Use the AVX pseudo compare mnemonics table. */ + di->opcode = ii->opcodeId + VCmpMnemonicOffsets[cmpType]; + } + else { + /* SSE Comparison type must be between 0 to 8, otherwise Reserved. */ + if (cmpType >= INST_CMP_MAX_RANGE) goto _Undecodable; + di->opcode = ii->opcodeId + CmpMnemonicOffsets[cmpType]; + } + + goto _SkipOpcoding; + } + + /* Start with prefix REP/N/Z. */ + if (isPrefixed && (instFlags & (INST_PRE_REPNZ | INST_PRE_REP))) { + if ((instFlags & INST_PRE_REPNZ) && (ps->decodedPrefixes & INST_PRE_REPNZ)) { + ps->usedPrefixes |= INST_PRE_REPNZ; + di->flags |= FLAG_REPNZ; + } + else if ((instFlags & INST_PRE_REP) && (ps->decodedPrefixes & INST_PRE_REP)) { + ps->usedPrefixes |= INST_PRE_REP; + di->flags |= FLAG_REP; + } + } + + if (instFlags & INST_PRE_ADDR_SIZE) { + /* If it's JeCXZ the ADDR_SIZE prefix affects them. */ + if (instFlags & INST_USE_EXMNEMONIC) { + ps->usedPrefixes |= INST_PRE_ADDR_SIZE; + if (effAdrSz == Decode16Bits) di->opcode = ii->opcodeId; + else if (effAdrSz == Decode32Bits) di->opcode = ((_InstInfoEx*)ii)->opcodeId2; + /* Ignore REX.W in 64bits, JECXZ is promoted. */ + else /* Decode64Bits */ di->opcode = ((_InstInfoEx*)ii)->opcodeId3; + } + + /* LOOPxx instructions are also native instruction, but they are special case ones, ADDR_SIZE prefix affects them. */ + else if (instFlags & INST_NATIVE) { + di->opcode = ii->opcodeId; - /* LOOPxx instructions are also native instruction, but they are special case ones, ADDR_SIZE prefix affects them. */ - else if ((instFlags & (INST_PRE_ADDR_SIZE | INST_NATIVE)) == (INST_PRE_ADDR_SIZE | INST_NATIVE)) { - di->opcode = ii->opcodeId; + /* If LOOPxx gets here from 64bits, it must be Decode32Bits because Address Size prefix is set. */ + ps->usedPrefixes |= INST_PRE_ADDR_SIZE; + } - /* If LOOPxx gets here from 64bits, it must be Decode32Bits because Address Size prefix is set. */ - ps->usedPrefixes |= INST_PRE_ADDR_SIZE; + goto _SkipOpcoding; + } } + /* + * If we reached here the instruction was fully decoded, we located the instruction in the DB and extracted operands. + * Use the correct mnemonic according to the DT. + * If we are in 32 bits decoding mode it doesn't necessarily mean we will choose mnemonic2, alas, + * it means that if there is a mnemonic2, it will be used. * Note: * If the instruction is prefixed by operand size we will format it in the non-default decoding mode! * So there might be a situation that an instruction of 32 bit gets formatted in 16 bits decoding mode. * Both ways should end up with a correct and expected formatting of the text. - */ - else if (effOpSz == Decode16Bits) { /* Decode16Bits */ - - /* Set operand size. */ - FLAG_SET_OPSIZE(di, Decode16Bits); - - /* - * If it's a special instruction which has two mnemonics, then use the 16 bits one + update usedPrefixes. - * Note: use 16 bits mnemonic if that instruction supports 32 bit or 64 bit explicitly. - */ - if ((instFlags & INST_USE_EXMNEMONIC) && ((instFlags & (INST_32BITS | INST_64BITS)) == 0)) ps->usedPrefixes |= INST_PRE_OP_SIZE; - di->opcode = ii->opcodeId; - } else if (effOpSz == Decode32Bits) { /* Decode32Bits */ + */ + if (effOpSz == Decode32Bits) { /* Decode32Bits */ /* Set operand size. */ FLAG_SET_OPSIZE(di, Decode32Bits); /* Give a chance for special mnemonic instruction in 32 bits decoding. */ if (instFlags & INST_USE_EXMNEMONIC) { - ps->usedPrefixes |= INST_PRE_OP_SIZE; /* Is it a special instruction which has another mnemonic for mod=11 ? */ if (instFlags & INST_MNEMONIC_MODRM_BASED) { - if (modrm >= INST_DIVIDED_MODRM) di->opcode = ii->opcodeId; - else di->opcode = ((_InstInfoEx*)ii)->opcodeId2; - } else di->opcode = ((_InstInfoEx*)ii)->opcodeId2; - } else di->opcode = ii->opcodeId; - } else { /* Decode64Bits, note that some instructions might be decoded in Decode32Bits above. */ + if (modrm < INST_DIVIDED_MODRM) di->opcode = ((_InstInfoEx*)ii)->opcodeId2; + } + else di->opcode = ((_InstInfoEx*)ii)->opcodeId2; + ps->usedPrefixes |= INST_PRE_OP_SIZE; + } + } + else if (effOpSz == Decode64Bits) { /* Decode64Bits, note that some instructions might be decoded in Decode32Bits above. */ /* Set operand size. */ FLAG_SET_OPSIZE(di, Decode64Bits); @@ -318,85 +337,84 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) * because they must not use REX (otherwise it will get to the wrong instruction which share same opcode). * See XRSTOR and XSAVEOPT. */ - if ((instFlags & INST_MNEMONIC_MODRM_BASED) && (modrm >= INST_DIVIDED_MODRM)) goto _Undecodable; + if ((modrm >= INST_DIVIDED_MODRM) && (instFlags & INST_MNEMONIC_MODRM_BASED)) goto _Undecodable; /* Use third mnemonic, for 64 bits. */ - if ((instFlags & INST_USE_EXMNEMONIC2) && (vrex & PREFIX_EX_W)) { + if ((instFlags & INST_USE_EXMNEMONIC2) && (ps->vrex & PREFIX_EX_W)) { ps->usedPrefixes |= INST_PRE_REX; di->opcode = ((_InstInfoEx*)ii)->opcodeId3; - } else di->opcode = ((_InstInfoEx*)ii)->opcodeId2; /* Use second mnemonic. */ - } else di->opcode = ii->opcodeId; + } + else di->opcode = ((_InstInfoEx*)ii)->opcodeId2; /* Use second mnemonic. */ + } } + else { /* Decode16Bits */ - /* If it's a native instruction use OpSize Prefix. */ - if ((instFlags & INST_NATIVE) && (ps->decodedPrefixes & INST_PRE_OP_SIZE)) ps->usedPrefixes |= INST_PRE_OP_SIZE; - - /* Check VEX mnemonics: */ - if ((instFlags & INST_PRE_VEX) && - (((((_InstInfoEx*)ii)->flagsEx & INST_MNEMONIC_VEXW_BASED) && (vrex & PREFIX_EX_W)) || - ((((_InstInfoEx*)ii)->flagsEx & INST_MNEMONIC_VEXL_BASED) && (vrex & PREFIX_EX_L)))) { - di->opcode = ((_InstInfoEx*)ii)->opcodeId2; - } + /* Set operand size. */ + FLAG_SET_OPSIZE(di, Decode16Bits); - /* Or is it a special CMP instruction which needs a pseudo opcode suffix ? */ - if (instFlags & INST_PSEUDO_OPCODE) { /* - * The opcodeId is the offset to the FIRST pseudo compare mnemonic, - * we will have to fix it so it offsets into the corrected mnemonic. - * Therefore, we use another table to fix the offset. + * If it's a special instruction which has two mnemonics, then use the 16 bits one + update usedPrefixes. + * Note: use 16 bits mnemonic if that instruction supports 32 bit or 64 bit explicitly. */ - if (instFlags & INST_PRE_VEX) { - /* Use the AVX pseudo compare mnemonics table. */ - di->opcode = ii->opcodeId + VCmpMnemonicOffsets[cmpType]; - } else { - /* Use the SSE pseudo compare mnemonics table. */ - di->opcode = ii->opcodeId + CmpMnemonicOffsets[cmpType]; - } + if ((instFlags & (INST_USE_EXMNEMONIC | INST_32BITS | INST_64BITS)) == INST_USE_EXMNEMONIC) ps->usedPrefixes |= INST_PRE_OP_SIZE; } - /* - * Store the address size inside the flags. - * This is necessary for the caller to know the size of rSP when using PUSHA for example. - */ - FLAG_SET_ADDRSIZE(di, effAdrSz); +_SkipOpcoding: - /* Copy DST_WR flag. */ - if (instFlags & INST_DST_WR) di->flags |= FLAG_DST_WR; + /* Check VEX mnemonics: */ + if (isPrefixed && (instFlags & INST_PRE_VEX) && + (((((_InstInfoEx*)ii)->flagsEx & INST_MNEMONIC_VEXW_BASED) && (ps->vrex & PREFIX_EX_W)) || + ((((_InstInfoEx*)ii)->flagsEx & INST_MNEMONIC_VEXL_BASED) && (ps->vrex & PREFIX_EX_L)))) { + di->opcode = ((_InstInfoEx*)ii)->opcodeId2; + } - /* Set the unused prefixes mask. */ - di->unusedPrefixesMask = prefixes_set_unused_mask(ps); + /* Instruction's size should include prefixes too if exist. */ + di->size = (uint8_t)(ci->code - startCode); + /* + * There's a limit of 15 bytes on instruction length. The only way to violate + * this limit is by putting redundant prefixes before an instruction. + * start points to first prefix if any, otherwise it points to instruction first byte. + */ + if (di->size > INST_MAXIMUM_SIZE) goto _Undecodable; - /* Fix privileged. Assumes the privilegedFlag is 0x8000 only. */ - di->flags |= privilegedFlag; + /* Set the unused prefixes mask, if any prefixes (not) used at all. */ + if (isPrefixed) di->unusedPrefixesMask = prefixes_set_unused_mask(ps); /* Copy instruction meta. */ di->meta = isi->meta; - if (di->segment == 0) di->segment = R_NONE; - /* Take into account the O_MEM base register for the mask. */ - if (di->base != R_NONE) di->usedRegistersMask |= _REGISTERTORCLASS[di->base]; - - /* Copy CPU affected flags. */ - CONVERT_FLAGS_TO_EFLAGS(di, isi, modifiedFlagsMask); - CONVERT_FLAGS_TO_EFLAGS(di, isi, testedFlagsMask); - CONVERT_FLAGS_TO_EFLAGS(di, isi, undefinedFlagsMask); + if (ci->features & DF_FILL_EFLAGS) { + /* Copy CPU affected flags. */ + if (isi->testedFlagsMask) CONVERT_FLAGS_TO_EFLAGS(di, isi, testedFlagsMask); + if (isi->modifiedFlagsMask) CONVERT_FLAGS_TO_EFLAGS(di, isi, modifiedFlagsMask); + if (isi->undefinedFlagsMask) CONVERT_FLAGS_TO_EFLAGS(di, isi, undefinedFlagsMask); + } - /* Calculate the size of the instruction we've just decoded. */ - di->size = (uint8_t)((ci->code - startCode) & 0xff); + /* + * Instruction can still be invalid if it's total length is over 15 bytes with prefixes. + * Up to the caller to check that. + */ return DECRES_SUCCESS; -_Undecodable: /* If the instruction couldn't be decoded for some reason, drop the first byte. */ - memset(di, 0, sizeof(_DInst)); - di->base = R_NONE; - - di->size = 1; - /* Clean prefixes just in case... */ - ps->usedPrefixes = 0; - - /* Special case for WAIT instruction: If it's dropped, you have to return a valid instruction! */ +_Undecodable: /* If the instruction couldn't be decoded for some reason, fail. */ + /* Special case for WAIT instruction: If it's dropped as a prefix, we have to return a valid instruction! */ if (*startCode == INST_WAIT_INDEX) { + int delta; + memset(di, 0, sizeof(_DInst)); + di->addr = ci->codeOffset & ci->addrMask; + di->imm.byte = INST_WAIT_INDEX; + di->segment = R_NONE; + di->base = R_NONE; + di->size = 1; di->opcode = I_WAIT; META_SET_ISC(di, ISC_INTEGER); + + /* Fix ci because WAIT could be a prefix that failed, and ci->code is now out of sync. */ + delta = (int)(ci->code - startCode); /* How many bytes we read so far. */ + ci->codeLen += delta - 1; + ci->code = startCode + 1; + /* codeOffset is fixed outside. */ + return DECRES_SUCCESS; } @@ -414,32 +432,36 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) */ _DecodeResult decode_internal(_CodeInfo* _ci, int supportOldIntr, _DInst result[], unsigned int maxResultCount, unsigned int* usedInstructionsCount) { + _CodeInfo ci = *_ci; /* A working copy, we don't touch user's _ci except OUT params. */ _PrefixState ps; - unsigned int prefixSize; - _CodeInfo ci; - unsigned int features; - unsigned int mfc; + /* Bookkeep these from ci below, as it makes things way simpler. */ + const uint8_t* code; + int codeLen; + _OffsetType codeOffset; - _OffsetType codeOffset = _ci->codeOffset; - const uint8_t* code = _ci->code; - int codeLen = _ci->codeLen; - - /* - * This is used for printing only, it is the real offset of where the whole instruction begins. - * We need this variable in addition to codeOffset, because prefixes might change the real offset an instruction begins at. - * So we keep track of both. - */ - _OffsetType startInstOffset = 0; - - const uint8_t* p; + _DecodeResult ret = DECRES_SUCCESS; /* Current working decoded instruction in results. */ - unsigned int nextPos = 0; - _DInst *pdi = NULL; + _DInst* pdi = (_DInst*)&result[0]; /* There's always a room for at least one slot, checked earlier. */ + _DInst* maxResultAddr; - _OffsetType addrMask = (_OffsetType)-1; + unsigned int features = ci.features; - _DecodeResult decodeResult; + unsigned int diStructSize; + /* Use next entry. */ +#ifndef DISTORM_LIGHT + if (supportOldIntr) { + diStructSize = sizeof(_DecodedInst); + maxResultAddr = (_DInst*)((size_t)&result[0] + (maxResultCount * sizeof(_DecodedInst))); + } + else +#endif /* DISTORM_LIGHT */ + { + diStructSize = sizeof(_DInst); + maxResultAddr = &result[maxResultCount]; + } + + ci.addrMask = (_OffsetType)-1; #ifdef DISTORM_LIGHT supportOldIntr; /* Unreferenced. */ @@ -449,202 +471,104 @@ _DecodeResult decode_internal(_CodeInfo* _ci, int supportOldIntr, _DInst result[ * Otherwise, we use the textual interface which needs full addresses for formatting bytes output. * So distorm_format will truncate later. */ - if (_ci->features & DF_MAXIMUM_ADDR32) addrMask = 0xffffffff; - else if (_ci->features & DF_MAXIMUM_ADDR16) addrMask = 0xffff; + if (features & DF_MAXIMUM_ADDR32) ci.addrMask = 0xffffffff; + else if (features & DF_MAXIMUM_ADDR16) ci.addrMask = 0xffff; #endif - /* No entries are used yet. */ - *usedInstructionsCount = 0; - ci.dt = _ci->dt; - _ci->nextOffset = codeOffset; + ps.count = 1; /* Force zero'ing ps below. */ /* Decode instructions as long as we have what to decode/enough room in entries. */ - while (codeLen > 0) { - - /* startInstOffset holds the displayed offset of current instruction. */ - startInstOffset = codeOffset; + while (ci.codeLen > 0) { + code = ci.code; + codeLen = ci.codeLen; + codeOffset = ci.codeOffset; - memset(&ps, 0, (size_t)((char*)&ps.pfxIndexer[0] - (char*)&ps)); - memset(ps.pfxIndexer, PFXIDX_NONE, sizeof(int) * PFXIDX_MAX); - ps.start = code; - ps.last = code; - prefixSize = 0; + if (ps.count) memset(&ps, 0, sizeof(ps)); - if (prefixes_is_valid(*code, ci.dt)) { - prefixes_decode(code, codeLen, &ps, ci.dt); - /* Count prefixes, start points to first prefix. */ - prefixSize = (unsigned int)(ps.last - ps.start); - /* - * It might be that we will just notice that we ran out of bytes, or only prefixes - * so we will have to drop everything and halt. - * Also take into consideration of flow control instruction filter. - */ - codeLen -= prefixSize; - if ((codeLen == 0) || (prefixSize == INST_MAXIMUM_SIZE)) { - if (~_ci->features & DF_RETURN_FC_ONLY) { - /* Make sure there is enough room. */ - if (nextPos + (ps.last - code) > maxResultCount) return DECRES_MEMORYERR; - - for (p = code; p < ps.last; p++, startInstOffset++) { - /* Use next entry. */ -#ifndef DISTORM_LIGHT - if (supportOldIntr) { - pdi = (_DInst*)((char*)result + nextPos * sizeof(_DecodedInst)); - } - else -#endif /* DISTORM_LIGHT */ - { - pdi = &result[nextPos]; - } - nextPos++; - memset(pdi, 0, sizeof(_DInst)); - - pdi->flags = FLAG_NOT_DECODABLE; - pdi->imm.byte = *p; - pdi->size = 1; - pdi->addr = startInstOffset & addrMask; - } - *usedInstructionsCount = nextPos; /* Include them all. */ - } - if (codeLen == 0) break; /* Bye bye, out of bytes. */ - } - code += prefixSize; - codeOffset += prefixSize; + /**** INSTRUCTION DECODING NEXT: ****/ - /* If we got only prefixes continue to next instruction. */ - if (prefixSize == INST_MAXIMUM_SIZE) continue; + /* Make sure we didn't run out of output entries. */ + if (pdi >= maxResultAddr) { + ret = DECRES_MEMORYERR; + break; } - /* - * Now we decode the instruction and only then we do further prefixes handling. - * This is because the instruction could not be decoded at all, or an instruction requires - * a mandatory prefix, or some of the prefixes were useless, etc... + ret = decode_inst(&ci, &ps, code, pdi); + /* decode_inst keeps track (only if successful!) for code and codeLen but ignores codeOffset, fix it here. */ + ci.codeOffset += pdi->size; - * Even if there were a mandatory prefix, we already took into account its size as a normal prefix. - * so prefixSize includes that, and the returned size in pdi is simply the size of the real(=without prefixes) instruction. - */ - if (ci.dt == Decode64Bits) { - if (ps.decodedPrefixes & INST_PRE_REX) { - /* REX prefix must precede first byte of instruction. */ - if (ps.rexPos != (code - 1)) { - ps.decodedPrefixes &= ~INST_PRE_REX; - ps.prefixExtType = PET_NONE; - prefixes_ignore(&ps, PFXIDX_REX); - } - /* - * We will disable operand size prefix, - * if it exists only after decoding the instruction, since it might be a mandatory prefix. - * This will be done after calling inst_lookup in decode_inst. - */ - } - /* In 64 bits, segment overrides of CS, DS, ES and SS are ignored. So don't take'em into account. */ - if (ps.decodedPrefixes & INST_PRE_SEGOVRD_MASK32) { - ps.decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK32; - prefixes_ignore(&ps, PFXIDX_SEG); - } - } + if (ret == DECRES_SUCCESS) { - /* Make sure there is at least one more entry to use, for the upcoming instruction. */ - if (nextPos + 1 > maxResultCount) return DECRES_MEMORYERR; -#ifndef DISTORM_LIGHT - if (supportOldIntr) { - pdi = (_DInst*)((char*)result + nextPos * sizeof(_DecodedInst)); - } - else -#endif /* DISTORM_LIGHT */ - { - pdi = &result[nextPos]; - } - nextPos++; + if (features & (DF_SINGLE_BYTE_STEP | DF_RETURN_FC_ONLY | DF_STOP_ON_PRIVILEGED | DF_STOP_ON_FLOW_CONTROL)) { - /* - * The reason we copy these two again is because we have to keep track on the input ourselves. - * There might be a case when an instruction is invalid, and then it will be counted as one byte only. - * But that instruction already read a byte or two from the stream and only then returned the error. - * Thus, we end up unsynchronized on the stream. - * This way, we are totally safe, because we keep track after the call to decode_inst, using the returned size. - */ - ci.code = code; - ci.codeLen = codeLen; - /* Nobody uses codeOffset in the decoder itself, so spare it. */ - - decodeResult = decode_inst(&ci, &ps, pdi); - - /* See if we need to filter this instruction. */ - if ((_ci->features & DF_RETURN_FC_ONLY) && (META_GET_FC(pdi->meta) == FC_NONE)) decodeResult = DECRES_FILTERED; - - /* Set address to the beginning of the instruction. */ - pdi->addr = startInstOffset & addrMask; - /* pdi->disp &= addrMask; */ - - if ((decodeResult == DECRES_INPUTERR) && (ps.decodedPrefixes & INST_PRE_VEX)) { - if (ps.prefixExtType == PET_VEX3BYTES) { - prefixSize -= 2; - codeLen += 2; - } else if (ps.prefixExtType == PET_VEX2BYTES) { - prefixSize -= 1; - codeLen += 1; - } - ps.last = ps.start + prefixSize - 1; - code = ps.last + 1; - codeOffset = startInstOffset + prefixSize; - } else { - /* Advance to next instruction. */ - codeLen -= pdi->size; - codeOffset += pdi->size; - code += pdi->size; - - /* Instruction's size should include prefixes. */ - pdi->size += (uint8_t)prefixSize; - } + /* Sync codeinfo, remember that currently it points to beginning of the instruction and prefixes if any. */ + if (features & DF_SINGLE_BYTE_STEP) { + ci.code = code + 1; + ci.codeLen = codeLen - 1; + ci.codeOffset = codeOffset + 1; + } - /* Drop all prefixes and the instruction itself, because the instruction wasn't successfully decoded. */ - if ((decodeResult == DECRES_INPUTERR) && (~_ci->features & DF_RETURN_FC_ONLY)) { - nextPos--; /* Undo last result. */ - if ((prefixSize + 1) > 0) { /* 1 for the first instruction's byte. */ - if ((nextPos + prefixSize + 1) > maxResultCount) return DECRES_MEMORYERR; + /* See if we need to filter this instruction. */ + if ((features & DF_RETURN_FC_ONLY) && (META_GET_FC(pdi->meta) == FC_NONE)) { + continue; + } - for (p = ps.start; p < ps.last + 1; p++, startInstOffset++) { - /* Use next entry. */ -#ifndef DISTORM_LIGHT - if (supportOldIntr) { - pdi = (_DInst*)((char*)result + nextPos * sizeof(_DecodedInst)); - } - else -#endif /* DISTORM_LIGHT */ - { - pdi = &result[nextPos]; + /* Check whether we need to stop on any feature. */ + if ((features & DF_STOP_ON_PRIVILEGED) && (FLAG_GET_PRIVILEGED(pdi->flags))) { + pdi = (_DInst*)((char*)pdi + diStructSize); + break; /* ret = DECRES_SUCCESS; */ + } + + if (features & DF_STOP_ON_FLOW_CONTROL) { + unsigned int mfc = META_GET_FC(pdi->meta); + if (mfc && (((features & DF_STOP_ON_CALL) && (mfc == FC_CALL)) || + ((features & DF_STOP_ON_RET) && (mfc == FC_RET)) || + ((features & DF_STOP_ON_SYS) && (mfc == FC_SYS)) || + ((features & DF_STOP_ON_UNC_BRANCH) && (mfc == FC_UNC_BRANCH)) || + ((features & DF_STOP_ON_CND_BRANCH) && (mfc == FC_CND_BRANCH)) || + ((features & DF_STOP_ON_INT) && (mfc == FC_INT)) || + ((features & DF_STOP_ON_CMOV) && (mfc == FC_CMOV)) || + ((features & DF_STOP_ON_HLT) && (mfc == FC_HLT)))) { + pdi = (_DInst*)((char*)pdi + diStructSize); + break; /* ret = DECRES_SUCCESS; */ } - nextPos++; + } + } - memset(pdi, 0, sizeof(_DInst)); - pdi->flags = FLAG_NOT_DECODABLE; - pdi->imm.byte = *p; - pdi->size = 1; - pdi->addr = startInstOffset & addrMask; + /* Allocate at least one more entry to use, for the next instruction. */ + pdi = (_DInst*)((char*)pdi + diStructSize); + } + else { /* ret == DECRES_INPUTERR */ + + /* Handle failure of decoding last instruction. */ + if ((!(features & DF_RETURN_FC_ONLY))) { + memset(pdi, 0, sizeof(_DInst)); + pdi->flags = FLAG_NOT_DECODABLE; + pdi->imm.byte = *code; + pdi->size = 1; + pdi->addr = codeOffset & ci.addrMask; + pdi = (_DInst*)((char*)pdi + diStructSize); + + /* If an instruction wasn't decoded then stop on undecodeable if set. */ + if (features & DF_STOP_ON_UNDECODEABLE) { + ret = DECRES_SUCCESS; + break; } } - } else if (decodeResult == DECRES_FILTERED) nextPos--; /* Return it to pool, since it was filtered. */ - - /* Alright, the caller can read, at least, up to this one. */ - *usedInstructionsCount = nextPos; - /* Fix next offset. */ - _ci->nextOffset = codeOffset; - - /* Check whether we need to stop on any flow control instruction. */ - features = _ci->features; - mfc = META_GET_FC(pdi->meta); - if ((decodeResult == DECRES_SUCCESS) && (features & DF_STOP_ON_FLOW_CONTROL)) { - if (((features & DF_STOP_ON_CALL) && (mfc == FC_CALL)) || - ((features & DF_STOP_ON_RET) && (mfc == FC_RET)) || - ((features & DF_STOP_ON_SYS) && (mfc == FC_SYS)) || - ((features & DF_STOP_ON_UNC_BRANCH) && (mfc == FC_UNC_BRANCH)) || - ((features & DF_STOP_ON_CND_BRANCH) && (mfc == FC_CND_BRANCH)) || - ((features & DF_STOP_ON_INT) && (mfc == FC_INT)) || - ((features & DF_STOP_ON_CMOV) && (mfc == FC_CMOV))) - return DECRES_SUCCESS; + + /* Skip a single byte in case of a failure and retry instruction. */ + ci.code = code + 1; + ci.codeLen = codeLen - 1; + ci.codeOffset = codeOffset + 1; + + /* Reset return value. */ + ret = DECRES_SUCCESS; } } - return DECRES_SUCCESS; + /* Set OUT params. */ + *usedInstructionsCount = (unsigned int)(((size_t)pdi - (size_t)result) / (size_t)diStructSize); + _ci->nextOffset = ci.codeOffset; + + return ret; } diff --git a/NativeCore/Dependencies/distorm/src/decoder.h b/NativeCore/Dependencies/distorm/src/decoder.h index 2f9961a5..c40cb646 100644 --- a/NativeCore/Dependencies/distorm/src/decoder.h +++ b/NativeCore/Dependencies/distorm/src/decoder.h @@ -4,20 +4,8 @@ decoder.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2011 Gil Dabah - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see +Copyright (C) 2003-2021 Gil Dabah +This library is licensed under the BSD license. See the file COPYING. */ @@ -28,6 +16,6 @@ along with this program. If not, see typedef unsigned int _iflags; -_DecodeResult decode_internal(_CodeInfo* ci, int supportOldIntr, _DInst result[], unsigned int maxResultCount, unsigned int* usedInstructionsCount); +_DecodeResult decode_internal(_CodeInfo* _ci, int supportOldIntr, _DInst result[], unsigned int maxResultCount, unsigned int* usedInstructionsCount); #endif /* DECODER_H */ diff --git a/NativeCore/Dependencies/distorm/src/distorm.c b/NativeCore/Dependencies/distorm/src/distorm.c index 12f360fd..e54c28bb 100644 --- a/NativeCore/Dependencies/distorm/src/distorm.c +++ b/NativeCore/Dependencies/distorm/src/distorm.c @@ -5,7 +5,7 @@ diStorm3 C Library Interface diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -29,31 +29,24 @@ This library is licensed under the BSD license. See the file COPYING. return DECRES_SUCCESS; } - /* DECRES_SUCCESS still may indicate we may have something in the result, so zero it first thing. */ - *usedInstructionsCount = 0; - if ((ci == NULL) || (ci->codeLen < 0) || - ((ci->dt != Decode16Bits) && (ci->dt != Decode32Bits) && (ci->dt != Decode64Bits)) || + ((unsigned)ci->dt > (unsigned)Decode64Bits) || (ci->code == NULL) || (result == NULL) || + (maxInstructions == 0) || ((ci->features & (DF_MAXIMUM_ADDR16 | DF_MAXIMUM_ADDR32)) == (DF_MAXIMUM_ADDR16 | DF_MAXIMUM_ADDR32))) { return DECRES_INPUTERR; } - /* Assume length=0 is success. */ - if (ci->codeLen == 0) { - return DECRES_SUCCESS; - } - return decode_internal(ci, FALSE, result, maxInstructions, usedInstructionsCount); } #ifndef DISTORM_LIGHT /* Helper function to concatenate an explicit size when it's unknown from the operands. */ -static void distorm_format_size(_WString* str, const _DInst* di, int opNum) +static void distorm_format_size(unsigned char** str, const _DInst* di, int opNum) { int isSizingRequired = 0; /* @@ -64,7 +57,7 @@ static void distorm_format_size(_WString* str, const _DInst* di, int opNum) * * If given operand number is higher than 2, then output the size anyways. */ - isSizingRequired = ((opNum >= 2) || ((di->ops[0].type != O_REG) && (di->ops[1].type != O_REG))); + isSizingRequired = ((opNum >= 2) || ((opNum == 0) && (di->ops[0].type != O_REG) && (di->ops[1].type != O_REG))); /* Still not sure? Try some special instructions. */ if (!isSizingRequired) { @@ -74,6 +67,7 @@ static void distorm_format_size(_WString* str, const _DInst* di, int opNum) * MOVZX, MOVSX, MOVSXD. * ROL, ROR, RCL, RCR, SHL, SHR, SAL, SAR. * SHLD, SHRD. + * CVTSI2SS is also an exception. */ switch (di->opcode) { @@ -92,6 +86,7 @@ static void distorm_format_size(_WString* str, const _DInst* di, int opNum) case I_SAR: case I_SHLD: case I_SHRD: + case I_CVTSI2SS: isSizingRequired = 1; break; default: /* Instruction doesn't require sizing. */ break; @@ -100,244 +95,262 @@ static void distorm_format_size(_WString* str, const _DInst* di, int opNum) if (isSizingRequired) { - switch (di->ops[opNum].size) + /*case 0: break; OT_MEM's unknown size. */ + switch (di->ops[opNum].size / 8) { - case 0: break; /* OT_MEM's unknown size. */ - case 8: strcat_WSN(str, "byte "); break; - case 16: strcat_WSN(str, "word "); break; - case 32: strcat_WSN(str, "dword "); break; - case 64: strcat_WSN(str, "qword "); break; - case 80: strcat_WSN(str, "tbyte "); break; - case 128: strcat_WSN(str, "dqword "); break; - case 256: strcat_WSN(str, "yword "); break; - default: /* Big oh uh if it gets here. */ break; + case 1: strcat_WS(*str, "BYTE ", 8, 5); break; + case 2: strcat_WS(*str, "WORD ", 8, 5); break; + case 4: strcat_WS(*str, "DWORD ", 8, 6); break; + case 8: strcat_WS(*str, "QWORD ", 8, 6); break; + case 10: strcat_WS(*str, "TBYTE ", 8, 6); break; + case 16: strcat_WS(*str, "DQWORD ", 8, 7); break; + case 32: strcat_WS(*str, "YWORD ", 8, 6); break; } } } -static void distorm_format_signed_disp(_WString* str, const _DInst* di, uint64_t addrMask) +static void distorm_format_signed_disp(unsigned char** str, const _DInst* di, uint64_t addrMask) { int64_t tmpDisp64; if (di->dispSize) { - chrcat_WS(str, ((int64_t)di->disp < 0) ? MINUS_DISP_CHR : PLUS_DISP_CHR); - if ((int64_t)di->disp < 0) tmpDisp64 = -(int64_t)di->disp; - else tmpDisp64 = di->disp; - tmpDisp64 &= addrMask; - str_code_hqw(str, (uint8_t*)&tmpDisp64); + if (((int64_t)di->disp < 0)) { + chrcat_WS(*str, MINUS_DISP_CHR); + tmpDisp64 = -(int64_t)di->disp; + tmpDisp64 &= addrMask; /* Verify only for neg numbers. */ + } + else { + chrcat_WS(*str, PLUS_DISP_CHR); + tmpDisp64 = di->disp; + } + str_int(str, tmpDisp64); } } +static uint8_t prefixTable[6][8] = { "", "LOCK ", "REPNZ ", "REPNZ ", "REP ", "REPZ " }; +static unsigned int prefixSizesTable[6] = { 0, 5, 6, 6, 4, 5 }; +static uint8_t suffixTable[10] = { 0, 'B', 'W', 0, 'D', 0, 0, 0, 'Q' }; + +/* WARNING: This function is written carefully to be able to work with same input and output buffer in-place! */ #ifdef SUPPORT_64BIT_OFFSET _DLLEXPORT_ void distorm_format64(const _CodeInfo* ci, const _DInst* di, _DecodedInst* result) #else _DLLEXPORT_ void distorm_format32(const _CodeInfo* ci, const _DInst* di, _DecodedInst* result) #endif { - _WString* str; - unsigned int i, isDefault; + unsigned char* str; int64_t tmpDisp64; uint64_t addrMask = (uint64_t)-1; - uint8_t segment; const _WMnemonic* mnemonic; + int suffixSize = -1; + unsigned int i; /* Set address mask, when default is for 64bits addresses. */ - if (ci->features & DF_MAXIMUM_ADDR32) addrMask = 0xffffffff; - else if (ci->features & DF_MAXIMUM_ADDR16) addrMask = 0xffff; - - /* Copy other fields. */ - result->size = di->size; - result->offset = di->addr; - - if (di->flags == FLAG_NOT_DECODABLE) { - str = &result->mnemonic; - result->offset &= addrMask; - strclear_WS(&result->operands); - strcpy_WSN(str, "DB "); - str_code_hb(str, di->imm.byte); - strclear_WS(&result->instructionHex); - str_hex_b(&result->instructionHex, di->imm.byte); - return; /* Skip to next instruction. */ + if (ci->features & DF_USE_ADDR_MASK) addrMask = ci->addrMask; + else { + if (ci->features & DF_MAXIMUM_ADDR32) addrMask = 0xffffffff; + else if (ci->features & DF_MAXIMUM_ADDR16) addrMask = 0xffff; } - str = &result->instructionHex; - strclear_WS(str); /* Gotta have full address for (di->addr - ci->codeOffset) to work in all modes. */ - for (i = 0; i < di->size; i++) - str_hex_b(str, ci->code[(unsigned int)(di->addr - ci->codeOffset + i)]); - - /* Truncate address now. */ - result->offset &= addrMask; - - str = &result->mnemonic; - switch (FLAG_GET_PREFIX(di->flags)) - { - case FLAG_LOCK: - strcpy_WSN(str, "lock "); - break; - case FLAG_REP: - /* REP prefix for CMPS and SCAS is really a REPZ. */ - if ((di->opcode == I_CMPS) || (di->opcode == I_SCAS)) strcpy_WSN(str, "repz "); - else strcpy_WSN(str, "rep "); - break; - case FLAG_REPNZ: - strcpy_WSN(str, "repnz "); - break; - default: - /* Init mnemonic string, cause next touch is concatenation. */ - strclear_WS(str); - break; + str_hex(&result->instructionHex, (const uint8_t*)&ci->code[(unsigned int)(di->addr - ci->codeOffset)], di->size); + + if ((int)((int16_t)di->flags) == -1) { + /* In-place considerations: DI is RESULT. Deref fields first. */ + unsigned int size = di->size; + unsigned int byte = di->imm.byte; + _OffsetType offset = di->addr & addrMask; + + result->offset = offset; + result->size = size; + str = (unsigned char*)&result->mnemonic.p; + strcat_WS(str, "DB ", 4, 3); + str_int(&str, byte); + strfinalize_WS(result->mnemonic, str); + *(uint64_t*)&result->operands = 0; /* Clears length and the string at once. */ + return; /* Skip to next instruction. */ } - mnemonic = (const _WMnemonic*)&_MNEMONICS[di->opcode]; - memcpy((int8_t*)&str->p[str->length], mnemonic->p, mnemonic->length + 1); - str->length += mnemonic->length; - - /* Format operands: */ - str = &result->operands; - strclear_WS(str); - - /* Special treatment for String instructions. */ - if ((META_GET_ISC(di->meta) == ISC_INTEGER) && - ((di->opcode == I_MOVS) || - (di->opcode == I_CMPS) || - (di->opcode == I_STOS) || - (di->opcode == I_LODS) || - (di->opcode == I_SCAS))) - { + str = (unsigned char*)&result->operands.p; + + /* Special treatment for String (movs, cmps, stos, lods, scas) instructions. */ + if ((di->opcode >= I_MOVS) && (di->opcode <= I_SCAS)) { /* * No operands are needed if the address size is the default one, * and no segment is overridden, so add the suffix letter, * to indicate size of operation and continue to next instruction. */ - if ((FLAG_GET_ADDRSIZE(di->flags) == ci->dt) && (SEGMENT_IS_DEFAULT(di->segment))) { - str = &result->mnemonic; - switch (di->ops[0].size) - { - case 8: chrcat_WS(str, 'B'); break; - case 16: chrcat_WS(str, 'W'); break; - case 32: chrcat_WS(str, 'D'); break; - case 64: chrcat_WS(str, 'Q'); break; - } - return; + if ((SEGMENT_IS_DEFAULT_OR_NONE(di->segment)) && (FLAG_GET_ADDRSIZE(di->flags) == ci->dt)) { + suffixSize = di->ops[0].size / 8; + goto skipOperands; } + suffixSize = 0; /* Marks it's a string instruction. */ } - for (i = 0; ((i < OPERANDS_NO) && (di->ops[i].type != O_NONE)); i++) { - if (i > 0) strcat_WSN(str, ", "); - switch (di->ops[i].type) - { - case O_REG: - strcat_WS(str, (const _WString*)&_REGISTERS[di->ops[i].index]); - break; - case O_IMM: - /* If the instruction is 'push', show explicit size (except byte imm). */ - if ((di->opcode == I_PUSH) && (di->ops[i].size != 8)) distorm_format_size(str, di, i); - /* Special fix for negative sign extended immediates. */ - if ((di->flags & FLAG_IMM_SIGNED) && (di->ops[i].size == 8)) { - if (di->imm.sbyte < 0) { - chrcat_WS(str, MINUS_DISP_CHR); - str_code_hb(str, -di->imm.sbyte); - break; + for (i = 0; i < di->opsNo; i++) { + unsigned int type = di->ops[i].type; + if (i > 0) strcat_WS(str, ", ", 2, 2); + if (type == O_REG) { + strcat_WSR(&str, &_REGISTERS[di->ops[i].index]); + } + else if (type == O_IMM) { + /* If the instruction is 'push', show explicit size (except byte imm). */ + if ((di->opcode == I_PUSH) && (di->ops[i].size != 8)) distorm_format_size(&str, di, i); + /* Special fix for negative sign extended immediates. */ + if ((di->flags & FLAG_IMM_SIGNED) && (di->ops[i].size == 8) && (di->imm.sbyte < 0)) { + chrcat_WS(str, MINUS_DISP_CHR); + tmpDisp64 = -di->imm.sbyte; + str_int(&str, tmpDisp64); + } + else { + /* Notice signedness and size of the immediate. */ + if (di->ops[i].size == 0x20) str_int(&str, di->imm.dword); + else str_int(&str, di->imm.qword); + } + } + else if (type == O_PC) { +#ifdef SUPPORT_64BIT_OFFSET + str_int(&str, (di->size + di->imm.sqword + di->addr) & addrMask); +#else + tmpDisp64 = ((_OffsetType)di->imm.sdword + di->addr + di->size) & (uint32_t)addrMask; + str_int(&str, tmpDisp64); +#endif + } + else if (type == O_DISP) { + distorm_format_size(&str, di, i); + chrcat_WS(str, OPEN_CHR); + if (!SEGMENT_IS_DEFAULT_OR_NONE(di->segment)) { + strcat_WSR(&str, &_REGISTERS[SEGMENT_GET_UNSAFE(di->segment)]); + chrcat_WS(str, SEG_OFF_CHR); + } + tmpDisp64 = di->disp & addrMask; + str_int(&str, tmpDisp64); + chrcat_WS(str, CLOSE_CHR); + } + else if (type == O_SMEM) { + int isDefault; + int segment; + distorm_format_size(&str, di, i); + chrcat_WS(str, OPEN_CHR); + + segment = SEGMENT_GET(di->segment); + isDefault = SEGMENT_IS_DEFAULT(di->segment); + + /* + * This is where we need to take special care for String instructions. + * If we got here, it means we need to explicitly show their operands. + * The problem with CMPS and MOVS is that they have two(!) memory operands. + * So we have to complement(!) them ourselves, since the isntruction structure supplies only the segment that can be overridden. + * And make the rest of the String operations explicit. + * We ignore default ES/DS in 64 bits. + * ["MOVS"], [OPT.REGI_EDI, OPT.REGI_ESI] -- DS can be overridden. + * ["CMPS"], [OPT.REGI_ESI, OPT.REGI_EDI] -- DS can be overriden. + * + * suffixSize == 0 was set above for string opcode already. + */ + if (suffixSize == 0) { + if (((di->opcode == I_MOVS) && (i == 0)) || ((di->opcode == I_CMPS) && (i == 1))) { + if (ci->dt != Decode64Bits) { + segment = R_ES; + isDefault = FALSE; } + else isDefault = TRUE; } - if (di->ops[i].size == 64) str_code_hqw(str, (uint8_t*)&di->imm.qword); - else str_code_hdw(str, di->imm.dword); - break; - case O_IMM1: - str_code_hdw(str, di->imm.ex.i1); - break; - case O_IMM2: - str_code_hdw(str, di->imm.ex.i2); - break; - case O_DISP: - distorm_format_size(str, di, i); - chrcat_WS(str, OPEN_CHR); - if ((SEGMENT_GET(di->segment) != R_NONE) && !SEGMENT_IS_DEFAULT(di->segment)) { - strcat_WS(str, (const _WString*)&_REGISTERS[SEGMENT_GET(di->segment)]); - chrcat_WS(str, SEG_OFF_CHR); - } - tmpDisp64 = di->disp & addrMask; - str_code_hqw(str, (uint8_t*)&tmpDisp64); - chrcat_WS(str, CLOSE_CHR); - break; - case O_SMEM: - distorm_format_size(str, di, i); - chrcat_WS(str, OPEN_CHR); - - /* - * This is where we need to take special care for String instructions. - * If we got here, it means we need to explicitly show their operands. - * The problem with CMPS and MOVS is that they have two(!) memory operands. - * So we have to complete it ourselves, since the structure supplies only the segment that can be overridden. - * And make the rest of the String operations explicit. - */ - segment = SEGMENT_GET(di->segment); - isDefault = SEGMENT_IS_DEFAULT(di->segment); - switch (di->opcode) - { - case I_MOVS: - isDefault = FALSE; - if (i == 0) segment = R_ES; - break; - case I_CMPS: + else if (isDefault && ((di->opcode == I_MOVS) || (di->opcode == I_CMPS))) { + if (ci->dt != Decode64Bits) { + segment = R_DS; isDefault = FALSE; - if (i == 1) segment = R_ES; - break; - case I_INS: - case I_LODS: - case I_STOS: - case I_SCAS: isDefault = FALSE; break; - } - if (!isDefault && (segment != R_NONE)) { - strcat_WS(str, (const _WString*)&_REGISTERS[segment]); - chrcat_WS(str, SEG_OFF_CHR); + } } + } + if (!isDefault && (segment != R_NONE)) { + strcat_WSR(&str, &_REGISTERS[segment]); + chrcat_WS(str, SEG_OFF_CHR); + } - strcat_WS(str, (const _WString*)&_REGISTERS[di->ops[i].index]); - - distorm_format_signed_disp(str, di, addrMask); - chrcat_WS(str, CLOSE_CHR); - break; - case O_MEM: - distorm_format_size(str, di, i); - chrcat_WS(str, OPEN_CHR); - if ((SEGMENT_GET(di->segment) != R_NONE) && !SEGMENT_IS_DEFAULT(di->segment)) { - strcat_WS(str, (const _WString*)&_REGISTERS[SEGMENT_GET(di->segment)]); - chrcat_WS(str, SEG_OFF_CHR); - } - if (di->base != R_NONE) { - strcat_WS(str, (const _WString*)&_REGISTERS[di->base]); - chrcat_WS(str, PLUS_DISP_CHR); - } - strcat_WS(str, (const _WString*)&_REGISTERS[di->ops[i].index]); - if (di->scale != 0) { - chrcat_WS(str, '*'); - if (di->scale == 2) chrcat_WS(str, '2'); - else if (di->scale == 4) chrcat_WS(str, '4'); - else /* if (di->scale == 8) */ chrcat_WS(str, '8'); - } + strcat_WSR(&str, &_REGISTERS[di->ops[i].index]); - distorm_format_signed_disp(str, di, addrMask); - chrcat_WS(str, CLOSE_CHR); - break; - case O_PC: -#ifdef SUPPORT_64BIT_OFFSET - str_off64(str, (di->imm.sqword + di->addr + di->size) & addrMask); -#else - str_code_hdw(str, ((_OffsetType)di->imm.sdword + di->addr + di->size) & (uint32_t)addrMask); -#endif - break; - case O_PTR: - str_code_hdw(str, di->imm.ptr.seg); + distorm_format_signed_disp(&str, di, addrMask); + chrcat_WS(str, CLOSE_CHR); + } + else if (type == O_MEM) { + distorm_format_size(&str, di, i); + chrcat_WS(str, OPEN_CHR); + if (!SEGMENT_IS_DEFAULT_OR_NONE(di->segment)) { + strcat_WSR(&str, &_REGISTERS[SEGMENT_GET_UNSAFE(di->segment)]); chrcat_WS(str, SEG_OFF_CHR); - str_code_hdw(str, di->imm.ptr.off); - break; + } + if (di->base != R_NONE) { + strcat_WSR(&str, &_REGISTERS[di->base]); + chrcat_WS(str, PLUS_DISP_CHR); + } + strcat_WSR(&str, &_REGISTERS[di->ops[i].index]); + if (di->scale != 0) { + switch (di->scale) + { + case 2: strcat_WS(str, "*2", 2, 2); break; + case 4: strcat_WS(str, "*4", 2, 2); break; + case 8: strcat_WS(str, "*8", 2, 2); break; + } + } + distorm_format_signed_disp(&str, di, addrMask); + chrcat_WS(str, CLOSE_CHR); + } + else if (type == O_PTR) { + str_int(&str, di->imm.ptr.seg); + chrcat_WS(str, SEG_OFF_CHR); + str_int(&str, di->imm.ptr.off); + } + else if (type == O_IMM1) { + str_int(&str, di->imm.ex.i1); + } + else if (type == O_IMM2) { + str_int(&str, di->imm.ex.i2); } } +skipOperands: + + /* Finalize the operands string. */ + strfinalize_WS(result->operands, str); + + /* Not used anymore. if (di->flags & FLAG_HINT_TAKEN) strcat_WSN(str, " ;TAKEN"); else if (di->flags & FLAG_HINT_NOT_TAKEN) strcat_WSN(str, " ;NOT TAKEN"); + */ + { + /* In-place considerations: DI is RESULT. Deref fields first. */ + unsigned int opcode = di->opcode; + unsigned int prefix = FLAG_GET_PREFIX(di->flags); + unsigned int size = di->size; + _OffsetType offset = di->addr & addrMask; + str = (unsigned char*)&result->mnemonic.p; + mnemonic = (const _WMnemonic*)&_MNEMONICS[opcode]; + + if (prefix) { + /* REP prefix for CMPS and SCAS is really a REPZ. */ + prefix += (opcode == I_CMPS); + prefix += (opcode == I_SCAS); + memcpy(str, &prefixTable[prefix][0], 8); + str += prefixSizesTable[prefix]; + } + + /* + * Always copy 16 bytes from the mnemonic, we have a sentinel padding so we can read past. + * This helps the compiler to remove the call to memcpy and therefore makes this copying much faster. + * The longest instruction is exactly 16 chars long, so we null terminate the string below. + */ + memcpy((int8_t*)str, mnemonic->p, 16); + str += mnemonic->length; + + if (suffixSize > 0) { + *str++ = suffixTable[suffixSize]; + } + strfinalize_WS(result->mnemonic, str); + + result->offset = offset; + result->size = size; + } } #ifdef SUPPORT_64BIT_OFFSET @@ -347,9 +360,8 @@ static void distorm_format_signed_disp(_WString* str, const _DInst* di, uint64_t #endif { _DecodeResult res; - _DInst di; _CodeInfo ci; - unsigned int instsCount = 0, i; + unsigned int i, instsCount; *usedInstructionsCount = 0; @@ -358,19 +370,15 @@ static void distorm_format_signed_disp(_WString* str, const _DInst* di, uint64_t return DECRES_INPUTERR; } - if ((dt != Decode16Bits) && (dt != Decode32Bits) && (dt != Decode64Bits)) { + if ((unsigned)dt > (unsigned)Decode64Bits) { return DECRES_INPUTERR; } - if (code == NULL || result == NULL) { + /* Make sure there's at least one instruction in the result buffer. */ + if ((code == NULL) || (result == NULL) || (maxInstructions == 0)) { return DECRES_INPUTERR; } - /* Assume length=0 is success. */ - if (codeLen == 0) { - return DECRES_SUCCESS; - } - /* * We have to format the result into text. But the interal decoder works with the new structure of _DInst. * Therefore, we will pass the result array(!) from the caller and the interal decoder will fill it in with _DInst's. @@ -384,24 +392,22 @@ static void distorm_format_signed_disp(_WString* str, const _DInst* di, uint64_t ci.code = code; ci.codeLen = codeLen; ci.dt = dt; - ci.features = DF_NONE; - if (dt == Decode16Bits) ci.features = DF_MAXIMUM_ADDR16; - else if (dt == Decode32Bits) ci.features = DF_MAXIMUM_ADDR32; + ci.features = DF_USE_ADDR_MASK; + if (dt == Decode16Bits) ci.addrMask = 0xffff; + else if (dt == Decode32Bits) ci.addrMask = 0xffffffff; + else ci.addrMask = (_OffsetType)-1; - res = decode_internal(&ci, TRUE, (_DInst*)result, maxInstructions, &instsCount); + res = decode_internal(&ci, TRUE, (_DInst*)result, maxInstructions, usedInstructionsCount); + instsCount = *usedInstructionsCount; for (i = 0; i < instsCount; i++) { - if ((*usedInstructionsCount + i) >= maxInstructions) return DECRES_MEMORYERR; - - /* Copy the current decomposed result to a temp structure, so we can override the result with text. */ - memcpy(&di, (char*)result + (i * sizeof(_DecodedInst)), sizeof(_DInst)); + /* distorm_format is optimized and can work with same input/output buffer in-place. */ #ifdef SUPPORT_64BIT_OFFSET - distorm_format64(&ci, &di, &result[i]); + distorm_format64(&ci, (_DInst*)&result[i], &result[i]); #else - distorm_format32(&ci, &di, &result[i]); + distorm_format32(&ci, (_DInst*)&result[i], &result[i]); #endif } - *usedInstructionsCount = instsCount; return res; } diff --git a/NativeCore/Dependencies/distorm/src/instructions.c b/NativeCore/Dependencies/distorm/src/instructions.c index 9107b6b0..ff1c43cd 100644 --- a/NativeCore/Dependencies/distorm/src/instructions.c +++ b/NativeCore/Dependencies/distorm/src/instructions.c @@ -4,7 +4,7 @@ instructions.c diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -168,14 +168,15 @@ static _InstInfo* inst_lookup_prefixed(_InstNode in, _PrefixState* ps) * try to get the instruction and only then check for the operand size prefix. */ - /* If both REPNZ and REP are together, it's illegal for sure. */ + /* If both REPNZ and REP are together, it's illegal for sure. */ if ((ps->decodedPrefixes & INST_PRE_REPS) == INST_PRE_REPS) return NULL; /* Now we know it's either REPNZ+OPSIZE or REP+OPSIZE, so examine the instruction. */ if (ps->decodedPrefixes & INST_PRE_REPNZ) { index = 3; ps->decodedPrefixes &= ~INST_PRE_REPNZ; - } else if (ps->decodedPrefixes & INST_PRE_REP) { + } + else if (ps->decodedPrefixes & INST_PRE_REP) { index = 2; ps->decodedPrefixes &= ~INST_PRE_REP; } @@ -238,7 +239,8 @@ static _InstInfo* inst_vex_lookup(_CodeInfo* ci, _PrefixState* ps) pp = vex & 3; /* Implied leading 0x0f byte by default for 2 bytes VEX prefix. */ start = 1; - } else { /* PET_VEX3BYTES */ + } + else { /* PET_VEX3BYTES */ start = vex & 0x1f; vex2 = *(ps->vexPos + 1); ps->vexV = v = (~vex2 >> 3) & 0xf; @@ -297,7 +299,8 @@ static _InstInfo* inst_vex_lookup(_CodeInfo* ci, _PrefixState* ps) if (instType == INT_LIST_GROUP) { in = InstructionsTree[instIndex + ((*ci->code >> 3) & 7)]; /* Continue below to check prefixed table. */ - } else if (instType == INT_LIST_FULL) { + } + else if (instType == INT_LIST_FULL) { in = InstructionsTree[instIndex + *ci->code]; /* Continue below to check prefixed table. */ } @@ -316,30 +319,40 @@ static _InstInfo* inst_vex_lookup(_CodeInfo* ci, _PrefixState* ps) return NULL; } -_InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) +_InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps, int* isPrefixed) { - unsigned int tmpIndex0 = 0, tmpIndex1 = 0, tmpIndex2 = 0, rex = ps->vrex; - int instType = 0; - _InstNode in = 0; + unsigned int tmpIndex0, tmpIndex1, tmpIndex2; + int instType; + _InstNode in; _InstInfo* ii = NULL; int isWaitIncluded = FALSE; - /* See whether we have to handle a VEX prefixed instruction. */ - if (ps->decodedPrefixes & INST_PRE_VEX) { - ii = inst_vex_lookup(ci, ps); - if (ii != NULL) { - /* Make sure that VEX.L exists when forced. */ - if ((((_InstInfoEx*)ii)->flagsEx & INST_FORCE_VEXL) && (~ps->vrex & PREFIX_EX_L)) return NULL; - /* If the instruction doesn't use VEX.vvvv it must be zero. */ - if ((((_InstInfoEx*)ii)->flagsEx & INST_VEX_V_UNUSED) && ps->vexV) return NULL; + /* Always safe to read first byte codeLen > 0. */ + tmpIndex0 = *ci->code; + + if (prefixes_is_valid((unsigned char)tmpIndex0, ci->dt)) { + *isPrefixed = TRUE; + prefixes_decode(ci, ps); + if (ci->codeLen < 1) return NULL; /* No more bytes for opcode, halt. */ + tmpIndex0 = *ci->code; /* Reload. */ + + /* If there are too many prefixes, it will be checked later in decode_inst. */ + + /* See whether we have to handle a VEX prefixed instruction. */ + if (ps->decodedPrefixes & INST_PRE_VEX) { + ii = inst_vex_lookup(ci, ps); + if (ii != NULL) { + /* Make sure that VEX.L exists when forced. */ + if ((((_InstInfoEx*)ii)->flagsEx & INST_FORCE_VEXL) && (~ps->vrex & PREFIX_EX_L)) return NULL; + /* If the instruction doesn't use VEX.vvvv it must be zero. */ + if ((((_InstInfoEx*)ii)->flagsEx & INST_VEX_V_UNUSED) && ps->vexV) return NULL; + } + return ii; } - return ii; } - /* Read first byte. */ + /* Account first byte, we know it's safe to read. */ ci->codeLen -= 1; - if (ci->codeLen < 0) return NULL; - tmpIndex0 = *ci->code; /* Check for special 0x9b, WAIT instruction, which can be part of some instructions(x87). */ if (tmpIndex0 == INST_WAIT_INDEX) { @@ -359,27 +372,14 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) /* Walk first byte in InstructionsTree root. */ in = InstructionsTree[tmpIndex0]; - if (in == INT_NOTEXISTS) return NULL; + if ((uint32_t)in == INT_NOTEXISTS) return NULL; instType = INST_NODE_TYPE(in); /* Single byte instruction (OCST_1BYTE). */ if ((instType < INT_INFOS) && (!isWaitIncluded)) { /* Some single byte instructions need extra treatment. */ - switch (tmpIndex0) - { - case INST_ARPL_INDEX: - /* - * ARPL/MOVSXD share the same opcode, and both have different operands and mnemonics, of course. - * Practically, I couldn't come up with a comfortable way to merge the operands' types of ARPL/MOVSXD. - * And since the DB can't be patched dynamically, because the DB has to be multi-threaded compliant, - * I have no choice but to check for ARPL/MOVSXD right here - "right about now, the funk soul brother, check it out now, the funk soul brother...", fatboy slim - */ - if (ci->dt == Decode64Bits) { - return &II_MOVSXD; - } /* else ARPL will be returned because its defined in the DB already. */ - break; - - case INST_NOP_INDEX: /* Nopnopnop */ + if (instType == INT_INFO_TREAT) { + if (tmpIndex0 == INST_NOP_INDEX) { /* Nopnopnop */ /* Check for Pause, since it's prefixed with 0xf3, which is not a real mandatory prefix. */ if (ps->decodedPrefixes & INST_PRE_REP) { /* Flag this prefix as used. */ @@ -395,20 +395,33 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) * 90 XCHG EAX, EAX is a true NOP (and not high dword of RAX = 0 although it should be a 32 bits operation). * Note that if the REX.B is used, then the register is not RAX anymore but R8, which means it's not a NOP. */ - if (rex & PREFIX_EX_W) ps->usedPrefixes |= INST_PRE_REX; - if ((ci->dt != Decode64Bits) || (~rex & PREFIX_EX_B)) return &II_NOP; - break; - - case INST_LEA_INDEX: + if (ps->vrex & PREFIX_EX_W) ps->usedPrefixes |= INST_PRE_REX; + if ((ci->dt != Decode64Bits) || (~ps->vrex & PREFIX_EX_B)) return &II_NOP; + } + else if (tmpIndex0 == INST_LEA_INDEX) { /* Ignore segment override prefixes for LEA instruction. */ ps->decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK; /* Update unused mask for ignoring segment prefix. */ prefixes_ignore(ps, PFXIDX_SEG); - break; + } + else if (tmpIndex0 == INST_ARPL_INDEX) { + /* + * ARPL/MOVSXD share the same opcode, and both have different operands and mnemonics, of course. + * Practically, I couldn't come up with a comfortable way to merge the operands' types of ARPL/MOVSXD. + * And since the DB can't be patched dynamically, because the DB has to be multi-threaded compliant, + * I have no choice but to check for ARPL/MOVSXD right here - "right about now, the funk soul brother, check it out now, the funk soul brother...", fatboy slim + */ + if (ci->dt == Decode64Bits) { + return &II_MOVSXD; + } /* else ARPL will be returned because its defined in the DB already. */ + } } - - /* Return the 1 byte instruction we found. */ - return instType == INT_INFO ? &InstInfos[INST_NODE_INDEX(in)] : (_InstInfo*)&InstInfosEx[INST_NODE_INDEX(in)]; + /* + * Return the 1 byte instruction we found. + * We can have three node types here: infoex, info_treat and info. + * The latter two are really the same basic structure. + */ + return instType == INT_INFOEX ? (_InstInfo*)&InstInfosEx[INST_NODE_INDEX(in)] : &InstInfos[INST_NODE_INDEX(in)]; } /* Read second byte, still doesn't mean all of its bits are used (I.E: ModRM). */ @@ -416,7 +429,7 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) ci->codeLen -= 1; if (ci->codeLen < 0) return NULL; tmpIndex1 = *ci->code; - + /* Try single byte instruction + reg bits (OCST_13BYTES). */ if ((instType == INT_LIST_GROUP) && (!isWaitIncluded)) return inst_get_info(in, (tmpIndex1 >> 3) & 7); @@ -442,13 +455,14 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) if (tmpIndex1 < INST_DIVIDED_MODRM) { /* An instruction which requires a ModR/M byte. Thus it's 1.3 bytes long instruction. */ tmpIndex1 = (tmpIndex1 >> 3) & 7; /* Isolate the 3 REG/OPCODE bits. */ - } else { /* Normal 2 bytes instruction. */ - /* - * Divided instructions can't be in the range of 0x8-0xc0. - * That's because 0-8 are used for 3 bits group. - * And 0xc0-0xff are used for not-divided instruction. - * So the in between range is omitted, thus saving some more place in the tables. - */ + } + else { /* Normal 2 bytes instruction. */ + /* + * Divided instructions can't be in the range of 0x8-0xc0. + * That's because 0-8 are used for 3 bits group. + * And 0xc0-0xff are used for not-divided instruction. + * So the in between range is omitted, thus saving some more place in the tables. + */ tmpIndex1 -= INST_DIVIDED_MODRM - 8; } @@ -525,7 +539,7 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) * hence we don't override 'in', cause we might still need it. */ instType = INST_NODE_TYPE(in2); - + if (instType == INT_INFO) ii = &InstInfos[INST_NODE_INDEX(in2)]; else if (instType == INT_INFOEX) ii = (_InstInfo*)&InstInfosEx[INST_NODE_INDEX(in2)]; @@ -535,7 +549,7 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) * or it was an official 2.3 (because its index was less than 0xc0) - * Then it means the instruction should be using the REG bits, otherwise give a chance to range 0xc0-0xff. */ - /* If we found an instruction only by its REG bits, AND it is not divided, then return it. */ + /* If we found an instruction only by its REG bits, AND it is not divided, then return it. */ if ((ii != NULL) && (INST_INFO_FLAGS(ii) & INST_NOT_DIVIDED)) return ii; /* Otherwise, if the range is above 0xc0, try the special divided range (range 0x8-0xc0 is omitted). */ if (tmpIndex2 >= INST_DIVIDED_MODRM) return inst_get_info(in, tmpIndex2 - INST_DIVIDED_MODRM + 8); diff --git a/NativeCore/Dependencies/distorm/src/instructions.h b/NativeCore/Dependencies/distorm/src/instructions.h index f6c2c53b..4902c99a 100644 --- a/NativeCore/Dependencies/distorm/src/instructions.h +++ b/NativeCore/Dependencies/distorm/src/instructions.h @@ -4,7 +4,7 @@ instructions.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -22,6 +22,7 @@ This library is licensed under the BSD license. See the file COPYING. * actually, it depends on the decoding mode, unless there's an operand/address size prefix. * For example, the code: 33 c0 could be decoded/executed as XOR AX, AX or XOR EAX, EAX. */ + typedef enum OpType { /* No operand is set */ OT_NONE = 0, @@ -38,18 +39,6 @@ typedef enum OpType { /* Read a signed extended byte(8 bits) immediate */ OT_SEIMM8, - /* - * Special immediates for instructions which have more than one immediate, - * which is an exception from standard instruction format. - * As to version v1.0: ENTER, INSERTQ, EXTRQ are the only problematic ones. - */ - /* 16 bits immediate using the first imm-slot */ - OT_IMM16_1, - /* 8 bits immediate using the first imm-slot */ - OT_IMM8_1, - /* 8 bits immediate using the second imm-slot */ - OT_IMM8_2, - /* Use a 8bit register */ OT_REG8, /* Use a 16bit register */ @@ -63,71 +52,7 @@ typedef enum OpType { * VMX instructions are promoted automatically without a REX prefix. */ OT_REG32_64, - /* Used only by MOV CR/DR(n). Promoted with REX onlly. */ - OT_FREG32_64_RM, - - /* Use or read (indirection) a 8bit register or immediate byte */ - OT_RM8, - /* Some instructions force 16 bits (mov sreg, rm16) */ - OT_RM16, - /* Use or read a 16/32/64bit register or immediate word/dword/qword */ - OT_RM_FULL, - /* - * 32 or 64 bits (with REX) operand size indirection memory operand. - * Some instructions are promoted automatically without a REX prefix. - */ - OT_RM32_64, - /* 16 or 32 bits RM. This is used only with MOVZXD instruction in 64bits. */ - OT_RM16_32, - /* Same as OT_RMXX but POINTS to 16 bits [cannot use GENERAL-PURPOSE REG!] */ - OT_FPUM16, - /* Same as OT_RMXX but POINTS to 32 bits (single precision) [cannot use GENERAL-PURPOSE REG!] */ - OT_FPUM32, - /* Same as OT_RMXX but POINTS to 64 bits (double precision) [cannot use GENERAL-PURPOSE REG!] */ - OT_FPUM64, - /* Same as OT_RMXX but POINTS to 80 bits (extended precision) [cannot use GENERAL-PURPOSE REG!] */ - OT_FPUM80, - /* - * Special operand type for SSE4 where the ModR/M might - * be a 32 bits register or 8 bits memory indirection operand. - */ - OT_R32_M8, - /* - * Special ModR/M for PINSRW, which need a 16 bits memory operand or 32 bits register. - * In 16 bits decoding mode R32 becomes R16, operand size cannot affect this. - */ - OT_R32_M16, - /* - * Special type for SSE4, ModR/M might be a 32 bits or 64 bits (with REX) register or - * a 8 bits memory indirection operand. - */ - OT_R32_64_M8, - /* - * Special type for SSE4, ModR/M might be a 32 bits or 64 bits (with REX) register or - * a 16 bits memory indirection operand. - */ - OT_R32_64_M16, - /* - * Special operand type for MOV reg16/32/64/mem16, segReg 8C /r. and SMSW. - * It supports all decoding modes, but if used as a memory indirection it's a 16 bit ModR/M indirection. - */ - OT_RFULL_M16, - - /* Use a control register */ - OT_CREG, - /* Use a debug register */ - OT_DREG, - /* Use a segment register */ - OT_SREG, - /* - * SEG is encoded in the flags of the opcode itself! - * This is used for specific "push SS" where SS is a segment where - * each "push SS" has an absolutely different opcode byte. - * We need this to detect whether an operand size prefix is used. - */ - OT_SEG, - /* Use AL */ OT_ACC8, /* Use AX (FSTSW) */ @@ -137,41 +62,11 @@ typedef enum OpType { /* Use AX/EAX, no REX is possible for RAX, used only with IN/OUT which don't support 64 bit registers */ OT_ACC_FULL_NOT64, - /* - * Read one word (seg), and a word/dword/qword (depends on operand size) from memory. - * JMP FAR [EBX] means EBX point to 16:32 ptr. - */ - OT_MEM16_FULL, - /* Read one word (seg) and a word/dword/qword (depends on operand size), usually SEG:OFF, JMP 1234:1234 */ - OT_PTR16_FULL, - /* Read one word (limit) and a dword/qword (limit) (depends on operand size), used by SGDT, SIDT, LGDT, LIDT. */ - OT_MEM16_3264, - /* Read a byte(8 bits) immediate and calculate it relatively to the current offset of the instruction being decoded */ OT_RELCB, /* Read a word/dword immediate and calculate it relatively to the current offset of the instruction being decoded */ OT_RELC_FULL, - /* Use general memory indirection, with varying sizes: */ - OT_MEM, - /* Used when a memory indirection is required, but if the mod field is 11, this operand will be ignored. */ - OT_MEM_OPT, - OT_MEM32, - /* Memory dereference for MOVNTI, either 32 or 64 bits (with REX). */ - OT_MEM32_64, - OT_MEM64, - OT_MEM128, - /* Used for cmpxchg8b/16b. */ - OT_MEM64_128, - - /* Read an immediate as an absolute address, size is known by instruction, used by MOV (memory offset) only */ - OT_MOFFS8, - OT_MOFFS_FULL, - /* Use an immediate of 1, as for SHR R/M, 1 */ - OT_CONST1, - /* Use CL, as for SHR R/M, CL */ - OT_REGCL, - /* * Instruction-Block for one byte long instructions, used by INC/DEC/PUSH/POP/XCHG, * REG is extracted from the value of opcode @@ -181,6 +76,9 @@ typedef enum OpType { /* Use a 16/32/64bit register */ OT_IB_R_FULL, + /* Read an immediate as an absolute address, size is known by instruction, used by MOV (memory offset) only */ + OT_MOFFS8, + OT_MOFFS_FULL, /* Use [(r)SI] as INDIRECTION, for repeatable instructions */ OT_REGI_ESI, /* Use [(r)DI] as INDIRECTION, for repeatable instructions */ @@ -199,19 +97,164 @@ typedef enum OpType { OT_FPU_SSI, /* ST(0), ST(i) */ OT_FPU_SIS, /* ST(i), ST(0) */ + /* SSE registers: */ + OT_XMM, + /* Extract the SSE register from the RM bits this time (used when the REG bits are used for opcode extension) */ + OT_XMM_RM, + /* Implied XMM0 register as operand, used in SSE4. */ + OT_REGXMM0, + /* Reg32/Reg 64 depends on prefix width only. */ + OT_WREG32_64, + + /* XMM is encoded in VEX.VVVV. */ + OT_VXMM, + /* XMM is encoded in the high nibble of an immediate byte. */ + OT_XMM_IMM, + /* YMM/XMM is dependent on VEX.L. */ + OT_YXMM, + /* YMM/XMM (depends on prefix length) is encoded in the high nibble of an immediate byte. */ + OT_YXMM_IMM, + /* YMM is encoded in reg. */ + OT_YMM, + /* YMM is encoded in VEX.VVVV. */ + OT_VYMM, + /* YMM/XMM is dependent on VEX.L, and encoded in VEX.VVVV. */ + OT_VYXMM, + + /* Use an immediate of 1, as for SHR R/M, 1 */ + OT_CONST1, + /* Use CL, as for SHR R/M, CL */ + OT_REGCL, + + /* Use a control register */ + OT_CREG, + /* Use a debug register */ + OT_DREG, + /* Use a segment register */ + OT_SREG, + /* + * SEG is encoded in the flags of the opcode itself! + * This is used for specific "push SS" where SS is a segment where + * each "push SS" has an absolutely different opcode byte. + * We need this to detect whether an operand size prefix is used. + */ + OT_SEG, + + /* + * Special immediates for instructions which have more than one immediate, + * which is an exception from standard instruction format. + * As to version v1.0: ENTER, INSERTQ, EXTRQ are the only problematic ones. + */ + /* 16 bits immediate using the first imm-slot */ + OT_IMM16_1, + /* 8 bits immediate using the first imm-slot */ + OT_IMM8_1, + /* 8 bits immediate using the second imm-slot */ + OT_IMM8_2, + + /* Read one word (seg) and a word/dword/qword (depends on operand size), usually SEG:OFF, JMP 1234:1234 */ + OT_PTR16_FULL, + + /* Used only by MOV CR/DR(n). Promoted with REX onlly. */ + OT_FREG32_64_RM, + /* MMX registers: */ OT_MM, /* Extract the MMX register from the RM bits this time (used when the REG bits are used for opcode extension) */ OT_MM_RM, + + + /**** MEMORY only operands: ****/ + + /* Use general memory indirection, with varying sizes: */ + OT_MEM, + OT_MEM32, + /* Memory dereference for MOVNTI, either 32 or 64 bits (with REX). */ + OT_MEM32_64, + OT_MEM64, + /* Used for cmpxchg8b/16b. */ + OT_MEM64_128, + OT_MEM128, + /* + * Read one word (seg), and a word/dword/qword (depends on operand size) from memory. + * JMP FAR [EBX] means EBX point to 16:32 ptr. + */ + OT_MEM16_FULL, + /* Read one word (limit) and a dword/qword (limit) (depends on operand size), used by SGDT, SIDT, LGDT, LIDT. */ + OT_MEM16_3264, + /* Used when a memory indirection is required, but if the mod field is 11, this operand will be ignored. */ + OT_MEM_OPT, + + /* Same as OT_RMXX but POINTS to 16 bits [cannot use GENERAL-PURPOSE REG!] */ + OT_FPUM16, + /* Same as OT_RMXX but POINTS to 32 bits (single precision) [cannot use GENERAL-PURPOSE REG!] */ + OT_FPUM32, + /* Same as OT_RMXX but POINTS to 64 bits (double precision) [cannot use GENERAL-PURPOSE REG!] */ + OT_FPUM64, + /* Same as OT_RMXX but POINTS to 80 bits (extended precision) [cannot use GENERAL-PURPOSE REG!] */ + OT_FPUM80, + + /* Mem128/Mem256 is dependent on VEX.L. */ + OT_LMEM128_256, + + + /**** MEMORY & REGISTER only operands: ****/ + + /* Use or read (indirection) a 8bit register or immediate byte */ + OT_RM8, + /* Some instructions force 16 bits (mov sreg, rm16) */ + OT_RM16, + /* ModR/M for 32 bits. */ + OT_RM32, + /* + * Special operand type for MOV reg16/32/64/mem16, segReg 8C /r. and SMSW. + * It supports all decoding modes, but if used as a memory indirection it's a 16 bit ModR/M indirection. + */ + OT_RFULL_M16, + /* Use or read a 16/32/64bit register or immediate word/dword/qword */ + OT_RM_FULL, + + /* RM32/RM64 depends on prefix width only. */ + OT_WRM32_64, + /* + * Special type for SSE4, ModR/M might be a 32 bits or 64 bits (with REX) register or + * a 8 bits memory indirection operand. + */ + OT_R32_64_M8, + /* + * Special type for SSE4, ModR/M might be a 32 bits or 64 bits (with REX) register or + * a 16 bits memory indirection operand. + */ + OT_R32_64_M16, + + /* + * 32 or 64 bits (with REX) operand size indirection memory operand. + * Some instructions are promoted automatically without a REX prefix. + */ + OT_RM32_64, + /* 16 or 32 bits RM. This is used only with MOVZXD instruction in 64bits. */ + OT_RM16_32, + + /* + * Special operand type for SSE4 where the ModR/M might + * be a 32 bits register or 8 bits memory indirection operand. + */ + OT_R32_M8, + /* + * Special ModR/M for PINSRW, which need a 16 bits memory operand or 32 bits register. + * In 16 bits decoding mode R32 becomes R16, operand size cannot affect this. + */ + OT_R32_M16, + /* Reg32/Reg64 (prefix width) or Mem8. */ + OT_REG32_64_M8, + /* Reg32/Reg64 (prefix width) or Mem16. */ + OT_REG32_64_M16, + /* ModR/M points to 32 bits MMX variable */ OT_MM32, /* ModR/M points to 32 bits MMX variable */ OT_MM64, - /* SSE registers: */ - OT_XMM, - /* Extract the SSE register from the RM bits this time (used when the REG bits are used for opcode extension) */ - OT_XMM_RM, /* ModR/M points to 16 bits SSE variable */ OT_XMM16, /* ModR/M points to 32 bits SSE variable */ @@ -220,47 +263,18 @@ typedef enum OpType { OT_XMM64, /* ModR/M points to 128 bits SSE variable */ OT_XMM128, - /* Implied XMM0 register as operand, used in SSE4. */ - OT_REGXMM0, /* AVX operands: */ - - /* ModR/M for 32 bits. */ - OT_RM32, - /* Reg32/Reg64 (prefix width) or Mem8. */ - OT_REG32_64_M8, - /* Reg32/Reg64 (prefix width) or Mem16. */ - OT_REG32_64_M16, - /* Reg32/Reg 64 depends on prefix width only. */ - OT_WREG32_64, - /* RM32/RM64 depends on prefix width only. */ - OT_WRM32_64, /* XMM or Mem32/Mem64 depends on perfix width only. */ OT_WXMM32_64, - /* XMM is encoded in VEX.VVVV. */ - OT_VXMM, - /* XMM is encoded in the high nibble of an immediate byte. */ - OT_XMM_IMM, - /* YMM/XMM is dependent on VEX.L. */ - OT_YXMM, - /* YMM/XMM (depends on prefix length) is encoded in the high nibble of an immediate byte. */ - OT_YXMM_IMM, - /* YMM is encoded in reg. */ - OT_YMM, /* YMM or Mem256. */ OT_YMM256, - /* YMM is encoded in VEX.VVVV. */ - OT_VYMM, - /* YMM/XMM is dependent on VEX.L, and encoded in VEX.VVVV. */ - OT_VYXMM, /* YMM/XMM or Mem64/Mem256 is dependent on VEX.L. */ OT_YXMM64_256, /* YMM/XMM or Mem128/Mem256 is dependent on VEX.L. */ OT_YXMM128_256, /* XMM or Mem64/Mem256 is dependent on VEX.L. */ - OT_LXMM64_128, - /* Mem128/Mem256 is dependent on VEX.L. */ - OT_LMEM128_256 + OT_LXMM64_128 } _OpType; /* Flags for instruction: */ @@ -365,7 +379,7 @@ typedef enum OpType { #define INST_VEX_V_UNUSED (1 << 6) /* Indication that the instruction is privileged (Ring 0), this should be checked on the opcodeId field. */ -#define OPCODE_ID_PRIVILEGED ((uint16_t)0x8000) +#define META_INST_PRIVILEGED ((uint16_t)0x8000) /* * Indicates which operand is being decoded. @@ -399,7 +413,6 @@ typedef enum {ONT_NONE = -1, ONT_1 = 0, ONT_2 = 1, ONT_3 = 2, ONT_4 = 3} _Operan typedef struct { uint8_t flagsIndex; /* An index into FlagsTables */ uint8_t s, d; /* OpType. */ - uint8_t meta; /* Hi 5 bits = Instruction set class | Lo 3 bits = flow control flags. */ /* * The following are CPU flag masks that the instruction changes. * The flags are compacted so 8 bits representation is enough. @@ -408,6 +421,7 @@ typedef struct { uint8_t modifiedFlagsMask; uint8_t testedFlagsMask; uint8_t undefinedFlagsMask; + uint16_t meta; /* High byte = Instruction set class | Low byte = flow control flags. */ } _InstSharedInfo; /* @@ -445,6 +459,7 @@ typedef enum { INT_NOTEXISTS = 0, /* Not exists. */ INT_INFO = 1, /* It's an instruction info. */ INT_INFOEX, + INT_INFO_TREAT, /* Extra intervention is required by inst_lookup. */ INT_LIST_GROUP, INT_LIST_FULL, INT_LIST_DIVIDED, @@ -457,7 +472,8 @@ typedef enum { /* Instruction node is treated as { int index:13; int type:3; } */ typedef uint16_t _InstNode; -_InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps); +_InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps, int* isPrefixed); _InstInfo* inst_lookup_3dnow(_CodeInfo* ci); #endif /* INSTRUCTIONS_H */ + diff --git a/NativeCore/Dependencies/distorm/src/insts.c b/NativeCore/Dependencies/distorm/src/insts.c index f7d283e5..7aab70dc 100644 --- a/NativeCore/Dependencies/distorm/src/insts.c +++ b/NativeCore/Dependencies/distorm/src/insts.c @@ -4,7 +4,7 @@ insts.c diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -15,15 +15,15 @@ This library is licensed under the BSD license. See the file COPYING. /* - * GENERATED BY disOps at Sat Nov 10 19:20:27 2018 + * GENERATED BY disOps at Sat Apr 3 17:52:58 2021 */ -_InstInfo II_MOVSXD = /*II*/ {0x1d4, 10027}; +_InstInfo II_MOVSXD = /*II*/ {0x1d7, 10039}; _InstInfo II_NOP = /*II*/ {0x53, 581}; -_InstInfo II_PAUSE = /*II*/ {0x88, 10035}; -_InstInfo II_WAIT = /*II*/ {0x53, 10042}; -_InstInfo II_RDRAND = /*II*/ {0x1d5, 10048}; -_InstInfo II_3DNOW = /*II*/ {0x1d6, 10056}; +_InstInfo II_PAUSE = /*II*/ {0x91, 10047}; +_InstInfo II_WAIT = /*II*/ {0x53, 10054}; +_InstInfo II_RDRAND = /*II*/ {0x1d8, 10060}; +_InstInfo II_3DNOW = /*II*/ {0x1d9, 10068}; _iflags FlagsTable[101] = { 0x80000011, @@ -60,7 +60,6 @@ _iflags FlagsTable[101] = { 0x4014000, 0x8, 0x81000009, -0x9, 0x80000009, 0x1000808, 0x81000808, @@ -94,6 +93,7 @@ _iflags FlagsTable[101] = { 0x80090009, 0x200b0009, 0x20020009, +0x9, 0x80100009, 0x21100009, 0x87000009, @@ -134,7 +134,7 @@ _InstNode Table_0F_0F = 1440; _InstNode Table_0F_38 = 1896; _InstNode Table_0F_3A = 2152; -_InstInfo InstInfos[1246] = { +_InstInfo InstInfos[1248] = { /*II_00*/ {0x0, 11}, /*II_01*/ {0x1, 11}, /*II_02*/ {0x2, 11}, @@ -232,10 +232,10 @@ _InstInfo InstInfos[1246] = { /*II_63*/ {0x32, 111}, /*II_68*/ {0x33, 16}, /*II_6A*/ {0x35, 16}, - /*II_6C*/ {0x36, 32891}, - /*II_6D*/ {0x37, 32891}, - /*II_6E*/ {0x38, 32896}, - /*II_6F*/ {0x39, 32896}, + /*II_6C*/ {0x36, 123}, + /*II_6D*/ {0x37, 123}, + /*II_6E*/ {0x38, 128}, + /*II_6F*/ {0x39, 128}, /*II_70*/ {0x3a, 134}, /*II_71*/ {0x3a, 138}, /*II_72*/ {0x3b, 143}, @@ -319,7 +319,7 @@ _InstInfo InstInfos[1246] = { /*II_CC*/ {0x6d, 360}, /*II_CD*/ {0x6e, 367}, /*II_CE*/ {0x6f, 372}, - /*II_CF*/ {0x70, 33146}, + /*II_CF*/ {0x70, 378}, /*II_D4*/ {0x71, 384}, /*II_D5*/ {0x71, 389}, /*II_D6*/ {0x72, 394}, @@ -327,1060 +327,1062 @@ _InstInfo InstInfos[1246] = { /*II_E0*/ {0x74, 406}, /*II_E1*/ {0x74, 414}, /*II_E2*/ {0x75, 421}, - /*II_E4*/ {0x77, 33215}, - /*II_E5*/ {0x78, 33215}, - /*II_E6*/ {0x79, 33219}, - /*II_E7*/ {0x7a, 33219}, + /*II_E4*/ {0x77, 447}, + /*II_E5*/ {0x78, 447}, + /*II_E6*/ {0x79, 451}, + /*II_E7*/ {0x7a, 451}, /*II_E8*/ {0x7b, 456}, /*II_E9*/ {0x7c, 462}, /*II_EA*/ {0x7d, 467}, /*II_EB*/ {0x7e, 462}, - /*II_EC*/ {0x7f, 33215}, - /*II_ED*/ {0x80, 33215}, - /*II_EE*/ {0x81, 33219}, - /*II_EF*/ {0x82, 33219}, + /*II_EC*/ {0x7f, 447}, + /*II_ED*/ {0x80, 447}, + /*II_EE*/ {0x81, 451}, + /*II_EF*/ {0x82, 451}, /*II_F1*/ {0x6d, 476}, - /*II_F4*/ {0x53, 33250}, - /*II_F5*/ {0x83, 487}, - /*II_F8*/ {0x83, 492}, - /*II_F9*/ {0x83, 497}, - /*II_FA*/ {0x84, 33270}, - /*II_FB*/ {0x84, 33275}, - /*II_FC*/ {0x85, 512}, - /*II_FD*/ {0x85, 517}, - /*II_0F_02*/ {0x86, 522}, - /*II_0F_03*/ {0x86, 527}, - /*II_0F_05*/ {0x87, 532}, - /*II_0F_06*/ {0x88, 33309}, - /*II_0F_07*/ {0x87, 547}, - /*II_0F_08*/ {0x88, 33323}, - /*II_0F_09*/ {0x88, 33329}, - /*II_0F_0B*/ {0x89, 569}, - /*II_0F_0E*/ {0x8a, 574}, - /*II_0F_1F*/ {0x8b, 581}, - /*II_0F_20*/ {0x8c, 32986}, - /*II_0F_21*/ {0x8d, 32986}, - /*II_0F_22*/ {0x8e, 32986}, - /*II_0F_23*/ {0x8f, 32986}, - /*II_0F_30*/ {0x88, 33354}, - /*II_0F_31*/ {0x88, 33361}, - /*II_0F_32*/ {0x88, 33368}, - /*II_0F_33*/ {0x88, 33375}, - /*II_0F_34*/ {0x87, 614}, - /*II_0F_35*/ {0x87, 624}, - /*II_0F_37*/ {0x90, 633}, - /*II_0F_40*/ {0x91, 641}, - /*II_0F_41*/ {0x91, 648}, - /*II_0F_42*/ {0x92, 656}, - /*II_0F_43*/ {0x92, 663}, - /*II_0F_44*/ {0x93, 671}, - /*II_0F_45*/ {0x93, 678}, - /*II_0F_46*/ {0x94, 686}, - /*II_0F_47*/ {0x94, 694}, - /*II_0F_48*/ {0x95, 701}, - /*II_0F_49*/ {0x95, 708}, - /*II_0F_4A*/ {0x96, 716}, - /*II_0F_4B*/ {0x96, 723}, - /*II_0F_4C*/ {0x97, 731}, - /*II_0F_4D*/ {0x97, 738}, - /*II_0F_4E*/ {0x98, 746}, - /*II_0F_4F*/ {0x98, 754}, - /*II_0F_80*/ {0x99, 134}, - /*II_0F_81*/ {0x99, 138}, - /*II_0F_82*/ {0x9a, 143}, - /*II_0F_83*/ {0x9a, 147}, - /*II_0F_84*/ {0x9b, 152}, - /*II_0F_85*/ {0x9b, 156}, - /*II_0F_86*/ {0x9c, 161}, - /*II_0F_87*/ {0x9c, 166}, - /*II_0F_88*/ {0x9d, 170}, - /*II_0F_89*/ {0x9d, 174}, - /*II_0F_8A*/ {0x9e, 179}, - /*II_0F_8B*/ {0x9e, 183}, - /*II_0F_8C*/ {0x9f, 188}, - /*II_0F_8D*/ {0x9f, 192}, - /*II_0F_8E*/ {0xa0, 197}, - /*II_0F_8F*/ {0xa0, 202}, - /*II_0F_90*/ {0xa1, 761}, - /*II_0F_91*/ {0xa1, 767}, - /*II_0F_92*/ {0xa2, 774}, - /*II_0F_93*/ {0xa2, 780}, - /*II_0F_94*/ {0xa3, 787}, - /*II_0F_95*/ {0xa3, 793}, - /*II_0F_96*/ {0xa4, 800}, - /*II_0F_97*/ {0xa4, 807}, - /*II_0F_98*/ {0xa5, 813}, - /*II_0F_99*/ {0xa5, 819}, - /*II_0F_9A*/ {0xa6, 826}, - /*II_0F_9B*/ {0xa6, 832}, - /*II_0F_9C*/ {0xa7, 839}, - /*II_0F_9D*/ {0xa7, 845}, - /*II_0F_9E*/ {0xa8, 852}, - /*II_0F_9F*/ {0xa8, 859}, - /*II_0F_A0*/ {0xa9, 16}, - /*II_0F_A1*/ {0xaa, 22}, - /*II_0F_A2*/ {0x88, 865}, - /*II_0F_A3*/ {0xab, 872}, - /*II_0F_A8*/ {0xad, 16}, - /*II_0F_A9*/ {0xae, 22}, - /*II_0F_AA*/ {0xaf, 882}, - /*II_0F_AB*/ {0xb0, 887}, - /*II_0F_AF*/ {0xb1, 117}, - /*II_0F_B0*/ {0xb2, 898}, - /*II_0F_B1*/ {0xb3, 898}, - /*II_0F_B2*/ {0xb4, 907}, - /*II_0F_B3*/ {0xb0, 912}, - /*II_0F_B4*/ {0xb4, 917}, - /*II_0F_B5*/ {0xb4, 922}, - /*II_0F_B6*/ {0xb5, 927}, - /*II_0F_B7*/ {0xb6, 927}, - /*II_0F_B9*/ {0x89, 569}, - /*II_0F_BB*/ {0xb0, 934}, - /*II_0F_BE*/ {0xb5, 939}, - /*II_0F_BF*/ {0xb6, 939}, - /*II_0F_C0*/ {0xb2, 946}, - /*II_0F_C1*/ {0xb3, 946}, - /*II_0F_C3*/ {0xb7, 952}, - /*II_0F_C8*/ {0xb8, 960}, - /*II_0F_C8*/ {0xb8, 960}, - /*II_0F_C8*/ {0xb8, 960}, - /*II_0F_C8*/ {0xb8, 960}, - /*II_0F_C8*/ {0xb8, 960}, - /*II_0F_C8*/ {0xb8, 960}, - /*II_0F_C8*/ {0xb8, 960}, - /*II_0F_C8*/ {0xb8, 960}, - /*II_80_00*/ {0xb9, 11}, - /*II_80_01*/ {0xba, 27}, - /*II_80_02*/ {0xbb, 31}, - /*II_80_03*/ {0xbb, 36}, - /*II_80_04*/ {0xbc, 41}, - /*II_80_05*/ {0xb9, 51}, - /*II_80_06*/ {0xbd, 61}, - /*II_80_07*/ {0xbe, 71}, - /*II_81_00*/ {0xbf, 11}, - /*II_81_01*/ {0xc0, 27}, - /*II_81_02*/ {0xc1, 31}, - /*II_81_03*/ {0xc1, 36}, - /*II_81_04*/ {0xc2, 41}, - /*II_81_05*/ {0xbf, 51}, - /*II_81_06*/ {0xc3, 61}, - /*II_81_07*/ {0xc4, 71}, - /*II_82_00*/ {0xc5, 11}, - /*II_82_01*/ {0xc6, 27}, - /*II_82_02*/ {0xc7, 31}, - /*II_82_03*/ {0xc7, 36}, - /*II_82_04*/ {0xc8, 41}, - /*II_82_05*/ {0xc5, 51}, - /*II_82_06*/ {0xc9, 61}, - /*II_82_07*/ {0xca, 71}, - /*II_83_00*/ {0xcb, 11}, - /*II_83_01*/ {0xcc, 27}, - /*II_83_02*/ {0xcd, 31}, - /*II_83_03*/ {0xcd, 36}, - /*II_83_04*/ {0xce, 41}, - /*II_83_05*/ {0xcb, 51}, - /*II_83_06*/ {0xcf, 61}, - /*II_83_07*/ {0xd0, 71}, - /*II_8F_00*/ {0xd1, 22}, - /*II_C0_00*/ {0xd2, 967}, - /*II_C0_01*/ {0xd2, 972}, - /*II_C0_02*/ {0xd3, 977}, - /*II_C0_03*/ {0xd3, 982}, - /*II_C0_04*/ {0xd4, 987}, - /*II_C0_05*/ {0xd4, 992}, - /*II_C0_06*/ {0xd4, 997}, - /*II_C0_07*/ {0xd4, 1002}, - /*II_C1_00*/ {0xd5, 967}, - /*II_C1_01*/ {0xd5, 972}, - /*II_C1_02*/ {0xd6, 977}, - /*II_C1_03*/ {0xd6, 982}, - /*II_C1_04*/ {0xd7, 987}, - /*II_C1_05*/ {0xd7, 992}, - /*II_C1_06*/ {0xd7, 997}, - /*II_C1_07*/ {0xd7, 1002}, - /*II_C6_00*/ {0xd8, 218}, - /*II_C6_F8*/ {0xd9, 1007}, - /*II_C7_00*/ {0xda, 218}, - /*II_C7_F8*/ {0xdb, 1015}, - /*II_D0_00*/ {0xdc, 967}, - /*II_D0_01*/ {0xdc, 972}, - /*II_D0_02*/ {0xdd, 977}, - /*II_D0_03*/ {0xdd, 982}, - /*II_D0_04*/ {0xde, 987}, - /*II_D0_05*/ {0xde, 992}, - /*II_D0_06*/ {0xde, 997}, - /*II_D0_07*/ {0xde, 1002}, - /*II_D1_00*/ {0xdf, 967}, - /*II_D1_01*/ {0xdf, 972}, - /*II_D1_02*/ {0xe0, 977}, - /*II_D1_03*/ {0xe0, 982}, - /*II_D1_04*/ {0xe1, 987}, - /*II_D1_05*/ {0xe1, 992}, - /*II_D1_06*/ {0xe1, 997}, - /*II_D1_07*/ {0xe1, 1002}, - /*II_D2_00*/ {0xe2, 967}, - /*II_D2_01*/ {0xe2, 972}, - /*II_D2_02*/ {0xe3, 977}, - /*II_D2_03*/ {0xe3, 982}, - /*II_D2_04*/ {0xe4, 987}, - /*II_D2_05*/ {0xe4, 992}, - /*II_D2_06*/ {0xe4, 997}, - /*II_D2_07*/ {0xe4, 1002}, - /*II_D3_00*/ {0xe5, 967}, - /*II_D3_01*/ {0xe5, 972}, - /*II_D3_02*/ {0xe6, 977}, - /*II_D3_03*/ {0xe6, 982}, - /*II_D3_04*/ {0xe7, 987}, - /*II_D3_05*/ {0xe7, 992}, - /*II_D3_06*/ {0xe7, 997}, - /*II_D3_07*/ {0xe7, 1002}, - /*II_D8_00*/ {0xe8, 1023}, - /*II_D8_01*/ {0xe8, 1029}, - /*II_D8_02*/ {0xe8, 1035}, - /*II_D8_03*/ {0xe8, 1041}, - /*II_D8_04*/ {0xe8, 1048}, - /*II_D8_05*/ {0xe8, 1054}, - /*II_D8_06*/ {0xe8, 1061}, - /*II_D8_07*/ {0xe8, 1067}, - /*II_D8_C0*/ {0xe9, 1023}, - /*II_D8_C0*/ {0xe9, 1023}, - /*II_D8_C0*/ {0xe9, 1023}, - /*II_D8_C0*/ {0xe9, 1023}, - /*II_D8_C0*/ {0xe9, 1023}, - /*II_D8_C0*/ {0xe9, 1023}, - /*II_D8_C0*/ {0xe9, 1023}, - /*II_D8_C0*/ {0xe9, 1023}, - /*II_D8_C8*/ {0xe9, 1029}, - /*II_D8_C8*/ {0xe9, 1029}, - /*II_D8_C8*/ {0xe9, 1029}, - /*II_D8_C8*/ {0xe9, 1029}, - /*II_D8_C8*/ {0xe9, 1029}, - /*II_D8_C8*/ {0xe9, 1029}, - /*II_D8_C8*/ {0xe9, 1029}, - /*II_D8_C8*/ {0xe9, 1029}, - /*II_D8_D0*/ {0xea, 1035}, - /*II_D8_D0*/ {0xea, 1035}, - /*II_D8_D0*/ {0xea, 1035}, - /*II_D8_D0*/ {0xea, 1035}, - /*II_D8_D0*/ {0xea, 1035}, - /*II_D8_D0*/ {0xea, 1035}, - /*II_D8_D0*/ {0xea, 1035}, - /*II_D8_D0*/ {0xea, 1035}, - /*II_D8_D8*/ {0xea, 1041}, - /*II_D8_D9*/ {0xeb, 1041}, - /*II_D8_D8*/ {0xea, 1041}, - /*II_D8_D8*/ {0xea, 1041}, - /*II_D8_D8*/ {0xea, 1041}, - /*II_D8_D8*/ {0xea, 1041}, - /*II_D8_D8*/ {0xea, 1041}, - /*II_D8_D8*/ {0xea, 1041}, - /*II_D8_E0*/ {0xe9, 1048}, - /*II_D8_E0*/ {0xe9, 1048}, - /*II_D8_E0*/ {0xe9, 1048}, - /*II_D8_E0*/ {0xe9, 1048}, - /*II_D8_E0*/ {0xe9, 1048}, - /*II_D8_E0*/ {0xe9, 1048}, - /*II_D8_E0*/ {0xe9, 1048}, - /*II_D8_E0*/ {0xe9, 1048}, - /*II_D8_E8*/ {0xe9, 1054}, - /*II_D8_E8*/ {0xe9, 1054}, - /*II_D8_E8*/ {0xe9, 1054}, - /*II_D8_E8*/ {0xe9, 1054}, - /*II_D8_E8*/ {0xe9, 1054}, - /*II_D8_E8*/ {0xe9, 1054}, - /*II_D8_E8*/ {0xe9, 1054}, - /*II_D8_E8*/ {0xe9, 1054}, - /*II_D8_F0*/ {0xe9, 1061}, - /*II_D8_F0*/ {0xe9, 1061}, - /*II_D8_F0*/ {0xe9, 1061}, - /*II_D8_F0*/ {0xe9, 1061}, - /*II_D8_F0*/ {0xe9, 1061}, - /*II_D8_F0*/ {0xe9, 1061}, - /*II_D8_F0*/ {0xe9, 1061}, - /*II_D8_F0*/ {0xe9, 1061}, - /*II_D8_F8*/ {0xe9, 1067}, - /*II_D8_F8*/ {0xe9, 1067}, - /*II_D8_F8*/ {0xe9, 1067}, - /*II_D8_F8*/ {0xe9, 1067}, - /*II_D8_F8*/ {0xe9, 1067}, - /*II_D8_F8*/ {0xe9, 1067}, - /*II_D8_F8*/ {0xe9, 1067}, - /*II_D8_F8*/ {0xe9, 1067}, - /*II_D9_00*/ {0xe8, 1074}, - /*II_D9_02*/ {0xec, 1079}, - /*II_D9_03*/ {0xec, 1084}, - /*II_D9_04*/ {0xed, 1090}, - /*II_D9_05*/ {0xee, 1098}, - /*II_D9_C0*/ {0xea, 1074}, - /*II_D9_C0*/ {0xea, 1074}, - /*II_D9_C0*/ {0xea, 1074}, - /*II_D9_C0*/ {0xea, 1074}, - /*II_D9_C0*/ {0xea, 1074}, - /*II_D9_C0*/ {0xea, 1074}, - /*II_D9_C0*/ {0xea, 1074}, - /*II_D9_C0*/ {0xea, 1074}, - /*II_D9_C8*/ {0xea, 1105}, - /*II_D9_C9*/ {0xeb, 1105}, - /*II_D9_C8*/ {0xea, 1105}, - /*II_D9_C8*/ {0xea, 1105}, - /*II_D9_C8*/ {0xea, 1105}, - /*II_D9_C8*/ {0xea, 1105}, - /*II_D9_C8*/ {0xea, 1105}, - /*II_D9_C8*/ {0xea, 1105}, - /*II_D9_D0*/ {0xeb, 1111}, - /*II_D9_E0*/ {0xeb, 1117}, - /*II_D9_E1*/ {0xeb, 1123}, - /*II_D9_E4*/ {0xeb, 1129}, - /*II_D9_E5*/ {0xeb, 1135}, - /*II_D9_E8*/ {0xeb, 1141}, - /*II_D9_E9*/ {0xeb, 1147}, - /*II_D9_EA*/ {0xeb, 1155}, - /*II_D9_EB*/ {0xeb, 1163}, - /*II_D9_EC*/ {0xeb, 1170}, - /*II_D9_ED*/ {0xeb, 1178}, - /*II_D9_EE*/ {0xeb, 1186}, - /*II_D9_F0*/ {0xeb, 1192}, - /*II_D9_F1*/ {0xeb, 1199}, - /*II_D9_F2*/ {0xeb, 1206}, - /*II_D9_F3*/ {0xeb, 1213}, - /*II_D9_F4*/ {0xeb, 1221}, - /*II_D9_F5*/ {0xeb, 1230}, - /*II_D9_F6*/ {0xeb, 1238}, - /*II_D9_F7*/ {0xeb, 1247}, - /*II_D9_F8*/ {0xeb, 1256}, - /*II_D9_F9*/ {0xeb, 1263}, - /*II_D9_FA*/ {0xeb, 1272}, - /*II_D9_FB*/ {0xeb, 1279}, - /*II_D9_FC*/ {0xeb, 1288}, - /*II_D9_FD*/ {0xeb, 1297}, - /*II_D9_FE*/ {0xeb, 1305}, - /*II_D9_FF*/ {0xeb, 1311}, - /*II_DA_00*/ {0xe8, 1317}, - /*II_DA_01*/ {0xe8, 1324}, - /*II_DA_02*/ {0xe8, 1331}, - /*II_DA_03*/ {0xe8, 1338}, - /*II_DA_04*/ {0xe8, 1346}, - /*II_DA_05*/ {0xe8, 1353}, - /*II_DA_06*/ {0xe8, 1361}, - /*II_DA_07*/ {0xe8, 1368}, - /*II_DA_C0*/ {0xef, 1376}, - /*II_DA_C0*/ {0xef, 1376}, - /*II_DA_C0*/ {0xef, 1376}, - /*II_DA_C0*/ {0xef, 1376}, - /*II_DA_C0*/ {0xef, 1376}, - /*II_DA_C0*/ {0xef, 1376}, - /*II_DA_C0*/ {0xef, 1376}, - /*II_DA_C0*/ {0xef, 1376}, - /*II_DA_C8*/ {0xf0, 1384}, - /*II_DA_C8*/ {0xf0, 1384}, - /*II_DA_C8*/ {0xf0, 1384}, - /*II_DA_C8*/ {0xf0, 1384}, - /*II_DA_C8*/ {0xf0, 1384}, - /*II_DA_C8*/ {0xf0, 1384}, - /*II_DA_C8*/ {0xf0, 1384}, - /*II_DA_C8*/ {0xf0, 1384}, - /*II_DA_D0*/ {0xf1, 1392}, - /*II_DA_D0*/ {0xf1, 1392}, - /*II_DA_D0*/ {0xf1, 1392}, - /*II_DA_D0*/ {0xf1, 1392}, - /*II_DA_D0*/ {0xf1, 1392}, - /*II_DA_D0*/ {0xf1, 1392}, - /*II_DA_D0*/ {0xf1, 1392}, - /*II_DA_D0*/ {0xf1, 1392}, - /*II_DA_D8*/ {0xf2, 1401}, - /*II_DA_D8*/ {0xf2, 1401}, - /*II_DA_D8*/ {0xf2, 1401}, - /*II_DA_D8*/ {0xf2, 1401}, - /*II_DA_D8*/ {0xf2, 1401}, - /*II_DA_D8*/ {0xf2, 1401}, - /*II_DA_D8*/ {0xf2, 1401}, - /*II_DA_D8*/ {0xf2, 1401}, - /*II_DA_E9*/ {0xeb, 1409}, - /*II_DB_00*/ {0xe8, 1418}, - /*II_DB_01*/ {0xf3, 1424}, - /*II_DB_02*/ {0xec, 1432}, - /*II_DB_03*/ {0xec, 1438}, - /*II_DB_05*/ {0xf4, 1074}, - /*II_DB_07*/ {0xf5, 1084}, - /*II_DB_C0*/ {0xef, 1445}, - /*II_DB_C0*/ {0xef, 1445}, - /*II_DB_C0*/ {0xef, 1445}, - /*II_DB_C0*/ {0xef, 1445}, - /*II_DB_C0*/ {0xef, 1445}, - /*II_DB_C0*/ {0xef, 1445}, - /*II_DB_C0*/ {0xef, 1445}, - /*II_DB_C0*/ {0xef, 1445}, - /*II_DB_C8*/ {0xf0, 1454}, - /*II_DB_C8*/ {0xf0, 1454}, - /*II_DB_C8*/ {0xf0, 1454}, - /*II_DB_C8*/ {0xf0, 1454}, - /*II_DB_C8*/ {0xf0, 1454}, - /*II_DB_C8*/ {0xf0, 1454}, - /*II_DB_C8*/ {0xf0, 1454}, - /*II_DB_C8*/ {0xf0, 1454}, - /*II_DB_D0*/ {0xf1, 1463}, - /*II_DB_D0*/ {0xf1, 1463}, - /*II_DB_D0*/ {0xf1, 1463}, - /*II_DB_D0*/ {0xf1, 1463}, - /*II_DB_D0*/ {0xf1, 1463}, - /*II_DB_D0*/ {0xf1, 1463}, - /*II_DB_D0*/ {0xf1, 1463}, - /*II_DB_D0*/ {0xf1, 1463}, - /*II_DB_D8*/ {0xf2, 1473}, - /*II_DB_D8*/ {0xf2, 1473}, - /*II_DB_D8*/ {0xf2, 1473}, - /*II_DB_D8*/ {0xf2, 1473}, - /*II_DB_D8*/ {0xf2, 1473}, - /*II_DB_D8*/ {0xf2, 1473}, - /*II_DB_D8*/ {0xf2, 1473}, - /*II_DB_D8*/ {0xf2, 1473}, - /*II_DB_E0*/ {0xeb, 1482}, - /*II_DB_E1*/ {0xeb, 1488}, - /*II_DB_E4*/ {0xeb, 1496}, - /*II_DB_E8*/ {0xf6, 1504}, - /*II_DB_E8*/ {0xf6, 1504}, - /*II_DB_E8*/ {0xf6, 1504}, - /*II_DB_E8*/ {0xf6, 1504}, - /*II_DB_E8*/ {0xf6, 1504}, - /*II_DB_E8*/ {0xf6, 1504}, - /*II_DB_E8*/ {0xf6, 1504}, - /*II_DB_E8*/ {0xf6, 1504}, - /*II_DB_F0*/ {0xf7, 1512}, - /*II_DB_F0*/ {0xf7, 1512}, - /*II_DB_F0*/ {0xf7, 1512}, - /*II_DB_F0*/ {0xf7, 1512}, - /*II_DB_F0*/ {0xf7, 1512}, - /*II_DB_F0*/ {0xf7, 1512}, - /*II_DB_F0*/ {0xf7, 1512}, - /*II_DB_F0*/ {0xf7, 1512}, - /*II_DC_00*/ {0xf8, 1023}, - /*II_DC_01*/ {0xf8, 1029}, - /*II_DC_02*/ {0xf8, 1035}, - /*II_DC_03*/ {0xf8, 1041}, - /*II_DC_04*/ {0xf8, 1048}, - /*II_DC_05*/ {0xf8, 1054}, - /*II_DC_06*/ {0xf8, 1061}, - /*II_DC_07*/ {0xf8, 1067}, - /*II_DC_C0*/ {0xf9, 1023}, - /*II_DC_C0*/ {0xf9, 1023}, - /*II_DC_C0*/ {0xf9, 1023}, - /*II_DC_C0*/ {0xf9, 1023}, - /*II_DC_C0*/ {0xf9, 1023}, - /*II_DC_C0*/ {0xf9, 1023}, - /*II_DC_C0*/ {0xf9, 1023}, - /*II_DC_C0*/ {0xf9, 1023}, - /*II_DC_C8*/ {0xf9, 1029}, - /*II_DC_C8*/ {0xf9, 1029}, - /*II_DC_C8*/ {0xf9, 1029}, - /*II_DC_C8*/ {0xf9, 1029}, - /*II_DC_C8*/ {0xf9, 1029}, - /*II_DC_C8*/ {0xf9, 1029}, - /*II_DC_C8*/ {0xf9, 1029}, - /*II_DC_C8*/ {0xf9, 1029}, - /*II_DC_E0*/ {0xf9, 1054}, - /*II_DC_E0*/ {0xf9, 1054}, - /*II_DC_E0*/ {0xf9, 1054}, - /*II_DC_E0*/ {0xf9, 1054}, - /*II_DC_E0*/ {0xf9, 1054}, - /*II_DC_E0*/ {0xf9, 1054}, - /*II_DC_E0*/ {0xf9, 1054}, - /*II_DC_E0*/ {0xf9, 1054}, - /*II_DC_E8*/ {0xf9, 1048}, - /*II_DC_E8*/ {0xf9, 1048}, - /*II_DC_E8*/ {0xf9, 1048}, - /*II_DC_E8*/ {0xf9, 1048}, - /*II_DC_E8*/ {0xf9, 1048}, - /*II_DC_E8*/ {0xf9, 1048}, - /*II_DC_E8*/ {0xf9, 1048}, - /*II_DC_E8*/ {0xf9, 1048}, - /*II_DC_F0*/ {0xf9, 1067}, - /*II_DC_F0*/ {0xf9, 1067}, - /*II_DC_F0*/ {0xf9, 1067}, - /*II_DC_F0*/ {0xf9, 1067}, - /*II_DC_F0*/ {0xf9, 1067}, - /*II_DC_F0*/ {0xf9, 1067}, - /*II_DC_F0*/ {0xf9, 1067}, - /*II_DC_F0*/ {0xf9, 1067}, - /*II_DC_F8*/ {0xf9, 1061}, - /*II_DC_F8*/ {0xf9, 1061}, - /*II_DC_F8*/ {0xf9, 1061}, - /*II_DC_F8*/ {0xf9, 1061}, - /*II_DC_F8*/ {0xf9, 1061}, - /*II_DC_F8*/ {0xf9, 1061}, - /*II_DC_F8*/ {0xf9, 1061}, - /*II_DC_F8*/ {0xf9, 1061}, - /*II_DD_00*/ {0xf8, 1074}, - /*II_DD_01*/ {0xfa, 1424}, - /*II_DD_02*/ {0xfb, 1079}, - /*II_DD_03*/ {0xfb, 1084}, - /*II_DD_04*/ {0xed, 1519}, - /*II_DD_C0*/ {0xea, 1527}, - /*II_DD_C0*/ {0xea, 1527}, - /*II_DD_C0*/ {0xea, 1527}, - /*II_DD_C0*/ {0xea, 1527}, - /*II_DD_C0*/ {0xea, 1527}, - /*II_DD_C0*/ {0xea, 1527}, - /*II_DD_C0*/ {0xea, 1527}, - /*II_DD_C0*/ {0xea, 1527}, - /*II_DD_D0*/ {0xea, 1079}, - /*II_DD_D0*/ {0xea, 1079}, - /*II_DD_D0*/ {0xea, 1079}, - /*II_DD_D0*/ {0xea, 1079}, - /*II_DD_D0*/ {0xea, 1079}, - /*II_DD_D0*/ {0xea, 1079}, - /*II_DD_D0*/ {0xea, 1079}, - /*II_DD_D0*/ {0xea, 1079}, - /*II_DD_D8*/ {0xea, 1084}, - /*II_DD_D8*/ {0xea, 1084}, - /*II_DD_D8*/ {0xea, 1084}, - /*II_DD_D8*/ {0xea, 1084}, - /*II_DD_D8*/ {0xea, 1084}, - /*II_DD_D8*/ {0xea, 1084}, - /*II_DD_D8*/ {0xea, 1084}, - /*II_DD_D8*/ {0xea, 1084}, - /*II_DD_E0*/ {0xf9, 1534}, - /*II_DD_E1*/ {0xeb, 1534}, - /*II_DD_E0*/ {0xf9, 1534}, - /*II_DD_E0*/ {0xf9, 1534}, - /*II_DD_E0*/ {0xf9, 1534}, - /*II_DD_E0*/ {0xf9, 1534}, - /*II_DD_E0*/ {0xf9, 1534}, - /*II_DD_E0*/ {0xf9, 1534}, - /*II_DD_E8*/ {0xea, 1541}, - /*II_DD_E9*/ {0xeb, 1541}, - /*II_DD_E8*/ {0xea, 1541}, - /*II_DD_E8*/ {0xea, 1541}, - /*II_DD_E8*/ {0xea, 1541}, - /*II_DD_E8*/ {0xea, 1541}, - /*II_DD_E8*/ {0xea, 1541}, - /*II_DD_E8*/ {0xea, 1541}, - /*II_DE_00*/ {0xee, 1317}, - /*II_DE_01*/ {0xee, 1324}, - /*II_DE_02*/ {0xee, 1331}, - /*II_DE_03*/ {0xee, 1338}, - /*II_DE_04*/ {0xee, 1346}, - /*II_DE_05*/ {0xee, 1353}, - /*II_DE_06*/ {0xee, 1361}, - /*II_DE_07*/ {0xee, 1368}, - /*II_DE_C0*/ {0xf9, 1549}, - /*II_DE_C1*/ {0xeb, 1549}, - /*II_DE_C0*/ {0xf9, 1549}, - /*II_DE_C0*/ {0xf9, 1549}, - /*II_DE_C0*/ {0xf9, 1549}, - /*II_DE_C0*/ {0xf9, 1549}, - /*II_DE_C0*/ {0xf9, 1549}, - /*II_DE_C0*/ {0xf9, 1549}, - /*II_DE_C8*/ {0xf9, 1556}, - /*II_DE_C9*/ {0xeb, 1556}, - /*II_DE_C8*/ {0xf9, 1556}, - /*II_DE_C8*/ {0xf9, 1556}, - /*II_DE_C8*/ {0xf9, 1556}, - /*II_DE_C8*/ {0xf9, 1556}, - /*II_DE_C8*/ {0xf9, 1556}, - /*II_DE_C8*/ {0xf9, 1556}, - /*II_DE_D9*/ {0xeb, 1563}, - /*II_DE_E0*/ {0xf9, 1571}, - /*II_DE_E1*/ {0xeb, 1571}, - /*II_DE_E0*/ {0xf9, 1571}, - /*II_DE_E0*/ {0xf9, 1571}, - /*II_DE_E0*/ {0xf9, 1571}, - /*II_DE_E0*/ {0xf9, 1571}, - /*II_DE_E0*/ {0xf9, 1571}, - /*II_DE_E0*/ {0xf9, 1571}, - /*II_DE_E8*/ {0xf9, 1579}, - /*II_DE_E9*/ {0xeb, 1579}, - /*II_DE_E8*/ {0xf9, 1579}, - /*II_DE_E8*/ {0xf9, 1579}, - /*II_DE_E8*/ {0xf9, 1579}, - /*II_DE_E8*/ {0xf9, 1579}, - /*II_DE_E8*/ {0xf9, 1579}, - /*II_DE_E8*/ {0xf9, 1579}, - /*II_DE_F0*/ {0xf9, 1586}, - /*II_DE_F1*/ {0xeb, 1586}, - /*II_DE_F0*/ {0xf9, 1586}, - /*II_DE_F0*/ {0xf9, 1586}, - /*II_DE_F0*/ {0xf9, 1586}, - /*II_DE_F0*/ {0xf9, 1586}, - /*II_DE_F0*/ {0xf9, 1586}, - /*II_DE_F0*/ {0xf9, 1586}, - /*II_DE_F8*/ {0xf9, 1594}, - /*II_DE_F9*/ {0xeb, 1594}, - /*II_DE_F8*/ {0xf9, 1594}, - /*II_DE_F8*/ {0xf9, 1594}, - /*II_DE_F8*/ {0xf9, 1594}, - /*II_DE_F8*/ {0xf9, 1594}, - /*II_DE_F8*/ {0xf9, 1594}, - /*II_DE_F8*/ {0xf9, 1594}, - /*II_DF_00*/ {0xee, 1418}, - /*II_DF_01*/ {0xfc, 1424}, - /*II_DF_02*/ {0xfd, 1432}, - /*II_DF_03*/ {0xfd, 1438}, - /*II_DF_04*/ {0xf4, 1601}, - /*II_DF_05*/ {0xf8, 1418}, - /*II_DF_06*/ {0xf5, 1607}, - /*II_DF_07*/ {0xfb, 1438}, - /*II_DF_E8*/ {0xf6, 1614}, - /*II_DF_E8*/ {0xf6, 1614}, - /*II_DF_E8*/ {0xf6, 1614}, - /*II_DF_E8*/ {0xf6, 1614}, - /*II_DF_E8*/ {0xf6, 1614}, - /*II_DF_E8*/ {0xf6, 1614}, - /*II_DF_E8*/ {0xf6, 1614}, - /*II_DF_E8*/ {0xf6, 1614}, - /*II_DF_F0*/ {0xf6, 1623}, - /*II_DF_F0*/ {0xf6, 1623}, - /*II_DF_F0*/ {0xf6, 1623}, - /*II_DF_F0*/ {0xf6, 1623}, - /*II_DF_F0*/ {0xf6, 1623}, - /*II_DF_F0*/ {0xf6, 1623}, - /*II_DF_F0*/ {0xf6, 1623}, - /*II_DF_F0*/ {0xf6, 1623}, - /*II_F6_00*/ {0xfe, 206}, - /*II_F6_02*/ {0xff, 1631}, - /*II_F6_03*/ {0x100, 1636}, - /*II_F6_04*/ {0x101, 1641}, - /*II_F6_05*/ {0x101, 117}, - /*II_F6_06*/ {0x102, 1646}, - /*II_F6_07*/ {0x102, 1651}, - /*II_F7_00*/ {0x103, 206}, - /*II_F7_02*/ {0x104, 1631}, - /*II_F7_03*/ {0x105, 1636}, - /*II_F7_04*/ {0x106, 1641}, - /*II_F7_05*/ {0x106, 117}, - /*II_F7_06*/ {0x107, 1646}, - /*II_F7_07*/ {0x107, 1651}, - /*II_FE_00*/ {0x108, 81}, - /*II_FE_01*/ {0x108, 86}, - /*II_FF_00*/ {0x109, 81}, - /*II_FF_01*/ {0x109, 86}, - /*II_FF_02*/ {0x10a, 456}, - /*II_FF_03*/ {0x10b, 260}, - /*II_FF_04*/ {0x10c, 462}, - /*II_FF_05*/ {0x10d, 467}, - /*II_FF_06*/ {0x10e, 16}, - /*II_0F_00_00*/ {0x10f, 1657}, - /*II_0F_00_01*/ {0x110, 1663}, - /*II_0F_00_02*/ {0x110, 34436}, - /*II_0F_00_03*/ {0x111, 34442}, - /*II_0F_00_04*/ {0x112, 1679}, - /*II_0F_00_05*/ {0x112, 1685}, - /*II_0F_01_00*/ {0x113, 1691}, - /*II_0F_01_01*/ {0x113, 1697}, - /*II_0F_01_02*/ {0x113, 34471}, - /*II_0F_01_03*/ {0x113, 34477}, - /*II_0F_01_04*/ {0x114, 1715}, - /*II_0F_01_06*/ {0x115, 34489}, - /*II_0F_01_07*/ {0x116, 34495}, - /*II_0F_01_C1*/ {0x117, 1735}, - /*II_0F_01_C2*/ {0x117, 1743}, - /*II_0F_01_C3*/ {0x117, 1753}, - /*II_0F_01_C4*/ {0x117, 1763}, - /*II_0F_01_C8*/ {0x118, 1771}, - /*II_0F_01_C9*/ {0x118, 1780}, - /*II_0F_01_D0*/ {0x88, 1787}, - /*II_0F_01_D1*/ {0x88, 1795}, - /*II_0F_01_D4*/ {0x117, 1803}, - /*II_0F_01_D5*/ {0x119, 1811}, - /*II_0F_01_D8*/ {0x11a, 1817}, - /*II_0F_01_D9*/ {0x11b, 1824}, - /*II_0F_01_DA*/ {0x11c, 1833}, - /*II_0F_01_DB*/ {0x11c, 1841}, - /*II_0F_01_DC*/ {0x11b, 1849}, - /*II_0F_01_DD*/ {0x11b, 1855}, - /*II_0F_01_DE*/ {0x11c, 1861}, - /*II_0F_01_DF*/ {0x11d, 1869}, - /*II_0F_01_F8*/ {0x11e, 1878}, - /*II_0F_01_F9*/ {0x11e, 1886}, - /*II_0F_0D_00*/ {0x11f, 1894}, - /*II_0F_0D_01*/ {0x11f, 1904}, - /*II_0F_0F_0C*/ {0x120, 1915}, - /*II_0F_0F_0D*/ {0x121, 1922}, - /*II_0F_0F_1C*/ {0x120, 1929}, - /*II_0F_0F_1D*/ {0x121, 1936}, - /*II_0F_0F_8A*/ {0x120, 1943}, - /*II_0F_0F_8E*/ {0x120, 1951}, - /*II_0F_0F_90*/ {0x121, 1960}, - /*II_0F_0F_94*/ {0x121, 1969}, - /*II_0F_0F_96*/ {0x121, 1976}, - /*II_0F_0F_97*/ {0x121, 1983}, - /*II_0F_0F_9A*/ {0x121, 1992}, - /*II_0F_0F_9E*/ {0x121, 1999}, - /*II_0F_0F_A0*/ {0x121, 2006}, - /*II_0F_0F_A4*/ {0x121, 2015}, - /*II_0F_0F_A6*/ {0x121, 2022}, - /*II_0F_0F_A7*/ {0x121, 2032}, - /*II_0F_0F_AA*/ {0x121, 2042}, - /*II_0F_0F_AE*/ {0x121, 2050}, - /*II_0F_0F_B0*/ {0x121, 2057}, - /*II_0F_0F_B4*/ {0x121, 2066}, - /*II_0F_0F_B6*/ {0x121, 2073}, - /*II_0F_0F_B7*/ {0x121, 2083}, - /*II_0F_0F_BB*/ {0x120, 2092}, - /*II_0F_0F_BF*/ {0x121, 2100}, - /*II_0F_10*/ {0x122, 2109}, - /*II_66_0F_10*/ {0x123, 2117}, - /*II_F3_0F_10*/ {0x124, 2125}, - /*II_F2_0F_10*/ {0x125, 2132}, - /*II_0F_11*/ {0x12a, 2109}, - /*II_66_0F_11*/ {0x12b, 2117}, - /*II_F3_0F_11*/ {0x12c, 2125}, - /*II_F2_0F_11*/ {0x12d, 2132}, - /*II_66_0F_12*/ {0x132, 2190}, - /*II_F3_0F_12*/ {0x133, 2198}, - /*II_F2_0F_12*/ {0x133, 2208}, - /*II_0F_13*/ {0x137, 2182}, - /*II_66_0F_13*/ {0x138, 2190}, - /*II_0F_14*/ {0x13a, 2266}, - /*II_66_0F_14*/ {0x13b, 2276}, - /*II_0F_15*/ {0x13a, 2308}, - /*II_66_0F_15*/ {0x13b, 2318}, - /*II_66_0F_16*/ {0x132, 2367}, - /*II_F3_0F_16*/ {0x13d, 2375}, - /*II_0F_17*/ {0x137, 2359}, - /*II_66_0F_17*/ {0x138, 2367}, - /*II_0F_18_00*/ {0x13e, 2424}, - /*II_0F_18_01*/ {0x13e, 2437}, - /*II_0F_18_02*/ {0x13e, 2449}, - /*II_0F_18_03*/ {0x13e, 2461}, - /*II_0F_28*/ {0x122, 2473}, - /*II_66_0F_28*/ {0x123, 2481}, - /*II_0F_29*/ {0x12a, 2473}, - /*II_66_0F_29*/ {0x12b, 2481}, - /*II_0F_2A*/ {0x13f, 2507}, - /*II_66_0F_2A*/ {0x140, 2517}, - /*II_F3_0F_2A*/ {0x141, 2527}, - /*II_F2_0F_2A*/ {0x142, 2537}, - /*II_0F_2B*/ {0x143, 2569}, - /*II_66_0F_2B*/ {0x144, 2578}, - /*II_F3_0F_2B*/ {0x145, 2587}, - /*II_F2_0F_2B*/ {0x146, 2596}, - /*II_0F_2C*/ {0x148, 2625}, - /*II_66_0F_2C*/ {0x149, 2636}, - /*II_F3_0F_2C*/ {0x14a, 2647}, - /*II_F2_0F_2C*/ {0x14b, 2658}, - /*II_0F_2D*/ {0x148, 2693}, - /*II_66_0F_2D*/ {0x13b, 2703}, - /*II_F3_0F_2D*/ {0x14a, 2713}, - /*II_F2_0F_2D*/ {0x14b, 2723}, - /*II_0F_2E*/ {0x14d, 2755}, - /*II_66_0F_2E*/ {0x14e, 2764}, - /*II_0F_2F*/ {0x14d, 2793}, - /*II_66_0F_2F*/ {0x14e, 2801}, - /*II_0F_50*/ {0x151, 2827}, - /*II_66_0F_50*/ {0x152, 2837}, - /*II_0F_51*/ {0x13a, 2869}, - /*II_66_0F_51*/ {0x13b, 2877}, - /*II_F3_0F_51*/ {0x154, 2885}, - /*II_F2_0F_51*/ {0x14e, 2893}, - /*II_0F_52*/ {0x13a, 2937}, - /*II_F3_0F_52*/ {0x154, 2946}, - /*II_0F_53*/ {0x13a, 2975}, - /*II_F3_0F_53*/ {0x154, 2982}, - /*II_0F_54*/ {0x13a, 3005}, - /*II_66_0F_54*/ {0x13b, 3012}, - /*II_0F_55*/ {0x13a, 3035}, - /*II_66_0F_55*/ {0x13b, 3043}, - /*II_0F_56*/ {0x13a, 3069}, - /*II_66_0F_56*/ {0x13b, 3075}, - /*II_0F_57*/ {0x13a, 3095}, - /*II_66_0F_57*/ {0x13b, 3102}, - /*II_0F_58*/ {0x13a, 3125}, - /*II_66_0F_58*/ {0x13b, 3132}, - /*II_F3_0F_58*/ {0x154, 3139}, - /*II_F2_0F_58*/ {0x14e, 3146}, - /*II_0F_59*/ {0x13a, 3185}, - /*II_66_0F_59*/ {0x13b, 3192}, - /*II_F3_0F_59*/ {0x154, 3199}, - /*II_F2_0F_59*/ {0x14e, 3206}, - /*II_0F_5A*/ {0x14e, 3245}, - /*II_66_0F_5A*/ {0x13b, 3255}, - /*II_F3_0F_5A*/ {0x155, 3265}, - /*II_F2_0F_5A*/ {0x14e, 3275}, - /*II_0F_5B*/ {0x13b, 3329}, - /*II_66_0F_5B*/ {0x13b, 3339}, - /*II_F3_0F_5B*/ {0x13b, 3349}, - /*II_0F_5C*/ {0x13a, 3394}, - /*II_66_0F_5C*/ {0x13b, 3401}, - /*II_F3_0F_5C*/ {0x154, 3408}, - /*II_F2_0F_5C*/ {0x14e, 3415}, - /*II_0F_5D*/ {0x13a, 3454}, - /*II_66_0F_5D*/ {0x13b, 3461}, - /*II_F3_0F_5D*/ {0x154, 3468}, - /*II_F2_0F_5D*/ {0x14e, 3475}, - /*II_0F_5E*/ {0x13a, 3514}, - /*II_66_0F_5E*/ {0x13b, 3521}, - /*II_F3_0F_5E*/ {0x154, 3528}, - /*II_F2_0F_5E*/ {0x14e, 3535}, - /*II_0F_5F*/ {0x13a, 3574}, - /*II_66_0F_5F*/ {0x13b, 3581}, - /*II_F3_0F_5F*/ {0x154, 3588}, - /*II_F2_0F_5F*/ {0x14e, 3595}, - /*II_0F_60*/ {0x158, 3634}, - /*II_66_0F_60*/ {0x13b, 3634}, - /*II_0F_61*/ {0x158, 3657}, - /*II_66_0F_61*/ {0x13b, 3657}, - /*II_0F_62*/ {0x158, 3680}, - /*II_66_0F_62*/ {0x13b, 3680}, - /*II_0F_63*/ {0x159, 3703}, - /*II_66_0F_63*/ {0x13b, 3703}, - /*II_0F_64*/ {0x159, 3724}, - /*II_66_0F_64*/ {0x13b, 3724}, - /*II_0F_65*/ {0x159, 3743}, - /*II_66_0F_65*/ {0x13b, 3743}, - /*II_0F_66*/ {0x159, 3762}, - /*II_66_0F_66*/ {0x13b, 3762}, - /*II_0F_67*/ {0x159, 3781}, - /*II_66_0F_67*/ {0x13b, 3781}, - /*II_0F_68*/ {0x159, 3802}, - /*II_66_0F_68*/ {0x13b, 3802}, - /*II_0F_69*/ {0x159, 3825}, - /*II_66_0F_69*/ {0x13b, 3825}, - /*II_0F_6A*/ {0x159, 3848}, - /*II_66_0F_6A*/ {0x13b, 3848}, - /*II_0F_6B*/ {0x159, 3871}, - /*II_66_0F_6B*/ {0x13b, 3871}, - /*II_66_0F_6C*/ {0x13b, 3892}, - /*II_66_0F_6D*/ {0x13b, 3917}, - /*II_0F_6F*/ {0x15d, 3948}, - /*II_66_0F_6F*/ {0x123, 3968}, - /*II_F3_0F_6F*/ {0x123, 3976}, - /*II_0F_74*/ {0x159, 4065}, - /*II_66_0F_74*/ {0x13b, 4065}, - /*II_0F_75*/ {0x159, 4084}, - /*II_66_0F_75*/ {0x13b, 4084}, - /*II_0F_76*/ {0x159, 4103}, - /*II_66_0F_76*/ {0x13b, 4103}, - /*II_0F_77*/ {0x161, 4122}, - /*II_0F_78*/ {0x163, 4150}, - /*II_0F_79*/ {0x166, 4174}, - /*II_66_0F_79*/ {0x167, 4158}, - /*II_F2_0F_79*/ {0x168, 4165}, - /*II_0F_7A_30*/ {0x169, 4183}, - /*II_0F_7A_31*/ {0x16a, 4193}, - /*II_66_0F_7C*/ {0x16b, 4203}, - /*II_F2_0F_7C*/ {0x16b, 4211}, - /*II_66_0F_7D*/ {0x16b, 4237}, - /*II_F2_0F_7D*/ {0x16b, 4245}, - /*II_F3_0F_7E*/ {0x125, 3948}, - /*II_0F_7F*/ {0x16f, 3948}, - /*II_66_0F_7F*/ {0x12b, 3968}, - /*II_F3_0F_7F*/ {0x12b, 3976}, - /*II_F3_0F_B8*/ {0x173, 4360}, - /*II_0F_BA_04*/ {0x174, 872}, - /*II_0F_BA_05*/ {0x175, 887}, - /*II_0F_BA_06*/ {0x175, 912}, - /*II_0F_BA_07*/ {0x175, 934}, - /*II_0F_BC*/ {0x176, 4368}, - /*II_F3_0F_BC*/ {0x177, 4373}, - /*II_0F_BD*/ {0x176, 4380}, - /*II_F3_0F_BD*/ {0x178, 4385}, - /*II_0F_C7_07*/ {0x188, 6407}, - /*II_66_0F_D0*/ {0x16b, 6416}, - /*II_F2_0F_D0*/ {0x16b, 6426}, - /*II_0F_D1*/ {0x159, 6458}, - /*II_66_0F_D1*/ {0x13b, 6458}, - /*II_0F_D2*/ {0x159, 6473}, - /*II_66_0F_D2*/ {0x13b, 6473}, - /*II_0F_D3*/ {0x159, 6488}, - /*II_66_0F_D3*/ {0x13b, 6488}, - /*II_0F_D4*/ {0x14e, 6503}, - /*II_66_0F_D4*/ {0x13b, 6503}, - /*II_0F_D5*/ {0x159, 6518}, - /*II_66_0F_D5*/ {0x13b, 6518}, - /*II_66_0F_D6*/ {0x12d, 3948}, - /*II_F3_0F_D6*/ {0x189, 6535}, - /*II_F2_0F_D6*/ {0x18a, 6544}, - /*II_0F_D7*/ {0x18c, 6553}, - /*II_66_0F_D7*/ {0x18d, 6553}, - /*II_0F_D8*/ {0x159, 6574}, - /*II_66_0F_D8*/ {0x13b, 6574}, - /*II_0F_D9*/ {0x159, 6593}, - /*II_66_0F_D9*/ {0x13b, 6593}, - /*II_0F_DA*/ {0x18f, 6612}, - /*II_66_0F_DA*/ {0x13b, 6612}, - /*II_0F_DB*/ {0x159, 6629}, - /*II_66_0F_DB*/ {0x13b, 6629}, - /*II_0F_DC*/ {0x159, 6642}, - /*II_66_0F_DC*/ {0x13b, 6642}, - /*II_0F_DD*/ {0x159, 6661}, - /*II_66_0F_DD*/ {0x13b, 6661}, - /*II_0F_DE*/ {0x18f, 6670}, - /*II_66_0F_DE*/ {0x13b, 6670}, - /*II_0F_DF*/ {0x159, 6687}, - /*II_66_0F_DF*/ {0x13b, 6687}, - /*II_0F_E0*/ {0x18f, 6702}, - /*II_66_0F_E0*/ {0x13b, 6702}, - /*II_0F_E1*/ {0x159, 6717}, - /*II_66_0F_E1*/ {0x13b, 6717}, - /*II_0F_E2*/ {0x159, 6732}, - /*II_66_0F_E2*/ {0x13b, 6732}, - /*II_0F_E3*/ {0x18f, 6747}, - /*II_66_0F_E3*/ {0x13b, 6747}, - /*II_0F_E4*/ {0x18f, 6762}, - /*II_66_0F_E4*/ {0x13b, 6762}, - /*II_0F_E5*/ {0x159, 6781}, - /*II_66_0F_E5*/ {0x13b, 6781}, - /*II_66_0F_E6*/ {0x13b, 6798}, - /*II_F3_0F_E6*/ {0x14e, 6809}, - /*II_F2_0F_E6*/ {0x13b, 6819}, - /*II_0F_E7*/ {0x190, 6863}, - /*II_66_0F_E7*/ {0x144, 6871}, - /*II_0F_E8*/ {0x159, 6890}, - /*II_66_0F_E8*/ {0x13b, 6890}, - /*II_0F_E9*/ {0x159, 6907}, - /*II_66_0F_E9*/ {0x13b, 6907}, - /*II_0F_EA*/ {0x18f, 6924}, - /*II_66_0F_EA*/ {0x13b, 6924}, - /*II_0F_EB*/ {0x159, 6941}, - /*II_66_0F_EB*/ {0x13b, 6941}, - /*II_0F_EC*/ {0x159, 6952}, - /*II_66_0F_EC*/ {0x13b, 6952}, - /*II_0F_ED*/ {0x159, 6969}, - /*II_66_0F_ED*/ {0x13b, 6969}, - /*II_0F_EE*/ {0x18f, 6986}, - /*II_66_0F_EE*/ {0x13b, 6986}, - /*II_0F_EF*/ {0x159, 7003}, - /*II_66_0F_EF*/ {0x13b, 7003}, - /*II_F2_0F_F0*/ {0x191, 7016}, - /*II_0F_F1*/ {0x159, 7031}, - /*II_66_0F_F1*/ {0x13b, 7031}, - /*II_0F_F2*/ {0x159, 7046}, - /*II_66_0F_F2*/ {0x13b, 7046}, - /*II_0F_F3*/ {0x159, 7061}, - /*II_66_0F_F3*/ {0x13b, 7061}, - /*II_0F_F4*/ {0x193, 7076}, - /*II_66_0F_F4*/ {0x13b, 7076}, - /*II_0F_F5*/ {0x159, 7095}, - /*II_66_0F_F5*/ {0x13b, 7095}, - /*II_0F_F6*/ {0x18f, 7114}, - /*II_66_0F_F6*/ {0x13b, 7114}, - /*II_0F_F7*/ {0x194, 7131}, - /*II_66_0F_F7*/ {0x195, 7141}, - /*II_0F_F8*/ {0x159, 7166}, - /*II_66_0F_F8*/ {0x13b, 7166}, - /*II_0F_F9*/ {0x159, 7181}, - /*II_66_0F_F9*/ {0x13b, 7181}, - /*II_0F_FA*/ {0x159, 7196}, - /*II_66_0F_FA*/ {0x13b, 7196}, - /*II_0F_FB*/ {0x193, 7211}, - /*II_66_0F_FB*/ {0x13b, 7211}, - /*II_0F_FC*/ {0x159, 7226}, - /*II_66_0F_FC*/ {0x13b, 7226}, - /*II_0F_FD*/ {0x159, 7241}, - /*II_66_0F_FD*/ {0x13b, 7241}, - /*II_0F_FE*/ {0x159, 7256}, - /*II_66_0F_FE*/ {0x13b, 7256}, - /*II_D9_06*/ {0x197, 7271}, - /*II_9B_D9_06*/ {0x198, 7280}, - /*II_D9_07*/ {0xfd, 7288}, - /*II_9B_D9_07*/ {0x199, 7296}, - /*II_DB_E2*/ {0xeb, 7303}, - /*II_9B_DB_E2*/ {0x19a, 7311}, - /*II_DB_E3*/ {0xeb, 7318}, - /*II_9B_DB_E3*/ {0x19a, 7326}, - /*II_DD_06*/ {0x197, 7333}, - /*II_9B_DD_06*/ {0x198, 7341}, - /*II_DD_07*/ {0xfd, 7348}, - /*II_9B_DD_07*/ {0x199, 7356}, - /*II_DF_E0*/ {0x19b, 7348}, - /*II_9B_DF_E0*/ {0x19c, 7356}, - /*II_0F_38_00*/ {0x19d, 7363}, - /*II_66_0F_38_00*/ {0x19e, 7363}, - /*II_0F_38_01*/ {0x19d, 7380}, - /*II_66_0F_38_01*/ {0x19e, 7380}, - /*II_0F_38_02*/ {0x19d, 7397}, - /*II_66_0F_38_02*/ {0x19e, 7397}, - /*II_0F_38_03*/ {0x19d, 7414}, - /*II_66_0F_38_03*/ {0x19e, 7414}, - /*II_0F_38_04*/ {0x19d, 7433}, - /*II_66_0F_38_04*/ {0x19e, 7433}, - /*II_0F_38_05*/ {0x19d, 7456}, - /*II_66_0F_38_05*/ {0x19e, 7456}, - /*II_0F_38_06*/ {0x19d, 7473}, - /*II_66_0F_38_06*/ {0x19e, 7473}, - /*II_0F_38_07*/ {0x19d, 7490}, - /*II_66_0F_38_07*/ {0x19e, 7490}, - /*II_0F_38_08*/ {0x19d, 7509}, - /*II_66_0F_38_08*/ {0x19e, 7509}, - /*II_0F_38_09*/ {0x19d, 7526}, - /*II_66_0F_38_09*/ {0x19e, 7526}, - /*II_0F_38_0A*/ {0x19d, 7543}, - /*II_66_0F_38_0A*/ {0x19e, 7543}, - /*II_0F_38_0B*/ {0x19d, 7560}, - /*II_66_0F_38_0B*/ {0x19e, 7560}, - /*II_66_0F_38_17*/ {0x1a0, 7651}, - /*II_0F_38_1C*/ {0x19d, 7710}, - /*II_66_0F_38_1C*/ {0x19e, 7710}, - /*II_0F_38_1D*/ {0x19d, 7725}, - /*II_66_0F_38_1D*/ {0x19e, 7725}, - /*II_0F_38_1E*/ {0x19d, 7740}, - /*II_66_0F_38_1E*/ {0x19e, 7740}, - /*II_66_0F_38_20*/ {0x1a5, 7755}, - /*II_66_0F_38_21*/ {0x1a6, 7776}, - /*II_66_0F_38_22*/ {0x1a7, 7797}, - /*II_66_0F_38_23*/ {0x1a5, 7818}, - /*II_66_0F_38_24*/ {0x1a6, 7839}, - /*II_66_0F_38_25*/ {0x1a5, 7860}, - /*II_66_0F_38_28*/ {0x1a9, 7881}, - /*II_66_0F_38_29*/ {0x1a9, 7898}, - /*II_66_0F_38_2A*/ {0x1aa, 7917}, - /*II_66_0F_38_2B*/ {0x1a9, 7938}, - /*II_66_0F_38_30*/ {0x1a5, 7983}, - /*II_66_0F_38_31*/ {0x1a6, 8004}, - /*II_66_0F_38_32*/ {0x1a7, 8025}, - /*II_66_0F_38_33*/ {0x1a5, 8046}, - /*II_66_0F_38_34*/ {0x1a6, 8067}, - /*II_66_0F_38_35*/ {0x1a5, 8088}, - /*II_66_0F_38_37*/ {0x1a0, 8109}, - /*II_66_0F_38_38*/ {0x1a9, 8128}, - /*II_66_0F_38_39*/ {0x1a9, 8145}, - /*II_66_0F_38_3A*/ {0x1a9, 8162}, - /*II_66_0F_38_3B*/ {0x1a9, 8179}, - /*II_66_0F_38_3C*/ {0x1a9, 8196}, - /*II_66_0F_38_3D*/ {0x1a9, 8213}, - /*II_66_0F_38_3E*/ {0x1a9, 8230}, - /*II_66_0F_38_3F*/ {0x1a9, 8247}, - /*II_66_0F_38_40*/ {0x1a9, 8264}, - /*II_66_0F_38_41*/ {0x1a9, 8281}, - /*II_66_0F_38_80*/ {0x1ad, 8306}, - /*II_66_0F_38_81*/ {0x1ad, 8314}, - /*II_66_0F_38_82*/ {0x1ad, 8323}, - /*II_66_0F_38_DB*/ {0x1b0, 9172}, - /*II_66_0F_38_DC*/ {0x1b0, 9189}, - /*II_66_0F_38_DD*/ {0x1b0, 9206}, - /*II_66_0F_38_DE*/ {0x1b0, 9231}, - /*II_66_0F_38_DF*/ {0x1b0, 9248}, - /*II_0F_38_F0*/ {0x1b3, 9273}, - /*II_F2_0F_38_F0*/ {0x1b4, 9280}, - /*II_0F_38_F1*/ {0x1b5, 9273}, - /*II_F2_0F_38_F1*/ {0x1b6, 9280}, - /*II_0F_71_02*/ {0x1cd, 6458}, - /*II_66_0F_71_02*/ {0x1ce, 6458}, - /*II_0F_71_04*/ {0x1cd, 6717}, - /*II_66_0F_71_04*/ {0x1ce, 6717}, - /*II_0F_71_06*/ {0x1cd, 7031}, - /*II_66_0F_71_06*/ {0x1ce, 7031}, - /*II_0F_72_02*/ {0x1cd, 6473}, - /*II_66_0F_72_02*/ {0x1ce, 6473}, - /*II_0F_72_04*/ {0x1cd, 6732}, - /*II_66_0F_72_04*/ {0x1ce, 6732}, - /*II_0F_72_06*/ {0x1cd, 7046}, - /*II_66_0F_72_06*/ {0x1ce, 7046}, - /*II_0F_73_02*/ {0x1cd, 6488}, - /*II_66_0F_73_02*/ {0x1ce, 6488}, - /*II_66_0F_73_03*/ {0x1ce, 9852}, - /*II_0F_73_06*/ {0x1cd, 7061}, - /*II_66_0F_73_06*/ {0x1ce, 7061}, - /*II_66_0F_73_07*/ {0x1ce, 9869}, - /*II_F3_0F_AE_00*/ {0x1d0, 9904}, - /*II_F3_0F_AE_01*/ {0x1d0, 9934}, - /*II_0F_AE_02*/ {0x1d1, 9944}, - /*II_F3_0F_AE_02*/ {0x1d0, 9953}, - /*II_0F_AE_03*/ {0x1d1, 9973}, - /*II_F3_0F_AE_03*/ {0x1d0, 9982}, - /*II_0F_C7_06*/ {0x1d3, 10002}, - /*II_66_0F_C7_06*/ {0x188, 10011}, - /*II_F3_0F_C7_06*/ {0x188, 10020} + /*II_F4*/ {0x83, 482}, + /*II_F5*/ {0x84, 487}, + /*II_F8*/ {0x84, 492}, + /*II_F9*/ {0x84, 497}, + /*II_FA*/ {0x85, 502}, + /*II_FB*/ {0x85, 507}, + /*II_FC*/ {0x86, 512}, + /*II_FD*/ {0x86, 517}, + /*II_0F_02*/ {0x87, 522}, + /*II_0F_03*/ {0x87, 527}, + /*II_0F_05*/ {0x88, 532}, + /*II_0F_06*/ {0x89, 541}, + /*II_0F_07*/ {0x88, 547}, + /*II_0F_08*/ {0x89, 555}, + /*II_0F_09*/ {0x89, 561}, + /*II_0F_0B*/ {0x8a, 569}, + /*II_0F_0E*/ {0x8b, 574}, + /*II_0F_1F*/ {0x8c, 581}, + /*II_0F_20*/ {0x8d, 218}, + /*II_0F_21*/ {0x8e, 218}, + /*II_0F_22*/ {0x8f, 218}, + /*II_0F_23*/ {0x90, 218}, + /*II_0F_30*/ {0x89, 586}, + /*II_0F_31*/ {0x89, 593}, + /*II_0F_32*/ {0x89, 600}, + /*II_0F_33*/ {0x89, 607}, + /*II_0F_34*/ {0x88, 614}, + /*II_0F_35*/ {0x88, 624}, + /*II_0F_37*/ {0x91, 633}, + /*II_0F_40*/ {0x92, 641}, + /*II_0F_41*/ {0x92, 648}, + /*II_0F_42*/ {0x93, 656}, + /*II_0F_43*/ {0x93, 663}, + /*II_0F_44*/ {0x94, 671}, + /*II_0F_45*/ {0x94, 678}, + /*II_0F_46*/ {0x95, 686}, + /*II_0F_47*/ {0x95, 694}, + /*II_0F_48*/ {0x96, 701}, + /*II_0F_49*/ {0x96, 708}, + /*II_0F_4A*/ {0x97, 716}, + /*II_0F_4B*/ {0x97, 723}, + /*II_0F_4C*/ {0x98, 731}, + /*II_0F_4D*/ {0x98, 738}, + /*II_0F_4E*/ {0x99, 746}, + /*II_0F_4F*/ {0x99, 754}, + /*II_0F_80*/ {0x9a, 134}, + /*II_0F_81*/ {0x9a, 138}, + /*II_0F_82*/ {0x9b, 143}, + /*II_0F_83*/ {0x9b, 147}, + /*II_0F_84*/ {0x9c, 152}, + /*II_0F_85*/ {0x9c, 156}, + /*II_0F_86*/ {0x9d, 161}, + /*II_0F_87*/ {0x9d, 166}, + /*II_0F_88*/ {0x9e, 170}, + /*II_0F_89*/ {0x9e, 174}, + /*II_0F_8A*/ {0x9f, 179}, + /*II_0F_8B*/ {0x9f, 183}, + /*II_0F_8C*/ {0xa0, 188}, + /*II_0F_8D*/ {0xa0, 192}, + /*II_0F_8E*/ {0xa1, 197}, + /*II_0F_8F*/ {0xa1, 202}, + /*II_0F_90*/ {0xa2, 761}, + /*II_0F_91*/ {0xa2, 767}, + /*II_0F_92*/ {0xa3, 774}, + /*II_0F_93*/ {0xa3, 780}, + /*II_0F_94*/ {0xa4, 787}, + /*II_0F_95*/ {0xa4, 793}, + /*II_0F_96*/ {0xa5, 800}, + /*II_0F_97*/ {0xa5, 807}, + /*II_0F_98*/ {0xa6, 813}, + /*II_0F_99*/ {0xa6, 819}, + /*II_0F_9A*/ {0xa7, 826}, + /*II_0F_9B*/ {0xa7, 832}, + /*II_0F_9C*/ {0xa8, 839}, + /*II_0F_9D*/ {0xa8, 845}, + /*II_0F_9E*/ {0xa9, 852}, + /*II_0F_9F*/ {0xa9, 859}, + /*II_0F_A0*/ {0xaa, 16}, + /*II_0F_A1*/ {0xab, 22}, + /*II_0F_A2*/ {0x91, 865}, + /*II_0F_A3*/ {0xac, 872}, + /*II_0F_A8*/ {0xae, 16}, + /*II_0F_A9*/ {0xaf, 22}, + /*II_0F_AA*/ {0xb0, 882}, + /*II_0F_AB*/ {0xb1, 887}, + /*II_0F_AF*/ {0xb2, 117}, + /*II_0F_B0*/ {0xb3, 898}, + /*II_0F_B1*/ {0xb4, 898}, + /*II_0F_B2*/ {0xb5, 907}, + /*II_0F_B3*/ {0xb1, 912}, + /*II_0F_B4*/ {0xb5, 917}, + /*II_0F_B5*/ {0xb5, 922}, + /*II_0F_B6*/ {0xb6, 927}, + /*II_0F_B7*/ {0xb7, 927}, + /*II_0F_B9*/ {0x8a, 569}, + /*II_0F_BB*/ {0xb1, 934}, + /*II_0F_BE*/ {0xb6, 939}, + /*II_0F_BF*/ {0xb7, 939}, + /*II_0F_C0*/ {0xb3, 946}, + /*II_0F_C1*/ {0xb4, 946}, + /*II_0F_C3*/ {0xb8, 952}, + /*II_0F_C8*/ {0xb9, 960}, + /*II_0F_C8*/ {0xb9, 960}, + /*II_0F_C8*/ {0xb9, 960}, + /*II_0F_C8*/ {0xb9, 960}, + /*II_0F_C8*/ {0xb9, 960}, + /*II_0F_C8*/ {0xb9, 960}, + /*II_0F_C8*/ {0xb9, 960}, + /*II_0F_C8*/ {0xb9, 960}, + /*II_80_00*/ {0xba, 11}, + /*II_80_01*/ {0xbb, 27}, + /*II_80_02*/ {0xbc, 31}, + /*II_80_03*/ {0xbc, 36}, + /*II_80_04*/ {0xbd, 41}, + /*II_80_05*/ {0xba, 51}, + /*II_80_06*/ {0xbe, 61}, + /*II_80_07*/ {0xbf, 71}, + /*II_81_00*/ {0xc0, 11}, + /*II_81_01*/ {0xc1, 27}, + /*II_81_02*/ {0xc2, 31}, + /*II_81_03*/ {0xc2, 36}, + /*II_81_04*/ {0xc3, 41}, + /*II_81_05*/ {0xc0, 51}, + /*II_81_06*/ {0xc4, 61}, + /*II_81_07*/ {0xc5, 71}, + /*II_82_00*/ {0xc6, 11}, + /*II_82_01*/ {0xc7, 27}, + /*II_82_02*/ {0xc8, 31}, + /*II_82_03*/ {0xc8, 36}, + /*II_82_04*/ {0xc9, 41}, + /*II_82_05*/ {0xc6, 51}, + /*II_82_06*/ {0xca, 61}, + /*II_82_07*/ {0xcb, 71}, + /*II_83_00*/ {0xcc, 11}, + /*II_83_01*/ {0xcd, 27}, + /*II_83_02*/ {0xce, 31}, + /*II_83_03*/ {0xce, 36}, + /*II_83_04*/ {0xcf, 41}, + /*II_83_05*/ {0xcc, 51}, + /*II_83_06*/ {0xd0, 61}, + /*II_83_07*/ {0xd1, 71}, + /*II_8F_00*/ {0xd2, 22}, + /*II_C0_00*/ {0xd3, 967}, + /*II_C0_01*/ {0xd3, 972}, + /*II_C0_02*/ {0xd4, 977}, + /*II_C0_03*/ {0xd4, 982}, + /*II_C0_04*/ {0xd5, 987}, + /*II_C0_05*/ {0xd5, 992}, + /*II_C0_06*/ {0xd5, 997}, + /*II_C0_07*/ {0xd5, 1002}, + /*II_C1_00*/ {0xd6, 967}, + /*II_C1_01*/ {0xd6, 972}, + /*II_C1_02*/ {0xd7, 977}, + /*II_C1_03*/ {0xd7, 982}, + /*II_C1_04*/ {0xd8, 987}, + /*II_C1_05*/ {0xd8, 992}, + /*II_C1_06*/ {0xd8, 997}, + /*II_C1_07*/ {0xd8, 1002}, + /*II_C6_00*/ {0xd9, 218}, + /*II_C6_F8*/ {0xda, 1007}, + /*II_C7_00*/ {0xdb, 218}, + /*II_C7_F8*/ {0xdc, 1015}, + /*II_D0_00*/ {0xdd, 967}, + /*II_D0_01*/ {0xdd, 972}, + /*II_D0_02*/ {0xde, 977}, + /*II_D0_03*/ {0xde, 982}, + /*II_D0_04*/ {0xdf, 987}, + /*II_D0_05*/ {0xdf, 992}, + /*II_D0_06*/ {0xdf, 997}, + /*II_D0_07*/ {0xdf, 1002}, + /*II_D1_00*/ {0xe0, 967}, + /*II_D1_01*/ {0xe0, 972}, + /*II_D1_02*/ {0xe1, 977}, + /*II_D1_03*/ {0xe1, 982}, + /*II_D1_04*/ {0xe2, 987}, + /*II_D1_05*/ {0xe2, 992}, + /*II_D1_06*/ {0xe2, 997}, + /*II_D1_07*/ {0xe2, 1002}, + /*II_D2_00*/ {0xe3, 967}, + /*II_D2_01*/ {0xe3, 972}, + /*II_D2_02*/ {0xe4, 977}, + /*II_D2_03*/ {0xe4, 982}, + /*II_D2_04*/ {0xe5, 987}, + /*II_D2_05*/ {0xe5, 992}, + /*II_D2_06*/ {0xe5, 997}, + /*II_D2_07*/ {0xe5, 1002}, + /*II_D3_00*/ {0xe6, 967}, + /*II_D3_01*/ {0xe6, 972}, + /*II_D3_02*/ {0xe7, 977}, + /*II_D3_03*/ {0xe7, 982}, + /*II_D3_04*/ {0xe8, 987}, + /*II_D3_05*/ {0xe8, 992}, + /*II_D3_06*/ {0xe8, 997}, + /*II_D3_07*/ {0xe8, 1002}, + /*II_D8_00*/ {0xe9, 1023}, + /*II_D8_01*/ {0xe9, 1029}, + /*II_D8_02*/ {0xe9, 1035}, + /*II_D8_03*/ {0xe9, 1041}, + /*II_D8_04*/ {0xe9, 1048}, + /*II_D8_05*/ {0xe9, 1054}, + /*II_D8_06*/ {0xe9, 1061}, + /*II_D8_07*/ {0xe9, 1067}, + /*II_D8_C0*/ {0xea, 1023}, + /*II_D8_C0*/ {0xea, 1023}, + /*II_D8_C0*/ {0xea, 1023}, + /*II_D8_C0*/ {0xea, 1023}, + /*II_D8_C0*/ {0xea, 1023}, + /*II_D8_C0*/ {0xea, 1023}, + /*II_D8_C0*/ {0xea, 1023}, + /*II_D8_C0*/ {0xea, 1023}, + /*II_D8_C8*/ {0xea, 1029}, + /*II_D8_C8*/ {0xea, 1029}, + /*II_D8_C8*/ {0xea, 1029}, + /*II_D8_C8*/ {0xea, 1029}, + /*II_D8_C8*/ {0xea, 1029}, + /*II_D8_C8*/ {0xea, 1029}, + /*II_D8_C8*/ {0xea, 1029}, + /*II_D8_C8*/ {0xea, 1029}, + /*II_D8_D0*/ {0xeb, 1035}, + /*II_D8_D0*/ {0xeb, 1035}, + /*II_D8_D0*/ {0xeb, 1035}, + /*II_D8_D0*/ {0xeb, 1035}, + /*II_D8_D0*/ {0xeb, 1035}, + /*II_D8_D0*/ {0xeb, 1035}, + /*II_D8_D0*/ {0xeb, 1035}, + /*II_D8_D0*/ {0xeb, 1035}, + /*II_D8_D8*/ {0xeb, 1041}, + /*II_D8_D9*/ {0xec, 1041}, + /*II_D8_D8*/ {0xeb, 1041}, + /*II_D8_D8*/ {0xeb, 1041}, + /*II_D8_D8*/ {0xeb, 1041}, + /*II_D8_D8*/ {0xeb, 1041}, + /*II_D8_D8*/ {0xeb, 1041}, + /*II_D8_D8*/ {0xeb, 1041}, + /*II_D8_E0*/ {0xea, 1048}, + /*II_D8_E0*/ {0xea, 1048}, + /*II_D8_E0*/ {0xea, 1048}, + /*II_D8_E0*/ {0xea, 1048}, + /*II_D8_E0*/ {0xea, 1048}, + /*II_D8_E0*/ {0xea, 1048}, + /*II_D8_E0*/ {0xea, 1048}, + /*II_D8_E0*/ {0xea, 1048}, + /*II_D8_E8*/ {0xea, 1054}, + /*II_D8_E8*/ {0xea, 1054}, + /*II_D8_E8*/ {0xea, 1054}, + /*II_D8_E8*/ {0xea, 1054}, + /*II_D8_E8*/ {0xea, 1054}, + /*II_D8_E8*/ {0xea, 1054}, + /*II_D8_E8*/ {0xea, 1054}, + /*II_D8_E8*/ {0xea, 1054}, + /*II_D8_F0*/ {0xea, 1061}, + /*II_D8_F0*/ {0xea, 1061}, + /*II_D8_F0*/ {0xea, 1061}, + /*II_D8_F0*/ {0xea, 1061}, + /*II_D8_F0*/ {0xea, 1061}, + /*II_D8_F0*/ {0xea, 1061}, + /*II_D8_F0*/ {0xea, 1061}, + /*II_D8_F0*/ {0xea, 1061}, + /*II_D8_F8*/ {0xea, 1067}, + /*II_D8_F8*/ {0xea, 1067}, + /*II_D8_F8*/ {0xea, 1067}, + /*II_D8_F8*/ {0xea, 1067}, + /*II_D8_F8*/ {0xea, 1067}, + /*II_D8_F8*/ {0xea, 1067}, + /*II_D8_F8*/ {0xea, 1067}, + /*II_D8_F8*/ {0xea, 1067}, + /*II_D9_00*/ {0xe9, 1074}, + /*II_D9_02*/ {0xed, 1079}, + /*II_D9_03*/ {0xed, 1084}, + /*II_D9_04*/ {0xee, 1090}, + /*II_D9_05*/ {0xef, 1098}, + /*II_D9_C0*/ {0xeb, 1074}, + /*II_D9_C0*/ {0xeb, 1074}, + /*II_D9_C0*/ {0xeb, 1074}, + /*II_D9_C0*/ {0xeb, 1074}, + /*II_D9_C0*/ {0xeb, 1074}, + /*II_D9_C0*/ {0xeb, 1074}, + /*II_D9_C0*/ {0xeb, 1074}, + /*II_D9_C0*/ {0xeb, 1074}, + /*II_D9_C8*/ {0xeb, 1105}, + /*II_D9_C9*/ {0xec, 1105}, + /*II_D9_C8*/ {0xeb, 1105}, + /*II_D9_C8*/ {0xeb, 1105}, + /*II_D9_C8*/ {0xeb, 1105}, + /*II_D9_C8*/ {0xeb, 1105}, + /*II_D9_C8*/ {0xeb, 1105}, + /*II_D9_C8*/ {0xeb, 1105}, + /*II_D9_D0*/ {0xec, 1111}, + /*II_D9_E0*/ {0xec, 1117}, + /*II_D9_E1*/ {0xec, 1123}, + /*II_D9_E4*/ {0xec, 1129}, + /*II_D9_E5*/ {0xec, 1135}, + /*II_D9_E8*/ {0xec, 1141}, + /*II_D9_E9*/ {0xec, 1147}, + /*II_D9_EA*/ {0xec, 1155}, + /*II_D9_EB*/ {0xec, 1163}, + /*II_D9_EC*/ {0xec, 1170}, + /*II_D9_ED*/ {0xec, 1178}, + /*II_D9_EE*/ {0xec, 1186}, + /*II_D9_F0*/ {0xec, 1192}, + /*II_D9_F1*/ {0xec, 1199}, + /*II_D9_F2*/ {0xec, 1206}, + /*II_D9_F3*/ {0xec, 1213}, + /*II_D9_F4*/ {0xec, 1221}, + /*II_D9_F5*/ {0xec, 1230}, + /*II_D9_F6*/ {0xec, 1238}, + /*II_D9_F7*/ {0xec, 1247}, + /*II_D9_F8*/ {0xec, 1256}, + /*II_D9_F9*/ {0xec, 1263}, + /*II_D9_FA*/ {0xec, 1272}, + /*II_D9_FB*/ {0xec, 1279}, + /*II_D9_FC*/ {0xec, 1288}, + /*II_D9_FD*/ {0xec, 1297}, + /*II_D9_FE*/ {0xec, 1305}, + /*II_D9_FF*/ {0xec, 1311}, + /*II_DA_00*/ {0xe9, 1317}, + /*II_DA_01*/ {0xe9, 1324}, + /*II_DA_02*/ {0xe9, 1331}, + /*II_DA_03*/ {0xe9, 1338}, + /*II_DA_04*/ {0xe9, 1346}, + /*II_DA_05*/ {0xe9, 1353}, + /*II_DA_06*/ {0xe9, 1361}, + /*II_DA_07*/ {0xe9, 1368}, + /*II_DA_C0*/ {0xf0, 1376}, + /*II_DA_C0*/ {0xf0, 1376}, + /*II_DA_C0*/ {0xf0, 1376}, + /*II_DA_C0*/ {0xf0, 1376}, + /*II_DA_C0*/ {0xf0, 1376}, + /*II_DA_C0*/ {0xf0, 1376}, + /*II_DA_C0*/ {0xf0, 1376}, + /*II_DA_C0*/ {0xf0, 1376}, + /*II_DA_C8*/ {0xf1, 1384}, + /*II_DA_C8*/ {0xf1, 1384}, + /*II_DA_C8*/ {0xf1, 1384}, + /*II_DA_C8*/ {0xf1, 1384}, + /*II_DA_C8*/ {0xf1, 1384}, + /*II_DA_C8*/ {0xf1, 1384}, + /*II_DA_C8*/ {0xf1, 1384}, + /*II_DA_C8*/ {0xf1, 1384}, + /*II_DA_D0*/ {0xf2, 1392}, + /*II_DA_D0*/ {0xf2, 1392}, + /*II_DA_D0*/ {0xf2, 1392}, + /*II_DA_D0*/ {0xf2, 1392}, + /*II_DA_D0*/ {0xf2, 1392}, + /*II_DA_D0*/ {0xf2, 1392}, + /*II_DA_D0*/ {0xf2, 1392}, + /*II_DA_D0*/ {0xf2, 1392}, + /*II_DA_D8*/ {0xf3, 1401}, + /*II_DA_D8*/ {0xf3, 1401}, + /*II_DA_D8*/ {0xf3, 1401}, + /*II_DA_D8*/ {0xf3, 1401}, + /*II_DA_D8*/ {0xf3, 1401}, + /*II_DA_D8*/ {0xf3, 1401}, + /*II_DA_D8*/ {0xf3, 1401}, + /*II_DA_D8*/ {0xf3, 1401}, + /*II_DA_E9*/ {0xec, 1409}, + /*II_DB_00*/ {0xe9, 1418}, + /*II_DB_01*/ {0xf4, 1424}, + /*II_DB_02*/ {0xed, 1432}, + /*II_DB_03*/ {0xed, 1438}, + /*II_DB_05*/ {0xf5, 1074}, + /*II_DB_07*/ {0xf6, 1084}, + /*II_DB_C0*/ {0xf0, 1445}, + /*II_DB_C0*/ {0xf0, 1445}, + /*II_DB_C0*/ {0xf0, 1445}, + /*II_DB_C0*/ {0xf0, 1445}, + /*II_DB_C0*/ {0xf0, 1445}, + /*II_DB_C0*/ {0xf0, 1445}, + /*II_DB_C0*/ {0xf0, 1445}, + /*II_DB_C0*/ {0xf0, 1445}, + /*II_DB_C8*/ {0xf1, 1454}, + /*II_DB_C8*/ {0xf1, 1454}, + /*II_DB_C8*/ {0xf1, 1454}, + /*II_DB_C8*/ {0xf1, 1454}, + /*II_DB_C8*/ {0xf1, 1454}, + /*II_DB_C8*/ {0xf1, 1454}, + /*II_DB_C8*/ {0xf1, 1454}, + /*II_DB_C8*/ {0xf1, 1454}, + /*II_DB_D0*/ {0xf2, 1463}, + /*II_DB_D0*/ {0xf2, 1463}, + /*II_DB_D0*/ {0xf2, 1463}, + /*II_DB_D0*/ {0xf2, 1463}, + /*II_DB_D0*/ {0xf2, 1463}, + /*II_DB_D0*/ {0xf2, 1463}, + /*II_DB_D0*/ {0xf2, 1463}, + /*II_DB_D0*/ {0xf2, 1463}, + /*II_DB_D8*/ {0xf3, 1473}, + /*II_DB_D8*/ {0xf3, 1473}, + /*II_DB_D8*/ {0xf3, 1473}, + /*II_DB_D8*/ {0xf3, 1473}, + /*II_DB_D8*/ {0xf3, 1473}, + /*II_DB_D8*/ {0xf3, 1473}, + /*II_DB_D8*/ {0xf3, 1473}, + /*II_DB_D8*/ {0xf3, 1473}, + /*II_DB_E0*/ {0xec, 1482}, + /*II_DB_E1*/ {0xec, 1488}, + /*II_DB_E4*/ {0xec, 1496}, + /*II_DB_E8*/ {0xf7, 1504}, + /*II_DB_E8*/ {0xf7, 1504}, + /*II_DB_E8*/ {0xf7, 1504}, + /*II_DB_E8*/ {0xf7, 1504}, + /*II_DB_E8*/ {0xf7, 1504}, + /*II_DB_E8*/ {0xf7, 1504}, + /*II_DB_E8*/ {0xf7, 1504}, + /*II_DB_E8*/ {0xf7, 1504}, + /*II_DB_F0*/ {0xf8, 1512}, + /*II_DB_F0*/ {0xf8, 1512}, + /*II_DB_F0*/ {0xf8, 1512}, + /*II_DB_F0*/ {0xf8, 1512}, + /*II_DB_F0*/ {0xf8, 1512}, + /*II_DB_F0*/ {0xf8, 1512}, + /*II_DB_F0*/ {0xf8, 1512}, + /*II_DB_F0*/ {0xf8, 1512}, + /*II_DC_00*/ {0xf9, 1023}, + /*II_DC_01*/ {0xf9, 1029}, + /*II_DC_02*/ {0xf9, 1035}, + /*II_DC_03*/ {0xf9, 1041}, + /*II_DC_04*/ {0xf9, 1048}, + /*II_DC_05*/ {0xf9, 1054}, + /*II_DC_06*/ {0xf9, 1061}, + /*II_DC_07*/ {0xf9, 1067}, + /*II_DC_C0*/ {0xfa, 1023}, + /*II_DC_C0*/ {0xfa, 1023}, + /*II_DC_C0*/ {0xfa, 1023}, + /*II_DC_C0*/ {0xfa, 1023}, + /*II_DC_C0*/ {0xfa, 1023}, + /*II_DC_C0*/ {0xfa, 1023}, + /*II_DC_C0*/ {0xfa, 1023}, + /*II_DC_C0*/ {0xfa, 1023}, + /*II_DC_C8*/ {0xfa, 1029}, + /*II_DC_C8*/ {0xfa, 1029}, + /*II_DC_C8*/ {0xfa, 1029}, + /*II_DC_C8*/ {0xfa, 1029}, + /*II_DC_C8*/ {0xfa, 1029}, + /*II_DC_C8*/ {0xfa, 1029}, + /*II_DC_C8*/ {0xfa, 1029}, + /*II_DC_C8*/ {0xfa, 1029}, + /*II_DC_E0*/ {0xfa, 1054}, + /*II_DC_E0*/ {0xfa, 1054}, + /*II_DC_E0*/ {0xfa, 1054}, + /*II_DC_E0*/ {0xfa, 1054}, + /*II_DC_E0*/ {0xfa, 1054}, + /*II_DC_E0*/ {0xfa, 1054}, + /*II_DC_E0*/ {0xfa, 1054}, + /*II_DC_E0*/ {0xfa, 1054}, + /*II_DC_E8*/ {0xfa, 1048}, + /*II_DC_E8*/ {0xfa, 1048}, + /*II_DC_E8*/ {0xfa, 1048}, + /*II_DC_E8*/ {0xfa, 1048}, + /*II_DC_E8*/ {0xfa, 1048}, + /*II_DC_E8*/ {0xfa, 1048}, + /*II_DC_E8*/ {0xfa, 1048}, + /*II_DC_E8*/ {0xfa, 1048}, + /*II_DC_F0*/ {0xfa, 1067}, + /*II_DC_F0*/ {0xfa, 1067}, + /*II_DC_F0*/ {0xfa, 1067}, + /*II_DC_F0*/ {0xfa, 1067}, + /*II_DC_F0*/ {0xfa, 1067}, + /*II_DC_F0*/ {0xfa, 1067}, + /*II_DC_F0*/ {0xfa, 1067}, + /*II_DC_F0*/ {0xfa, 1067}, + /*II_DC_F8*/ {0xfa, 1061}, + /*II_DC_F8*/ {0xfa, 1061}, + /*II_DC_F8*/ {0xfa, 1061}, + /*II_DC_F8*/ {0xfa, 1061}, + /*II_DC_F8*/ {0xfa, 1061}, + /*II_DC_F8*/ {0xfa, 1061}, + /*II_DC_F8*/ {0xfa, 1061}, + /*II_DC_F8*/ {0xfa, 1061}, + /*II_DD_00*/ {0xf9, 1074}, + /*II_DD_01*/ {0xfb, 1424}, + /*II_DD_02*/ {0xfc, 1079}, + /*II_DD_03*/ {0xfc, 1084}, + /*II_DD_04*/ {0xee, 1519}, + /*II_DD_C0*/ {0xeb, 1527}, + /*II_DD_C0*/ {0xeb, 1527}, + /*II_DD_C0*/ {0xeb, 1527}, + /*II_DD_C0*/ {0xeb, 1527}, + /*II_DD_C0*/ {0xeb, 1527}, + /*II_DD_C0*/ {0xeb, 1527}, + /*II_DD_C0*/ {0xeb, 1527}, + /*II_DD_C0*/ {0xeb, 1527}, + /*II_DD_D0*/ {0xeb, 1079}, + /*II_DD_D0*/ {0xeb, 1079}, + /*II_DD_D0*/ {0xeb, 1079}, + /*II_DD_D0*/ {0xeb, 1079}, + /*II_DD_D0*/ {0xeb, 1079}, + /*II_DD_D0*/ {0xeb, 1079}, + /*II_DD_D0*/ {0xeb, 1079}, + /*II_DD_D0*/ {0xeb, 1079}, + /*II_DD_D8*/ {0xeb, 1084}, + /*II_DD_D8*/ {0xeb, 1084}, + /*II_DD_D8*/ {0xeb, 1084}, + /*II_DD_D8*/ {0xeb, 1084}, + /*II_DD_D8*/ {0xeb, 1084}, + /*II_DD_D8*/ {0xeb, 1084}, + /*II_DD_D8*/ {0xeb, 1084}, + /*II_DD_D8*/ {0xeb, 1084}, + /*II_DD_E0*/ {0xfa, 1534}, + /*II_DD_E1*/ {0xec, 1534}, + /*II_DD_E0*/ {0xfa, 1534}, + /*II_DD_E0*/ {0xfa, 1534}, + /*II_DD_E0*/ {0xfa, 1534}, + /*II_DD_E0*/ {0xfa, 1534}, + /*II_DD_E0*/ {0xfa, 1534}, + /*II_DD_E0*/ {0xfa, 1534}, + /*II_DD_E8*/ {0xeb, 1541}, + /*II_DD_E9*/ {0xec, 1541}, + /*II_DD_E8*/ {0xeb, 1541}, + /*II_DD_E8*/ {0xeb, 1541}, + /*II_DD_E8*/ {0xeb, 1541}, + /*II_DD_E8*/ {0xeb, 1541}, + /*II_DD_E8*/ {0xeb, 1541}, + /*II_DD_E8*/ {0xeb, 1541}, + /*II_DE_00*/ {0xef, 1317}, + /*II_DE_01*/ {0xef, 1324}, + /*II_DE_02*/ {0xef, 1331}, + /*II_DE_03*/ {0xef, 1338}, + /*II_DE_04*/ {0xef, 1346}, + /*II_DE_05*/ {0xef, 1353}, + /*II_DE_06*/ {0xef, 1361}, + /*II_DE_07*/ {0xef, 1368}, + /*II_DE_C0*/ {0xfa, 1549}, + /*II_DE_C1*/ {0xec, 1549}, + /*II_DE_C0*/ {0xfa, 1549}, + /*II_DE_C0*/ {0xfa, 1549}, + /*II_DE_C0*/ {0xfa, 1549}, + /*II_DE_C0*/ {0xfa, 1549}, + /*II_DE_C0*/ {0xfa, 1549}, + /*II_DE_C0*/ {0xfa, 1549}, + /*II_DE_C8*/ {0xfa, 1556}, + /*II_DE_C9*/ {0xec, 1556}, + /*II_DE_C8*/ {0xfa, 1556}, + /*II_DE_C8*/ {0xfa, 1556}, + /*II_DE_C8*/ {0xfa, 1556}, + /*II_DE_C8*/ {0xfa, 1556}, + /*II_DE_C8*/ {0xfa, 1556}, + /*II_DE_C8*/ {0xfa, 1556}, + /*II_DE_D9*/ {0xec, 1563}, + /*II_DE_E0*/ {0xfa, 1571}, + /*II_DE_E1*/ {0xec, 1571}, + /*II_DE_E0*/ {0xfa, 1571}, + /*II_DE_E0*/ {0xfa, 1571}, + /*II_DE_E0*/ {0xfa, 1571}, + /*II_DE_E0*/ {0xfa, 1571}, + /*II_DE_E0*/ {0xfa, 1571}, + /*II_DE_E0*/ {0xfa, 1571}, + /*II_DE_E8*/ {0xfa, 1579}, + /*II_DE_E9*/ {0xec, 1579}, + /*II_DE_E8*/ {0xfa, 1579}, + /*II_DE_E8*/ {0xfa, 1579}, + /*II_DE_E8*/ {0xfa, 1579}, + /*II_DE_E8*/ {0xfa, 1579}, + /*II_DE_E8*/ {0xfa, 1579}, + /*II_DE_E8*/ {0xfa, 1579}, + /*II_DE_F0*/ {0xfa, 1586}, + /*II_DE_F1*/ {0xec, 1586}, + /*II_DE_F0*/ {0xfa, 1586}, + /*II_DE_F0*/ {0xfa, 1586}, + /*II_DE_F0*/ {0xfa, 1586}, + /*II_DE_F0*/ {0xfa, 1586}, + /*II_DE_F0*/ {0xfa, 1586}, + /*II_DE_F0*/ {0xfa, 1586}, + /*II_DE_F8*/ {0xfa, 1594}, + /*II_DE_F9*/ {0xec, 1594}, + /*II_DE_F8*/ {0xfa, 1594}, + /*II_DE_F8*/ {0xfa, 1594}, + /*II_DE_F8*/ {0xfa, 1594}, + /*II_DE_F8*/ {0xfa, 1594}, + /*II_DE_F8*/ {0xfa, 1594}, + /*II_DE_F8*/ {0xfa, 1594}, + /*II_DF_00*/ {0xef, 1418}, + /*II_DF_01*/ {0xfd, 1424}, + /*II_DF_02*/ {0xfe, 1432}, + /*II_DF_03*/ {0xfe, 1438}, + /*II_DF_04*/ {0xf5, 1601}, + /*II_DF_05*/ {0xf9, 1418}, + /*II_DF_06*/ {0xf6, 1607}, + /*II_DF_07*/ {0xfc, 1438}, + /*II_DF_E8*/ {0xf7, 1614}, + /*II_DF_E8*/ {0xf7, 1614}, + /*II_DF_E8*/ {0xf7, 1614}, + /*II_DF_E8*/ {0xf7, 1614}, + /*II_DF_E8*/ {0xf7, 1614}, + /*II_DF_E8*/ {0xf7, 1614}, + /*II_DF_E8*/ {0xf7, 1614}, + /*II_DF_E8*/ {0xf7, 1614}, + /*II_DF_F0*/ {0xf7, 1623}, + /*II_DF_F0*/ {0xf7, 1623}, + /*II_DF_F0*/ {0xf7, 1623}, + /*II_DF_F0*/ {0xf7, 1623}, + /*II_DF_F0*/ {0xf7, 1623}, + /*II_DF_F0*/ {0xf7, 1623}, + /*II_DF_F0*/ {0xf7, 1623}, + /*II_DF_F0*/ {0xf7, 1623}, + /*II_F6_00*/ {0xff, 206}, + /*II_F6_02*/ {0x100, 1631}, + /*II_F6_03*/ {0x101, 1636}, + /*II_F6_04*/ {0x102, 1641}, + /*II_F6_05*/ {0x102, 117}, + /*II_F6_06*/ {0x103, 1646}, + /*II_F6_07*/ {0x103, 1651}, + /*II_F7_00*/ {0x104, 206}, + /*II_F7_02*/ {0x105, 1631}, + /*II_F7_03*/ {0x106, 1636}, + /*II_F7_04*/ {0x107, 1641}, + /*II_F7_05*/ {0x107, 117}, + /*II_F7_06*/ {0x108, 1646}, + /*II_F7_07*/ {0x108, 1651}, + /*II_FE_00*/ {0x109, 81}, + /*II_FE_01*/ {0x109, 86}, + /*II_FF_00*/ {0x10a, 81}, + /*II_FF_01*/ {0x10a, 86}, + /*II_FF_02*/ {0x10b, 456}, + /*II_FF_03*/ {0x10c, 260}, + /*II_FF_04*/ {0x10d, 462}, + /*II_FF_05*/ {0x10e, 467}, + /*II_FF_06*/ {0x10f, 16}, + /*II_0F_00_00*/ {0x110, 1657}, + /*II_0F_00_01*/ {0x111, 1663}, + /*II_0F_00_02*/ {0x112, 1668}, + /*II_0F_00_03*/ {0x113, 1674}, + /*II_0F_00_04*/ {0x114, 1679}, + /*II_0F_00_05*/ {0x114, 1685}, + /*II_0F_01_00*/ {0x115, 1691}, + /*II_0F_01_01*/ {0x115, 1697}, + /*II_0F_01_02*/ {0x116, 1703}, + /*II_0F_01_03*/ {0x116, 1709}, + /*II_0F_01_04*/ {0x117, 1715}, + /*II_0F_01_06*/ {0x118, 1721}, + /*II_0F_01_07*/ {0x119, 1727}, + /*II_0F_01_C1*/ {0x11a, 1735}, + /*II_0F_01_C2*/ {0x11a, 1743}, + /*II_0F_01_C3*/ {0x11a, 1753}, + /*II_0F_01_C4*/ {0x11a, 1763}, + /*II_0F_01_C8*/ {0x11b, 1771}, + /*II_0F_01_C9*/ {0x11b, 1780}, + /*II_0F_01_CA*/ {0x11b, 1787}, + /*II_0F_01_CB*/ {0x11b, 1793}, + /*II_0F_01_D0*/ {0x91, 1799}, + /*II_0F_01_D1*/ {0x91, 1807}, + /*II_0F_01_D4*/ {0x11a, 1815}, + /*II_0F_01_D5*/ {0x11c, 1823}, + /*II_0F_01_D8*/ {0x11d, 1829}, + /*II_0F_01_D9*/ {0x11e, 1836}, + /*II_0F_01_DA*/ {0x11f, 1845}, + /*II_0F_01_DB*/ {0x11f, 1853}, + /*II_0F_01_DC*/ {0x11e, 1861}, + /*II_0F_01_DD*/ {0x11e, 1867}, + /*II_0F_01_DE*/ {0x11f, 1873}, + /*II_0F_01_DF*/ {0x120, 1881}, + /*II_0F_01_F8*/ {0x121, 1890}, + /*II_0F_01_F9*/ {0x121, 1898}, + /*II_0F_0D_00*/ {0x122, 1906}, + /*II_0F_0D_01*/ {0x122, 1916}, + /*II_0F_0F_0C*/ {0x123, 1927}, + /*II_0F_0F_0D*/ {0x124, 1934}, + /*II_0F_0F_1C*/ {0x123, 1941}, + /*II_0F_0F_1D*/ {0x124, 1948}, + /*II_0F_0F_8A*/ {0x123, 1955}, + /*II_0F_0F_8E*/ {0x123, 1963}, + /*II_0F_0F_90*/ {0x124, 1972}, + /*II_0F_0F_94*/ {0x124, 1981}, + /*II_0F_0F_96*/ {0x124, 1988}, + /*II_0F_0F_97*/ {0x124, 1995}, + /*II_0F_0F_9A*/ {0x124, 2004}, + /*II_0F_0F_9E*/ {0x124, 2011}, + /*II_0F_0F_A0*/ {0x124, 2018}, + /*II_0F_0F_A4*/ {0x124, 2027}, + /*II_0F_0F_A6*/ {0x124, 2034}, + /*II_0F_0F_A7*/ {0x124, 2044}, + /*II_0F_0F_AA*/ {0x124, 2054}, + /*II_0F_0F_AE*/ {0x124, 2062}, + /*II_0F_0F_B0*/ {0x124, 2069}, + /*II_0F_0F_B4*/ {0x124, 2078}, + /*II_0F_0F_B6*/ {0x124, 2085}, + /*II_0F_0F_B7*/ {0x124, 2095}, + /*II_0F_0F_BB*/ {0x123, 2104}, + /*II_0F_0F_BF*/ {0x124, 2112}, + /*II_0F_10*/ {0x125, 2121}, + /*II_66_0F_10*/ {0x126, 2129}, + /*II_F3_0F_10*/ {0x127, 2137}, + /*II_F2_0F_10*/ {0x128, 2144}, + /*II_0F_11*/ {0x12d, 2121}, + /*II_66_0F_11*/ {0x12e, 2129}, + /*II_F3_0F_11*/ {0x12f, 2137}, + /*II_F2_0F_11*/ {0x130, 2144}, + /*II_66_0F_12*/ {0x135, 2202}, + /*II_F3_0F_12*/ {0x136, 2210}, + /*II_F2_0F_12*/ {0x136, 2220}, + /*II_0F_13*/ {0x13a, 2194}, + /*II_66_0F_13*/ {0x13b, 2202}, + /*II_0F_14*/ {0x13d, 2278}, + /*II_66_0F_14*/ {0x13e, 2288}, + /*II_0F_15*/ {0x13d, 2320}, + /*II_66_0F_15*/ {0x13e, 2330}, + /*II_66_0F_16*/ {0x135, 2379}, + /*II_F3_0F_16*/ {0x140, 2387}, + /*II_0F_17*/ {0x13a, 2371}, + /*II_66_0F_17*/ {0x13b, 2379}, + /*II_0F_18_00*/ {0x141, 2436}, + /*II_0F_18_01*/ {0x141, 2449}, + /*II_0F_18_02*/ {0x141, 2461}, + /*II_0F_18_03*/ {0x141, 2473}, + /*II_0F_28*/ {0x125, 2485}, + /*II_66_0F_28*/ {0x126, 2493}, + /*II_0F_29*/ {0x12d, 2485}, + /*II_66_0F_29*/ {0x12e, 2493}, + /*II_0F_2A*/ {0x142, 2519}, + /*II_66_0F_2A*/ {0x143, 2529}, + /*II_F3_0F_2A*/ {0x144, 2539}, + /*II_F2_0F_2A*/ {0x145, 2549}, + /*II_0F_2B*/ {0x146, 2581}, + /*II_66_0F_2B*/ {0x147, 2590}, + /*II_F3_0F_2B*/ {0x148, 2599}, + /*II_F2_0F_2B*/ {0x149, 2608}, + /*II_0F_2C*/ {0x14b, 2637}, + /*II_66_0F_2C*/ {0x14c, 2648}, + /*II_F3_0F_2C*/ {0x14d, 2659}, + /*II_F2_0F_2C*/ {0x14e, 2670}, + /*II_0F_2D*/ {0x14b, 2705}, + /*II_66_0F_2D*/ {0x13e, 2715}, + /*II_F3_0F_2D*/ {0x14d, 2725}, + /*II_F2_0F_2D*/ {0x14e, 2735}, + /*II_0F_2E*/ {0x150, 2767}, + /*II_66_0F_2E*/ {0x151, 2776}, + /*II_0F_2F*/ {0x150, 2805}, + /*II_66_0F_2F*/ {0x151, 2813}, + /*II_0F_50*/ {0x154, 2839}, + /*II_66_0F_50*/ {0x155, 2849}, + /*II_0F_51*/ {0x13d, 2881}, + /*II_66_0F_51*/ {0x13e, 2889}, + /*II_F3_0F_51*/ {0x157, 2897}, + /*II_F2_0F_51*/ {0x151, 2905}, + /*II_0F_52*/ {0x13d, 2949}, + /*II_F3_0F_52*/ {0x157, 2958}, + /*II_0F_53*/ {0x13d, 2987}, + /*II_F3_0F_53*/ {0x157, 2994}, + /*II_0F_54*/ {0x13d, 3017}, + /*II_66_0F_54*/ {0x13e, 3024}, + /*II_0F_55*/ {0x13d, 3047}, + /*II_66_0F_55*/ {0x13e, 3055}, + /*II_0F_56*/ {0x13d, 3081}, + /*II_66_0F_56*/ {0x13e, 3087}, + /*II_0F_57*/ {0x13d, 3107}, + /*II_66_0F_57*/ {0x13e, 3114}, + /*II_0F_58*/ {0x13d, 3137}, + /*II_66_0F_58*/ {0x13e, 3144}, + /*II_F3_0F_58*/ {0x157, 3151}, + /*II_F2_0F_58*/ {0x151, 3158}, + /*II_0F_59*/ {0x13d, 3197}, + /*II_66_0F_59*/ {0x13e, 3204}, + /*II_F3_0F_59*/ {0x157, 3211}, + /*II_F2_0F_59*/ {0x151, 3218}, + /*II_0F_5A*/ {0x151, 3257}, + /*II_66_0F_5A*/ {0x13e, 3267}, + /*II_F3_0F_5A*/ {0x158, 3277}, + /*II_F2_0F_5A*/ {0x151, 3287}, + /*II_0F_5B*/ {0x13e, 3341}, + /*II_66_0F_5B*/ {0x13e, 3351}, + /*II_F3_0F_5B*/ {0x13e, 3361}, + /*II_0F_5C*/ {0x13d, 3406}, + /*II_66_0F_5C*/ {0x13e, 3413}, + /*II_F3_0F_5C*/ {0x157, 3420}, + /*II_F2_0F_5C*/ {0x151, 3427}, + /*II_0F_5D*/ {0x13d, 3466}, + /*II_66_0F_5D*/ {0x13e, 3473}, + /*II_F3_0F_5D*/ {0x157, 3480}, + /*II_F2_0F_5D*/ {0x151, 3487}, + /*II_0F_5E*/ {0x13d, 3526}, + /*II_66_0F_5E*/ {0x13e, 3533}, + /*II_F3_0F_5E*/ {0x157, 3540}, + /*II_F2_0F_5E*/ {0x151, 3547}, + /*II_0F_5F*/ {0x13d, 3586}, + /*II_66_0F_5F*/ {0x13e, 3593}, + /*II_F3_0F_5F*/ {0x157, 3600}, + /*II_F2_0F_5F*/ {0x151, 3607}, + /*II_0F_60*/ {0x15b, 3646}, + /*II_66_0F_60*/ {0x13e, 3646}, + /*II_0F_61*/ {0x15b, 3669}, + /*II_66_0F_61*/ {0x13e, 3669}, + /*II_0F_62*/ {0x15b, 3692}, + /*II_66_0F_62*/ {0x13e, 3692}, + /*II_0F_63*/ {0x15c, 3715}, + /*II_66_0F_63*/ {0x13e, 3715}, + /*II_0F_64*/ {0x15c, 3736}, + /*II_66_0F_64*/ {0x13e, 3736}, + /*II_0F_65*/ {0x15c, 3755}, + /*II_66_0F_65*/ {0x13e, 3755}, + /*II_0F_66*/ {0x15c, 3774}, + /*II_66_0F_66*/ {0x13e, 3774}, + /*II_0F_67*/ {0x15c, 3793}, + /*II_66_0F_67*/ {0x13e, 3793}, + /*II_0F_68*/ {0x15c, 3814}, + /*II_66_0F_68*/ {0x13e, 3814}, + /*II_0F_69*/ {0x15c, 3837}, + /*II_66_0F_69*/ {0x13e, 3837}, + /*II_0F_6A*/ {0x15c, 3860}, + /*II_66_0F_6A*/ {0x13e, 3860}, + /*II_0F_6B*/ {0x15c, 3883}, + /*II_66_0F_6B*/ {0x13e, 3883}, + /*II_66_0F_6C*/ {0x13e, 3904}, + /*II_66_0F_6D*/ {0x13e, 3929}, + /*II_0F_6F*/ {0x160, 3960}, + /*II_66_0F_6F*/ {0x126, 3980}, + /*II_F3_0F_6F*/ {0x126, 3988}, + /*II_0F_74*/ {0x15c, 4077}, + /*II_66_0F_74*/ {0x13e, 4077}, + /*II_0F_75*/ {0x15c, 4096}, + /*II_66_0F_75*/ {0x13e, 4096}, + /*II_0F_76*/ {0x15c, 4115}, + /*II_66_0F_76*/ {0x13e, 4115}, + /*II_0F_77*/ {0x164, 4134}, + /*II_0F_78*/ {0x166, 4162}, + /*II_0F_79*/ {0x169, 4186}, + /*II_66_0F_79*/ {0x16a, 4170}, + /*II_F2_0F_79*/ {0x16b, 4177}, + /*II_0F_7A_30*/ {0x16c, 4195}, + /*II_0F_7A_31*/ {0x16d, 4205}, + /*II_66_0F_7C*/ {0x16e, 4215}, + /*II_F2_0F_7C*/ {0x16e, 4223}, + /*II_66_0F_7D*/ {0x16e, 4249}, + /*II_F2_0F_7D*/ {0x16e, 4257}, + /*II_F3_0F_7E*/ {0x128, 3960}, + /*II_0F_7F*/ {0x172, 3960}, + /*II_66_0F_7F*/ {0x12e, 3980}, + /*II_F3_0F_7F*/ {0x12e, 3988}, + /*II_F3_0F_B8*/ {0x176, 4372}, + /*II_0F_BA_04*/ {0x177, 872}, + /*II_0F_BA_05*/ {0x178, 887}, + /*II_0F_BA_06*/ {0x178, 912}, + /*II_0F_BA_07*/ {0x178, 934}, + /*II_0F_BC*/ {0x179, 4380}, + /*II_F3_0F_BC*/ {0x17a, 4385}, + /*II_0F_BD*/ {0x179, 4392}, + /*II_F3_0F_BD*/ {0x17b, 4397}, + /*II_0F_C7_07*/ {0x18b, 6419}, + /*II_66_0F_D0*/ {0x16e, 6428}, + /*II_F2_0F_D0*/ {0x16e, 6438}, + /*II_0F_D1*/ {0x15c, 6470}, + /*II_66_0F_D1*/ {0x13e, 6470}, + /*II_0F_D2*/ {0x15c, 6485}, + /*II_66_0F_D2*/ {0x13e, 6485}, + /*II_0F_D3*/ {0x15c, 6500}, + /*II_66_0F_D3*/ {0x13e, 6500}, + /*II_0F_D4*/ {0x151, 6515}, + /*II_66_0F_D4*/ {0x13e, 6515}, + /*II_0F_D5*/ {0x15c, 6530}, + /*II_66_0F_D5*/ {0x13e, 6530}, + /*II_66_0F_D6*/ {0x130, 3960}, + /*II_F3_0F_D6*/ {0x18c, 6547}, + /*II_F2_0F_D6*/ {0x18d, 6556}, + /*II_0F_D7*/ {0x18f, 6565}, + /*II_66_0F_D7*/ {0x190, 6565}, + /*II_0F_D8*/ {0x15c, 6586}, + /*II_66_0F_D8*/ {0x13e, 6586}, + /*II_0F_D9*/ {0x15c, 6605}, + /*II_66_0F_D9*/ {0x13e, 6605}, + /*II_0F_DA*/ {0x192, 6624}, + /*II_66_0F_DA*/ {0x13e, 6624}, + /*II_0F_DB*/ {0x15c, 6641}, + /*II_66_0F_DB*/ {0x13e, 6641}, + /*II_0F_DC*/ {0x15c, 6654}, + /*II_66_0F_DC*/ {0x13e, 6654}, + /*II_0F_DD*/ {0x15c, 6673}, + /*II_66_0F_DD*/ {0x13e, 6673}, + /*II_0F_DE*/ {0x192, 6682}, + /*II_66_0F_DE*/ {0x13e, 6682}, + /*II_0F_DF*/ {0x15c, 6699}, + /*II_66_0F_DF*/ {0x13e, 6699}, + /*II_0F_E0*/ {0x192, 6714}, + /*II_66_0F_E0*/ {0x13e, 6714}, + /*II_0F_E1*/ {0x15c, 6729}, + /*II_66_0F_E1*/ {0x13e, 6729}, + /*II_0F_E2*/ {0x15c, 6744}, + /*II_66_0F_E2*/ {0x13e, 6744}, + /*II_0F_E3*/ {0x192, 6759}, + /*II_66_0F_E3*/ {0x13e, 6759}, + /*II_0F_E4*/ {0x192, 6774}, + /*II_66_0F_E4*/ {0x13e, 6774}, + /*II_0F_E5*/ {0x15c, 6793}, + /*II_66_0F_E5*/ {0x13e, 6793}, + /*II_66_0F_E6*/ {0x13e, 6810}, + /*II_F3_0F_E6*/ {0x151, 6821}, + /*II_F2_0F_E6*/ {0x13e, 6831}, + /*II_0F_E7*/ {0x193, 6875}, + /*II_66_0F_E7*/ {0x147, 6883}, + /*II_0F_E8*/ {0x15c, 6902}, + /*II_66_0F_E8*/ {0x13e, 6902}, + /*II_0F_E9*/ {0x15c, 6919}, + /*II_66_0F_E9*/ {0x13e, 6919}, + /*II_0F_EA*/ {0x192, 6936}, + /*II_66_0F_EA*/ {0x13e, 6936}, + /*II_0F_EB*/ {0x15c, 6953}, + /*II_66_0F_EB*/ {0x13e, 6953}, + /*II_0F_EC*/ {0x15c, 6964}, + /*II_66_0F_EC*/ {0x13e, 6964}, + /*II_0F_ED*/ {0x15c, 6981}, + /*II_66_0F_ED*/ {0x13e, 6981}, + /*II_0F_EE*/ {0x192, 6998}, + /*II_66_0F_EE*/ {0x13e, 6998}, + /*II_0F_EF*/ {0x15c, 7015}, + /*II_66_0F_EF*/ {0x13e, 7015}, + /*II_F2_0F_F0*/ {0x194, 7028}, + /*II_0F_F1*/ {0x15c, 7043}, + /*II_66_0F_F1*/ {0x13e, 7043}, + /*II_0F_F2*/ {0x15c, 7058}, + /*II_66_0F_F2*/ {0x13e, 7058}, + /*II_0F_F3*/ {0x15c, 7073}, + /*II_66_0F_F3*/ {0x13e, 7073}, + /*II_0F_F4*/ {0x196, 7088}, + /*II_66_0F_F4*/ {0x13e, 7088}, + /*II_0F_F5*/ {0x15c, 7107}, + /*II_66_0F_F5*/ {0x13e, 7107}, + /*II_0F_F6*/ {0x192, 7126}, + /*II_66_0F_F6*/ {0x13e, 7126}, + /*II_0F_F7*/ {0x197, 7143}, + /*II_66_0F_F7*/ {0x198, 7153}, + /*II_0F_F8*/ {0x15c, 7178}, + /*II_66_0F_F8*/ {0x13e, 7178}, + /*II_0F_F9*/ {0x15c, 7193}, + /*II_66_0F_F9*/ {0x13e, 7193}, + /*II_0F_FA*/ {0x15c, 7208}, + /*II_66_0F_FA*/ {0x13e, 7208}, + /*II_0F_FB*/ {0x196, 7223}, + /*II_66_0F_FB*/ {0x13e, 7223}, + /*II_0F_FC*/ {0x15c, 7238}, + /*II_66_0F_FC*/ {0x13e, 7238}, + /*II_0F_FD*/ {0x15c, 7253}, + /*II_66_0F_FD*/ {0x13e, 7253}, + /*II_0F_FE*/ {0x15c, 7268}, + /*II_66_0F_FE*/ {0x13e, 7268}, + /*II_D9_06*/ {0x19a, 7283}, + /*II_9B_D9_06*/ {0x19b, 7292}, + /*II_D9_07*/ {0xfe, 7300}, + /*II_9B_D9_07*/ {0x19c, 7308}, + /*II_DB_E2*/ {0xec, 7315}, + /*II_9B_DB_E2*/ {0x19d, 7323}, + /*II_DB_E3*/ {0xec, 7330}, + /*II_9B_DB_E3*/ {0x19d, 7338}, + /*II_DD_06*/ {0x19a, 7345}, + /*II_9B_DD_06*/ {0x19b, 7353}, + /*II_DD_07*/ {0xfe, 7360}, + /*II_9B_DD_07*/ {0x19c, 7368}, + /*II_DF_E0*/ {0x19e, 7360}, + /*II_9B_DF_E0*/ {0x19f, 7368}, + /*II_0F_38_00*/ {0x1a0, 7375}, + /*II_66_0F_38_00*/ {0x1a1, 7375}, + /*II_0F_38_01*/ {0x1a0, 7392}, + /*II_66_0F_38_01*/ {0x1a1, 7392}, + /*II_0F_38_02*/ {0x1a0, 7409}, + /*II_66_0F_38_02*/ {0x1a1, 7409}, + /*II_0F_38_03*/ {0x1a0, 7426}, + /*II_66_0F_38_03*/ {0x1a1, 7426}, + /*II_0F_38_04*/ {0x1a0, 7445}, + /*II_66_0F_38_04*/ {0x1a1, 7445}, + /*II_0F_38_05*/ {0x1a0, 7468}, + /*II_66_0F_38_05*/ {0x1a1, 7468}, + /*II_0F_38_06*/ {0x1a0, 7485}, + /*II_66_0F_38_06*/ {0x1a1, 7485}, + /*II_0F_38_07*/ {0x1a0, 7502}, + /*II_66_0F_38_07*/ {0x1a1, 7502}, + /*II_0F_38_08*/ {0x1a0, 7521}, + /*II_66_0F_38_08*/ {0x1a1, 7521}, + /*II_0F_38_09*/ {0x1a0, 7538}, + /*II_66_0F_38_09*/ {0x1a1, 7538}, + /*II_0F_38_0A*/ {0x1a0, 7555}, + /*II_66_0F_38_0A*/ {0x1a1, 7555}, + /*II_0F_38_0B*/ {0x1a0, 7572}, + /*II_66_0F_38_0B*/ {0x1a1, 7572}, + /*II_66_0F_38_17*/ {0x1a3, 7663}, + /*II_0F_38_1C*/ {0x1a0, 7722}, + /*II_66_0F_38_1C*/ {0x1a1, 7722}, + /*II_0F_38_1D*/ {0x1a0, 7737}, + /*II_66_0F_38_1D*/ {0x1a1, 7737}, + /*II_0F_38_1E*/ {0x1a0, 7752}, + /*II_66_0F_38_1E*/ {0x1a1, 7752}, + /*II_66_0F_38_20*/ {0x1a8, 7767}, + /*II_66_0F_38_21*/ {0x1a9, 7788}, + /*II_66_0F_38_22*/ {0x1aa, 7809}, + /*II_66_0F_38_23*/ {0x1a8, 7830}, + /*II_66_0F_38_24*/ {0x1a9, 7851}, + /*II_66_0F_38_25*/ {0x1a8, 7872}, + /*II_66_0F_38_28*/ {0x1ac, 7893}, + /*II_66_0F_38_29*/ {0x1ac, 7910}, + /*II_66_0F_38_2A*/ {0x1ad, 7929}, + /*II_66_0F_38_2B*/ {0x1ac, 7950}, + /*II_66_0F_38_30*/ {0x1a8, 7995}, + /*II_66_0F_38_31*/ {0x1a9, 8016}, + /*II_66_0F_38_32*/ {0x1aa, 8037}, + /*II_66_0F_38_33*/ {0x1a8, 8058}, + /*II_66_0F_38_34*/ {0x1a9, 8079}, + /*II_66_0F_38_35*/ {0x1a8, 8100}, + /*II_66_0F_38_37*/ {0x1a3, 8121}, + /*II_66_0F_38_38*/ {0x1ac, 8140}, + /*II_66_0F_38_39*/ {0x1ac, 8157}, + /*II_66_0F_38_3A*/ {0x1ac, 8174}, + /*II_66_0F_38_3B*/ {0x1ac, 8191}, + /*II_66_0F_38_3C*/ {0x1ac, 8208}, + /*II_66_0F_38_3D*/ {0x1ac, 8225}, + /*II_66_0F_38_3E*/ {0x1ac, 8242}, + /*II_66_0F_38_3F*/ {0x1ac, 8259}, + /*II_66_0F_38_40*/ {0x1ac, 8276}, + /*II_66_0F_38_41*/ {0x1ac, 8293}, + /*II_66_0F_38_80*/ {0x1b0, 8318}, + /*II_66_0F_38_81*/ {0x1b0, 8326}, + /*II_66_0F_38_82*/ {0x1b0, 8335}, + /*II_66_0F_38_DB*/ {0x1b3, 9184}, + /*II_66_0F_38_DC*/ {0x1b3, 9201}, + /*II_66_0F_38_DD*/ {0x1b3, 9218}, + /*II_66_0F_38_DE*/ {0x1b3, 9243}, + /*II_66_0F_38_DF*/ {0x1b3, 9260}, + /*II_0F_38_F0*/ {0x1b6, 9285}, + /*II_F2_0F_38_F0*/ {0x1b7, 9292}, + /*II_0F_38_F1*/ {0x1b8, 9285}, + /*II_F2_0F_38_F1*/ {0x1b9, 9292}, + /*II_0F_71_02*/ {0x1d0, 6470}, + /*II_66_0F_71_02*/ {0x1d1, 6470}, + /*II_0F_71_04*/ {0x1d0, 6729}, + /*II_66_0F_71_04*/ {0x1d1, 6729}, + /*II_0F_71_06*/ {0x1d0, 7043}, + /*II_66_0F_71_06*/ {0x1d1, 7043}, + /*II_0F_72_02*/ {0x1d0, 6485}, + /*II_66_0F_72_02*/ {0x1d1, 6485}, + /*II_0F_72_04*/ {0x1d0, 6744}, + /*II_66_0F_72_04*/ {0x1d1, 6744}, + /*II_0F_72_06*/ {0x1d0, 7058}, + /*II_66_0F_72_06*/ {0x1d1, 7058}, + /*II_0F_73_02*/ {0x1d0, 6500}, + /*II_66_0F_73_02*/ {0x1d1, 6500}, + /*II_66_0F_73_03*/ {0x1d1, 9864}, + /*II_0F_73_06*/ {0x1d0, 7073}, + /*II_66_0F_73_06*/ {0x1d1, 7073}, + /*II_66_0F_73_07*/ {0x1d1, 9881}, + /*II_F3_0F_AE_00*/ {0x1d3, 9916}, + /*II_F3_0F_AE_01*/ {0x1d3, 9946}, + /*II_0F_AE_02*/ {0x1d4, 9956}, + /*II_F3_0F_AE_02*/ {0x1d3, 9965}, + /*II_0F_AE_03*/ {0x1d4, 9985}, + /*II_F3_0F_AE_03*/ {0x1d3, 9994}, + /*II_0F_C7_06*/ {0x1d6, 10014}, + /*II_66_0F_C7_06*/ {0x18b, 10023}, + /*II_F3_0F_C7_06*/ {0x18b, 10032} }; _InstInfoEx InstInfosEx[381] = { @@ -1389,382 +1391,382 @@ _InstInfoEx InstInfosEx[381] = { /*II_98*/ {{0x4e, 228}, 0x0, 0, 0, 233, 239}, /*II_99*/ {{0x4e, 245}, 0x0, 0, 0, 250, 255}, /*II_E3*/ {{0x76, 427}, 0x0, 0, 0, 433, 440}, - /*II_0F_A4*/ {{0xac, 876}, 0x0, 1, 0, 0, 0}, - /*II_0F_A5*/ {{0xac, 876}, 0x0, 52, 0, 0, 0}, - /*II_0F_AC*/ {{0xac, 892}, 0x0, 1, 0, 0, 0}, - /*II_0F_AD*/ {{0xac, 892}, 0x0, 52, 0, 0, 0}, - /*II_V_0F_10*/ {{0x126, 2139}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_10*/ {{0x126, 2148}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_10*/ {{0x127, 2157}, 0x20, 69, 0, 0, 0}, - /*II_V_F2_0F_10*/ {{0x127, 2165}, 0x20, 69, 0, 0, 0}, - /*II_VRR_F3_0F_10*/ {{0x128, 2157}, 0x60, 0, 0, 0, 0}, - /*II_VRR_F2_0F_10*/ {{0x129, 2165}, 0x60, 0, 0, 0, 0}, - /*II_V_0F_11*/ {{0x12e, 2139}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_11*/ {{0x12e, 2148}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_11*/ {{0x127, 2157}, 0x20, 69, 0, 0, 0}, - /*II_V_F2_0F_11*/ {{0x127, 2165}, 0x20, 69, 0, 0, 0}, - /*II_VRR_F3_0F_11*/ {{0x12f, 2157}, 0x60, 0, 0, 0, 0}, - /*II_VRR_F2_0F_11*/ {{0x130, 2165}, 0x60, 0, 0, 0, 0}, - /*II_0F_12*/ {{0x131, 2173}, 0x0, 0, 0, 2182, 0}, - /*II_V_0F_12*/ {{0x134, 2217}, 0x0, 72, 0, 2227, 0}, - /*II_V_66_0F_12*/ {{0x135, 2236}, 0x0, 46, 0, 0, 0}, - /*II_V_F3_0F_12*/ {{0x126, 2245}, 0x41, 0, 0, 0, 0}, - /*II_V_F2_0F_12*/ {{0x136, 2256}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_13*/ {{0x139, 2227}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_13*/ {{0x139, 2236}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_14*/ {{0x13c, 2286}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_14*/ {{0x13c, 2297}, 0x1, 90, 0, 0, 0}, - /*II_V_0F_15*/ {{0x13c, 2328}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_15*/ {{0x13c, 2339}, 0x1, 90, 0, 0, 0}, - /*II_0F_16*/ {{0x131, 2350}, 0x0, 0, 0, 2359, 0}, - /*II_V_0F_16*/ {{0x134, 2385}, 0x0, 72, 0, 2395, 0}, - /*II_V_66_0F_16*/ {{0x135, 2404}, 0x0, 46, 0, 0, 0}, - /*II_V_F3_0F_16*/ {{0x126, 2413}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_17*/ {{0x139, 2395}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_17*/ {{0x139, 2404}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_28*/ {{0x126, 2489}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_28*/ {{0x126, 2498}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_29*/ {{0x12e, 2489}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_29*/ {{0x12e, 2498}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_2A*/ {{0x135, 2547}, 0x2, 79, 0, 0, 0}, - /*II_V_F2_0F_2A*/ {{0x135, 2558}, 0x2, 79, 0, 0, 0}, - /*II_V_0F_2B*/ {{0x147, 2605}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_2B*/ {{0x147, 2615}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_2C*/ {{0x14c, 2669}, 0x42, 0, 0, 0, 0}, - /*II_V_F2_0F_2C*/ {{0x14c, 2681}, 0x42, 0, 0, 0, 0}, - /*II_V_F3_0F_2D*/ {{0x14c, 2733}, 0x42, 0, 0, 0, 0}, - /*II_V_F2_0F_2D*/ {{0x14c, 2744}, 0x42, 0, 0, 0, 0}, - /*II_V_0F_2E*/ {{0x14f, 2773}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_2E*/ {{0x150, 2783}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_2F*/ {{0x14f, 2809}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_2F*/ {{0x150, 2818}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_50*/ {{0x153, 2847}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_50*/ {{0x153, 2858}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_51*/ {{0x126, 2901}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_51*/ {{0x126, 2910}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_51*/ {{0x135, 2919}, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_51*/ {{0x135, 2928}, 0x0, 72, 0, 0, 0}, - /*II_V_0F_52*/ {{0x126, 2955}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_52*/ {{0x135, 2965}, 0x0, 71, 0, 0, 0}, - /*II_V_0F_53*/ {{0x126, 2989}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_53*/ {{0x135, 2997}, 0x0, 71, 0, 0, 0}, - /*II_V_0F_54*/ {{0x13c, 3019}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_54*/ {{0x13c, 3027}, 0x1, 90, 0, 0, 0}, - /*II_V_0F_55*/ {{0x13c, 3051}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_55*/ {{0x13c, 3060}, 0x1, 90, 0, 0, 0}, - /*II_V_0F_56*/ {{0x13c, 3081}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_56*/ {{0x13c, 3088}, 0x1, 90, 0, 0, 0}, - /*II_V_0F_57*/ {{0x13c, 3109}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_57*/ {{0x13c, 3117}, 0x1, 90, 0, 0, 0}, - /*II_V_0F_58*/ {{0x13c, 3153}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_58*/ {{0x13c, 3161}, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_58*/ {{0x135, 3169}, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_58*/ {{0x135, 3177}, 0x0, 72, 0, 0, 0}, - /*II_V_0F_59*/ {{0x13c, 3213}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_59*/ {{0x13c, 3221}, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_59*/ {{0x135, 3229}, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_59*/ {{0x135, 3237}, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5A*/ {{0x156, 3285}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_5A*/ {{0x157, 3296}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_5A*/ {{0x135, 3307}, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5A*/ {{0x135, 3318}, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5B*/ {{0x126, 3360}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_5B*/ {{0x126, 3371}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_5B*/ {{0x126, 3382}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_5C*/ {{0x13c, 3422}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_5C*/ {{0x13c, 3430}, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_5C*/ {{0x135, 3438}, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5C*/ {{0x135, 3446}, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5D*/ {{0x13c, 3482}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_5D*/ {{0x13c, 3490}, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_5D*/ {{0x135, 3498}, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5D*/ {{0x135, 3506}, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5E*/ {{0x13c, 3542}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_5E*/ {{0x13c, 3550}, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_5E*/ {{0x135, 3558}, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5E*/ {{0x135, 3566}, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5F*/ {{0x13c, 3602}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_5F*/ {{0x13c, 3610}, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_5F*/ {{0x135, 3618}, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5F*/ {{0x135, 3626}, 0x0, 72, 0, 0, 0}, - /*II_V_66_0F_60*/ {{0x135, 3645}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_61*/ {{0x135, 3668}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_62*/ {{0x135, 3691}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_63*/ {{0x135, 3713}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_64*/ {{0x135, 3733}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_65*/ {{0x135, 3752}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_66*/ {{0x135, 3771}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_67*/ {{0x135, 3791}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_68*/ {{0x135, 3813}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_69*/ {{0x135, 3836}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_6A*/ {{0x135, 3859}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_6B*/ {{0x135, 3881}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_6C*/ {{0x135, 3904}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_6D*/ {{0x135, 3929}, 0x0, 73, 0, 0, 0}, - /*II_0F_6E*/ {{0x15a, 3942}, 0x0, 0, 0, 0, 3948}, - /*II_66_0F_6E*/ {{0x15b, 3942}, 0x0, 0, 0, 0, 3948}, - /*II_V_66_0F_6E*/ {{0x15c, 3954}, 0x46, 0, 0, 3961, 0}, - /*II_V_66_0F_6F*/ {{0x126, 3984}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_6F*/ {{0x126, 3993}, 0x41, 0, 0, 0, 0}, - /*II_0F_70*/ {{0x15e, 4002}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_70*/ {{0x15f, 4010}, 0x0, 1, 0, 0, 0}, - /*II_F3_0F_70*/ {{0x15f, 4018}, 0x0, 1, 0, 0, 0}, - /*II_F2_0F_70*/ {{0x15f, 4027}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_70*/ {{0x160, 4036}, 0x40, 1, 0, 0, 0}, - /*II_V_F3_0F_70*/ {{0x160, 4045}, 0x40, 1, 0, 0, 0}, - /*II_V_F2_0F_70*/ {{0x160, 4055}, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_74*/ {{0x135, 4074}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_75*/ {{0x135, 4093}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_76*/ {{0x135, 4112}, 0x0, 73, 0, 0, 0}, - /*II_V_0F_77*/ {{0x162, 4128}, 0x49, 0, 0, 4140, 0}, - /*II_66_0F_78*/ {{0x164, 4158}, 0x0, 8, 0, 0, 0}, - /*II_F2_0F_78*/ {{0x165, 4165}, 0x0, 7, 8, 0, 0}, - /*II_V_66_0F_7C*/ {{0x13c, 4219}, 0x1, 90, 0, 0, 0}, - /*II_V_F2_0F_7C*/ {{0x13c, 4228}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_7D*/ {{0x13c, 4253}, 0x1, 90, 0, 0, 0}, - /*II_V_F2_0F_7D*/ {{0x13c, 4262}, 0x1, 90, 0, 0, 0}, - /*II_0F_7E*/ {{0x16c, 3942}, 0x0, 0, 0, 0, 3948}, - /*II_66_0F_7E*/ {{0x16d, 3942}, 0x0, 0, 0, 0, 3948}, - /*II_V_66_0F_7E*/ {{0x16e, 3954}, 0x46, 0, 0, 3961, 0}, - /*II_V_F3_0F_7E*/ {{0x150, 3961}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_7F*/ {{0x12e, 3984}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_7F*/ {{0x12e, 3993}, 0x41, 0, 0, 0, 0}, - /*II_0F_AE_04*/ {{0x170, 4271}, 0x0, 0, 0, 0, 4278}, - /*II_0F_AE_05*/ {{0x171, 4287}, 0x0, 0, 0, 4295, 4303}, - /*II_0F_AE_06*/ {{0x171, 4313}, 0x0, 0, 0, 4321, 4331}, - /*II_0F_AE_07*/ {{0x172, 4343}, 0x0, 0, 0, 4351, 0}, - /*II_0F_C2*/ {{0x179, 4392}, 0x0, 0, 0, 4401, 4410}, - /*II_66_0F_C2*/ {{0x17a, 4471}, 0x0, 0, 0, 4480, 4489}, - /*II_F3_0F_C2*/ {{0x17b, 4550}, 0x0, 0, 0, 4559, 4568}, - /*II_F2_0F_C2*/ {{0x17c, 4629}, 0x0, 0, 0, 4638, 4647}, - /*II_V_0F_C2*/ {{0x17d, 4708}, 0x1, 90, 0, 4718, 4728}, - /*II_V_66_0F_C2*/ {{0x17d, 5110}, 0x1, 90, 0, 5120, 5130}, - /*II_V_F3_0F_C2*/ {{0x17e, 5512}, 0x0, 71, 0, 5522, 5532}, - /*II_V_F2_0F_C2*/ {{0x17e, 5914}, 0x0, 72, 0, 5924, 5934}, - /*II_0F_C4*/ {{0x17f, 6316}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C4*/ {{0x180, 6316}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_C4*/ {{0x181, 6324}, 0x0, 25, 1, 0, 0}, - /*II_0F_C5*/ {{0x182, 6333}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C5*/ {{0x183, 6333}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_C5*/ {{0x184, 6341}, 0x40, 1, 0, 0, 0}, - /*II_0F_C6*/ {{0x185, 6350}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C6*/ {{0x15f, 6358}, 0x0, 1, 0, 0, 0}, - /*II_V_0F_C6*/ {{0x186, 6366}, 0x1, 90, 1, 0, 0}, - /*II_V_66_0F_C6*/ {{0x186, 6375}, 0x1, 90, 1, 0, 0}, - /*II_0F_C7_01*/ {{0x187, 6384}, 0x0, 0, 0, 0, 6395}, - /*II_V_66_0F_D0*/ {{0x13c, 6436}, 0x1, 90, 0, 0, 0}, - /*II_V_F2_0F_D0*/ {{0x13c, 6447}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_D1*/ {{0x135, 6465}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D2*/ {{0x135, 6480}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D3*/ {{0x135, 6495}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D4*/ {{0x135, 6510}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D5*/ {{0x135, 6526}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D6*/ {{0x18b, 3961}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_D7*/ {{0x18e, 6563}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_D8*/ {{0x135, 6583}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D9*/ {{0x135, 6602}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DA*/ {{0x135, 6620}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DB*/ {{0x135, 6635}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DC*/ {{0x135, 6651}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DD*/ {{0x135, 6651}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DE*/ {{0x135, 6678}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DF*/ {{0x135, 6694}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E0*/ {{0x135, 6709}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E1*/ {{0x135, 6724}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E2*/ {{0x135, 6739}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E3*/ {{0x135, 6754}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E4*/ {{0x135, 6771}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E5*/ {{0x135, 6789}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E6*/ {{0x157, 6829}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_E6*/ {{0x156, 6841}, 0x41, 0, 0, 0, 0}, - /*II_V_F2_0F_E6*/ {{0x157, 6852}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_E7*/ {{0x147, 6880}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_E8*/ {{0x135, 6898}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E9*/ {{0x135, 6915}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EA*/ {{0x135, 6932}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EB*/ {{0x135, 6946}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EC*/ {{0x135, 6960}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_ED*/ {{0x135, 6977}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EE*/ {{0x135, 6994}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EF*/ {{0x135, 7009}, 0x0, 73, 0, 0, 0}, - /*II_V_F2_0F_F0*/ {{0x192, 7023}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_F1*/ {{0x135, 7038}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F2*/ {{0x135, 7053}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F3*/ {{0x135, 7068}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F4*/ {{0x135, 7085}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F5*/ {{0x135, 7104}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F6*/ {{0x135, 7122}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F7*/ {{0x196, 7153}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_F8*/ {{0x135, 7173}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F9*/ {{0x135, 7188}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FA*/ {{0x135, 7203}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FB*/ {{0x135, 7218}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FC*/ {{0x135, 7233}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FD*/ {{0x135, 7248}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FE*/ {{0x135, 7263}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_00*/ {{0x135, 7371}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_01*/ {{0x135, 7388}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_02*/ {{0x135, 7405}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_03*/ {{0x135, 7423}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_04*/ {{0x135, 7444}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_05*/ {{0x135, 7464}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_06*/ {{0x135, 7481}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_07*/ {{0x135, 7499}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_08*/ {{0x135, 7517}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_09*/ {{0x135, 7534}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_0A*/ {{0x135, 7551}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_0B*/ {{0x135, 7570}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_0C*/ {{0x13c, 7581}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_38_0D*/ {{0x13c, 7592}, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_38_0E*/ {{0x126, 7603}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_0F*/ {{0x126, 7612}, 0x41, 0, 0, 0, 0}, - /*II_66_0F_38_10*/ {{0x19f, 7621}, 0x0, 74, 0, 0, 0}, - /*II_66_0F_38_14*/ {{0x19f, 7631}, 0x0, 74, 0, 0, 0}, - /*II_66_0F_38_15*/ {{0x19f, 7641}, 0x0, 74, 0, 0, 0}, - /*II_V_66_0F_38_17*/ {{0x126, 7658}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_18*/ {{0x1a1, 7666}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_19*/ {{0x1a2, 7680}, 0x50, 0, 0, 0, 0}, - /*II_V_66_0F_38_1A*/ {{0x1a3, 7694}, 0x50, 0, 0, 0, 0}, - /*II_V_66_0F_38_1C*/ {{0x1a4, 7717}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_1D*/ {{0x1a4, 7732}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_1E*/ {{0x1a4, 7747}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_20*/ {{0x150, 7765}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_21*/ {{0x14f, 7786}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_22*/ {{0x1a8, 7807}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_23*/ {{0x150, 7828}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_24*/ {{0x14f, 7849}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_25*/ {{0x150, 7870}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_28*/ {{0x135, 7889}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_29*/ {{0x135, 7907}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_2A*/ {{0x1ab, 7927}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_2B*/ {{0x135, 7948}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_2C*/ {{0x13c, 7959}, 0x1, 92, 0, 0, 0}, - /*II_V_66_0F_38_2D*/ {{0x13c, 7971}, 0x1, 92, 0, 0, 0}, - /*II_V_66_0F_38_2E*/ {{0x1ac, 7959}, 0x1, 83, 0, 0, 0}, - /*II_V_66_0F_38_2F*/ {{0x1ac, 7971}, 0x1, 83, 0, 0, 0}, - /*II_V_66_0F_38_30*/ {{0x150, 7993}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_31*/ {{0x14f, 8014}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_32*/ {{0x1a8, 8035}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_33*/ {{0x150, 8056}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_34*/ {{0x14f, 8077}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_35*/ {{0x150, 8098}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_37*/ {{0x135, 8118}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_38*/ {{0x135, 8136}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_39*/ {{0x135, 8153}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3A*/ {{0x135, 8170}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3B*/ {{0x135, 8187}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3C*/ {{0x135, 8204}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3D*/ {{0x135, 8221}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3E*/ {{0x135, 8238}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3F*/ {{0x135, 8255}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_40*/ {{0x135, 8272}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_41*/ {{0x1a4, 8293}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_96*/ {{0x1ae, 8332}, 0x7, 90, 0, 8348, 0}, - /*II_V_66_0F_38_97*/ {{0x1ae, 8364}, 0x7, 90, 0, 8380, 0}, - /*II_V_66_0F_38_98*/ {{0x1ae, 8396}, 0x7, 90, 0, 8409, 0}, - /*II_V_66_0F_38_99*/ {{0x1af, 8422}, 0x6, 80, 0, 8435, 0}, - /*II_V_66_0F_38_9A*/ {{0x1ae, 8448}, 0x7, 90, 0, 8461, 0}, - /*II_V_66_0F_38_9B*/ {{0x1af, 8474}, 0x6, 80, 0, 8487, 0}, - /*II_V_66_0F_38_9C*/ {{0x1ae, 8500}, 0x7, 90, 0, 8514, 0}, - /*II_V_66_0F_38_9D*/ {{0x1af, 8528}, 0x6, 80, 0, 8542, 0}, - /*II_V_66_0F_38_9E*/ {{0x1ae, 8556}, 0x7, 90, 0, 8570, 0}, - /*II_V_66_0F_38_9F*/ {{0x1af, 8584}, 0x6, 80, 0, 8598, 0}, - /*II_V_66_0F_38_A6*/ {{0x1ae, 8612}, 0x7, 90, 0, 8628, 0}, - /*II_V_66_0F_38_A7*/ {{0x1ae, 8644}, 0x7, 90, 0, 8660, 0}, - /*II_V_66_0F_38_A8*/ {{0x1ae, 8676}, 0x7, 90, 0, 8689, 0}, - /*II_V_66_0F_38_A9*/ {{0x1af, 8702}, 0x6, 80, 0, 8715, 0}, - /*II_V_66_0F_38_AA*/ {{0x1ae, 8728}, 0x7, 90, 0, 8741, 0}, - /*II_V_66_0F_38_AB*/ {{0x1af, 8754}, 0x6, 80, 0, 8767, 0}, - /*II_V_66_0F_38_AC*/ {{0x1ae, 8780}, 0x7, 90, 0, 8794, 0}, - /*II_V_66_0F_38_AD*/ {{0x1af, 8808}, 0x6, 80, 0, 8822, 0}, - /*II_V_66_0F_38_AE*/ {{0x1ae, 8836}, 0x7, 90, 0, 8850, 0}, - /*II_V_66_0F_38_AF*/ {{0x1af, 8864}, 0x6, 80, 0, 8878, 0}, - /*II_V_66_0F_38_B6*/ {{0x1ae, 8892}, 0x7, 90, 0, 8908, 0}, - /*II_V_66_0F_38_B7*/ {{0x1ae, 8924}, 0x7, 90, 0, 8940, 0}, - /*II_V_66_0F_38_B8*/ {{0x1ae, 8956}, 0x7, 90, 0, 8969, 0}, - /*II_V_66_0F_38_B9*/ {{0x1af, 8982}, 0x6, 80, 0, 8995, 0}, - /*II_V_66_0F_38_BA*/ {{0x1ae, 9008}, 0x7, 90, 0, 9021, 0}, - /*II_V_66_0F_38_BB*/ {{0x1af, 9034}, 0x6, 80, 0, 9047, 0}, - /*II_V_66_0F_38_BC*/ {{0x1ae, 9060}, 0x7, 90, 0, 9074, 0}, - /*II_V_66_0F_38_BD*/ {{0x1af, 9088}, 0x6, 80, 0, 9102, 0}, - /*II_V_66_0F_38_BE*/ {{0x1ae, 9116}, 0x7, 90, 0, 9130, 0}, - /*II_V_66_0F_38_BF*/ {{0x1af, 9144}, 0x6, 80, 0, 9158, 0}, - /*II_V_66_0F_38_DB*/ {{0x1b1, 9180}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_DC*/ {{0x1b2, 9197}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_DD*/ {{0x1b2, 9218}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_DE*/ {{0x1b2, 9239}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_DF*/ {{0x1b2, 9260}, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_3A_04*/ {{0x1b7, 7581}, 0x41, 1, 0, 0, 0}, - /*II_V_66_0F_3A_05*/ {{0x1b7, 7592}, 0x41, 1, 0, 0, 0}, - /*II_V_66_0F_3A_06*/ {{0x1b8, 9287}, 0x10, 86, 1, 0, 0}, - /*II_66_0F_3A_08*/ {{0x19f, 9299}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_08*/ {{0x1b7, 9308}, 0x41, 1, 0, 0, 0}, - /*II_66_0F_3A_09*/ {{0x19f, 9318}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_09*/ {{0x1b7, 9327}, 0x41, 1, 0, 0, 0}, - /*II_66_0F_3A_0A*/ {{0x1b9, 9337}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0A*/ {{0x181, 9346}, 0x0, 71, 1, 0, 0}, - /*II_66_0F_3A_0B*/ {{0x1ba, 9356}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0B*/ {{0x181, 9365}, 0x0, 72, 1, 0, 0}, - /*II_66_0F_3A_0C*/ {{0x19f, 9375}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0C*/ {{0x186, 9384}, 0x1, 90, 1, 0, 0}, - /*II_66_0F_3A_0D*/ {{0x19f, 9394}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0D*/ {{0x186, 9403}, 0x1, 90, 1, 0, 0}, - /*II_66_0F_3A_0E*/ {{0x19f, 9413}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0E*/ {{0x181, 9422}, 0x0, 73, 1, 0, 0}, - /*II_0F_3A_0F*/ {{0x1bb, 9432}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_3A_0F*/ {{0x1bc, 9432}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0F*/ {{0x181, 9441}, 0x0, 73, 1, 0, 0}, - /*II_66_0F_3A_14*/ {{0x1bd, 9451}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_14*/ {{0x1be, 9459}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_15*/ {{0x1bf, 6333}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_15*/ {{0x1c0, 6341}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_16*/ {{0x1c1, 9468}, 0x0, 1, 0, 0, 9476}, - /*II_V_66_0F_3A_16*/ {{0x1c2, 9484}, 0x46, 1, 0, 9493, 0}, - /*II_66_0F_3A_17*/ {{0x1c3, 9502}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_17*/ {{0x1c4, 9513}, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_3A_18*/ {{0x1b8, 9525}, 0x10, 73, 1, 0, 0}, - /*II_V_66_0F_3A_19*/ {{0x1c5, 9538}, 0x50, 1, 0, 0, 0}, - /*II_66_0F_3A_20*/ {{0x1c6, 9552}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_20*/ {{0x181, 9560}, 0x0, 76, 1, 0, 0}, - /*II_66_0F_3A_21*/ {{0x1b9, 9569}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_21*/ {{0x181, 9579}, 0x0, 71, 1, 0, 0}, - /*II_66_0F_3A_22*/ {{0x1c7, 9590}, 0x0, 1, 0, 0, 9598}, - /*II_V_66_0F_3A_22*/ {{0x181, 9606}, 0x6, 79, 1, 9615, 0}, - /*II_66_0F_3A_40*/ {{0x19f, 9624}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_40*/ {{0x186, 9630}, 0x1, 90, 1, 0, 0}, - /*II_66_0F_3A_41*/ {{0x19f, 9637}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_41*/ {{0x181, 9643}, 0x0, 73, 1, 0, 0}, - /*II_66_0F_3A_42*/ {{0x19f, 9650}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_42*/ {{0x181, 9659}, 0x0, 73, 1, 0, 0}, - /*II_66_0F_3A_44*/ {{0x1c8, 9669}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_44*/ {{0x1c9, 9680}, 0x0, 73, 1, 0, 0}, - /*II_V_66_0F_3A_4A*/ {{0x186, 9692}, 0x1, 90, 84, 0, 0}, - /*II_V_66_0F_3A_4B*/ {{0x186, 9703}, 0x1, 90, 84, 0, 0}, - /*II_V_66_0F_3A_4C*/ {{0x181, 9714}, 0x0, 73, 82, 0, 0}, - /*II_66_0F_3A_60*/ {{0x1ca, 9725}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_60*/ {{0x160, 9736}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_61*/ {{0x1ca, 9748}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_61*/ {{0x160, 9759}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_62*/ {{0x1ca, 9771}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_62*/ {{0x160, 9782}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_63*/ {{0x1ca, 9794}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_63*/ {{0x160, 9805}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_DF*/ {{0x1cb, 9817}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_DF*/ {{0x1cc, 9834}, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_71_02*/ {{0x1cf, 6465}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_71_04*/ {{0x1cf, 6724}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_71_06*/ {{0x1cf, 7038}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_02*/ {{0x1cf, 6480}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_04*/ {{0x1cf, 6739}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_06*/ {{0x1cf, 7053}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_02*/ {{0x1cf, 6495}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_03*/ {{0x1cf, 9860}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_06*/ {{0x1cf, 7068}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_07*/ {{0x1cf, 9877}, 0x0, 1, 0, 0, 0}, - /*II_0F_AE_00*/ {{0x170, 9886}, 0x0, 0, 0, 0, 9894}, - /*II_0F_AE_01*/ {{0x170, 9914}, 0x0, 0, 0, 0, 9923}, - /*II_V_0F_AE_02*/ {{0x1d2, 9963}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_AE_03*/ {{0x1d2, 9992}, 0x40, 0, 0, 0, 0} + /*II_0F_A4*/ {{0xad, 876}, 0x0, 1, 0, 0, 0}, + /*II_0F_A5*/ {{0xad, 876}, 0x0, 42, 0, 0, 0}, + /*II_0F_AC*/ {{0xad, 892}, 0x0, 1, 0, 0, 0}, + /*II_0F_AD*/ {{0xad, 892}, 0x0, 42, 0, 0, 0}, + /*II_V_0F_10*/ {{0x129, 2151}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_10*/ {{0x129, 2160}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_10*/ {{0x12a, 2169}, 0x20, 31, 0, 0, 0}, + /*II_V_F2_0F_10*/ {{0x12a, 2177}, 0x20, 31, 0, 0, 0}, + /*II_VRR_F3_0F_10*/ {{0x12b, 2169}, 0x60, 0, 0, 0, 0}, + /*II_VRR_F2_0F_10*/ {{0x12c, 2177}, 0x60, 0, 0, 0, 0}, + /*II_V_0F_11*/ {{0x131, 2151}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_11*/ {{0x131, 2160}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_11*/ {{0x12a, 2169}, 0x20, 31, 0, 0, 0}, + /*II_V_F2_0F_11*/ {{0x12a, 2177}, 0x20, 31, 0, 0, 0}, + /*II_VRR_F3_0F_11*/ {{0x132, 2169}, 0x60, 0, 0, 0, 0}, + /*II_VRR_F2_0F_11*/ {{0x133, 2177}, 0x60, 0, 0, 0, 0}, + /*II_0F_12*/ {{0x134, 2185}, 0x0, 0, 0, 2194, 0}, + /*II_V_0F_12*/ {{0x137, 2229}, 0x0, 86, 0, 2239, 0}, + /*II_V_66_0F_12*/ {{0x138, 2248}, 0x0, 57, 0, 0, 0}, + /*II_V_F3_0F_12*/ {{0x129, 2257}, 0x41, 0, 0, 0, 0}, + /*II_V_F2_0F_12*/ {{0x139, 2268}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_13*/ {{0x13c, 2239}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_13*/ {{0x13c, 2248}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_14*/ {{0x13f, 2298}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_14*/ {{0x13f, 2309}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_15*/ {{0x13f, 2340}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_15*/ {{0x13f, 2351}, 0x1, 91, 0, 0, 0}, + /*II_0F_16*/ {{0x134, 2362}, 0x0, 0, 0, 2371, 0}, + /*II_V_0F_16*/ {{0x137, 2397}, 0x0, 86, 0, 2407, 0}, + /*II_V_66_0F_16*/ {{0x138, 2416}, 0x0, 57, 0, 0, 0}, + /*II_V_F3_0F_16*/ {{0x129, 2425}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_17*/ {{0x13c, 2407}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_17*/ {{0x13c, 2416}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_28*/ {{0x129, 2501}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_28*/ {{0x129, 2510}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_29*/ {{0x131, 2501}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_29*/ {{0x131, 2510}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_2A*/ {{0x138, 2559}, 0x2, 73, 0, 0, 0}, + /*II_V_F2_0F_2A*/ {{0x138, 2570}, 0x2, 73, 0, 0, 0}, + /*II_V_0F_2B*/ {{0x14a, 2617}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_2B*/ {{0x14a, 2627}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_2C*/ {{0x14f, 2681}, 0x42, 0, 0, 0, 0}, + /*II_V_F2_0F_2C*/ {{0x14f, 2693}, 0x42, 0, 0, 0, 0}, + /*II_V_F3_0F_2D*/ {{0x14f, 2745}, 0x42, 0, 0, 0, 0}, + /*II_V_F2_0F_2D*/ {{0x14f, 2756}, 0x42, 0, 0, 0, 0}, + /*II_V_0F_2E*/ {{0x152, 2785}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_2E*/ {{0x153, 2795}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_2F*/ {{0x152, 2821}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_2F*/ {{0x153, 2830}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_50*/ {{0x156, 2859}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_50*/ {{0x156, 2870}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_51*/ {{0x129, 2913}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_51*/ {{0x129, 2922}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_51*/ {{0x138, 2931}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_51*/ {{0x138, 2940}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_52*/ {{0x129, 2967}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_52*/ {{0x138, 2977}, 0x0, 85, 0, 0, 0}, + /*II_V_0F_53*/ {{0x129, 3001}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_53*/ {{0x138, 3009}, 0x0, 85, 0, 0, 0}, + /*II_V_0F_54*/ {{0x13f, 3031}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_54*/ {{0x13f, 3039}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_55*/ {{0x13f, 3063}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_55*/ {{0x13f, 3072}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_56*/ {{0x13f, 3093}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_56*/ {{0x13f, 3100}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_57*/ {{0x13f, 3121}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_57*/ {{0x13f, 3129}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_58*/ {{0x13f, 3165}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_58*/ {{0x13f, 3173}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_58*/ {{0x138, 3181}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_58*/ {{0x138, 3189}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_59*/ {{0x13f, 3225}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_59*/ {{0x13f, 3233}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_59*/ {{0x138, 3241}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_59*/ {{0x138, 3249}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5A*/ {{0x159, 3297}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_5A*/ {{0x15a, 3308}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_5A*/ {{0x138, 3319}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5A*/ {{0x138, 3330}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5B*/ {{0x129, 3372}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_5B*/ {{0x129, 3383}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_5B*/ {{0x129, 3394}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_5C*/ {{0x13f, 3434}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_5C*/ {{0x13f, 3442}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_5C*/ {{0x138, 3450}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5C*/ {{0x138, 3458}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5D*/ {{0x13f, 3494}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_5D*/ {{0x13f, 3502}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_5D*/ {{0x138, 3510}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5D*/ {{0x138, 3518}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5E*/ {{0x13f, 3554}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_5E*/ {{0x13f, 3562}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_5E*/ {{0x138, 3570}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5E*/ {{0x138, 3578}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5F*/ {{0x13f, 3614}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_5F*/ {{0x13f, 3622}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_5F*/ {{0x138, 3630}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5F*/ {{0x138, 3638}, 0x0, 86, 0, 0, 0}, + /*II_V_66_0F_60*/ {{0x138, 3657}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_61*/ {{0x138, 3680}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_62*/ {{0x138, 3703}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_63*/ {{0x138, 3725}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_64*/ {{0x138, 3745}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_65*/ {{0x138, 3764}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_66*/ {{0x138, 3783}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_67*/ {{0x138, 3803}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_68*/ {{0x138, 3825}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_69*/ {{0x138, 3848}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_6A*/ {{0x138, 3871}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_6B*/ {{0x138, 3893}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_6C*/ {{0x138, 3916}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_6D*/ {{0x138, 3941}, 0x0, 87, 0, 0, 0}, + /*II_0F_6E*/ {{0x15d, 3954}, 0x0, 0, 0, 0, 3960}, + /*II_66_0F_6E*/ {{0x15e, 3954}, 0x0, 0, 0, 0, 3960}, + /*II_V_66_0F_6E*/ {{0x15f, 3966}, 0x46, 0, 0, 3973, 0}, + /*II_V_66_0F_6F*/ {{0x129, 3996}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_6F*/ {{0x129, 4005}, 0x41, 0, 0, 0, 0}, + /*II_0F_70*/ {{0x161, 4014}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_70*/ {{0x162, 4022}, 0x0, 1, 0, 0, 0}, + /*II_F3_0F_70*/ {{0x162, 4030}, 0x0, 1, 0, 0, 0}, + /*II_F2_0F_70*/ {{0x162, 4039}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_70*/ {{0x163, 4048}, 0x40, 1, 0, 0, 0}, + /*II_V_F3_0F_70*/ {{0x163, 4057}, 0x40, 1, 0, 0, 0}, + /*II_V_F2_0F_70*/ {{0x163, 4067}, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_74*/ {{0x138, 4086}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_75*/ {{0x138, 4105}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_76*/ {{0x138, 4124}, 0x0, 87, 0, 0, 0}, + /*II_V_0F_77*/ {{0x165, 4140}, 0x49, 0, 0, 4152, 0}, + /*II_66_0F_78*/ {{0x167, 4170}, 0x0, 49, 0, 0, 0}, + /*II_F2_0F_78*/ {{0x168, 4177}, 0x0, 48, 49, 0, 0}, + /*II_V_66_0F_7C*/ {{0x13f, 4231}, 0x1, 91, 0, 0, 0}, + /*II_V_F2_0F_7C*/ {{0x13f, 4240}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_7D*/ {{0x13f, 4265}, 0x1, 91, 0, 0, 0}, + /*II_V_F2_0F_7D*/ {{0x13f, 4274}, 0x1, 91, 0, 0, 0}, + /*II_0F_7E*/ {{0x16f, 3954}, 0x0, 0, 0, 0, 3960}, + /*II_66_0F_7E*/ {{0x170, 3954}, 0x0, 0, 0, 0, 3960}, + /*II_V_66_0F_7E*/ {{0x171, 3966}, 0x46, 0, 0, 3973, 0}, + /*II_V_F3_0F_7E*/ {{0x153, 3973}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_7F*/ {{0x131, 3996}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_7F*/ {{0x131, 4005}, 0x41, 0, 0, 0, 0}, + /*II_0F_AE_04*/ {{0x173, 4283}, 0x0, 0, 0, 0, 4290}, + /*II_0F_AE_05*/ {{0x174, 4299}, 0x0, 0, 0, 4307, 4315}, + /*II_0F_AE_06*/ {{0x174, 4325}, 0x0, 0, 0, 4333, 4343}, + /*II_0F_AE_07*/ {{0x175, 4355}, 0x0, 0, 0, 4363, 0}, + /*II_0F_C2*/ {{0x17c, 4404}, 0x0, 0, 0, 4413, 4422}, + /*II_66_0F_C2*/ {{0x17d, 4483}, 0x0, 0, 0, 4492, 4501}, + /*II_F3_0F_C2*/ {{0x17e, 4562}, 0x0, 0, 0, 4571, 4580}, + /*II_F2_0F_C2*/ {{0x17f, 4641}, 0x0, 0, 0, 4650, 4659}, + /*II_V_0F_C2*/ {{0x180, 4720}, 0x1, 91, 0, 4730, 4740}, + /*II_V_66_0F_C2*/ {{0x180, 5122}, 0x1, 91, 0, 5132, 5142}, + /*II_V_F3_0F_C2*/ {{0x181, 5524}, 0x0, 85, 0, 5534, 5544}, + /*II_V_F2_0F_C2*/ {{0x181, 5926}, 0x0, 86, 0, 5936, 5946}, + /*II_0F_C4*/ {{0x182, 6328}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C4*/ {{0x183, 6328}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_C4*/ {{0x184, 6336}, 0x0, 79, 1, 0, 0}, + /*II_0F_C5*/ {{0x185, 6345}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C5*/ {{0x186, 6345}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_C5*/ {{0x187, 6353}, 0x40, 1, 0, 0, 0}, + /*II_0F_C6*/ {{0x188, 6362}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C6*/ {{0x162, 6370}, 0x0, 1, 0, 0, 0}, + /*II_V_0F_C6*/ {{0x189, 6378}, 0x1, 91, 1, 0, 0}, + /*II_V_66_0F_C6*/ {{0x189, 6387}, 0x1, 91, 1, 0, 0}, + /*II_0F_C7_01*/ {{0x18a, 6396}, 0x0, 0, 0, 0, 6407}, + /*II_V_66_0F_D0*/ {{0x13f, 6448}, 0x1, 91, 0, 0, 0}, + /*II_V_F2_0F_D0*/ {{0x13f, 6459}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_D1*/ {{0x138, 6477}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D2*/ {{0x138, 6492}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D3*/ {{0x138, 6507}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D4*/ {{0x138, 6522}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D5*/ {{0x138, 6538}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D6*/ {{0x18e, 3973}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_D7*/ {{0x191, 6575}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_D8*/ {{0x138, 6595}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D9*/ {{0x138, 6614}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DA*/ {{0x138, 6632}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DB*/ {{0x138, 6647}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DC*/ {{0x138, 6663}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DD*/ {{0x138, 6663}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DE*/ {{0x138, 6690}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DF*/ {{0x138, 6706}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E0*/ {{0x138, 6721}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E1*/ {{0x138, 6736}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E2*/ {{0x138, 6751}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E3*/ {{0x138, 6766}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E4*/ {{0x138, 6783}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E5*/ {{0x138, 6801}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E6*/ {{0x15a, 6841}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_E6*/ {{0x159, 6853}, 0x41, 0, 0, 0, 0}, + /*II_V_F2_0F_E6*/ {{0x15a, 6864}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_E7*/ {{0x14a, 6892}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_E8*/ {{0x138, 6910}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E9*/ {{0x138, 6927}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EA*/ {{0x138, 6944}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EB*/ {{0x138, 6958}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EC*/ {{0x138, 6972}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_ED*/ {{0x138, 6989}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EE*/ {{0x138, 7006}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EF*/ {{0x138, 7021}, 0x0, 87, 0, 0, 0}, + /*II_V_F2_0F_F0*/ {{0x195, 7035}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_F1*/ {{0x138, 7050}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F2*/ {{0x138, 7065}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F3*/ {{0x138, 7080}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F4*/ {{0x138, 7097}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F5*/ {{0x138, 7116}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F6*/ {{0x138, 7134}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F7*/ {{0x199, 7165}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_F8*/ {{0x138, 7185}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F9*/ {{0x138, 7200}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FA*/ {{0x138, 7215}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FB*/ {{0x138, 7230}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FC*/ {{0x138, 7245}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FD*/ {{0x138, 7260}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FE*/ {{0x138, 7275}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_00*/ {{0x138, 7383}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_01*/ {{0x138, 7400}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_02*/ {{0x138, 7417}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_03*/ {{0x138, 7435}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_04*/ {{0x138, 7456}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_05*/ {{0x138, 7476}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_06*/ {{0x138, 7493}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_07*/ {{0x138, 7511}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_08*/ {{0x138, 7529}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_09*/ {{0x138, 7546}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_0A*/ {{0x138, 7563}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_0B*/ {{0x138, 7582}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_0C*/ {{0x13f, 7593}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_38_0D*/ {{0x13f, 7604}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_38_0E*/ {{0x129, 7615}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_0F*/ {{0x129, 7624}, 0x41, 0, 0, 0, 0}, + /*II_66_0F_38_10*/ {{0x1a2, 7633}, 0x0, 32, 0, 0, 0}, + /*II_66_0F_38_14*/ {{0x1a2, 7643}, 0x0, 32, 0, 0, 0}, + /*II_66_0F_38_15*/ {{0x1a2, 7653}, 0x0, 32, 0, 0, 0}, + /*II_V_66_0F_38_17*/ {{0x129, 7670}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_18*/ {{0x1a4, 7678}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_19*/ {{0x1a5, 7692}, 0x50, 0, 0, 0, 0}, + /*II_V_66_0F_38_1A*/ {{0x1a6, 7706}, 0x50, 0, 0, 0, 0}, + /*II_V_66_0F_38_1C*/ {{0x1a7, 7729}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_1D*/ {{0x1a7, 7744}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_1E*/ {{0x1a7, 7759}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_20*/ {{0x153, 7777}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_21*/ {{0x152, 7798}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_22*/ {{0x1ab, 7819}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_23*/ {{0x153, 7840}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_24*/ {{0x152, 7861}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_25*/ {{0x153, 7882}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_28*/ {{0x138, 7901}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_29*/ {{0x138, 7919}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_2A*/ {{0x1ae, 7939}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_2B*/ {{0x138, 7960}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_2C*/ {{0x13f, 7971}, 0x1, 67, 0, 0, 0}, + /*II_V_66_0F_38_2D*/ {{0x13f, 7983}, 0x1, 67, 0, 0, 0}, + /*II_V_66_0F_38_2E*/ {{0x1af, 7971}, 0x1, 36, 0, 0, 0}, + /*II_V_66_0F_38_2F*/ {{0x1af, 7983}, 0x1, 36, 0, 0, 0}, + /*II_V_66_0F_38_30*/ {{0x153, 8005}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_31*/ {{0x152, 8026}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_32*/ {{0x1ab, 8047}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_33*/ {{0x153, 8068}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_34*/ {{0x152, 8089}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_35*/ {{0x153, 8110}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_37*/ {{0x138, 8130}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_38*/ {{0x138, 8148}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_39*/ {{0x138, 8165}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3A*/ {{0x138, 8182}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3B*/ {{0x138, 8199}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3C*/ {{0x138, 8216}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3D*/ {{0x138, 8233}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3E*/ {{0x138, 8250}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3F*/ {{0x138, 8267}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_40*/ {{0x138, 8284}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_41*/ {{0x1a7, 8305}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_96*/ {{0x1b1, 8344}, 0x7, 91, 0, 8360, 0}, + /*II_V_66_0F_38_97*/ {{0x1b1, 8376}, 0x7, 91, 0, 8392, 0}, + /*II_V_66_0F_38_98*/ {{0x1b1, 8408}, 0x7, 91, 0, 8421, 0}, + /*II_V_66_0F_38_99*/ {{0x1b2, 8434}, 0x6, 88, 0, 8447, 0}, + /*II_V_66_0F_38_9A*/ {{0x1b1, 8460}, 0x7, 91, 0, 8473, 0}, + /*II_V_66_0F_38_9B*/ {{0x1b2, 8486}, 0x6, 88, 0, 8499, 0}, + /*II_V_66_0F_38_9C*/ {{0x1b1, 8512}, 0x7, 91, 0, 8526, 0}, + /*II_V_66_0F_38_9D*/ {{0x1b2, 8540}, 0x6, 88, 0, 8554, 0}, + /*II_V_66_0F_38_9E*/ {{0x1b1, 8568}, 0x7, 91, 0, 8582, 0}, + /*II_V_66_0F_38_9F*/ {{0x1b2, 8596}, 0x6, 88, 0, 8610, 0}, + /*II_V_66_0F_38_A6*/ {{0x1b1, 8624}, 0x7, 91, 0, 8640, 0}, + /*II_V_66_0F_38_A7*/ {{0x1b1, 8656}, 0x7, 91, 0, 8672, 0}, + /*II_V_66_0F_38_A8*/ {{0x1b1, 8688}, 0x7, 91, 0, 8701, 0}, + /*II_V_66_0F_38_A9*/ {{0x1b2, 8714}, 0x6, 88, 0, 8727, 0}, + /*II_V_66_0F_38_AA*/ {{0x1b1, 8740}, 0x7, 91, 0, 8753, 0}, + /*II_V_66_0F_38_AB*/ {{0x1b2, 8766}, 0x6, 88, 0, 8779, 0}, + /*II_V_66_0F_38_AC*/ {{0x1b1, 8792}, 0x7, 91, 0, 8806, 0}, + /*II_V_66_0F_38_AD*/ {{0x1b2, 8820}, 0x6, 88, 0, 8834, 0}, + /*II_V_66_0F_38_AE*/ {{0x1b1, 8848}, 0x7, 91, 0, 8862, 0}, + /*II_V_66_0F_38_AF*/ {{0x1b2, 8876}, 0x6, 88, 0, 8890, 0}, + /*II_V_66_0F_38_B6*/ {{0x1b1, 8904}, 0x7, 91, 0, 8920, 0}, + /*II_V_66_0F_38_B7*/ {{0x1b1, 8936}, 0x7, 91, 0, 8952, 0}, + /*II_V_66_0F_38_B8*/ {{0x1b1, 8968}, 0x7, 91, 0, 8981, 0}, + /*II_V_66_0F_38_B9*/ {{0x1b2, 8994}, 0x6, 88, 0, 9007, 0}, + /*II_V_66_0F_38_BA*/ {{0x1b1, 9020}, 0x7, 91, 0, 9033, 0}, + /*II_V_66_0F_38_BB*/ {{0x1b2, 9046}, 0x6, 88, 0, 9059, 0}, + /*II_V_66_0F_38_BC*/ {{0x1b1, 9072}, 0x7, 91, 0, 9086, 0}, + /*II_V_66_0F_38_BD*/ {{0x1b2, 9100}, 0x6, 88, 0, 9114, 0}, + /*II_V_66_0F_38_BE*/ {{0x1b1, 9128}, 0x7, 91, 0, 9142, 0}, + /*II_V_66_0F_38_BF*/ {{0x1b2, 9156}, 0x6, 88, 0, 9170, 0}, + /*II_V_66_0F_38_DB*/ {{0x1b4, 9192}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_DC*/ {{0x1b5, 9209}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_DD*/ {{0x1b5, 9230}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_DE*/ {{0x1b5, 9251}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_DF*/ {{0x1b5, 9272}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_3A_04*/ {{0x1ba, 7593}, 0x41, 1, 0, 0, 0}, + /*II_V_66_0F_3A_05*/ {{0x1ba, 7604}, 0x41, 1, 0, 0, 0}, + /*II_V_66_0F_3A_06*/ {{0x1bb, 9299}, 0x10, 89, 1, 0, 0}, + /*II_66_0F_3A_08*/ {{0x1a2, 9311}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_08*/ {{0x1ba, 9320}, 0x41, 1, 0, 0, 0}, + /*II_66_0F_3A_09*/ {{0x1a2, 9330}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_09*/ {{0x1ba, 9339}, 0x41, 1, 0, 0, 0}, + /*II_66_0F_3A_0A*/ {{0x1bc, 9349}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0A*/ {{0x184, 9358}, 0x0, 85, 1, 0, 0}, + /*II_66_0F_3A_0B*/ {{0x1bd, 9368}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0B*/ {{0x184, 9377}, 0x0, 86, 1, 0, 0}, + /*II_66_0F_3A_0C*/ {{0x1a2, 9387}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0C*/ {{0x189, 9396}, 0x1, 91, 1, 0, 0}, + /*II_66_0F_3A_0D*/ {{0x1a2, 9406}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0D*/ {{0x189, 9415}, 0x1, 91, 1, 0, 0}, + /*II_66_0F_3A_0E*/ {{0x1a2, 9425}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0E*/ {{0x184, 9434}, 0x0, 87, 1, 0, 0}, + /*II_0F_3A_0F*/ {{0x1be, 9444}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_3A_0F*/ {{0x1bf, 9444}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0F*/ {{0x184, 9453}, 0x0, 87, 1, 0, 0}, + /*II_66_0F_3A_14*/ {{0x1c0, 9463}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_14*/ {{0x1c1, 9471}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_15*/ {{0x1c2, 6345}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_15*/ {{0x1c3, 6353}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_16*/ {{0x1c4, 9480}, 0x0, 1, 0, 0, 9488}, + /*II_V_66_0F_3A_16*/ {{0x1c5, 9496}, 0x46, 1, 0, 9505, 0}, + /*II_66_0F_3A_17*/ {{0x1c6, 9514}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_17*/ {{0x1c7, 9525}, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_3A_18*/ {{0x1bb, 9537}, 0x10, 87, 1, 0, 0}, + /*II_V_66_0F_3A_19*/ {{0x1c8, 9550}, 0x50, 1, 0, 0, 0}, + /*II_66_0F_3A_20*/ {{0x1c9, 9564}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_20*/ {{0x184, 9572}, 0x0, 80, 1, 0, 0}, + /*II_66_0F_3A_21*/ {{0x1bc, 9581}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_21*/ {{0x184, 9591}, 0x0, 85, 1, 0, 0}, + /*II_66_0F_3A_22*/ {{0x1ca, 9602}, 0x0, 1, 0, 0, 9610}, + /*II_V_66_0F_3A_22*/ {{0x184, 9618}, 0x6, 73, 1, 9627, 0}, + /*II_66_0F_3A_40*/ {{0x1a2, 9636}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_40*/ {{0x189, 9642}, 0x1, 91, 1, 0, 0}, + /*II_66_0F_3A_41*/ {{0x1a2, 9649}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_41*/ {{0x184, 9655}, 0x0, 87, 1, 0, 0}, + /*II_66_0F_3A_42*/ {{0x1a2, 9662}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_42*/ {{0x184, 9671}, 0x0, 87, 1, 0, 0}, + /*II_66_0F_3A_44*/ {{0x1cb, 9681}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_44*/ {{0x1cc, 9692}, 0x0, 87, 1, 0, 0}, + /*II_V_66_0F_3A_4A*/ {{0x189, 9704}, 0x1, 91, 37, 0, 0}, + /*II_V_66_0F_3A_4B*/ {{0x189, 9715}, 0x1, 91, 37, 0, 0}, + /*II_V_66_0F_3A_4C*/ {{0x184, 9726}, 0x0, 87, 35, 0, 0}, + /*II_66_0F_3A_60*/ {{0x1cd, 9737}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_60*/ {{0x163, 9748}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_61*/ {{0x1cd, 9760}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_61*/ {{0x163, 9771}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_62*/ {{0x1cd, 9783}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_62*/ {{0x163, 9794}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_63*/ {{0x1cd, 9806}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_63*/ {{0x163, 9817}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_DF*/ {{0x1ce, 9829}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_DF*/ {{0x1cf, 9846}, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_71_02*/ {{0x1d2, 6477}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_71_04*/ {{0x1d2, 6736}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_71_06*/ {{0x1d2, 7050}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_02*/ {{0x1d2, 6492}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_04*/ {{0x1d2, 6751}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_06*/ {{0x1d2, 7065}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_02*/ {{0x1d2, 6507}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_03*/ {{0x1d2, 9872}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_06*/ {{0x1d2, 7080}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_07*/ {{0x1d2, 9889}, 0x0, 1, 0, 0, 0}, + /*II_0F_AE_00*/ {{0x173, 9898}, 0x0, 0, 0, 0, 9906}, + /*II_0F_AE_01*/ {{0x173, 9926}, 0x0, 0, 0, 0, 9935}, + /*II_V_0F_AE_02*/ {{0x1d5, 9975}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_AE_03*/ {{0x1d5, 10004}, 0x40, 0, 0, 0, 0} }; _InstNode InstructionsTree[5688] = { @@ -1783,7 +1785,7 @@ _InstNode InstructionsTree[5688] = { /* c - _0C */ 0x200c, /* d - _0D */ 0x200d, /* e - _0E */ 0x200e, -/* f - _0F */ 0x8100, +/* f - _0F */ 0xa100, /* 10 - _10 */ 0x200f, /* 11 - _11 */ 0x2010, /* 12 - _12 */ 0x2011, @@ -1867,7 +1869,7 @@ _InstNode InstructionsTree[5688] = { /* 60 - _60 */ 0x205b, /* 61 - _61 */ 0x205c, /* 62 - _62 */ 0x205d, -/* 63 - _63 */ 0x205e, +/* 63 - _63 */ 0x605e, /* 64 - */ 0, /* 65 - */ 0, /* 66 - */ 0, @@ -1896,10 +1898,10 @@ _InstNode InstructionsTree[5688] = { /* 7d - _7D */ 0x2072, /* 7e - _7E */ 0x2073, /* 7f - _7F */ 0x2074, -/* 80 - _80 */ 0x6200, -/* 81 - _81 */ 0x6208, -/* 82 - _82 */ 0x6210, -/* 83 - _83 */ 0x6218, +/* 80 - _80 */ 0x8200, +/* 81 - _81 */ 0x8208, +/* 82 - _82 */ 0x8210, +/* 83 - _83 */ 0x8218, /* 84 - _84 */ 0x2075, /* 85 - _85 */ 0x2076, /* 86 - _86 */ 0x2077, @@ -1909,10 +1911,10 @@ _InstNode InstructionsTree[5688] = { /* 8a - _8A */ 0x207b, /* 8b - _8B */ 0x207c, /* 8c - _8C */ 0x207d, -/* 8d - _8D */ 0x207e, +/* 8d - _8D */ 0x607e, /* 8e - _8E */ 0x207f, -/* 8f - _8F */ 0x6220, -/* 90 - _90 */ 0x2080, +/* 8f - _8F */ 0x8220, +/* 90 - _90 */ 0x6080, /* 91 - _91 */ 0x2081, /* 92 - _92 */ 0x2082, /* 93 - _93 */ 0x2083, @@ -1960,14 +1962,14 @@ _InstNode InstructionsTree[5688] = { /* bd - _B8 */ 0x20aa, /* be - _B8 */ 0x20ab, /* bf - _B8 */ 0x20ac, -/* c0 - _C0 */ 0x6228, -/* c1 - _C1 */ 0x6230, +/* c0 - _C0 */ 0x8228, +/* c1 - _C1 */ 0x8230, /* c2 - _C2 */ 0x20ad, /* c3 - _C3 */ 0x20ae, /* c4 - _C4 */ 0x20af, /* c5 - _C5 */ 0x20b0, -/* c6 - _C6 */ 0xa238, -/* c7 - _C7 */ 0xa280, +/* c6 - _C6 */ 0xc238, +/* c7 - _C7 */ 0xc280, /* c8 - _C8 */ 0x20b1, /* c9 - _C9 */ 0x20b2, /* ca - _CA */ 0x20b3, @@ -1976,22 +1978,22 @@ _InstNode InstructionsTree[5688] = { /* cd - _CD */ 0x20b6, /* ce - _CE */ 0x20b7, /* cf - _CF */ 0x20b8, -/* d0 - _D0 */ 0x62c8, -/* d1 - _D1 */ 0x62d0, -/* d2 - _D2 */ 0x62d8, -/* d3 - _D3 */ 0x62e0, +/* d0 - _D0 */ 0x82c8, +/* d1 - _D1 */ 0x82d0, +/* d2 - _D2 */ 0x82d8, +/* d3 - _D3 */ 0x82e0, /* d4 - _D4 */ 0x20b9, /* d5 - _D5 */ 0x20ba, /* d6 - _D6 */ 0x20bb, /* d7 - _D7 */ 0x20bc, -/* d8 - _D8 */ 0xa2e8, -/* d9 - _D9 */ 0xa330, -/* da - _DA */ 0xa378, -/* db - _DB */ 0xa3c0, -/* dc - _DC */ 0xa408, -/* dd - _DD */ 0xa450, -/* de - _DE */ 0xa498, -/* df - _DF */ 0xa4e0, +/* d8 - _D8 */ 0xc2e8, +/* d9 - _D9 */ 0xc330, +/* da - _DA */ 0xc378, +/* db - _DB */ 0xc3c0, +/* dc - _DC */ 0xc408, +/* dd - _DD */ 0xc450, +/* de - _DE */ 0xc498, +/* df - _DF */ 0xc4e0, /* e0 - _E0 */ 0x20bd, /* e1 - _E1 */ 0x20be, /* e2 - _E2 */ 0x20bf, @@ -2014,18 +2016,18 @@ _InstNode InstructionsTree[5688] = { /* f3 - */ 0, /* f4 - _F4 */ 0x20cd, /* f5 - _F5 */ 0x20ce, -/* f6 - _F6 */ 0x6528, -/* f7 - _F7 */ 0x6530, +/* f6 - _F6 */ 0x8528, +/* f7 - _F7 */ 0x8530, /* f8 - _F8 */ 0x20cf, /* f9 - _F9 */ 0x20d0, /* fa - _FA */ 0x20d1, /* fb - _FB */ 0x20d2, /* fc - _FC */ 0x20d3, /* fd - _FD */ 0x20d4, -/* fe - _FE */ 0x6538, -/* ff - _FF */ 0x6540, -/* 100 - _0F_00 */ 0x6548, -/* 101 - _0F_01 */ 0xa550, +/* fe - _FE */ 0x8538, +/* ff - _FF */ 0x8540, +/* 100 - _0F_00 */ 0x8548, +/* 101 - _0F_01 */ 0xc550, /* 102 - _0F_02 */ 0x20d5, /* 103 - _0F_03 */ 0x20d6, /* 104 - */ 0, @@ -2037,18 +2039,18 @@ _InstNode InstructionsTree[5688] = { /* 10a - */ 0, /* 10b - _0F_0B */ 0x20dc, /* 10c - */ 0, -/* 10d - _0F_0D */ 0x6598, +/* 10d - _0F_0D */ 0x8598, /* 10e - _0F_0E */ 0x20dd, -/* 10f - _0F_0F */ 0x85a0, -/* 110 - _0F_10 */ 0xc6a0, -/* 111 - _0F_11 */ 0xc6ac, -/* 112 - _0F_12 */ 0xc6b8, -/* 113 - _0F_13 */ 0xc6c4, -/* 114 - _0F_14 */ 0xc6d0, -/* 115 - _0F_15 */ 0xc6dc, -/* 116 - _0F_16 */ 0xc6e8, -/* 117 - _0F_17 */ 0xc6f4, -/* 118 - _0F_18 */ 0x6700, +/* 10f - _0F_0F */ 0xa5a0, +/* 110 - _0F_10 */ 0xe6a0, +/* 111 - _0F_11 */ 0xe6ac, +/* 112 - _0F_12 */ 0xe6b8, +/* 113 - _0F_13 */ 0xe6c4, +/* 114 - _0F_14 */ 0xe6d0, +/* 115 - _0F_15 */ 0xe6dc, +/* 116 - _0F_16 */ 0xe6e8, +/* 117 - _0F_17 */ 0xe6f4, +/* 118 - _0F_18 */ 0x8700, /* 119 - */ 0, /* 11a - */ 0, /* 11b - */ 0, @@ -2064,14 +2066,14 @@ _InstNode InstructionsTree[5688] = { /* 125 - */ 0, /* 126 - */ 0, /* 127 - */ 0, -/* 128 - _0F_28 */ 0xc708, -/* 129 - _0F_29 */ 0xc714, -/* 12a - _0F_2A */ 0xc720, -/* 12b - _0F_2B */ 0xc72c, -/* 12c - _0F_2C */ 0xc738, -/* 12d - _0F_2D */ 0xc744, -/* 12e - _0F_2E */ 0xc750, -/* 12f - _0F_2F */ 0xc75c, +/* 128 - _0F_28 */ 0xe708, +/* 129 - _0F_29 */ 0xe714, +/* 12a - _0F_2A */ 0xe720, +/* 12b - _0F_2B */ 0xe72c, +/* 12c - _0F_2C */ 0xe738, +/* 12d - _0F_2D */ 0xe744, +/* 12e - _0F_2E */ 0xe750, +/* 12f - _0F_2F */ 0xe75c, /* 130 - _0F_30 */ 0x20e3, /* 131 - _0F_31 */ 0x20e4, /* 132 - _0F_32 */ 0x20e5, @@ -2080,9 +2082,9 @@ _InstNode InstructionsTree[5688] = { /* 135 - _0F_35 */ 0x20e8, /* 136 - */ 0, /* 137 - _0F_37 */ 0x20e9, -/* 138 - _0F_38 */ 0x8768, +/* 138 - _0F_38 */ 0xa768, /* 139 - */ 0, -/* 13a - _0F_3A */ 0x8868, +/* 13a - _0F_3A */ 0xa868, /* 13b - */ 0, /* 13c - */ 0, /* 13d - */ 0, @@ -2104,54 +2106,54 @@ _InstNode InstructionsTree[5688] = { /* 14d - _0F_4D */ 0x20f7, /* 14e - _0F_4E */ 0x20f8, /* 14f - _0F_4F */ 0x20f9, -/* 150 - _0F_50 */ 0xc968, -/* 151 - _0F_51 */ 0xc974, -/* 152 - _0F_52 */ 0xc980, -/* 153 - _0F_53 */ 0xc98c, -/* 154 - _0F_54 */ 0xc998, -/* 155 - _0F_55 */ 0xc9a4, -/* 156 - _0F_56 */ 0xc9b0, -/* 157 - _0F_57 */ 0xc9bc, -/* 158 - _0F_58 */ 0xc9c8, -/* 159 - _0F_59 */ 0xc9d4, -/* 15a - _0F_5A */ 0xc9e0, -/* 15b - _0F_5B */ 0xc9ec, -/* 15c - _0F_5C */ 0xc9f8, -/* 15d - _0F_5D */ 0xca04, -/* 15e - _0F_5E */ 0xca10, -/* 15f - _0F_5F */ 0xca1c, -/* 160 - _0F_60 */ 0xca28, -/* 161 - _0F_61 */ 0xca34, -/* 162 - _0F_62 */ 0xca40, -/* 163 - _0F_63 */ 0xca4c, -/* 164 - _0F_64 */ 0xca58, -/* 165 - _0F_65 */ 0xca64, -/* 166 - _0F_66 */ 0xca70, -/* 167 - _0F_67 */ 0xca7c, -/* 168 - _0F_68 */ 0xca88, -/* 169 - _0F_69 */ 0xca94, -/* 16a - _0F_6A */ 0xcaa0, -/* 16b - _0F_6B */ 0xcaac, -/* 16c - _0F_6C */ 0xcab8, -/* 16d - _0F_6D */ 0xcac4, -/* 16e - _0F_6E */ 0xcad0, -/* 16f - _0F_6F */ 0xcadc, -/* 170 - _0F_70 */ 0xcae8, -/* 171 - _0F_71 */ 0x6af4, -/* 172 - _0F_72 */ 0x6afc, -/* 173 - _0F_73 */ 0x6b04, -/* 174 - _0F_74 */ 0xcb0c, -/* 175 - _0F_75 */ 0xcb18, -/* 176 - _0F_76 */ 0xcb24, -/* 177 - _0F_77 */ 0xcb30, -/* 178 - _0F_78 */ 0xcb3c, -/* 179 - _0F_79 */ 0xcb48, -/* 17a - _0F_7A */ 0x8b54, +/* 150 - _0F_50 */ 0xe968, +/* 151 - _0F_51 */ 0xe974, +/* 152 - _0F_52 */ 0xe980, +/* 153 - _0F_53 */ 0xe98c, +/* 154 - _0F_54 */ 0xe998, +/* 155 - _0F_55 */ 0xe9a4, +/* 156 - _0F_56 */ 0xe9b0, +/* 157 - _0F_57 */ 0xe9bc, +/* 158 - _0F_58 */ 0xe9c8, +/* 159 - _0F_59 */ 0xe9d4, +/* 15a - _0F_5A */ 0xe9e0, +/* 15b - _0F_5B */ 0xe9ec, +/* 15c - _0F_5C */ 0xe9f8, +/* 15d - _0F_5D */ 0xea04, +/* 15e - _0F_5E */ 0xea10, +/* 15f - _0F_5F */ 0xea1c, +/* 160 - _0F_60 */ 0xea28, +/* 161 - _0F_61 */ 0xea34, +/* 162 - _0F_62 */ 0xea40, +/* 163 - _0F_63 */ 0xea4c, +/* 164 - _0F_64 */ 0xea58, +/* 165 - _0F_65 */ 0xea64, +/* 166 - _0F_66 */ 0xea70, +/* 167 - _0F_67 */ 0xea7c, +/* 168 - _0F_68 */ 0xea88, +/* 169 - _0F_69 */ 0xea94, +/* 16a - _0F_6A */ 0xeaa0, +/* 16b - _0F_6B */ 0xeaac, +/* 16c - _0F_6C */ 0xeab8, +/* 16d - _0F_6D */ 0xeac4, +/* 16e - _0F_6E */ 0xead0, +/* 16f - _0F_6F */ 0xeadc, +/* 170 - _0F_70 */ 0xeae8, +/* 171 - _0F_71 */ 0x8af4, +/* 172 - _0F_72 */ 0x8afc, +/* 173 - _0F_73 */ 0x8b04, +/* 174 - _0F_74 */ 0xeb0c, +/* 175 - _0F_75 */ 0xeb18, +/* 176 - _0F_76 */ 0xeb24, +/* 177 - _0F_77 */ 0xeb30, +/* 178 - _0F_78 */ 0xeb3c, +/* 179 - _0F_79 */ 0xeb48, +/* 17a - _0F_7A */ 0xab54, /* 17b - */ 0, -/* 17c - _0F_7C */ 0xcc54, -/* 17d - _0F_7D */ 0xcc60, -/* 17e - _0F_7E */ 0xcc6c, -/* 17f - _0F_7F */ 0xcc78, +/* 17c - _0F_7C */ 0xec54, +/* 17d - _0F_7D */ 0xec60, +/* 17e - _0F_7E */ 0xec6c, +/* 17f - _0F_7F */ 0xec78, /* 180 - _0F_80 */ 0x20fa, /* 181 - _0F_81 */ 0x20fb, /* 182 - _0F_82 */ 0x20fc, @@ -2198,7 +2200,7 @@ _InstNode InstructionsTree[5688] = { /* 1ab - _0F_AB */ 0x2121, /* 1ac - _0F_AC */ 0x4007, /* 1ad - _0F_AD */ 0x4008, -/* 1ae - _0F_AE */ 0x6c84, +/* 1ae - _0F_AE */ 0x8c84, /* 1af - _0F_AF */ 0x2122, /* 1b0 - _0F_B0 */ 0x2123, /* 1b1 - _0F_B1 */ 0x2124, @@ -2208,22 +2210,22 @@ _InstNode InstructionsTree[5688] = { /* 1b5 - _0F_B5 */ 0x2128, /* 1b6 - _0F_B6 */ 0x2129, /* 1b7 - _0F_B7 */ 0x212a, -/* 1b8 - _0F_B8 */ 0xcc8c, +/* 1b8 - _0F_B8 */ 0xec8c, /* 1b9 - _0F_B9 */ 0x212b, -/* 1ba - _0F_BA */ 0x6c98, +/* 1ba - _0F_BA */ 0x8c98, /* 1bb - _0F_BB */ 0x212c, -/* 1bc - _0F_BC */ 0xcca0, -/* 1bd - _0F_BD */ 0xccac, +/* 1bc - _0F_BC */ 0xeca0, +/* 1bd - _0F_BD */ 0xecac, /* 1be - _0F_BE */ 0x212d, /* 1bf - _0F_BF */ 0x212e, /* 1c0 - _0F_C0 */ 0x212f, /* 1c1 - _0F_C1 */ 0x2130, -/* 1c2 - _0F_C2 */ 0xccb8, +/* 1c2 - _0F_C2 */ 0xecb8, /* 1c3 - _0F_C3 */ 0x2131, -/* 1c4 - _0F_C4 */ 0xccc4, -/* 1c5 - _0F_C5 */ 0xccd0, -/* 1c6 - _0F_C6 */ 0xccdc, -/* 1c7 - _0F_C7 */ 0x6ce8, +/* 1c4 - _0F_C4 */ 0xecc4, +/* 1c5 - _0F_C5 */ 0xecd0, +/* 1c6 - _0F_C6 */ 0xecdc, +/* 1c7 - _0F_C7 */ 0x8ce8, /* 1c8 - _0F_C8 */ 0x2132, /* 1c9 - _0F_C8 */ 0x2133, /* 1ca - _0F_C8 */ 0x2134, @@ -2232,53 +2234,53 @@ _InstNode InstructionsTree[5688] = { /* 1cd - _0F_C8 */ 0x2137, /* 1ce - _0F_C8 */ 0x2138, /* 1cf - _0F_C8 */ 0x2139, -/* 1d0 - _0F_D0 */ 0xccf0, -/* 1d1 - _0F_D1 */ 0xccfc, -/* 1d2 - _0F_D2 */ 0xcd08, -/* 1d3 - _0F_D3 */ 0xcd14, -/* 1d4 - _0F_D4 */ 0xcd20, -/* 1d5 - _0F_D5 */ 0xcd2c, -/* 1d6 - _0F_D6 */ 0xcd38, -/* 1d7 - _0F_D7 */ 0xcd44, -/* 1d8 - _0F_D8 */ 0xcd50, -/* 1d9 - _0F_D9 */ 0xcd5c, -/* 1da - _0F_DA */ 0xcd68, -/* 1db - _0F_DB */ 0xcd74, -/* 1dc - _0F_DC */ 0xcd80, -/* 1dd - _0F_DD */ 0xcd8c, -/* 1de - _0F_DE */ 0xcd98, -/* 1df - _0F_DF */ 0xcda4, -/* 1e0 - _0F_E0 */ 0xcdb0, -/* 1e1 - _0F_E1 */ 0xcdbc, -/* 1e2 - _0F_E2 */ 0xcdc8, -/* 1e3 - _0F_E3 */ 0xcdd4, -/* 1e4 - _0F_E4 */ 0xcde0, -/* 1e5 - _0F_E5 */ 0xcdec, -/* 1e6 - _0F_E6 */ 0xcdf8, -/* 1e7 - _0F_E7 */ 0xce04, -/* 1e8 - _0F_E8 */ 0xce10, -/* 1e9 - _0F_E9 */ 0xce1c, -/* 1ea - _0F_EA */ 0xce28, -/* 1eb - _0F_EB */ 0xce34, -/* 1ec - _0F_EC */ 0xce40, -/* 1ed - _0F_ED */ 0xce4c, -/* 1ee - _0F_EE */ 0xce58, -/* 1ef - _0F_EF */ 0xce64, -/* 1f0 - _0F_F0 */ 0xce70, -/* 1f1 - _0F_F1 */ 0xce7c, -/* 1f2 - _0F_F2 */ 0xce88, -/* 1f3 - _0F_F3 */ 0xce94, -/* 1f4 - _0F_F4 */ 0xcea0, -/* 1f5 - _0F_F5 */ 0xceac, -/* 1f6 - _0F_F6 */ 0xceb8, -/* 1f7 - _0F_F7 */ 0xcec4, -/* 1f8 - _0F_F8 */ 0xced0, -/* 1f9 - _0F_F9 */ 0xcedc, -/* 1fa - _0F_FA */ 0xcee8, -/* 1fb - _0F_FB */ 0xcef4, -/* 1fc - _0F_FC */ 0xcf00, -/* 1fd - _0F_FD */ 0xcf0c, -/* 1fe - _0F_FE */ 0xcf18, +/* 1d0 - _0F_D0 */ 0xecf0, +/* 1d1 - _0F_D1 */ 0xecfc, +/* 1d2 - _0F_D2 */ 0xed08, +/* 1d3 - _0F_D3 */ 0xed14, +/* 1d4 - _0F_D4 */ 0xed20, +/* 1d5 - _0F_D5 */ 0xed2c, +/* 1d6 - _0F_D6 */ 0xed38, +/* 1d7 - _0F_D7 */ 0xed44, +/* 1d8 - _0F_D8 */ 0xed50, +/* 1d9 - _0F_D9 */ 0xed5c, +/* 1da - _0F_DA */ 0xed68, +/* 1db - _0F_DB */ 0xed74, +/* 1dc - _0F_DC */ 0xed80, +/* 1dd - _0F_DD */ 0xed8c, +/* 1de - _0F_DE */ 0xed98, +/* 1df - _0F_DF */ 0xeda4, +/* 1e0 - _0F_E0 */ 0xedb0, +/* 1e1 - _0F_E1 */ 0xedbc, +/* 1e2 - _0F_E2 */ 0xedc8, +/* 1e3 - _0F_E3 */ 0xedd4, +/* 1e4 - _0F_E4 */ 0xede0, +/* 1e5 - _0F_E5 */ 0xedec, +/* 1e6 - _0F_E6 */ 0xedf8, +/* 1e7 - _0F_E7 */ 0xee04, +/* 1e8 - _0F_E8 */ 0xee10, +/* 1e9 - _0F_E9 */ 0xee1c, +/* 1ea - _0F_EA */ 0xee28, +/* 1eb - _0F_EB */ 0xee34, +/* 1ec - _0F_EC */ 0xee40, +/* 1ed - _0F_ED */ 0xee4c, +/* 1ee - _0F_EE */ 0xee58, +/* 1ef - _0F_EF */ 0xee64, +/* 1f0 - _0F_F0 */ 0xee70, +/* 1f1 - _0F_F1 */ 0xee7c, +/* 1f2 - _0F_F2 */ 0xee88, +/* 1f3 - _0F_F3 */ 0xee94, +/* 1f4 - _0F_F4 */ 0xeea0, +/* 1f5 - _0F_F5 */ 0xeeac, +/* 1f6 - _0F_F6 */ 0xeeb8, +/* 1f7 - _0F_F7 */ 0xeec4, +/* 1f8 - _0F_F8 */ 0xeed0, +/* 1f9 - _0F_F9 */ 0xeedc, +/* 1fa - _0F_FA */ 0xeee8, +/* 1fb - _0F_FB */ 0xeef4, +/* 1fc - _0F_FC */ 0xef00, +/* 1fd - _0F_FD */ 0xef0c, +/* 1fe - _0F_FE */ 0xef18, /* 1ff - */ 0, /* 200 - _80_00 */ 0x213a, /* 201 - _80_01 */ 0x213b, @@ -2590,8 +2592,8 @@ _InstNode InstructionsTree[5688] = { /* 333 - _D9_03 */ 0x21d9, /* 334 - _D9_04 */ 0x21da, /* 335 - _D9_05 */ 0x21db, -/* 336 - _D9_06 */ 0xcf24, -/* 337 - _D9_07 */ 0xcf30, +/* 336 - _D9_06 */ 0xef24, +/* 337 - _D9_07 */ 0xef30, /* 338 - _D9_C0 */ 0x21dc, /* 339 - _D9_C0 */ 0x21dd, /* 33a - _D9_C0 */ 0x21de, @@ -2770,8 +2772,8 @@ _InstNode InstructionsTree[5688] = { /* 3e7 - _DB_D8 */ 0x2256, /* 3e8 - _DB_E0 */ 0x2257, /* 3e9 - _DB_E1 */ 0x2258, -/* 3ea - _DB_E2 */ 0xcf3c, -/* 3eb - _DB_E3 */ 0xcf48, +/* 3ea - _DB_E2 */ 0xef3c, +/* 3eb - _DB_E3 */ 0xef48, /* 3ec - _DB_E4 */ 0x2259, /* 3ed - */ 0, /* 3ee - */ 0, @@ -2878,8 +2880,8 @@ _InstNode InstructionsTree[5688] = { /* 453 - _DD_03 */ 0x22a5, /* 454 - _DD_04 */ 0x22a6, /* 455 - */ 0, -/* 456 - _DD_06 */ 0xcf54, -/* 457 - _DD_07 */ 0xcf60, +/* 456 - _DD_06 */ 0xef54, +/* 457 - _DD_07 */ 0xef60, /* 458 - _DD_C0 */ 0x22a7, /* 459 - _DD_C0 */ 0x22a8, /* 45a - _DD_C0 */ 0x22a9, @@ -3056,7 +3058,7 @@ _InstNode InstructionsTree[5688] = { /* 505 - */ 0, /* 506 - */ 0, /* 507 - */ 0, -/* 508 - _DF_E0 */ 0xcf6c, +/* 508 - _DF_E0 */ 0xef6c, /* 509 - */ 0, /* 50a - */ 0, /* 50b - */ 0, @@ -3146,28 +3148,28 @@ _InstNode InstructionsTree[5688] = { /* 55f - */ 0, /* 560 - _0F_01_C8 */ 0x2348, /* 561 - _0F_01_C9 */ 0x2349, -/* 562 - */ 0, -/* 563 - */ 0, +/* 562 - _0F_01_CA */ 0x234a, +/* 563 - _0F_01_CB */ 0x234b, /* 564 - */ 0, /* 565 - */ 0, /* 566 - */ 0, /* 567 - */ 0, -/* 568 - _0F_01_D0 */ 0x234a, -/* 569 - _0F_01_D1 */ 0x234b, +/* 568 - _0F_01_D0 */ 0x234c, +/* 569 - _0F_01_D1 */ 0x234d, /* 56a - */ 0, /* 56b - */ 0, -/* 56c - _0F_01_D4 */ 0x234c, -/* 56d - _0F_01_D5 */ 0x234d, +/* 56c - _0F_01_D4 */ 0x234e, +/* 56d - _0F_01_D5 */ 0x234f, /* 56e - */ 0, /* 56f - */ 0, -/* 570 - _0F_01_D8 */ 0x234e, -/* 571 - _0F_01_D9 */ 0x234f, -/* 572 - _0F_01_DA */ 0x2350, -/* 573 - _0F_01_DB */ 0x2351, -/* 574 - _0F_01_DC */ 0x2352, -/* 575 - _0F_01_DD */ 0x2353, -/* 576 - _0F_01_DE */ 0x2354, -/* 577 - _0F_01_DF */ 0x2355, +/* 570 - _0F_01_D8 */ 0x2350, +/* 571 - _0F_01_D9 */ 0x2351, +/* 572 - _0F_01_DA */ 0x2352, +/* 573 - _0F_01_DB */ 0x2353, +/* 574 - _0F_01_DC */ 0x2354, +/* 575 - _0F_01_DD */ 0x2355, +/* 576 - _0F_01_DE */ 0x2356, +/* 577 - _0F_01_DF */ 0x2357, /* 578 - */ 0, /* 579 - */ 0, /* 57a - */ 0, @@ -3192,16 +3194,16 @@ _InstNode InstructionsTree[5688] = { /* 58d - */ 0, /* 58e - */ 0, /* 58f - */ 0, -/* 590 - _0F_01_F8 */ 0x2356, -/* 591 - _0F_01_F9 */ 0x2357, +/* 590 - _0F_01_F8 */ 0x2358, +/* 591 - _0F_01_F9 */ 0x2359, /* 592 - */ 0, /* 593 - */ 0, /* 594 - */ 0, /* 595 - */ 0, /* 596 - */ 0, /* 597 - */ 0, -/* 598 - _0F_0D_00 */ 0x2358, -/* 599 - _0F_0D_01 */ 0x2359, +/* 598 - _0F_0D_00 */ 0x235a, +/* 599 - _0F_0D_01 */ 0x235b, /* 59a - */ 0, /* 59b - */ 0, /* 59c - */ 0, @@ -3220,8 +3222,8 @@ _InstNode InstructionsTree[5688] = { /* 5a9 - */ 0, /* 5aa - */ 0, /* 5ab - */ 0, -/* 5ac - _0F_0F_0C */ 0x235a, -/* 5ad - _0F_0F_0D */ 0x235b, +/* 5ac - _0F_0F_0C */ 0x235c, +/* 5ad - _0F_0F_0D */ 0x235d, /* 5ae - */ 0, /* 5af - */ 0, /* 5b0 - */ 0, @@ -3236,8 +3238,8 @@ _InstNode InstructionsTree[5688] = { /* 5b9 - */ 0, /* 5ba - */ 0, /* 5bb - */ 0, -/* 5bc - _0F_0F_1C */ 0x235c, -/* 5bd - _0F_0F_1D */ 0x235d, +/* 5bc - _0F_0F_1C */ 0x235e, +/* 5bd - _0F_0F_1D */ 0x235f, /* 5be - */ 0, /* 5bf - */ 0, /* 5c0 - */ 0, @@ -3346,60 +3348,60 @@ _InstNode InstructionsTree[5688] = { /* 627 - */ 0, /* 628 - */ 0, /* 629 - */ 0, -/* 62a - _0F_0F_8A */ 0x235e, +/* 62a - _0F_0F_8A */ 0x2360, /* 62b - */ 0, /* 62c - */ 0, /* 62d - */ 0, -/* 62e - _0F_0F_8E */ 0x235f, +/* 62e - _0F_0F_8E */ 0x2361, /* 62f - */ 0, -/* 630 - _0F_0F_90 */ 0x2360, +/* 630 - _0F_0F_90 */ 0x2362, /* 631 - */ 0, /* 632 - */ 0, /* 633 - */ 0, -/* 634 - _0F_0F_94 */ 0x2361, +/* 634 - _0F_0F_94 */ 0x2363, /* 635 - */ 0, -/* 636 - _0F_0F_96 */ 0x2362, -/* 637 - _0F_0F_97 */ 0x2363, +/* 636 - _0F_0F_96 */ 0x2364, +/* 637 - _0F_0F_97 */ 0x2365, /* 638 - */ 0, /* 639 - */ 0, -/* 63a - _0F_0F_9A */ 0x2364, +/* 63a - _0F_0F_9A */ 0x2366, /* 63b - */ 0, /* 63c - */ 0, /* 63d - */ 0, -/* 63e - _0F_0F_9E */ 0x2365, +/* 63e - _0F_0F_9E */ 0x2367, /* 63f - */ 0, -/* 640 - _0F_0F_A0 */ 0x2366, +/* 640 - _0F_0F_A0 */ 0x2368, /* 641 - */ 0, /* 642 - */ 0, /* 643 - */ 0, -/* 644 - _0F_0F_A4 */ 0x2367, +/* 644 - _0F_0F_A4 */ 0x2369, /* 645 - */ 0, -/* 646 - _0F_0F_A6 */ 0x2368, -/* 647 - _0F_0F_A7 */ 0x2369, +/* 646 - _0F_0F_A6 */ 0x236a, +/* 647 - _0F_0F_A7 */ 0x236b, /* 648 - */ 0, /* 649 - */ 0, -/* 64a - _0F_0F_AA */ 0x236a, +/* 64a - _0F_0F_AA */ 0x236c, /* 64b - */ 0, /* 64c - */ 0, /* 64d - */ 0, -/* 64e - _0F_0F_AE */ 0x236b, +/* 64e - _0F_0F_AE */ 0x236d, /* 64f - */ 0, -/* 650 - _0F_0F_B0 */ 0x236c, +/* 650 - _0F_0F_B0 */ 0x236e, /* 651 - */ 0, /* 652 - */ 0, /* 653 - */ 0, -/* 654 - _0F_0F_B4 */ 0x236d, +/* 654 - _0F_0F_B4 */ 0x236f, /* 655 - */ 0, -/* 656 - _0F_0F_B6 */ 0x236e, -/* 657 - _0F_0F_B7 */ 0x236f, +/* 656 - _0F_0F_B6 */ 0x2370, +/* 657 - _0F_0F_B7 */ 0x2371, /* 658 - */ 0, /* 659 - */ 0, /* 65a - */ 0, -/* 65b - _0F_0F_BB */ 0x2370, +/* 65b - _0F_0F_BB */ 0x2372, /* 65c - */ 0, /* 65d - */ 0, /* 65e - */ 0, -/* 65f - _0F_0F_BF */ 0x2371, +/* 65f - _0F_0F_BF */ 0x2373, /* 660 - */ 0, /* 661 - */ 0, /* 662 - */ 0, @@ -3464,10 +3466,10 @@ _InstNode InstructionsTree[5688] = { /* 69d - */ 0, /* 69e - */ 0, /* 69f - */ 0, -/* 6a0 - _0F_10 */ 0x2372, -/* 6a1 - _66_0F_10 */ 0x2373, -/* 6a2 - _F3_0F_10 */ 0x2374, -/* 6a3 - _F2_0F_10 */ 0x2375, +/* 6a0 - _0F_10 */ 0x2374, +/* 6a1 - _66_0F_10 */ 0x2375, +/* 6a2 - _F3_0F_10 */ 0x2376, +/* 6a3 - _F2_0F_10 */ 0x2377, /* 6a4 - _V_0F_10 */ 0x4009, /* 6a5 - _V_66_0F_10 */ 0x400a, /* 6a6 - _V_F3_0F_10 */ 0x400b, @@ -3476,10 +3478,10 @@ _InstNode InstructionsTree[5688] = { /* 6a9 - */ 0, /* 6aa - _VRR_F3_0F_10 */ 0x400d, /* 6ab - _VRR_F2_0F_10 */ 0x400e, -/* 6ac - _0F_11 */ 0x2376, -/* 6ad - _66_0F_11 */ 0x2377, -/* 6ae - _F3_0F_11 */ 0x2378, -/* 6af - _F2_0F_11 */ 0x2379, +/* 6ac - _0F_11 */ 0x2378, +/* 6ad - _66_0F_11 */ 0x2379, +/* 6ae - _F3_0F_11 */ 0x237a, +/* 6af - _F2_0F_11 */ 0x237b, /* 6b0 - _V_0F_11 */ 0x400f, /* 6b1 - _V_66_0F_11 */ 0x4010, /* 6b2 - _V_F3_0F_11 */ 0x4011, @@ -3489,9 +3491,9 @@ _InstNode InstructionsTree[5688] = { /* 6b6 - _VRR_F3_0F_11 */ 0x4013, /* 6b7 - _VRR_F2_0F_11 */ 0x4014, /* 6b8 - _0F_12 */ 0x4015, -/* 6b9 - _66_0F_12 */ 0x237a, -/* 6ba - _F3_0F_12 */ 0x237b, -/* 6bb - _F2_0F_12 */ 0x237c, +/* 6b9 - _66_0F_12 */ 0x237c, +/* 6ba - _F3_0F_12 */ 0x237d, +/* 6bb - _F2_0F_12 */ 0x237e, /* 6bc - _V_0F_12 */ 0x4016, /* 6bd - _V_66_0F_12 */ 0x4017, /* 6be - _V_F3_0F_12 */ 0x4018, @@ -3500,8 +3502,8 @@ _InstNode InstructionsTree[5688] = { /* 6c1 - */ 0, /* 6c2 - */ 0, /* 6c3 - */ 0, -/* 6c4 - _0F_13 */ 0x237d, -/* 6c5 - _66_0F_13 */ 0x237e, +/* 6c4 - _0F_13 */ 0x237f, +/* 6c5 - _66_0F_13 */ 0x2380, /* 6c6 - */ 0, /* 6c7 - */ 0, /* 6c8 - _V_0F_13 */ 0x401a, @@ -3512,8 +3514,8 @@ _InstNode InstructionsTree[5688] = { /* 6cd - */ 0, /* 6ce - */ 0, /* 6cf - */ 0, -/* 6d0 - _0F_14 */ 0x237f, -/* 6d1 - _66_0F_14 */ 0x2380, +/* 6d0 - _0F_14 */ 0x2381, +/* 6d1 - _66_0F_14 */ 0x2382, /* 6d2 - */ 0, /* 6d3 - */ 0, /* 6d4 - _V_0F_14 */ 0x401c, @@ -3524,8 +3526,8 @@ _InstNode InstructionsTree[5688] = { /* 6d9 - */ 0, /* 6da - */ 0, /* 6db - */ 0, -/* 6dc - _0F_15 */ 0x2381, -/* 6dd - _66_0F_15 */ 0x2382, +/* 6dc - _0F_15 */ 0x2383, +/* 6dd - _66_0F_15 */ 0x2384, /* 6de - */ 0, /* 6df - */ 0, /* 6e0 - _V_0F_15 */ 0x401e, @@ -3537,8 +3539,8 @@ _InstNode InstructionsTree[5688] = { /* 6e6 - */ 0, /* 6e7 - */ 0, /* 6e8 - _0F_16 */ 0x4020, -/* 6e9 - _66_0F_16 */ 0x2383, -/* 6ea - _F3_0F_16 */ 0x2384, +/* 6e9 - _66_0F_16 */ 0x2385, +/* 6ea - _F3_0F_16 */ 0x2386, /* 6eb - */ 0, /* 6ec - _V_0F_16 */ 0x4021, /* 6ed - _V_66_0F_16 */ 0x4022, @@ -3548,8 +3550,8 @@ _InstNode InstructionsTree[5688] = { /* 6f1 - */ 0, /* 6f2 - */ 0, /* 6f3 - */ 0, -/* 6f4 - _0F_17 */ 0x2385, -/* 6f5 - _66_0F_17 */ 0x2386, +/* 6f4 - _0F_17 */ 0x2387, +/* 6f5 - _66_0F_17 */ 0x2388, /* 6f6 - */ 0, /* 6f7 - */ 0, /* 6f8 - _V_0F_17 */ 0x4024, @@ -3560,16 +3562,16 @@ _InstNode InstructionsTree[5688] = { /* 6fd - */ 0, /* 6fe - */ 0, /* 6ff - */ 0, -/* 700 - _0F_18_00 */ 0x2387, -/* 701 - _0F_18_01 */ 0x2388, -/* 702 - _0F_18_02 */ 0x2389, -/* 703 - _0F_18_03 */ 0x238a, +/* 700 - _0F_18_00 */ 0x2389, +/* 701 - _0F_18_01 */ 0x238a, +/* 702 - _0F_18_02 */ 0x238b, +/* 703 - _0F_18_03 */ 0x238c, /* 704 - */ 0, /* 705 - */ 0, /* 706 - */ 0, /* 707 - */ 0, -/* 708 - _0F_28 */ 0x238b, -/* 709 - _66_0F_28 */ 0x238c, +/* 708 - _0F_28 */ 0x238d, +/* 709 - _66_0F_28 */ 0x238e, /* 70a - */ 0, /* 70b - */ 0, /* 70c - _V_0F_28 */ 0x4026, @@ -3580,8 +3582,8 @@ _InstNode InstructionsTree[5688] = { /* 711 - */ 0, /* 712 - */ 0, /* 713 - */ 0, -/* 714 - _0F_29 */ 0x238d, -/* 715 - _66_0F_29 */ 0x238e, +/* 714 - _0F_29 */ 0x238f, +/* 715 - _66_0F_29 */ 0x2390, /* 716 - */ 0, /* 717 - */ 0, /* 718 - _V_0F_29 */ 0x4028, @@ -3592,10 +3594,10 @@ _InstNode InstructionsTree[5688] = { /* 71d - */ 0, /* 71e - */ 0, /* 71f - */ 0, -/* 720 - _0F_2A */ 0x238f, -/* 721 - _66_0F_2A */ 0x2390, -/* 722 - _F3_0F_2A */ 0x2391, -/* 723 - _F2_0F_2A */ 0x2392, +/* 720 - _0F_2A */ 0x2391, +/* 721 - _66_0F_2A */ 0x2392, +/* 722 - _F3_0F_2A */ 0x2393, +/* 723 - _F2_0F_2A */ 0x2394, /* 724 - */ 0, /* 725 - */ 0, /* 726 - _V_F3_0F_2A */ 0x402a, @@ -3604,10 +3606,10 @@ _InstNode InstructionsTree[5688] = { /* 729 - */ 0, /* 72a - */ 0, /* 72b - */ 0, -/* 72c - _0F_2B */ 0x2393, -/* 72d - _66_0F_2B */ 0x2394, -/* 72e - _F3_0F_2B */ 0x2395, -/* 72f - _F2_0F_2B */ 0x2396, +/* 72c - _0F_2B */ 0x2395, +/* 72d - _66_0F_2B */ 0x2396, +/* 72e - _F3_0F_2B */ 0x2397, +/* 72f - _F2_0F_2B */ 0x2398, /* 730 - _V_0F_2B */ 0x402c, /* 731 - _V_66_0F_2B */ 0x402d, /* 732 - */ 0, @@ -3616,10 +3618,10 @@ _InstNode InstructionsTree[5688] = { /* 735 - */ 0, /* 736 - */ 0, /* 737 - */ 0, -/* 738 - _0F_2C */ 0x2397, -/* 739 - _66_0F_2C */ 0x2398, -/* 73a - _F3_0F_2C */ 0x2399, -/* 73b - _F2_0F_2C */ 0x239a, +/* 738 - _0F_2C */ 0x2399, +/* 739 - _66_0F_2C */ 0x239a, +/* 73a - _F3_0F_2C */ 0x239b, +/* 73b - _F2_0F_2C */ 0x239c, /* 73c - */ 0, /* 73d - */ 0, /* 73e - _V_F3_0F_2C */ 0x402e, @@ -3628,10 +3630,10 @@ _InstNode InstructionsTree[5688] = { /* 741 - */ 0, /* 742 - */ 0, /* 743 - */ 0, -/* 744 - _0F_2D */ 0x239b, -/* 745 - _66_0F_2D */ 0x239c, -/* 746 - _F3_0F_2D */ 0x239d, -/* 747 - _F2_0F_2D */ 0x239e, +/* 744 - _0F_2D */ 0x239d, +/* 745 - _66_0F_2D */ 0x239e, +/* 746 - _F3_0F_2D */ 0x239f, +/* 747 - _F2_0F_2D */ 0x23a0, /* 748 - */ 0, /* 749 - */ 0, /* 74a - _V_F3_0F_2D */ 0x4030, @@ -3640,8 +3642,8 @@ _InstNode InstructionsTree[5688] = { /* 74d - */ 0, /* 74e - */ 0, /* 74f - */ 0, -/* 750 - _0F_2E */ 0x239f, -/* 751 - _66_0F_2E */ 0x23a0, +/* 750 - _0F_2E */ 0x23a1, +/* 751 - _66_0F_2E */ 0x23a2, /* 752 - */ 0, /* 753 - */ 0, /* 754 - _V_0F_2E */ 0x4032, @@ -3652,8 +3654,8 @@ _InstNode InstructionsTree[5688] = { /* 759 - */ 0, /* 75a - */ 0, /* 75b - */ 0, -/* 75c - _0F_2F */ 0x23a1, -/* 75d - _66_0F_2F */ 0x23a2, +/* 75c - _0F_2F */ 0x23a3, +/* 75d - _66_0F_2F */ 0x23a4, /* 75e - */ 0, /* 75f - */ 0, /* 760 - _V_0F_2F */ 0x4034, @@ -3664,72 +3666,72 @@ _InstNode InstructionsTree[5688] = { /* 765 - */ 0, /* 766 - */ 0, /* 767 - */ 0, -/* 768 - _0F_38_00 */ 0xcf78, -/* 769 - _0F_38_01 */ 0xcf84, -/* 76a - _0F_38_02 */ 0xcf90, -/* 76b - _0F_38_03 */ 0xcf9c, -/* 76c - _0F_38_04 */ 0xcfa8, -/* 76d - _0F_38_05 */ 0xcfb4, -/* 76e - _0F_38_06 */ 0xcfc0, -/* 76f - _0F_38_07 */ 0xcfcc, -/* 770 - _0F_38_08 */ 0xcfd8, -/* 771 - _0F_38_09 */ 0xcfe4, -/* 772 - _0F_38_0A */ 0xcff0, -/* 773 - _0F_38_0B */ 0xcffc, -/* 774 - _0F_38_0C */ 0xd008, -/* 775 - _0F_38_0D */ 0xd014, -/* 776 - _0F_38_0E */ 0xd020, -/* 777 - _0F_38_0F */ 0xd02c, -/* 778 - _0F_38_10 */ 0xd038, +/* 768 - _0F_38_00 */ 0xef78, +/* 769 - _0F_38_01 */ 0xef84, +/* 76a - _0F_38_02 */ 0xef90, +/* 76b - _0F_38_03 */ 0xef9c, +/* 76c - _0F_38_04 */ 0xefa8, +/* 76d - _0F_38_05 */ 0xefb4, +/* 76e - _0F_38_06 */ 0xefc0, +/* 76f - _0F_38_07 */ 0xefcc, +/* 770 - _0F_38_08 */ 0xefd8, +/* 771 - _0F_38_09 */ 0xefe4, +/* 772 - _0F_38_0A */ 0xeff0, +/* 773 - _0F_38_0B */ 0xeffc, +/* 774 - _0F_38_0C */ 0xf008, +/* 775 - _0F_38_0D */ 0xf014, +/* 776 - _0F_38_0E */ 0xf020, +/* 777 - _0F_38_0F */ 0xf02c, +/* 778 - _0F_38_10 */ 0xf038, /* 779 - */ 0, /* 77a - */ 0, /* 77b - */ 0, -/* 77c - _0F_38_14 */ 0xd044, -/* 77d - _0F_38_15 */ 0xd050, +/* 77c - _0F_38_14 */ 0xf044, +/* 77d - _0F_38_15 */ 0xf050, /* 77e - */ 0, -/* 77f - _0F_38_17 */ 0xd05c, -/* 780 - _0F_38_18 */ 0xd068, -/* 781 - _0F_38_19 */ 0xd074, -/* 782 - _0F_38_1A */ 0xd080, +/* 77f - _0F_38_17 */ 0xf05c, +/* 780 - _0F_38_18 */ 0xf068, +/* 781 - _0F_38_19 */ 0xf074, +/* 782 - _0F_38_1A */ 0xf080, /* 783 - */ 0, -/* 784 - _0F_38_1C */ 0xd08c, -/* 785 - _0F_38_1D */ 0xd098, -/* 786 - _0F_38_1E */ 0xd0a4, +/* 784 - _0F_38_1C */ 0xf08c, +/* 785 - _0F_38_1D */ 0xf098, +/* 786 - _0F_38_1E */ 0xf0a4, /* 787 - */ 0, -/* 788 - _0F_38_20 */ 0xd0b0, -/* 789 - _0F_38_21 */ 0xd0bc, -/* 78a - _0F_38_22 */ 0xd0c8, -/* 78b - _0F_38_23 */ 0xd0d4, -/* 78c - _0F_38_24 */ 0xd0e0, -/* 78d - _0F_38_25 */ 0xd0ec, +/* 788 - _0F_38_20 */ 0xf0b0, +/* 789 - _0F_38_21 */ 0xf0bc, +/* 78a - _0F_38_22 */ 0xf0c8, +/* 78b - _0F_38_23 */ 0xf0d4, +/* 78c - _0F_38_24 */ 0xf0e0, +/* 78d - _0F_38_25 */ 0xf0ec, /* 78e - */ 0, /* 78f - */ 0, -/* 790 - _0F_38_28 */ 0xd0f8, -/* 791 - _0F_38_29 */ 0xd104, -/* 792 - _0F_38_2A */ 0xd110, -/* 793 - _0F_38_2B */ 0xd11c, -/* 794 - _0F_38_2C */ 0xd128, -/* 795 - _0F_38_2D */ 0xd134, -/* 796 - _0F_38_2E */ 0xd140, -/* 797 - _0F_38_2F */ 0xd14c, -/* 798 - _0F_38_30 */ 0xd158, -/* 799 - _0F_38_31 */ 0xd164, -/* 79a - _0F_38_32 */ 0xd170, -/* 79b - _0F_38_33 */ 0xd17c, -/* 79c - _0F_38_34 */ 0xd188, -/* 79d - _0F_38_35 */ 0xd194, +/* 790 - _0F_38_28 */ 0xf0f8, +/* 791 - _0F_38_29 */ 0xf104, +/* 792 - _0F_38_2A */ 0xf110, +/* 793 - _0F_38_2B */ 0xf11c, +/* 794 - _0F_38_2C */ 0xf128, +/* 795 - _0F_38_2D */ 0xf134, +/* 796 - _0F_38_2E */ 0xf140, +/* 797 - _0F_38_2F */ 0xf14c, +/* 798 - _0F_38_30 */ 0xf158, +/* 799 - _0F_38_31 */ 0xf164, +/* 79a - _0F_38_32 */ 0xf170, +/* 79b - _0F_38_33 */ 0xf17c, +/* 79c - _0F_38_34 */ 0xf188, +/* 79d - _0F_38_35 */ 0xf194, /* 79e - */ 0, -/* 79f - _0F_38_37 */ 0xd1a0, -/* 7a0 - _0F_38_38 */ 0xd1ac, -/* 7a1 - _0F_38_39 */ 0xd1b8, -/* 7a2 - _0F_38_3A */ 0xd1c4, -/* 7a3 - _0F_38_3B */ 0xd1d0, -/* 7a4 - _0F_38_3C */ 0xd1dc, -/* 7a5 - _0F_38_3D */ 0xd1e8, -/* 7a6 - _0F_38_3E */ 0xd1f4, -/* 7a7 - _0F_38_3F */ 0xd200, -/* 7a8 - _0F_38_40 */ 0xd20c, -/* 7a9 - _0F_38_41 */ 0xd218, +/* 79f - _0F_38_37 */ 0xf1a0, +/* 7a0 - _0F_38_38 */ 0xf1ac, +/* 7a1 - _0F_38_39 */ 0xf1b8, +/* 7a2 - _0F_38_3A */ 0xf1c4, +/* 7a3 - _0F_38_3B */ 0xf1d0, +/* 7a4 - _0F_38_3C */ 0xf1dc, +/* 7a5 - _0F_38_3D */ 0xf1e8, +/* 7a6 - _0F_38_3E */ 0xf1f4, +/* 7a7 - _0F_38_3F */ 0xf200, +/* 7a8 - _0F_38_40 */ 0xf20c, +/* 7a9 - _0F_38_41 */ 0xf218, /* 7aa - */ 0, /* 7ab - */ 0, /* 7ac - */ 0, @@ -3792,9 +3794,9 @@ _InstNode InstructionsTree[5688] = { /* 7e5 - */ 0, /* 7e6 - */ 0, /* 7e7 - */ 0, -/* 7e8 - _0F_38_80 */ 0xd224, -/* 7e9 - _0F_38_81 */ 0xd230, -/* 7ea - _0F_38_82 */ 0xd23c, +/* 7e8 - _0F_38_80 */ 0xf224, +/* 7e9 - _0F_38_81 */ 0xf230, +/* 7ea - _0F_38_82 */ 0xf23c, /* 7eb - */ 0, /* 7ec - */ 0, /* 7ed - */ 0, @@ -3814,48 +3816,48 @@ _InstNode InstructionsTree[5688] = { /* 7fb - */ 0, /* 7fc - */ 0, /* 7fd - */ 0, -/* 7fe - _0F_38_96 */ 0xd248, -/* 7ff - _0F_38_97 */ 0xd254, -/* 800 - _0F_38_98 */ 0xd260, -/* 801 - _0F_38_99 */ 0xd26c, -/* 802 - _0F_38_9A */ 0xd278, -/* 803 - _0F_38_9B */ 0xd284, -/* 804 - _0F_38_9C */ 0xd290, -/* 805 - _0F_38_9D */ 0xd29c, -/* 806 - _0F_38_9E */ 0xd2a8, -/* 807 - _0F_38_9F */ 0xd2b4, +/* 7fe - _0F_38_96 */ 0xf248, +/* 7ff - _0F_38_97 */ 0xf254, +/* 800 - _0F_38_98 */ 0xf260, +/* 801 - _0F_38_99 */ 0xf26c, +/* 802 - _0F_38_9A */ 0xf278, +/* 803 - _0F_38_9B */ 0xf284, +/* 804 - _0F_38_9C */ 0xf290, +/* 805 - _0F_38_9D */ 0xf29c, +/* 806 - _0F_38_9E */ 0xf2a8, +/* 807 - _0F_38_9F */ 0xf2b4, /* 808 - */ 0, /* 809 - */ 0, /* 80a - */ 0, /* 80b - */ 0, /* 80c - */ 0, /* 80d - */ 0, -/* 80e - _0F_38_A6 */ 0xd2c0, -/* 80f - _0F_38_A7 */ 0xd2cc, -/* 810 - _0F_38_A8 */ 0xd2d8, -/* 811 - _0F_38_A9 */ 0xd2e4, -/* 812 - _0F_38_AA */ 0xd2f0, -/* 813 - _0F_38_AB */ 0xd2fc, -/* 814 - _0F_38_AC */ 0xd308, -/* 815 - _0F_38_AD */ 0xd314, -/* 816 - _0F_38_AE */ 0xd320, -/* 817 - _0F_38_AF */ 0xd32c, +/* 80e - _0F_38_A6 */ 0xf2c0, +/* 80f - _0F_38_A7 */ 0xf2cc, +/* 810 - _0F_38_A8 */ 0xf2d8, +/* 811 - _0F_38_A9 */ 0xf2e4, +/* 812 - _0F_38_AA */ 0xf2f0, +/* 813 - _0F_38_AB */ 0xf2fc, +/* 814 - _0F_38_AC */ 0xf308, +/* 815 - _0F_38_AD */ 0xf314, +/* 816 - _0F_38_AE */ 0xf320, +/* 817 - _0F_38_AF */ 0xf32c, /* 818 - */ 0, /* 819 - */ 0, /* 81a - */ 0, /* 81b - */ 0, /* 81c - */ 0, /* 81d - */ 0, -/* 81e - _0F_38_B6 */ 0xd338, -/* 81f - _0F_38_B7 */ 0xd344, -/* 820 - _0F_38_B8 */ 0xd350, -/* 821 - _0F_38_B9 */ 0xd35c, -/* 822 - _0F_38_BA */ 0xd368, -/* 823 - _0F_38_BB */ 0xd374, -/* 824 - _0F_38_BC */ 0xd380, -/* 825 - _0F_38_BD */ 0xd38c, -/* 826 - _0F_38_BE */ 0xd398, -/* 827 - _0F_38_BF */ 0xd3a4, +/* 81e - _0F_38_B6 */ 0xf338, +/* 81f - _0F_38_B7 */ 0xf344, +/* 820 - _0F_38_B8 */ 0xf350, +/* 821 - _0F_38_B9 */ 0xf35c, +/* 822 - _0F_38_BA */ 0xf368, +/* 823 - _0F_38_BB */ 0xf374, +/* 824 - _0F_38_BC */ 0xf380, +/* 825 - _0F_38_BD */ 0xf38c, +/* 826 - _0F_38_BE */ 0xf398, +/* 827 - _0F_38_BF */ 0xf3a4, /* 828 - */ 0, /* 829 - */ 0, /* 82a - */ 0, @@ -3883,11 +3885,11 @@ _InstNode InstructionsTree[5688] = { /* 840 - */ 0, /* 841 - */ 0, /* 842 - */ 0, -/* 843 - _0F_38_DB */ 0xd3b0, -/* 844 - _0F_38_DC */ 0xd3bc, -/* 845 - _0F_38_DD */ 0xd3c8, -/* 846 - _0F_38_DE */ 0xd3d4, -/* 847 - _0F_38_DF */ 0xd3e0, +/* 843 - _0F_38_DB */ 0xf3b0, +/* 844 - _0F_38_DC */ 0xf3bc, +/* 845 - _0F_38_DD */ 0xf3c8, +/* 846 - _0F_38_DE */ 0xf3d4, +/* 847 - _0F_38_DF */ 0xf3e0, /* 848 - */ 0, /* 849 - */ 0, /* 84a - */ 0, @@ -3904,8 +3906,8 @@ _InstNode InstructionsTree[5688] = { /* 855 - */ 0, /* 856 - */ 0, /* 857 - */ 0, -/* 858 - _0F_38_F0 */ 0xd3ec, -/* 859 - _0F_38_F1 */ 0xd3f8, +/* 858 - _0F_38_F0 */ 0xf3ec, +/* 859 - _0F_38_F1 */ 0xf3f8, /* 85a - */ 0, /* 85b - */ 0, /* 85c - */ 0, @@ -3924,37 +3926,37 @@ _InstNode InstructionsTree[5688] = { /* 869 - */ 0, /* 86a - */ 0, /* 86b - */ 0, -/* 86c - _0F_3A_04 */ 0xd404, -/* 86d - _0F_3A_05 */ 0xd410, -/* 86e - _0F_3A_06 */ 0xd41c, +/* 86c - _0F_3A_04 */ 0xf404, +/* 86d - _0F_3A_05 */ 0xf410, +/* 86e - _0F_3A_06 */ 0xf41c, /* 86f - */ 0, -/* 870 - _0F_3A_08 */ 0xd428, -/* 871 - _0F_3A_09 */ 0xd434, -/* 872 - _0F_3A_0A */ 0xd440, -/* 873 - _0F_3A_0B */ 0xd44c, -/* 874 - _0F_3A_0C */ 0xd458, -/* 875 - _0F_3A_0D */ 0xd464, -/* 876 - _0F_3A_0E */ 0xd470, -/* 877 - _0F_3A_0F */ 0xd47c, +/* 870 - _0F_3A_08 */ 0xf428, +/* 871 - _0F_3A_09 */ 0xf434, +/* 872 - _0F_3A_0A */ 0xf440, +/* 873 - _0F_3A_0B */ 0xf44c, +/* 874 - _0F_3A_0C */ 0xf458, +/* 875 - _0F_3A_0D */ 0xf464, +/* 876 - _0F_3A_0E */ 0xf470, +/* 877 - _0F_3A_0F */ 0xf47c, /* 878 - */ 0, /* 879 - */ 0, /* 87a - */ 0, /* 87b - */ 0, -/* 87c - _0F_3A_14 */ 0xd488, -/* 87d - _0F_3A_15 */ 0xd494, -/* 87e - _0F_3A_16 */ 0xd4a0, -/* 87f - _0F_3A_17 */ 0xd4ac, -/* 880 - _0F_3A_18 */ 0xd4b8, -/* 881 - _0F_3A_19 */ 0xd4c4, +/* 87c - _0F_3A_14 */ 0xf488, +/* 87d - _0F_3A_15 */ 0xf494, +/* 87e - _0F_3A_16 */ 0xf4a0, +/* 87f - _0F_3A_17 */ 0xf4ac, +/* 880 - _0F_3A_18 */ 0xf4b8, +/* 881 - _0F_3A_19 */ 0xf4c4, /* 882 - */ 0, /* 883 - */ 0, /* 884 - */ 0, /* 885 - */ 0, /* 886 - */ 0, /* 887 - */ 0, -/* 888 - _0F_3A_20 */ 0xd4d0, -/* 889 - _0F_3A_21 */ 0xd4dc, -/* 88a - _0F_3A_22 */ 0xd4e8, +/* 888 - _0F_3A_20 */ 0xf4d0, +/* 889 - _0F_3A_21 */ 0xf4dc, +/* 88a - _0F_3A_22 */ 0xf4e8, /* 88b - */ 0, /* 88c - */ 0, /* 88d - */ 0, @@ -3984,19 +3986,19 @@ _InstNode InstructionsTree[5688] = { /* 8a5 - */ 0, /* 8a6 - */ 0, /* 8a7 - */ 0, -/* 8a8 - _0F_3A_40 */ 0xd4f4, -/* 8a9 - _0F_3A_41 */ 0xd500, -/* 8aa - _0F_3A_42 */ 0xd50c, +/* 8a8 - _0F_3A_40 */ 0xf4f4, +/* 8a9 - _0F_3A_41 */ 0xf500, +/* 8aa - _0F_3A_42 */ 0xf50c, /* 8ab - */ 0, -/* 8ac - _0F_3A_44 */ 0xd518, +/* 8ac - _0F_3A_44 */ 0xf518, /* 8ad - */ 0, /* 8ae - */ 0, /* 8af - */ 0, /* 8b0 - */ 0, /* 8b1 - */ 0, -/* 8b2 - _0F_3A_4A */ 0xd524, -/* 8b3 - _0F_3A_4B */ 0xd530, -/* 8b4 - _0F_3A_4C */ 0xd53c, +/* 8b2 - _0F_3A_4A */ 0xf524, +/* 8b3 - _0F_3A_4B */ 0xf530, +/* 8b4 - _0F_3A_4C */ 0xf53c, /* 8b5 - */ 0, /* 8b6 - */ 0, /* 8b7 - */ 0, @@ -4016,10 +4018,10 @@ _InstNode InstructionsTree[5688] = { /* 8c5 - */ 0, /* 8c6 - */ 0, /* 8c7 - */ 0, -/* 8c8 - _0F_3A_60 */ 0xd548, -/* 8c9 - _0F_3A_61 */ 0xd554, -/* 8ca - _0F_3A_62 */ 0xd560, -/* 8cb - _0F_3A_63 */ 0xd56c, +/* 8c8 - _0F_3A_60 */ 0xf548, +/* 8c9 - _0F_3A_61 */ 0xf554, +/* 8ca - _0F_3A_62 */ 0xf560, +/* 8cb - _0F_3A_63 */ 0xf56c, /* 8cc - */ 0, /* 8cd - */ 0, /* 8ce - */ 0, @@ -4143,7 +4145,7 @@ _InstNode InstructionsTree[5688] = { /* 944 - */ 0, /* 945 - */ 0, /* 946 - */ 0, -/* 947 - _0F_3A_DF */ 0xd578, +/* 947 - _0F_3A_DF */ 0xf578, /* 948 - */ 0, /* 949 - */ 0, /* 94a - */ 0, @@ -4176,8 +4178,8 @@ _InstNode InstructionsTree[5688] = { /* 965 - */ 0, /* 966 - */ 0, /* 967 - */ 0, -/* 968 - _0F_50 */ 0x23a3, -/* 969 - _66_0F_50 */ 0x23a4, +/* 968 - _0F_50 */ 0x23a5, +/* 969 - _66_0F_50 */ 0x23a6, /* 96a - */ 0, /* 96b - */ 0, /* 96c - _V_0F_50 */ 0x4036, @@ -4188,10 +4190,10 @@ _InstNode InstructionsTree[5688] = { /* 971 - */ 0, /* 972 - */ 0, /* 973 - */ 0, -/* 974 - _0F_51 */ 0x23a5, -/* 975 - _66_0F_51 */ 0x23a6, -/* 976 - _F3_0F_51 */ 0x23a7, -/* 977 - _F2_0F_51 */ 0x23a8, +/* 974 - _0F_51 */ 0x23a7, +/* 975 - _66_0F_51 */ 0x23a8, +/* 976 - _F3_0F_51 */ 0x23a9, +/* 977 - _F2_0F_51 */ 0x23aa, /* 978 - _V_0F_51 */ 0x4038, /* 979 - _V_66_0F_51 */ 0x4039, /* 97a - _V_F3_0F_51 */ 0x403a, @@ -4200,9 +4202,9 @@ _InstNode InstructionsTree[5688] = { /* 97d - */ 0, /* 97e - */ 0, /* 97f - */ 0, -/* 980 - _0F_52 */ 0x23a9, +/* 980 - _0F_52 */ 0x23ab, /* 981 - */ 0, -/* 982 - _F3_0F_52 */ 0x23aa, +/* 982 - _F3_0F_52 */ 0x23ac, /* 983 - */ 0, /* 984 - _V_0F_52 */ 0x403c, /* 985 - */ 0, @@ -4212,9 +4214,9 @@ _InstNode InstructionsTree[5688] = { /* 989 - */ 0, /* 98a - */ 0, /* 98b - */ 0, -/* 98c - _0F_53 */ 0x23ab, +/* 98c - _0F_53 */ 0x23ad, /* 98d - */ 0, -/* 98e - _F3_0F_53 */ 0x23ac, +/* 98e - _F3_0F_53 */ 0x23ae, /* 98f - */ 0, /* 990 - _V_0F_53 */ 0x403e, /* 991 - */ 0, @@ -4224,8 +4226,8 @@ _InstNode InstructionsTree[5688] = { /* 995 - */ 0, /* 996 - */ 0, /* 997 - */ 0, -/* 998 - _0F_54 */ 0x23ad, -/* 999 - _66_0F_54 */ 0x23ae, +/* 998 - _0F_54 */ 0x23af, +/* 999 - _66_0F_54 */ 0x23b0, /* 99a - */ 0, /* 99b - */ 0, /* 99c - _V_0F_54 */ 0x4040, @@ -4236,8 +4238,8 @@ _InstNode InstructionsTree[5688] = { /* 9a1 - */ 0, /* 9a2 - */ 0, /* 9a3 - */ 0, -/* 9a4 - _0F_55 */ 0x23af, -/* 9a5 - _66_0F_55 */ 0x23b0, +/* 9a4 - _0F_55 */ 0x23b1, +/* 9a5 - _66_0F_55 */ 0x23b2, /* 9a6 - */ 0, /* 9a7 - */ 0, /* 9a8 - _V_0F_55 */ 0x4042, @@ -4248,8 +4250,8 @@ _InstNode InstructionsTree[5688] = { /* 9ad - */ 0, /* 9ae - */ 0, /* 9af - */ 0, -/* 9b0 - _0F_56 */ 0x23b1, -/* 9b1 - _66_0F_56 */ 0x23b2, +/* 9b0 - _0F_56 */ 0x23b3, +/* 9b1 - _66_0F_56 */ 0x23b4, /* 9b2 - */ 0, /* 9b3 - */ 0, /* 9b4 - _V_0F_56 */ 0x4044, @@ -4260,8 +4262,8 @@ _InstNode InstructionsTree[5688] = { /* 9b9 - */ 0, /* 9ba - */ 0, /* 9bb - */ 0, -/* 9bc - _0F_57 */ 0x23b3, -/* 9bd - _66_0F_57 */ 0x23b4, +/* 9bc - _0F_57 */ 0x23b5, +/* 9bd - _66_0F_57 */ 0x23b6, /* 9be - */ 0, /* 9bf - */ 0, /* 9c0 - _V_0F_57 */ 0x4046, @@ -4272,10 +4274,10 @@ _InstNode InstructionsTree[5688] = { /* 9c5 - */ 0, /* 9c6 - */ 0, /* 9c7 - */ 0, -/* 9c8 - _0F_58 */ 0x23b5, -/* 9c9 - _66_0F_58 */ 0x23b6, -/* 9ca - _F3_0F_58 */ 0x23b7, -/* 9cb - _F2_0F_58 */ 0x23b8, +/* 9c8 - _0F_58 */ 0x23b7, +/* 9c9 - _66_0F_58 */ 0x23b8, +/* 9ca - _F3_0F_58 */ 0x23b9, +/* 9cb - _F2_0F_58 */ 0x23ba, /* 9cc - _V_0F_58 */ 0x4048, /* 9cd - _V_66_0F_58 */ 0x4049, /* 9ce - _V_F3_0F_58 */ 0x404a, @@ -4284,10 +4286,10 @@ _InstNode InstructionsTree[5688] = { /* 9d1 - */ 0, /* 9d2 - */ 0, /* 9d3 - */ 0, -/* 9d4 - _0F_59 */ 0x23b9, -/* 9d5 - _66_0F_59 */ 0x23ba, -/* 9d6 - _F3_0F_59 */ 0x23bb, -/* 9d7 - _F2_0F_59 */ 0x23bc, +/* 9d4 - _0F_59 */ 0x23bb, +/* 9d5 - _66_0F_59 */ 0x23bc, +/* 9d6 - _F3_0F_59 */ 0x23bd, +/* 9d7 - _F2_0F_59 */ 0x23be, /* 9d8 - _V_0F_59 */ 0x404c, /* 9d9 - _V_66_0F_59 */ 0x404d, /* 9da - _V_F3_0F_59 */ 0x404e, @@ -4296,10 +4298,10 @@ _InstNode InstructionsTree[5688] = { /* 9dd - */ 0, /* 9de - */ 0, /* 9df - */ 0, -/* 9e0 - _0F_5A */ 0x23bd, -/* 9e1 - _66_0F_5A */ 0x23be, -/* 9e2 - _F3_0F_5A */ 0x23bf, -/* 9e3 - _F2_0F_5A */ 0x23c0, +/* 9e0 - _0F_5A */ 0x23bf, +/* 9e1 - _66_0F_5A */ 0x23c0, +/* 9e2 - _F3_0F_5A */ 0x23c1, +/* 9e3 - _F2_0F_5A */ 0x23c2, /* 9e4 - _V_0F_5A */ 0x4050, /* 9e5 - _V_66_0F_5A */ 0x4051, /* 9e6 - _V_F3_0F_5A */ 0x4052, @@ -4308,9 +4310,9 @@ _InstNode InstructionsTree[5688] = { /* 9e9 - */ 0, /* 9ea - */ 0, /* 9eb - */ 0, -/* 9ec - _0F_5B */ 0x23c1, -/* 9ed - _66_0F_5B */ 0x23c2, -/* 9ee - _F3_0F_5B */ 0x23c3, +/* 9ec - _0F_5B */ 0x23c3, +/* 9ed - _66_0F_5B */ 0x23c4, +/* 9ee - _F3_0F_5B */ 0x23c5, /* 9ef - */ 0, /* 9f0 - _V_0F_5B */ 0x4054, /* 9f1 - _V_66_0F_5B */ 0x4055, @@ -4320,10 +4322,10 @@ _InstNode InstructionsTree[5688] = { /* 9f5 - */ 0, /* 9f6 - */ 0, /* 9f7 - */ 0, -/* 9f8 - _0F_5C */ 0x23c4, -/* 9f9 - _66_0F_5C */ 0x23c5, -/* 9fa - _F3_0F_5C */ 0x23c6, -/* 9fb - _F2_0F_5C */ 0x23c7, +/* 9f8 - _0F_5C */ 0x23c6, +/* 9f9 - _66_0F_5C */ 0x23c7, +/* 9fa - _F3_0F_5C */ 0x23c8, +/* 9fb - _F2_0F_5C */ 0x23c9, /* 9fc - _V_0F_5C */ 0x4057, /* 9fd - _V_66_0F_5C */ 0x4058, /* 9fe - _V_F3_0F_5C */ 0x4059, @@ -4332,10 +4334,10 @@ _InstNode InstructionsTree[5688] = { /* a01 - */ 0, /* a02 - */ 0, /* a03 - */ 0, -/* a04 - _0F_5D */ 0x23c8, -/* a05 - _66_0F_5D */ 0x23c9, -/* a06 - _F3_0F_5D */ 0x23ca, -/* a07 - _F2_0F_5D */ 0x23cb, +/* a04 - _0F_5D */ 0x23ca, +/* a05 - _66_0F_5D */ 0x23cb, +/* a06 - _F3_0F_5D */ 0x23cc, +/* a07 - _F2_0F_5D */ 0x23cd, /* a08 - _V_0F_5D */ 0x405b, /* a09 - _V_66_0F_5D */ 0x405c, /* a0a - _V_F3_0F_5D */ 0x405d, @@ -4344,10 +4346,10 @@ _InstNode InstructionsTree[5688] = { /* a0d - */ 0, /* a0e - */ 0, /* a0f - */ 0, -/* a10 - _0F_5E */ 0x23cc, -/* a11 - _66_0F_5E */ 0x23cd, -/* a12 - _F3_0F_5E */ 0x23ce, -/* a13 - _F2_0F_5E */ 0x23cf, +/* a10 - _0F_5E */ 0x23ce, +/* a11 - _66_0F_5E */ 0x23cf, +/* a12 - _F3_0F_5E */ 0x23d0, +/* a13 - _F2_0F_5E */ 0x23d1, /* a14 - _V_0F_5E */ 0x405f, /* a15 - _V_66_0F_5E */ 0x4060, /* a16 - _V_F3_0F_5E */ 0x4061, @@ -4356,10 +4358,10 @@ _InstNode InstructionsTree[5688] = { /* a19 - */ 0, /* a1a - */ 0, /* a1b - */ 0, -/* a1c - _0F_5F */ 0x23d0, -/* a1d - _66_0F_5F */ 0x23d1, -/* a1e - _F3_0F_5F */ 0x23d2, -/* a1f - _F2_0F_5F */ 0x23d3, +/* a1c - _0F_5F */ 0x23d2, +/* a1d - _66_0F_5F */ 0x23d3, +/* a1e - _F3_0F_5F */ 0x23d4, +/* a1f - _F2_0F_5F */ 0x23d5, /* a20 - _V_0F_5F */ 0x4063, /* a21 - _V_66_0F_5F */ 0x4064, /* a22 - _V_F3_0F_5F */ 0x4065, @@ -4368,8 +4370,8 @@ _InstNode InstructionsTree[5688] = { /* a25 - */ 0, /* a26 - */ 0, /* a27 - */ 0, -/* a28 - _0F_60 */ 0x23d4, -/* a29 - _66_0F_60 */ 0x23d5, +/* a28 - _0F_60 */ 0x23d6, +/* a29 - _66_0F_60 */ 0x23d7, /* a2a - */ 0, /* a2b - */ 0, /* a2c - */ 0, @@ -4380,8 +4382,8 @@ _InstNode InstructionsTree[5688] = { /* a31 - */ 0, /* a32 - */ 0, /* a33 - */ 0, -/* a34 - _0F_61 */ 0x23d6, -/* a35 - _66_0F_61 */ 0x23d7, +/* a34 - _0F_61 */ 0x23d8, +/* a35 - _66_0F_61 */ 0x23d9, /* a36 - */ 0, /* a37 - */ 0, /* a38 - */ 0, @@ -4392,8 +4394,8 @@ _InstNode InstructionsTree[5688] = { /* a3d - */ 0, /* a3e - */ 0, /* a3f - */ 0, -/* a40 - _0F_62 */ 0x23d8, -/* a41 - _66_0F_62 */ 0x23d9, +/* a40 - _0F_62 */ 0x23da, +/* a41 - _66_0F_62 */ 0x23db, /* a42 - */ 0, /* a43 - */ 0, /* a44 - */ 0, @@ -4404,8 +4406,8 @@ _InstNode InstructionsTree[5688] = { /* a49 - */ 0, /* a4a - */ 0, /* a4b - */ 0, -/* a4c - _0F_63 */ 0x23da, -/* a4d - _66_0F_63 */ 0x23db, +/* a4c - _0F_63 */ 0x23dc, +/* a4d - _66_0F_63 */ 0x23dd, /* a4e - */ 0, /* a4f - */ 0, /* a50 - */ 0, @@ -4416,8 +4418,8 @@ _InstNode InstructionsTree[5688] = { /* a55 - */ 0, /* a56 - */ 0, /* a57 - */ 0, -/* a58 - _0F_64 */ 0x23dc, -/* a59 - _66_0F_64 */ 0x23dd, +/* a58 - _0F_64 */ 0x23de, +/* a59 - _66_0F_64 */ 0x23df, /* a5a - */ 0, /* a5b - */ 0, /* a5c - */ 0, @@ -4428,8 +4430,8 @@ _InstNode InstructionsTree[5688] = { /* a61 - */ 0, /* a62 - */ 0, /* a63 - */ 0, -/* a64 - _0F_65 */ 0x23de, -/* a65 - _66_0F_65 */ 0x23df, +/* a64 - _0F_65 */ 0x23e0, +/* a65 - _66_0F_65 */ 0x23e1, /* a66 - */ 0, /* a67 - */ 0, /* a68 - */ 0, @@ -4440,8 +4442,8 @@ _InstNode InstructionsTree[5688] = { /* a6d - */ 0, /* a6e - */ 0, /* a6f - */ 0, -/* a70 - _0F_66 */ 0x23e0, -/* a71 - _66_0F_66 */ 0x23e1, +/* a70 - _0F_66 */ 0x23e2, +/* a71 - _66_0F_66 */ 0x23e3, /* a72 - */ 0, /* a73 - */ 0, /* a74 - */ 0, @@ -4452,8 +4454,8 @@ _InstNode InstructionsTree[5688] = { /* a79 - */ 0, /* a7a - */ 0, /* a7b - */ 0, -/* a7c - _0F_67 */ 0x23e2, -/* a7d - _66_0F_67 */ 0x23e3, +/* a7c - _0F_67 */ 0x23e4, +/* a7d - _66_0F_67 */ 0x23e5, /* a7e - */ 0, /* a7f - */ 0, /* a80 - */ 0, @@ -4464,8 +4466,8 @@ _InstNode InstructionsTree[5688] = { /* a85 - */ 0, /* a86 - */ 0, /* a87 - */ 0, -/* a88 - _0F_68 */ 0x23e4, -/* a89 - _66_0F_68 */ 0x23e5, +/* a88 - _0F_68 */ 0x23e6, +/* a89 - _66_0F_68 */ 0x23e7, /* a8a - */ 0, /* a8b - */ 0, /* a8c - */ 0, @@ -4476,8 +4478,8 @@ _InstNode InstructionsTree[5688] = { /* a91 - */ 0, /* a92 - */ 0, /* a93 - */ 0, -/* a94 - _0F_69 */ 0x23e6, -/* a95 - _66_0F_69 */ 0x23e7, +/* a94 - _0F_69 */ 0x23e8, +/* a95 - _66_0F_69 */ 0x23e9, /* a96 - */ 0, /* a97 - */ 0, /* a98 - */ 0, @@ -4488,8 +4490,8 @@ _InstNode InstructionsTree[5688] = { /* a9d - */ 0, /* a9e - */ 0, /* a9f - */ 0, -/* aa0 - _0F_6A */ 0x23e8, -/* aa1 - _66_0F_6A */ 0x23e9, +/* aa0 - _0F_6A */ 0x23ea, +/* aa1 - _66_0F_6A */ 0x23eb, /* aa2 - */ 0, /* aa3 - */ 0, /* aa4 - */ 0, @@ -4500,8 +4502,8 @@ _InstNode InstructionsTree[5688] = { /* aa9 - */ 0, /* aaa - */ 0, /* aab - */ 0, -/* aac - _0F_6B */ 0x23ea, -/* aad - _66_0F_6B */ 0x23eb, +/* aac - _0F_6B */ 0x23ec, +/* aad - _66_0F_6B */ 0x23ed, /* aae - */ 0, /* aaf - */ 0, /* ab0 - */ 0, @@ -4513,7 +4515,7 @@ _InstNode InstructionsTree[5688] = { /* ab6 - */ 0, /* ab7 - */ 0, /* ab8 - */ 0, -/* ab9 - _66_0F_6C */ 0x23ec, +/* ab9 - _66_0F_6C */ 0x23ee, /* aba - */ 0, /* abb - */ 0, /* abc - */ 0, @@ -4525,7 +4527,7 @@ _InstNode InstructionsTree[5688] = { /* ac2 - */ 0, /* ac3 - */ 0, /* ac4 - */ 0, -/* ac5 - _66_0F_6D */ 0x23ed, +/* ac5 - _66_0F_6D */ 0x23ef, /* ac6 - */ 0, /* ac7 - */ 0, /* ac8 - */ 0, @@ -4548,9 +4550,9 @@ _InstNode InstructionsTree[5688] = { /* ad9 - */ 0, /* ada - */ 0, /* adb - */ 0, -/* adc - _0F_6F */ 0x23ee, -/* add - _66_0F_6F */ 0x23ef, -/* ade - _F3_0F_6F */ 0x23f0, +/* adc - _0F_6F */ 0x23f0, +/* add - _66_0F_6F */ 0x23f1, +/* ade - _F3_0F_6F */ 0x23f2, /* adf - */ 0, /* ae0 - */ 0, /* ae1 - _V_66_0F_6F */ 0x4078, @@ -4574,30 +4576,30 @@ _InstNode InstructionsTree[5688] = { /* af3 - */ 0, /* af4 - */ 0, /* af5 - */ 0, -/* af6 - _0F_71_02 */ 0xd584, +/* af6 - _0F_71_02 */ 0xf584, /* af7 - */ 0, -/* af8 - _0F_71_04 */ 0xd590, +/* af8 - _0F_71_04 */ 0xf590, /* af9 - */ 0, -/* afa - _0F_71_06 */ 0xd59c, +/* afa - _0F_71_06 */ 0xf59c, /* afb - */ 0, /* afc - */ 0, /* afd - */ 0, -/* afe - _0F_72_02 */ 0xd5a8, +/* afe - _0F_72_02 */ 0xf5a8, /* aff - */ 0, -/* b00 - _0F_72_04 */ 0xd5b4, +/* b00 - _0F_72_04 */ 0xf5b4, /* b01 - */ 0, -/* b02 - _0F_72_06 */ 0xd5c0, +/* b02 - _0F_72_06 */ 0xf5c0, /* b03 - */ 0, /* b04 - */ 0, /* b05 - */ 0, -/* b06 - _0F_73_02 */ 0xd5cc, -/* b07 - _0F_73_03 */ 0xd5d8, +/* b06 - _0F_73_02 */ 0xf5cc, +/* b07 - _0F_73_03 */ 0xf5d8, /* b08 - */ 0, /* b09 - */ 0, -/* b0a - _0F_73_06 */ 0xd5e4, -/* b0b - _0F_73_07 */ 0xd5f0, -/* b0c - _0F_74 */ 0x23f1, -/* b0d - _66_0F_74 */ 0x23f2, +/* b0a - _0F_73_06 */ 0xf5e4, +/* b0b - _0F_73_07 */ 0xf5f0, +/* b0c - _0F_74 */ 0x23f3, +/* b0d - _66_0F_74 */ 0x23f4, /* b0e - */ 0, /* b0f - */ 0, /* b10 - */ 0, @@ -4608,8 +4610,8 @@ _InstNode InstructionsTree[5688] = { /* b15 - */ 0, /* b16 - */ 0, /* b17 - */ 0, -/* b18 - _0F_75 */ 0x23f3, -/* b19 - _66_0F_75 */ 0x23f4, +/* b18 - _0F_75 */ 0x23f5, +/* b19 - _66_0F_75 */ 0x23f6, /* b1a - */ 0, /* b1b - */ 0, /* b1c - */ 0, @@ -4620,8 +4622,8 @@ _InstNode InstructionsTree[5688] = { /* b21 - */ 0, /* b22 - */ 0, /* b23 - */ 0, -/* b24 - _0F_76 */ 0x23f5, -/* b25 - _66_0F_76 */ 0x23f6, +/* b24 - _0F_76 */ 0x23f7, +/* b25 - _66_0F_76 */ 0x23f8, /* b26 - */ 0, /* b27 - */ 0, /* b28 - */ 0, @@ -4632,7 +4634,7 @@ _InstNode InstructionsTree[5688] = { /* b2d - */ 0, /* b2e - */ 0, /* b2f - */ 0, -/* b30 - _0F_77 */ 0x23f7, +/* b30 - _0F_77 */ 0x23f9, /* b31 - */ 0, /* b32 - */ 0, /* b33 - */ 0, @@ -4644,7 +4646,7 @@ _InstNode InstructionsTree[5688] = { /* b39 - */ 0, /* b3a - */ 0, /* b3b - */ 0, -/* b3c - _0F_78 */ 0x23f8, +/* b3c - _0F_78 */ 0x23fa, /* b3d - _66_0F_78 */ 0x4085, /* b3e - */ 0, /* b3f - _F2_0F_78 */ 0x4086, @@ -4656,10 +4658,10 @@ _InstNode InstructionsTree[5688] = { /* b45 - */ 0, /* b46 - */ 0, /* b47 - */ 0, -/* b48 - _0F_79 */ 0x23f9, -/* b49 - _66_0F_79 */ 0x23fa, +/* b48 - _0F_79 */ 0x23fb, +/* b49 - _66_0F_79 */ 0x23fc, /* b4a - */ 0, -/* b4b - _F2_0F_79 */ 0x23fb, +/* b4b - _F2_0F_79 */ 0x23fd, /* b4c - */ 0, /* b4d - */ 0, /* b4e - */ 0, @@ -4716,8 +4718,8 @@ _InstNode InstructionsTree[5688] = { /* b81 - */ 0, /* b82 - */ 0, /* b83 - */ 0, -/* b84 - _0F_7A_30 */ 0x23fc, -/* b85 - _0F_7A_31 */ 0x23fd, +/* b84 - _0F_7A_30 */ 0x23fe, +/* b85 - _0F_7A_31 */ 0x23ff, /* b86 - */ 0, /* b87 - */ 0, /* b88 - */ 0, @@ -4925,9 +4927,9 @@ _InstNode InstructionsTree[5688] = { /* c52 - */ 0, /* c53 - */ 0, /* c54 - */ 0, -/* c55 - _66_0F_7C */ 0x23fe, +/* c55 - _66_0F_7C */ 0x2400, /* c56 - */ 0, -/* c57 - _F2_0F_7C */ 0x23ff, +/* c57 - _F2_0F_7C */ 0x2401, /* c58 - */ 0, /* c59 - _V_66_0F_7C */ 0x4087, /* c5a - */ 0, @@ -4937,9 +4939,9 @@ _InstNode InstructionsTree[5688] = { /* c5e - */ 0, /* c5f - */ 0, /* c60 - */ 0, -/* c61 - _66_0F_7D */ 0x2400, +/* c61 - _66_0F_7D */ 0x2402, /* c62 - */ 0, -/* c63 - _F2_0F_7D */ 0x2401, +/* c63 - _F2_0F_7D */ 0x2403, /* c64 - */ 0, /* c65 - _V_66_0F_7D */ 0x4089, /* c66 - */ 0, @@ -4950,7 +4952,7 @@ _InstNode InstructionsTree[5688] = { /* c6b - */ 0, /* c6c - _0F_7E */ 0x408b, /* c6d - _66_0F_7E */ 0x408c, -/* c6e - _F3_0F_7E */ 0x2402, +/* c6e - _F3_0F_7E */ 0x2404, /* c6f - */ 0, /* c70 - */ 0, /* c71 - _V_66_0F_7E */ 0x408d, @@ -4960,9 +4962,9 @@ _InstNode InstructionsTree[5688] = { /* c75 - */ 0, /* c76 - */ 0, /* c77 - */ 0, -/* c78 - _0F_7F */ 0x2403, -/* c79 - _66_0F_7F */ 0x2404, -/* c7a - _F3_0F_7F */ 0x2405, +/* c78 - _0F_7F */ 0x2405, +/* c79 - _66_0F_7F */ 0x2406, +/* c7a - _F3_0F_7F */ 0x2407, /* c7b - */ 0, /* c7c - */ 0, /* c7d - _V_66_0F_7F */ 0x408f, @@ -4972,17 +4974,17 @@ _InstNode InstructionsTree[5688] = { /* c81 - */ 0, /* c82 - */ 0, /* c83 - */ 0, -/* c84 - _0F_AE_00 */ 0xd5fc, -/* c85 - _0F_AE_01 */ 0xd608, -/* c86 - _0F_AE_02 */ 0xd614, -/* c87 - _0F_AE_03 */ 0xd620, +/* c84 - _0F_AE_00 */ 0xf5fc, +/* c85 - _0F_AE_01 */ 0xf608, +/* c86 - _0F_AE_02 */ 0xf614, +/* c87 - _0F_AE_03 */ 0xf620, /* c88 - _0F_AE_04 */ 0x4091, /* c89 - _0F_AE_05 */ 0x4092, /* c8a - _0F_AE_06 */ 0x4093, /* c8b - _0F_AE_07 */ 0x4094, /* c8c - */ 0, /* c8d - */ 0, -/* c8e - _F3_0F_B8 */ 0x2406, +/* c8e - _F3_0F_B8 */ 0x2408, /* c8f - */ 0, /* c90 - */ 0, /* c91 - */ 0, @@ -4996,13 +4998,13 @@ _InstNode InstructionsTree[5688] = { /* c99 - */ 0, /* c9a - */ 0, /* c9b - */ 0, -/* c9c - _0F_BA_04 */ 0x2407, -/* c9d - _0F_BA_05 */ 0x2408, -/* c9e - _0F_BA_06 */ 0x2409, -/* c9f - _0F_BA_07 */ 0x240a, -/* ca0 - _0F_BC */ 0x240b, +/* c9c - _0F_BA_04 */ 0x2409, +/* c9d - _0F_BA_05 */ 0x240a, +/* c9e - _0F_BA_06 */ 0x240b, +/* c9f - _0F_BA_07 */ 0x240c, +/* ca0 - _0F_BC */ 0x240d, /* ca1 - */ 0, -/* ca2 - _F3_0F_BC */ 0x240c, +/* ca2 - _F3_0F_BC */ 0x240e, /* ca3 - */ 0, /* ca4 - */ 0, /* ca5 - */ 0, @@ -5012,9 +5014,9 @@ _InstNode InstructionsTree[5688] = { /* ca9 - */ 0, /* caa - */ 0, /* cab - */ 0, -/* cac - _0F_BD */ 0x240d, +/* cac - _0F_BD */ 0x240f, /* cad - */ 0, -/* cae - _F3_0F_BD */ 0x240e, +/* cae - _F3_0F_BD */ 0x2410, /* caf - */ 0, /* cb0 - */ 0, /* cb1 - */ 0, @@ -5078,12 +5080,12 @@ _InstNode InstructionsTree[5688] = { /* ceb - */ 0, /* cec - */ 0, /* ced - */ 0, -/* cee - _0F_C7_06 */ 0xd62c, -/* cef - _0F_C7_07 */ 0x240f, +/* cee - _0F_C7_06 */ 0xf62c, +/* cef - _0F_C7_07 */ 0x2411, /* cf0 - */ 0, -/* cf1 - _66_0F_D0 */ 0x2410, +/* cf1 - _66_0F_D0 */ 0x2412, /* cf2 - */ 0, -/* cf3 - _F2_0F_D0 */ 0x2411, +/* cf3 - _F2_0F_D0 */ 0x2413, /* cf4 - */ 0, /* cf5 - _V_66_0F_D0 */ 0x40a8, /* cf6 - */ 0, @@ -5092,8 +5094,8 @@ _InstNode InstructionsTree[5688] = { /* cf9 - */ 0, /* cfa - */ 0, /* cfb - */ 0, -/* cfc - _0F_D1 */ 0x2412, -/* cfd - _66_0F_D1 */ 0x2413, +/* cfc - _0F_D1 */ 0x2414, +/* cfd - _66_0F_D1 */ 0x2415, /* cfe - */ 0, /* cff - */ 0, /* d00 - */ 0, @@ -5104,8 +5106,8 @@ _InstNode InstructionsTree[5688] = { /* d05 - */ 0, /* d06 - */ 0, /* d07 - */ 0, -/* d08 - _0F_D2 */ 0x2414, -/* d09 - _66_0F_D2 */ 0x2415, +/* d08 - _0F_D2 */ 0x2416, +/* d09 - _66_0F_D2 */ 0x2417, /* d0a - */ 0, /* d0b - */ 0, /* d0c - */ 0, @@ -5116,8 +5118,8 @@ _InstNode InstructionsTree[5688] = { /* d11 - */ 0, /* d12 - */ 0, /* d13 - */ 0, -/* d14 - _0F_D3 */ 0x2416, -/* d15 - _66_0F_D3 */ 0x2417, +/* d14 - _0F_D3 */ 0x2418, +/* d15 - _66_0F_D3 */ 0x2419, /* d16 - */ 0, /* d17 - */ 0, /* d18 - */ 0, @@ -5128,8 +5130,8 @@ _InstNode InstructionsTree[5688] = { /* d1d - */ 0, /* d1e - */ 0, /* d1f - */ 0, -/* d20 - _0F_D4 */ 0x2418, -/* d21 - _66_0F_D4 */ 0x2419, +/* d20 - _0F_D4 */ 0x241a, +/* d21 - _66_0F_D4 */ 0x241b, /* d22 - */ 0, /* d23 - */ 0, /* d24 - */ 0, @@ -5140,8 +5142,8 @@ _InstNode InstructionsTree[5688] = { /* d29 - */ 0, /* d2a - */ 0, /* d2b - */ 0, -/* d2c - _0F_D5 */ 0x241a, -/* d2d - _66_0F_D5 */ 0x241b, +/* d2c - _0F_D5 */ 0x241c, +/* d2d - _66_0F_D5 */ 0x241d, /* d2e - */ 0, /* d2f - */ 0, /* d30 - */ 0, @@ -5153,9 +5155,9 @@ _InstNode InstructionsTree[5688] = { /* d36 - */ 0, /* d37 - */ 0, /* d38 - */ 0, -/* d39 - _66_0F_D6 */ 0x241c, -/* d3a - _F3_0F_D6 */ 0x241d, -/* d3b - _F2_0F_D6 */ 0x241e, +/* d39 - _66_0F_D6 */ 0x241e, +/* d3a - _F3_0F_D6 */ 0x241f, +/* d3b - _F2_0F_D6 */ 0x2420, /* d3c - */ 0, /* d3d - _V_66_0F_D6 */ 0x40af, /* d3e - */ 0, @@ -5164,8 +5166,8 @@ _InstNode InstructionsTree[5688] = { /* d41 - */ 0, /* d42 - */ 0, /* d43 - */ 0, -/* d44 - _0F_D7 */ 0x241f, -/* d45 - _66_0F_D7 */ 0x2420, +/* d44 - _0F_D7 */ 0x2421, +/* d45 - _66_0F_D7 */ 0x2422, /* d46 - */ 0, /* d47 - */ 0, /* d48 - */ 0, @@ -5176,8 +5178,8 @@ _InstNode InstructionsTree[5688] = { /* d4d - */ 0, /* d4e - */ 0, /* d4f - */ 0, -/* d50 - _0F_D8 */ 0x2421, -/* d51 - _66_0F_D8 */ 0x2422, +/* d50 - _0F_D8 */ 0x2423, +/* d51 - _66_0F_D8 */ 0x2424, /* d52 - */ 0, /* d53 - */ 0, /* d54 - */ 0, @@ -5188,8 +5190,8 @@ _InstNode InstructionsTree[5688] = { /* d59 - */ 0, /* d5a - */ 0, /* d5b - */ 0, -/* d5c - _0F_D9 */ 0x2423, -/* d5d - _66_0F_D9 */ 0x2424, +/* d5c - _0F_D9 */ 0x2425, +/* d5d - _66_0F_D9 */ 0x2426, /* d5e - */ 0, /* d5f - */ 0, /* d60 - */ 0, @@ -5200,8 +5202,8 @@ _InstNode InstructionsTree[5688] = { /* d65 - */ 0, /* d66 - */ 0, /* d67 - */ 0, -/* d68 - _0F_DA */ 0x2425, -/* d69 - _66_0F_DA */ 0x2426, +/* d68 - _0F_DA */ 0x2427, +/* d69 - _66_0F_DA */ 0x2428, /* d6a - */ 0, /* d6b - */ 0, /* d6c - */ 0, @@ -5212,8 +5214,8 @@ _InstNode InstructionsTree[5688] = { /* d71 - */ 0, /* d72 - */ 0, /* d73 - */ 0, -/* d74 - _0F_DB */ 0x2427, -/* d75 - _66_0F_DB */ 0x2428, +/* d74 - _0F_DB */ 0x2429, +/* d75 - _66_0F_DB */ 0x242a, /* d76 - */ 0, /* d77 - */ 0, /* d78 - */ 0, @@ -5224,8 +5226,8 @@ _InstNode InstructionsTree[5688] = { /* d7d - */ 0, /* d7e - */ 0, /* d7f - */ 0, -/* d80 - _0F_DC */ 0x2429, -/* d81 - _66_0F_DC */ 0x242a, +/* d80 - _0F_DC */ 0x242b, +/* d81 - _66_0F_DC */ 0x242c, /* d82 - */ 0, /* d83 - */ 0, /* d84 - */ 0, @@ -5236,8 +5238,8 @@ _InstNode InstructionsTree[5688] = { /* d89 - */ 0, /* d8a - */ 0, /* d8b - */ 0, -/* d8c - _0F_DD */ 0x242b, -/* d8d - _66_0F_DD */ 0x242c, +/* d8c - _0F_DD */ 0x242d, +/* d8d - _66_0F_DD */ 0x242e, /* d8e - */ 0, /* d8f - */ 0, /* d90 - */ 0, @@ -5248,8 +5250,8 @@ _InstNode InstructionsTree[5688] = { /* d95 - */ 0, /* d96 - */ 0, /* d97 - */ 0, -/* d98 - _0F_DE */ 0x242d, -/* d99 - _66_0F_DE */ 0x242e, +/* d98 - _0F_DE */ 0x242f, +/* d99 - _66_0F_DE */ 0x2430, /* d9a - */ 0, /* d9b - */ 0, /* d9c - */ 0, @@ -5260,8 +5262,8 @@ _InstNode InstructionsTree[5688] = { /* da1 - */ 0, /* da2 - */ 0, /* da3 - */ 0, -/* da4 - _0F_DF */ 0x242f, -/* da5 - _66_0F_DF */ 0x2430, +/* da4 - _0F_DF */ 0x2431, +/* da5 - _66_0F_DF */ 0x2432, /* da6 - */ 0, /* da7 - */ 0, /* da8 - */ 0, @@ -5272,8 +5274,8 @@ _InstNode InstructionsTree[5688] = { /* dad - */ 0, /* dae - */ 0, /* daf - */ 0, -/* db0 - _0F_E0 */ 0x2431, -/* db1 - _66_0F_E0 */ 0x2432, +/* db0 - _0F_E0 */ 0x2433, +/* db1 - _66_0F_E0 */ 0x2434, /* db2 - */ 0, /* db3 - */ 0, /* db4 - */ 0, @@ -5284,8 +5286,8 @@ _InstNode InstructionsTree[5688] = { /* db9 - */ 0, /* dba - */ 0, /* dbb - */ 0, -/* dbc - _0F_E1 */ 0x2433, -/* dbd - _66_0F_E1 */ 0x2434, +/* dbc - _0F_E1 */ 0x2435, +/* dbd - _66_0F_E1 */ 0x2436, /* dbe - */ 0, /* dbf - */ 0, /* dc0 - */ 0, @@ -5296,8 +5298,8 @@ _InstNode InstructionsTree[5688] = { /* dc5 - */ 0, /* dc6 - */ 0, /* dc7 - */ 0, -/* dc8 - _0F_E2 */ 0x2435, -/* dc9 - _66_0F_E2 */ 0x2436, +/* dc8 - _0F_E2 */ 0x2437, +/* dc9 - _66_0F_E2 */ 0x2438, /* dca - */ 0, /* dcb - */ 0, /* dcc - */ 0, @@ -5308,8 +5310,8 @@ _InstNode InstructionsTree[5688] = { /* dd1 - */ 0, /* dd2 - */ 0, /* dd3 - */ 0, -/* dd4 - _0F_E3 */ 0x2437, -/* dd5 - _66_0F_E3 */ 0x2438, +/* dd4 - _0F_E3 */ 0x2439, +/* dd5 - _66_0F_E3 */ 0x243a, /* dd6 - */ 0, /* dd7 - */ 0, /* dd8 - */ 0, @@ -5320,8 +5322,8 @@ _InstNode InstructionsTree[5688] = { /* ddd - */ 0, /* dde - */ 0, /* ddf - */ 0, -/* de0 - _0F_E4 */ 0x2439, -/* de1 - _66_0F_E4 */ 0x243a, +/* de0 - _0F_E4 */ 0x243b, +/* de1 - _66_0F_E4 */ 0x243c, /* de2 - */ 0, /* de3 - */ 0, /* de4 - */ 0, @@ -5332,8 +5334,8 @@ _InstNode InstructionsTree[5688] = { /* de9 - */ 0, /* dea - */ 0, /* deb - */ 0, -/* dec - _0F_E5 */ 0x243b, -/* ded - _66_0F_E5 */ 0x243c, +/* dec - _0F_E5 */ 0x243d, +/* ded - _66_0F_E5 */ 0x243e, /* dee - */ 0, /* def - */ 0, /* df0 - */ 0, @@ -5345,9 +5347,9 @@ _InstNode InstructionsTree[5688] = { /* df6 - */ 0, /* df7 - */ 0, /* df8 - */ 0, -/* df9 - _66_0F_E6 */ 0x243d, -/* dfa - _F3_0F_E6 */ 0x243e, -/* dfb - _F2_0F_E6 */ 0x243f, +/* df9 - _66_0F_E6 */ 0x243f, +/* dfa - _F3_0F_E6 */ 0x2440, +/* dfb - _F2_0F_E6 */ 0x2441, /* dfc - */ 0, /* dfd - _V_66_0F_E6 */ 0x40bf, /* dfe - _V_F3_0F_E6 */ 0x40c0, @@ -5356,8 +5358,8 @@ _InstNode InstructionsTree[5688] = { /* e01 - */ 0, /* e02 - */ 0, /* e03 - */ 0, -/* e04 - _0F_E7 */ 0x2440, -/* e05 - _66_0F_E7 */ 0x2441, +/* e04 - _0F_E7 */ 0x2442, +/* e05 - _66_0F_E7 */ 0x2443, /* e06 - */ 0, /* e07 - */ 0, /* e08 - */ 0, @@ -5368,8 +5370,8 @@ _InstNode InstructionsTree[5688] = { /* e0d - */ 0, /* e0e - */ 0, /* e0f - */ 0, -/* e10 - _0F_E8 */ 0x2442, -/* e11 - _66_0F_E8 */ 0x2443, +/* e10 - _0F_E8 */ 0x2444, +/* e11 - _66_0F_E8 */ 0x2445, /* e12 - */ 0, /* e13 - */ 0, /* e14 - */ 0, @@ -5380,8 +5382,8 @@ _InstNode InstructionsTree[5688] = { /* e19 - */ 0, /* e1a - */ 0, /* e1b - */ 0, -/* e1c - _0F_E9 */ 0x2444, -/* e1d - _66_0F_E9 */ 0x2445, +/* e1c - _0F_E9 */ 0x2446, +/* e1d - _66_0F_E9 */ 0x2447, /* e1e - */ 0, /* e1f - */ 0, /* e20 - */ 0, @@ -5392,8 +5394,8 @@ _InstNode InstructionsTree[5688] = { /* e25 - */ 0, /* e26 - */ 0, /* e27 - */ 0, -/* e28 - _0F_EA */ 0x2446, -/* e29 - _66_0F_EA */ 0x2447, +/* e28 - _0F_EA */ 0x2448, +/* e29 - _66_0F_EA */ 0x2449, /* e2a - */ 0, /* e2b - */ 0, /* e2c - */ 0, @@ -5404,8 +5406,8 @@ _InstNode InstructionsTree[5688] = { /* e31 - */ 0, /* e32 - */ 0, /* e33 - */ 0, -/* e34 - _0F_EB */ 0x2448, -/* e35 - _66_0F_EB */ 0x2449, +/* e34 - _0F_EB */ 0x244a, +/* e35 - _66_0F_EB */ 0x244b, /* e36 - */ 0, /* e37 - */ 0, /* e38 - */ 0, @@ -5416,8 +5418,8 @@ _InstNode InstructionsTree[5688] = { /* e3d - */ 0, /* e3e - */ 0, /* e3f - */ 0, -/* e40 - _0F_EC */ 0x244a, -/* e41 - _66_0F_EC */ 0x244b, +/* e40 - _0F_EC */ 0x244c, +/* e41 - _66_0F_EC */ 0x244d, /* e42 - */ 0, /* e43 - */ 0, /* e44 - */ 0, @@ -5428,8 +5430,8 @@ _InstNode InstructionsTree[5688] = { /* e49 - */ 0, /* e4a - */ 0, /* e4b - */ 0, -/* e4c - _0F_ED */ 0x244c, -/* e4d - _66_0F_ED */ 0x244d, +/* e4c - _0F_ED */ 0x244e, +/* e4d - _66_0F_ED */ 0x244f, /* e4e - */ 0, /* e4f - */ 0, /* e50 - */ 0, @@ -5440,8 +5442,8 @@ _InstNode InstructionsTree[5688] = { /* e55 - */ 0, /* e56 - */ 0, /* e57 - */ 0, -/* e58 - _0F_EE */ 0x244e, -/* e59 - _66_0F_EE */ 0x244f, +/* e58 - _0F_EE */ 0x2450, +/* e59 - _66_0F_EE */ 0x2451, /* e5a - */ 0, /* e5b - */ 0, /* e5c - */ 0, @@ -5452,8 +5454,8 @@ _InstNode InstructionsTree[5688] = { /* e61 - */ 0, /* e62 - */ 0, /* e63 - */ 0, -/* e64 - _0F_EF */ 0x2450, -/* e65 - _66_0F_EF */ 0x2451, +/* e64 - _0F_EF */ 0x2452, +/* e65 - _66_0F_EF */ 0x2453, /* e66 - */ 0, /* e67 - */ 0, /* e68 - */ 0, @@ -5467,7 +5469,7 @@ _InstNode InstructionsTree[5688] = { /* e70 - */ 0, /* e71 - */ 0, /* e72 - */ 0, -/* e73 - _F2_0F_F0 */ 0x2452, +/* e73 - _F2_0F_F0 */ 0x2454, /* e74 - */ 0, /* e75 - */ 0, /* e76 - */ 0, @@ -5476,8 +5478,8 @@ _InstNode InstructionsTree[5688] = { /* e79 - */ 0, /* e7a - */ 0, /* e7b - */ 0, -/* e7c - _0F_F1 */ 0x2453, -/* e7d - _66_0F_F1 */ 0x2454, +/* e7c - _0F_F1 */ 0x2455, +/* e7d - _66_0F_F1 */ 0x2456, /* e7e - */ 0, /* e7f - */ 0, /* e80 - */ 0, @@ -5488,8 +5490,8 @@ _InstNode InstructionsTree[5688] = { /* e85 - */ 0, /* e86 - */ 0, /* e87 - */ 0, -/* e88 - _0F_F2 */ 0x2455, -/* e89 - _66_0F_F2 */ 0x2456, +/* e88 - _0F_F2 */ 0x2457, +/* e89 - _66_0F_F2 */ 0x2458, /* e8a - */ 0, /* e8b - */ 0, /* e8c - */ 0, @@ -5500,8 +5502,8 @@ _InstNode InstructionsTree[5688] = { /* e91 - */ 0, /* e92 - */ 0, /* e93 - */ 0, -/* e94 - _0F_F3 */ 0x2457, -/* e95 - _66_0F_F3 */ 0x2458, +/* e94 - _0F_F3 */ 0x2459, +/* e95 - _66_0F_F3 */ 0x245a, /* e96 - */ 0, /* e97 - */ 0, /* e98 - */ 0, @@ -5512,8 +5514,8 @@ _InstNode InstructionsTree[5688] = { /* e9d - */ 0, /* e9e - */ 0, /* e9f - */ 0, -/* ea0 - _0F_F4 */ 0x2459, -/* ea1 - _66_0F_F4 */ 0x245a, +/* ea0 - _0F_F4 */ 0x245b, +/* ea1 - _66_0F_F4 */ 0x245c, /* ea2 - */ 0, /* ea3 - */ 0, /* ea4 - */ 0, @@ -5524,8 +5526,8 @@ _InstNode InstructionsTree[5688] = { /* ea9 - */ 0, /* eaa - */ 0, /* eab - */ 0, -/* eac - _0F_F5 */ 0x245b, -/* ead - _66_0F_F5 */ 0x245c, +/* eac - _0F_F5 */ 0x245d, +/* ead - _66_0F_F5 */ 0x245e, /* eae - */ 0, /* eaf - */ 0, /* eb0 - */ 0, @@ -5536,8 +5538,8 @@ _InstNode InstructionsTree[5688] = { /* eb5 - */ 0, /* eb6 - */ 0, /* eb7 - */ 0, -/* eb8 - _0F_F6 */ 0x245d, -/* eb9 - _66_0F_F6 */ 0x245e, +/* eb8 - _0F_F6 */ 0x245f, +/* eb9 - _66_0F_F6 */ 0x2460, /* eba - */ 0, /* ebb - */ 0, /* ebc - */ 0, @@ -5548,8 +5550,8 @@ _InstNode InstructionsTree[5688] = { /* ec1 - */ 0, /* ec2 - */ 0, /* ec3 - */ 0, -/* ec4 - _0F_F7 */ 0x245f, -/* ec5 - _66_0F_F7 */ 0x2460, +/* ec4 - _0F_F7 */ 0x2461, +/* ec5 - _66_0F_F7 */ 0x2462, /* ec6 - */ 0, /* ec7 - */ 0, /* ec8 - */ 0, @@ -5560,8 +5562,8 @@ _InstNode InstructionsTree[5688] = { /* ecd - */ 0, /* ece - */ 0, /* ecf - */ 0, -/* ed0 - _0F_F8 */ 0x2461, -/* ed1 - _66_0F_F8 */ 0x2462, +/* ed0 - _0F_F8 */ 0x2463, +/* ed1 - _66_0F_F8 */ 0x2464, /* ed2 - */ 0, /* ed3 - */ 0, /* ed4 - */ 0, @@ -5572,8 +5574,8 @@ _InstNode InstructionsTree[5688] = { /* ed9 - */ 0, /* eda - */ 0, /* edb - */ 0, -/* edc - _0F_F9 */ 0x2463, -/* edd - _66_0F_F9 */ 0x2464, +/* edc - _0F_F9 */ 0x2465, +/* edd - _66_0F_F9 */ 0x2466, /* ede - */ 0, /* edf - */ 0, /* ee0 - */ 0, @@ -5584,8 +5586,8 @@ _InstNode InstructionsTree[5688] = { /* ee5 - */ 0, /* ee6 - */ 0, /* ee7 - */ 0, -/* ee8 - _0F_FA */ 0x2465, -/* ee9 - _66_0F_FA */ 0x2466, +/* ee8 - _0F_FA */ 0x2467, +/* ee9 - _66_0F_FA */ 0x2468, /* eea - */ 0, /* eeb - */ 0, /* eec - */ 0, @@ -5596,8 +5598,8 @@ _InstNode InstructionsTree[5688] = { /* ef1 - */ 0, /* ef2 - */ 0, /* ef3 - */ 0, -/* ef4 - _0F_FB */ 0x2467, -/* ef5 - _66_0F_FB */ 0x2468, +/* ef4 - _0F_FB */ 0x2469, +/* ef5 - _66_0F_FB */ 0x246a, /* ef6 - */ 0, /* ef7 - */ 0, /* ef8 - */ 0, @@ -5608,8 +5610,8 @@ _InstNode InstructionsTree[5688] = { /* efd - */ 0, /* efe - */ 0, /* eff - */ 0, -/* f00 - _0F_FC */ 0x2469, -/* f01 - _66_0F_FC */ 0x246a, +/* f00 - _0F_FC */ 0x246b, +/* f01 - _66_0F_FC */ 0x246c, /* f02 - */ 0, /* f03 - */ 0, /* f04 - */ 0, @@ -5620,8 +5622,8 @@ _InstNode InstructionsTree[5688] = { /* f09 - */ 0, /* f0a - */ 0, /* f0b - */ 0, -/* f0c - _0F_FD */ 0x246b, -/* f0d - _66_0F_FD */ 0x246c, +/* f0c - _0F_FD */ 0x246d, +/* f0d - _66_0F_FD */ 0x246e, /* f0e - */ 0, /* f0f - */ 0, /* f10 - */ 0, @@ -5632,8 +5634,8 @@ _InstNode InstructionsTree[5688] = { /* f15 - */ 0, /* f16 - */ 0, /* f17 - */ 0, -/* f18 - _0F_FE */ 0x246d, -/* f19 - _66_0F_FE */ 0x246e, +/* f18 - _0F_FE */ 0x246f, +/* f19 - _66_0F_FE */ 0x2470, /* f1a - */ 0, /* f1b - */ 0, /* f1c - */ 0, @@ -5644,8 +5646,8 @@ _InstNode InstructionsTree[5688] = { /* f21 - */ 0, /* f22 - */ 0, /* f23 - */ 0, -/* f24 - _D9_06 */ 0x246f, -/* f25 - _9B_D9_06 */ 0x2470, +/* f24 - _D9_06 */ 0x2471, +/* f25 - _9B_D9_06 */ 0x2472, /* f26 - */ 0, /* f27 - */ 0, /* f28 - */ 0, @@ -5656,8 +5658,8 @@ _InstNode InstructionsTree[5688] = { /* f2d - */ 0, /* f2e - */ 0, /* f2f - */ 0, -/* f30 - _D9_07 */ 0x2471, -/* f31 - _9B_D9_07 */ 0x2472, +/* f30 - _D9_07 */ 0x2473, +/* f31 - _9B_D9_07 */ 0x2474, /* f32 - */ 0, /* f33 - */ 0, /* f34 - */ 0, @@ -5668,8 +5670,8 @@ _InstNode InstructionsTree[5688] = { /* f39 - */ 0, /* f3a - */ 0, /* f3b - */ 0, -/* f3c - _DB_E2 */ 0x2473, -/* f3d - _9B_DB_E2 */ 0x2474, +/* f3c - _DB_E2 */ 0x2475, +/* f3d - _9B_DB_E2 */ 0x2476, /* f3e - */ 0, /* f3f - */ 0, /* f40 - */ 0, @@ -5680,8 +5682,8 @@ _InstNode InstructionsTree[5688] = { /* f45 - */ 0, /* f46 - */ 0, /* f47 - */ 0, -/* f48 - _DB_E3 */ 0x2475, -/* f49 - _9B_DB_E3 */ 0x2476, +/* f48 - _DB_E3 */ 0x2477, +/* f49 - _9B_DB_E3 */ 0x2478, /* f4a - */ 0, /* f4b - */ 0, /* f4c - */ 0, @@ -5692,8 +5694,8 @@ _InstNode InstructionsTree[5688] = { /* f51 - */ 0, /* f52 - */ 0, /* f53 - */ 0, -/* f54 - _DD_06 */ 0x2477, -/* f55 - _9B_DD_06 */ 0x2478, +/* f54 - _DD_06 */ 0x2479, +/* f55 - _9B_DD_06 */ 0x247a, /* f56 - */ 0, /* f57 - */ 0, /* f58 - */ 0, @@ -5704,8 +5706,8 @@ _InstNode InstructionsTree[5688] = { /* f5d - */ 0, /* f5e - */ 0, /* f5f - */ 0, -/* f60 - _DD_07 */ 0x2479, -/* f61 - _9B_DD_07 */ 0x247a, +/* f60 - _DD_07 */ 0x247b, +/* f61 - _9B_DD_07 */ 0x247c, /* f62 - */ 0, /* f63 - */ 0, /* f64 - */ 0, @@ -5716,8 +5718,8 @@ _InstNode InstructionsTree[5688] = { /* f69 - */ 0, /* f6a - */ 0, /* f6b - */ 0, -/* f6c - _DF_E0 */ 0x247b, -/* f6d - _9B_DF_E0 */ 0x247c, +/* f6c - _DF_E0 */ 0x247d, +/* f6d - _9B_DF_E0 */ 0x247e, /* f6e - */ 0, /* f6f - */ 0, /* f70 - */ 0, @@ -5728,8 +5730,8 @@ _InstNode InstructionsTree[5688] = { /* f75 - */ 0, /* f76 - */ 0, /* f77 - */ 0, -/* f78 - _0F_38_00 */ 0x247d, -/* f79 - _66_0F_38_00 */ 0x247e, +/* f78 - _0F_38_00 */ 0x247f, +/* f79 - _66_0F_38_00 */ 0x2480, /* f7a - */ 0, /* f7b - */ 0, /* f7c - */ 0, @@ -5740,8 +5742,8 @@ _InstNode InstructionsTree[5688] = { /* f81 - */ 0, /* f82 - */ 0, /* f83 - */ 0, -/* f84 - _0F_38_01 */ 0x247f, -/* f85 - _66_0F_38_01 */ 0x2480, +/* f84 - _0F_38_01 */ 0x2481, +/* f85 - _66_0F_38_01 */ 0x2482, /* f86 - */ 0, /* f87 - */ 0, /* f88 - */ 0, @@ -5752,8 +5754,8 @@ _InstNode InstructionsTree[5688] = { /* f8d - */ 0, /* f8e - */ 0, /* f8f - */ 0, -/* f90 - _0F_38_02 */ 0x2481, -/* f91 - _66_0F_38_02 */ 0x2482, +/* f90 - _0F_38_02 */ 0x2483, +/* f91 - _66_0F_38_02 */ 0x2484, /* f92 - */ 0, /* f93 - */ 0, /* f94 - */ 0, @@ -5764,8 +5766,8 @@ _InstNode InstructionsTree[5688] = { /* f99 - */ 0, /* f9a - */ 0, /* f9b - */ 0, -/* f9c - _0F_38_03 */ 0x2483, -/* f9d - _66_0F_38_03 */ 0x2484, +/* f9c - _0F_38_03 */ 0x2485, +/* f9d - _66_0F_38_03 */ 0x2486, /* f9e - */ 0, /* f9f - */ 0, /* fa0 - */ 0, @@ -5776,8 +5778,8 @@ _InstNode InstructionsTree[5688] = { /* fa5 - */ 0, /* fa6 - */ 0, /* fa7 - */ 0, -/* fa8 - _0F_38_04 */ 0x2485, -/* fa9 - _66_0F_38_04 */ 0x2486, +/* fa8 - _0F_38_04 */ 0x2487, +/* fa9 - _66_0F_38_04 */ 0x2488, /* faa - */ 0, /* fab - */ 0, /* fac - */ 0, @@ -5788,8 +5790,8 @@ _InstNode InstructionsTree[5688] = { /* fb1 - */ 0, /* fb2 - */ 0, /* fb3 - */ 0, -/* fb4 - _0F_38_05 */ 0x2487, -/* fb5 - _66_0F_38_05 */ 0x2488, +/* fb4 - _0F_38_05 */ 0x2489, +/* fb5 - _66_0F_38_05 */ 0x248a, /* fb6 - */ 0, /* fb7 - */ 0, /* fb8 - */ 0, @@ -5800,8 +5802,8 @@ _InstNode InstructionsTree[5688] = { /* fbd - */ 0, /* fbe - */ 0, /* fbf - */ 0, -/* fc0 - _0F_38_06 */ 0x2489, -/* fc1 - _66_0F_38_06 */ 0x248a, +/* fc0 - _0F_38_06 */ 0x248b, +/* fc1 - _66_0F_38_06 */ 0x248c, /* fc2 - */ 0, /* fc3 - */ 0, /* fc4 - */ 0, @@ -5812,8 +5814,8 @@ _InstNode InstructionsTree[5688] = { /* fc9 - */ 0, /* fca - */ 0, /* fcb - */ 0, -/* fcc - _0F_38_07 */ 0x248b, -/* fcd - _66_0F_38_07 */ 0x248c, +/* fcc - _0F_38_07 */ 0x248d, +/* fcd - _66_0F_38_07 */ 0x248e, /* fce - */ 0, /* fcf - */ 0, /* fd0 - */ 0, @@ -5824,8 +5826,8 @@ _InstNode InstructionsTree[5688] = { /* fd5 - */ 0, /* fd6 - */ 0, /* fd7 - */ 0, -/* fd8 - _0F_38_08 */ 0x248d, -/* fd9 - _66_0F_38_08 */ 0x248e, +/* fd8 - _0F_38_08 */ 0x248f, +/* fd9 - _66_0F_38_08 */ 0x2490, /* fda - */ 0, /* fdb - */ 0, /* fdc - */ 0, @@ -5836,8 +5838,8 @@ _InstNode InstructionsTree[5688] = { /* fe1 - */ 0, /* fe2 - */ 0, /* fe3 - */ 0, -/* fe4 - _0F_38_09 */ 0x248f, -/* fe5 - _66_0F_38_09 */ 0x2490, +/* fe4 - _0F_38_09 */ 0x2491, +/* fe5 - _66_0F_38_09 */ 0x2492, /* fe6 - */ 0, /* fe7 - */ 0, /* fe8 - */ 0, @@ -5848,8 +5850,8 @@ _InstNode InstructionsTree[5688] = { /* fed - */ 0, /* fee - */ 0, /* fef - */ 0, -/* ff0 - _0F_38_0A */ 0x2491, -/* ff1 - _66_0F_38_0A */ 0x2492, +/* ff0 - _0F_38_0A */ 0x2493, +/* ff1 - _66_0F_38_0A */ 0x2494, /* ff2 - */ 0, /* ff3 - */ 0, /* ff4 - */ 0, @@ -5860,8 +5862,8 @@ _InstNode InstructionsTree[5688] = { /* ff9 - */ 0, /* ffa - */ 0, /* ffb - */ 0, -/* ffc - _0F_38_0B */ 0x2493, -/* ffd - _66_0F_38_0B */ 0x2494, +/* ffc - _0F_38_0B */ 0x2495, +/* ffd - _66_0F_38_0B */ 0x2496, /* ffe - */ 0, /* fff - */ 0, /* 1000 - */ 0, @@ -5957,7 +5959,7 @@ _InstNode InstructionsTree[5688] = { /* 105a - */ 0, /* 105b - */ 0, /* 105c - */ 0, -/* 105d - _66_0F_38_17 */ 0x2495, +/* 105d - _66_0F_38_17 */ 0x2497, /* 105e - */ 0, /* 105f - */ 0, /* 1060 - */ 0, @@ -6004,8 +6006,8 @@ _InstNode InstructionsTree[5688] = { /* 1089 - */ 0, /* 108a - */ 0, /* 108b - */ 0, -/* 108c - _0F_38_1C */ 0x2496, -/* 108d - _66_0F_38_1C */ 0x2497, +/* 108c - _0F_38_1C */ 0x2498, +/* 108d - _66_0F_38_1C */ 0x2499, /* 108e - */ 0, /* 108f - */ 0, /* 1090 - */ 0, @@ -6016,8 +6018,8 @@ _InstNode InstructionsTree[5688] = { /* 1095 - */ 0, /* 1096 - */ 0, /* 1097 - */ 0, -/* 1098 - _0F_38_1D */ 0x2498, -/* 1099 - _66_0F_38_1D */ 0x2499, +/* 1098 - _0F_38_1D */ 0x249a, +/* 1099 - _66_0F_38_1D */ 0x249b, /* 109a - */ 0, /* 109b - */ 0, /* 109c - */ 0, @@ -6028,8 +6030,8 @@ _InstNode InstructionsTree[5688] = { /* 10a1 - */ 0, /* 10a2 - */ 0, /* 10a3 - */ 0, -/* 10a4 - _0F_38_1E */ 0x249a, -/* 10a5 - _66_0F_38_1E */ 0x249b, +/* 10a4 - _0F_38_1E */ 0x249c, +/* 10a5 - _66_0F_38_1E */ 0x249d, /* 10a6 - */ 0, /* 10a7 - */ 0, /* 10a8 - */ 0, @@ -6041,7 +6043,7 @@ _InstNode InstructionsTree[5688] = { /* 10ae - */ 0, /* 10af - */ 0, /* 10b0 - */ 0, -/* 10b1 - _66_0F_38_20 */ 0x249c, +/* 10b1 - _66_0F_38_20 */ 0x249e, /* 10b2 - */ 0, /* 10b3 - */ 0, /* 10b4 - */ 0, @@ -6053,7 +6055,7 @@ _InstNode InstructionsTree[5688] = { /* 10ba - */ 0, /* 10bb - */ 0, /* 10bc - */ 0, -/* 10bd - _66_0F_38_21 */ 0x249d, +/* 10bd - _66_0F_38_21 */ 0x249f, /* 10be - */ 0, /* 10bf - */ 0, /* 10c0 - */ 0, @@ -6065,7 +6067,7 @@ _InstNode InstructionsTree[5688] = { /* 10c6 - */ 0, /* 10c7 - */ 0, /* 10c8 - */ 0, -/* 10c9 - _66_0F_38_22 */ 0x249e, +/* 10c9 - _66_0F_38_22 */ 0x24a0, /* 10ca - */ 0, /* 10cb - */ 0, /* 10cc - */ 0, @@ -6077,7 +6079,7 @@ _InstNode InstructionsTree[5688] = { /* 10d2 - */ 0, /* 10d3 - */ 0, /* 10d4 - */ 0, -/* 10d5 - _66_0F_38_23 */ 0x249f, +/* 10d5 - _66_0F_38_23 */ 0x24a1, /* 10d6 - */ 0, /* 10d7 - */ 0, /* 10d8 - */ 0, @@ -6089,7 +6091,7 @@ _InstNode InstructionsTree[5688] = { /* 10de - */ 0, /* 10df - */ 0, /* 10e0 - */ 0, -/* 10e1 - _66_0F_38_24 */ 0x24a0, +/* 10e1 - _66_0F_38_24 */ 0x24a2, /* 10e2 - */ 0, /* 10e3 - */ 0, /* 10e4 - */ 0, @@ -6101,7 +6103,7 @@ _InstNode InstructionsTree[5688] = { /* 10ea - */ 0, /* 10eb - */ 0, /* 10ec - */ 0, -/* 10ed - _66_0F_38_25 */ 0x24a1, +/* 10ed - _66_0F_38_25 */ 0x24a3, /* 10ee - */ 0, /* 10ef - */ 0, /* 10f0 - */ 0, @@ -6113,7 +6115,7 @@ _InstNode InstructionsTree[5688] = { /* 10f6 - */ 0, /* 10f7 - */ 0, /* 10f8 - */ 0, -/* 10f9 - _66_0F_38_28 */ 0x24a2, +/* 10f9 - _66_0F_38_28 */ 0x24a4, /* 10fa - */ 0, /* 10fb - */ 0, /* 10fc - */ 0, @@ -6125,7 +6127,7 @@ _InstNode InstructionsTree[5688] = { /* 1102 - */ 0, /* 1103 - */ 0, /* 1104 - */ 0, -/* 1105 - _66_0F_38_29 */ 0x24a3, +/* 1105 - _66_0F_38_29 */ 0x24a5, /* 1106 - */ 0, /* 1107 - */ 0, /* 1108 - */ 0, @@ -6137,7 +6139,7 @@ _InstNode InstructionsTree[5688] = { /* 110e - */ 0, /* 110f - */ 0, /* 1110 - */ 0, -/* 1111 - _66_0F_38_2A */ 0x24a4, +/* 1111 - _66_0F_38_2A */ 0x24a6, /* 1112 - */ 0, /* 1113 - */ 0, /* 1114 - */ 0, @@ -6149,7 +6151,7 @@ _InstNode InstructionsTree[5688] = { /* 111a - */ 0, /* 111b - */ 0, /* 111c - */ 0, -/* 111d - _66_0F_38_2B */ 0x24a5, +/* 111d - _66_0F_38_2B */ 0x24a7, /* 111e - */ 0, /* 111f - */ 0, /* 1120 - */ 0, @@ -6209,7 +6211,7 @@ _InstNode InstructionsTree[5688] = { /* 1156 - */ 0, /* 1157 - */ 0, /* 1158 - */ 0, -/* 1159 - _66_0F_38_30 */ 0x24a6, +/* 1159 - _66_0F_38_30 */ 0x24a8, /* 115a - */ 0, /* 115b - */ 0, /* 115c - */ 0, @@ -6221,7 +6223,7 @@ _InstNode InstructionsTree[5688] = { /* 1162 - */ 0, /* 1163 - */ 0, /* 1164 - */ 0, -/* 1165 - _66_0F_38_31 */ 0x24a7, +/* 1165 - _66_0F_38_31 */ 0x24a9, /* 1166 - */ 0, /* 1167 - */ 0, /* 1168 - */ 0, @@ -6233,7 +6235,7 @@ _InstNode InstructionsTree[5688] = { /* 116e - */ 0, /* 116f - */ 0, /* 1170 - */ 0, -/* 1171 - _66_0F_38_32 */ 0x24a8, +/* 1171 - _66_0F_38_32 */ 0x24aa, /* 1172 - */ 0, /* 1173 - */ 0, /* 1174 - */ 0, @@ -6245,7 +6247,7 @@ _InstNode InstructionsTree[5688] = { /* 117a - */ 0, /* 117b - */ 0, /* 117c - */ 0, -/* 117d - _66_0F_38_33 */ 0x24a9, +/* 117d - _66_0F_38_33 */ 0x24ab, /* 117e - */ 0, /* 117f - */ 0, /* 1180 - */ 0, @@ -6257,7 +6259,7 @@ _InstNode InstructionsTree[5688] = { /* 1186 - */ 0, /* 1187 - */ 0, /* 1188 - */ 0, -/* 1189 - _66_0F_38_34 */ 0x24aa, +/* 1189 - _66_0F_38_34 */ 0x24ac, /* 118a - */ 0, /* 118b - */ 0, /* 118c - */ 0, @@ -6269,7 +6271,7 @@ _InstNode InstructionsTree[5688] = { /* 1192 - */ 0, /* 1193 - */ 0, /* 1194 - */ 0, -/* 1195 - _66_0F_38_35 */ 0x24ab, +/* 1195 - _66_0F_38_35 */ 0x24ad, /* 1196 - */ 0, /* 1197 - */ 0, /* 1198 - */ 0, @@ -6281,7 +6283,7 @@ _InstNode InstructionsTree[5688] = { /* 119e - */ 0, /* 119f - */ 0, /* 11a0 - */ 0, -/* 11a1 - _66_0F_38_37 */ 0x24ac, +/* 11a1 - _66_0F_38_37 */ 0x24ae, /* 11a2 - */ 0, /* 11a3 - */ 0, /* 11a4 - */ 0, @@ -6293,7 +6295,7 @@ _InstNode InstructionsTree[5688] = { /* 11aa - */ 0, /* 11ab - */ 0, /* 11ac - */ 0, -/* 11ad - _66_0F_38_38 */ 0x24ad, +/* 11ad - _66_0F_38_38 */ 0x24af, /* 11ae - */ 0, /* 11af - */ 0, /* 11b0 - */ 0, @@ -6305,7 +6307,7 @@ _InstNode InstructionsTree[5688] = { /* 11b6 - */ 0, /* 11b7 - */ 0, /* 11b8 - */ 0, -/* 11b9 - _66_0F_38_39 */ 0x24ae, +/* 11b9 - _66_0F_38_39 */ 0x24b0, /* 11ba - */ 0, /* 11bb - */ 0, /* 11bc - */ 0, @@ -6317,7 +6319,7 @@ _InstNode InstructionsTree[5688] = { /* 11c2 - */ 0, /* 11c3 - */ 0, /* 11c4 - */ 0, -/* 11c5 - _66_0F_38_3A */ 0x24af, +/* 11c5 - _66_0F_38_3A */ 0x24b1, /* 11c6 - */ 0, /* 11c7 - */ 0, /* 11c8 - */ 0, @@ -6329,7 +6331,7 @@ _InstNode InstructionsTree[5688] = { /* 11ce - */ 0, /* 11cf - */ 0, /* 11d0 - */ 0, -/* 11d1 - _66_0F_38_3B */ 0x24b0, +/* 11d1 - _66_0F_38_3B */ 0x24b2, /* 11d2 - */ 0, /* 11d3 - */ 0, /* 11d4 - */ 0, @@ -6341,7 +6343,7 @@ _InstNode InstructionsTree[5688] = { /* 11da - */ 0, /* 11db - */ 0, /* 11dc - */ 0, -/* 11dd - _66_0F_38_3C */ 0x24b1, +/* 11dd - _66_0F_38_3C */ 0x24b3, /* 11de - */ 0, /* 11df - */ 0, /* 11e0 - */ 0, @@ -6353,7 +6355,7 @@ _InstNode InstructionsTree[5688] = { /* 11e6 - */ 0, /* 11e7 - */ 0, /* 11e8 - */ 0, -/* 11e9 - _66_0F_38_3D */ 0x24b2, +/* 11e9 - _66_0F_38_3D */ 0x24b4, /* 11ea - */ 0, /* 11eb - */ 0, /* 11ec - */ 0, @@ -6365,7 +6367,7 @@ _InstNode InstructionsTree[5688] = { /* 11f2 - */ 0, /* 11f3 - */ 0, /* 11f4 - */ 0, -/* 11f5 - _66_0F_38_3E */ 0x24b3, +/* 11f5 - _66_0F_38_3E */ 0x24b5, /* 11f6 - */ 0, /* 11f7 - */ 0, /* 11f8 - */ 0, @@ -6377,7 +6379,7 @@ _InstNode InstructionsTree[5688] = { /* 11fe - */ 0, /* 11ff - */ 0, /* 1200 - */ 0, -/* 1201 - _66_0F_38_3F */ 0x24b4, +/* 1201 - _66_0F_38_3F */ 0x24b6, /* 1202 - */ 0, /* 1203 - */ 0, /* 1204 - */ 0, @@ -6389,7 +6391,7 @@ _InstNode InstructionsTree[5688] = { /* 120a - */ 0, /* 120b - */ 0, /* 120c - */ 0, -/* 120d - _66_0F_38_40 */ 0x24b5, +/* 120d - _66_0F_38_40 */ 0x24b7, /* 120e - */ 0, /* 120f - */ 0, /* 1210 - */ 0, @@ -6401,7 +6403,7 @@ _InstNode InstructionsTree[5688] = { /* 1216 - */ 0, /* 1217 - */ 0, /* 1218 - */ 0, -/* 1219 - _66_0F_38_41 */ 0x24b6, +/* 1219 - _66_0F_38_41 */ 0x24b8, /* 121a - */ 0, /* 121b - */ 0, /* 121c - */ 0, @@ -6413,7 +6415,7 @@ _InstNode InstructionsTree[5688] = { /* 1222 - */ 0, /* 1223 - */ 0, /* 1224 - */ 0, -/* 1225 - _66_0F_38_80 */ 0x24b7, +/* 1225 - _66_0F_38_80 */ 0x24b9, /* 1226 - */ 0, /* 1227 - */ 0, /* 1228 - */ 0, @@ -6425,7 +6427,7 @@ _InstNode InstructionsTree[5688] = { /* 122e - */ 0, /* 122f - */ 0, /* 1230 - */ 0, -/* 1231 - _66_0F_38_81 */ 0x24b8, +/* 1231 - _66_0F_38_81 */ 0x24ba, /* 1232 - */ 0, /* 1233 - */ 0, /* 1234 - */ 0, @@ -6437,7 +6439,7 @@ _InstNode InstructionsTree[5688] = { /* 123a - */ 0, /* 123b - */ 0, /* 123c - */ 0, -/* 123d - _66_0F_38_82 */ 0x24b9, +/* 123d - _66_0F_38_82 */ 0x24bb, /* 123e - */ 0, /* 123f - */ 0, /* 1240 - */ 0, @@ -6809,7 +6811,7 @@ _InstNode InstructionsTree[5688] = { /* 13ae - */ 0, /* 13af - */ 0, /* 13b0 - */ 0, -/* 13b1 - _66_0F_38_DB */ 0x24ba, +/* 13b1 - _66_0F_38_DB */ 0x24bc, /* 13b2 - */ 0, /* 13b3 - */ 0, /* 13b4 - */ 0, @@ -6821,7 +6823,7 @@ _InstNode InstructionsTree[5688] = { /* 13ba - */ 0, /* 13bb - */ 0, /* 13bc - */ 0, -/* 13bd - _66_0F_38_DC */ 0x24bb, +/* 13bd - _66_0F_38_DC */ 0x24bd, /* 13be - */ 0, /* 13bf - */ 0, /* 13c0 - */ 0, @@ -6833,7 +6835,7 @@ _InstNode InstructionsTree[5688] = { /* 13c6 - */ 0, /* 13c7 - */ 0, /* 13c8 - */ 0, -/* 13c9 - _66_0F_38_DD */ 0x24bc, +/* 13c9 - _66_0F_38_DD */ 0x24be, /* 13ca - */ 0, /* 13cb - */ 0, /* 13cc - */ 0, @@ -6845,7 +6847,7 @@ _InstNode InstructionsTree[5688] = { /* 13d2 - */ 0, /* 13d3 - */ 0, /* 13d4 - */ 0, -/* 13d5 - _66_0F_38_DE */ 0x24bd, +/* 13d5 - _66_0F_38_DE */ 0x24bf, /* 13d6 - */ 0, /* 13d7 - */ 0, /* 13d8 - */ 0, @@ -6857,7 +6859,7 @@ _InstNode InstructionsTree[5688] = { /* 13de - */ 0, /* 13df - */ 0, /* 13e0 - */ 0, -/* 13e1 - _66_0F_38_DF */ 0x24be, +/* 13e1 - _66_0F_38_DF */ 0x24c0, /* 13e2 - */ 0, /* 13e3 - */ 0, /* 13e4 - */ 0, @@ -6868,10 +6870,10 @@ _InstNode InstructionsTree[5688] = { /* 13e9 - */ 0, /* 13ea - */ 0, /* 13eb - */ 0, -/* 13ec - _0F_38_F0 */ 0x24bf, +/* 13ec - _0F_38_F0 */ 0x24c1, /* 13ed - */ 0, /* 13ee - */ 0, -/* 13ef - _F2_0F_38_F0 */ 0x24c0, +/* 13ef - _F2_0F_38_F0 */ 0x24c2, /* 13f0 - */ 0, /* 13f1 - */ 0, /* 13f2 - */ 0, @@ -6880,10 +6882,10 @@ _InstNode InstructionsTree[5688] = { /* 13f5 - */ 0, /* 13f6 - */ 0, /* 13f7 - */ 0, -/* 13f8 - _0F_38_F1 */ 0x24c1, +/* 13f8 - _0F_38_F1 */ 0x24c3, /* 13f9 - */ 0, /* 13fa - */ 0, -/* 13fb - _F2_0F_38_F1 */ 0x24c2, +/* 13fb - _F2_0F_38_F1 */ 0x24c4, /* 13fc - */ 0, /* 13fd - */ 0, /* 13fe - */ 0, @@ -7276,8 +7278,8 @@ _InstNode InstructionsTree[5688] = { /* 1581 - */ 0, /* 1582 - */ 0, /* 1583 - */ 0, -/* 1584 - _0F_71_02 */ 0x24c3, -/* 1585 - _66_0F_71_02 */ 0x24c4, +/* 1584 - _0F_71_02 */ 0x24c5, +/* 1585 - _66_0F_71_02 */ 0x24c6, /* 1586 - */ 0, /* 1587 - */ 0, /* 1588 - */ 0, @@ -7288,8 +7290,8 @@ _InstNode InstructionsTree[5688] = { /* 158d - */ 0, /* 158e - */ 0, /* 158f - */ 0, -/* 1590 - _0F_71_04 */ 0x24c5, -/* 1591 - _66_0F_71_04 */ 0x24c6, +/* 1590 - _0F_71_04 */ 0x24c7, +/* 1591 - _66_0F_71_04 */ 0x24c8, /* 1592 - */ 0, /* 1593 - */ 0, /* 1594 - */ 0, @@ -7300,8 +7302,8 @@ _InstNode InstructionsTree[5688] = { /* 1599 - */ 0, /* 159a - */ 0, /* 159b - */ 0, -/* 159c - _0F_71_06 */ 0x24c7, -/* 159d - _66_0F_71_06 */ 0x24c8, +/* 159c - _0F_71_06 */ 0x24c9, +/* 159d - _66_0F_71_06 */ 0x24ca, /* 159e - */ 0, /* 159f - */ 0, /* 15a0 - */ 0, @@ -7312,8 +7314,8 @@ _InstNode InstructionsTree[5688] = { /* 15a5 - */ 0, /* 15a6 - */ 0, /* 15a7 - */ 0, -/* 15a8 - _0F_72_02 */ 0x24c9, -/* 15a9 - _66_0F_72_02 */ 0x24ca, +/* 15a8 - _0F_72_02 */ 0x24cb, +/* 15a9 - _66_0F_72_02 */ 0x24cc, /* 15aa - */ 0, /* 15ab - */ 0, /* 15ac - */ 0, @@ -7324,8 +7326,8 @@ _InstNode InstructionsTree[5688] = { /* 15b1 - */ 0, /* 15b2 - */ 0, /* 15b3 - */ 0, -/* 15b4 - _0F_72_04 */ 0x24cb, -/* 15b5 - _66_0F_72_04 */ 0x24cc, +/* 15b4 - _0F_72_04 */ 0x24cd, +/* 15b5 - _66_0F_72_04 */ 0x24ce, /* 15b6 - */ 0, /* 15b7 - */ 0, /* 15b8 - */ 0, @@ -7336,8 +7338,8 @@ _InstNode InstructionsTree[5688] = { /* 15bd - */ 0, /* 15be - */ 0, /* 15bf - */ 0, -/* 15c0 - _0F_72_06 */ 0x24cd, -/* 15c1 - _66_0F_72_06 */ 0x24ce, +/* 15c0 - _0F_72_06 */ 0x24cf, +/* 15c1 - _66_0F_72_06 */ 0x24d0, /* 15c2 - */ 0, /* 15c3 - */ 0, /* 15c4 - */ 0, @@ -7348,8 +7350,8 @@ _InstNode InstructionsTree[5688] = { /* 15c9 - */ 0, /* 15ca - */ 0, /* 15cb - */ 0, -/* 15cc - _0F_73_02 */ 0x24cf, -/* 15cd - _66_0F_73_02 */ 0x24d0, +/* 15cc - _0F_73_02 */ 0x24d1, +/* 15cd - _66_0F_73_02 */ 0x24d2, /* 15ce - */ 0, /* 15cf - */ 0, /* 15d0 - */ 0, @@ -7361,7 +7363,7 @@ _InstNode InstructionsTree[5688] = { /* 15d6 - */ 0, /* 15d7 - */ 0, /* 15d8 - */ 0, -/* 15d9 - _66_0F_73_03 */ 0x24d1, +/* 15d9 - _66_0F_73_03 */ 0x24d3, /* 15da - */ 0, /* 15db - */ 0, /* 15dc - */ 0, @@ -7372,8 +7374,8 @@ _InstNode InstructionsTree[5688] = { /* 15e1 - */ 0, /* 15e2 - */ 0, /* 15e3 - */ 0, -/* 15e4 - _0F_73_06 */ 0x24d2, -/* 15e5 - _66_0F_73_06 */ 0x24d3, +/* 15e4 - _0F_73_06 */ 0x24d4, +/* 15e5 - _66_0F_73_06 */ 0x24d5, /* 15e6 - */ 0, /* 15e7 - */ 0, /* 15e8 - */ 0, @@ -7385,7 +7387,7 @@ _InstNode InstructionsTree[5688] = { /* 15ee - */ 0, /* 15ef - */ 0, /* 15f0 - */ 0, -/* 15f1 - _66_0F_73_07 */ 0x24d4, +/* 15f1 - _66_0F_73_07 */ 0x24d6, /* 15f2 - */ 0, /* 15f3 - */ 0, /* 15f4 - */ 0, @@ -7398,7 +7400,7 @@ _InstNode InstructionsTree[5688] = { /* 15fb - */ 0, /* 15fc - _0F_AE_00 */ 0x4179, /* 15fd - */ 0, -/* 15fe - _F3_0F_AE_00 */ 0x24d5, +/* 15fe - _F3_0F_AE_00 */ 0x24d7, /* 15ff - */ 0, /* 1600 - */ 0, /* 1601 - */ 0, @@ -7410,7 +7412,7 @@ _InstNode InstructionsTree[5688] = { /* 1607 - */ 0, /* 1608 - _0F_AE_01 */ 0x417a, /* 1609 - */ 0, -/* 160a - _F3_0F_AE_01 */ 0x24d6, +/* 160a - _F3_0F_AE_01 */ 0x24d8, /* 160b - */ 0, /* 160c - */ 0, /* 160d - */ 0, @@ -7420,9 +7422,9 @@ _InstNode InstructionsTree[5688] = { /* 1611 - */ 0, /* 1612 - */ 0, /* 1613 - */ 0, -/* 1614 - _0F_AE_02 */ 0x24d7, +/* 1614 - _0F_AE_02 */ 0x24d9, /* 1615 - */ 0, -/* 1616 - _F3_0F_AE_02 */ 0x24d8, +/* 1616 - _F3_0F_AE_02 */ 0x24da, /* 1617 - */ 0, /* 1618 - _V_0F_AE_02 */ 0x417b, /* 1619 - */ 0, @@ -7432,9 +7434,9 @@ _InstNode InstructionsTree[5688] = { /* 161d - */ 0, /* 161e - */ 0, /* 161f - */ 0, -/* 1620 - _0F_AE_03 */ 0x24d9, +/* 1620 - _0F_AE_03 */ 0x24db, /* 1621 - */ 0, -/* 1622 - _F3_0F_AE_03 */ 0x24da, +/* 1622 - _F3_0F_AE_03 */ 0x24dc, /* 1623 - */ 0, /* 1624 - _V_0F_AE_03 */ 0x417c, /* 1625 - */ 0, @@ -7444,9 +7446,9 @@ _InstNode InstructionsTree[5688] = { /* 1629 - */ 0, /* 162a - */ 0, /* 162b - */ 0, -/* 162c - _0F_C7_06 */ 0x24db, -/* 162d - _66_0F_C7_06 */ 0x24dc, -/* 162e - _F3_0F_C7_06 */ 0x24dd, +/* 162c - _0F_C7_06 */ 0x24dd, +/* 162d - _66_0F_C7_06 */ 0x24de, +/* 162e - _F3_0F_C7_06 */ 0x24df, /* 162f - */ 0, /* 1630 - */ 0, /* 1631 - */ 0, @@ -7458,478 +7460,481 @@ _InstNode InstructionsTree[5688] = { /* 1637 - */ 0 }; -_InstSharedInfo InstSharedInfoTable[471] = { -{0, 9, 15, 8, 245, 0, 0}, -{0, 11, 17, 8, 245, 0, 0}, -{0, 15, 9, 8, 245, 0, 0}, -{0, 17, 11, 8, 245, 0, 0}, -{1, 1, 33, 8, 245, 0, 0}, -{1, 3, 35, 8, 245, 0, 0}, -{2, 0, 32, 8, 0, 0, 0}, -{3, 0, 32, 8, 0, 0, 0}, -{0, 9, 15, 8, 196, 16, 0}, -{0, 11, 17, 8, 196, 16, 0}, -{0, 15, 9, 8, 196, 16, 0}, -{0, 17, 11, 8, 196, 16, 0}, -{1, 1, 33, 8, 196, 16, 0}, -{1, 3, 35, 8, 196, 16, 0}, -{4, 0, 32, 8, 0, 0, 0}, -{0, 9, 15, 8, 245, 1, 0}, -{0, 11, 17, 8, 245, 1, 0}, -{0, 15, 9, 8, 245, 1, 0}, -{0, 17, 11, 8, 245, 1, 0}, -{1, 1, 33, 8, 245, 1, 0}, -{1, 3, 35, 8, 245, 1, 0}, -{5, 0, 32, 8, 0, 0, 0}, -{6, 0, 32, 8, 0, 0, 0}, -{7, 0, 32, 8, 0, 0, 0}, -{8, 0, 32, 8, 0, 0, 0}, -{0, 9, 15, 8, 229, 0, 16}, -{0, 11, 17, 8, 229, 0, 16}, -{0, 15, 9, 8, 229, 0, 16}, -{0, 17, 11, 8, 229, 0, 16}, -{1, 1, 33, 8, 229, 0, 16}, -{1, 3, 35, 8, 229, 0, 16}, -{9, 0, 0, 8, 213, 17, 32}, -{0, 9, 15, 8, 196, 0, 16}, -{0, 11, 17, 8, 196, 0, 16}, -{0, 15, 9, 8, 196, 0, 16}, -{0, 17, 11, 8, 196, 0, 16}, -{1, 1, 33, 8, 196, 0, 16}, -{1, 3, 35, 8, 196, 0, 16}, -{9, 0, 0, 8, 17, 16, 228}, -{10, 9, 15, 8, 245, 0, 0}, -{10, 11, 17, 8, 245, 0, 0}, -{10, 15, 9, 8, 245, 0, 0}, -{10, 17, 11, 8, 245, 0, 0}, -{11, 1, 33, 8, 245, 0, 0}, -{11, 3, 35, 8, 245, 0, 0}, -{12, 0, 54, 8, 244, 0, 0}, -{13, 0, 54, 8, 0, 0, 0}, -{14, 0, 54, 8, 0, 0, 0}, -{15, 0, 0, 8, 0, 0, 0}, -{16, 42, 11, 8, 0, 0, 0}, -{10, 10, 16, 8, 64, 0, 0}, -{13, 0, 3, 8, 0, 0, 0}, -{17, 17, 11, 8, 33, 0, 212}, -{18, 0, 5, 8, 0, 0, 0}, -{19, 59, 56, 8, 0, 8, 0}, -{20, 59, 56, 8, 0, 8, 0}, -{19, 55, 59, 8, 0, 8, 0}, -{20, 55, 59, 8, 0, 8, 0}, -{13, 0, 40, 13, 0, 32, 0}, -{13, 0, 40, 13, 0, 1, 0}, -{13, 0, 40, 13, 0, 64, 0}, -{13, 0, 40, 13, 0, 65, 0}, -{13, 0, 40, 13, 0, 128, 0}, -{13, 0, 40, 13, 0, 4, 0}, -{13, 0, 40, 13, 0, 160, 0}, -{13, 0, 40, 13, 0, 224, 0}, -{10, 9, 15, 8, 196, 0, 16}, -{10, 11, 17, 8, 196, 0, 16}, -{0, 9, 15, 8, 0, 0, 0}, -{0, 11, 17, 8, 0, 0, 0}, -{21, 9, 15, 8, 0, 0, 0}, -{21, 11, 17, 8, 0, 0, 0}, -{21, 15, 9, 8, 0, 0, 0}, -{21, 17, 11, 8, 0, 0, 0}, -{21, 31, 28, 8, 0, 0, 0}, -{21, 42, 11, 8, 0, 0, 0}, -{21, 28, 31, 8, 0, 0, 0}, -{1, 35, 54, 8, 0, 0, 0}, -{22, 0, 0, 8, 0, 0, 0}, -{9, 0, 38, 9, 0, 0, 0}, -{23, 0, 0, 8, 0, 0, 0}, -{23, 0, 0, 8, 255, 0, 0}, -{11, 0, 0, 8, 213, 0, 0}, -{11, 0, 0, 8, 0, 0, 0}, -{1, 49, 33, 8, 0, 0, 0}, -{1, 50, 35, 8, 0, 0, 0}, -{1, 33, 49, 8, 0, 0, 0}, -{1, 35, 50, 8, 0, 0, 0}, -{24, 55, 56, 8, 0, 8, 0}, -{25, 55, 56, 8, 0, 8, 0}, -{19, 56, 55, 8, 245, 8, 0}, -{26, 56, 55, 8, 245, 8, 0}, -{11, 1, 33, 8, 196, 0, 16}, -{11, 3, 35, 8, 196, 0, 16}, -{19, 33, 56, 8, 0, 8, 0}, -{26, 35, 56, 8, 0, 8, 0}, -{19, 55, 33, 8, 0, 8, 0}, -{26, 55, 35, 8, 0, 8, 0}, -{19, 33, 56, 8, 245, 8, 0}, -{26, 35, 56, 8, 245, 8, 0}, -{1, 1, 53, 8, 0, 0, 0}, -{27, 3, 54, 8, 0, 0, 0}, -{13, 0, 2, 10, 0, 0, 0}, -{13, 0, 0, 10, 0, 0, 0}, -{16, 37, 11, 8, 0, 0, 0}, -{13, 8, 6, 8, 0, 0, 0}, -{13, 0, 0, 8, 0, 0, 0}, -{28, 0, 2, 10, 0, 0, 0}, -{28, 0, 0, 10, 0, 0, 0}, -{11, 0, 0, 14, 0, 0, 0}, -{11, 0, 1, 14, 0, 0, 0}, -{9, 0, 0, 14, 0, 0, 0}, -{28, 0, 0, 10, 255, 0, 0}, -{9, 0, 1, 8, 196, 0, 49}, -{9, 0, 0, 8, 0, 0, 0}, -{29, 0, 57, 8, 0, 0, 0}, -{30, 0, 40, 13, 0, 64, 0}, -{30, 0, 40, 13, 0, 0, 0}, -{31, 0, 40, 13, 0, 0, 0}, -{1, 1, 33, 8, 0, 0, 0}, -{1, 1, 36, 8, 0, 0, 0}, -{11, 33, 1, 8, 0, 0, 0}, -{11, 36, 1, 8, 0, 0, 0}, -{13, 0, 41, 9, 0, 0, 0}, -{13, 0, 41, 12, 0, 0, 0}, -{9, 0, 38, 12, 0, 0, 0}, -{13, 0, 40, 12, 0, 0, 0}, -{1, 59, 33, 8, 0, 0, 0}, -{1, 59, 36, 8, 0, 0, 0}, -{11, 33, 59, 8, 0, 0, 0}, -{11, 36, 59, 8, 0, 0, 0}, -{11, 0, 0, 8, 1, 0, 0}, -{11, 0, 0, 8, 2, 0, 0}, -{11, 0, 0, 8, 8, 0, 0}, -{10, 16, 11, 8, 64, 0, 0}, -{32, 0, 0, 27, 0, 0, 0}, -{32, 0, 0, 8, 0, 0, 0}, -{32, 0, 0, 14, 0, 0, 0}, -{11, 0, 0, 96, 0, 0, 0}, -{10, 0, 17, 8, 0, 0, 0}, -{33, 29, 14, 8, 0, 0, 0}, -{33, 30, 14, 8, 0, 0, 0}, -{33, 14, 29, 8, 0, 0, 0}, -{33, 14, 30, 8, 0, 0, 0}, -{34, 0, 0, 8, 0, 0, 0}, -{35, 17, 11, 31, 0, 32, 0}, -{35, 17, 11, 31, 0, 1, 0}, -{35, 17, 11, 31, 0, 64, 0}, -{35, 17, 11, 31, 0, 65, 0}, -{35, 17, 11, 31, 0, 128, 0}, -{35, 17, 11, 31, 0, 4, 0}, -{35, 17, 11, 31, 0, 160, 0}, -{35, 17, 11, 31, 0, 224, 0}, -{32, 0, 41, 13, 0, 32, 0}, -{32, 0, 41, 13, 0, 1, 0}, -{32, 0, 41, 13, 0, 64, 0}, -{32, 0, 41, 13, 0, 65, 0}, -{32, 0, 41, 13, 0, 128, 0}, -{32, 0, 41, 13, 0, 4, 0}, -{32, 0, 41, 13, 0, 160, 0}, -{32, 0, 41, 13, 0, 224, 0}, -{35, 0, 15, 8, 0, 32, 0}, -{35, 0, 15, 8, 0, 1, 0}, -{35, 0, 15, 8, 0, 64, 0}, -{35, 0, 15, 8, 0, 65, 0}, -{35, 0, 15, 8, 0, 128, 0}, -{35, 0, 15, 8, 0, 4, 0}, -{35, 0, 15, 8, 0, 160, 0}, -{35, 0, 15, 8, 0, 224, 0}, -{36, 0, 32, 8, 0, 0, 0}, -{37, 0, 32, 8, 0, 0, 0}, -{35, 11, 17, 8, 1, 0, 244}, -{38, 11, 17, 8, 197, 0, 48}, -{39, 0, 32, 8, 0, 0, 0}, -{40, 0, 32, 8, 0, 0, 0}, -{32, 0, 0, 8, 255, 0, 0}, -{41, 11, 17, 8, 1, 0, 244}, -{35, 17, 11, 8, 33, 0, 212}, -{41, 9, 15, 8, 245, 0, 0}, -{41, 11, 17, 8, 245, 0, 0}, -{42, 37, 11, 8, 0, 0, 0}, -{35, 15, 11, 8, 0, 0, 0}, -{43, 16, 11, 8, 0, 0, 0}, -{43, 13, 45, 48, 0, 0, 0}, -{44, 0, 54, 8, 0, 0, 0}, -{45, 1, 15, 8, 245, 0, 0}, -{45, 1, 15, 8, 196, 16, 0}, -{45, 1, 15, 8, 245, 1, 0}, -{45, 1, 15, 8, 229, 0, 16}, -{45, 1, 15, 8, 196, 0, 16}, -{46, 1, 15, 8, 245, 0, 0}, -{45, 3, 17, 8, 245, 0, 0}, -{45, 3, 17, 8, 196, 16, 0}, -{45, 3, 17, 8, 245, 1, 0}, -{45, 3, 17, 8, 229, 0, 16}, -{45, 3, 17, 8, 196, 0, 16}, -{46, 3, 17, 8, 245, 0, 0}, -{47, 1, 15, 8, 245, 0, 0}, -{47, 1, 15, 8, 196, 16, 0}, -{47, 1, 15, 8, 245, 1, 0}, -{47, 1, 15, 8, 229, 0, 16}, -{47, 1, 15, 8, 196, 0, 16}, -{48, 1, 15, 8, 245, 0, 0}, -{45, 5, 17, 8, 245, 0, 0}, -{49, 5, 17, 8, 196, 16, 0}, -{45, 5, 17, 8, 245, 1, 0}, -{49, 5, 17, 8, 229, 0, 16}, -{49, 5, 17, 8, 196, 0, 16}, -{46, 5, 17, 8, 245, 0, 0}, -{50, 0, 17, 8, 0, 0, 0}, -{51, 1, 15, 8, 1, 0, 32}, -{51, 1, 15, 8, 1, 1, 32}, -{51, 1, 15, 8, 197, 0, 48}, -{51, 1, 17, 8, 1, 0, 32}, -{51, 1, 17, 8, 1, 1, 32}, -{51, 1, 17, 8, 197, 0, 48}, -{52, 1, 15, 8, 0, 0, 0}, -{53, 0, 1, 24, 0, 0, 0}, -{52, 3, 17, 8, 0, 0, 0}, -{53, 0, 41, 24, 0, 0, 0}, -{51, 51, 15, 8, 33, 0, 0}, -{51, 51, 15, 8, 33, 1, 0}, -{51, 51, 15, 8, 229, 0, 16}, -{51, 51, 17, 8, 33, 0, 0}, -{51, 51, 17, 8, 33, 1, 0}, -{51, 51, 17, 8, 229, 0, 16}, -{51, 52, 15, 8, 1, 0, 32}, -{51, 52, 15, 8, 1, 1, 32}, -{51, 52, 15, 8, 197, 0, 48}, -{51, 52, 17, 8, 1, 0, 32}, -{51, 52, 17, 8, 1, 1, 32}, -{51, 52, 17, 8, 197, 0, 48}, -{46, 0, 21, 16, 0, 0, 0}, -{54, 0, 62, 16, 0, 0, 0}, -{54, 0, 61, 16, 0, 0, 0}, -{54, 0, 0, 16, 0, 0, 0}, -{51, 0, 21, 16, 0, 0, 0}, -{46, 0, 42, 16, 0, 0, 0}, -{46, 0, 20, 16, 0, 0, 0}, -{55, 0, 62, 24, 0, 1, 0}, -{55, 0, 62, 24, 0, 64, 0}, -{55, 0, 62, 24, 0, 65, 0}, -{55, 0, 62, 24, 0, 4, 0}, -{56, 0, 21, 56, 0, 0, 0}, -{46, 0, 23, 16, 0, 0, 0}, -{51, 0, 23, 16, 0, 0, 0}, -{55, 0, 62, 16, 69, 0, 0}, -{55, 0, 62, 24, 69, 0, 0}, -{46, 0, 22, 16, 0, 0, 0}, -{54, 0, 63, 16, 0, 0, 0}, -{56, 0, 22, 56, 0, 0, 0}, -{51, 0, 22, 16, 0, 0, 0}, -{56, 0, 20, 56, 0, 0, 0}, -{51, 0, 20, 16, 0, 0, 0}, -{46, 1, 15, 8, 196, 0, 16}, -{45, 0, 15, 8, 0, 0, 0}, -{45, 0, 15, 8, 245, 0, 0}, -{51, 0, 15, 8, 33, 0, 212}, -{51, 0, 15, 8, 0, 0, 245}, -{46, 3, 17, 8, 196, 0, 16}, -{45, 0, 17, 8, 0, 0, 0}, -{45, 0, 17, 8, 245, 0, 0}, -{51, 0, 17, 8, 33, 0, 212}, -{51, 0, 17, 8, 0, 0, 245}, -{45, 0, 15, 8, 244, 0, 0}, -{45, 0, 17, 8, 244, 0, 0}, -{57, 0, 17, 9, 0, 0, 0}, -{58, 0, 37, 9, 0, 0, 0}, -{57, 0, 17, 12, 0, 0, 0}, -{58, 0, 37, 12, 0, 0, 0}, -{57, 0, 17, 8, 0, 0, 0}, -{46, 0, 17, 8, 0, 0, 0}, -{46, 0, 16, 8, 0, 0, 0}, -{56, 0, 16, 8, 0, 0, 0}, -{46, 0, 16, 8, 64, 0, 0}, -{57, 0, 39, 8, 0, 0, 0}, -{52, 0, 28, 8, 0, 0, 0}, -{59, 0, 16, 8, 0, 0, 0}, -{56, 0, 42, 8, 0, 0, 0}, -{55, 0, 0, 112, 0, 0, 0}, -{55, 0, 0, 8, 0, 0, 0}, -{13, 0, 0, 24, 0, 0, 0}, -{56, 0, 58, 120, 0, 0, 0}, -{55, 0, 0, 120, 0, 0, 0}, -{55, 0, 58, 120, 0, 0, 0}, -{55, 60, 58, 120, 0, 0, 0}, -{60, 0, 0, 8, 0, 0, 0}, -{56, 0, 42, 96, 0, 0, 0}, -{61, 67, 64, 104, 0, 0, 0}, -{61, 67, 64, 96, 0, 0, 0}, -{35, 73, 68, 40, 0, 0, 0}, -{35, 73, 68, 48, 0, 0, 0}, -{35, 71, 68, 40, 0, 0, 0}, -{35, 72, 68, 48, 0, 0, 0}, -{62, 90, 83, 128, 0, 0, 0}, -{63, 81, 68, 128, 0, 0, 0}, -{64, 44, 68, 128, 0, 0, 0}, -{64, 46, 68, 128, 0, 0, 0}, -{35, 68, 73, 40, 0, 0, 0}, -{35, 68, 73, 48, 0, 0, 0}, -{35, 68, 71, 40, 0, 0, 0}, -{35, 68, 72, 48, 0, 0, 0}, -{62, 83, 90, 128, 0, 0, 0}, -{64, 68, 44, 128, 0, 0, 0}, -{64, 68, 46, 128, 0, 0, 0}, -{65, 72, 68, 40, 0, 0, 0}, -{35, 46, 68, 48, 0, 0, 0}, -{35, 72, 68, 56, 0, 0, 0}, -{66, 81, 68, 128, 0, 0, 0}, -{67, 81, 68, 128, 0, 0, 0}, -{62, 89, 83, 128, 0, 0, 0}, -{35, 68, 46, 40, 0, 0, 0}, -{35, 68, 46, 48, 0, 0, 0}, -{62, 68, 46, 128, 0, 0, 0}, -{34, 73, 68, 40, 0, 0, 0}, -{34, 73, 68, 48, 0, 0, 0}, -{67, 88, 83, 128, 0, 0, 0}, -{35, 73, 68, 56, 0, 0, 0}, -{56, 0, 42, 40, 0, 0, 0}, -{34, 67, 68, 40, 0, 0, 0}, -{34, 67, 68, 48, 0, 0, 0}, -{42, 18, 68, 40, 0, 0, 0}, -{42, 18, 68, 48, 0, 0, 0}, -{35, 68, 47, 40, 0, 0, 0}, -{35, 68, 47, 48, 0, 0, 0}, -{35, 68, 44, 88, 0, 0, 0}, -{35, 68, 46, 88, 0, 0, 0}, -{62, 83, 92, 128, 0, 0, 0}, -{34, 72, 64, 40, 0, 0, 0}, -{34, 73, 64, 48, 0, 0, 0}, -{42, 71, 13, 40, 0, 0, 0}, -{42, 72, 13, 48, 0, 0, 0}, -{62, 80, 78, 128, 0, 0, 0}, -{34, 71, 68, 40, 69, 0, 0}, -{34, 72, 68, 48, 0, 0, 0}, -{62, 71, 68, 128, 0, 0, 0}, -{62, 72, 68, 128, 0, 0, 0}, -{68, 69, 12, 40, 0, 0, 0}, -{68, 69, 12, 48, 0, 0, 0}, -{69, 83, 13, 128, 0, 0, 0}, -{34, 71, 68, 40, 0, 0, 0}, -{34, 71, 68, 48, 0, 0, 0}, -{62, 91, 83, 128, 0, 0, 0}, -{62, 90, 68, 128, 0, 0, 0}, -{34, 66, 64, 32, 0, 0, 0}, -{34, 67, 64, 32, 0, 0, 0}, -{70, 18, 64, 32, 0, 0, 0}, -{70, 18, 68, 48, 0, 0, 0}, -{62, 79, 68, 128, 0, 0, 0}, -{35, 67, 64, 32, 0, 0, 0}, -{71, 67, 64, 40, 0, 0, 0}, -{71, 73, 68, 48, 0, 0, 0}, -{67, 73, 68, 128, 0, 0, 0}, -{32, 0, 0, 32, 0, 0, 0}, -{72, 0, 0, 128, 0, 0, 0}, -{73, 13, 18, 112, 0, 0, 0}, -{74, 7, 69, 88, 0, 0, 0}, -{75, 69, 68, 88, 0, 0, 0}, -{73, 18, 13, 112, 0, 0, 0}, -{34, 69, 68, 88, 0, 0, 0}, -{76, 69, 68, 88, 0, 0, 0}, -{32, 72, 68, 112, 0, 0, 0}, -{32, 68, 72, 112, 0, 0, 0}, -{34, 73, 68, 56, 0, 0, 0}, -{70, 64, 18, 32, 0, 0, 0}, -{70, 68, 18, 48, 0, 0, 0}, -{62, 68, 79, 128, 0, 0, 0}, -{35, 64, 67, 32, 0, 0, 0}, -{77, 0, 42, 8, 0, 0, 0}, -{78, 0, 43, 8, 0, 0, 0}, -{79, 0, 43, 8, 0, 0, 0}, -{80, 17, 11, 80, 64, 0, 0}, -{81, 1, 17, 8, 1, 0, 244}, -{49, 1, 17, 8, 1, 0, 244}, -{34, 17, 11, 8, 64, 0, 245}, -{82, 17, 11, 112, 0, 0, 0}, -{83, 17, 11, 8, 65, 0, 180}, -{84, 73, 68, 40, 0, 0, 0}, -{84, 73, 68, 48, 0, 0, 0}, -{84, 71, 68, 40, 0, 0, 0}, -{84, 72, 68, 48, 0, 0, 0}, -{85, 88, 83, 128, 0, 0, 0}, -{85, 81, 68, 128, 0, 0, 0}, -{71, 25, 64, 40, 0, 0, 0}, -{71, 25, 68, 48, 0, 0, 0}, -{86, 81, 68, 128, 0, 0, 0}, -{87, 65, 12, 40, 0, 0, 0}, -{71, 69, 12, 48, 0, 0, 0}, -{88, 68, 13, 128, 0, 0, 0}, -{71, 73, 68, 40, 0, 0, 0}, -{86, 88, 83, 128, 0, 0, 0}, -{89, 0, 48, 8, 64, 0, 0}, -{56, 0, 46, 112, 0, 0, 0}, -{68, 65, 68, 48, 0, 0, 0}, -{68, 69, 64, 48, 0, 0, 0}, -{62, 68, 72, 128, 0, 0, 0}, -{76, 65, 12, 40, 0, 0, 0}, -{76, 69, 12, 48, 0, 0, 0}, -{69, 68, 13, 128, 0, 0, 0}, -{34, 67, 64, 40, 0, 0, 0}, -{35, 64, 46, 40, 0, 0, 0}, -{34, 42, 68, 56, 0, 0, 0}, -{62, 92, 83, 128, 0, 0, 0}, -{34, 67, 64, 48, 0, 0, 0}, -{76, 65, 64, 40, 0, 0, 0}, -{76, 69, 68, 48, 0, 0, 0}, -{90, 69, 68, 128, 0, 0, 0}, -{51, 0, 42, 16, 0, 0, 0}, -{91, 0, 42, 16, 0, 0, 0}, -{91, 0, 20, 16, 0, 0, 0}, -{92, 0, 0, 16, 0, 0, 0}, -{93, 0, 34, 16, 0, 0, 0}, -{94, 0, 34, 16, 0, 0, 0}, -{34, 67, 64, 64, 0, 0, 0}, -{34, 73, 68, 64, 0, 0, 0}, -{71, 73, 68, 72, 0, 0, 0}, -{34, 73, 68, 80, 0, 0, 0}, -{62, 44, 83, 128, 0, 0, 0}, -{62, 46, 85, 128, 0, 0, 0}, -{62, 47, 85, 128, 0, 0, 0}, -{62, 73, 68, 128, 0, 0, 0}, -{34, 72, 68, 72, 0, 0, 0}, -{34, 71, 68, 72, 0, 0, 0}, -{34, 70, 68, 72, 0, 0, 0}, -{62, 70, 68, 128, 0, 0, 0}, -{34, 73, 68, 72, 0, 0, 0}, -{35, 47, 68, 72, 0, 0, 0}, -{62, 47, 68, 128, 0, 0, 0}, -{67, 88, 92, 128, 0, 0, 0}, -{73, 47, 13, 112, 0, 0, 0}, -{67, 88, 83, 136, 0, 0, 0}, -{67, 81, 68, 136, 0, 0, 0}, -{34, 73, 68, 152, 0, 0, 0}, -{62, 73, 68, 152, 0, 0, 0}, -{67, 81, 68, 152, 0, 0, 0}, -{35, 17, 11, 8, 0, 0, 0}, -{35, 15, 13, 80, 0, 0, 0}, -{35, 11, 17, 8, 0, 0, 0}, -{35, 17, 13, 80, 0, 0, 0}, -{67, 90, 83, 128, 0, 0, 0}, -{86, 87, 85, 128, 0, 0, 0}, -{71, 71, 68, 72, 0, 0, 0}, -{71, 72, 68, 72, 0, 0, 0}, -{71, 67, 64, 64, 0, 0, 0}, -{71, 73, 68, 64, 0, 0, 0}, -{71, 68, 26, 72, 0, 0, 0}, -{88, 68, 76, 128, 0, 0, 0}, -{71, 68, 27, 72, 0, 0, 0}, -{88, 68, 77, 128, 0, 0, 0}, -{95, 68, 18, 72, 0, 0, 0}, -{67, 68, 79, 128, 0, 0, 0}, -{71, 68, 18, 72, 0, 0, 0}, -{67, 68, 75, 128, 0, 0, 0}, -{67, 85, 73, 128, 0, 0, 0}, -{71, 24, 68, 72, 0, 0, 0}, -{95, 18, 68, 72, 0, 0, 0}, -{71, 73, 68, 144, 0, 0, 0}, -{86, 81, 68, 144, 0, 0, 0}, -{71, 73, 68, 80, 0, 0, 0}, -{71, 73, 68, 152, 0, 0, 0}, -{67, 73, 68, 152, 0, 0, 0}, -{96, 1, 65, 32, 0, 0, 0}, -{56, 1, 69, 48, 0, 0, 0}, -{97, 69, 81, 128, 0, 0, 0}, -{98, 0, 13, 112, 0, 0, 0}, -{56, 0, 44, 8, 0, 0, 0}, -{64, 0, 44, 128, 0, 0, 0}, -{56, 0, 42, 112, 0, 0, 0}, -{99, 75, 13, 8, 0, 0, 0}, -{98, 0, 17, 8, 0, 0, 0}, -{100, 67, 64, 96, 0, 0, 0} +_InstSharedInfo InstSharedInfoTable[474] = { +{0, 6, 68, 245, 0, 0, 256}, +{0, 8, 72, 245, 0, 0, 256}, +{0, 68, 6, 245, 0, 0, 256}, +{0, 72, 8, 245, 0, 0, 256}, +{1, 1, 11, 245, 0, 0, 256}, +{1, 3, 13, 245, 0, 0, 256}, +{2, 0, 46, 0, 0, 0, 256}, +{3, 0, 46, 0, 0, 0, 256}, +{0, 6, 68, 196, 16, 0, 256}, +{0, 8, 72, 196, 16, 0, 256}, +{0, 68, 6, 196, 16, 0, 256}, +{0, 72, 8, 196, 16, 0, 256}, +{1, 1, 11, 196, 16, 0, 256}, +{1, 3, 13, 196, 16, 0, 256}, +{4, 0, 46, 0, 0, 0, 256}, +{0, 6, 68, 245, 1, 0, 256}, +{0, 8, 72, 245, 1, 0, 256}, +{0, 68, 6, 245, 1, 0, 256}, +{0, 72, 8, 245, 1, 0, 256}, +{1, 1, 11, 245, 1, 0, 256}, +{1, 3, 13, 245, 1, 0, 256}, +{5, 0, 46, 0, 0, 0, 256}, +{6, 0, 46, 0, 0, 0, 256}, +{7, 0, 46, 0, 0, 0, 256}, +{8, 0, 46, 0, 0, 0, 256}, +{0, 6, 68, 229, 0, 16, 256}, +{0, 8, 72, 229, 0, 16, 256}, +{0, 68, 6, 229, 0, 16, 256}, +{0, 72, 8, 229, 0, 16, 256}, +{1, 1, 11, 229, 0, 16, 256}, +{1, 3, 13, 229, 0, 16, 256}, +{9, 0, 0, 213, 17, 32, 256}, +{0, 6, 68, 196, 0, 16, 256}, +{0, 8, 72, 196, 0, 16, 256}, +{0, 68, 6, 196, 0, 16, 256}, +{0, 72, 8, 196, 0, 16, 256}, +{1, 1, 11, 196, 0, 16, 256}, +{1, 3, 13, 196, 0, 16, 256}, +{9, 0, 0, 17, 16, 228, 256}, +{10, 6, 68, 245, 0, 0, 256}, +{10, 8, 72, 245, 0, 0, 256}, +{10, 68, 6, 245, 0, 0, 256}, +{10, 72, 8, 245, 0, 0, 256}, +{11, 1, 11, 245, 0, 0, 256}, +{11, 3, 13, 245, 0, 0, 256}, +{12, 0, 18, 244, 0, 0, 256}, +{13, 0, 18, 0, 0, 0, 256}, +{14, 0, 18, 0, 0, 0, 256}, +{15, 0, 0, 0, 0, 0, 256}, +{16, 54, 8, 0, 0, 0, 256}, +{10, 7, 69, 64, 0, 0, 256}, +{13, 0, 3, 0, 0, 0, 256}, +{17, 72, 8, 33, 0, 212, 256}, +{18, 0, 5, 0, 0, 0, 256}, +{19, 25, 22, 0, 8, 0, 33024}, +{20, 25, 22, 0, 8, 0, 33024}, +{19, 21, 25, 0, 8, 0, 33024}, +{20, 21, 25, 0, 8, 0, 33024}, +{13, 0, 15, 0, 32, 0, 261}, +{13, 0, 15, 0, 1, 0, 261}, +{13, 0, 15, 0, 64, 0, 261}, +{13, 0, 15, 0, 65, 0, 261}, +{13, 0, 15, 0, 128, 0, 261}, +{13, 0, 15, 0, 4, 0, 261}, +{13, 0, 15, 0, 160, 0, 261}, +{13, 0, 15, 0, 224, 0, 261}, +{10, 6, 68, 196, 0, 16, 256}, +{10, 8, 72, 196, 0, 16, 256}, +{0, 6, 68, 0, 0, 0, 256}, +{0, 8, 72, 0, 0, 0, 256}, +{21, 6, 68, 0, 0, 0, 256}, +{21, 8, 72, 0, 0, 0, 256}, +{21, 68, 6, 0, 0, 0, 256}, +{21, 72, 8, 0, 0, 0, 256}, +{21, 45, 71, 0, 0, 0, 256}, +{21, 54, 8, 0, 0, 0, 256}, +{21, 71, 45, 0, 0, 0, 256}, +{1, 13, 18, 0, 0, 0, 256}, +{22, 0, 0, 0, 0, 0, 256}, +{9, 0, 50, 0, 0, 0, 257}, +{23, 0, 0, 0, 0, 0, 256}, +{23, 0, 0, 255, 0, 0, 256}, +{11, 0, 0, 213, 0, 0, 256}, +{11, 0, 0, 0, 0, 0, 256}, +{1, 19, 11, 0, 0, 0, 256}, +{1, 20, 13, 0, 0, 0, 256}, +{1, 11, 19, 0, 0, 0, 256}, +{1, 13, 20, 0, 0, 0, 256}, +{24, 21, 22, 0, 8, 0, 256}, +{25, 21, 22, 0, 8, 0, 256}, +{19, 22, 21, 245, 8, 0, 256}, +{26, 22, 21, 245, 8, 0, 256}, +{11, 1, 11, 196, 0, 16, 256}, +{11, 3, 13, 196, 0, 16, 256}, +{19, 11, 22, 0, 8, 0, 256}, +{26, 13, 22, 0, 8, 0, 256}, +{19, 21, 11, 0, 8, 0, 256}, +{26, 21, 13, 0, 8, 0, 256}, +{19, 11, 22, 245, 8, 0, 256}, +{26, 13, 22, 245, 8, 0, 256}, +{1, 1, 17, 0, 0, 0, 256}, +{27, 3, 18, 0, 0, 0, 256}, +{13, 0, 2, 0, 0, 0, 258}, +{13, 0, 0, 0, 0, 0, 258}, +{16, 60, 8, 0, 0, 0, 256}, +{13, 49, 47, 0, 0, 0, 256}, +{13, 0, 0, 0, 0, 0, 256}, +{28, 0, 2, 0, 0, 0, 258}, +{28, 0, 0, 0, 0, 0, 258}, +{11, 0, 0, 0, 0, 0, 262}, +{11, 0, 1, 0, 0, 0, 262}, +{9, 0, 0, 0, 0, 0, 262}, +{28, 0, 0, 255, 0, 0, 33026}, +{9, 0, 1, 196, 0, 49, 256}, +{9, 0, 0, 0, 0, 0, 256}, +{29, 0, 23, 0, 0, 0, 256}, +{30, 0, 15, 0, 64, 0, 261}, +{30, 0, 15, 0, 0, 0, 261}, +{31, 0, 15, 0, 0, 0, 261}, +{1, 1, 11, 0, 0, 0, 33024}, +{1, 1, 14, 0, 0, 0, 33024}, +{11, 11, 1, 0, 0, 0, 33024}, +{11, 14, 1, 0, 0, 0, 33024}, +{13, 0, 16, 0, 0, 0, 257}, +{13, 0, 16, 0, 0, 0, 260}, +{9, 0, 50, 0, 0, 0, 260}, +{13, 0, 15, 0, 0, 0, 260}, +{1, 25, 11, 0, 0, 0, 33024}, +{1, 25, 14, 0, 0, 0, 33024}, +{11, 11, 25, 0, 0, 0, 33024}, +{11, 14, 25, 0, 0, 0, 33024}, +{11, 0, 0, 0, 0, 0, 33032}, +{11, 0, 0, 1, 0, 0, 256}, +{11, 0, 0, 2, 0, 0, 33024}, +{11, 0, 0, 8, 0, 0, 256}, +{10, 69, 8, 64, 0, 0, 256}, +{32, 0, 0, 0, 0, 0, 771}, +{32, 0, 0, 0, 0, 0, 33024}, +{32, 0, 0, 0, 0, 0, 262}, +{11, 0, 0, 0, 0, 0, 3072}, +{10, 0, 72, 0, 0, 0, 256}, +{33, 43, 51, 0, 0, 0, 33024}, +{33, 44, 51, 0, 0, 0, 33024}, +{33, 51, 43, 0, 0, 0, 33024}, +{33, 51, 44, 0, 0, 0, 33024}, +{32, 0, 0, 0, 0, 0, 256}, +{34, 72, 8, 0, 32, 0, 775}, +{34, 72, 8, 0, 1, 0, 775}, +{34, 72, 8, 0, 64, 0, 775}, +{34, 72, 8, 0, 65, 0, 775}, +{34, 72, 8, 0, 128, 0, 775}, +{34, 72, 8, 0, 4, 0, 775}, +{34, 72, 8, 0, 160, 0, 775}, +{34, 72, 8, 0, 224, 0, 775}, +{32, 0, 16, 0, 32, 0, 261}, +{32, 0, 16, 0, 1, 0, 261}, +{32, 0, 16, 0, 64, 0, 261}, +{32, 0, 16, 0, 65, 0, 261}, +{32, 0, 16, 0, 128, 0, 261}, +{32, 0, 16, 0, 4, 0, 261}, +{32, 0, 16, 0, 160, 0, 261}, +{32, 0, 16, 0, 224, 0, 261}, +{34, 0, 68, 0, 32, 0, 256}, +{34, 0, 68, 0, 1, 0, 256}, +{34, 0, 68, 0, 64, 0, 256}, +{34, 0, 68, 0, 65, 0, 256}, +{34, 0, 68, 0, 128, 0, 256}, +{34, 0, 68, 0, 4, 0, 256}, +{34, 0, 68, 0, 160, 0, 256}, +{34, 0, 68, 0, 224, 0, 256}, +{35, 0, 46, 0, 0, 0, 256}, +{36, 0, 46, 0, 0, 0, 256}, +{34, 8, 72, 1, 0, 244, 256}, +{37, 8, 72, 197, 0, 48, 256}, +{38, 0, 46, 0, 0, 0, 256}, +{39, 0, 46, 0, 0, 0, 256}, +{32, 0, 0, 255, 0, 0, 256}, +{40, 8, 72, 1, 0, 244, 256}, +{34, 72, 8, 33, 0, 212, 256}, +{40, 6, 68, 245, 0, 0, 256}, +{40, 8, 72, 245, 0, 0, 256}, +{41, 60, 8, 0, 0, 0, 256}, +{34, 68, 8, 0, 0, 0, 256}, +{42, 69, 8, 0, 0, 0, 256}, +{42, 10, 56, 0, 0, 0, 1536}, +{43, 0, 18, 0, 0, 0, 256}, +{44, 1, 68, 245, 0, 0, 256}, +{44, 1, 68, 196, 16, 0, 256}, +{44, 1, 68, 245, 1, 0, 256}, +{44, 1, 68, 229, 0, 16, 256}, +{44, 1, 68, 196, 0, 16, 256}, +{45, 1, 68, 245, 0, 0, 256}, +{44, 3, 72, 245, 0, 0, 256}, +{44, 3, 72, 196, 16, 0, 256}, +{44, 3, 72, 245, 1, 0, 256}, +{44, 3, 72, 229, 0, 16, 256}, +{44, 3, 72, 196, 0, 16, 256}, +{45, 3, 72, 245, 0, 0, 256}, +{46, 1, 68, 245, 0, 0, 256}, +{46, 1, 68, 196, 16, 0, 256}, +{46, 1, 68, 245, 1, 0, 256}, +{46, 1, 68, 229, 0, 16, 256}, +{46, 1, 68, 196, 0, 16, 256}, +{47, 1, 68, 245, 0, 0, 256}, +{44, 5, 72, 245, 0, 0, 256}, +{48, 5, 72, 196, 16, 0, 256}, +{44, 5, 72, 245, 1, 0, 256}, +{48, 5, 72, 229, 0, 16, 256}, +{48, 5, 72, 196, 0, 16, 256}, +{45, 5, 72, 245, 0, 0, 256}, +{49, 0, 72, 0, 0, 0, 256}, +{50, 1, 68, 1, 0, 32, 256}, +{50, 1, 68, 1, 1, 32, 256}, +{50, 1, 68, 197, 0, 48, 256}, +{50, 1, 72, 1, 0, 32, 256}, +{50, 1, 72, 1, 1, 32, 256}, +{50, 1, 72, 197, 0, 48, 256}, +{51, 1, 68, 0, 0, 0, 256}, +{52, 0, 1, 0, 0, 0, 768}, +{51, 3, 72, 0, 0, 0, 256}, +{52, 0, 16, 0, 0, 0, 768}, +{50, 41, 68, 33, 0, 0, 256}, +{50, 41, 68, 33, 1, 0, 256}, +{50, 41, 68, 229, 0, 16, 256}, +{50, 41, 72, 33, 0, 0, 256}, +{50, 41, 72, 33, 1, 0, 256}, +{50, 41, 72, 229, 0, 16, 256}, +{50, 42, 68, 1, 0, 32, 256}, +{50, 42, 68, 1, 1, 32, 256}, +{50, 42, 68, 197, 0, 48, 256}, +{50, 42, 72, 1, 0, 32, 256}, +{50, 42, 72, 1, 1, 32, 256}, +{50, 42, 72, 197, 0, 48, 256}, +{45, 0, 64, 0, 0, 0, 512}, +{53, 0, 28, 0, 0, 0, 512}, +{53, 0, 27, 0, 0, 0, 512}, +{53, 0, 0, 0, 0, 0, 512}, +{50, 0, 64, 0, 0, 0, 512}, +{45, 0, 54, 0, 0, 0, 512}, +{45, 0, 63, 0, 0, 0, 512}, +{54, 0, 28, 0, 1, 0, 768}, +{54, 0, 28, 0, 64, 0, 768}, +{54, 0, 28, 0, 65, 0, 768}, +{54, 0, 28, 0, 4, 0, 768}, +{55, 0, 64, 0, 0, 0, 1792}, +{45, 0, 66, 0, 0, 0, 512}, +{50, 0, 66, 0, 0, 0, 512}, +{54, 0, 28, 69, 0, 0, 512}, +{54, 0, 28, 69, 0, 0, 768}, +{45, 0, 65, 0, 0, 0, 512}, +{53, 0, 29, 0, 0, 0, 512}, +{55, 0, 65, 0, 0, 0, 1792}, +{50, 0, 65, 0, 0, 0, 512}, +{55, 0, 63, 0, 0, 0, 1792}, +{50, 0, 63, 0, 0, 0, 512}, +{45, 1, 68, 196, 0, 16, 256}, +{44, 0, 68, 0, 0, 0, 256}, +{44, 0, 68, 245, 0, 0, 256}, +{50, 0, 68, 33, 0, 212, 256}, +{50, 0, 68, 0, 0, 245, 256}, +{45, 3, 72, 196, 0, 16, 256}, +{44, 0, 72, 0, 0, 0, 256}, +{44, 0, 72, 245, 0, 0, 256}, +{50, 0, 72, 33, 0, 212, 256}, +{50, 0, 72, 0, 0, 245, 256}, +{44, 0, 68, 244, 0, 0, 256}, +{44, 0, 72, 244, 0, 0, 256}, +{56, 0, 72, 0, 0, 0, 257}, +{57, 0, 60, 0, 0, 0, 257}, +{56, 0, 72, 0, 0, 0, 260}, +{57, 0, 60, 0, 0, 0, 260}, +{56, 0, 72, 0, 0, 0, 256}, +{45, 0, 72, 0, 0, 0, 256}, +{45, 0, 69, 0, 0, 0, 256}, +{45, 0, 69, 0, 0, 0, 33024}, +{55, 0, 69, 0, 0, 0, 33024}, +{45, 0, 69, 64, 0, 0, 256}, +{56, 0, 61, 0, 0, 0, 256}, +{56, 0, 61, 0, 0, 0, 33024}, +{51, 0, 71, 0, 0, 0, 256}, +{58, 0, 69, 0, 0, 0, 33024}, +{55, 0, 54, 0, 0, 0, 33024}, +{54, 0, 0, 0, 0, 0, 3584}, +{54, 0, 0, 0, 0, 0, 256}, +{13, 0, 0, 0, 0, 0, 768}, +{55, 0, 24, 0, 0, 0, 3840}, +{54, 0, 0, 0, 0, 0, 3840}, +{54, 0, 24, 0, 0, 0, 3840}, +{54, 26, 24, 0, 0, 0, 3840}, +{59, 0, 0, 0, 0, 0, 256}, +{55, 0, 54, 0, 0, 0, 3072}, +{60, 83, 52, 0, 0, 0, 3328}, +{60, 83, 52, 0, 0, 0, 3072}, +{34, 87, 30, 0, 0, 0, 1280}, +{34, 87, 30, 0, 0, 0, 1536}, +{34, 85, 30, 0, 0, 0, 1280}, +{34, 86, 30, 0, 0, 0, 1536}, +{61, 91, 36, 0, 0, 0, 4096}, +{62, 34, 30, 0, 0, 0, 4096}, +{63, 55, 30, 0, 0, 0, 4096}, +{63, 57, 30, 0, 0, 0, 4096}, +{34, 30, 87, 0, 0, 0, 1280}, +{34, 30, 87, 0, 0, 0, 1536}, +{34, 30, 85, 0, 0, 0, 1280}, +{34, 30, 86, 0, 0, 0, 1536}, +{61, 36, 91, 0, 0, 0, 4096}, +{63, 30, 55, 0, 0, 0, 4096}, +{63, 30, 57, 0, 0, 0, 4096}, +{64, 86, 30, 0, 0, 0, 1280}, +{34, 57, 30, 0, 0, 0, 1536}, +{34, 86, 30, 0, 0, 0, 1792}, +{65, 34, 30, 0, 0, 0, 4096}, +{66, 34, 30, 0, 0, 0, 4096}, +{61, 90, 36, 0, 0, 0, 4096}, +{34, 30, 57, 0, 0, 0, 1280}, +{34, 30, 57, 0, 0, 0, 1536}, +{61, 30, 57, 0, 0, 0, 4096}, +{67, 87, 30, 0, 0, 0, 1280}, +{67, 87, 30, 0, 0, 0, 1536}, +{66, 40, 36, 0, 0, 0, 4096}, +{34, 87, 30, 0, 0, 0, 1792}, +{55, 0, 54, 0, 0, 0, 1280}, +{67, 83, 30, 0, 0, 0, 1280}, +{67, 83, 30, 0, 0, 0, 1536}, +{41, 76, 30, 0, 0, 0, 1280}, +{41, 76, 30, 0, 0, 0, 1536}, +{34, 30, 59, 0, 0, 0, 1280}, +{34, 30, 59, 0, 0, 0, 1536}, +{34, 30, 55, 0, 0, 0, 2816}, +{34, 30, 57, 0, 0, 0, 2816}, +{61, 36, 67, 0, 0, 0, 4096}, +{67, 86, 52, 0, 0, 0, 1280}, +{67, 87, 52, 0, 0, 0, 1536}, +{41, 85, 10, 0, 0, 0, 1280}, +{41, 86, 10, 0, 0, 0, 1536}, +{61, 88, 33, 0, 0, 0, 4096}, +{67, 85, 30, 69, 0, 0, 1280}, +{67, 86, 30, 0, 0, 0, 1536}, +{61, 85, 30, 0, 0, 0, 4096}, +{61, 86, 30, 0, 0, 0, 4096}, +{68, 31, 9, 0, 0, 0, 1280}, +{68, 31, 9, 0, 0, 0, 1536}, +{69, 36, 10, 0, 0, 0, 4096}, +{67, 85, 30, 0, 0, 0, 1280}, +{67, 85, 30, 0, 0, 0, 1536}, +{61, 92, 36, 0, 0, 0, 4096}, +{61, 91, 30, 0, 0, 0, 4096}, +{67, 82, 52, 0, 0, 0, 1024}, +{67, 83, 52, 0, 0, 0, 1024}, +{70, 76, 52, 0, 0, 0, 1024}, +{70, 76, 30, 0, 0, 0, 1536}, +{61, 73, 30, 0, 0, 0, 4096}, +{34, 83, 52, 0, 0, 0, 1024}, +{71, 83, 52, 0, 0, 0, 1280}, +{71, 87, 30, 0, 0, 0, 1536}, +{66, 87, 30, 0, 0, 0, 4096}, +{32, 0, 0, 0, 0, 0, 1024}, +{72, 0, 0, 0, 0, 0, 4096}, +{73, 10, 76, 0, 0, 0, 3584}, +{74, 48, 31, 0, 0, 0, 2816}, +{75, 31, 30, 0, 0, 0, 2816}, +{73, 76, 10, 0, 0, 0, 3584}, +{67, 31, 30, 0, 0, 0, 2816}, +{76, 31, 30, 0, 0, 0, 2816}, +{32, 86, 30, 0, 0, 0, 3584}, +{32, 30, 86, 0, 0, 0, 3584}, +{67, 87, 30, 0, 0, 0, 1792}, +{70, 52, 76, 0, 0, 0, 1024}, +{70, 30, 76, 0, 0, 0, 1536}, +{61, 30, 73, 0, 0, 0, 4096}, +{34, 52, 83, 0, 0, 0, 1024}, +{77, 0, 54, 0, 0, 0, 256}, +{78, 0, 62, 0, 0, 0, 256}, +{79, 0, 62, 0, 0, 0, 256}, +{80, 72, 8, 64, 0, 0, 2560}, +{81, 1, 72, 1, 0, 244, 256}, +{48, 1, 72, 1, 0, 244, 256}, +{67, 72, 8, 64, 0, 245, 256}, +{82, 72, 8, 0, 0, 0, 3584}, +{83, 72, 8, 65, 0, 180, 256}, +{84, 87, 30, 0, 0, 0, 1280}, +{84, 87, 30, 0, 0, 0, 1536}, +{84, 85, 30, 0, 0, 0, 1280}, +{84, 86, 30, 0, 0, 0, 1536}, +{85, 40, 36, 0, 0, 0, 4096}, +{85, 34, 30, 0, 0, 0, 4096}, +{71, 79, 52, 0, 0, 0, 1280}, +{71, 79, 30, 0, 0, 0, 1536}, +{86, 34, 30, 0, 0, 0, 4096}, +{87, 53, 9, 0, 0, 0, 1280}, +{71, 31, 9, 0, 0, 0, 1536}, +{88, 30, 10, 0, 0, 0, 4096}, +{71, 87, 30, 0, 0, 0, 1280}, +{86, 40, 36, 0, 0, 0, 4096}, +{89, 0, 58, 64, 0, 0, 256}, +{55, 0, 57, 0, 0, 0, 3584}, +{68, 53, 30, 0, 0, 0, 1536}, +{68, 31, 52, 0, 0, 0, 1536}, +{61, 30, 86, 0, 0, 0, 4096}, +{76, 53, 9, 0, 0, 0, 1280}, +{76, 31, 9, 0, 0, 0, 1536}, +{69, 30, 10, 0, 0, 0, 4096}, +{67, 83, 52, 0, 0, 0, 1280}, +{34, 52, 57, 0, 0, 0, 1280}, +{67, 54, 30, 0, 0, 0, 1792}, +{61, 67, 36, 0, 0, 0, 4096}, +{67, 83, 52, 0, 0, 0, 1536}, +{76, 53, 52, 0, 0, 0, 1280}, +{76, 31, 30, 0, 0, 0, 1536}, +{90, 31, 30, 0, 0, 0, 4096}, +{50, 0, 54, 0, 0, 0, 512}, +{91, 0, 54, 0, 0, 0, 512}, +{91, 0, 63, 0, 0, 0, 512}, +{92, 0, 0, 0, 0, 0, 512}, +{93, 0, 12, 0, 0, 0, 512}, +{94, 0, 12, 0, 0, 0, 512}, +{67, 83, 52, 0, 0, 0, 2048}, +{67, 87, 30, 0, 0, 0, 2048}, +{71, 87, 30, 0, 0, 0, 2304}, +{67, 87, 30, 0, 0, 0, 2560}, +{61, 55, 36, 0, 0, 0, 4096}, +{61, 57, 38, 0, 0, 0, 4096}, +{61, 59, 38, 0, 0, 0, 4096}, +{61, 87, 30, 0, 0, 0, 4096}, +{67, 86, 30, 0, 0, 0, 2304}, +{67, 85, 30, 0, 0, 0, 2304}, +{67, 84, 30, 0, 0, 0, 2304}, +{61, 84, 30, 0, 0, 0, 4096}, +{67, 87, 30, 0, 0, 0, 2304}, +{34, 59, 30, 0, 0, 0, 2304}, +{61, 59, 30, 0, 0, 0, 4096}, +{66, 40, 67, 0, 0, 0, 4096}, +{73, 59, 10, 0, 0, 0, 3584}, +{66, 40, 36, 0, 0, 0, 4352}, +{66, 34, 30, 0, 0, 0, 4352}, +{67, 87, 30, 0, 0, 0, 4864}, +{61, 87, 30, 0, 0, 0, 4864}, +{66, 34, 30, 0, 0, 0, 4864}, +{34, 72, 8, 0, 0, 0, 256}, +{34, 68, 10, 0, 0, 0, 2560}, +{34, 8, 72, 0, 0, 0, 256}, +{34, 72, 10, 0, 0, 0, 2560}, +{66, 91, 36, 0, 0, 0, 4096}, +{86, 39, 38, 0, 0, 0, 4096}, +{71, 85, 30, 0, 0, 0, 2304}, +{71, 86, 30, 0, 0, 0, 2304}, +{71, 83, 52, 0, 0, 0, 2048}, +{71, 87, 30, 0, 0, 0, 2048}, +{71, 30, 74, 0, 0, 0, 2304}, +{88, 30, 80, 0, 0, 0, 4096}, +{71, 30, 75, 0, 0, 0, 2304}, +{88, 30, 81, 0, 0, 0, 4096}, +{95, 30, 76, 0, 0, 0, 2304}, +{66, 30, 73, 0, 0, 0, 4096}, +{71, 30, 76, 0, 0, 0, 2304}, +{66, 30, 70, 0, 0, 0, 4096}, +{66, 38, 87, 0, 0, 0, 4096}, +{71, 78, 30, 0, 0, 0, 2304}, +{95, 76, 30, 0, 0, 0, 2304}, +{71, 87, 30, 0, 0, 0, 4608}, +{86, 34, 30, 0, 0, 0, 4608}, +{71, 87, 30, 0, 0, 0, 2560}, +{71, 87, 30, 0, 0, 0, 4864}, +{66, 87, 30, 0, 0, 0, 4864}, +{96, 1, 53, 0, 0, 0, 1024}, +{55, 1, 31, 0, 0, 0, 1536}, +{97, 31, 34, 0, 0, 0, 4096}, +{98, 0, 10, 0, 0, 0, 3584}, +{55, 0, 55, 0, 0, 0, 256}, +{63, 0, 55, 0, 0, 0, 4096}, +{55, 0, 54, 0, 0, 0, 3584}, +{99, 70, 10, 0, 0, 0, 256}, +{98, 0, 72, 0, 0, 0, 256}, +{100, 83, 52, 0, 0, 0, 3072} }; uint16_t CmpMnemonicOffsets[8] = { diff --git a/NativeCore/Dependencies/distorm/src/insts.h b/NativeCore/Dependencies/distorm/src/insts.h index 77db087b..675ecf96 100644 --- a/NativeCore/Dependencies/distorm/src/insts.h +++ b/NativeCore/Dependencies/distorm/src/insts.h @@ -4,7 +4,7 @@ insts.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ diff --git a/NativeCore/Dependencies/distorm/src/mnemonics.c b/NativeCore/Dependencies/distorm/src/mnemonics.c index 7df13601..f306a258 100644 --- a/NativeCore/Dependencies/distorm/src/mnemonics.c +++ b/NativeCore/Dependencies/distorm/src/mnemonics.c @@ -4,7 +4,7 @@ mnemonics.c diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -75,238 +75,241 @@ const unsigned char _MNEMONICS[] = "\x04" "verw\0" "\x04" "sgdt\0" "\x04" "sidt\0" "\x04" "lgdt\0" "\x04" "lidt\0" \ "\x04" "smsw\0" "\x04" "lmsw\0" "\x06" "invlpg\0" "\x06" "vmcall\0" \ "\x08" "vmlaunch\0" "\x08" "vmresume\0" "\x06" "vmxoff\0" "\x07" "monitor\0" \ -"\x05" "mwait\0" "\x06" "xgetbv\0" "\x06" "xsetbv\0" "\x06" "vmfunc\0" \ -"\x04" "xend\0" "\x05" "vmrun\0" "\x07" "vmmcall\0" "\x06" "vmload\0" \ -"\x06" "vmsave\0" "\x04" "stgi\0" "\x04" "clgi\0" "\x06" "skinit\0" \ -"\x07" "invlpga\0" "\x06" "swapgs\0" "\x06" "rdtscp\0" "\x08" "prefetch\0" \ -"\x09" "prefetchw\0" "\x05" "pi2fw\0" "\x05" "pi2fd\0" "\x05" "pf2iw\0" \ -"\x05" "pf2id\0" "\x06" "pfnacc\0" "\x07" "pfpnacc\0" "\x07" "pfcmpge\0" \ -"\x05" "pfmin\0" "\x05" "pfrcp\0" "\x07" "pfrsqrt\0" "\x05" "pfsub\0" \ -"\x05" "pfadd\0" "\x07" "pfcmpgt\0" "\x05" "pfmax\0" "\x08" "pfrcpit1\0" \ -"\x08" "pfrsqit1\0" "\x06" "pfsubr\0" "\x05" "pfacc\0" "\x07" "pfcmpeq\0" \ -"\x05" "pfmul\0" "\x08" "pfrcpit2\0" "\x07" "pmulhrw\0" "\x06" "pswapd\0" \ -"\x07" "pavgusb\0" "\x06" "movups\0" "\x06" "movupd\0" "\x05" "movss\0" \ -"\x05" "movsd\0" "\x07" "vmovups\0" "\x07" "vmovupd\0" "\x06" "vmovss\0" \ -"\x06" "vmovsd\0" "\x07" "movhlps\0" "\x06" "movlps\0" "\x06" "movlpd\0" \ -"\x08" "movsldup\0" "\x07" "movddup\0" "\x08" "vmovhlps\0" "\x07" "vmovlps\0" \ -"\x07" "vmovlpd\0" "\x09" "vmovsldup\0" "\x08" "vmovddup\0" "\x08" "unpcklps\0" \ -"\x08" "unpcklpd\0" "\x09" "vunpcklps\0" "\x09" "vunpcklpd\0" "\x08" "unpckhps\0" \ -"\x08" "unpckhpd\0" "\x09" "vunpckhps\0" "\x09" "vunpckhpd\0" "\x07" "movlhps\0" \ -"\x06" "movhps\0" "\x06" "movhpd\0" "\x08" "movshdup\0" "\x08" "vmovlhps\0" \ -"\x07" "vmovhps\0" "\x07" "vmovhpd\0" "\x09" "vmovshdup\0" "\x0b" "prefetchnta\0" \ -"\x0a" "prefetcht0\0" "\x0a" "prefetcht1\0" "\x0a" "prefetcht2\0" "\x06" "movaps\0" \ -"\x06" "movapd\0" "\x07" "vmovaps\0" "\x07" "vmovapd\0" "\x08" "cvtpi2ps\0" \ -"\x08" "cvtpi2pd\0" "\x08" "cvtsi2ss\0" "\x08" "cvtsi2sd\0" "\x09" "vcvtsi2ss\0" \ -"\x09" "vcvtsi2sd\0" "\x07" "movntps\0" "\x07" "movntpd\0" "\x07" "movntss\0" \ -"\x07" "movntsd\0" "\x08" "vmovntps\0" "\x08" "vmovntpd\0" "\x09" "cvttps2pi\0" \ -"\x09" "cvttpd2pi\0" "\x09" "cvttss2si\0" "\x09" "cvttsd2si\0" "\x0a" "vcvttss2si\0" \ -"\x0a" "vcvttsd2si\0" "\x08" "cvtps2pi\0" "\x08" "cvtpd2pi\0" "\x08" "cvtss2si\0" \ -"\x08" "cvtsd2si\0" "\x09" "vcvtss2si\0" "\x09" "vcvtsd2si\0" "\x07" "ucomiss\0" \ -"\x07" "ucomisd\0" "\x08" "vucomiss\0" "\x08" "vucomisd\0" "\x06" "comiss\0" \ -"\x06" "comisd\0" "\x07" "vcomiss\0" "\x07" "vcomisd\0" "\x08" "movmskps\0" \ -"\x08" "movmskpd\0" "\x09" "vmovmskps\0" "\x09" "vmovmskpd\0" "\x06" "sqrtps\0" \ -"\x06" "sqrtpd\0" "\x06" "sqrtss\0" "\x06" "sqrtsd\0" "\x07" "vsqrtps\0" \ -"\x07" "vsqrtpd\0" "\x07" "vsqrtss\0" "\x07" "vsqrtsd\0" "\x07" "rsqrtps\0" \ -"\x07" "rsqrtss\0" "\x08" "vrsqrtps\0" "\x08" "vrsqrtss\0" "\x05" "rcpps\0" \ -"\x05" "rcpss\0" "\x06" "vrcpps\0" "\x06" "vrcpss\0" "\x05" "andps\0" \ -"\x05" "andpd\0" "\x06" "vandps\0" "\x06" "vandpd\0" "\x06" "andnps\0" \ -"\x06" "andnpd\0" "\x07" "vandnps\0" "\x07" "vandnpd\0" "\x04" "orps\0" \ -"\x04" "orpd\0" "\x05" "vorps\0" "\x05" "vorpd\0" "\x05" "xorps\0" \ -"\x05" "xorpd\0" "\x06" "vxorps\0" "\x06" "vxorpd\0" "\x05" "addps\0" \ -"\x05" "addpd\0" "\x05" "addss\0" "\x05" "addsd\0" "\x06" "vaddps\0" \ -"\x06" "vaddpd\0" "\x06" "vaddss\0" "\x06" "vaddsd\0" "\x05" "mulps\0" \ -"\x05" "mulpd\0" "\x05" "mulss\0" "\x05" "mulsd\0" "\x06" "vmulps\0" \ -"\x06" "vmulpd\0" "\x06" "vmulss\0" "\x06" "vmulsd\0" "\x08" "cvtps2pd\0" \ -"\x08" "cvtpd2ps\0" "\x08" "cvtss2sd\0" "\x08" "cvtsd2ss\0" "\x09" "vcvtps2pd\0" \ -"\x09" "vcvtpd2ps\0" "\x09" "vcvtss2sd\0" "\x09" "vcvtsd2ss\0" "\x08" "cvtdq2ps\0" \ -"\x08" "cvtps2dq\0" "\x09" "cvttps2dq\0" "\x09" "vcvtdq2ps\0" "\x09" "vcvtps2dq\0" \ -"\x0a" "vcvttps2dq\0" "\x05" "subps\0" "\x05" "subpd\0" "\x05" "subss\0" \ -"\x05" "subsd\0" "\x06" "vsubps\0" "\x06" "vsubpd\0" "\x06" "vsubss\0" \ -"\x06" "vsubsd\0" "\x05" "minps\0" "\x05" "minpd\0" "\x05" "minss\0" \ -"\x05" "minsd\0" "\x06" "vminps\0" "\x06" "vminpd\0" "\x06" "vminss\0" \ -"\x06" "vminsd\0" "\x05" "divps\0" "\x05" "divpd\0" "\x05" "divss\0" \ -"\x05" "divsd\0" "\x06" "vdivps\0" "\x06" "vdivpd\0" "\x06" "vdivss\0" \ -"\x06" "vdivsd\0" "\x05" "maxps\0" "\x05" "maxpd\0" "\x05" "maxss\0" \ -"\x05" "maxsd\0" "\x06" "vmaxps\0" "\x06" "vmaxpd\0" "\x06" "vmaxss\0" \ -"\x06" "vmaxsd\0" "\x09" "punpcklbw\0" "\x0a" "vpunpcklbw\0" "\x09" "punpcklwd\0" \ -"\x0a" "vpunpcklwd\0" "\x09" "punpckldq\0" "\x0a" "vpunpckldq\0" "\x08" "packsswb\0" \ -"\x09" "vpacksswb\0" "\x07" "pcmpgtb\0" "\x08" "vpcmpgtb\0" "\x07" "pcmpgtw\0" \ -"\x08" "vpcmpgtw\0" "\x07" "pcmpgtd\0" "\x08" "vpcmpgtd\0" "\x08" "packuswb\0" \ -"\x09" "vpackuswb\0" "\x09" "punpckhbw\0" "\x0a" "vpunpckhbw\0" "\x09" "punpckhwd\0" \ -"\x0a" "vpunpckhwd\0" "\x09" "punpckhdq\0" "\x0a" "vpunpckhdq\0" "\x08" "packssdw\0" \ -"\x09" "vpackssdw\0" "\x0a" "punpcklqdq\0" "\x0b" "vpunpcklqdq\0" "\x0a" "punpckhqdq\0" \ -"\x0b" "vpunpckhqdq\0" "\x04" "movd\0" "\x04" "movq\0" "\x05" "vmovd\0" \ -"\x05" "vmovq\0" "\x06" "movdqa\0" "\x06" "movdqu\0" "\x07" "vmovdqa\0" \ -"\x07" "vmovdqu\0" "\x06" "pshufw\0" "\x06" "pshufd\0" "\x07" "pshufhw\0" \ -"\x07" "pshuflw\0" "\x07" "vpshufd\0" "\x08" "vpshufhw\0" "\x08" "vpshuflw\0" \ -"\x07" "pcmpeqb\0" "\x08" "vpcmpeqb\0" "\x07" "pcmpeqw\0" "\x08" "vpcmpeqw\0" \ -"\x07" "pcmpeqd\0" "\x08" "vpcmpeqd\0" "\x04" "emms\0" "\x0a" "vzeroupper\0" \ -"\x08" "vzeroall\0" "\x06" "vmread\0" "\x05" "extrq\0" "\x07" "insertq\0" \ -"\x07" "vmwrite\0" "\x08" "cvtph2ps\0" "\x08" "cvtps2ph\0" "\x06" "haddpd\0" \ -"\x06" "haddps\0" "\x07" "vhaddpd\0" "\x07" "vhaddps\0" "\x06" "hsubpd\0" \ -"\x06" "hsubps\0" "\x07" "vhsubpd\0" "\x07" "vhsubps\0" "\x05" "xsave\0" \ -"\x07" "xsave64\0" "\x06" "lfence\0" "\x06" "xrstor\0" "\x08" "xrstor64\0" \ -"\x06" "mfence\0" "\x08" "xsaveopt\0" "\x0a" "xsaveopt64\0" "\x06" "sfence\0" \ -"\x07" "clflush\0" "\x06" "popcnt\0" "\x03" "bsf\0" "\x05" "tzcnt\0" \ -"\x03" "bsr\0" "\x05" "lzcnt\0" "\x07" "cmpeqps\0" "\x07" "cmpltps\0" \ -"\x07" "cmpleps\0" "\x0a" "cmpunordps\0" "\x08" "cmpneqps\0" "\x08" "cmpnltps\0" \ -"\x08" "cmpnleps\0" "\x08" "cmpordps\0" "\x07" "cmpeqpd\0" "\x07" "cmpltpd\0" \ -"\x07" "cmplepd\0" "\x0a" "cmpunordpd\0" "\x08" "cmpneqpd\0" "\x08" "cmpnltpd\0" \ -"\x08" "cmpnlepd\0" "\x08" "cmpordpd\0" "\x07" "cmpeqss\0" "\x07" "cmpltss\0" \ -"\x07" "cmpless\0" "\x0a" "cmpunordss\0" "\x08" "cmpneqss\0" "\x08" "cmpnltss\0" \ -"\x08" "cmpnless\0" "\x08" "cmpordss\0" "\x07" "cmpeqsd\0" "\x07" "cmpltsd\0" \ -"\x07" "cmplesd\0" "\x0a" "cmpunordsd\0" "\x08" "cmpneqsd\0" "\x08" "cmpnltsd\0" \ -"\x08" "cmpnlesd\0" "\x08" "cmpordsd\0" "\x08" "vcmpeqps\0" "\x08" "vcmpltps\0" \ -"\x08" "vcmpleps\0" "\x0b" "vcmpunordps\0" "\x09" "vcmpneqps\0" "\x09" "vcmpnltps\0" \ -"\x09" "vcmpnleps\0" "\x09" "vcmpordps\0" "\x0b" "vcmpeq_uqps\0" "\x09" "vcmpngeps\0" \ -"\x09" "vcmpngtps\0" "\x0b" "vcmpfalseps\0" "\x0c" "vcmpneq_oqps\0" "\x08" "vcmpgeps\0" \ -"\x08" "vcmpgtps\0" "\x0a" "vcmptrueps\0" "\x0b" "vcmpeq_osps\0" "\x0b" "vcmplt_oqps\0" \ -"\x0b" "vcmple_oqps\0" "\x0d" "vcmpunord_sps\0" "\x0c" "vcmpneq_usps\0" \ -"\x0c" "vcmpnlt_uqps\0" "\x0c" "vcmpnle_uqps\0" "\x0b" "vcmpord_sps\0" \ -"\x0b" "vcmpeq_usps\0" "\x0c" "vcmpnge_uqps\0" "\x0c" "vcmpngt_uqps\0" \ -"\x0e" "vcmpfalse_osps\0" "\x0c" "vcmpneq_osps\0" "\x0b" "vcmpge_oqps\0" \ -"\x0b" "vcmpgt_oqps\0" "\x0d" "vcmptrue_usps\0" "\x08" "vcmpeqpd\0" "\x08" "vcmpltpd\0" \ -"\x08" "vcmplepd\0" "\x0b" "vcmpunordpd\0" "\x09" "vcmpneqpd\0" "\x09" "vcmpnltpd\0" \ -"\x09" "vcmpnlepd\0" "\x09" "vcmpordpd\0" "\x0b" "vcmpeq_uqpd\0" "\x09" "vcmpngepd\0" \ -"\x09" "vcmpngtpd\0" "\x0b" "vcmpfalsepd\0" "\x0c" "vcmpneq_oqpd\0" "\x08" "vcmpgepd\0" \ -"\x08" "vcmpgtpd\0" "\x0a" "vcmptruepd\0" "\x0b" "vcmpeq_ospd\0" "\x0b" "vcmplt_oqpd\0" \ -"\x0b" "vcmple_oqpd\0" "\x0d" "vcmpunord_spd\0" "\x0c" "vcmpneq_uspd\0" \ -"\x0c" "vcmpnlt_uqpd\0" "\x0c" "vcmpnle_uqpd\0" "\x0b" "vcmpord_spd\0" \ -"\x0b" "vcmpeq_uspd\0" "\x0c" "vcmpnge_uqpd\0" "\x0c" "vcmpngt_uqpd\0" \ -"\x0e" "vcmpfalse_ospd\0" "\x0c" "vcmpneq_ospd\0" "\x0b" "vcmpge_oqpd\0" \ -"\x0b" "vcmpgt_oqpd\0" "\x0d" "vcmptrue_uspd\0" "\x08" "vcmpeqss\0" "\x08" "vcmpltss\0" \ -"\x08" "vcmpless\0" "\x0b" "vcmpunordss\0" "\x09" "vcmpneqss\0" "\x09" "vcmpnltss\0" \ -"\x09" "vcmpnless\0" "\x09" "vcmpordss\0" "\x0b" "vcmpeq_uqss\0" "\x09" "vcmpngess\0" \ -"\x09" "vcmpngtss\0" "\x0b" "vcmpfalsess\0" "\x0c" "vcmpneq_oqss\0" "\x08" "vcmpgess\0" \ -"\x08" "vcmpgtss\0" "\x0a" "vcmptruess\0" "\x0b" "vcmpeq_osss\0" "\x0b" "vcmplt_oqss\0" \ -"\x0b" "vcmple_oqss\0" "\x0d" "vcmpunord_sss\0" "\x0c" "vcmpneq_usss\0" \ -"\x0c" "vcmpnlt_uqss\0" "\x0c" "vcmpnle_uqss\0" "\x0b" "vcmpord_sss\0" \ -"\x0b" "vcmpeq_usss\0" "\x0c" "vcmpnge_uqss\0" "\x0c" "vcmpngt_uqss\0" \ -"\x0e" "vcmpfalse_osss\0" "\x0c" "vcmpneq_osss\0" "\x0b" "vcmpge_oqss\0" \ -"\x0b" "vcmpgt_oqss\0" "\x0d" "vcmptrue_usss\0" "\x08" "vcmpeqsd\0" "\x08" "vcmpltsd\0" \ -"\x08" "vcmplesd\0" "\x0b" "vcmpunordsd\0" "\x09" "vcmpneqsd\0" "\x09" "vcmpnltsd\0" \ -"\x09" "vcmpnlesd\0" "\x09" "vcmpordsd\0" "\x0b" "vcmpeq_uqsd\0" "\x09" "vcmpngesd\0" \ -"\x09" "vcmpngtsd\0" "\x0b" "vcmpfalsesd\0" "\x0c" "vcmpneq_oqsd\0" "\x08" "vcmpgesd\0" \ -"\x08" "vcmpgtsd\0" "\x0a" "vcmptruesd\0" "\x0b" "vcmpeq_ossd\0" "\x0b" "vcmplt_oqsd\0" \ -"\x0b" "vcmple_oqsd\0" "\x0d" "vcmpunord_ssd\0" "\x0c" "vcmpneq_ussd\0" \ -"\x0c" "vcmpnlt_uqsd\0" "\x0c" "vcmpnle_uqsd\0" "\x0b" "vcmpord_ssd\0" \ -"\x0b" "vcmpeq_ussd\0" "\x0c" "vcmpnge_uqsd\0" "\x0c" "vcmpngt_uqsd\0" \ -"\x0e" "vcmpfalse_ossd\0" "\x0c" "vcmpneq_ossd\0" "\x0b" "vcmpge_oqsd\0" \ -"\x0b" "vcmpgt_oqsd\0" "\x0d" "vcmptrue_ussd\0" "\x06" "pinsrw\0" "\x07" "vpinsrw\0" \ -"\x06" "pextrw\0" "\x07" "vpextrw\0" "\x06" "shufps\0" "\x06" "shufpd\0" \ -"\x07" "vshufps\0" "\x07" "vshufpd\0" "\x09" "cmpxchg8b\0" "\x0a" "cmpxchg16b\0" \ -"\x07" "vmptrst\0" "\x08" "addsubpd\0" "\x08" "addsubps\0" "\x09" "vaddsubpd\0" \ -"\x09" "vaddsubps\0" "\x05" "psrlw\0" "\x06" "vpsrlw\0" "\x05" "psrld\0" \ -"\x06" "vpsrld\0" "\x05" "psrlq\0" "\x06" "vpsrlq\0" "\x05" "paddq\0" \ -"\x06" "vpaddq\0" "\x06" "pmullw\0" "\x07" "vpmullw\0" "\x07" "movq2dq\0" \ -"\x07" "movdq2q\0" "\x08" "pmovmskb\0" "\x09" "vpmovmskb\0" "\x07" "psubusb\0" \ -"\x08" "vpsubusb\0" "\x07" "psubusw\0" "\x08" "vpsubusw\0" "\x06" "pminub\0" \ -"\x07" "vpminub\0" "\x04" "pand\0" "\x05" "vpand\0" "\x07" "paddusb\0" \ -"\x08" "vpaddusw\0" "\x07" "paddusw\0" "\x06" "pmaxub\0" "\x07" "vpmaxub\0" \ -"\x05" "pandn\0" "\x06" "vpandn\0" "\x05" "pavgb\0" "\x06" "vpavgb\0" \ -"\x05" "psraw\0" "\x06" "vpsraw\0" "\x05" "psrad\0" "\x06" "vpsrad\0" \ -"\x05" "pavgw\0" "\x06" "vpavgw\0" "\x07" "pmulhuw\0" "\x08" "vpmulhuw\0" \ -"\x06" "pmulhw\0" "\x07" "vpmulhw\0" "\x09" "cvttpd2dq\0" "\x08" "cvtdq2pd\0" \ -"\x08" "cvtpd2dq\0" "\x0a" "vcvttpd2dq\0" "\x09" "vcvtdq2pd\0" "\x09" "vcvtpd2dq\0" \ -"\x06" "movntq\0" "\x07" "movntdq\0" "\x08" "vmovntdq\0" "\x06" "psubsb\0" \ -"\x07" "vpsubsb\0" "\x06" "psubsw\0" "\x07" "vpsubsw\0" "\x06" "pminsw\0" \ -"\x07" "vpminsw\0" "\x03" "por\0" "\x04" "vpor\0" "\x06" "paddsb\0" \ -"\x07" "vpaddsb\0" "\x06" "paddsw\0" "\x07" "vpaddsw\0" "\x06" "pmaxsw\0" \ -"\x07" "vpmaxsw\0" "\x04" "pxor\0" "\x05" "vpxor\0" "\x05" "lddqu\0" \ -"\x06" "vlddqu\0" "\x05" "psllw\0" "\x06" "vpsllw\0" "\x05" "pslld\0" \ -"\x06" "vpslld\0" "\x05" "psllq\0" "\x06" "vpsllq\0" "\x07" "pmuludq\0" \ -"\x08" "vpmuludq\0" "\x07" "pmaddwd\0" "\x08" "vpmaddwd\0" "\x06" "psadbw\0" \ -"\x07" "vpsadbw\0" "\x08" "maskmovq\0" "\x0a" "maskmovdqu\0" "\x0b" "vmaskmovdqu\0" \ -"\x05" "psubb\0" "\x06" "vpsubb\0" "\x05" "psubw\0" "\x06" "vpsubw\0" \ -"\x05" "psubd\0" "\x06" "vpsubd\0" "\x05" "psubq\0" "\x06" "vpsubq\0" \ -"\x05" "paddb\0" "\x06" "vpaddb\0" "\x05" "paddw\0" "\x06" "vpaddw\0" \ -"\x05" "paddd\0" "\x06" "vpaddd\0" "\x07" "fnstenv\0" "\x06" "fstenv\0" \ -"\x06" "fnstcw\0" "\x05" "fstcw\0" "\x06" "fnclex\0" "\x05" "fclex\0" \ -"\x06" "fninit\0" "\x05" "finit\0" "\x06" "fnsave\0" "\x05" "fsave\0" \ -"\x06" "fnstsw\0" "\x05" "fstsw\0" "\x06" "pshufb\0" "\x07" "vpshufb\0" \ -"\x06" "phaddw\0" "\x07" "vphaddw\0" "\x06" "phaddd\0" "\x07" "vphaddd\0" \ -"\x07" "phaddsw\0" "\x08" "vphaddsw\0" "\x09" "pmaddubsw\0" "\x0a" "vpmaddubsw\0" \ -"\x06" "phsubw\0" "\x07" "vphsubw\0" "\x06" "phsubd\0" "\x07" "vphsubd\0" \ -"\x07" "phsubsw\0" "\x08" "vphsubsw\0" "\x06" "psignb\0" "\x07" "vpsignb\0" \ -"\x06" "psignw\0" "\x07" "vpsignw\0" "\x06" "psignd\0" "\x07" "vpsignd\0" \ -"\x08" "pmulhrsw\0" "\x09" "vpmulhrsw\0" "\x09" "vpermilps\0" "\x09" "vpermilpd\0" \ -"\x07" "vtestps\0" "\x07" "vtestpd\0" "\x08" "pblendvb\0" "\x08" "blendvps\0" \ -"\x08" "blendvpd\0" "\x05" "ptest\0" "\x06" "vptest\0" "\x0c" "vbroadcastss\0" \ -"\x0c" "vbroadcastsd\0" "\x0e" "vbroadcastf128\0" "\x05" "pabsb\0" "\x06" "vpabsb\0" \ -"\x05" "pabsw\0" "\x06" "vpabsw\0" "\x05" "pabsd\0" "\x06" "vpabsd\0" \ -"\x08" "pmovsxbw\0" "\x09" "vpmovsxbw\0" "\x08" "pmovsxbd\0" "\x09" "vpmovsxbd\0" \ -"\x08" "pmovsxbq\0" "\x09" "vpmovsxbq\0" "\x08" "pmovsxwd\0" "\x09" "vpmovsxwd\0" \ -"\x08" "pmovsxwq\0" "\x09" "vpmovsxwq\0" "\x08" "pmovsxdq\0" "\x09" "vpmovsxdq\0" \ -"\x06" "pmuldq\0" "\x07" "vpmuldq\0" "\x07" "pcmpeqq\0" "\x08" "vpcmpeqq\0" \ -"\x08" "movntdqa\0" "\x09" "vmovntdqa\0" "\x08" "packusdw\0" "\x09" "vpackusdw\0" \ -"\x0a" "vmaskmovps\0" "\x0a" "vmaskmovpd\0" "\x08" "pmovzxbw\0" "\x09" "vpmovzxbw\0" \ -"\x08" "pmovzxbd\0" "\x09" "vpmovzxbd\0" "\x08" "pmovzxbq\0" "\x09" "vpmovzxbq\0" \ -"\x08" "pmovzxwd\0" "\x09" "vpmovzxwd\0" "\x08" "pmovzxwq\0" "\x09" "vpmovzxwq\0" \ -"\x08" "pmovzxdq\0" "\x09" "vpmovzxdq\0" "\x07" "pcmpgtq\0" "\x08" "vpcmpgtq\0" \ -"\x06" "pminsb\0" "\x07" "vpminsb\0" "\x06" "pminsd\0" "\x07" "vpminsd\0" \ -"\x06" "pminuw\0" "\x07" "vpminuw\0" "\x06" "pminud\0" "\x07" "vpminud\0" \ -"\x06" "pmaxsb\0" "\x07" "vpmaxsb\0" "\x06" "pmaxsd\0" "\x07" "vpmaxsd\0" \ -"\x06" "pmaxuw\0" "\x07" "vpmaxuw\0" "\x06" "pmaxud\0" "\x07" "vpmaxud\0" \ -"\x06" "pmulld\0" "\x07" "vpmulld\0" "\x0a" "phminposuw\0" "\x0b" "vphminposuw\0" \ -"\x06" "invept\0" "\x07" "invvpid\0" "\x07" "invpcid\0" "\x0e" "vfmaddsub132ps\0" \ -"\x0e" "vfmaddsub132pd\0" "\x0e" "vfmsubadd132ps\0" "\x0e" "vfmsubadd132pd\0" \ -"\x0b" "vfmadd132ps\0" "\x0b" "vfmadd132pd\0" "\x0b" "vfmadd132ss\0" \ -"\x0b" "vfmadd132sd\0" "\x0b" "vfmsub132ps\0" "\x0b" "vfmsub132pd\0" \ -"\x0b" "vfmsub132ss\0" "\x0b" "vfmsub132sd\0" "\x0c" "vfnmadd132ps\0" \ -"\x0c" "vfnmadd132pd\0" "\x0c" "vfnmadd132ss\0" "\x0c" "vfnmadd132sd\0" \ -"\x0c" "vfnmsub132ps\0" "\x0c" "vfnmsub132pd\0" "\x0c" "vfnmsub132ss\0" \ -"\x0c" "vfnmsub132sd\0" "\x0e" "vfmaddsub213ps\0" "\x0e" "vfmaddsub213pd\0" \ -"\x0e" "vfmsubadd213ps\0" "\x0e" "vfmsubadd213pd\0" "\x0b" "vfmadd213ps\0" \ -"\x0b" "vfmadd213pd\0" "\x0b" "vfmadd213ss\0" "\x0b" "vfmadd213sd\0" \ -"\x0b" "vfmsub213ps\0" "\x0b" "vfmsub213pd\0" "\x0b" "vfmsub213ss\0" \ -"\x0b" "vfmsub213sd\0" "\x0c" "vfnmadd213ps\0" "\x0c" "vfnmadd213pd\0" \ -"\x0c" "vfnmadd213ss\0" "\x0c" "vfnmadd213sd\0" "\x0c" "vfnmsub213ps\0" \ -"\x0c" "vfnmsub213pd\0" "\x0c" "vfnmsub213ss\0" "\x0c" "vfnmsub213sd\0" \ -"\x0e" "vfmaddsub231ps\0" "\x0e" "vfmaddsub231pd\0" "\x0e" "vfmsubadd231ps\0" \ -"\x0e" "vfmsubadd231pd\0" "\x0b" "vfmadd231ps\0" "\x0b" "vfmadd231pd\0" \ -"\x0b" "vfmadd231ss\0" "\x0b" "vfmadd231sd\0" "\x0b" "vfmsub231ps\0" \ -"\x0b" "vfmsub231pd\0" "\x0b" "vfmsub231ss\0" "\x0b" "vfmsub231sd\0" \ -"\x0c" "vfnmadd231ps\0" "\x0c" "vfnmadd231pd\0" "\x0c" "vfnmadd231ss\0" \ -"\x0c" "vfnmadd231sd\0" "\x0c" "vfnmsub231ps\0" "\x0c" "vfnmsub231pd\0" \ -"\x0c" "vfnmsub231ss\0" "\x0c" "vfnmsub231sd\0" "\x06" "aesimc\0" "\x07" "vaesimc\0" \ -"\x06" "aesenc\0" "\x07" "vaesenc\0" "\x0a" "aesenclast\0" "\x0b" "vaesenclast\0" \ -"\x06" "aesdec\0" "\x07" "vaesdec\0" "\x0a" "aesdeclast\0" "\x0b" "vaesdeclast\0" \ -"\x05" "movbe\0" "\x05" "crc32\0" "\x0a" "vperm2f128\0" "\x07" "roundps\0" \ -"\x08" "vroundps\0" "\x07" "roundpd\0" "\x08" "vroundpd\0" "\x07" "roundss\0" \ -"\x08" "vroundss\0" "\x07" "roundsd\0" "\x08" "vroundsd\0" "\x07" "blendps\0" \ -"\x08" "vblendps\0" "\x07" "blendpd\0" "\x08" "vblendpd\0" "\x07" "pblendw\0" \ -"\x08" "vpblendw\0" "\x07" "palignr\0" "\x08" "vpalignr\0" "\x06" "pextrb\0" \ -"\x07" "vpextrb\0" "\x06" "pextrd\0" "\x06" "pextrq\0" "\x07" "vpextrd\0" \ -"\x07" "vpextrq\0" "\x09" "extractps\0" "\x0a" "vextractps\0" "\x0b" "vinsertf128\0" \ -"\x0c" "vextractf128\0" "\x06" "pinsrb\0" "\x07" "vpinsrb\0" "\x08" "insertps\0" \ -"\x09" "vinsertps\0" "\x06" "pinsrd\0" "\x06" "pinsrq\0" "\x07" "vpinsrd\0" \ -"\x07" "vpinsrq\0" "\x04" "dpps\0" "\x05" "vdpps\0" "\x04" "dppd\0" \ -"\x05" "vdppd\0" "\x07" "mpsadbw\0" "\x08" "vmpsadbw\0" "\x09" "pclmulqdq\0" \ -"\x0a" "vpclmulqdq\0" "\x09" "vblendvps\0" "\x09" "vblendvpd\0" "\x09" "vpblendvb\0" \ -"\x09" "pcmpestrm\0" "\x0a" "vpcmpestrm\0" "\x09" "pcmpestri\0" "\x0a" "vpcmpestri\0" \ -"\x09" "pcmpistrm\0" "\x0a" "vpcmpistrm\0" "\x09" "pcmpistri\0" "\x0a" "vpcmpistri\0" \ -"\x0f" "aeskeygenassist\0" "\x10" "vaeskeygenassist\0" "\x06" "psrldq\0" \ -"\x07" "vpsrldq\0" "\x06" "pslldq\0" "\x07" "vpslldq\0" "\x06" "fxsave\0" \ -"\x08" "fxsave64\0" "\x08" "rdfsbase\0" "\x07" "fxrstor\0" "\x09" "fxrstor64\0" \ -"\x08" "rdgsbase\0" "\x07" "ldmxcsr\0" "\x08" "wrfsbase\0" "\x08" "vldmxcsr\0" \ -"\x07" "stmxcsr\0" "\x08" "wrgsbase\0" "\x08" "vstmxcsr\0" "\x07" "vmptrld\0" \ -"\x07" "vmclear\0" "\x05" "vmxon\0" "\x06" "movsxd\0" "\x05" "pause\0" \ -"\x04" "wait\0" "\x06" "rdrand\0" "\x06" "_3dnow\0"; +"\x05" "mwait\0" "\x04" "clac\0" "\x04" "stac\0" "\x06" "xgetbv\0" \ +"\x06" "xsetbv\0" "\x06" "vmfunc\0" "\x04" "xend\0" "\x05" "vmrun\0" \ +"\x07" "vmmcall\0" "\x06" "vmload\0" "\x06" "vmsave\0" "\x04" "stgi\0" \ +"\x04" "clgi\0" "\x06" "skinit\0" "\x07" "invlpga\0" "\x06" "swapgs\0" \ +"\x06" "rdtscp\0" "\x08" "prefetch\0" "\x09" "prefetchw\0" "\x05" "pi2fw\0" \ +"\x05" "pi2fd\0" "\x05" "pf2iw\0" "\x05" "pf2id\0" "\x06" "pfnacc\0" \ +"\x07" "pfpnacc\0" "\x07" "pfcmpge\0" "\x05" "pfmin\0" "\x05" "pfrcp\0" \ +"\x07" "pfrsqrt\0" "\x05" "pfsub\0" "\x05" "pfadd\0" "\x07" "pfcmpgt\0" \ +"\x05" "pfmax\0" "\x08" "pfrcpit1\0" "\x08" "pfrsqit1\0" "\x06" "pfsubr\0" \ +"\x05" "pfacc\0" "\x07" "pfcmpeq\0" "\x05" "pfmul\0" "\x08" "pfrcpit2\0" \ +"\x07" "pmulhrw\0" "\x06" "pswapd\0" "\x07" "pavgusb\0" "\x06" "movups\0" \ +"\x06" "movupd\0" "\x05" "movss\0" "\x05" "movsd\0" "\x07" "vmovups\0" \ +"\x07" "vmovupd\0" "\x06" "vmovss\0" "\x06" "vmovsd\0" "\x07" "movhlps\0" \ +"\x06" "movlps\0" "\x06" "movlpd\0" "\x08" "movsldup\0" "\x07" "movddup\0" \ +"\x08" "vmovhlps\0" "\x07" "vmovlps\0" "\x07" "vmovlpd\0" "\x09" "vmovsldup\0" \ +"\x08" "vmovddup\0" "\x08" "unpcklps\0" "\x08" "unpcklpd\0" "\x09" "vunpcklps\0" \ +"\x09" "vunpcklpd\0" "\x08" "unpckhps\0" "\x08" "unpckhpd\0" "\x09" "vunpckhps\0" \ +"\x09" "vunpckhpd\0" "\x07" "movlhps\0" "\x06" "movhps\0" "\x06" "movhpd\0" \ +"\x08" "movshdup\0" "\x08" "vmovlhps\0" "\x07" "vmovhps\0" "\x07" "vmovhpd\0" \ +"\x09" "vmovshdup\0" "\x0b" "prefetchnta\0" "\x0a" "prefetcht0\0" "\x0a" "prefetcht1\0" \ +"\x0a" "prefetcht2\0" "\x06" "movaps\0" "\x06" "movapd\0" "\x07" "vmovaps\0" \ +"\x07" "vmovapd\0" "\x08" "cvtpi2ps\0" "\x08" "cvtpi2pd\0" "\x08" "cvtsi2ss\0" \ +"\x08" "cvtsi2sd\0" "\x09" "vcvtsi2ss\0" "\x09" "vcvtsi2sd\0" "\x07" "movntps\0" \ +"\x07" "movntpd\0" "\x07" "movntss\0" "\x07" "movntsd\0" "\x08" "vmovntps\0" \ +"\x08" "vmovntpd\0" "\x09" "cvttps2pi\0" "\x09" "cvttpd2pi\0" "\x09" "cvttss2si\0" \ +"\x09" "cvttsd2si\0" "\x0a" "vcvttss2si\0" "\x0a" "vcvttsd2si\0" "\x08" "cvtps2pi\0" \ +"\x08" "cvtpd2pi\0" "\x08" "cvtss2si\0" "\x08" "cvtsd2si\0" "\x09" "vcvtss2si\0" \ +"\x09" "vcvtsd2si\0" "\x07" "ucomiss\0" "\x07" "ucomisd\0" "\x08" "vucomiss\0" \ +"\x08" "vucomisd\0" "\x06" "comiss\0" "\x06" "comisd\0" "\x07" "vcomiss\0" \ +"\x07" "vcomisd\0" "\x08" "movmskps\0" "\x08" "movmskpd\0" "\x09" "vmovmskps\0" \ +"\x09" "vmovmskpd\0" "\x06" "sqrtps\0" "\x06" "sqrtpd\0" "\x06" "sqrtss\0" \ +"\x06" "sqrtsd\0" "\x07" "vsqrtps\0" "\x07" "vsqrtpd\0" "\x07" "vsqrtss\0" \ +"\x07" "vsqrtsd\0" "\x07" "rsqrtps\0" "\x07" "rsqrtss\0" "\x08" "vrsqrtps\0" \ +"\x08" "vrsqrtss\0" "\x05" "rcpps\0" "\x05" "rcpss\0" "\x06" "vrcpps\0" \ +"\x06" "vrcpss\0" "\x05" "andps\0" "\x05" "andpd\0" "\x06" "vandps\0" \ +"\x06" "vandpd\0" "\x06" "andnps\0" "\x06" "andnpd\0" "\x07" "vandnps\0" \ +"\x07" "vandnpd\0" "\x04" "orps\0" "\x04" "orpd\0" "\x05" "vorps\0" \ +"\x05" "vorpd\0" "\x05" "xorps\0" "\x05" "xorpd\0" "\x06" "vxorps\0" \ +"\x06" "vxorpd\0" "\x05" "addps\0" "\x05" "addpd\0" "\x05" "addss\0" \ +"\x05" "addsd\0" "\x06" "vaddps\0" "\x06" "vaddpd\0" "\x06" "vaddss\0" \ +"\x06" "vaddsd\0" "\x05" "mulps\0" "\x05" "mulpd\0" "\x05" "mulss\0" \ +"\x05" "mulsd\0" "\x06" "vmulps\0" "\x06" "vmulpd\0" "\x06" "vmulss\0" \ +"\x06" "vmulsd\0" "\x08" "cvtps2pd\0" "\x08" "cvtpd2ps\0" "\x08" "cvtss2sd\0" \ +"\x08" "cvtsd2ss\0" "\x09" "vcvtps2pd\0" "\x09" "vcvtpd2ps\0" "\x09" "vcvtss2sd\0" \ +"\x09" "vcvtsd2ss\0" "\x08" "cvtdq2ps\0" "\x08" "cvtps2dq\0" "\x09" "cvttps2dq\0" \ +"\x09" "vcvtdq2ps\0" "\x09" "vcvtps2dq\0" "\x0a" "vcvttps2dq\0" "\x05" "subps\0" \ +"\x05" "subpd\0" "\x05" "subss\0" "\x05" "subsd\0" "\x06" "vsubps\0" \ +"\x06" "vsubpd\0" "\x06" "vsubss\0" "\x06" "vsubsd\0" "\x05" "minps\0" \ +"\x05" "minpd\0" "\x05" "minss\0" "\x05" "minsd\0" "\x06" "vminps\0" \ +"\x06" "vminpd\0" "\x06" "vminss\0" "\x06" "vminsd\0" "\x05" "divps\0" \ +"\x05" "divpd\0" "\x05" "divss\0" "\x05" "divsd\0" "\x06" "vdivps\0" \ +"\x06" "vdivpd\0" "\x06" "vdivss\0" "\x06" "vdivsd\0" "\x05" "maxps\0" \ +"\x05" "maxpd\0" "\x05" "maxss\0" "\x05" "maxsd\0" "\x06" "vmaxps\0" \ +"\x06" "vmaxpd\0" "\x06" "vmaxss\0" "\x06" "vmaxsd\0" "\x09" "punpcklbw\0" \ +"\x0a" "vpunpcklbw\0" "\x09" "punpcklwd\0" "\x0a" "vpunpcklwd\0" "\x09" "punpckldq\0" \ +"\x0a" "vpunpckldq\0" "\x08" "packsswb\0" "\x09" "vpacksswb\0" "\x07" "pcmpgtb\0" \ +"\x08" "vpcmpgtb\0" "\x07" "pcmpgtw\0" "\x08" "vpcmpgtw\0" "\x07" "pcmpgtd\0" \ +"\x08" "vpcmpgtd\0" "\x08" "packuswb\0" "\x09" "vpackuswb\0" "\x09" "punpckhbw\0" \ +"\x0a" "vpunpckhbw\0" "\x09" "punpckhwd\0" "\x0a" "vpunpckhwd\0" "\x09" "punpckhdq\0" \ +"\x0a" "vpunpckhdq\0" "\x08" "packssdw\0" "\x09" "vpackssdw\0" "\x0a" "punpcklqdq\0" \ +"\x0b" "vpunpcklqdq\0" "\x0a" "punpckhqdq\0" "\x0b" "vpunpckhqdq\0" "\x04" "movd\0" \ +"\x04" "movq\0" "\x05" "vmovd\0" "\x05" "vmovq\0" "\x06" "movdqa\0" \ +"\x06" "movdqu\0" "\x07" "vmovdqa\0" "\x07" "vmovdqu\0" "\x06" "pshufw\0" \ +"\x06" "pshufd\0" "\x07" "pshufhw\0" "\x07" "pshuflw\0" "\x07" "vpshufd\0" \ +"\x08" "vpshufhw\0" "\x08" "vpshuflw\0" "\x07" "pcmpeqb\0" "\x08" "vpcmpeqb\0" \ +"\x07" "pcmpeqw\0" "\x08" "vpcmpeqw\0" "\x07" "pcmpeqd\0" "\x08" "vpcmpeqd\0" \ +"\x04" "emms\0" "\x0a" "vzeroupper\0" "\x08" "vzeroall\0" "\x06" "vmread\0" \ +"\x05" "extrq\0" "\x07" "insertq\0" "\x07" "vmwrite\0" "\x08" "cvtph2ps\0" \ +"\x08" "cvtps2ph\0" "\x06" "haddpd\0" "\x06" "haddps\0" "\x07" "vhaddpd\0" \ +"\x07" "vhaddps\0" "\x06" "hsubpd\0" "\x06" "hsubps\0" "\x07" "vhsubpd\0" \ +"\x07" "vhsubps\0" "\x05" "xsave\0" "\x07" "xsave64\0" "\x06" "lfence\0" \ +"\x06" "xrstor\0" "\x08" "xrstor64\0" "\x06" "mfence\0" "\x08" "xsaveopt\0" \ +"\x0a" "xsaveopt64\0" "\x06" "sfence\0" "\x07" "clflush\0" "\x06" "popcnt\0" \ +"\x03" "bsf\0" "\x05" "tzcnt\0" "\x03" "bsr\0" "\x05" "lzcnt\0" "\x07" "cmpeqps\0" \ +"\x07" "cmpltps\0" "\x07" "cmpleps\0" "\x0a" "cmpunordps\0" "\x08" "cmpneqps\0" \ +"\x08" "cmpnltps\0" "\x08" "cmpnleps\0" "\x08" "cmpordps\0" "\x07" "cmpeqpd\0" \ +"\x07" "cmpltpd\0" "\x07" "cmplepd\0" "\x0a" "cmpunordpd\0" "\x08" "cmpneqpd\0" \ +"\x08" "cmpnltpd\0" "\x08" "cmpnlepd\0" "\x08" "cmpordpd\0" "\x07" "cmpeqss\0" \ +"\x07" "cmpltss\0" "\x07" "cmpless\0" "\x0a" "cmpunordss\0" "\x08" "cmpneqss\0" \ +"\x08" "cmpnltss\0" "\x08" "cmpnless\0" "\x08" "cmpordss\0" "\x07" "cmpeqsd\0" \ +"\x07" "cmpltsd\0" "\x07" "cmplesd\0" "\x0a" "cmpunordsd\0" "\x08" "cmpneqsd\0" \ +"\x08" "cmpnltsd\0" "\x08" "cmpnlesd\0" "\x08" "cmpordsd\0" "\x08" "vcmpeqps\0" \ +"\x08" "vcmpltps\0" "\x08" "vcmpleps\0" "\x0b" "vcmpunordps\0" "\x09" "vcmpneqps\0" \ +"\x09" "vcmpnltps\0" "\x09" "vcmpnleps\0" "\x09" "vcmpordps\0" "\x0b" "vcmpeq_uqps\0" \ +"\x09" "vcmpngeps\0" "\x09" "vcmpngtps\0" "\x0b" "vcmpfalseps\0" "\x0c" "vcmpneq_oqps\0" \ +"\x08" "vcmpgeps\0" "\x08" "vcmpgtps\0" "\x0a" "vcmptrueps\0" "\x0b" "vcmpeq_osps\0" \ +"\x0b" "vcmplt_oqps\0" "\x0b" "vcmple_oqps\0" "\x0d" "vcmpunord_sps\0" \ +"\x0c" "vcmpneq_usps\0" "\x0c" "vcmpnlt_uqps\0" "\x0c" "vcmpnle_uqps\0" \ +"\x0b" "vcmpord_sps\0" "\x0b" "vcmpeq_usps\0" "\x0c" "vcmpnge_uqps\0" \ +"\x0c" "vcmpngt_uqps\0" "\x0e" "vcmpfalse_osps\0" "\x0c" "vcmpneq_osps\0" \ +"\x0b" "vcmpge_oqps\0" "\x0b" "vcmpgt_oqps\0" "\x0d" "vcmptrue_usps\0" \ +"\x08" "vcmpeqpd\0" "\x08" "vcmpltpd\0" "\x08" "vcmplepd\0" "\x0b" "vcmpunordpd\0" \ +"\x09" "vcmpneqpd\0" "\x09" "vcmpnltpd\0" "\x09" "vcmpnlepd\0" "\x09" "vcmpordpd\0" \ +"\x0b" "vcmpeq_uqpd\0" "\x09" "vcmpngepd\0" "\x09" "vcmpngtpd\0" "\x0b" "vcmpfalsepd\0" \ +"\x0c" "vcmpneq_oqpd\0" "\x08" "vcmpgepd\0" "\x08" "vcmpgtpd\0" "\x0a" "vcmptruepd\0" \ +"\x0b" "vcmpeq_ospd\0" "\x0b" "vcmplt_oqpd\0" "\x0b" "vcmple_oqpd\0" \ +"\x0d" "vcmpunord_spd\0" "\x0c" "vcmpneq_uspd\0" "\x0c" "vcmpnlt_uqpd\0" \ +"\x0c" "vcmpnle_uqpd\0" "\x0b" "vcmpord_spd\0" "\x0b" "vcmpeq_uspd\0" \ +"\x0c" "vcmpnge_uqpd\0" "\x0c" "vcmpngt_uqpd\0" "\x0e" "vcmpfalse_ospd\0" \ +"\x0c" "vcmpneq_ospd\0" "\x0b" "vcmpge_oqpd\0" "\x0b" "vcmpgt_oqpd\0" \ +"\x0d" "vcmptrue_uspd\0" "\x08" "vcmpeqss\0" "\x08" "vcmpltss\0" "\x08" "vcmpless\0" \ +"\x0b" "vcmpunordss\0" "\x09" "vcmpneqss\0" "\x09" "vcmpnltss\0" "\x09" "vcmpnless\0" \ +"\x09" "vcmpordss\0" "\x0b" "vcmpeq_uqss\0" "\x09" "vcmpngess\0" "\x09" "vcmpngtss\0" \ +"\x0b" "vcmpfalsess\0" "\x0c" "vcmpneq_oqss\0" "\x08" "vcmpgess\0" "\x08" "vcmpgtss\0" \ +"\x0a" "vcmptruess\0" "\x0b" "vcmpeq_osss\0" "\x0b" "vcmplt_oqss\0" "\x0b" "vcmple_oqss\0" \ +"\x0d" "vcmpunord_sss\0" "\x0c" "vcmpneq_usss\0" "\x0c" "vcmpnlt_uqss\0" \ +"\x0c" "vcmpnle_uqss\0" "\x0b" "vcmpord_sss\0" "\x0b" "vcmpeq_usss\0" \ +"\x0c" "vcmpnge_uqss\0" "\x0c" "vcmpngt_uqss\0" "\x0e" "vcmpfalse_osss\0" \ +"\x0c" "vcmpneq_osss\0" "\x0b" "vcmpge_oqss\0" "\x0b" "vcmpgt_oqss\0" \ +"\x0d" "vcmptrue_usss\0" "\x08" "vcmpeqsd\0" "\x08" "vcmpltsd\0" "\x08" "vcmplesd\0" \ +"\x0b" "vcmpunordsd\0" "\x09" "vcmpneqsd\0" "\x09" "vcmpnltsd\0" "\x09" "vcmpnlesd\0" \ +"\x09" "vcmpordsd\0" "\x0b" "vcmpeq_uqsd\0" "\x09" "vcmpngesd\0" "\x09" "vcmpngtsd\0" \ +"\x0b" "vcmpfalsesd\0" "\x0c" "vcmpneq_oqsd\0" "\x08" "vcmpgesd\0" "\x08" "vcmpgtsd\0" \ +"\x0a" "vcmptruesd\0" "\x0b" "vcmpeq_ossd\0" "\x0b" "vcmplt_oqsd\0" "\x0b" "vcmple_oqsd\0" \ +"\x0d" "vcmpunord_ssd\0" "\x0c" "vcmpneq_ussd\0" "\x0c" "vcmpnlt_uqsd\0" \ +"\x0c" "vcmpnle_uqsd\0" "\x0b" "vcmpord_ssd\0" "\x0b" "vcmpeq_ussd\0" \ +"\x0c" "vcmpnge_uqsd\0" "\x0c" "vcmpngt_uqsd\0" "\x0e" "vcmpfalse_ossd\0" \ +"\x0c" "vcmpneq_ossd\0" "\x0b" "vcmpge_oqsd\0" "\x0b" "vcmpgt_oqsd\0" \ +"\x0d" "vcmptrue_ussd\0" "\x06" "pinsrw\0" "\x07" "vpinsrw\0" "\x06" "pextrw\0" \ +"\x07" "vpextrw\0" "\x06" "shufps\0" "\x06" "shufpd\0" "\x07" "vshufps\0" \ +"\x07" "vshufpd\0" "\x09" "cmpxchg8b\0" "\x0a" "cmpxchg16b\0" "\x07" "vmptrst\0" \ +"\x08" "addsubpd\0" "\x08" "addsubps\0" "\x09" "vaddsubpd\0" "\x09" "vaddsubps\0" \ +"\x05" "psrlw\0" "\x06" "vpsrlw\0" "\x05" "psrld\0" "\x06" "vpsrld\0" \ +"\x05" "psrlq\0" "\x06" "vpsrlq\0" "\x05" "paddq\0" "\x06" "vpaddq\0" \ +"\x06" "pmullw\0" "\x07" "vpmullw\0" "\x07" "movq2dq\0" "\x07" "movdq2q\0" \ +"\x08" "pmovmskb\0" "\x09" "vpmovmskb\0" "\x07" "psubusb\0" "\x08" "vpsubusb\0" \ +"\x07" "psubusw\0" "\x08" "vpsubusw\0" "\x06" "pminub\0" "\x07" "vpminub\0" \ +"\x04" "pand\0" "\x05" "vpand\0" "\x07" "paddusb\0" "\x08" "vpaddusw\0" \ +"\x07" "paddusw\0" "\x06" "pmaxub\0" "\x07" "vpmaxub\0" "\x05" "pandn\0" \ +"\x06" "vpandn\0" "\x05" "pavgb\0" "\x06" "vpavgb\0" "\x05" "psraw\0" \ +"\x06" "vpsraw\0" "\x05" "psrad\0" "\x06" "vpsrad\0" "\x05" "pavgw\0" \ +"\x06" "vpavgw\0" "\x07" "pmulhuw\0" "\x08" "vpmulhuw\0" "\x06" "pmulhw\0" \ +"\x07" "vpmulhw\0" "\x09" "cvttpd2dq\0" "\x08" "cvtdq2pd\0" "\x08" "cvtpd2dq\0" \ +"\x0a" "vcvttpd2dq\0" "\x09" "vcvtdq2pd\0" "\x09" "vcvtpd2dq\0" "\x06" "movntq\0" \ +"\x07" "movntdq\0" "\x08" "vmovntdq\0" "\x06" "psubsb\0" "\x07" "vpsubsb\0" \ +"\x06" "psubsw\0" "\x07" "vpsubsw\0" "\x06" "pminsw\0" "\x07" "vpminsw\0" \ +"\x03" "por\0" "\x04" "vpor\0" "\x06" "paddsb\0" "\x07" "vpaddsb\0" \ +"\x06" "paddsw\0" "\x07" "vpaddsw\0" "\x06" "pmaxsw\0" "\x07" "vpmaxsw\0" \ +"\x04" "pxor\0" "\x05" "vpxor\0" "\x05" "lddqu\0" "\x06" "vlddqu\0" \ +"\x05" "psllw\0" "\x06" "vpsllw\0" "\x05" "pslld\0" "\x06" "vpslld\0" \ +"\x05" "psllq\0" "\x06" "vpsllq\0" "\x07" "pmuludq\0" "\x08" "vpmuludq\0" \ +"\x07" "pmaddwd\0" "\x08" "vpmaddwd\0" "\x06" "psadbw\0" "\x07" "vpsadbw\0" \ +"\x08" "maskmovq\0" "\x0a" "maskmovdqu\0" "\x0b" "vmaskmovdqu\0" "\x05" "psubb\0" \ +"\x06" "vpsubb\0" "\x05" "psubw\0" "\x06" "vpsubw\0" "\x05" "psubd\0" \ +"\x06" "vpsubd\0" "\x05" "psubq\0" "\x06" "vpsubq\0" "\x05" "paddb\0" \ +"\x06" "vpaddb\0" "\x05" "paddw\0" "\x06" "vpaddw\0" "\x05" "paddd\0" \ +"\x06" "vpaddd\0" "\x07" "fnstenv\0" "\x06" "fstenv\0" "\x06" "fnstcw\0" \ +"\x05" "fstcw\0" "\x06" "fnclex\0" "\x05" "fclex\0" "\x06" "fninit\0" \ +"\x05" "finit\0" "\x06" "fnsave\0" "\x05" "fsave\0" "\x06" "fnstsw\0" \ +"\x05" "fstsw\0" "\x06" "pshufb\0" "\x07" "vpshufb\0" "\x06" "phaddw\0" \ +"\x07" "vphaddw\0" "\x06" "phaddd\0" "\x07" "vphaddd\0" "\x07" "phaddsw\0" \ +"\x08" "vphaddsw\0" "\x09" "pmaddubsw\0" "\x0a" "vpmaddubsw\0" "\x06" "phsubw\0" \ +"\x07" "vphsubw\0" "\x06" "phsubd\0" "\x07" "vphsubd\0" "\x07" "phsubsw\0" \ +"\x08" "vphsubsw\0" "\x06" "psignb\0" "\x07" "vpsignb\0" "\x06" "psignw\0" \ +"\x07" "vpsignw\0" "\x06" "psignd\0" "\x07" "vpsignd\0" "\x08" "pmulhrsw\0" \ +"\x09" "vpmulhrsw\0" "\x09" "vpermilps\0" "\x09" "vpermilpd\0" "\x07" "vtestps\0" \ +"\x07" "vtestpd\0" "\x08" "pblendvb\0" "\x08" "blendvps\0" "\x08" "blendvpd\0" \ +"\x05" "ptest\0" "\x06" "vptest\0" "\x0c" "vbroadcastss\0" "\x0c" "vbroadcastsd\0" \ +"\x0e" "vbroadcastf128\0" "\x05" "pabsb\0" "\x06" "vpabsb\0" "\x05" "pabsw\0" \ +"\x06" "vpabsw\0" "\x05" "pabsd\0" "\x06" "vpabsd\0" "\x08" "pmovsxbw\0" \ +"\x09" "vpmovsxbw\0" "\x08" "pmovsxbd\0" "\x09" "vpmovsxbd\0" "\x08" "pmovsxbq\0" \ +"\x09" "vpmovsxbq\0" "\x08" "pmovsxwd\0" "\x09" "vpmovsxwd\0" "\x08" "pmovsxwq\0" \ +"\x09" "vpmovsxwq\0" "\x08" "pmovsxdq\0" "\x09" "vpmovsxdq\0" "\x06" "pmuldq\0" \ +"\x07" "vpmuldq\0" "\x07" "pcmpeqq\0" "\x08" "vpcmpeqq\0" "\x08" "movntdqa\0" \ +"\x09" "vmovntdqa\0" "\x08" "packusdw\0" "\x09" "vpackusdw\0" "\x0a" "vmaskmovps\0" \ +"\x0a" "vmaskmovpd\0" "\x08" "pmovzxbw\0" "\x09" "vpmovzxbw\0" "\x08" "pmovzxbd\0" \ +"\x09" "vpmovzxbd\0" "\x08" "pmovzxbq\0" "\x09" "vpmovzxbq\0" "\x08" "pmovzxwd\0" \ +"\x09" "vpmovzxwd\0" "\x08" "pmovzxwq\0" "\x09" "vpmovzxwq\0" "\x08" "pmovzxdq\0" \ +"\x09" "vpmovzxdq\0" "\x07" "pcmpgtq\0" "\x08" "vpcmpgtq\0" "\x06" "pminsb\0" \ +"\x07" "vpminsb\0" "\x06" "pminsd\0" "\x07" "vpminsd\0" "\x06" "pminuw\0" \ +"\x07" "vpminuw\0" "\x06" "pminud\0" "\x07" "vpminud\0" "\x06" "pmaxsb\0" \ +"\x07" "vpmaxsb\0" "\x06" "pmaxsd\0" "\x07" "vpmaxsd\0" "\x06" "pmaxuw\0" \ +"\x07" "vpmaxuw\0" "\x06" "pmaxud\0" "\x07" "vpmaxud\0" "\x06" "pmulld\0" \ +"\x07" "vpmulld\0" "\x0a" "phminposuw\0" "\x0b" "vphminposuw\0" "\x06" "invept\0" \ +"\x07" "invvpid\0" "\x07" "invpcid\0" "\x0e" "vfmaddsub132ps\0" "\x0e" "vfmaddsub132pd\0" \ +"\x0e" "vfmsubadd132ps\0" "\x0e" "vfmsubadd132pd\0" "\x0b" "vfmadd132ps\0" \ +"\x0b" "vfmadd132pd\0" "\x0b" "vfmadd132ss\0" "\x0b" "vfmadd132sd\0" \ +"\x0b" "vfmsub132ps\0" "\x0b" "vfmsub132pd\0" "\x0b" "vfmsub132ss\0" \ +"\x0b" "vfmsub132sd\0" "\x0c" "vfnmadd132ps\0" "\x0c" "vfnmadd132pd\0" \ +"\x0c" "vfnmadd132ss\0" "\x0c" "vfnmadd132sd\0" "\x0c" "vfnmsub132ps\0" \ +"\x0c" "vfnmsub132pd\0" "\x0c" "vfnmsub132ss\0" "\x0c" "vfnmsub132sd\0" \ +"\x0e" "vfmaddsub213ps\0" "\x0e" "vfmaddsub213pd\0" "\x0e" "vfmsubadd213ps\0" \ +"\x0e" "vfmsubadd213pd\0" "\x0b" "vfmadd213ps\0" "\x0b" "vfmadd213pd\0" \ +"\x0b" "vfmadd213ss\0" "\x0b" "vfmadd213sd\0" "\x0b" "vfmsub213ps\0" \ +"\x0b" "vfmsub213pd\0" "\x0b" "vfmsub213ss\0" "\x0b" "vfmsub213sd\0" \ +"\x0c" "vfnmadd213ps\0" "\x0c" "vfnmadd213pd\0" "\x0c" "vfnmadd213ss\0" \ +"\x0c" "vfnmadd213sd\0" "\x0c" "vfnmsub213ps\0" "\x0c" "vfnmsub213pd\0" \ +"\x0c" "vfnmsub213ss\0" "\x0c" "vfnmsub213sd\0" "\x0e" "vfmaddsub231ps\0" \ +"\x0e" "vfmaddsub231pd\0" "\x0e" "vfmsubadd231ps\0" "\x0e" "vfmsubadd231pd\0" \ +"\x0b" "vfmadd231ps\0" "\x0b" "vfmadd231pd\0" "\x0b" "vfmadd231ss\0" \ +"\x0b" "vfmadd231sd\0" "\x0b" "vfmsub231ps\0" "\x0b" "vfmsub231pd\0" \ +"\x0b" "vfmsub231ss\0" "\x0b" "vfmsub231sd\0" "\x0c" "vfnmadd231ps\0" \ +"\x0c" "vfnmadd231pd\0" "\x0c" "vfnmadd231ss\0" "\x0c" "vfnmadd231sd\0" \ +"\x0c" "vfnmsub231ps\0" "\x0c" "vfnmsub231pd\0" "\x0c" "vfnmsub231ss\0" \ +"\x0c" "vfnmsub231sd\0" "\x06" "aesimc\0" "\x07" "vaesimc\0" "\x06" "aesenc\0" \ +"\x07" "vaesenc\0" "\x0a" "aesenclast\0" "\x0b" "vaesenclast\0" "\x06" "aesdec\0" \ +"\x07" "vaesdec\0" "\x0a" "aesdeclast\0" "\x0b" "vaesdeclast\0" "\x05" "movbe\0" \ +"\x05" "crc32\0" "\x0a" "vperm2f128\0" "\x07" "roundps\0" "\x08" "vroundps\0" \ +"\x07" "roundpd\0" "\x08" "vroundpd\0" "\x07" "roundss\0" "\x08" "vroundss\0" \ +"\x07" "roundsd\0" "\x08" "vroundsd\0" "\x07" "blendps\0" "\x08" "vblendps\0" \ +"\x07" "blendpd\0" "\x08" "vblendpd\0" "\x07" "pblendw\0" "\x08" "vpblendw\0" \ +"\x07" "palignr\0" "\x08" "vpalignr\0" "\x06" "pextrb\0" "\x07" "vpextrb\0" \ +"\x06" "pextrd\0" "\x06" "pextrq\0" "\x07" "vpextrd\0" "\x07" "vpextrq\0" \ +"\x09" "extractps\0" "\x0a" "vextractps\0" "\x0b" "vinsertf128\0" "\x0c" "vextractf128\0" \ +"\x06" "pinsrb\0" "\x07" "vpinsrb\0" "\x08" "insertps\0" "\x09" "vinsertps\0" \ +"\x06" "pinsrd\0" "\x06" "pinsrq\0" "\x07" "vpinsrd\0" "\x07" "vpinsrq\0" \ +"\x04" "dpps\0" "\x05" "vdpps\0" "\x04" "dppd\0" "\x05" "vdppd\0" "\x07" "mpsadbw\0" \ +"\x08" "vmpsadbw\0" "\x09" "pclmulqdq\0" "\x0a" "vpclmulqdq\0" "\x09" "vblendvps\0" \ +"\x09" "vblendvpd\0" "\x09" "vpblendvb\0" "\x09" "pcmpestrm\0" "\x0a" "vpcmpestrm\0" \ +"\x09" "pcmpestri\0" "\x0a" "vpcmpestri\0" "\x09" "pcmpistrm\0" "\x0a" "vpcmpistrm\0" \ +"\x09" "pcmpistri\0" "\x0a" "vpcmpistri\0" "\x0f" "aeskeygenassist\0" \ +"\x10" "vaeskeygenassist\0" "\x06" "psrldq\0" "\x07" "vpsrldq\0" "\x06" "pslldq\0" \ +"\x07" "vpslldq\0" "\x06" "fxsave\0" "\x08" "fxsave64\0" "\x08" "rdfsbase\0" \ +"\x07" "fxrstor\0" "\x09" "fxrstor64\0" "\x08" "rdgsbase\0" "\x07" "ldmxcsr\0" \ +"\x08" "wrfsbase\0" "\x08" "vldmxcsr\0" "\x07" "stmxcsr\0" "\x08" "wrgsbase\0" \ +"\x08" "vstmxcsr\0" "\x07" "vmptrld\0" "\x07" "vmclear\0" "\x05" "vmxon\0" \ +"\x06" "movsxd\0" "\x05" "pause\0" "\x04" "wait\0" "\x06" "rdrand\0" \ +"\x06" "_3dnow\0" \ +"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; /* Sentinel mnemonic. */ const _WRegister _REGISTERS[] = { - { 3, "rax" }, { 3, "rcx" }, { 3, "rdx" }, { 3, "rbx" }, { 3, "rsp" }, { 3, "rbp" }, { 3, "rsi" }, { 3, "rdi" }, { 2, "r8" }, { 2, "r9" }, { 3, "r10" }, { 3, "r11" }, { 3, "r12" }, { 3, "r13" }, { 3, "r14" }, { 3, "r15" }, - { 3, "eax" }, { 3, "ecx" }, { 3, "edx" }, { 3, "ebx" }, { 3, "esp" }, { 3, "ebp" }, { 3, "esi" }, { 3, "edi" }, { 3, "r8d" }, { 3, "r9d" }, { 4, "r10d" }, { 4, "r11d" }, { 4, "r12d" }, { 4, "r13d" }, { 4, "r14d" }, { 4, "r15d" }, - { 2, "ax" }, { 2, "cx" }, { 2, "dx" }, { 2, "bx" }, { 2, "sp" }, { 2, "bp" }, { 2, "si" }, { 2, "di" }, { 3, "r8w" }, { 3, "r9w" }, { 4, "r10w" }, { 4, "r11w" }, { 4, "r12w" }, { 4, "r13w" }, { 4, "r14w" }, { 4, "r15w" }, - { 2, "al" }, { 2, "cl" }, { 2, "dl" }, { 2, "bl" }, { 2, "ah" }, { 2, "ch" }, { 2, "dh" }, { 2, "bh" }, { 3, "r8b" }, { 3, "r9b" }, { 4, "r10b" }, { 4, "r11b" }, { 4, "r12b" }, { 4, "r13b" }, { 4, "r14b" }, { 4, "r15b" }, - { 3, "spl" }, { 3, "bpl" }, { 3, "sil" }, { 3, "dil" }, - { 2, "es" }, { 2, "cs" }, { 2, "ss" }, { 2, "ds" }, { 2, "fs" }, { 2, "gs" }, - { 3, "rip" }, - { 3, "st0" }, { 3, "st1" }, { 3, "st2" }, { 3, "st3" }, { 3, "st4" }, { 3, "st5" }, { 3, "st6" }, { 3, "st7" }, - { 3, "mm0" }, { 3, "mm1" }, { 3, "mm2" }, { 3, "mm3" }, { 3, "mm4" }, { 3, "mm5" }, { 3, "mm6" }, { 3, "mm7" }, - { 4, "xmm0" }, { 4, "xmm1" }, { 4, "xmm2" }, { 4, "xmm3" }, { 4, "xmm4" }, { 4, "xmm5" }, { 4, "xmm6" }, { 4, "xmm7" }, { 4, "xmm8" }, { 4, "xmm9" }, { 5, "xmm10" }, { 5, "xmm11" }, { 5, "xmm12" }, { 5, "xmm13" }, { 5, "xmm14" }, { 5, "xmm15" }, - { 4, "ymm0" }, { 4, "ymm1" }, { 4, "ymm2" }, { 4, "ymm3" }, { 4, "ymm4" }, { 4, "ymm5" }, { 4, "ymm6" }, { 4, "ymm7" }, { 4, "ymm8" }, { 4, "ymm9" }, { 5, "ymm10" }, { 5, "ymm11" }, { 5, "ymm12" }, { 5, "ymm13" }, { 5, "ymm14" }, { 5, "ymm15" }, - { 3, "cr0" }, { 0, "" }, { 3, "cr2" }, { 3, "cr3" }, { 3, "cr4" }, { 0, "" }, { 0, "" }, { 0, "" }, { 3, "cr8" }, - { 3, "dr0" }, { 3, "dr1" }, { 3, "dr2" }, { 3, "dr3" }, { 0, "" }, { 0, "" }, { 3, "dr6" }, { 3, "dr7" } + {3, "rax"}, {3, "rcx"}, {3, "rdx"}, {3, "rbx"}, {3, "rsp"}, {3, "rbp"}, {3, "rsi"}, {3, "rdi"}, {2, "r8"}, {2, "r9"}, {3, "r10"}, {3, "r11"}, {3, "r12"}, {3, "r13"}, {3, "r14"}, {3, "r15"}, + {3, "eax"}, {3, "ecx"}, {3, "edx"}, {3, "ebx"}, {3, "esp"}, {3, "ebp"}, {3, "esi"}, {3, "edi"}, {3, "r8d"}, {3, "r9d"}, {4, "r10d"}, {4, "r11d"}, {4, "r12d"}, {4, "r13d"}, {4, "r14d"}, {4, "r15d"}, + {2, "ax"}, {2, "cx"}, {2, "dx"}, {2, "bx"}, {2, "sp"}, {2, "bp"}, {2, "si"}, {2, "di"}, {3, "r8w"}, {3, "r9w"}, {4, "r10w"}, {4, "r11w"}, {4, "r12w"}, {4, "r13w"}, {4, "r14w"}, {4, "r15w"}, + {2, "al"}, {2, "cl"}, {2, "dl"}, {2, "bl"}, {2, "ah"}, {2, "ch"}, {2, "dh"}, {2, "bh"}, {3, "r8b"}, {3, "r9b"}, {4, "r10b"}, {4, "r11b"}, {4, "r12b"}, {4, "r13b"}, {4, "r14b"}, {4, "r15b"}, + {3, "spl"}, {3, "bpl"}, {3, "sil"}, {3, "dil"}, + {2, "es"}, {2, "cs"}, {2, "ss"}, {2, "ds"}, {2, "fs"}, {2, "gs"}, + {3, "rip"}, + {3, "st0"}, {3, "st1"}, {3, "st2"}, {3, "st3"}, {3, "st4"}, {3, "st5"}, {3, "st6"}, {3, "st7"}, + {3, "mm0"}, {3, "mm1"}, {3, "mm2"}, {3, "mm3"}, {3, "mm4"}, {3, "mm5"}, {3, "mm6"}, {3, "mm7"}, + {4, "xmm0"}, {4, "xmm1"}, {4, "xmm2"}, {4, "xmm3"}, {4, "xmm4"}, {4, "xmm5"}, {4, "xmm6"}, {4, "xmm7"}, {4, "xmm8"}, {4, "xmm9"}, {5, "xmm10"}, {5, "xmm11"}, {5, "xmm12"}, {5, "xmm13"}, {5, "xmm14"}, {5, "xmm15"}, + {4, "ymm0"}, {4, "ymm1"}, {4, "ymm2"}, {4, "ymm3"}, {4, "ymm4"}, {4, "ymm5"}, {4, "ymm6"}, {4, "ymm7"}, {4, "ymm8"}, {4, "ymm9"}, {5, "ymm10"}, {5, "ymm11"}, {5, "ymm12"}, {5, "ymm13"}, {5, "ymm14"}, {5, "ymm15"}, + {3, "cr0"}, {0, ""}, {3, "cr2"}, {3, "cr3"}, {3, "cr4"}, {0, ""}, {0, ""}, {0, ""}, {3, "cr8"}, + {3, "dr0"}, {3, "dr1"}, {3, "dr2"}, {3, "dr3"}, {0, ""}, {0, ""}, {3, "dr6"}, {3, "dr7"}, + {0, ""} /* There must be an empty last reg, see strcat_WSR. */ }; #endif /* DISTORM_LIGHT */ diff --git a/NativeCore/Dependencies/distorm/src/operands.c b/NativeCore/Dependencies/distorm/src/operands.c index 506780c4..b5da260b 100644 --- a/NativeCore/Dependencies/distorm/src/operands.c +++ b/NativeCore/Dependencies/distorm/src/operands.c @@ -4,7 +4,7 @@ operands.c diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -23,7 +23,7 @@ uint32_t _REGISTERTORCLASS[] = /* Based on _RegisterType enumeration! */ RM_AX, RM_CX, RM_DX, RM_BX, RM_SP, RM_BP, RM_SI, RM_DI, RM_R8, RM_R9, RM_R10, RM_R11, RM_R12, RM_R13, RM_R14, RM_R15, RM_AX, RM_CX, RM_DX, RM_BX, RM_AX, RM_CX, RM_DX, RM_BX, RM_R8, RM_R9, RM_R10, RM_R11, RM_R12, RM_R13, RM_R14, RM_R15, RM_SP, RM_BP, RM_SI, RM_DI, - 0, 0, 0, 0, 0, 0, + RM_SEG, RM_SEG, RM_SEG, RM_SEG, RM_SEG, RM_SEG, 0, RM_FPU, RM_FPU, RM_FPU, RM_FPU, RM_FPU, RM_FPU, RM_FPU, RM_FPU, RM_MMX, RM_MMX, RM_MMX, RM_MMX, RM_MMX, RM_MMX, RM_MMX, RM_MMX, @@ -33,60 +33,96 @@ uint32_t _REGISTERTORCLASS[] = /* Based on _RegisterType enumeration! */ RM_DR, RM_DR, RM_DR, RM_DR, 0, 0, RM_DR, RM_DR }; -typedef enum {OPERAND_SIZE_NONE = 0, OPERAND_SIZE8, OPERAND_SIZE16, OPERAND_SIZE32, OPERAND_SIZE64, OPERAND_SIZE80, OPERAND_SIZE128, OPERAND_SIZE256} _OperandSizeType; -static uint16_t _OPSIZETOINT[] = {0, 8, 16, 32, 64, 80, 128, 256}; - /* A helper function to fix the 8 bits register if REX is used (to support SIL, DIL, etc). */ -static unsigned int _FASTCALL_ operands_fix_8bit_rex_base(unsigned int reg) +_INLINE_ unsigned int _FASTCALL_ operands_fix_8bit_rex_base(unsigned int reg) { if ((reg >= 4) && (reg < 8)) return reg + REGS8_REX_BASE - 4; return reg + REGS8_BASE; } /* A helper function to set operand's type and size. */ -static void _FASTCALL_ operands_set_ts(_Operand* op, _OperandType type, uint16_t size) +_INLINE_ void operands_set_ts(_Operand* op, _OperandType type, uint16_t size) { op->type = type; op->size = size; } /* A helper function to set operand's type, size and index. */ -static void _FASTCALL_ operands_set_tsi(_Operand* op, _OperandType type, uint16_t size, unsigned int index) +_INLINE_ void operands_set_tsi(_DInst* di, _Operand* op, _OperandType type, uint16_t size, unsigned int index) { op->type = type; op->index = (uint8_t)index; op->size = size; + di->usedRegistersMask |= _REGISTERTORCLASS[index]; } /* A helper function to read an unsigned integer from the stream safely. */ -static int _FASTCALL_ read_stream_safe_uint(_CodeInfo* ci, void* result, unsigned int size) +_INLINE_ int read_stream_safe_uint8(_CodeInfo* ci, void* result) { - ci->codeLen -= size; + ci->codeLen -= 1; if (ci->codeLen < 0) return FALSE; - switch (size) - { - case 1: *(uint8_t*)result = *(uint8_t*)ci->code; break; - case 2: *(uint16_t*)result = RUSHORT(ci->code); break; - case 4: *(uint32_t*)result = RULONG(ci->code); break; - case 8: *(uint64_t*)result = RULLONG(ci->code); break; - } - ci->code += size; + *(uint8_t*)result = *(uint8_t*)ci->code; + ci->code += 1; + return TRUE; +} + +/* A helper function to read an unsigned integer from the stream safely. */ +_INLINE_ int read_stream_safe_uint16(_CodeInfo* ci, void* result) +{ + ci->codeLen -= 2; + if (ci->codeLen < 0) return FALSE; + *(uint16_t*)result = RUSHORT(ci->code); + ci->code += 2; + return TRUE; +} + +/* A helper function to read an unsigned integer from the stream safely. */ +_INLINE_ int read_stream_safe_uint32(_CodeInfo* ci, void* result) +{ + ci->codeLen -= 4; + if (ci->codeLen < 0) return FALSE; + *(uint32_t*)result = RULONG(ci->code); + ci->code += 4; + return TRUE; +} + +/* A helper function to read an unsigned integer from the stream safely. */ +_INLINE_ int read_stream_safe_uint64(_CodeInfo* ci, void* result) +{ + ci->codeLen -= 8; + if (ci->codeLen < 0) return FALSE; + *(uint64_t*)result = RULLONG(ci->code); + ci->code += 8; return TRUE; } /* A helper function to read a signed integer from the stream safely. */ -static int _FASTCALL_ read_stream_safe_sint(_CodeInfo* ci, int64_t* result, unsigned int size) +_INLINE_ int read_stream_safe_sint8(_CodeInfo* ci, int64_t* result) { - ci->codeLen -= size; + ci->codeLen -= 1; if (ci->codeLen < 0) return FALSE; - switch (size) - { - case 1: *result = *(int8_t*)ci->code; break; - case 2: *result = RSHORT(ci->code); break; - case 4: *result = RLONG(ci->code); break; - case 8: *result = RLLONG(ci->code); break; - } - ci->code += size; + *result = *(int8_t*)ci->code; + ci->code += 1; + return TRUE; +} + +/* A helper function to read a signed integer from the stream safely. */ +_INLINE_ int read_stream_safe_sint16(_CodeInfo* ci, int64_t* result) +{ + ci->codeLen -= 2; + if (ci->codeLen < 0) return FALSE; + *result = RSHORT(ci->code); + ci->code += 2; + return TRUE; +} + +/* A helper function to read a signed integer from the stream safely. */ +_INLINE_ int read_stream_safe_sint32(_CodeInfo* ci, int64_t* result) +{ + ci->codeLen -= 4; + if (ci->codeLen < 0) return FALSE; + *result = RLONG(ci->code); + ci->code += 4; return TRUE; } @@ -108,23 +144,20 @@ static int _FASTCALL_ read_stream_safe_sint(_CodeInfo* ci, int64_t* result, unsi * NOTE: base could specify None (no base register) if base==5 and mod==0, but then you also need DISP32. * } */ -static void operands_extract_sib(_DInst* di, _OperandNumberType opNum, +static void operands_extract_sib(_DInst* di, _PrefixState* ps, _DecodeType effAdrSz, - unsigned int sib, unsigned int mod) + unsigned int sib, unsigned int mod, _Operand* op) { - unsigned int scale = 0, index = 0, base = 0; + unsigned char scale, index, base; unsigned int vrex = ps->vrex; uint8_t* pIndex = NULL; - _Operand* op = &di->ops[opNum]; - /* * SIB bits: * |7---6-5----3-2---0| * |SCALE| INDEX| BASE| * |------------------| */ - scale = (sib >> 6) & 3; index = (sib >> 3) & 7; base = sib & 7; @@ -154,6 +187,8 @@ static void operands_extract_sib(_DInst* di, _OperandNumberType opNum, if (vrex & PREFIX_EX_B) ps->usedPrefixes |= INST_PRE_REX; *pIndex = effAdrSz == Decode64Bits ? REGS64_BASE : REGS32_BASE; *pIndex += (uint8_t)(base + ((vrex & PREFIX_EX_B) ? EX_GPR_BASE : 0)); + + if (di->base != R_NONE) di->usedRegistersMask |= _REGISTERTORCLASS[di->base]; } else if (mod != 0) { /* * if base == 5 then you have to decode according to MOD. @@ -166,6 +201,8 @@ static void operands_extract_sib(_DInst* di, _OperandNumberType opNum, if (vrex & PREFIX_EX_B) ps->usedPrefixes |= INST_PRE_REX; if (effAdrSz == Decode64Bits) *pIndex = REGS64_BASE + 5 + ((vrex & PREFIX_EX_B) ? EX_GPR_BASE : 0); else *pIndex = REGS32_BASE + 5 + ((vrex & PREFIX_EX_B) ? EX_GPR_BASE : 0); + + if (di->base != R_NONE) di->usedRegistersMask |= _REGISTERTORCLASS[di->base]; } else if (index == 4) { /* 32bits displacement only. */ op->type = O_DISP; @@ -173,6 +210,7 @@ static void operands_extract_sib(_DInst* di, _OperandNumberType opNum, } if (index != 4) { /* In 64 bits decoding mode, if index == R12, it's valid! */ + scale = (sib >> 6) & 3; if (effAdrSz == Decode64Bits) op->index = (uint8_t)(REGS64_BASE + index); else op->index = (uint8_t)(REGS32_BASE + index); di->scale = scale != 0 ? (1 << scale) : 0; @@ -191,70 +229,393 @@ static void operands_extract_sib(_DInst* di, _OperandNumberType opNum, * Some instructions force the use of RM16 or other specific types, so take it into account. */ -static int operands_extract_modrm(_CodeInfo* ci, - _DInst* di, _OpType type, - _OperandNumberType opNum, _PrefixState* ps, - _DecodeType effOpSz, _DecodeType effAdrSz, - int* lockableInstruction, unsigned int mod, unsigned int rm, - _iflags instFlags) +static int operands_extract_modrm(_CodeInfo* ci, _PrefixState* ps, _DInst* di, + _DecodeType effAdrSz, unsigned int mod, unsigned int rm, + _iflags instFlags, _Operand* op) { - unsigned int vrex = ps->vrex, sib = 0, base = 0; - _Operand* op = &di->ops[opNum]; - uint16_t size = 0; + unsigned char sib = 0, base = 0; - if (mod == 3) { - /* - * General-purpose register is handled the same way in 16/32/64 bits decoding modes. - * NOTE!! that we have to override the size of the register, since it was set earlier as Memory and not Register! - */ - op->type = O_REG; - /* Start with original size which was set earlier, some registers have same size of memory and depend on it. */ - size = op->size; - switch(type) + /* Memory indirection decoding ahead:) */ + + ps->usedPrefixes |= INST_PRE_ADDR_SIZE; + if ((instFlags & INST_PRE_LOCK) && (ps->decodedPrefixes & INST_PRE_LOCK)) { + ps->usedPrefixes |= INST_PRE_LOCK; + di->flags |= FLAG_LOCK; + } + + if (effAdrSz != Decode16Bits) { /* Decode32Bits or Decode64Bits! */ + /* Remember that from a 32/64 bits ModR/M byte a SIB byte could follow! */ + if ((rm == 5) && (mod == 0)) { + /* 5 is a special case - only 32 bits displacement, or RIP relative. */ + di->dispSize = 32; + if (!read_stream_safe_sint32(ci, (int64_t*)&di->disp)) return FALSE; + + /* Absolute address: */ + op->type = O_DISP; + + if (ci->dt == Decode64Bits) { + /* In 64 bits decoding mode depsite of the address size, a RIP-relative address it is. */ + op->type = O_SMEM; + op->index = R_RIP; + di->flags |= FLAG_RIP_RELATIVE; + } + + prefixes_use_segment(INST_PRE_DS, ps, ci->dt, di); + } + else { + if (rm == 4) { + /* 4 is a special case - SIB byte + disp8/32 follows! */ + /* Read SIB byte. */ + if (!read_stream_safe_uint8(ci, &sib)) return FALSE; + operands_extract_sib(di, ps, effAdrSz, sib, mod, op); + } + else { + op->type = O_SMEM; + if (ps->vrex & PREFIX_EX_B) { + ps->usedPrefixes |= INST_PRE_REX; + rm += EX_GPR_BASE; + } + + if (effAdrSz == Decode64Bits) op->index = (uint8_t)(REGS64_BASE + rm); + else op->index = (uint8_t)(REGS32_BASE + rm); + } + + if (mod == 1) { + di->dispSize = 8; + if (!read_stream_safe_sint8(ci, (int64_t*)&di->disp)) return FALSE; + } + else if ((mod == 2) || ((sib & 7) == 5)) { /* If there is no BASE, read DISP32! */ + di->dispSize = 32; + if (!read_stream_safe_sint32(ci, (int64_t*)&di->disp)) return FALSE; + } + + /* Get the base register. */ + base = op->index; + if (di->base != R_NONE) base = di->base; + else if (di->scale >= 2) base = 0; /* If it's only an index but got scale, it's still DS. */ + /* Default for EBP/ESP is SS segment. 64 bits mode ignores DS anyway. */ + if ((base == R_EBP) || (base == R_ESP)) prefixes_use_segment(INST_PRE_SS, ps, ci->dt, di); + else prefixes_use_segment(INST_PRE_DS, ps, ci->dt, di); + } + } + else { /* Decode16Bits */ + /* Decoding according to Table 2-1. (16 bits) */ + if ((mod == 0) && (rm == 6)) { + /* 6 is a special case - only 16 bits displacement. */ + op->type = O_DISP; + di->dispSize = 16; + if (!read_stream_safe_sint16(ci, (int64_t*)&di->disp)) return FALSE; + } + else { + /* + * Create the O_MEM for 16 bits indirection that requires 2 registers, E.G: [BS+SI]. + * or create O_SMEM for a single register indirection, E.G: [BP]. + */ + static uint8_t MODS[] = { R_BX, R_BX, R_BP, R_BP, R_SI, R_DI, R_BP, R_BX }; + static uint8_t MODS2[] = { R_SI, R_DI, R_SI, R_DI }; + if (rm < 4) { + op->type = O_MEM; + di->base = MODS[rm]; + di->usedRegistersMask |= _REGISTERTORCLASS[MODS[rm]]; + op->index = MODS2[rm]; + } + else { + op->type = O_SMEM; + op->index = MODS[rm]; + } + + if (mod == 1) { /* 8 bits displacement + indirection */ + di->dispSize = 8; + if (!read_stream_safe_sint8(ci, (int64_t*)&di->disp)) return FALSE; + } + else if (mod == 2) { /* 16 bits displacement + indirection */ + di->dispSize = 16; + if (!read_stream_safe_sint16(ci, (int64_t*)&di->disp)) return FALSE; + } + } + + if ((rm == 2) || (rm == 3) || ((rm == 6) && (mod != 0))) { + /* BP's default segment is SS, so ignore it. */ + prefixes_use_segment(INST_PRE_SS, ps, ci->dt, di); + } + else { + /* Ignore default DS segment. */ + prefixes_use_segment(INST_PRE_DS, ps, ci->dt, di); + } + } + + return TRUE; +} + + +/* + * This function is reponsible to textually format a required operand according to its type. + * It is vital to understand that there are other operands than what the ModR/M byte specifies. + + * Only by decoding the operands of an instruction which got a LOCK prefix, we could tell whether it may use the LOCK prefix. + * According to Intel, LOCK prefix must precede some specific instructions AND in their memory destination operand form (which means first operand). + * LOCK INC EAX, would generate an exception, but LOCK INC [EAX] is alright. + * Also LOCK ADD BX, [BP] would generate an exception. + + * Return code: + * TRUE - continue parsing the instruction and its operands, everything went right 'till now. + * FALSE - not enough bytes, or invalid operands. + */ + +int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, + _iflags instFlags, _OpType type, + unsigned int modrm, _PrefixState* ps, _DecodeType effOpSz, + _DecodeType effAdrSz, _Operand* op) +{ + int ret = 0; + unsigned int mod, reg, rm; + unsigned int size = 0; + + /* + * ModRM bits: + * |7-6-5--------3-2-0| + * |MOD|REG/OPCODE|RM | + * |------------------| + */ + /* mod = (modrm >> 6) & 3; */ /* Mode(register-indirection, disp8+reg+indirection, disp16+reg+indirection, general-purpose register) */ + /* reg = (modrm >> 3) & 7; */ /* Register(could be part of the opcode itself or general-purpose register) */ + /* rm = modrm & 7; */ /* Specifies which general-purpose register or disp+reg to use. */ + + /* -- Memory Indirection Operands (that cannot be a general purpose register) -- */ + if ((type >= OT_MEM) && (type <= OT_LMEM128_256)) { + /* All of the above types can't use a general-purpose register (a MOD of 3)!. */ + mod = (modrm >> 6) & 3; + + if (mod == 3) { + if (type == OT_MEM_OPT) { + /* Since the MEM is optional, only when mod != 3, then return true as if the operand was alright. */ + return TRUE; + } + return FALSE; + } + + switch (type) { - case OT_RFULL_M16: - case OT_RM_FULL: + case OT_MEM64_128: /* Used only by CMPXCHG8/16B. */ + if (effOpSz == Decode64Bits) { + ps->usedPrefixes |= INST_PRE_REX; + size = 128; + } + else size = 64; + break; + case OT_MEM32: size = 32; break; + case OT_MEM32_64: + /* Used by MOVNTI. Default size is 32bits, 64bits with REX. */ + if (effOpSz == Decode64Bits) { + ps->usedPrefixes |= INST_PRE_REX; + size = 64; + } + else size = 32; + break; + case OT_MEM64: size = 64; break; + case OT_MEM128: size = 128; break; + case OT_MEM16_FULL: /* The size indicates about the second item of the pair. */ switch (effOpSz) { case Decode16Bits: ps->usedPrefixes |= INST_PRE_OP_SIZE; - if (vrex & PREFIX_EX_B) { - ps->usedPrefixes |= INST_PRE_REX; - rm += EX_GPR_BASE; - } size = 16; - rm += REGS16_BASE; break; case Decode32Bits: ps->usedPrefixes |= INST_PRE_OP_SIZE; - if (vrex & PREFIX_EX_B) { - ps->usedPrefixes |= INST_PRE_REX; - rm += EX_GPR_BASE; - } size = 32; - rm += REGS32_BASE; break; case Decode64Bits: - /* A fix for SMSW RAX which use the REX prefix. */ - if (type == OT_RFULL_M16) ps->usedPrefixes |= INST_PRE_REX; - /* CALL NEAR/PUSH/POP defaults to 64 bits. --> INST_64BITS, REX isn't required, thus ignored anyways. */ - if (instFlags & INST_PRE_REX) ps->usedPrefixes |= INST_PRE_REX; - /* Include REX if used for REX.B. */ - if (vrex & PREFIX_EX_B) { - ps->usedPrefixes |= INST_PRE_REX; - rm += EX_GPR_BASE; - } + /* Mark usage of REX only if it was required. */ + if ((instFlags & (INST_64BITS | INST_PRE_REX)) == (INST_64BITS | INST_PRE_REX)) ps->usedPrefixes |= INST_PRE_REX; size = 64; - rm += REGS64_BASE; break; } break; + case OT_MEM16_3264: /* The size indicates about the second item of the pair. */ + if (ci->dt == Decode64Bits) size = 64; + else size = 32; + break; + case OT_FPUM16: size = 16; break; + case OT_FPUM32: size = 32; break; + case OT_FPUM64: size = 64; break; + case OT_FPUM80: size = 80; break; + case OT_LMEM128_256: + if (ps->vrex & PREFIX_EX_L) size = 256; + else size = 128; + break; + case OT_MEM_OPT: /* Here we know it's not optional. */ + case OT_MEM: size = 0; /* Size is unknown, but still handled. */ break; + default: return FALSE; + } + rm = modrm & 7; + ret = operands_extract_modrm(ci, ps, di, effAdrSz, mod, rm, instFlags, op); + op->size = (uint16_t)size; + if ((op->type == O_SMEM) || (op->type == O_MEM)) { + di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; + } + return ret; + } + + /* -- Memory Indirection Operands (that can be a register) -- */ + if ((type >= OT_RM8) && (type <= OT_LXMM64_128)) { + mod = (modrm >> 6) & 3; + if (mod != 3) { + switch (type) + { + case OT_RM_FULL: + ps->usedPrefixes |= INST_PRE_OP_SIZE; + /* PUSH/JMP/CALL are automatically promoted to 64 bits! */ + if (effOpSz == Decode32Bits) { + size = 32; + break; + } + else if (effOpSz == Decode64Bits) { + /* Mark usage of REX only if it was required. */ + if ((instFlags & INST_64BITS) == 0) ps->usedPrefixes |= INST_PRE_REX; + size = 64; + break; + } + /* FALL THROUGH BECAUSE dt==Decoded16Bits @-<----*/ + case OT_RM16: + /* If we got here not from OT_RM16, then the prefix was used. */ + if (type != OT_RM16) ps->usedPrefixes |= INST_PRE_OP_SIZE; + size = 16; + break; + case OT_RM32_64: + /* The default size is 32, which can be 64 with a REX only. */ + if (effOpSz == Decode64Bits) { + size = 64; + /* Mark REX prefix as used if non-promoted instruction. */ + if ((instFlags & (INST_64BITS | INST_PRE_REX)) == (INST_64BITS | INST_PRE_REX)) { + ps->usedPrefixes |= INST_PRE_REX; + } + } + else size = 32; + break; + case OT_RM16_32: + /* Ignore REX, it's either 32 or 16 bits RM. */ + if (ps->decodedPrefixes & INST_PRE_OP_SIZE) { + ps->usedPrefixes |= INST_PRE_OP_SIZE; + /* Assume: We are in 64bits when we have this operand used. */ + size = 16; + } + else size = 32; + break; + case OT_WXMM32_64: + case OT_WRM32_64: + if (ps->vrex & PREFIX_EX_W) size = 64; + else size = 32; + break; + case OT_YXMM64_256: + if (ps->vrex & PREFIX_EX_L) size = 256; + else size = 64; + break; + case OT_YXMM128_256: + if (ps->vrex & PREFIX_EX_L) size = 256; + else size = 128; + break; + case OT_LXMM64_128: + if (ps->vrex & PREFIX_EX_L) size = 128; + else size = 64; + break; + case OT_RFULL_M16: + ps->usedPrefixes |= INST_PRE_OP_SIZE; + size = 16; + break; + + case OT_RM8: + case OT_R32_M8: + case OT_R32_64_M8: + case OT_REG32_64_M8: + size = 8; + break; + + case OT_XMM16: + case OT_R32_M16: + case OT_R32_64_M16: + case OT_REG32_64_M16: + size = 16; + break; + + case OT_RM32: + case OT_MM32: + case OT_XMM32: + size = 32; + break; + + case OT_MM64: + case OT_XMM64: + size = 64; + break; + + case OT_XMM128: size = 128; break; + case OT_YMM256: size = 256; break; + default: return FALSE; + } + /* Fill size of memory dereference for operand. */ + rm = modrm & 7; + ret = operands_extract_modrm(ci, ps, di, effAdrSz, mod, rm, instFlags, op); + op->size = (uint16_t)size; + if ((op->type == O_SMEM) || (op->type == O_MEM)) { + di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; + } + return ret; + } + else { + /* + * General-purpose register is handled the same way in 16/32/64 bits decoding modes. + * NOTE!! that we have to override the size of the register, since it was set earlier as Memory and not Register! + */ + rm = modrm & 7; + size = 0; + switch (type) + { + case OT_RFULL_M16: + case OT_RM_FULL: + switch (effOpSz) + { + case Decode16Bits: + ps->usedPrefixes |= INST_PRE_OP_SIZE; + if (ps->vrex & PREFIX_EX_B) { + ps->usedPrefixes |= INST_PRE_REX; + rm += EX_GPR_BASE; + } + size = 16; + rm += REGS16_BASE; + break; + case Decode32Bits: + ps->usedPrefixes |= INST_PRE_OP_SIZE; + if (ps->vrex & PREFIX_EX_B) { + ps->usedPrefixes |= INST_PRE_REX; + rm += EX_GPR_BASE; + } + size = 32; + rm += REGS32_BASE; + break; + case Decode64Bits: + /* A fix for SMSW RAX which use the REX prefix. */ + if (type == OT_RFULL_M16) ps->usedPrefixes |= INST_PRE_REX; + /* CALL NEAR/PUSH/POP defaults to 64 bits. --> INST_64BITS, REX isn't required, thus ignored anyways. */ + if (instFlags & INST_PRE_REX) ps->usedPrefixes |= INST_PRE_REX; + /* Mark usage of REX only if it was required. */ + if ((instFlags & INST_64BITS) == 0) ps->usedPrefixes |= INST_PRE_REX; + /* Include REX if used for REX.B. */ + if (ps->vrex & PREFIX_EX_B) { + ps->usedPrefixes |= INST_PRE_REX; + rm += EX_GPR_BASE; + } + size = 64; + rm += REGS64_BASE; + break; + } + break; case OT_R32_64_M8: - /* FALL THROUGH, decode 32 or 64 bits register. */ + /* FALL THROUGH, decode 32 or 64 bits register. */ case OT_R32_64_M16: - /* FALL THROUGH, decode 32 or 64 bits register. */ + /* FALL THROUGH, decode 32 or 64 bits register. */ case OT_RM32_64: /* Take care specifically in MOVNTI/MOVD/CVT's instructions, making it _REG64 with REX or if they are promoted. */ - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; rm += EX_GPR_BASE; } @@ -265,17 +626,18 @@ static int operands_extract_modrm(_CodeInfo* ci, break; } /* Give a chance to REX.W. Because if it was a promoted instruction we don't care about REX.W anyways. */ - if (vrex & PREFIX_EX_W) { + if (ps->vrex & PREFIX_EX_W) { ps->usedPrefixes |= INST_PRE_REX; size = 64; rm += REGS64_BASE; - } else { + } + else { size = 32; rm += REGS32_BASE; } - break; + break; case OT_RM16_32: /* Used only with MOVZXD instruction to support 16 bits operand. */ - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; rm += EX_GPR_BASE; } @@ -284,412 +646,113 @@ static int operands_extract_modrm(_CodeInfo* ci, ps->usedPrefixes |= INST_PRE_OP_SIZE; size = 16; rm += REGS16_BASE; - } else { + } + else { size = 32; rm += REGS32_BASE; } - break; + break; case OT_RM16: - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; rm += EX_GPR_BASE; } rm += REGS16_BASE; - break; + size = 16; + break; case OT_RM8: if (ps->prefixExtType == PET_REX) { ps->usedPrefixes |= INST_PRE_REX; - rm = operands_fix_8bit_rex_base(rm + ((vrex & PREFIX_EX_B) ? EX_GPR_BASE : 0)); - } else rm += REGS8_BASE; - break; + rm = operands_fix_8bit_rex_base(rm + ((ps->vrex & PREFIX_EX_B) ? EX_GPR_BASE : 0)); + } + else rm += REGS8_BASE; + size = 8; + break; case OT_MM32: case OT_MM64: /* MMX doesn't support extended registers. */ size = 64; rm += MMXREGS_BASE; - break; + break; case OT_XMM16: case OT_XMM32: case OT_XMM64: case OT_XMM128: - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; rm += EX_GPR_BASE; } size = 128; rm += SSEREGS_BASE; - break; + break; case OT_RM32: case OT_R32_M8: case OT_R32_M16: - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; rm += EX_GPR_BASE; } size = 32; rm += REGS32_BASE; - break; + break; case OT_YMM256: - if (vrex & PREFIX_EX_B) rm += EX_GPR_BASE; + if (ps->vrex & PREFIX_EX_B) rm += EX_GPR_BASE; rm += AVXREGS_BASE; - break; + size = 256; + break; case OT_YXMM64_256: case OT_YXMM128_256: - if (vrex & PREFIX_EX_B) rm += EX_GPR_BASE; - if (vrex & PREFIX_EX_L) { + if (ps->vrex & PREFIX_EX_B) rm += EX_GPR_BASE; + if (ps->vrex & PREFIX_EX_L) { size = 256; rm += AVXREGS_BASE; - } else { + } + else { size = 128; rm += SSEREGS_BASE; } - break; + break; case OT_WXMM32_64: case OT_LXMM64_128: - if (vrex & PREFIX_EX_B) rm += EX_GPR_BASE; + if (ps->vrex & PREFIX_EX_B) rm += EX_GPR_BASE; size = 128; rm += SSEREGS_BASE; - break; + break; case OT_WRM32_64: case OT_REG32_64_M8: case OT_REG32_64_M16: - if (vrex & PREFIX_EX_B) rm += EX_GPR_BASE; - if (vrex & PREFIX_EX_W) { + if (ps->vrex & PREFIX_EX_B) rm += EX_GPR_BASE; + if (ps->vrex & PREFIX_EX_W) { size = 64; rm += REGS64_BASE; - } else { + } + else { size = 32; rm += REGS32_BASE; } - break; - - default: return FALSE; - } - op->size = size; - op->index = (uint8_t)rm; - return TRUE; - } - - /* Memory indirection decoding ahead:) */ - - ps->usedPrefixes |= INST_PRE_ADDR_SIZE; - if (lockableInstruction && (ps->decodedPrefixes & INST_PRE_LOCK)) *lockableInstruction = TRUE; - - if (effAdrSz == Decode16Bits) { - /* Decoding according to Table 2-1. (16 bits) */ - if ((mod == 0) && (rm == 6)) { - /* 6 is a special case - only 16 bits displacement. */ - op->type = O_DISP; - di->dispSize = 16; - if (!read_stream_safe_sint(ci, (int64_t*)&di->disp, sizeof(int16_t))) return FALSE; - } else { - /* - * Create the O_MEM for 16 bits indirection that requires 2 registers, E.G: [BS+SI]. - * or create O_SMEM for a single register indirection, E.G: [BP]. - */ - static uint8_t MODS[] = {R_BX, R_BX, R_BP, R_BP, R_SI, R_DI, R_BP, R_BX}; - static uint8_t MODS2[] = {R_SI, R_DI, R_SI, R_DI}; - if (rm < 4) { - op->type = O_MEM; - di->base = MODS[rm]; - op->index = MODS2[rm]; - } else { - op->type = O_SMEM; - op->index = MODS[rm]; - } - - if (mod == 1) { /* 8 bits displacement + indirection */ - di->dispSize = 8; - if (!read_stream_safe_sint(ci, (int64_t*)&di->disp, sizeof(int8_t))) return FALSE; - } else if (mod == 2) { /* 16 bits displacement + indirection */ - di->dispSize = 16; - if (!read_stream_safe_sint(ci, (int64_t*)&di->disp, sizeof(int16_t))) return FALSE; - } - } - - if ((rm == 2) || (rm == 3) || ((rm == 6) && (mod != 0))) { - /* BP's default segment is SS, so ignore it. */ - prefixes_use_segment(INST_PRE_SS, ps, ci->dt, di); - } else { - /* Ignore default DS segment. */ - prefixes_use_segment(INST_PRE_DS, ps, ci->dt, di); - } - } else { /* Decode32Bits or Decode64Bits! */ - /* Remember that from a 32/64 bits ModR/M byte a SIB byte could follow! */ - if ((mod == 0) && (rm == 5)) { - - /* 5 is a special case - only 32 bits displacement, or RIP relative. */ - di->dispSize = 32; - if (!read_stream_safe_sint(ci, (int64_t*)&di->disp, sizeof(int32_t))) return FALSE; - - if (ci->dt == Decode64Bits) { - /* In 64 bits decoding mode depsite of the address size, a RIP-relative address it is. */ - op->type = O_SMEM; - op->index = R_RIP; - di->flags |= FLAG_RIP_RELATIVE; - } else { - /* Absolute address: */ - op->type = O_DISP; - } - } else { - if (rm == 4) { - /* 4 is a special case - SIB byte + disp8/32 follows! */ - /* Read SIB byte. */ - if (!read_stream_safe_uint(ci, &sib, sizeof(int8_t))) return FALSE; - operands_extract_sib(di, opNum, ps, effAdrSz, sib, mod); - } else { - op->type = O_SMEM; - if (vrex & PREFIX_EX_B) { - ps->usedPrefixes |= INST_PRE_REX; - rm += EX_GPR_BASE; - } - - if (effAdrSz == Decode64Bits) op->index = (uint8_t)(REGS64_BASE + rm); - else op->index = (uint8_t)(REGS32_BASE + rm); - } - - if (mod == 1) { - di->dispSize = 8; - if (!read_stream_safe_sint(ci, (int64_t*)&di->disp, sizeof(int8_t))) return FALSE; - } else if ((mod == 2) || ((sib & 7) == 5)) { /* If there is no BASE, read DISP32! */ - di->dispSize = 32; - if (!read_stream_safe_sint(ci, (int64_t*)&di->disp, sizeof(int32_t))) return FALSE; - } - } - - /* Get the base register. */ - base = op->index; - if (di->base != R_NONE) base = di->base; - else if (di->scale >= 2) base = 0; /* If it's only an index but got scale, it's still DS. */ - /* Default for EBP/ESP is SS segment. 64 bits mode ignores DS anyway. */ - if ((base == R_EBP) || (base == R_ESP)) prefixes_use_segment(INST_PRE_SS, ps, ci->dt, di); - else prefixes_use_segment(INST_PRE_DS, ps, ci->dt, di); - } - - return TRUE; -} - - -/* - * This function is reponsible to textually format a required operand according to its type. - * It is vital to understand that there are other operands than what the ModR/M byte specifies. - - * Only by decoding the operands of an instruction which got a LOCK prefix, we could tell whether it may use the LOCK prefix. - * According to Intel, LOCK prefix must precede some specific instructions AND in their memory destination operand form (which means first operand). - * LOCK INC EAX, would generate an exception, but LOCK INC [EAX] is alright. - * Also LOCK ADD BX, [BP] would generate an exception. - - * Return code: - * TRUE - continue parsing the instruction and its operands, everything went right 'till now. - * FALSE - not enough bytes, or invalid operands. - */ - -int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, - _iflags instFlags, _OpType type, _OperandNumberType opNum, - unsigned int modrm, _PrefixState* ps, _DecodeType effOpSz, - _DecodeType effAdrSz, int* lockableInstruction) -{ - int ret = 0; - unsigned int mod = 0, reg = 0, rm = 0, vexV = ps->vexV; - unsigned int vrex = ps->vrex, typeHandled = TRUE; - _Operand* op = &di->ops[opNum]; - - /* Used to indicate the size of the MEMORY INDIRECTION only. */ - _OperandSizeType opSize = OPERAND_SIZE_NONE; - - /* - * ModRM bits: - * |7-6-5--------3-2-0| - * |MOD|REG/OPCODE|RM | - * |------------------| - */ - mod = (modrm >> 6) & 3; /* Mode(register-indirection, disp8+reg+indirection, disp16+reg+indirection, general-purpose register) */ - reg = (modrm >> 3) & 7; /* Register(could be part of the opcode itself or general-purpose register) */ - rm = modrm & 7; /* Specifies which general-purpose register or disp+reg to use. */ - - /* -- Memory Indirection Operands (that cannot be a general purpose register) -- */ - switch (type) - { - case OT_MEM64_128: /* Used only by CMPXCHG8/16B. */ - /* Make a specific check when the type is OT_MEM64_128 since the lockable CMPXCHG8B uses this one... */ - if (lockableInstruction && (ps->decodedPrefixes & INST_PRE_LOCK)) *lockableInstruction = TRUE; - if (effOpSz == Decode64Bits) { - ps->usedPrefixes |= INST_PRE_REX; - opSize = OPERAND_SIZE128; - } else opSize = OPERAND_SIZE64; - break; - case OT_MEM32: opSize = OPERAND_SIZE32; break; - case OT_MEM32_64: - /* Used by MOVNTI. Default size is 32bits, 64bits with REX. */ - if (effOpSz == Decode64Bits) { - ps->usedPrefixes |= INST_PRE_REX; - opSize = OPERAND_SIZE64; - } else opSize = OPERAND_SIZE32; - break; - case OT_MEM64: opSize = OPERAND_SIZE64; break; - case OT_MEM128: opSize = OPERAND_SIZE128; break; - case OT_MEM16_FULL: /* The size indicates about the second item of the pair. */ - switch (effOpSz) - { - case Decode16Bits: - ps->usedPrefixes |= INST_PRE_OP_SIZE; - opSize = OPERAND_SIZE16; - break; - case Decode32Bits: - ps->usedPrefixes |= INST_PRE_OP_SIZE; - opSize = OPERAND_SIZE32; - break; - case Decode64Bits: - /* Mark usage of REX only if it was required. */ - if ((instFlags & (INST_64BITS | INST_PRE_REX)) == (INST_64BITS | INST_PRE_REX)) ps->usedPrefixes |= INST_PRE_REX; - opSize = OPERAND_SIZE64; break; - } - break; - case OT_MEM16_3264: /* The size indicates about the second item of the pair. */ - if (ci->dt == Decode64Bits) opSize = OPERAND_SIZE64; - else opSize = OPERAND_SIZE32; - break; - case OT_MEM_OPT: - /* Since the MEM is optional, only when mod != 3, then return true as if the operand was alright. */ - if (mod == 0x3) return TRUE; - break; - case OT_FPUM16: opSize = OPERAND_SIZE16; break; - case OT_FPUM32: opSize = OPERAND_SIZE32; break; - case OT_FPUM64: opSize = OPERAND_SIZE64; break; - case OT_FPUM80: opSize = OPERAND_SIZE80; break; - case OT_LMEM128_256: - if (vrex & PREFIX_EX_L) opSize = OPERAND_SIZE256; - else opSize = OPERAND_SIZE128; - break; - case OT_MEM: /* Size is unknown, but still handled. */ break; - default: typeHandled = FALSE; break; - } - if (typeHandled) { - /* All of the above types can't use a general-purpose register (a MOD of 3)!. */ - if (mod == 0x3) { - if (lockableInstruction) *lockableInstruction = FALSE; - return FALSE; - } - op->size = _OPSIZETOINT[opSize]; - ret = operands_extract_modrm(ci, di, type, opNum, ps, effOpSz, effAdrSz, lockableInstruction, mod, rm, instFlags); - if ((op->type == O_REG) || (op->type == O_SMEM) || (op->type == O_MEM)) { - di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; - } - return ret; - } - /* -- Memory Indirection Operands (that can be a register) -- */ - typeHandled = TRUE; - switch (type) - { - case OT_RM_FULL: - ps->usedPrefixes |= INST_PRE_OP_SIZE; - /* PUSH/JMP/CALL are automatically promoted to 64 bits! */ - if (effOpSz == Decode32Bits) { - opSize = OPERAND_SIZE32; - break; - } else if (effOpSz == Decode64Bits) { - /* Mark usage of REX only if it was required. */ - if ((instFlags & INST_64BITS) == 0) ps->usedPrefixes |= INST_PRE_REX; - opSize = OPERAND_SIZE64; - break; + default: return FALSE; } - /* FALL THROUGH BECAUSE dt==Decoded16Bits @-<----*/ - case OT_RM16: - /* If we got here not from OT_RM16, then the prefix was used. */ - if (type != OT_RM16) ps->usedPrefixes |= INST_PRE_OP_SIZE; - opSize = OPERAND_SIZE16; - break; - case OT_RM32_64: - /* The default size is 32, which can be 64 with a REX only. */ - if (effOpSz == Decode64Bits) { - opSize = OPERAND_SIZE64; - /* Mark REX prefix as used if non-promoted instruction. */ - if ((instFlags & (INST_64BITS | INST_PRE_REX)) == (INST_64BITS | INST_PRE_REX)) { - ps->usedPrefixes |= INST_PRE_REX; - } - } else opSize = OPERAND_SIZE32; - break; - case OT_RM16_32: - /* Ignore REX, it's either 32 or 16 bits RM. */ - if (ps->decodedPrefixes & INST_PRE_OP_SIZE) { - ps->usedPrefixes |= INST_PRE_OP_SIZE; - /* Assume: We are in 64bits when we have this operand used. */ - opSize = OPERAND_SIZE16; - } else opSize = OPERAND_SIZE32; - break; - case OT_WXMM32_64: - case OT_WRM32_64: - if (vrex & PREFIX_EX_W) opSize = OPERAND_SIZE64; - else opSize = OPERAND_SIZE32; - break; - case OT_YXMM64_256: - if (vrex & PREFIX_EX_L) opSize = OPERAND_SIZE256; - else opSize = OPERAND_SIZE64; - break; - case OT_YXMM128_256: - if (vrex & PREFIX_EX_L) opSize = OPERAND_SIZE256; - else opSize = OPERAND_SIZE128; - break; - case OT_LXMM64_128: - if (vrex & PREFIX_EX_L) opSize = OPERAND_SIZE128; - else opSize = OPERAND_SIZE64; - break; - case OT_RFULL_M16: - ps->usedPrefixes |= INST_PRE_OP_SIZE; - opSize = OPERAND_SIZE16; - break; - - case OT_RM8: - case OT_R32_M8: - case OT_R32_64_M8: - case OT_REG32_64_M8: - opSize = OPERAND_SIZE8; - break; - - case OT_XMM16: - case OT_R32_M16: - case OT_R32_64_M16: - case OT_REG32_64_M16: - opSize = OPERAND_SIZE16; - break; - - case OT_RM32: - case OT_MM32: - case OT_XMM32: - opSize = OPERAND_SIZE32; - break; - - case OT_MM64: - case OT_XMM64: - opSize = OPERAND_SIZE64; - break; - - case OT_XMM128: opSize = OPERAND_SIZE128; break; - case OT_YMM256: opSize = OPERAND_SIZE256; break; - default: typeHandled = FALSE; break; - } - if (typeHandled) { - /* Fill size of memory dereference for operand. */ - op->size = _OPSIZETOINT[opSize]; - ret = operands_extract_modrm(ci, di, type, opNum, ps, effOpSz, effAdrSz, lockableInstruction, mod, rm, instFlags); - if ((op->type == O_REG) || (op->type == O_SMEM) || (op->type == O_MEM)) { - di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; + op->size = (uint16_t)size; + op->index = (uint8_t)rm; + op->type = O_REG; + di->usedRegistersMask |= _REGISTERTORCLASS[rm]; + return TRUE; } - return ret; } - /* Simple operand type (no ModRM byte). */ + /* Simple operand type (ModRM reg). */ + reg = (modrm >> 3) & 7; switch (type) { case OT_IMM8: operands_set_ts(op, O_IMM, 8); - if (!read_stream_safe_uint(ci, &di->imm.byte, sizeof(int8_t))) return FALSE; + if (!read_stream_safe_uint8(ci, &di->imm.byte)) return FALSE; break; case OT_IMM_FULL: /* 16, 32 or 64, depends on prefixes. */ if (effOpSz == Decode16Bits) { @@ -697,7 +760,7 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, /* FALL THROUGH */ case OT_IMM16: /* Force 16 bits imm. */ operands_set_ts(op, O_IMM, 16); - if (!read_stream_safe_uint(ci, &di->imm.word, sizeof(int16_t))) return FALSE; + if (!read_stream_safe_uint16(ci, &di->imm.word)) return FALSE; break; /* * Extension: MOV imm64, requires REX. @@ -709,7 +772,7 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, ps->usedPrefixes |= INST_PRE_REX; operands_set_ts(op, O_IMM, 64); - if (!read_stream_safe_uint(ci, &di->imm.qword, sizeof(int64_t))) return FALSE; + if (!read_stream_safe_uint64(ci, &di->imm.qword)) return FALSE; break; } else ps->usedPrefixes |= INST_PRE_OP_SIZE; /* FALL THROUGH BECAUSE dt==Decoded32Bits @-<----*/ @@ -723,10 +786,10 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, op->size = 32; /* Use this as an indicator that it should be signed extended. */ di->flags |= FLAG_IMM_SIGNED; - if (!read_stream_safe_sint(ci, &di->imm.sqword, sizeof(int32_t))) return FALSE; + if (!read_stream_safe_sint32(ci, &di->imm.sqword)) return FALSE; } else { op->size = 32; - if (!read_stream_safe_uint(ci, &di->imm.dword, sizeof(int32_t))) return FALSE; + if (!read_stream_safe_uint32(ci, &di->imm.dword)) return FALSE; } break; case OT_SEIMM8: /* Sign extended immediate. */ @@ -752,19 +815,19 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, } } else op->size = 8; di->flags |= FLAG_IMM_SIGNED; - if (!read_stream_safe_sint(ci, &di->imm.sqword, sizeof(int8_t))) return FALSE; + if (!read_stream_safe_sint8(ci, &di->imm.sqword)) return FALSE; break; case OT_IMM16_1: operands_set_ts(op, O_IMM1, 16); - if (!read_stream_safe_uint(ci, &di->imm.ex.i1, sizeof(int16_t))) return FALSE; + if (!read_stream_safe_uint16(ci, &di->imm.ex.i1)) return FALSE; break; case OT_IMM8_1: operands_set_ts(op, O_IMM1, 8); - if (!read_stream_safe_uint(ci, &di->imm.ex.i1, sizeof(int8_t))) return FALSE; + if (!read_stream_safe_uint8(ci, &di->imm.ex.i1)) return FALSE; break; case OT_IMM8_2: operands_set_ts(op, O_IMM2, 8); - if (!read_stream_safe_uint(ci, &di->imm.ex.i2, sizeof(int8_t))) return FALSE; + if (!read_stream_safe_uint8(ci, &di->imm.ex.i2)) return FALSE; break; case OT_REG8: operands_set_ts(op, O_REG, 8); @@ -774,99 +837,102 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, * This is a PASSIVE behavior changer of REX prefix, it affects operands even if its value is 0x40 ! */ ps->usedPrefixes |= INST_PRE_REX; - op->index = (uint8_t)operands_fix_8bit_rex_base(reg + ((vrex & PREFIX_EX_R) ? EX_GPR_BASE : 0)); + op->index = (uint8_t)operands_fix_8bit_rex_base(reg + ((ps->vrex & PREFIX_EX_R) ? EX_GPR_BASE : 0)); } else op->index = (uint8_t)(REGS8_BASE + reg); + di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; break; case OT_REG16: - operands_set_tsi(op, O_REG, 16, REGS16_BASE + reg); + operands_set_tsi(di, op, O_REG, 16, REGS16_BASE + reg); break; case OT_REG_FULL: switch (effOpSz) { case Decode16Bits: ps->usedPrefixes |= INST_PRE_OP_SIZE; - if (vrex & PREFIX_EX_R) { + if (ps->vrex & PREFIX_EX_R) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } - operands_set_tsi(op, O_REG, 16, REGS16_BASE + reg); + operands_set_tsi(di, op, O_REG, 16, REGS16_BASE + reg); break; case Decode32Bits: - if (vrex & PREFIX_EX_R) { + if (ps->vrex & PREFIX_EX_R) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } else ps->usedPrefixes |= INST_PRE_OP_SIZE; - operands_set_tsi(op, O_REG, 32, REGS32_BASE + reg); + operands_set_tsi(di, op, O_REG, 32, REGS32_BASE + reg); break; case Decode64Bits: /* rex must be presented. */ ps->usedPrefixes |= INST_PRE_REX; - operands_set_tsi(op, O_REG, 64, REGS64_BASE + reg + ((vrex & PREFIX_EX_R) ? EX_GPR_BASE : 0)); + operands_set_tsi(di, op, O_REG, 64, REGS64_BASE + reg + ((ps->vrex & PREFIX_EX_R) ? EX_GPR_BASE : 0)); break; } break; case OT_REG32: - if (vrex & PREFIX_EX_R) { + if (ps->vrex & PREFIX_EX_R) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } - operands_set_tsi(op, O_REG, 32, REGS32_BASE + reg); + operands_set_tsi(di, op, O_REG, 32, REGS32_BASE + reg); break; case OT_REG32_64: /* Handle CVT's, MOVxX and MOVNTI instructions which could be extended to 64 bits registers with REX. */ - if (vrex & PREFIX_EX_R) { + if (ps->vrex & PREFIX_EX_R) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } /* Is it a promoted instruction? (only INST_64BITS is set and REX isn't required.) */ if ((ci->dt == Decode64Bits) && ((instFlags & (INST_64BITS | INST_PRE_REX)) == INST_64BITS)) { - operands_set_tsi(op, O_REG, 64, REGS64_BASE + reg); + operands_set_tsi(di, op, O_REG, 64, REGS64_BASE + reg); break; } /* Give a chance to REX.W. Because if it was a promoted instruction we don't care about REX.W anyways. */ - if (vrex & PREFIX_EX_W) { + if (ps->vrex & PREFIX_EX_W) { ps->usedPrefixes |= INST_PRE_REX; - operands_set_tsi(op, O_REG, 64, REGS64_BASE + reg); - } else operands_set_tsi(op, O_REG, 32, REGS32_BASE + reg); + operands_set_tsi(di, op, O_REG, 64, REGS64_BASE + reg); + } else operands_set_tsi(di, op, O_REG, 32, REGS32_BASE + reg); break; case OT_FREG32_64_RM: /* Force decoding mode. Used for MOV CR(n)/DR(n) which defaults to 64 bits operand size in 64 bits. */ - if (vrex & PREFIX_EX_B) { + rm = modrm & 7; + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; rm += EX_GPR_BASE; } - if (ci->dt == Decode64Bits) operands_set_tsi(op, O_REG, 64, REGS64_BASE + rm); - else operands_set_tsi(op, O_REG, 32, REGS32_BASE + rm); + if (ci->dt == Decode64Bits) operands_set_tsi(di, op, O_REG, 64, REGS64_BASE + rm); + else operands_set_tsi(di, op, O_REG, 32, REGS32_BASE + rm); break; case OT_MM: /* MMX register */ - operands_set_tsi(op, O_REG, 64, MMXREGS_BASE + reg); + operands_set_tsi(di, op, O_REG, 64, MMXREGS_BASE + reg); break; case OT_MM_RM: /* MMX register, this time from the RM field */ - operands_set_tsi(op, O_REG, 64, MMXREGS_BASE + rm); + rm = modrm & 7; + operands_set_tsi(di, op, O_REG, 64, MMXREGS_BASE + rm); break; case OT_REGXMM0: /* Implicit XMM0 operand. */ - reg = 0; - vrex = 0; - /* FALL THROUGH */ + operands_set_tsi(di, op, O_REG, 128, SSEREGS_BASE + 0); + break; case OT_XMM: /* SSE register */ - if (vrex & PREFIX_EX_R) { + if (ps->vrex & PREFIX_EX_R) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } - operands_set_tsi(op, O_REG, 128, SSEREGS_BASE + reg); + operands_set_tsi(di, op, O_REG, 128, SSEREGS_BASE + reg); break; case OT_XMM_RM: /* SSE register, this time from the RM field */ - if (vrex & PREFIX_EX_B) { + rm = modrm & 7; + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; rm += EX_GPR_BASE; } - operands_set_tsi(op, O_REG, 128, SSEREGS_BASE + rm); + operands_set_tsi(di, op, O_REG, 128, SSEREGS_BASE + rm); break; case OT_CREG: /* * Don't parse if the reg exceeds the bounds of the array. * Most of the CR's are not implemented, so if there's no matching string, the operand is invalid. */ - if (vrex & PREFIX_EX_R) { + if (ps->vrex & PREFIX_EX_R) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } else if ((ci->dt == Decode32Bits) && (ps->decodedPrefixes & INST_PRE_LOCK)) { @@ -884,24 +950,25 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, if (ci->dt == Decode64Bits) op->size = 64; else op->size = 32; op->index = (uint8_t)(CREGS_BASE + reg); + di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; break; case OT_DREG: /* * In 64 bits there are 16 debug registers. * but accessing any of dr8-15 which aren't implemented will cause an #ud. */ - if ((reg == 4) || (reg == 5) || (vrex & PREFIX_EX_R)) return FALSE; + if ((reg == 4) || (reg == 5) || (ps->vrex & PREFIX_EX_R)) return FALSE; op->type = O_REG; if (ci->dt == Decode64Bits) op->size = 64; else op->size = 32; op->index = (uint8_t)(DREGS_BASE + reg); + di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; break; case OT_SREG: /* Works with REG16 only! */ - /* If lockableInstruction pointer is non-null we know it's the first operand. */ - if (lockableInstruction && (reg == 1)) return FALSE; /* Can't MOV CS, . */ + if ((&di->ops[0] == op) && (reg == 1)) return FALSE; /* Can't MOV CS, . */ /*Don't parse if the reg exceeds the bounds of the array. */ - if (reg <= SEG_REGS_MAX - 1) operands_set_tsi(op, O_REG, 16, SREGS_BASE + reg); + if (reg <= SEG_REGS_MAX - 1) operands_set_tsi(di, op, O_REG, 16, SREGS_BASE + reg); else return FALSE; break; case OT_SEG: @@ -922,29 +989,31 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, case INST_PRE_FS: op->index = R_FS; break; case INST_PRE_GS: op->index = R_GS; break; } + di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; break; case OT_ACC8: - operands_set_tsi(op, O_REG, 8, R_AL); + operands_set_tsi(di, op, O_REG, 8, R_AL); break; case OT_ACC16: - operands_set_tsi(op, O_REG, 16, R_AX); + operands_set_tsi(di, op, O_REG, 16, R_AX); break; - case OT_ACC_FULL_NOT64: /* No REX.W support for IN/OUT. */ - vrex &= ~PREFIX_EX_W; + case OT_ACC_FULL_NOT64: + /* No REX.W support for IN/OUT. */ + /* FALL THROUGH */ case OT_ACC_FULL: if (effOpSz == Decode16Bits) { ps->usedPrefixes |= INST_PRE_OP_SIZE; - operands_set_tsi(op, O_REG, 16, R_AX); - } else if (effOpSz == Decode32Bits) { + operands_set_tsi(di, op, O_REG, 16, R_AX); + } else if ((effOpSz == Decode32Bits) || (type == OT_ACC_FULL_NOT64)) { ps->usedPrefixes |= INST_PRE_OP_SIZE; - operands_set_tsi(op, O_REG, 32, R_EAX); + operands_set_tsi(di, op, O_REG, 32, R_EAX); } else { /* Decode64Bits */ /* Only non-promoted instructions need REX in order to decode in 64 bits. */ /* MEM-OFFSET MOV's are NOT automatically promoted to 64 bits. */ - if (~instFlags & INST_64BITS) { + if (!(instFlags & INST_64BITS)) { ps->usedPrefixes |= INST_PRE_REX; } - operands_set_tsi(op, O_REG, 64, R_RAX); + operands_set_tsi(di, op, O_REG, 64, R_RAX); } break; case OT_PTR16_FULL: @@ -976,17 +1045,17 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, if (type == OT_RELCB) { operands_set_ts(op, O_PC, 8); - if (!read_stream_safe_sint(ci, &di->imm.sqword, sizeof(int8_t))) return FALSE; + if (!read_stream_safe_sint8(ci, &di->imm.sqword)) return FALSE; } else { /* OT_RELC_FULL */ /* Yep, operand size prefix affects relc also. */ ps->usedPrefixes |= INST_PRE_OP_SIZE; if (effOpSz == Decode16Bits) { operands_set_ts(op, O_PC, 16); - if (!read_stream_safe_sint(ci, &di->imm.sqword, sizeof(int16_t))) return FALSE; + if (!read_stream_safe_sint16(ci, &di->imm.sqword)) return FALSE; } else { /* Decode32Bits or Decode64Bits = for now they are the same */ operands_set_ts(op, O_PC, 32); - if (!read_stream_safe_sint(ci, &di->imm.sqword, sizeof(int32_t))) return FALSE; + if (!read_stream_safe_sint32(ci, &di->imm.sqword)) return FALSE; } } @@ -1026,15 +1095,15 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, ps->usedPrefixes |= INST_PRE_ADDR_SIZE; di->dispSize = 16; - if (!read_stream_safe_uint(ci, &di->disp, sizeof(int16_t))) return FALSE; + if (!read_stream_safe_uint16(ci, &di->disp)) return FALSE; } else if (effAdrSz == Decode32Bits) { ps->usedPrefixes |= INST_PRE_ADDR_SIZE; di->dispSize = 32; - if (!read_stream_safe_uint(ci, &di->disp, sizeof(int32_t))) return FALSE; + if (!read_stream_safe_uint32(ci, &di->disp)) return FALSE; } else { /* Decode64Bits */ di->dispSize = 64; - if (!read_stream_safe_uint(ci, &di->disp, sizeof(int64_t))) return FALSE; + if (!read_stream_safe_uint64(ci, &di->disp)) return FALSE; } break; case OT_CONST1: @@ -1042,20 +1111,22 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, di->imm.byte = 1; break; case OT_REGCL: - operands_set_tsi(op, O_REG, 8, R_CL); + operands_set_tsi(di, op, O_REG, 8, R_CL); break; case OT_FPU_SI: /* Low 3 bits specify the REG, similar to the MODR/M byte reg. */ - operands_set_tsi(op, O_REG, 32, FPUREGS_BASE + (*(ci->code-1) & 7)); + operands_set_tsi(di, op, O_REG, 32, FPUREGS_BASE + (*(ci->code-1) & 7)); break; case OT_FPU_SSI: - operands_set_tsi(op, O_REG, 32, R_ST0); - operands_set_tsi(op + 1, O_REG, 32, FPUREGS_BASE + (*(ci->code-1) & 7)); + operands_set_tsi(di, op, O_REG, 32, R_ST0); + operands_set_tsi(di, op + 1, O_REG, 32, FPUREGS_BASE + (*(ci->code-1) & 7)); + di->opsNo++; break; case OT_FPU_SIS: - operands_set_tsi(op, O_REG, 32, FPUREGS_BASE + (*(ci->code-1) & 7)); - operands_set_tsi(op + 1, O_REG, 32, R_ST0); + operands_set_tsi(di, op, O_REG, 32, FPUREGS_BASE + (*(ci->code-1) & 7)); + operands_set_tsi(di, op + 1, O_REG, 32, R_ST0); + di->opsNo++; break; /* @@ -1070,13 +1141,15 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, /* Low 3 bits specify the REG, similar to the MODR/M byte reg. */ operands_set_ts(op, O_REG, 8); reg = *(ci->code-1) & 7; - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; op->index = (uint8_t)operands_fix_8bit_rex_base(reg + EX_GPR_BASE); } else if (ps->prefixExtType == PET_REX) { ps->usedPrefixes |= INST_PRE_REX; op->index = (uint8_t)operands_fix_8bit_rex_base(reg); } else op->index = (uint8_t)(REGS8_BASE + reg); + + di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; break; case OT_IB_R_FULL: reg = *(ci->code-1) & 7; @@ -1084,18 +1157,18 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, { case Decode16Bits: ps->usedPrefixes |= INST_PRE_OP_SIZE; - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } - operands_set_tsi(op, O_REG, 16, REGS16_BASE + reg); + operands_set_tsi(di, op, O_REG, 16, REGS16_BASE + reg); break; case Decode32Bits: - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } else ps->usedPrefixes |= INST_PRE_OP_SIZE; - operands_set_tsi(op, O_REG, 32, REGS32_BASE + reg); + operands_set_tsi(di, op, O_REG, 32, REGS32_BASE + reg); break; case Decode64Bits: /* @@ -1104,15 +1177,15 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, * MOV imm64 / BSWAP requires REX.W to be 64 bits --> INST_64BITS | INST_PRE_REX */ if ((instFlags & INST_64BITS) && ((instFlags & INST_PRE_REX) == 0)) { - if (vrex & PREFIX_EX_B) { + if (ps->vrex & PREFIX_EX_B) { ps->usedPrefixes |= INST_PRE_REX; reg += EX_GPR_BASE; } } else { ps->usedPrefixes |= INST_PRE_REX; - reg += (vrex & PREFIX_EX_B) ? EX_GPR_BASE : 0; + reg += (ps->vrex & PREFIX_EX_B) ? EX_GPR_BASE : 0; } - operands_set_tsi(op, O_REG, 64, REGS64_BASE + reg); + operands_set_tsi(di, op, O_REG, 64, REGS64_BASE + reg); break; } break; @@ -1161,12 +1234,14 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, * Clear segment in case OT_REGI_EDI was parsed earlier, * DS can be overridden and therefore has precedence. */ - di->segment = 0; + di->segment = R_NONE; prefixes_use_segment(INST_PRE_DS, ps, ci->dt, di); if (effAdrSz == Decode16Bits) op->index = R_SI; else if (effAdrSz == Decode32Bits) op->index = R_ESI; else op->index = R_RSI; + + di->usedRegistersMask |= _REGISTERTORCLASS[R_RSI]; /* Maps to RM_SI. */ break; case OT_REGI_EDI: ps->usedPrefixes |= INST_PRE_ADDR_SIZE; @@ -1185,22 +1260,24 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, } else op->size = 8; /* Note: The [rDI] operand can't be prefixed by a segment override, therefore we don't set usedPrefixes. */ - if ((opNum == ONT_1) && (ci->dt != Decode64Bits)) di->segment = R_ES | SEGMENT_DEFAULT; /* No ES in 64 bits mode. */ + if ((di->segment == R_NONE) && (ci->dt != Decode64Bits)) di->segment = R_ES | SEGMENT_DEFAULT; /* No ES in 64 bits mode. */ if (effAdrSz == Decode16Bits) op->index = R_DI; else if (effAdrSz == Decode32Bits) op->index = R_EDI; else op->index = R_RDI; + + di->usedRegistersMask |= _REGISTERTORCLASS[R_RDI]; /* Maps to RM_DI. */ break; /* Used for In/Out instructions varying forms. */ case OT_REGDX: /* Simple single IN/OUT instruction. */ - operands_set_tsi(op, O_REG, 16, R_DX); + operands_set_tsi(di, op, O_REG, 16, R_DX); break; - /* Used for INVLPGA instruction. */ + /* Used for INVLPGA instruction. */ case OT_REGECX: - operands_set_tsi(op, O_REG, 32, R_ECX); + operands_set_tsi(di, op, O_REG, 32, R_ECX); break; case OT_REGI_EBXAL: /* XLAT BYTE [rBX + AL] */ @@ -1209,7 +1286,7 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, prefixes_use_segment(INST_PRE_DS, ps, ci->dt, di); /* Size of deref is always 8 for xlat. */ - operands_set_tsi(op, O_MEM, 8, R_AL); + operands_set_tsi(di, op, O_MEM, 8, R_AL); if (effAdrSz == Decode16Bits) di->base = R_BX; else if (effAdrSz == Decode32Bits) di->base = R_EBX; @@ -1217,6 +1294,8 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, ps->usedPrefixes |= INST_PRE_REX; di->base = R_RBX; } + + di->usedRegistersMask |= _REGISTERTORCLASS[di->base]; break; case OT_REGI_EAX: /* @@ -1224,17 +1303,18 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, * Since this is a memory indirection, the default address size in 64bits decoding mode is 64. */ - if (effAdrSz == Decode64Bits) operands_set_tsi(op, O_SMEM, 64, R_RAX); + if (effAdrSz == Decode64Bits) operands_set_tsi(di, op, O_SMEM, 64, R_RAX); else if (effAdrSz == Decode32Bits) { ps->usedPrefixes |= INST_PRE_ADDR_SIZE; - operands_set_tsi(op, O_SMEM, 32, R_EAX); - } else { + operands_set_tsi(di, op, O_SMEM, 32, R_EAX); + } + else { ps->usedPrefixes |= INST_PRE_ADDR_SIZE; - operands_set_tsi(op, O_SMEM, 16, R_AX); + operands_set_tsi(di, op, O_SMEM, 16, R_AX); } break; case OT_VXMM: - operands_set_tsi(op, O_REG, 128, SSEREGS_BASE + vexV); + operands_set_tsi(di, op, O_REG, 128, SSEREGS_BASE + ps->vexV); break; case OT_XMM_IMM: ci->codeLen -= sizeof(int8_t); @@ -1242,14 +1322,14 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, if (ci->dt == Decode32Bits) reg = (*ci->code >> 4) & 0x7; else reg = (*ci->code >> 4) & 0xf; - operands_set_tsi(op, O_REG, 128, SSEREGS_BASE + reg); + operands_set_tsi(di, op, O_REG, 128, SSEREGS_BASE + reg); ci->code += sizeof(int8_t); break; case OT_YXMM: - if (vrex & PREFIX_EX_R) reg += EX_GPR_BASE; - if (ps->vrex & PREFIX_EX_L) operands_set_tsi(op, O_REG, 256, AVXREGS_BASE + reg); - else operands_set_tsi(op, O_REG, 128, SSEREGS_BASE + reg); + if (ps->vrex & PREFIX_EX_R) reg += EX_GPR_BASE; + if (ps->vrex & PREFIX_EX_L) operands_set_tsi(di, op, O_REG, 256, AVXREGS_BASE + reg); + else operands_set_tsi(di, op, O_REG, 128, SSEREGS_BASE + reg); break; case OT_YXMM_IMM: ci->codeLen -= sizeof(int8_t); @@ -1258,33 +1338,28 @@ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, if (ci->dt == Decode32Bits) reg = (*ci->code >> 4) & 0x7; else reg = (*ci->code >> 4) & 0xf; - if (ps->vrex & PREFIX_EX_L) operands_set_tsi(op, O_REG, 256, AVXREGS_BASE + reg); - else operands_set_tsi(op, O_REG, 128, SSEREGS_BASE + reg); + if (ps->vrex & PREFIX_EX_L) operands_set_tsi(di, op, O_REG, 256, AVXREGS_BASE + reg); + else operands_set_tsi(di, op, O_REG, 128, SSEREGS_BASE + reg); ci->code += sizeof(int8_t); break; case OT_YMM: - if (vrex & PREFIX_EX_R) reg += EX_GPR_BASE; - operands_set_tsi(op, O_REG, 256, AVXREGS_BASE + reg); + if (ps->vrex & PREFIX_EX_R) reg += EX_GPR_BASE; + operands_set_tsi(di, op, O_REG, 256, AVXREGS_BASE + reg); break; case OT_VYMM: - operands_set_tsi(op, O_REG, 256, AVXREGS_BASE + vexV); + operands_set_tsi(di, op, O_REG, 256, AVXREGS_BASE + ps->vexV); break; case OT_VYXMM: - if (ps->vrex & PREFIX_EX_L) operands_set_tsi(op, O_REG, 256, AVXREGS_BASE + vexV); - else operands_set_tsi(op, O_REG, 128, SSEREGS_BASE + vexV); + if (ps->vrex & PREFIX_EX_L) operands_set_tsi(di, op, O_REG, 256, AVXREGS_BASE + ps->vexV); + else operands_set_tsi(di, op, O_REG, 128, SSEREGS_BASE + ps->vexV); break; case OT_WREG32_64: - if (vrex & PREFIX_EX_R) reg += EX_GPR_BASE; - if (ps->vrex & PREFIX_EX_W) operands_set_tsi(op, O_REG, 64, REGS64_BASE + reg); - else operands_set_tsi(op, O_REG, 32, REGS32_BASE + reg); + if (ps->vrex & PREFIX_EX_R) reg += EX_GPR_BASE; + if (ps->vrex & PREFIX_EX_W) operands_set_tsi(di, op, O_REG, 64, REGS64_BASE + reg); + else operands_set_tsi(di, op, O_REG, 32, REGS32_BASE + reg); break; default: return FALSE; } - - if ((op->type == O_REG) || (op->type == O_SMEM) || (op->type == O_MEM)) { - di->usedRegistersMask |= _REGISTERTORCLASS[op->index]; - } - return TRUE; } diff --git a/NativeCore/Dependencies/distorm/src/operands.h b/NativeCore/Dependencies/distorm/src/operands.h index 2d916474..c4e48224 100644 --- a/NativeCore/Dependencies/distorm/src/operands.h +++ b/NativeCore/Dependencies/distorm/src/operands.h @@ -4,7 +4,7 @@ operands.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -17,12 +17,9 @@ This library is licensed under the BSD license. See the file COPYING. #include "prefix.h" #include "instructions.h" - -extern uint32_t _REGISTERTORCLASS[]; - int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, - _iflags instFlags, _OpType type, _OperandNumberType opNum, + _iflags instFlags, _OpType type, unsigned int modrm, _PrefixState* ps, _DecodeType effOpSz, - _DecodeType effAdrSz, int* lockableInstruction); + _DecodeType effAdrSz, _Operand* op); #endif /* OPERANDS_H */ diff --git a/NativeCore/Dependencies/distorm/src/prefix.c b/NativeCore/Dependencies/distorm/src/prefix.c index b1c26954..40b0ac2b 100644 --- a/NativeCore/Dependencies/distorm/src/prefix.c +++ b/NativeCore/Dependencies/distorm/src/prefix.c @@ -4,7 +4,7 @@ prefix.c diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -22,53 +22,43 @@ This library is licensed under the BSD license. See the file COPYING. * That's why I have to detect such cases and drop those excess prefixes. */ -int prefixes_is_valid(unsigned int ch, _DecodeType dt) -{ - switch (ch) { - /* for i in xrange(0x40, 0x50): print "case 0x%2x:" % i */ - case 0x40: /* REX: */ - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4a: - case 0x4b: - case 0x4c: - case 0x4d: - case 0x4e: - case 0x4f: return (dt == Decode64Bits); - case PREFIX_LOCK: return TRUE; - case PREFIX_REPNZ: return TRUE; - case PREFIX_REP: return TRUE; - case PREFIX_CS: return TRUE; - case PREFIX_SS: return TRUE; - case PREFIX_DS: return TRUE; - case PREFIX_ES: return TRUE; - case PREFIX_FS: return TRUE; - case PREFIX_GS: return TRUE; - case PREFIX_OP_SIZE: return TRUE; - case PREFIX_ADDR_SIZE: return TRUE; - /* The VEXs might be false positives, the decode_perfixes will determine for sure. */ - case PREFIX_VEX2b: /* VEX is supported for all modes, because 16 bits Pmode is included. */ - case PREFIX_VEX3b: return TRUE; - } - return FALSE; -} -/* Ignore a specific prefix type. */ -void prefixes_ignore(_PrefixState* ps, _PrefixIndexer pi) -{ - /* - * If that type of prefix appeared already, set the bit of that *former* prefix. - * Anyway, set the new index of that prefix type to the current index, so next time we know its position. - */ - if (ps->pfxIndexer[pi] != PFXIDX_NONE) ps->unusedPrefixesMask |= (1 << ps->pfxIndexer[pi]); -} +int PrefixTables[256 * 2] = { + /* Decode 16/32 Bits */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* ES (0x26) CS (0x2e) */ + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* DS (0x3e) SS (0x36) */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* FS(0x64) GS(0x65) OP_SIZE(0x66) ADDR_SIZE(0x67) */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* VEX2b (0xc5) VEX3b (0xc4) */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* LOCK (0xf0) REPNZ (0xf2) REP (0xf3) */ + /* Decode64Bits */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* REX: 0x40 - 0x4f */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; /* Ignore all prefix. */ void prefixes_ignore_all(_PrefixState* ps) @@ -93,6 +83,7 @@ uint16_t prefixes_set_unused_mask(_PrefixState* ps) * So now we know which bits we need to set exactly in the mask. */ _iflags unusedPrefixesDiff = ps->decodedPrefixes ^ ps->usedPrefixes; + uint16_t unusedPrefixesMask = ps->unusedPrefixesMask; /* Examine unused prefixes by type: */ /* @@ -102,14 +93,16 @@ uint16_t prefixes_set_unused_mask(_PrefixState* ps) * It's not a big problem, because the prefixes_ignore func will ignore it anyway, * since it wasn't seen earlier. But it's important to know this. */ - if (unusedPrefixesDiff & INST_PRE_REX) prefixes_ignore(ps, PFXIDX_REX); - if (unusedPrefixesDiff & INST_PRE_SEGOVRD_MASK) prefixes_ignore(ps, PFXIDX_SEG); - if (unusedPrefixesDiff & INST_PRE_LOKREP_MASK) prefixes_ignore(ps, PFXIDX_LOREP); - if (unusedPrefixesDiff & INST_PRE_OP_SIZE) prefixes_ignore(ps, PFXIDX_OP_SIZE); - if (unusedPrefixesDiff & INST_PRE_ADDR_SIZE) prefixes_ignore(ps, PFXIDX_ADRS); - /* If a VEX instruction was found, its prefix is considered as used, therefore no point for checking for it. */ - - return ps->unusedPrefixesMask; + if (unusedPrefixesDiff) { + if (unusedPrefixesDiff & INST_PRE_REX) unusedPrefixesMask |= ps->pfxIndexer[PFXIDX_REX]; + if (unusedPrefixesDiff & INST_PRE_SEGOVRD_MASK) unusedPrefixesMask |= ps->pfxIndexer[PFXIDX_SEG]; + if (unusedPrefixesDiff & INST_PRE_LOKREP_MASK) unusedPrefixesMask |= ps->pfxIndexer[PFXIDX_LOREP]; + if (unusedPrefixesDiff & INST_PRE_OP_SIZE) unusedPrefixesMask |= ps->pfxIndexer[PFXIDX_OP_SIZE]; + if (unusedPrefixesDiff & INST_PRE_ADDR_SIZE) unusedPrefixesMask |= ps->pfxIndexer[PFXIDX_ADRS]; + /* If a VEX instruction was found, its prefix is considered as used, therefore no point for checking for it. */ + } + + return unusedPrefixesMask; } /* @@ -118,9 +111,10 @@ uint16_t prefixes_set_unused_mask(_PrefixState* ps) */ _INLINE_ void prefixes_track_unused(_PrefixState* ps, int index, _PrefixIndexer pi) { + /* Mark the previously used prefix (if exists) in the unused mask. */ prefixes_ignore(ps, pi); /* Book-keep the current index for this type. */ - ps->pfxIndexer[pi] = index; + ps->pfxIndexer[pi] = 1 << index; } /* @@ -129,11 +123,12 @@ _INLINE_ void prefixes_track_unused(_PrefixState* ps, int index, _PrefixIndexer * The tiny complexity is that we want to know when a prefix was superfluous and mark any copy of it as unused. * Note that the last prefix of its type will be considered as used, and all the others (of same type) before it as unused. */ -void prefixes_decode(const uint8_t* code, int codeLen, _PrefixState* ps, _DecodeType dt) +void prefixes_decode(_CodeInfo* ci, _PrefixState* ps) { - int index, done; - uint8_t vex; - + const uint8_t* rexPos = NULL; + const uint8_t* start = ci->code; + uint8_t byte, vex; + unsigned int index; /* * First thing to do, scan for prefixes, there are six types of prefixes. * There may be up to six prefixes before a single instruction, not the same type, no special order, @@ -145,9 +140,9 @@ void prefixes_decode(const uint8_t* code, int codeLen, _PrefixState* ps, _Decode * We attach all prefixes to the next instruction, there might be two or more occurrences from the same prefix. * Also, since VEX can be allowed only once we will test it separately. */ - for (index = 0, done = FALSE; - (codeLen > 0) && (code - ps->start < INST_MAXIMUM_SIZE); - code++, codeLen--, index++) { + for (index = 0; + (ci->codeLen > 0) && (index < INST_MAXIMUM_SIZE); + ci->code++, ci->codeLen--, index++) { /* NOTE: AMD treat lock/rep as two different groups... But I am based on Intel. @@ -175,102 +170,90 @@ void prefixes_decode(const uint8_t* code, int codeLen, _PrefixState* ps, _Decode */ /* Examine what type of prefix we got. */ - switch (*code) + byte = *ci->code; + switch (byte) { - /* REX type, 64 bits decoding mode only: */ - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4a: - case 0x4b: - case 0x4c: - case 0x4d: - case 0x4e: - case 0x4f: - if (dt == Decode64Bits) { - ps->decodedPrefixes |= INST_PRE_REX; - ps->vrex = *code & 0xf; /* Keep only BXRW. */ - ps->rexPos = code; - ps->prefixExtType = PET_REX; - prefixes_track_unused(ps, index, PFXIDX_REX); - } else done = TRUE; /* If we are not in 64 bits mode, it's an instruction, then halt. */ - break; - + case PREFIX_OP_SIZE: {/* Op Size type: */ + ps->decodedPrefixes |= INST_PRE_OP_SIZE; + prefixes_track_unused(ps, index, PFXIDX_OP_SIZE); + } break; + /* Look for both common arch prefixes. */ + case PREFIX_LOCK: { /* LOCK and REPx type: */ - case PREFIX_LOCK: - ps->decodedPrefixes |= INST_PRE_LOCK; - prefixes_track_unused(ps, index, PFXIDX_LOREP); - break; - case PREFIX_REPNZ: - ps->decodedPrefixes |= INST_PRE_REPNZ; - prefixes_track_unused(ps, index, PFXIDX_LOREP); - break; - case PREFIX_REP: - ps->decodedPrefixes |= INST_PRE_REP; - prefixes_track_unused(ps, index, PFXIDX_LOREP); - break; - + ps->decodedPrefixes |= INST_PRE_LOCK; + prefixes_track_unused(ps, index, PFXIDX_LOREP); + } break; + case PREFIX_REPNZ: { + ps->decodedPrefixes |= INST_PRE_REPNZ; + prefixes_track_unused(ps, index, PFXIDX_LOREP); + } break; + case PREFIX_REP: { + ps->decodedPrefixes |= INST_PRE_REP; + prefixes_track_unused(ps, index, PFXIDX_LOREP); + } break; + case PREFIX_CS: { /* Seg Overide type: */ - case PREFIX_CS: - ps->decodedPrefixes |= INST_PRE_CS; - prefixes_track_unused(ps, index, PFXIDX_SEG); - break; - case PREFIX_SS: - ps->decodedPrefixes |= INST_PRE_SS; - prefixes_track_unused(ps, index, PFXIDX_SEG); - break; - case PREFIX_DS: - ps->decodedPrefixes |= INST_PRE_DS; - prefixes_track_unused(ps, index, PFXIDX_SEG); - break; - case PREFIX_ES: - ps->decodedPrefixes |= INST_PRE_ES; - prefixes_track_unused(ps, index, PFXIDX_SEG); - break; - case PREFIX_FS: - ps->decodedPrefixes |= INST_PRE_FS; - prefixes_track_unused(ps, index, PFXIDX_SEG); - break; - case PREFIX_GS: - ps->decodedPrefixes |= INST_PRE_GS; - prefixes_track_unused(ps, index, PFXIDX_SEG); - break; - - /* Op Size type: */ - case PREFIX_OP_SIZE: - ps->decodedPrefixes |= INST_PRE_OP_SIZE; - prefixes_track_unused(ps, index, PFXIDX_OP_SIZE); - break; - + ps->decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK; + ps->decodedPrefixes |= INST_PRE_CS; + prefixes_track_unused(ps, index, PFXIDX_SEG); + } break; + case PREFIX_SS: { + ps->decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK; + ps->decodedPrefixes |= INST_PRE_SS; + prefixes_track_unused(ps, index, PFXIDX_SEG); + } break; + case PREFIX_DS: { + ps->decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK; + ps->decodedPrefixes |= INST_PRE_DS; + prefixes_track_unused(ps, index, PFXIDX_SEG); + } break; + case PREFIX_ES: { + ps->decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK; + ps->decodedPrefixes |= INST_PRE_ES; + prefixes_track_unused(ps, index, PFXIDX_SEG); + } break; + case PREFIX_FS: { + ps->decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK; + ps->decodedPrefixes |= INST_PRE_FS; + prefixes_track_unused(ps, index, PFXIDX_SEG); + } break; + case PREFIX_GS: { + ps->decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK; + ps->decodedPrefixes |= INST_PRE_GS; + prefixes_track_unused(ps, index, PFXIDX_SEG); + } break; + case PREFIX_ADDR_SIZE: { /* Addr Size type: */ - case PREFIX_ADDR_SIZE: - ps->decodedPrefixes |= INST_PRE_ADDR_SIZE; - prefixes_track_unused(ps, index, PFXIDX_ADRS); - break; - - /* Non-prefix byte now, so break 2. */ - default: done = TRUE; break; + ps->decodedPrefixes |= INST_PRE_ADDR_SIZE; + prefixes_track_unused(ps, index, PFXIDX_ADRS); + } break; + default: + if (ci->dt == Decode64Bits) { + /* REX type, 64 bits decoding mode only: */ + if ((byte & 0xf0) == 0x40) { + ps->decodedPrefixes |= INST_PRE_REX; + rexPos = ci->code; + ps->vrex = byte & 0xf; /* Keep only BXRW. */ + ps->prefixExtType = PET_REX; + prefixes_track_unused(ps, index, PFXIDX_REX); + continue; + } + } + goto _Break2; } - if (done) break; } +_Break2: /* 2 Bytes VEX: */ - if ((codeLen >= 2) && - (*code == PREFIX_VEX2b) && - ((code - ps->start) <= INST_MAXIMUM_SIZE - 2)) { + if ((ci->codeLen >= 2) && + (*ci->code == PREFIX_VEX2b) && + ((ci->code - start) <= INST_MAXIMUM_SIZE - 2)) { /* * In 32 bits the second byte has to be in the special range of Mod=11. * Otherwise it might be a normal LDS instruction. */ - if ((dt == Decode64Bits) || (*(code + 1) >= INST_DIVIDED_MODRM)) { - ps->vexPos = code + 1; + if ((ci->dt == Decode64Bits) || (*(ci->code + 1) >= INST_DIVIDED_MODRM)) { + ps->vexPos = ci->code + 1; ps->decodedPrefixes |= INST_PRE_VEX; ps->prefixExtType = PET_VEX2BYTES; @@ -283,25 +266,26 @@ void prefixes_decode(const uint8_t* code, int codeLen, _PrefixState* ps, _Decode /* -- Convert from VEX prefix to VREX flags -- */ vex = *ps->vexPos; - if (~vex & 0x80 && dt == Decode64Bits) ps->vrex |= PREFIX_EX_R; /* Convert VEX.R. */ + if (!(vex & 0x80) && (ci->dt == Decode64Bits)) ps->vrex |= PREFIX_EX_R; /* Convert VEX.R. */ if (vex & 4) ps->vrex |= PREFIX_EX_L; /* Convert VEX.L. */ - code += 2; + ci->code += 2; + ci->codeLen -= 2; } } /* 3 Bytes VEX: */ - if ((codeLen >= 3) && - (*code == PREFIX_VEX3b) && - ((code - ps->start) <= INST_MAXIMUM_SIZE - 3) && - (~ps->decodedPrefixes & INST_PRE_VEX)) { + if ((ci->codeLen >= 3) && + (*ci->code == PREFIX_VEX3b) && + ((ci->code - start) <= INST_MAXIMUM_SIZE - 3) && + (!(ps->decodedPrefixes & INST_PRE_VEX))) { /* * In 32 bits the second byte has to be in the special range of Mod=11. * Otherwise it might be a normal LES instruction. * And we don't care now about the 3rd byte. */ - if ((dt == Decode64Bits) || (*(code + 1) >= INST_DIVIDED_MODRM)) { - ps->vexPos = code + 1; + if ((ci->dt == Decode64Bits) || (*(ci->code + 1) >= INST_DIVIDED_MODRM)) { + ps->vexPos = ci->code + 1; ps->decodedPrefixes |= INST_PRE_VEX; ps->prefixExtType = PET_VEX3BYTES; @@ -320,49 +304,78 @@ void prefixes_decode(const uint8_t* code, int codeLen, _PrefixState* ps, _Decode if (vex & 0x80) ps->vrex |= PREFIX_EX_W; /* Convert VEX.W. */ /* Clear some flags if the mode isn't 64 bits. */ - if (dt != Decode64Bits) ps->vrex &= ~(PREFIX_EX_B | PREFIX_EX_X | PREFIX_EX_R | PREFIX_EX_W); + if (ci->dt != Decode64Bits) ps->vrex &= ~(PREFIX_EX_B | PREFIX_EX_X | PREFIX_EX_R | PREFIX_EX_W); - code += 3; + ci->code += 3; + ci->codeLen -= 3; } } - /* - * Save last byte scanned address, so the decoder could keep on scanning from this point and on and on and on. - * In addition the decoder is able to know that the last byte could lead to MMX/SSE instructions (preceding REX if exists). - */ - ps->last = code; /* ps->last points to an opcode byte. */ + if (ci->dt == Decode64Bits) { + if (ps->decodedPrefixes & INST_PRE_REX) { + /* REX prefix must precede first byte of instruction. */ + if (rexPos != (ci->code - 1)) { + ps->decodedPrefixes &= ~INST_PRE_REX; + if (ps->prefixExtType == PET_REX) ps->prefixExtType = PET_NONE; /* It might be a VEX by now, keep it that way. */ + prefixes_ignore(ps, PFXIDX_REX); + } + /* + * We will disable operand size prefix, + * if it exists only after decoding the instruction, since it might be a mandatory prefix. + * This will be done after calling inst_lookup in decode_inst. + */ + } + /* In 64 bits, segment overrides of CS, DS, ES and SS are ignored. So don't take'em into account. */ + if (ps->decodedPrefixes & INST_PRE_SEGOVRD_MASK32) { + ps->decodedPrefixes &= ~INST_PRE_SEGOVRD_MASK32; + prefixes_ignore(ps, PFXIDX_SEG); + } + } + + /* Store number of prefixes scanned. */ + ps->count = (uint8_t)(ci->code - start); } /* - * For every memory-indirection operand we want to set its corresponding default segment. - * If the segment is being overrided, we need to see whether we use it or not. - * We will use it only if it's not the default one already. + * For every memory-indirection operand we want to set a used segment. + * If the segment is being overrided with a prefix, we will need to check if it's a default. + * Defaults don't use their prefix, e.g "mov [rsp]" can ignore a given SS: prefix, + * but still set the used segment as SS. + * This function is called only with SS and DS as defaults. + * If there's a segment prefix used, it will override the default one. + * And If the prefix is a default seg in 64 bits, it will be ignored. */ void prefixes_use_segment(_iflags defaultSeg, _PrefixState* ps, _DecodeType dt, _DInst* di) { - _iflags flags = 0; - if (dt == Decode64Bits) flags = ps->decodedPrefixes & INST_PRE_SEGOVRD_MASK64; - else flags = ps->decodedPrefixes & INST_PRE_SEGOVRD_MASK; - - if ((flags == 0) || (flags == defaultSeg)) { - flags = defaultSeg; - di->segment |= SEGMENT_DEFAULT; - } else if (flags != defaultSeg) { - /* Use it only if it's non-default segment. */ - ps->usedPrefixes |= flags; - } + /* Extract given segment prefix from the decoded prefixes. */ + _iflags flags; - /* ASSERT: R_XX must be below 128. */ - switch (flags) - { - case INST_PRE_ES: di->segment |= R_ES; break; - case INST_PRE_CS: di->segment |= R_CS; break; - case INST_PRE_SS: di->segment |= R_SS; break; - case INST_PRE_DS: di->segment |= R_DS; break; - case INST_PRE_FS: di->segment |= R_FS; break; - case INST_PRE_GS: di->segment |= R_GS; break; + if (dt == Decode64Bits) { + if (ps->decodedPrefixes & INST_PRE_SEGOVRD_MASK64) { /* Either GS or FS. */ + di->segment = ps->decodedPrefixes & INST_PRE_GS ? R_GS : R_FS; + } + + return; } - /* If it's one of the CS,SS,DS,ES and the mode is 64 bits, set segment it to none, since it's ignored. */ - if ((dt == Decode64Bits) && (flags & INST_PRE_SEGOVRD_MASK32)) di->segment = R_NONE; + flags = ps->decodedPrefixes & INST_PRE_SEGOVRD_MASK; + + /* Use the given prefix only if it's not the default. */ + if (flags && (flags != defaultSeg)) { + ps->usedPrefixes |= flags; + + switch (flags >> 7) /* INST_PRE_CS is 1 << 7. And the rest of the prefixes follow as bit fields. */ + { + case 1: di->segment = R_CS; break; + case 2: di->segment = R_SS; break; + case 4: di->segment = R_DS; break; + case 8: di->segment = R_ES; break; + case 0x10: di->segment = R_FS; break; + case 0x20: di->segment = R_GS; break; + } + } + else { + if (defaultSeg == INST_PRE_SS) di->segment = SEGMENT_DEFAULT | R_SS; + else di->segment = SEGMENT_DEFAULT | R_DS; + } } diff --git a/NativeCore/Dependencies/distorm/src/prefix.h b/NativeCore/Dependencies/distorm/src/prefix.h index f205e697..bc9b6e7d 100644 --- a/NativeCore/Dependencies/distorm/src/prefix.h +++ b/NativeCore/Dependencies/distorm/src/prefix.h @@ -4,7 +4,7 @@ prefix.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -31,20 +31,19 @@ typedef enum {PFXIDX_NONE = -1, PFXIDX_REX, PFXIDX_LOREP, PFXIDX_SEG, PFXIDX_OP_ */ typedef struct { _iflags decodedPrefixes, usedPrefixes; - const uint8_t *start, *last, *vexPos, *rexPos; - _PrefixExtType prefixExtType; + /* Number of prefixes scanned for current instruction, including VEX! */ + unsigned int count; uint16_t unusedPrefixesMask; + /* Holds the offset to the prefix byte by its type. */ + uint16_t pfxIndexer[PFXIDX_MAX]; + _PrefixExtType prefixExtType; /* Indicates whether the operand size prefix (0x66) was used as a mandatory prefix. */ int isOpSizeMandatory; /* If VEX prefix is used, store the VEX.vvvv field. */ unsigned int vexV; /* The fields B/X/R/W/L of REX and VEX are stored together in this byte. */ unsigned int vrex; - - /* !! Make sure pfxIndexer is LAST! Otherwise memset won't work well with it. !! */ - - /* Holds the offset to the prefix byte by its type. */ - int pfxIndexer[PFXIDX_MAX]; + const uint8_t* vexPos; } _PrefixState; /* @@ -54,11 +53,27 @@ typedef struct { */ #define MAX_PREFIXES (5) -int prefixes_is_valid(unsigned int ch, _DecodeType dt); -void prefixes_ignore(_PrefixState* ps, _PrefixIndexer pi); +extern int PrefixTables[256 * 2]; + +_INLINE_ int prefixes_is_valid(unsigned char ch, _DecodeType dt) +{ + /* The predicate selects (branchlessly) second half table for 64 bits otherwise selects first half. */ + return PrefixTables[ch + ((dt >> 1) << 8)]; +} + +/* Ignore a specific prefix type. */ +_INLINE_ void prefixes_ignore(_PrefixState* ps, _PrefixIndexer pi) +{ + /* + * If that type of prefix appeared already, set the bit of that *former* prefix. + * Anyway, set the new index of that prefix type to the current index, so next time we know its position. + */ + ps->unusedPrefixesMask |= ps->pfxIndexer[pi]; +} + void prefixes_ignore_all(_PrefixState* ps); uint16_t prefixes_set_unused_mask(_PrefixState* ps); -void prefixes_decode(const uint8_t* code, int codeLen, _PrefixState* ps, _DecodeType dt); +void prefixes_decode(_CodeInfo* ci, _PrefixState* ps); void prefixes_use_segment(_iflags defaultSeg, _PrefixState* ps, _DecodeType dt, _DInst* di); #endif /* PREFIX_H */ diff --git a/NativeCore/Dependencies/distorm/src/textdefs.c b/NativeCore/Dependencies/distorm/src/textdefs.c index 48419d91..cf56a8f6 100644 --- a/NativeCore/Dependencies/distorm/src/textdefs.c +++ b/NativeCore/Dependencies/distorm/src/textdefs.c @@ -4,7 +4,7 @@ textdefs.c diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -13,116 +13,84 @@ This library is licensed under the BSD license. See the file COPYING. #ifndef DISTORM_LIGHT -static uint8_t Nibble2ChrTable[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; +static uint8_t Nibble2ChrTable[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; #define NIBBLE_TO_CHR Nibble2ChrTable[t] -void _FASTCALL_ str_hex_b(_WString* s, unsigned int x) +void str_hex(_WString* s, const uint8_t* buf, unsigned int len) { - /* - * def prebuilt(): - * s = "" - * for i in xrange(256): - * if ((i % 0x10) == 0): - * s += "\r\n" - * s += "\"%02X\", " % (i) - * return s - */ - static int8_t TextBTable[256][3] = { - "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", - "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", "1D", "1E", "1F", - "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", - "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", "3E", "3F", - "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", - "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", "5F", - "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6A", "6B", "6C", "6D", "6E", "6F", - "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", - "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", "8B", "8C", "8D", "8E", "8F", - "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", - "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", "AC", "AD", "AE", "AF", - "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", - "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", "CD", "CE", "CF", - "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", - "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF", - "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF" - }; - - /* - * Fixed length of 3 including null terminate character. - */ - memcpy(&s->p[s->length], TextBTable[x & 255], 3); - s->length += 2; + /* 256 * 2 : 2 chars per byte value. */ + static const char* TextBTable = + "000102030405060708090a0b0c0d0e0f" \ + "101112131415161718191a1b1c1d1e1f" \ + "202122232425262728292a2b2c2d2e2f" \ + "303132333435363738393a3b3c3d3e3f" \ + "404142434445464748494a4b4c4d4e4f" \ + "505152535455565758595a5b5c5d5e5f" \ + "606162636465666768696a6b6c6d6e6f" \ + "707172737475767778797a7b7c7d7e7f" \ + "808182838485868788898a8b8c8d8e8f" \ + "909192939495969798999a9b9c9d9e9f" \ + "a0a1a2a3a4a5a6a7a8a9aaabacadaeaf" \ + "b0b1b2b3b4b5b6b7b8b9babbbcbdbebf" \ + "c0c1c2c3c4c5c6c7c8c9cacbcccdcecf" \ + "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf" \ + "e0e1e2e3e4e5e6e7e8e9eaebecedeeef" \ + "f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"; + + unsigned int i = 0; + /* Length is at least 1, enter loop. */ + s->length = len * 2; + s->p[len * 2] = 0; + do { + RSHORT(&s->p[i]) = RSHORT(&TextBTable[(*buf) * 2]); + buf++; + i += 2; + } while (i < len * 2); } -void _FASTCALL_ str_code_hb(_WString* s, unsigned int x) -{ - static int8_t TextHBTable[256][5] = { - /* - * def prebuilt(): - * s = "" - * for i in xrange(256): - * if ((i % 0x10) == 0): - * s += "\r\n" - * s += "\"0x%X\", " % (i) - * return s - */ - "0x0", "0x1", "0x2", "0x3", "0x4", "0x5", "0x6", "0x7", "0x8", "0x9", "0xA", "0xB", "0xC", "0xD", "0xE", "0xF", - "0x10", "0x11", "0x12", "0x13", "0x14", "0x15", "0x16", "0x17", "0x18", "0x19", "0x1A", "0x1B", "0x1C", "0x1D", "0x1E", "0x1F", - "0x20", "0x21", "0x22", "0x23", "0x24", "0x25", "0x26", "0x27", "0x28", "0x29", "0x2A", "0x2B", "0x2C", "0x2D", "0x2E", "0x2F", - "0x30", "0x31", "0x32", "0x33", "0x34", "0x35", "0x36", "0x37", "0x38", "0x39", "0x3A", "0x3B", "0x3C", "0x3D", "0x3E", "0x3F", - "0x40", "0x41", "0x42", "0x43", "0x44", "0x45", "0x46", "0x47", "0x48", "0x49", "0x4A", "0x4B", "0x4C", "0x4D", "0x4E", "0x4F", - "0x50", "0x51", "0x52", "0x53", "0x54", "0x55", "0x56", "0x57", "0x58", "0x59", "0x5A", "0x5B", "0x5C", "0x5D", "0x5E", "0x5F", - "0x60", "0x61", "0x62", "0x63", "0x64", "0x65", "0x66", "0x67", "0x68", "0x69", "0x6A", "0x6B", "0x6C", "0x6D", "0x6E", "0x6F", - "0x70", "0x71", "0x72", "0x73", "0x74", "0x75", "0x76", "0x77", "0x78", "0x79", "0x7A", "0x7B", "0x7C", "0x7D", "0x7E", "0x7F", - "0x80", "0x81", "0x82", "0x83", "0x84", "0x85", "0x86", "0x87", "0x88", "0x89", "0x8A", "0x8B", "0x8C", "0x8D", "0x8E", "0x8F", - "0x90", "0x91", "0x92", "0x93", "0x94", "0x95", "0x96", "0x97", "0x98", "0x99", "0x9A", "0x9B", "0x9C", "0x9D", "0x9E", "0x9F", - "0xA0", "0xA1", "0xA2", "0xA3", "0xA4", "0xA5", "0xA6", "0xA7", "0xA8", "0xA9", "0xAA", "0xAB", "0xAC", "0xAD", "0xAE", "0xAF", - "0xB0", "0xB1", "0xB2", "0xB3", "0xB4", "0xB5", "0xB6", "0xB7", "0xB8", "0xB9", "0xBA", "0xBB", "0xBC", "0xBD", "0xBE", "0xBF", - "0xC0", "0xC1", "0xC2", "0xC3", "0xC4", "0xC5", "0xC6", "0xC7", "0xC8", "0xC9", "0xCA", "0xCB", "0xCC", "0xCD", "0xCE", "0xCF", - "0xD0", "0xD1", "0xD2", "0xD3", "0xD4", "0xD5", "0xD6", "0xD7", "0xD8", "0xD9", "0xDA", "0xDB", "0xDC", "0xDD", "0xDE", "0xDF", - "0xE0", "0xE1", "0xE2", "0xE3", "0xE4", "0xE5", "0xE6", "0xE7", "0xE8", "0xE9", "0xEA", "0xEB", "0xEC", "0xED", "0xEE", "0xEF", - "0xF0", "0xF1", "0xF2", "0xF3", "0xF4", "0xF5", "0xF6", "0xF7", "0xF8", "0xF9", "0xFA", "0xFB", "0xFC", "0xFD", "0xFE", "0xFF" - }; - - if (x < 0x10) { /* < 0x10 has a fixed length of 4 including null terminate. */ - memcpy(&s->p[s->length], TextHBTable[x & 255], 4); - s->length += 3; - } else { /* >= 0x10 has a fixed length of 5 including null terminate. */ - memcpy(&s->p[s->length], TextHBTable[x & 255], 5); - s->length += 4; - } -} +#ifdef SUPPORT_64BIT_OFFSET -void _FASTCALL_ str_code_hdw(_WString* s, uint32_t x) +void str_int_impl(unsigned char** s, uint64_t x) { int8_t* buf; - int i = 0, shift = 0; - unsigned int t = 0; + int shift = 0; + OFFSET_INTEGER t = x; - buf = (int8_t*)&s->p[s->length]; + buf = (int8_t*)*s; - buf[0] = '0'; - buf[1] = 'x'; - buf += 2; + *buf++ = '0'; + *buf++ = 'x'; - for (shift = 28; shift != 0; shift -= 4) { - t = (x >> shift) & 0xf; - if (i | t) buf[i++] = NIBBLE_TO_CHR; + if (x == 0) { + *buf = '0'; + *s += 3; + return; } - t = x & 0xf; - buf[i++] = NIBBLE_TO_CHR; - s->length += i + 2; - buf[i] = '\0'; + do { + t >>= 4; + shift += 4; + } while (t); + + do { + shift -= 4; + t = (x >> shift) & 0xf; + *buf++ = NIBBLE_TO_CHR; + } while (shift > 0); + + *s = (unsigned char*)buf; } -void _FASTCALL_ str_code_hqw(_WString* s, uint8_t src[8]) +#else + +void str_int_impl(unsigned char** s, uint8_t src[8]) { int8_t* buf; int i = 0, shift = 0; uint32_t x = RULONG(&src[sizeof(int32_t)]); int t; - buf = (int8_t*)&s->p[s->length]; + buf = (int8_t*)*s; buf[0] = '0'; buf[1] = 'x'; buf += 2; @@ -140,33 +108,9 @@ void _FASTCALL_ str_code_hqw(_WString* s, uint8_t src[8]) t = x & 0xf; buf[i++] = NIBBLE_TO_CHR; - s->length += i + 2; - buf[i] = '\0'; + *s += (size_t)(i + 2); } -#ifdef SUPPORT_64BIT_OFFSET -void _FASTCALL_ str_off64(_WString* s, OFFSET_INTEGER x) -{ - int8_t* buf; - int i = 0, shift = 0; - OFFSET_INTEGER t = 0; - - buf = (int8_t*)&s->p[s->length]; - - buf[0] = '0'; - buf[1] = 'x'; - buf += 2; - - for (shift = 60; shift != 0; shift -= 4) { - t = (x >> shift) & 0xf; - if (i | t) buf[i++] = NIBBLE_TO_CHR; - } - t = x & 0xf; - buf[i++] = NIBBLE_TO_CHR; - - s->length += i + 2; - buf[i] = '\0'; -} #endif /* SUPPORT_64BIT_OFFSET */ #endif /* DISTORM_LIGHT */ diff --git a/NativeCore/Dependencies/distorm/src/textdefs.h b/NativeCore/Dependencies/distorm/src/textdefs.h index a923626f..27170bb3 100644 --- a/NativeCore/Dependencies/distorm/src/textdefs.h +++ b/NativeCore/Dependencies/distorm/src/textdefs.h @@ -4,7 +4,7 @@ textdefs.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -43,13 +43,14 @@ Naming Convention: * all numbers are in HEX. */ -void _FASTCALL_ str_hex_b(_WString* s, unsigned int x); -void _FASTCALL_ str_code_hb(_WString* s, unsigned int x); -void _FASTCALL_ str_code_hdw(_WString* s, uint32_t x); -void _FASTCALL_ str_code_hqw(_WString* s, uint8_t src[8]); +void str_hex(_WString* s, const uint8_t* buf, unsigned int len); #ifdef SUPPORT_64BIT_OFFSET -void _FASTCALL_ str_off64(_WString* s, OFFSET_INTEGER x); +#define str_int(s, x) str_int_impl((s), (x)) +void str_int_impl(unsigned char** s, uint64_t x); +#else +#define str_int(s, x) str_int_impl((s), (uint8_t*)&(x)) +void str_int_impl(unsigned char** s, uint8_t src[8]); #endif #endif /* DISTORM_LIGHT */ diff --git a/NativeCore/Dependencies/distorm/src/wstring.h b/NativeCore/Dependencies/distorm/src/wstring.h index 6b3a2a3f..6303f90d 100644 --- a/NativeCore/Dependencies/distorm/src/wstring.h +++ b/NativeCore/Dependencies/distorm/src/wstring.h @@ -4,7 +4,7 @@ wstring.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ @@ -13,22 +13,25 @@ This library is licensed under the BSD license. See the file COPYING. #define WSTRING_H #include "config.h" +#include "../include/mnemonics.h" #ifndef DISTORM_LIGHT -void strclear_WS(_WString* s); -void chrcat_WS(_WString* s, uint8_t ch); -void strcpylen_WS(_WString* s, const int8_t* buf, unsigned int len); -void strcatlen_WS(_WString* s, const int8_t* buf, unsigned int len); -void strcat_WS(_WString* s, const _WString* s2); - -/* -* Warning, this macro should be used only when the compiler knows the size of string in advance! -* This macro is used in order to spare the call to strlen when the strings are known already. -* Note: sizeof includes NULL terminated character. -*/ -#define strcat_WSN(s, t) strcatlen_WS((s), ((const int8_t*)t), sizeof((t))-1) -#define strcpy_WSN(s, t) strcpylen_WS((s), ((const int8_t*)t), sizeof((t))-1) +_INLINE_ void strcat_WSR(unsigned char** str, const _WRegister* reg) +{ + /* + * Longest register name is YMM15 - 5 characters, + * Copy 8 so compiler can do a QWORD move. + * We copy nul termination and fix the length, so it's okay to copy more to the output buffer. + * There's a sentinel register to make sure we don't read past the end of the registers table. + */ + memcpy((int8_t*)*str, (const int8_t*)reg->p, 8); + *str += reg->length; +} + +#define strfinalize_WS(s, end) do { *end = 0; s.length = (unsigned int)((size_t)end - (size_t)s.p); } while (0) +#define chrcat_WS(s, ch) do { *s = ch; s += 1; } while (0) +#define strcat_WS(s, buf, copylen, advancelen) do { memcpy((int8_t*)s, buf, copylen); s += advancelen; } while(0) #endif /* DISTORM_LIGHT */ diff --git a/NativeCore/Dependencies/distorm/src/x86defs.h b/NativeCore/Dependencies/distorm/src/x86defs.h index ca3a3adf..8b7b5414 100644 --- a/NativeCore/Dependencies/distorm/src/x86defs.h +++ b/NativeCore/Dependencies/distorm/src/x86defs.h @@ -4,7 +4,7 @@ x86defs.h diStorm3 - Powerful disassembler for X86/AMD64 http://ragestorm.net/distorm/ distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah +Copyright (C) 2003-2021 Gil Dabah This library is licensed under the BSD license. See the file COPYING. */ diff --git a/NativeCore/Unix/Makefile b/NativeCore/Unix/Makefile index 1a99feff..12c8b33b 100644 --- a/NativeCore/Unix/Makefile +++ b/NativeCore/Unix/Makefile @@ -35,9 +35,9 @@ OBJDIR_RELEASE = obj/release DEP_RELEASE = OUT_RELEASE = build/release/NativeCore.so -OBJ_DEBUG = $(OBJDIR_DEBUG)/WriteRemoteMemory.o $(OBJDIR_DEBUG)/ReadRemoteMemory.o $(OBJDIR_DEBUG)/OpenRemoteProcess.o $(OBJDIR_DEBUG)/IsProcessValid.o $(OBJDIR_DEBUG)/Input.o $(OBJDIR_DEBUG)/EnumerateRemoteSectionsAndModules.o $(OBJDIR_DEBUG)/EnumerateProcesses.o $(OBJDIR_DEBUG)/DisassembleCode.o $(OBJDIR_DEBUG)/DistormHelper.o $(OBJDIR_DEBUG)/Debugger.o $(OBJDIR_DEBUG)/ControlRemoteProcess.o $(OBJDIR_DEBUG)/CloseRemoteProcess.o $(OBJDIR_DEBUG)/decoder.o $(OBJDIR_DEBUG)/distorm.o $(OBJDIR_DEBUG)/instructions.o $(OBJDIR_DEBUG)/insts.o $(OBJDIR_DEBUG)/mnemonics.o $(OBJDIR_DEBUG)/operands.o $(OBJDIR_DEBUG)/prefix.o $(OBJDIR_DEBUG)/textdefs.o $(OBJDIR_DEBUG)/wstring.o +OBJ_DEBUG = $(OBJDIR_DEBUG)/WriteRemoteMemory.o $(OBJDIR_DEBUG)/ReadRemoteMemory.o $(OBJDIR_DEBUG)/OpenRemoteProcess.o $(OBJDIR_DEBUG)/IsProcessValid.o $(OBJDIR_DEBUG)/Input.o $(OBJDIR_DEBUG)/EnumerateRemoteSectionsAndModules.o $(OBJDIR_DEBUG)/EnumerateProcesses.o $(OBJDIR_DEBUG)/DisassembleCode.o $(OBJDIR_DEBUG)/DistormHelper.o $(OBJDIR_DEBUG)/Debugger.o $(OBJDIR_DEBUG)/ControlRemoteProcess.o $(OBJDIR_DEBUG)/CloseRemoteProcess.o $(OBJDIR_DEBUG)/decoder.o $(OBJDIR_DEBUG)/distorm.o $(OBJDIR_DEBUG)/instructions.o $(OBJDIR_DEBUG)/insts.o $(OBJDIR_DEBUG)/mnemonics.o $(OBJDIR_DEBUG)/operands.o $(OBJDIR_DEBUG)/prefix.o $(OBJDIR_DEBUG)/textdefs.o -OBJ_RELEASE = $(OBJDIR_RELEASE)/WriteRemoteMemory.o $(OBJDIR_RELEASE)/ReadRemoteMemory.o $(OBJDIR_RELEASE)/OpenRemoteProcess.o $(OBJDIR_RELEASE)/IsProcessValid.o $(OBJDIR_RELEASE)/Input.o $(OBJDIR_RELEASE)/EnumerateRemoteSectionsAndModules.o $(OBJDIR_RELEASE)/EnumerateProcesses.o $(OBJDIR_RELEASE)/DisassembleCode.o $(OBJDIR_RELEASE)/DistormHelper.o $(OBJDIR_RELEASE)/Debugger.o $(OBJDIR_RELEASE)/ControlRemoteProcess.o $(OBJDIR_RELEASE)/CloseRemoteProcess.o $(OBJDIR_RELEASE)/decoder.o $(OBJDIR_RELEASE)/distorm.o $(OBJDIR_RELEASE)/instructions.o $(OBJDIR_RELEASE)/insts.o $(OBJDIR_RELEASE)/mnemonics.o $(OBJDIR_RELEASE)/operands.o $(OBJDIR_RELEASE)/prefix.o $(OBJDIR_RELEASE)/textdefs.o $(OBJDIR_RELEASE)/wstring.o +OBJ_RELEASE = $(OBJDIR_RELEASE)/WriteRemoteMemory.o $(OBJDIR_RELEASE)/ReadRemoteMemory.o $(OBJDIR_RELEASE)/OpenRemoteProcess.o $(OBJDIR_RELEASE)/IsProcessValid.o $(OBJDIR_RELEASE)/Input.o $(OBJDIR_RELEASE)/EnumerateRemoteSectionsAndModules.o $(OBJDIR_RELEASE)/EnumerateProcesses.o $(OBJDIR_RELEASE)/DisassembleCode.o $(OBJDIR_RELEASE)/DistormHelper.o $(OBJDIR_RELEASE)/Debugger.o $(OBJDIR_RELEASE)/ControlRemoteProcess.o $(OBJDIR_RELEASE)/CloseRemoteProcess.o $(OBJDIR_RELEASE)/decoder.o $(OBJDIR_RELEASE)/distorm.o $(OBJDIR_RELEASE)/instructions.o $(OBJDIR_RELEASE)/insts.o $(OBJDIR_RELEASE)/mnemonics.o $(OBJDIR_RELEASE)/operands.o $(OBJDIR_RELEASE)/prefix.o $(OBJDIR_RELEASE)/textdefs.o all: debug release @@ -114,9 +114,6 @@ $(OBJDIR_DEBUG)/prefix.o: ../Dependencies/distorm/src/prefix.c $(OBJDIR_DEBUG)/textdefs.o: ../Dependencies/distorm/src/textdefs.c $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR_DEBUG)/textdefs.o -$(OBJDIR_DEBUG)/wstring.o: ../Dependencies/distorm/src/wstring.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/wstring.c -o $(OBJDIR_DEBUG)/wstring.o - clean_debug: rm -f $(OBJ_DEBUG) $(OUT_DEBUG) rm -rf build/debug @@ -193,9 +190,6 @@ $(OBJDIR_RELEASE)/prefix.o: ../Dependencies/distorm/src/prefix.c $(OBJDIR_RELEASE)/textdefs.o: ../Dependencies/distorm/src/textdefs.c $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR_RELEASE)/textdefs.o -$(OBJDIR_RELEASE)/wstring.o: ../Dependencies/distorm/src/wstring.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/wstring.c -o $(OBJDIR_RELEASE)/wstring.o - clean_release: rm -f $(OBJ_RELEASE) $(OUT_RELEASE) rm -rf build/release diff --git a/NativeCore/Unix/NativeCore.Unix.vcxproj b/NativeCore/Unix/NativeCore.Unix.vcxproj index 539434ad..c1f08598 100644 --- a/NativeCore/Unix/NativeCore.Unix.vcxproj +++ b/NativeCore/Unix/NativeCore.Unix.vcxproj @@ -84,7 +84,6 @@ - diff --git a/NativeCore/Unix/NativeCore.Unix.vcxproj.filters b/NativeCore/Unix/NativeCore.Unix.vcxproj.filters index bbefa0a1..3076be6b 100644 --- a/NativeCore/Unix/NativeCore.Unix.vcxproj.filters +++ b/NativeCore/Unix/NativeCore.Unix.vcxproj.filters @@ -72,9 +72,6 @@ Dependencies\distorm - - Dependencies\distorm - Shared @@ -115,9 +112,6 @@ Dependencies\distorm - - Dependencies\distorm - Dependencies\distorm diff --git a/NativeCore/Windows/NativeCore.vcxproj b/NativeCore/Windows/NativeCore.vcxproj index 520adc23..565980de 100644 --- a/NativeCore/Windows/NativeCore.vcxproj +++ b/NativeCore/Windows/NativeCore.vcxproj @@ -178,7 +178,6 @@ - diff --git a/NativeCore/Windows/NativeCore.vcxproj.filters b/NativeCore/Windows/NativeCore.vcxproj.filters index a8eb2be9..eb42b939 100644 --- a/NativeCore/Windows/NativeCore.vcxproj.filters +++ b/NativeCore/Windows/NativeCore.vcxproj.filters @@ -58,9 +58,6 @@ Dependencies\distorm - - Dependencies\distorm - Shared From d95a424ffdd1d0b8183e4f1c3f4f18968393040b Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Thu, 13 May 2021 21:34:09 +0200 Subject: [PATCH 02/17] Handle not decodable instructions. --- NativeCore/Shared/DistormHelper.cpp | 121 +++++++++++++--------------- 1 file changed, 54 insertions(+), 67 deletions(-) diff --git a/NativeCore/Shared/DistormHelper.cpp b/NativeCore/Shared/DistormHelper.cpp index dbc08ad8..9d8d9e85 100644 --- a/NativeCore/Shared/DistormHelper.cpp +++ b/NativeCore/Shared/DistormHelper.cpp @@ -58,99 +58,87 @@ bool AreOperandsStatic(const _DInst &instruction, const int prefixLength) return true; } -int GetStaticInstructionBytes(const _DInst &instruction, const uint8_t *data) +_CodeInfo CreateCodeInfo(const uint8_t* address, int length, const _OffsetType virtualAddress) { _CodeInfo info = {}; - info.codeOffset = reinterpret_cast<_OffsetType>(data); - info.code = data; - info.codeLen = instruction.size; + info.codeOffset = virtualAddress; + info.code = address; + info.codeLen = length; info.features = DF_NONE; + #ifdef RECLASSNET32 info.dt = Decode32Bits; #else info.dt = Decode64Bits; #endif - _PrefixState ps = {}; - memset(ps.pfxIndexer, PFXIDX_NONE, sizeof(int) * PFXIDX_MAX); - ps.start = data; - ps.last = data; - - prefixes_decode(data, info.codeLen, &ps, info.dt); + return info; +} - info.codeOffset = reinterpret_cast<_OffsetType>(ps.last); - info.code = ps.last; - const auto prefixLength = static_cast(ps.start - ps.last); - info.codeLen -= prefixLength; +int GetStaticInstructionBytes(const _DInst &instruction, const uint8_t *data) +{ + auto info = CreateCodeInfo(data, instruction.size, reinterpret_cast<_OffsetType>(data)); - inst_lookup(&info, &ps); + _PrefixState ps = {}; + int isPrefixed; + inst_lookup(&info, &ps, &isPrefixed); - if (AreOperandsStatic(instruction, prefixLength)) + if (AreOperandsStatic(instruction, ps.count)) { return instruction.size; } - return instruction.size - info.codeLen; + return instruction.size - info.codeLen - ps.count; } -_CodeInfo CreateCodeInfo(const RC_Pointer address, const RC_Size length, const RC_Pointer virtualAddress) -{ - _CodeInfo info = {}; - info.codeOffset = reinterpret_cast<_OffsetType>(virtualAddress); - info.code = reinterpret_cast(address); - info.codeLen = static_cast(length); - info.features = DF_NONE; - -#ifdef RECLASSNET32 - info.dt = Decode32Bits; -#else - info.dt = Decode64Bits; -#endif - - return info; -} - -void FillInstructionData(const RC_Pointer address, const _DInst& instruction, const _DecodedInst& instructionInfo, const bool determineStaticInstructionBytes, InstructionData* data) +void FillInstructionData(const _CodeInfo& info, const RC_Pointer address, const _DInst& instruction, const bool determineStaticInstructionBytes, InstructionData* data) { data->Address = reinterpret_cast(instruction.addr); - data->Length = instructionInfo.size; - std::memcpy(data->Data, address, instructionInfo.size); - - MultiByteToUnicode( - reinterpret_cast(instructionInfo.mnemonic.p), - data->Instruction, - instructionInfo.mnemonic.length - ); - if (instructionInfo.operands.length != 0) - { - data->Instruction[instructionInfo.mnemonic.length] = ' '; - - MultiByteToUnicode( - reinterpret_cast(instructionInfo.operands.p), - 0, - data->Instruction, - instructionInfo.mnemonic.length + 1, - std::min(64 - 1 - instructionInfo.mnemonic.length, instructionInfo.operands.length) - ); - } + data->Length = instruction.size; + std::memcpy(data->Data, address, instruction.size); + data->StaticInstructionBytes = -1; - if (determineStaticInstructionBytes) + if (instruction.flags == FLAG_NOT_DECODABLE) { - data->StaticInstructionBytes = GetStaticInstructionBytes( - instruction, - reinterpret_cast(address) - ); + std::memcpy(data->Instruction, L"???", sizeof(RC_UnicodeChar) * 3); } else { - data->StaticInstructionBytes = -1; + _DecodedInst instructionInfo = {}; + distorm_format(&info, &instruction, &instructionInfo); + + MultiByteToUnicode( + reinterpret_cast(instructionInfo.mnemonic.p), + data->Instruction, + instructionInfo.mnemonic.length + ); + if (instructionInfo.operands.length != 0) + { + data->Instruction[instructionInfo.mnemonic.length] = ' '; + + MultiByteToUnicode( + reinterpret_cast(instructionInfo.operands.p), + 0, + data->Instruction, + instructionInfo.mnemonic.length + 1, + std::min(64 - 1 - instructionInfo.mnemonic.length, instructionInfo.operands.length) + ); + } + + if (determineStaticInstructionBytes) + { + data->StaticInstructionBytes = GetStaticInstructionBytes( + instruction, + reinterpret_cast(address) + ); + } } } bool DisassembleInstructionsImpl(const RC_Pointer address, const RC_Size length, const RC_Pointer virtualAddress, const bool determineStaticInstructionBytes, EnumerateInstructionCallback callback) { - auto info = CreateCodeInfo(address, length, virtualAddress); + auto info = CreateCodeInfo(static_cast(address), static_cast(length), reinterpret_cast<_OffsetType>(virtualAddress)); const unsigned MaxInstructions = 50; @@ -169,18 +157,17 @@ bool DisassembleInstructionsImpl(const RC_Pointer address, const RC_Size length, for (auto i = 0u; i < count; ++i) { - _DecodedInst instructionInfo = {}; - distorm_format(&info, &decodedInstructions[i], &instructionInfo); + const auto& instruction = decodedInstructions[i]; InstructionData data = {}; - FillInstructionData(instructionAddress, decodedInstructions[i], instructionInfo, determineStaticInstructionBytes, &data); + FillInstructionData(info, instructionAddress, instruction, determineStaticInstructionBytes, &data); if (callback(&data) == false) { return true; } - instructionAddress += decodedInstructions[i].size; + instructionAddress += instruction.size; } if (res == DECRES_SUCCESS || count == 0) @@ -188,7 +175,7 @@ bool DisassembleInstructionsImpl(const RC_Pointer address, const RC_Size length, return true; } - const auto offset = static_cast(decodedInstructions[count - 1].addr - info.codeOffset); + const auto offset = static_cast(decodedInstructions[count - 1].addr + decodedInstructions[count - 1].size - info.codeOffset); info.codeOffset += offset; info.code += offset; From 0ee8a4cd6a00e2664f2ef3250a81089c32d69392 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Fri, 18 Jun 2021 08:18:39 +0200 Subject: [PATCH 03/17] Fixed button anchor. (fixes #200) --- ReClass.NET/Forms/ScannerForm.Designer.cs | 67 ++++++++++++----------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/ReClass.NET/Forms/ScannerForm.Designer.cs b/ReClass.NET/Forms/ScannerForm.Designer.cs index 58d867ea..d6fd02ac 100644 --- a/ReClass.NET/Forms/ScannerForm.Designer.cs +++ b/ReClass.NET/Forms/ScannerForm.Designer.cs @@ -31,14 +31,14 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - this.bannerBox = new BannerBox(); + this.bannerBox = new ReClassNET.Controls.BannerBox(); this.filterGroupBox = new System.Windows.Forms.GroupBox(); this.valueTypeComboBox = new ReClassNET.Forms.ScannerForm.ScanValueTypeComboBox(); this.label3 = new System.Windows.Forms.Label(); this.compareTypeComboBox = new ReClassNET.Forms.ScannerForm.ScanCompareTypeComboBox(); this.label1 = new System.Windows.Forms.Label(); this.isHexCheckBox = new System.Windows.Forms.CheckBox(); - this.dualValueBox = new DualValueBox(); + this.dualValueBox = new ReClassNET.Controls.DualValueBox(); this.scanOptionsGroupBox = new System.Windows.Forms.GroupBox(); this.fastScanAlignmentTextBox = new System.Windows.Forms.TextBox(); this.fastScanCheckBox = new System.Windows.Forms.CheckBox(); @@ -67,7 +67,7 @@ private void InitializeComponent() this.scanProgressBar = new System.Windows.Forms.ProgressBar(); this.resultCountLabel = new System.Windows.Forms.Label(); this.updateValuesTimer = new System.Windows.Forms.Timer(this.components); - this.resultMemoryRecordList = new MemoryRecordList(); + this.resultMemoryRecordList = new ReClassNET.Controls.MemoryRecordList(); this.resultListContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); this.addSelectedResultsToAddressListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeSelectedRecordsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -84,7 +84,7 @@ private void InitializeComponent() this.findOutWhatWritesToThisAddressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.copyAddressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addressListMemoryRecordList = new MemoryRecordList(); + this.addressListMemoryRecordList = new ReClassNET.Controls.MemoryRecordList(); this.toolStripPanel = new System.Windows.Forms.ToolStripPanel(); this.menuToolStrip = new System.Windows.Forms.ToolStrip(); this.openAddressFileToolStripButton = new System.Windows.Forms.ToolStripButton(); @@ -93,9 +93,9 @@ private void InitializeComponent() this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.clearAddressListToolStripButton = new System.Windows.Forms.ToolStripButton(); this.infoToolTip = new System.Windows.Forms.ToolTip(this.components); - this.undoIconButton = new IconButton(); - this.showInputCorrelatorIconButton = new IconButton(); - this.cancelScanIconButton = new IconButton(); + this.undoIconButton = new ReClassNET.Controls.IconButton(); + this.showInputCorrelatorIconButton = new ReClassNET.Controls.IconButton(); + this.cancelScanIconButton = new ReClassNET.Controls.IconButton(); ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); this.filterGroupBox.SuspendLayout(); this.scanOptionsGroupBox.SuspendLayout(); @@ -503,8 +503,8 @@ private void InitializeComponent() // // resultMemoryRecordList // - this.resultMemoryRecordList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); + this.resultMemoryRecordList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.resultMemoryRecordList.ContextMenuStrip = this.resultListContextMenuStrip; this.resultMemoryRecordList.Location = new System.Drawing.Point(11, 80); this.resultMemoryRecordList.Name = "resultMemoryRecordList"; @@ -515,22 +515,22 @@ private void InitializeComponent() this.resultMemoryRecordList.ShowValueTypeColumn = false; this.resultMemoryRecordList.Size = new System.Drawing.Size(268, 314); this.resultMemoryRecordList.TabIndex = 16; - this.resultMemoryRecordList.RecordDoubleClick += new MemorySearchResultControlResultDoubleClickEventHandler(this.memorySearchResultControl_ResultDoubleClick); + this.resultMemoryRecordList.RecordDoubleClick += new ReClassNET.Controls.MemorySearchResultControlResultDoubleClickEventHandler(this.memorySearchResultControl_ResultDoubleClick); // // resultListContextMenuStrip // this.resultListContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.addSelectedResultsToAddressListToolStripMenuItem, - this.removeSelectedRecordsToolStripMenuItem, - this.changeToolStripMenuItem, - this.toolStripSeparator2, - this.setCurrentClassAddressToolStripMenuItem, - this.createClassAtAddressToolStripMenuItem, - this.toolStripSeparator3, - this.findOutWhatAccessesThisAddressToolStripMenuItem, - this.findOutWhatWritesToThisAddressToolStripMenuItem, - this.toolStripSeparator4, - this.copyAddressToolStripMenuItem}); + this.addSelectedResultsToAddressListToolStripMenuItem, + this.removeSelectedRecordsToolStripMenuItem, + this.changeToolStripMenuItem, + this.toolStripSeparator2, + this.setCurrentClassAddressToolStripMenuItem, + this.createClassAtAddressToolStripMenuItem, + this.toolStripSeparator3, + this.findOutWhatAccessesThisAddressToolStripMenuItem, + this.findOutWhatWritesToThisAddressToolStripMenuItem, + this.toolStripSeparator4, + this.copyAddressToolStripMenuItem}); this.resultListContextMenuStrip.Name = "resultListContextMenuStrip"; this.resultListContextMenuStrip.Size = new System.Drawing.Size(270, 198); this.resultListContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.resultListContextMenuStrip_Opening); @@ -554,10 +554,10 @@ private void InitializeComponent() // changeToolStripMenuItem // this.changeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.descriptionToolStripMenuItem, - this.addressToolStripMenuItem, - this.valueTypeToolStripMenuItem, - this.valueToolStripMenuItem}); + this.descriptionToolStripMenuItem, + this.addressToolStripMenuItem, + this.valueTypeToolStripMenuItem, + this.valueToolStripMenuItem}); this.changeToolStripMenuItem.Enabled = false; this.changeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Textfield_Rename; this.changeToolStripMenuItem.Name = "changeToolStripMenuItem"; @@ -645,9 +645,9 @@ private void InitializeComponent() // // addressListMemoryRecordList // - this.addressListMemoryRecordList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); + this.addressListMemoryRecordList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.addressListMemoryRecordList.ContextMenuStrip = this.resultListContextMenuStrip; this.addressListMemoryRecordList.Location = new System.Drawing.Point(11, 425); this.addressListMemoryRecordList.Name = "addressListMemoryRecordList"; @@ -674,11 +674,11 @@ private void InitializeComponent() this.menuToolStrip.Dock = System.Windows.Forms.DockStyle.None; this.menuToolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; this.menuToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.openAddressFileToolStripButton, - this.saveAddressFileToolStripButton, - this.saveAddressFileAsToolStripButton, - this.toolStripSeparator1, - this.clearAddressListToolStripButton}); + this.openAddressFileToolStripButton, + this.saveAddressFileToolStripButton, + this.saveAddressFileAsToolStripButton, + this.toolStripSeparator1, + this.clearAddressListToolStripButton}); this.menuToolStrip.Location = new System.Drawing.Point(0, 0); this.menuToolStrip.Name = "menuToolStrip"; this.menuToolStrip.Size = new System.Drawing.Size(101, 25); @@ -759,6 +759,7 @@ private void InitializeComponent() // // cancelScanIconButton // + this.cancelScanIconButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.cancelScanIconButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Delete; this.cancelScanIconButton.Location = new System.Drawing.Point(517, 54); this.cancelScanIconButton.Name = "cancelScanIconButton"; From 378ad2994201197732572fb5064d39ce6605c3e0 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Sun, 12 Sep 2021 10:45:31 +0200 Subject: [PATCH 04/17] Fixed writing two bytes instead of one. --- ReClass.NET/Extensions/IRemoteMemoryWriterExtension.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReClass.NET/Extensions/IRemoteMemoryWriterExtension.cs b/ReClass.NET/Extensions/IRemoteMemoryWriterExtension.cs index c587a2d1..d39dace9 100644 --- a/ReClass.NET/Extensions/IRemoteMemoryWriterExtension.cs +++ b/ReClass.NET/Extensions/IRemoteMemoryWriterExtension.cs @@ -6,9 +6,9 @@ namespace ReClassNET.Extensions { public static class IRemoteMemoryWriterExtension { - public static void WriteRemoteMemory(this IRemoteMemoryWriter writer, IntPtr address, sbyte value) => writer.WriteRemoteMemory(address, writer.BitConverter.GetBytes(value)); + public static void WriteRemoteMemory(this IRemoteMemoryWriter writer, IntPtr address, sbyte value) => writer.WriteRemoteMemory(address, new[] { (byte)value }); - public static void WriteRemoteMemory(this IRemoteMemoryWriter writer, IntPtr address, byte value) => writer.WriteRemoteMemory(address, writer.BitConverter.GetBytes(value)); + public static void WriteRemoteMemory(this IRemoteMemoryWriter writer, IntPtr address, byte value) => writer.WriteRemoteMemory(address, new[] { value }); public static void WriteRemoteMemory(this IRemoteMemoryWriter writer, IntPtr address, short value) => writer.WriteRemoteMemory(address, writer.BitConverter.GetBytes(value)); From e4d420d3355098fee4b2a7b8ebbf0dc02a3da281 Mon Sep 17 00:00:00 2001 From: ko1N Date: Fri, 8 Oct 2021 11:03:14 +0200 Subject: [PATCH 05/17] Fixed a crash where using the 'Insert Bytes' menu on the topmost class would throw an Exception --- ReClass.NET/Nodes/BaseContainerNode.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReClass.NET/Nodes/BaseContainerNode.cs b/ReClass.NET/Nodes/BaseContainerNode.cs index 6926111f..d7c53571 100644 --- a/ReClass.NET/Nodes/BaseContainerNode.cs +++ b/ReClass.NET/Nodes/BaseContainerNode.cs @@ -243,8 +243,9 @@ public void AddBytes(int size) public void InsertBytes(BaseNode position, int size) { + int index = FindNodeIndex(position); List dummy = null; - InsertBytes(FindNodeIndex(position), size, ref dummy); + InsertBytes(index >= 0 ? index : 0, size, ref dummy); } /// Inserts bytes at the specified position. From 22d6f30d37c9f62c8e040b069b71e118e532e807 Mon Sep 17 00:00:00 2001 From: ko1N Date: Fri, 8 Oct 2021 14:20:04 +0200 Subject: [PATCH 06/17] Disabled 'Insert Bytes' menu when selecting a class --- ReClass.NET/Forms/MainForm.cs | 9 +++++---- ReClass.NET/Nodes/BaseContainerNode.cs | 3 +-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index e9a18b38..010eea25 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -495,7 +495,7 @@ private void selectedNodeContextMenuStrip_Opening(object sender, CancelEventArgs }; addBytesToolStripMenuItem.Enabled = parentNode != null || nodeIsClass; - insertBytesToolStripMenuItem.Enabled = count == 1 && parentNode != null; + insertBytesToolStripMenuItem.Enabled = count == 1 && parentNode != null && !nodeIsClass; changeTypeToolStripMenuItem.Enabled = count > 0 && !nodeIsClass; @@ -829,11 +829,12 @@ private void memoryViewControl_SelectionChanged(object sender, EventArgs e) var node = selectedNodes.FirstOrDefault()?.Node; var parentContainer = node?.GetParentContainer(); + var nodeIsClass = node is ClassNode; - addBytesToolStripDropDownButton.Enabled = parentContainer != null || node is ClassNode; - insertBytesToolStripDropDownButton.Enabled = selectedNodes.Count == 1 && parentContainer != null; + addBytesToolStripDropDownButton.Enabled = parentContainer != null || nodeIsClass; + insertBytesToolStripDropDownButton.Enabled = selectedNodes.Count == 1 && parentContainer != null && !nodeIsClass; - var enabled = selectedNodes.Count > 0 && !(node is ClassNode); + var enabled = selectedNodes.Count > 0 && !nodeIsClass; toolStrip.Items.OfType().ForEach(b => b.Enabled = enabled); } diff --git a/ReClass.NET/Nodes/BaseContainerNode.cs b/ReClass.NET/Nodes/BaseContainerNode.cs index d7c53571..6926111f 100644 --- a/ReClass.NET/Nodes/BaseContainerNode.cs +++ b/ReClass.NET/Nodes/BaseContainerNode.cs @@ -243,9 +243,8 @@ public void AddBytes(int size) public void InsertBytes(BaseNode position, int size) { - int index = FindNodeIndex(position); List dummy = null; - InsertBytes(index >= 0 ? index : 0, size, ref dummy); + InsertBytes(FindNodeIndex(position), size, ref dummy); } /// Inserts bytes at the specified position. From f4dc7614054a138a4a21712442ba7b8f61951038 Mon Sep 17 00:00:00 2001 From: ko1N Date: Thu, 31 Mar 2022 14:53:00 +0200 Subject: [PATCH 07/17] Fixed compilation on gcc 11 and fixed new import paths for dlopen/dlsym/dlcose (#220) --- NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp | 2 +- ReClass.NET/Native/NativeMethods.Unix.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp index a3ef6d8b..e983ee77 100644 --- a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp +++ b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp @@ -50,7 +50,7 @@ extern "C" void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, RC_UnicodeChar Path[PATH_MAXIMUM_LENGTH] = {}; }; - std::ifstream input(static_cast(std::stringstream() << "/proc/" << reinterpret_cast(handle) << "/maps").str()); + std::ifstream input((std::stringstream() << "/proc/" << reinterpret_cast(handle) << "/maps").str()); std::unordered_map modules; diff --git a/ReClass.NET/Native/NativeMethods.Unix.cs b/ReClass.NET/Native/NativeMethods.Unix.cs index 50be47b3..c1b2e6c4 100644 --- a/ReClass.NET/Native/NativeMethods.Unix.cs +++ b/ReClass.NET/Native/NativeMethods.Unix.cs @@ -10,13 +10,13 @@ internal class NativeMethodsUnix : INativeMethods private const int RTLD_NOW = 2; - [DllImport("libdl.so")] + [DllImport("__Internal")] private static extern IntPtr dlopen(string fileName, int flags); - [DllImport("libdl.so")] + [DllImport("__Internal")] private static extern IntPtr dlsym(IntPtr handle, string symbol); - [DllImport("libdl.so")] + [DllImport("__Internal")] private static extern int dlclose(IntPtr handle); #endregion From 18d6a63e32b05df6a18e15cc20bcd3dffa4b7d96 Mon Sep 17 00:00:00 2001 From: Mstik Date: Tue, 31 May 2022 20:06:33 -1200 Subject: [PATCH 08/17] Filter By PID --- NativeCore/Windows/NativeCore.vcxproj | 8 ++++---- ReClass.NET/Forms/ProcessBrowserForm.cs | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/NativeCore/Windows/NativeCore.vcxproj b/NativeCore/Windows/NativeCore.vcxproj index 565980de..5715bcb4 100644 --- a/NativeCore/Windows/NativeCore.vcxproj +++ b/NativeCore/Windows/NativeCore.vcxproj @@ -28,26 +28,26 @@ DynamicLibrary true - v142 + v143 Unicode DynamicLibrary false - v142 + v143 true MultiByte DynamicLibrary true - v142 + v143 MultiByte DynamicLibrary false - v142 + v143 true MultiByte diff --git a/ReClass.NET/Forms/ProcessBrowserForm.cs b/ReClass.NET/Forms/ProcessBrowserForm.cs index 9478a06f..d4ed7cb3 100644 --- a/ReClass.NET/Forms/ProcessBrowserForm.cs +++ b/ReClass.NET/Forms/ProcessBrowserForm.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Data; using System.Drawing; using System.Linq; @@ -131,7 +131,7 @@ private void ApplyFilter() var filter = filterTextBox.Text; if (!string.IsNullOrEmpty(filter)) { - filter = $"name like '%{filter}%' or path like '%{filter}%'"; + filter = $"name like '%{filter}%' or path like '%{filter}%' or CONVERT(id, System.String) like '%{filter}%'"; } ((DataTable)processDataGridView.DataSource).DefaultView.RowFilter = filter; } From 45696a717258efbf82872306168950a0055f5c1d Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Mon, 8 Aug 2022 21:09:52 +0200 Subject: [PATCH 09/17] Use inner nodes for hierarchy calculation. --- ReClass.NET/CodeGenerator/CppCodeGenerator.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ReClass.NET/CodeGenerator/CppCodeGenerator.cs b/ReClass.NET/CodeGenerator/CppCodeGenerator.cs index 4cefbf8f..b6495aab 100644 --- a/ReClass.NET/CodeGenerator/CppCodeGenerator.cs +++ b/ReClass.NET/CodeGenerator/CppCodeGenerator.cs @@ -192,6 +192,9 @@ IEnumerable GetReversedClassHierarchy(ClassNode node) } var classNodes = node.Nodes + .OfType() + .SelectMany(c => c.Nodes) + .Concat(node.Nodes) .OfType() .Where(w => !w.IsNodePresentInChain()) // Pointers are forward declared .Select(w => w.ResolveMostInnerNode() as ClassNode) From fde15991a5fe7b6a309053ca2b71f557b820c260 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Wed, 10 Aug 2022 09:24:58 +0200 Subject: [PATCH 10/17] Limit index when changing size. --- ReClass.NET/Nodes/BaseWrapperArrayNode.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ReClass.NET/Nodes/BaseWrapperArrayNode.cs b/ReClass.NET/Nodes/BaseWrapperArrayNode.cs index 52d5d948..ee042751 100644 --- a/ReClass.NET/Nodes/BaseWrapperArrayNode.cs +++ b/ReClass.NET/Nodes/BaseWrapperArrayNode.cs @@ -116,6 +116,11 @@ public override void Update(HotSpot spot) { Count = value; + if (CurrentIndex >= value) + { + CurrentIndex = value - 1; + } + GetParentContainer()?.ChildHasChanged(this); } } From 28d69d8c8967417ca6db1043ff43788966d182c1 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Sun, 25 Sep 2022 17:59:54 +0200 Subject: [PATCH 11/17] Fix tab escaping. --- ReClass.NET/Util/Rtf/RtfBuilder.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ReClass.NET/Util/Rtf/RtfBuilder.cs b/ReClass.NET/Util/Rtf/RtfBuilder.cs index 4015722d..76bd7b95 100644 --- a/ReClass.NET/Util/Rtf/RtfBuilder.cs +++ b/ReClass.NET/Util/Rtf/RtfBuilder.cs @@ -247,22 +247,22 @@ private static string EscapeString(string value) { if (value.IndexOfAny(slashable) >= 0) { - value = value.Replace("\\", "\\\\").Replace("{", @"\{").Replace("}", @"\}"); + value = value.Replace(@"\", @"\\").Replace("{", @"\{").Replace("}", @"\}"); } - if (value.Any(c => c > 255)) + if (value.Any(c => c > 255 || c == '\t')) { var sb = new StringBuilder(); foreach (var c in value) { - if (c <= 255) + if (c == '\t') { - sb.Append(c); + sb.Append(@"\tab"); } - else if (c == '\t') + else if (c <= 255) { - sb.Append(@"\tab"); + sb.Append(c); } else { From e1289162e22aa99c55a0d75fdb8bd2e095f8c488 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Sun, 25 Sep 2022 20:12:45 +0200 Subject: [PATCH 12/17] Use WSL to compile linux native core library. --- NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp | 5 +++-- NativeCore/Unix/NativeCore.Unix.vcxproj | 4 ++++ README.md | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp index e983ee77..079cba54 100644 --- a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp +++ b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp @@ -50,12 +50,13 @@ extern "C" void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, RC_UnicodeChar Path[PATH_MAXIMUM_LENGTH] = {}; }; - std::ifstream input((std::stringstream() << "/proc/" << reinterpret_cast(handle) << "/maps").str()); + auto path = std::stringstream(); + path << "/proc/" << reinterpret_cast(handle) << "/maps"; std::unordered_map modules; std::string line; - while (std::getline(input, line)) + while (std::getline(std::ifstream(path.str()), line)) { std::stringstream ss(line); diff --git a/NativeCore/Unix/NativeCore.Unix.vcxproj b/NativeCore/Unix/NativeCore.Unix.vcxproj index c1f08598..9ce274fd 100644 --- a/NativeCore/Unix/NativeCore.Unix.vcxproj +++ b/NativeCore/Unix/NativeCore.Unix.vcxproj @@ -33,18 +33,22 @@ true DynamicLibrary + WSL2_1_0 false DynamicLibrary + WSL2_1_0 true DynamicLibrary + WSL2_1_0 false DynamicLibrary + WSL2_1_0 diff --git a/README.md b/README.md index 6a83bf03..6f424ced 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,8 @@ Just download the [latest version](https://github.com/ReClassNET/ReClass.NET/rel If you want to compile ReClass.NET just fork the repository and open the ReClass.NET.sln file with Visual Studio 2019. Compile the project and copy the dependencies to the output folder. +To compile the linux native core library, you need WSL [installed and configured](https://learn.microsoft.com/en-us/cpp/build/walkthrough-build-debug-wsl2). If you do not need linux support, simply unload the project in the Solution Explorer. + ## Videos [Youtube Playlist](https://www.youtube.com/playlist?list=PLO246BmtoITanq3ygMCL8_w0eov4D8hjk) From eea41dab4e092a5af2f3c2960d44ecc0da789dd1 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Sun, 25 Sep 2022 20:18:49 +0200 Subject: [PATCH 13/17] Bump distorm to 3.5.3. --- NativeCore/Dependencies/distorm/COPYING.txt | 2 +- .../Dependencies/distorm/include/distorm.h | 2 +- .../Dependencies/distorm/include/mnemonics.h | 476 +-- NativeCore/Dependencies/distorm/src/config.h | 2 +- NativeCore/Dependencies/distorm/src/insts.c | 2764 ++++++++--------- .../Dependencies/distorm/src/mnemonics.c | 52 +- NativeCore/Dependencies/distorm/src/wstring.c | 47 - 7 files changed, 1649 insertions(+), 1696 deletions(-) delete mode 100644 NativeCore/Dependencies/distorm/src/wstring.c diff --git a/NativeCore/Dependencies/distorm/COPYING.txt b/NativeCore/Dependencies/distorm/COPYING.txt index 4f365ddc..9046eba5 100644 --- a/NativeCore/Dependencies/distorm/COPYING.txt +++ b/NativeCore/Dependencies/distorm/COPYING.txt @@ -1,6 +1,6 @@ :[diStorm3}: The ultimate disassembler library. -Copyright (c) 2003-2016, Gil Dabah +Copyright (c) 2003-2021, Gil Dabah All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/NativeCore/Dependencies/distorm/include/distorm.h b/NativeCore/Dependencies/distorm/include/distorm.h index 2e09c4a6..b0467bae 100644 --- a/NativeCore/Dependencies/distorm/include/distorm.h +++ b/NativeCore/Dependencies/distorm/include/distorm.h @@ -1,4 +1,4 @@ -/* diStorm 3.5.2 */ +/* diStorm 3.5.3 */ /* distorm.h diff --git a/NativeCore/Dependencies/distorm/include/mnemonics.h b/NativeCore/Dependencies/distorm/include/mnemonics.h index 3a784cca..3f982705 100644 --- a/NativeCore/Dependencies/distorm/include/mnemonics.h +++ b/NativeCore/Dependencies/distorm/include/mnemonics.h @@ -41,245 +41,245 @@ extern const _WRegister _REGISTERS[]; #define GET_MNEMONIC_NAME(m) ((_WMnemonic*)&_MNEMONICS[(m)])->p typedef enum { - I_UNDEFINED = 0, I_AAA = 66, I_AAD = 389, I_AAM = 384, I_AAS = 76, I_ADC = 31, I_ADD = 11, I_ADDPD = 3144, - I_ADDPS = 3137, I_ADDSD = 3158, I_ADDSS = 3151, I_ADDSUBPD = 6428, I_ADDSUBPS = 6438, - I_AESDEC = 9243, I_AESDECLAST = 9260, I_AESENC = 9201, I_AESENCLAST = 9218, - I_AESIMC = 9184, I_AESKEYGENASSIST = 9829, I_AND = 41, I_ANDNPD = 3055, I_ANDNPS = 3047, - I_ANDPD = 3024, I_ANDPS = 3017, I_ARPL = 111, I_BLENDPD = 9406, I_BLENDPS = 9387, - I_BLENDVPD = 7653, I_BLENDVPS = 7643, I_BOUND = 104, I_BSF = 4380, I_BSR = 4392, - I_BSWAP = 960, I_BT = 872, I_BTC = 934, I_BTR = 912, I_BTS = 887, I_CALL = 456, - I_CALL_FAR = 260, I_CBW = 228, I_CDQ = 250, I_CDQE = 239, I_CLAC = 1787, I_CLC = 492, - I_CLD = 512, I_CLFLUSH = 4363, I_CLGI = 1867, I_CLI = 502, I_CLTS = 541, I_CMC = 487, - I_CMOVA = 694, I_CMOVAE = 663, I_CMOVB = 656, I_CMOVBE = 686, I_CMOVG = 754, - I_CMOVGE = 738, I_CMOVL = 731, I_CMOVLE = 746, I_CMOVNO = 648, I_CMOVNP = 723, - I_CMOVNS = 708, I_CMOVNZ = 678, I_CMOVO = 641, I_CMOVP = 716, I_CMOVS = 701, - I_CMOVZ = 671, I_CMP = 71, I_CMPEQPD = 4483, I_CMPEQPS = 4404, I_CMPEQSD = 4641, - I_CMPEQSS = 4562, I_CMPLEPD = 4501, I_CMPLEPS = 4422, I_CMPLESD = 4659, I_CMPLESS = 4580, - I_CMPLTPD = 4492, I_CMPLTPS = 4413, I_CMPLTSD = 4650, I_CMPLTSS = 4571, I_CMPNEQPD = 4522, - I_CMPNEQPS = 4443, I_CMPNEQSD = 4680, I_CMPNEQSS = 4601, I_CMPNLEPD = 4542, - I_CMPNLEPS = 4463, I_CMPNLESD = 4700, I_CMPNLESS = 4621, I_CMPNLTPD = 4532, - I_CMPNLTPS = 4453, I_CMPNLTSD = 4690, I_CMPNLTSS = 4611, I_CMPORDPD = 4552, - I_CMPORDPS = 4473, I_CMPORDSD = 4710, I_CMPORDSS = 4631, I_CMPS = 301, I_CMPUNORDPD = 4510, - I_CMPUNORDPS = 4431, I_CMPUNORDSD = 4668, I_CMPUNORDSS = 4589, I_CMPXCHG = 898, - I_CMPXCHG16B = 6407, I_CMPXCHG8B = 6396, I_COMISD = 2813, I_COMISS = 2805, - I_CPUID = 865, I_CQO = 255, I_CRC32 = 9292, I_CVTDQ2PD = 6821, I_CVTDQ2PS = 3341, - I_CVTPD2DQ = 6831, I_CVTPD2PI = 2715, I_CVTPD2PS = 3267, I_CVTPH2PS = 4195, - I_CVTPI2PD = 2529, I_CVTPI2PS = 2519, I_CVTPS2DQ = 3351, I_CVTPS2PD = 3257, - I_CVTPS2PH = 4205, I_CVTPS2PI = 2705, I_CVTSD2SI = 2735, I_CVTSD2SS = 3287, - I_CVTSI2SD = 2549, I_CVTSI2SS = 2539, I_CVTSS2SD = 3277, I_CVTSS2SI = 2725, - I_CVTTPD2DQ = 6810, I_CVTTPD2PI = 2648, I_CVTTPS2DQ = 3361, I_CVTTPS2PI = 2637, - I_CVTTSD2SI = 2670, I_CVTTSS2SI = 2659, I_CWD = 245, I_CWDE = 233, I_DAA = 46, - I_DAS = 56, I_DEC = 86, I_DIV = 1646, I_DIVPD = 3533, I_DIVPS = 3526, I_DIVSD = 3547, - I_DIVSS = 3540, I_DPPD = 9649, I_DPPS = 9636, I_EMMS = 4134, I_ENTER = 340, - I_EXTRACTPS = 9514, I_EXTRQ = 4170, I_F2XM1 = 1192, I_FABS = 1123, I_FADD = 1023, - I_FADDP = 1549, I_FBLD = 1601, I_FBSTP = 1607, I_FCHS = 1117, I_FCLEX = 7323, - I_FCMOVB = 1376, I_FCMOVBE = 1392, I_FCMOVE = 1384, I_FCMOVNB = 1445, I_FCMOVNBE = 1463, - I_FCMOVNE = 1454, I_FCMOVNU = 1473, I_FCMOVU = 1401, I_FCOM = 1035, I_FCOMI = 1512, - I_FCOMIP = 1623, I_FCOMP = 1041, I_FCOMPP = 1563, I_FCOS = 1311, I_FDECSTP = 1238, - I_FDIV = 1061, I_FDIVP = 1594, I_FDIVR = 1067, I_FDIVRP = 1586, I_FEDISI = 1488, - I_FEMMS = 574, I_FENI = 1482, I_FFREE = 1527, I_FIADD = 1317, I_FICOM = 1331, - I_FICOMP = 1338, I_FIDIV = 1361, I_FIDIVR = 1368, I_FILD = 1418, I_FIMUL = 1324, - I_FINCSTP = 1247, I_FINIT = 7338, I_FIST = 1432, I_FISTP = 1438, I_FISTTP = 1424, - I_FISUB = 1346, I_FISUBR = 1353, I_FLD = 1074, I_FLD1 = 1141, I_FLDCW = 1098, - I_FLDENV = 1090, I_FLDL2E = 1155, I_FLDL2T = 1147, I_FLDLG2 = 1170, I_FLDLN2 = 1178, - I_FLDPI = 1163, I_FLDZ = 1186, I_FMUL = 1029, I_FMULP = 1556, I_FNCLEX = 7315, - I_FNINIT = 7330, I_FNOP = 1111, I_FNSAVE = 7345, I_FNSTCW = 7300, I_FNSTENV = 7283, - I_FNSTSW = 7360, I_FPATAN = 1213, I_FPREM = 1256, I_FPREM1 = 1230, I_FPTAN = 1206, - I_FRNDINT = 1288, I_FRSTOR = 1519, I_FSAVE = 7353, I_FSCALE = 1297, I_FSETPM = 1496, - I_FSIN = 1305, I_FSINCOS = 1279, I_FSQRT = 1272, I_FST = 1079, I_FSTCW = 7308, - I_FSTENV = 7292, I_FSTP = 1084, I_FSTSW = 7368, I_FSUB = 1048, I_FSUBP = 1579, - I_FSUBR = 1054, I_FSUBRP = 1571, I_FTST = 1129, I_FUCOM = 1534, I_FUCOMI = 1504, - I_FUCOMIP = 1614, I_FUCOMP = 1541, I_FUCOMPP = 1409, I_FXAM = 1135, I_FXCH = 1105, - I_FXRSTOR = 9926, I_FXRSTOR64 = 9935, I_FXSAVE = 9898, I_FXSAVE64 = 9906, - I_FXTRACT = 1221, I_FYL2X = 1199, I_FYL2XP1 = 1263, I_GETSEC = 633, I_HADDPD = 4215, - I_HADDPS = 4223, I_HLT = 482, I_HSUBPD = 4249, I_HSUBPS = 4257, I_IDIV = 1651, - I_IMUL = 117, I_IN = 447, I_INC = 81, I_INS = 123, I_INSERTPS = 9581, I_INSERTQ = 4177, - I_INT = 367, I_INT_3 = 360, I_INT1 = 476, I_INTO = 372, I_INVD = 555, I_INVEPT = 8318, - I_INVLPG = 1727, I_INVLPGA = 1881, I_INVPCID = 8335, I_INVVPID = 8326, I_IRET = 378, - I_JA = 166, I_JAE = 147, I_JB = 143, I_JBE = 161, I_JCXZ = 427, I_JECXZ = 433, - I_JG = 202, I_JGE = 192, I_JL = 188, I_JLE = 197, I_JMP = 462, I_JMP_FAR = 467, + I_UNDEFINED = 0, I_AAA = 66, I_AAD = 388, I_AAM = 383, I_AAS = 76, I_ADC = 31, I_ADD = 11, I_ADDPD = 3143, + I_ADDPS = 3136, I_ADDSD = 3157, I_ADDSS = 3150, I_ADDSUBPD = 6427, I_ADDSUBPS = 6437, + I_AESDEC = 9242, I_AESDECLAST = 9259, I_AESENC = 9200, I_AESENCLAST = 9217, + I_AESIMC = 9183, I_AESKEYGENASSIST = 9828, I_AND = 41, I_ANDNPD = 3054, I_ANDNPS = 3046, + I_ANDPD = 3023, I_ANDPS = 3016, I_ARPL = 111, I_BLENDPD = 9405, I_BLENDPS = 9386, + I_BLENDVPD = 7652, I_BLENDVPS = 7642, I_BOUND = 104, I_BSF = 4379, I_BSR = 4391, + I_BSWAP = 959, I_BT = 871, I_BTC = 933, I_BTR = 911, I_BTS = 886, I_CALL = 455, + I_CALL_FAR = 260, I_CBW = 228, I_CDQ = 250, I_CDQE = 239, I_CLAC = 1786, I_CLC = 491, + I_CLD = 511, I_CLFLUSH = 4362, I_CLGI = 1866, I_CLI = 501, I_CLTS = 540, I_CMC = 486, + I_CMOVA = 693, I_CMOVAE = 662, I_CMOVB = 655, I_CMOVBE = 685, I_CMOVG = 753, + I_CMOVGE = 737, I_CMOVL = 730, I_CMOVLE = 745, I_CMOVNO = 647, I_CMOVNP = 722, + I_CMOVNS = 707, I_CMOVNZ = 677, I_CMOVO = 640, I_CMOVP = 715, I_CMOVS = 700, + I_CMOVZ = 670, I_CMP = 71, I_CMPEQPD = 4482, I_CMPEQPS = 4403, I_CMPEQSD = 4640, + I_CMPEQSS = 4561, I_CMPLEPD = 4500, I_CMPLEPS = 4421, I_CMPLESD = 4658, I_CMPLESS = 4579, + I_CMPLTPD = 4491, I_CMPLTPS = 4412, I_CMPLTSD = 4649, I_CMPLTSS = 4570, I_CMPNEQPD = 4521, + I_CMPNEQPS = 4442, I_CMPNEQSD = 4679, I_CMPNEQSS = 4600, I_CMPNLEPD = 4541, + I_CMPNLEPS = 4462, I_CMPNLESD = 4699, I_CMPNLESS = 4620, I_CMPNLTPD = 4531, + I_CMPNLTPS = 4452, I_CMPNLTSD = 4689, I_CMPNLTSS = 4610, I_CMPORDPD = 4551, + I_CMPORDPS = 4472, I_CMPORDSD = 4709, I_CMPORDSS = 4630, I_CMPS = 301, I_CMPUNORDPD = 4509, + I_CMPUNORDPS = 4430, I_CMPUNORDSD = 4667, I_CMPUNORDSS = 4588, I_CMPXCHG = 897, + I_CMPXCHG16B = 6406, I_CMPXCHG8B = 6395, I_COMISD = 2812, I_COMISS = 2804, + I_CPUID = 864, I_CQO = 255, I_CRC32 = 9291, I_CVTDQ2PD = 6820, I_CVTDQ2PS = 3340, + I_CVTPD2DQ = 6830, I_CVTPD2PI = 2714, I_CVTPD2PS = 3266, I_CVTPH2PS = 4194, + I_CVTPI2PD = 2528, I_CVTPI2PS = 2518, I_CVTPS2DQ = 3350, I_CVTPS2PD = 3256, + I_CVTPS2PH = 4204, I_CVTPS2PI = 2704, I_CVTSD2SI = 2734, I_CVTSD2SS = 3286, + I_CVTSI2SD = 2548, I_CVTSI2SS = 2538, I_CVTSS2SD = 3276, I_CVTSS2SI = 2724, + I_CVTTPD2DQ = 6809, I_CVTTPD2PI = 2647, I_CVTTPS2DQ = 3360, I_CVTTPS2PI = 2636, + I_CVTTSD2SI = 2669, I_CVTTSS2SI = 2658, I_CWD = 245, I_CWDE = 233, I_DAA = 46, + I_DAS = 56, I_DEC = 86, I_DIV = 1645, I_DIVPD = 3532, I_DIVPS = 3525, I_DIVSD = 3546, + I_DIVSS = 3539, I_DPPD = 9648, I_DPPS = 9635, I_EMMS = 4133, I_ENTER = 340, + I_EXTRACTPS = 9513, I_EXTRQ = 4169, I_F2XM1 = 1191, I_FABS = 1122, I_FADD = 1022, + I_FADDP = 1548, I_FBLD = 1600, I_FBSTP = 1606, I_FCHS = 1116, I_FCLEX = 7322, + I_FCMOVB = 1375, I_FCMOVBE = 1391, I_FCMOVE = 1383, I_FCMOVNB = 1444, I_FCMOVNBE = 1462, + I_FCMOVNE = 1453, I_FCMOVNU = 1472, I_FCMOVU = 1400, I_FCOM = 1034, I_FCOMI = 1511, + I_FCOMIP = 1622, I_FCOMP = 1040, I_FCOMPP = 1562, I_FCOS = 1310, I_FDECSTP = 1237, + I_FDIV = 1060, I_FDIVP = 1593, I_FDIVR = 1066, I_FDIVRP = 1585, I_FEDISI = 1487, + I_FEMMS = 573, I_FENI = 1481, I_FFREE = 1526, I_FIADD = 1316, I_FICOM = 1330, + I_FICOMP = 1337, I_FIDIV = 1360, I_FIDIVR = 1367, I_FILD = 1417, I_FIMUL = 1323, + I_FINCSTP = 1246, I_FINIT = 7337, I_FIST = 1431, I_FISTP = 1437, I_FISTTP = 1423, + I_FISUB = 1345, I_FISUBR = 1352, I_FLD = 1073, I_FLD1 = 1140, I_FLDCW = 1097, + I_FLDENV = 1089, I_FLDL2E = 1154, I_FLDL2T = 1146, I_FLDLG2 = 1169, I_FLDLN2 = 1177, + I_FLDPI = 1162, I_FLDZ = 1185, I_FMUL = 1028, I_FMULP = 1555, I_FNCLEX = 7314, + I_FNINIT = 7329, I_FNOP = 1110, I_FNSAVE = 7344, I_FNSTCW = 7299, I_FNSTENV = 7282, + I_FNSTSW = 7359, I_FPATAN = 1212, I_FPREM = 1255, I_FPREM1 = 1229, I_FPTAN = 1205, + I_FRNDINT = 1287, I_FRSTOR = 1518, I_FSAVE = 7352, I_FSCALE = 1296, I_FSETPM = 1495, + I_FSIN = 1304, I_FSINCOS = 1278, I_FSQRT = 1271, I_FST = 1078, I_FSTCW = 7307, + I_FSTENV = 7291, I_FSTP = 1083, I_FSTSW = 7367, I_FSUB = 1047, I_FSUBP = 1578, + I_FSUBR = 1053, I_FSUBRP = 1570, I_FTST = 1128, I_FUCOM = 1533, I_FUCOMI = 1503, + I_FUCOMIP = 1613, I_FUCOMP = 1540, I_FUCOMPP = 1408, I_FXAM = 1134, I_FXCH = 1104, + I_FXRSTOR = 9925, I_FXRSTOR64 = 9934, I_FXSAVE = 9897, I_FXSAVE64 = 9905, + I_FXTRACT = 1220, I_FYL2X = 1198, I_FYL2XP1 = 1262, I_GETSEC = 632, I_HADDPD = 4214, + I_HADDPS = 4222, I_HLT = 481, I_HSUBPD = 4248, I_HSUBPS = 4256, I_IDIV = 1650, + I_IMUL = 117, I_IN = 446, I_INC = 81, I_INS = 123, I_INSERTPS = 9580, I_INSERTQ = 4176, + I_INT = 366, I_INT1 = 475, I_INT3 = 360, I_INTO = 371, I_INVD = 554, I_INVEPT = 8317, + I_INVLPG = 1726, I_INVLPGA = 1880, I_INVPCID = 8334, I_INVVPID = 8325, I_IRET = 377, + I_JA = 166, I_JAE = 147, I_JB = 143, I_JBE = 161, I_JCXZ = 426, I_JECXZ = 432, + I_JG = 202, I_JGE = 192, I_JL = 188, I_JLE = 197, I_JMP = 461, I_JMP_FAR = 466, I_JNO = 138, I_JNP = 183, I_JNS = 174, I_JNZ = 156, I_JO = 134, I_JP = 179, - I_JRCXZ = 440, I_JS = 170, I_JZ = 152, I_LAHF = 289, I_LAR = 522, I_LDDQU = 7028, - I_LDMXCSR = 9956, I_LDS = 335, I_LEA = 223, I_LEAVE = 347, I_LES = 330, I_LFENCE = 4299, - I_LFS = 917, I_LGDT = 1703, I_LGS = 922, I_LIDT = 1709, I_LLDT = 1668, I_LMSW = 1721, - I_LODS = 313, I_LOOP = 421, I_LOOPNZ = 406, I_LOOPZ = 414, I_LSL = 527, I_LSS = 907, - I_LTR = 1674, I_LZCNT = 4397, I_MASKMOVDQU = 7153, I_MASKMOVQ = 7143, I_MAXPD = 3593, - I_MAXPS = 3586, I_MAXSD = 3607, I_MAXSS = 3600, I_MFENCE = 4325, I_MINPD = 3473, - I_MINPS = 3466, I_MINSD = 3487, I_MINSS = 3480, I_MONITOR = 1771, I_MOV = 218, - I_MOVAPD = 2493, I_MOVAPS = 2485, I_MOVBE = 9285, I_MOVD = 3954, I_MOVDDUP = 2220, - I_MOVDQ2Q = 6556, I_MOVDQA = 3980, I_MOVDQU = 3988, I_MOVHLPS = 2185, I_MOVHPD = 2379, - I_MOVHPS = 2371, I_MOVLHPS = 2362, I_MOVLPD = 2202, I_MOVLPS = 2194, I_MOVMSKPD = 2849, - I_MOVMSKPS = 2839, I_MOVNTDQ = 6883, I_MOVNTDQA = 7929, I_MOVNTI = 952, I_MOVNTPD = 2590, - I_MOVNTPS = 2581, I_MOVNTQ = 6875, I_MOVNTSD = 2608, I_MOVNTSS = 2599, I_MOVQ = 3960, - I_MOVQ2DQ = 6547, I_MOVS = 295, I_MOVSD = 2144, I_MOVSHDUP = 2387, I_MOVSLDUP = 2210, - I_MOVSS = 2137, I_MOVSX = 939, I_MOVSXD = 10039, I_MOVUPD = 2129, I_MOVUPS = 2121, - I_MOVZX = 927, I_MPSADBW = 9662, I_MUL = 1641, I_MULPD = 3204, I_MULPS = 3197, - I_MULSD = 3218, I_MULSS = 3211, I_MWAIT = 1780, I_NEG = 1636, I_NOP = 581, - I_NOT = 1631, I_OR = 27, I_ORPD = 3087, I_ORPS = 3081, I_OUT = 451, I_OUTS = 128, - I_PABSB = 7722, I_PABSD = 7752, I_PABSW = 7737, I_PACKSSDW = 3883, I_PACKSSWB = 3715, - I_PACKUSDW = 7950, I_PACKUSWB = 3793, I_PADDB = 7238, I_PADDD = 7268, I_PADDQ = 6515, - I_PADDSB = 6964, I_PADDSW = 6981, I_PADDUSB = 6654, I_PADDUSW = 6673, I_PADDW = 7253, - I_PALIGNR = 9444, I_PAND = 6641, I_PANDN = 6699, I_PAUSE = 10047, I_PAVGB = 6714, - I_PAVGUSB = 2112, I_PAVGW = 6759, I_PBLENDVB = 7633, I_PBLENDW = 9425, I_PCLMULQDQ = 9681, - I_PCMPEQB = 4077, I_PCMPEQD = 4115, I_PCMPEQQ = 7910, I_PCMPEQW = 4096, I_PCMPESTRI = 9760, - I_PCMPESTRM = 9737, I_PCMPGTB = 3736, I_PCMPGTD = 3774, I_PCMPGTQ = 8121, - I_PCMPGTW = 3755, I_PCMPISTRI = 9806, I_PCMPISTRM = 9783, I_PEXTRB = 9463, - I_PEXTRD = 9480, I_PEXTRQ = 9488, I_PEXTRW = 6345, I_PF2ID = 1948, I_PF2IW = 1941, - I_PFACC = 2062, I_PFADD = 2011, I_PFCMPEQ = 2069, I_PFCMPGE = 1972, I_PFCMPGT = 2018, - I_PFMAX = 2027, I_PFMIN = 1981, I_PFMUL = 2078, I_PFNACC = 1955, I_PFPNACC = 1963, - I_PFRCP = 1988, I_PFRCPIT1 = 2034, I_PFRCPIT2 = 2085, I_PFRSQIT1 = 2044, I_PFRSQRT = 1995, - I_PFSUB = 2004, I_PFSUBR = 2054, I_PHADDD = 7409, I_PHADDSW = 7426, I_PHADDW = 7392, - I_PHMINPOSUW = 8293, I_PHSUBD = 7485, I_PHSUBSW = 7502, I_PHSUBW = 7468, I_PI2FD = 1934, - I_PI2FW = 1927, I_PINSRB = 9564, I_PINSRD = 9602, I_PINSRQ = 9610, I_PINSRW = 6328, - I_PMADDUBSW = 7445, I_PMADDWD = 7107, I_PMAXSB = 8208, I_PMAXSD = 8225, I_PMAXSW = 6998, - I_PMAXUB = 6682, I_PMAXUD = 8259, I_PMAXUW = 8242, I_PMINSB = 8140, I_PMINSD = 8157, - I_PMINSW = 6936, I_PMINUB = 6624, I_PMINUD = 8191, I_PMINUW = 8174, I_PMOVMSKB = 6565, - I_PMOVSXBD = 7788, I_PMOVSXBQ = 7809, I_PMOVSXBW = 7767, I_PMOVSXDQ = 7872, - I_PMOVSXWD = 7830, I_PMOVSXWQ = 7851, I_PMOVZXBD = 8016, I_PMOVZXBQ = 8037, - I_PMOVZXBW = 7995, I_PMOVZXDQ = 8100, I_PMOVZXWD = 8058, I_PMOVZXWQ = 8079, - I_PMULDQ = 7893, I_PMULHRSW = 7572, I_PMULHRW = 2095, I_PMULHUW = 6774, I_PMULHW = 6793, - I_PMULLD = 8276, I_PMULLW = 6530, I_PMULUDQ = 7088, I_POP = 22, I_POPA = 98, - I_POPCNT = 4372, I_POPF = 277, I_POR = 6953, I_PREFETCH = 1906, I_PREFETCHNTA = 2436, - I_PREFETCHT0 = 2449, I_PREFETCHT1 = 2461, I_PREFETCHT2 = 2473, I_PREFETCHW = 1916, - I_PSADBW = 7126, I_PSHUFB = 7375, I_PSHUFD = 4022, I_PSHUFHW = 4030, I_PSHUFLW = 4039, - I_PSHUFW = 4014, I_PSIGNB = 7521, I_PSIGND = 7555, I_PSIGNW = 7538, I_PSLLD = 7058, - I_PSLLDQ = 9881, I_PSLLQ = 7073, I_PSLLW = 7043, I_PSRAD = 6744, I_PSRAW = 6729, - I_PSRLD = 6485, I_PSRLDQ = 9864, I_PSRLQ = 6500, I_PSRLW = 6470, I_PSUBB = 7178, - I_PSUBD = 7208, I_PSUBQ = 7223, I_PSUBSB = 6902, I_PSUBSW = 6919, I_PSUBUSB = 6586, - I_PSUBUSW = 6605, I_PSUBW = 7193, I_PSWAPD = 2104, I_PTEST = 7663, I_PUNPCKHBW = 3814, - I_PUNPCKHDQ = 3860, I_PUNPCKHQDQ = 3929, I_PUNPCKHWD = 3837, I_PUNPCKLBW = 3646, - I_PUNPCKLDQ = 3692, I_PUNPCKLQDQ = 3904, I_PUNPCKLWD = 3669, I_PUSH = 16, - I_PUSHA = 91, I_PUSHF = 270, I_PXOR = 7015, I_RCL = 977, I_RCPPS = 2987, I_RCPSS = 2994, - I_RCR = 982, I_RDFSBASE = 9916, I_RDGSBASE = 9946, I_RDMSR = 600, I_RDPMC = 607, - I_RDRAND = 10060, I_RDTSC = 593, I_RDTSCP = 1898, I_RET = 325, I_RETF = 354, - I_ROL = 967, I_ROR = 972, I_ROUNDPD = 9330, I_ROUNDPS = 9311, I_ROUNDSD = 9368, - I_ROUNDSS = 9349, I_RSM = 882, I_RSQRTPS = 2949, I_RSQRTSS = 2958, I_SAHF = 283, - I_SAL = 997, I_SALC = 394, I_SAR = 1002, I_SBB = 36, I_SCAS = 319, I_SETA = 807, - I_SETAE = 780, I_SETB = 774, I_SETBE = 800, I_SETG = 859, I_SETGE = 845, I_SETL = 839, - I_SETLE = 852, I_SETNO = 767, I_SETNP = 832, I_SETNS = 819, I_SETNZ = 793, - I_SETO = 761, I_SETP = 826, I_SETS = 813, I_SETZ = 787, I_SFENCE = 4355, I_SGDT = 1691, - I_SHL = 987, I_SHLD = 876, I_SHR = 992, I_SHRD = 892, I_SHUFPD = 6370, I_SHUFPS = 6362, - I_SIDT = 1697, I_SKINIT = 1873, I_SLDT = 1657, I_SMSW = 1715, I_SQRTPD = 2889, - I_SQRTPS = 2881, I_SQRTSD = 2905, I_SQRTSS = 2897, I_STAC = 1793, I_STC = 497, - I_STD = 517, I_STGI = 1861, I_STI = 507, I_STMXCSR = 9985, I_STOS = 307, I_STR = 1663, - I_SUB = 51, I_SUBPD = 3413, I_SUBPS = 3406, I_SUBSD = 3427, I_SUBSS = 3420, - I_SWAPGS = 1890, I_SYSCALL = 532, I_SYSENTER = 614, I_SYSEXIT = 624, I_SYSRET = 547, - I_TEST = 206, I_TZCNT = 4385, I_UCOMISD = 2776, I_UCOMISS = 2767, I_UD2 = 569, - I_UNPCKHPD = 2330, I_UNPCKHPS = 2320, I_UNPCKLPD = 2288, I_UNPCKLPS = 2278, - I_VADDPD = 3173, I_VADDPS = 3165, I_VADDSD = 3189, I_VADDSS = 3181, I_VADDSUBPD = 6448, - I_VADDSUBPS = 6459, I_VAESDEC = 9251, I_VAESDECLAST = 9272, I_VAESENC = 9209, - I_VAESENCLAST = 9230, I_VAESIMC = 9192, I_VAESKEYGENASSIST = 9846, I_VANDNPD = 3072, - I_VANDNPS = 3063, I_VANDPD = 3039, I_VANDPS = 3031, I_VBLENDPD = 9415, I_VBLENDPS = 9396, - I_VBLENDVPD = 9715, I_VBLENDVPS = 9704, I_VBROADCASTF128 = 7706, I_VBROADCASTSD = 7692, - I_VBROADCASTSS = 7678, I_VCMPEQPD = 5122, I_VCMPEQPS = 4720, I_VCMPEQSD = 5926, - I_VCMPEQSS = 5524, I_VCMPEQ_OSPD = 5303, I_VCMPEQ_OSPS = 4901, I_VCMPEQ_OSSD = 6107, - I_VCMPEQ_OSSS = 5705, I_VCMPEQ_UQPD = 5209, I_VCMPEQ_UQPS = 4807, I_VCMPEQ_UQSD = 6013, - I_VCMPEQ_UQSS = 5611, I_VCMPEQ_USPD = 5412, I_VCMPEQ_USPS = 5010, I_VCMPEQ_USSD = 6216, - I_VCMPEQ_USSS = 5814, I_VCMPFALSEPD = 5244, I_VCMPFALSEPS = 4842, I_VCMPFALSESD = 6048, - I_VCMPFALSESS = 5646, I_VCMPFALSE_OSPD = 5453, I_VCMPFALSE_OSPS = 5051, I_VCMPFALSE_OSSD = 6257, - I_VCMPFALSE_OSSS = 5855, I_VCMPGEPD = 5271, I_VCMPGEPS = 4869, I_VCMPGESD = 6075, - I_VCMPGESS = 5673, I_VCMPGE_OQPD = 5483, I_VCMPGE_OQPS = 5081, I_VCMPGE_OQSD = 6287, - I_VCMPGE_OQSS = 5885, I_VCMPGTPD = 5281, I_VCMPGTPS = 4879, I_VCMPGTSD = 6085, - I_VCMPGTSS = 5683, I_VCMPGT_OQPD = 5496, I_VCMPGT_OQPS = 5094, I_VCMPGT_OQSD = 6300, - I_VCMPGT_OQSS = 5898, I_VCMPLEPD = 5142, I_VCMPLEPS = 4740, I_VCMPLESD = 5946, - I_VCMPLESS = 5544, I_VCMPLE_OQPD = 5329, I_VCMPLE_OQPS = 4927, I_VCMPLE_OQSD = 6133, - I_VCMPLE_OQSS = 5731, I_VCMPLTPD = 5132, I_VCMPLTPS = 4730, I_VCMPLTSD = 5936, - I_VCMPLTSS = 5534, I_VCMPLT_OQPD = 5316, I_VCMPLT_OQPS = 4914, I_VCMPLT_OQSD = 6120, - I_VCMPLT_OQSS = 5718, I_VCMPNEQPD = 5165, I_VCMPNEQPS = 4763, I_VCMPNEQSD = 5969, - I_VCMPNEQSS = 5567, I_VCMPNEQ_OQPD = 5257, I_VCMPNEQ_OQPS = 4855, I_VCMPNEQ_OQSD = 6061, - I_VCMPNEQ_OQSS = 5659, I_VCMPNEQ_OSPD = 5469, I_VCMPNEQ_OSPS = 5067, I_VCMPNEQ_OSSD = 6273, - I_VCMPNEQ_OSSS = 5871, I_VCMPNEQ_USPD = 5357, I_VCMPNEQ_USPS = 4955, I_VCMPNEQ_USSD = 6161, - I_VCMPNEQ_USSS = 5759, I_VCMPNGEPD = 5222, I_VCMPNGEPS = 4820, I_VCMPNGESD = 6026, - I_VCMPNGESS = 5624, I_VCMPNGE_UQPD = 5425, I_VCMPNGE_UQPS = 5023, I_VCMPNGE_UQSD = 6229, - I_VCMPNGE_UQSS = 5827, I_VCMPNGTPD = 5233, I_VCMPNGTPS = 4831, I_VCMPNGTSD = 6037, - I_VCMPNGTSS = 5635, I_VCMPNGT_UQPD = 5439, I_VCMPNGT_UQPS = 5037, I_VCMPNGT_UQSD = 6243, - I_VCMPNGT_UQSS = 5841, I_VCMPNLEPD = 5187, I_VCMPNLEPS = 4785, I_VCMPNLESD = 5991, - I_VCMPNLESS = 5589, I_VCMPNLE_UQPD = 5385, I_VCMPNLE_UQPS = 4983, I_VCMPNLE_UQSD = 6189, - I_VCMPNLE_UQSS = 5787, I_VCMPNLTPD = 5176, I_VCMPNLTPS = 4774, I_VCMPNLTSD = 5980, - I_VCMPNLTSS = 5578, I_VCMPNLT_UQPD = 5371, I_VCMPNLT_UQPS = 4969, I_VCMPNLT_UQSD = 6175, - I_VCMPNLT_UQSS = 5773, I_VCMPORDPD = 5198, I_VCMPORDPS = 4796, I_VCMPORDSD = 6002, - I_VCMPORDSS = 5600, I_VCMPORD_SPD = 5399, I_VCMPORD_SPS = 4997, I_VCMPORD_SSD = 6203, - I_VCMPORD_SSS = 5801, I_VCMPTRUEPD = 5291, I_VCMPTRUEPS = 4889, I_VCMPTRUESD = 6095, - I_VCMPTRUESS = 5693, I_VCMPTRUE_USPD = 5509, I_VCMPTRUE_USPS = 5107, I_VCMPTRUE_USSD = 6313, - I_VCMPTRUE_USSS = 5911, I_VCMPUNORDPD = 5152, I_VCMPUNORDPS = 4750, I_VCMPUNORDSD = 5956, - I_VCMPUNORDSS = 5554, I_VCMPUNORD_SPD = 5342, I_VCMPUNORD_SPS = 4940, I_VCMPUNORD_SSD = 6146, - I_VCMPUNORD_SSS = 5744, I_VCOMISD = 2830, I_VCOMISS = 2821, I_VCVTDQ2PD = 6853, - I_VCVTDQ2PS = 3372, I_VCVTPD2DQ = 6864, I_VCVTPD2PS = 3308, I_VCVTPS2DQ = 3383, - I_VCVTPS2PD = 3297, I_VCVTSD2SI = 2756, I_VCVTSD2SS = 3330, I_VCVTSI2SD = 2570, - I_VCVTSI2SS = 2559, I_VCVTSS2SD = 3319, I_VCVTSS2SI = 2745, I_VCVTTPD2DQ = 6841, - I_VCVTTPS2DQ = 3394, I_VCVTTSD2SI = 2693, I_VCVTTSS2SI = 2681, I_VDIVPD = 3562, - I_VDIVPS = 3554, I_VDIVSD = 3578, I_VDIVSS = 3570, I_VDPPD = 9655, I_VDPPS = 9642, - I_VERR = 1679, I_VERW = 1685, I_VEXTRACTF128 = 9550, I_VEXTRACTPS = 9525, - I_VFMADD132PD = 8421, I_VFMADD132PS = 8408, I_VFMADD132SD = 8447, I_VFMADD132SS = 8434, - I_VFMADD213PD = 8701, I_VFMADD213PS = 8688, I_VFMADD213SD = 8727, I_VFMADD213SS = 8714, - I_VFMADD231PD = 8981, I_VFMADD231PS = 8968, I_VFMADD231SD = 9007, I_VFMADD231SS = 8994, - I_VFMADDSUB132PD = 8360, I_VFMADDSUB132PS = 8344, I_VFMADDSUB213PD = 8640, - I_VFMADDSUB213PS = 8624, I_VFMADDSUB231PD = 8920, I_VFMADDSUB231PS = 8904, - I_VFMSUB132PD = 8473, I_VFMSUB132PS = 8460, I_VFMSUB132SD = 8499, I_VFMSUB132SS = 8486, - I_VFMSUB213PD = 8753, I_VFMSUB213PS = 8740, I_VFMSUB213SD = 8779, I_VFMSUB213SS = 8766, - I_VFMSUB231PD = 9033, I_VFMSUB231PS = 9020, I_VFMSUB231SD = 9059, I_VFMSUB231SS = 9046, - I_VFMSUBADD132PD = 8392, I_VFMSUBADD132PS = 8376, I_VFMSUBADD213PD = 8672, - I_VFMSUBADD213PS = 8656, I_VFMSUBADD231PD = 8952, I_VFMSUBADD231PS = 8936, - I_VFNMADD132PD = 8526, I_VFNMADD132PS = 8512, I_VFNMADD132SD = 8554, I_VFNMADD132SS = 8540, - I_VFNMADD213PD = 8806, I_VFNMADD213PS = 8792, I_VFNMADD213SD = 8834, I_VFNMADD213SS = 8820, - I_VFNMADD231PD = 9086, I_VFNMADD231PS = 9072, I_VFNMADD231SD = 9114, I_VFNMADD231SS = 9100, - I_VFNMSUB132PD = 8582, I_VFNMSUB132PS = 8568, I_VFNMSUB132SD = 8610, I_VFNMSUB132SS = 8596, - I_VFNMSUB213PD = 8862, I_VFNMSUB213PS = 8848, I_VFNMSUB213SD = 8890, I_VFNMSUB213SS = 8876, - I_VFNMSUB231PD = 9142, I_VFNMSUB231PS = 9128, I_VFNMSUB231SD = 9170, I_VFNMSUB231SS = 9156, - I_VHADDPD = 4231, I_VHADDPS = 4240, I_VHSUBPD = 4265, I_VHSUBPS = 4274, I_VINSERTF128 = 9537, - I_VINSERTPS = 9591, I_VLDDQU = 7035, I_VLDMXCSR = 9975, I_VMASKMOVDQU = 7165, - I_VMASKMOVPD = 7983, I_VMASKMOVPS = 7971, I_VMAXPD = 3622, I_VMAXPS = 3614, - I_VMAXSD = 3638, I_VMAXSS = 3630, I_VMCALL = 1735, I_VMCLEAR = 10023, I_VMFUNC = 1815, - I_VMINPD = 3502, I_VMINPS = 3494, I_VMINSD = 3518, I_VMINSS = 3510, I_VMLAUNCH = 1743, - I_VMLOAD = 1845, I_VMMCALL = 1836, I_VMOVAPD = 2510, I_VMOVAPS = 2501, I_VMOVD = 3966, - I_VMOVDDUP = 2268, I_VMOVDQA = 3996, I_VMOVDQU = 4005, I_VMOVHLPS = 2229, - I_VMOVHPD = 2416, I_VMOVHPS = 2407, I_VMOVLHPS = 2397, I_VMOVLPD = 2248, I_VMOVLPS = 2239, - I_VMOVMSKPD = 2870, I_VMOVMSKPS = 2859, I_VMOVNTDQ = 6892, I_VMOVNTDQA = 7939, - I_VMOVNTPD = 2627, I_VMOVNTPS = 2617, I_VMOVQ = 3973, I_VMOVSD = 2177, I_VMOVSHDUP = 2425, - I_VMOVSLDUP = 2257, I_VMOVSS = 2169, I_VMOVUPD = 2160, I_VMOVUPS = 2151, I_VMPSADBW = 9671, - I_VMPTRLD = 10014, I_VMPTRST = 6419, I_VMREAD = 4162, I_VMRESUME = 1753, I_VMRUN = 1829, - I_VMSAVE = 1853, I_VMULPD = 3233, I_VMULPS = 3225, I_VMULSD = 3249, I_VMULSS = 3241, - I_VMWRITE = 4186, I_VMXOFF = 1763, I_VMXON = 10032, I_VORPD = 3100, I_VORPS = 3093, - I_VPABSB = 7729, I_VPABSD = 7759, I_VPABSW = 7744, I_VPACKSSDW = 3893, I_VPACKSSWB = 3725, - I_VPACKUSDW = 7960, I_VPACKUSWB = 3803, I_VPADDB = 7245, I_VPADDD = 7275, - I_VPADDQ = 6522, I_VPADDSB = 6972, I_VPADDSW = 6989, I_VPADDUSW = 6663, I_VPADDW = 7260, - I_VPALIGNR = 9453, I_VPAND = 6647, I_VPANDN = 6706, I_VPAVGB = 6721, I_VPAVGW = 6766, - I_VPBLENDVB = 9726, I_VPBLENDW = 9434, I_VPCLMULQDQ = 9692, I_VPCMPEQB = 4086, - I_VPCMPEQD = 4124, I_VPCMPEQQ = 7919, I_VPCMPEQW = 4105, I_VPCMPESTRI = 9771, - I_VPCMPESTRM = 9748, I_VPCMPGTB = 3745, I_VPCMPGTD = 3783, I_VPCMPGTQ = 8130, - I_VPCMPGTW = 3764, I_VPCMPISTRI = 9817, I_VPCMPISTRM = 9794, I_VPERM2F128 = 9299, - I_VPERMILPD = 7604, I_VPERMILPS = 7593, I_VPEXTRB = 9471, I_VPEXTRD = 9496, - I_VPEXTRQ = 9505, I_VPEXTRW = 6353, I_VPHADDD = 7417, I_VPHADDSW = 7435, I_VPHADDW = 7400, - I_VPHMINPOSUW = 8305, I_VPHSUBD = 7493, I_VPHSUBSW = 7511, I_VPHSUBW = 7476, - I_VPINSRB = 9572, I_VPINSRD = 9618, I_VPINSRQ = 9627, I_VPINSRW = 6336, I_VPMADDUBSW = 7456, - I_VPMADDWD = 7116, I_VPMAXSB = 8216, I_VPMAXSD = 8233, I_VPMAXSW = 7006, I_VPMAXUB = 6690, - I_VPMAXUD = 8267, I_VPMAXUW = 8250, I_VPMINSB = 8148, I_VPMINSD = 8165, I_VPMINSW = 6944, - I_VPMINUB = 6632, I_VPMINUD = 8199, I_VPMINUW = 8182, I_VPMOVMSKB = 6575, - I_VPMOVSXBD = 7798, I_VPMOVSXBQ = 7819, I_VPMOVSXBW = 7777, I_VPMOVSXDQ = 7882, - I_VPMOVSXWD = 7840, I_VPMOVSXWQ = 7861, I_VPMOVZXBD = 8026, I_VPMOVZXBQ = 8047, - I_VPMOVZXBW = 8005, I_VPMOVZXDQ = 8110, I_VPMOVZXWD = 8068, I_VPMOVZXWQ = 8089, - I_VPMULDQ = 7901, I_VPMULHRSW = 7582, I_VPMULHUW = 6783, I_VPMULHW = 6801, - I_VPMULLD = 8284, I_VPMULLW = 6538, I_VPMULUDQ = 7097, I_VPOR = 6958, I_VPSADBW = 7134, - I_VPSHUFB = 7383, I_VPSHUFD = 4048, I_VPSHUFHW = 4057, I_VPSHUFLW = 4067, - I_VPSIGNB = 7529, I_VPSIGND = 7563, I_VPSIGNW = 7546, I_VPSLLD = 7065, I_VPSLLDQ = 9889, - I_VPSLLQ = 7080, I_VPSLLW = 7050, I_VPSRAD = 6751, I_VPSRAW = 6736, I_VPSRLD = 6492, - I_VPSRLDQ = 9872, I_VPSRLQ = 6507, I_VPSRLW = 6477, I_VPSUBB = 7185, I_VPSUBD = 7215, - I_VPSUBQ = 7230, I_VPSUBSB = 6910, I_VPSUBSW = 6927, I_VPSUBUSB = 6595, I_VPSUBUSW = 6614, - I_VPSUBW = 7200, I_VPTEST = 7670, I_VPUNPCKHBW = 3825, I_VPUNPCKHDQ = 3871, - I_VPUNPCKHQDQ = 3941, I_VPUNPCKHWD = 3848, I_VPUNPCKLBW = 3657, I_VPUNPCKLDQ = 3703, - I_VPUNPCKLQDQ = 3916, I_VPUNPCKLWD = 3680, I_VPXOR = 7021, I_VRCPPS = 3001, - I_VRCPSS = 3009, I_VROUNDPD = 9339, I_VROUNDPS = 9320, I_VROUNDSD = 9377, - I_VROUNDSS = 9358, I_VRSQRTPS = 2967, I_VRSQRTSS = 2977, I_VSHUFPD = 6387, - I_VSHUFPS = 6378, I_VSQRTPD = 2922, I_VSQRTPS = 2913, I_VSQRTSD = 2940, I_VSQRTSS = 2931, - I_VSTMXCSR = 10004, I_VSUBPD = 3442, I_VSUBPS = 3434, I_VSUBSD = 3458, I_VSUBSS = 3450, - I_VTESTPD = 7624, I_VTESTPS = 7615, I_VUCOMISD = 2795, I_VUCOMISS = 2785, - I_VUNPCKHPD = 2351, I_VUNPCKHPS = 2340, I_VUNPCKLPD = 2309, I_VUNPCKLPS = 2298, - I_VXORPD = 3129, I_VXORPS = 3121, I_VZEROALL = 4152, I_VZEROUPPER = 4140, - I_WAIT = 10054, I_WBINVD = 561, I_WRFSBASE = 9965, I_WRGSBASE = 9994, I_WRMSR = 586, - I_XABORT = 1007, I_XADD = 946, I_XBEGIN = 1015, I_XCHG = 212, I_XEND = 1823, - I_XGETBV = 1799, I_XLAT = 400, I_XOR = 61, I_XORPD = 3114, I_XORPS = 3107, - I_XRSTOR = 4307, I_XRSTOR64 = 4315, I_XSAVE = 4283, I_XSAVE64 = 4290, I_XSAVEOPT = 4333, - I_XSAVEOPT64 = 4343, I_XSETBV = 1807, I__3DNOW = 10068 + I_JRCXZ = 439, I_JS = 170, I_JZ = 152, I_LAHF = 289, I_LAR = 521, I_LDDQU = 7027, + I_LDMXCSR = 9955, I_LDS = 335, I_LEA = 223, I_LEAVE = 347, I_LES = 330, I_LFENCE = 4298, + I_LFS = 916, I_LGDT = 1702, I_LGS = 921, I_LIDT = 1708, I_LLDT = 1667, I_LMSW = 1720, + I_LODS = 313, I_LOOP = 420, I_LOOPNZ = 405, I_LOOPZ = 413, I_LSL = 526, I_LSS = 906, + I_LTR = 1673, I_LZCNT = 4396, I_MASKMOVDQU = 7152, I_MASKMOVQ = 7142, I_MAXPD = 3592, + I_MAXPS = 3585, I_MAXSD = 3606, I_MAXSS = 3599, I_MFENCE = 4324, I_MINPD = 3472, + I_MINPS = 3465, I_MINSD = 3486, I_MINSS = 3479, I_MONITOR = 1770, I_MOV = 218, + I_MOVAPD = 2492, I_MOVAPS = 2484, I_MOVBE = 9284, I_MOVD = 3953, I_MOVDDUP = 2219, + I_MOVDQ2Q = 6555, I_MOVDQA = 3979, I_MOVDQU = 3987, I_MOVHLPS = 2184, I_MOVHPD = 2378, + I_MOVHPS = 2370, I_MOVLHPS = 2361, I_MOVLPD = 2201, I_MOVLPS = 2193, I_MOVMSKPD = 2848, + I_MOVMSKPS = 2838, I_MOVNTDQ = 6882, I_MOVNTDQA = 7928, I_MOVNTI = 951, I_MOVNTPD = 2589, + I_MOVNTPS = 2580, I_MOVNTQ = 6874, I_MOVNTSD = 2607, I_MOVNTSS = 2598, I_MOVQ = 3959, + I_MOVQ2DQ = 6546, I_MOVS = 295, I_MOVSD = 2143, I_MOVSHDUP = 2386, I_MOVSLDUP = 2209, + I_MOVSS = 2136, I_MOVSX = 938, I_MOVSXD = 10038, I_MOVUPD = 2128, I_MOVUPS = 2120, + I_MOVZX = 926, I_MPSADBW = 9661, I_MUL = 1640, I_MULPD = 3203, I_MULPS = 3196, + I_MULSD = 3217, I_MULSS = 3210, I_MWAIT = 1779, I_NEG = 1635, I_NOP = 580, + I_NOT = 1630, I_OR = 27, I_ORPD = 3086, I_ORPS = 3080, I_OUT = 450, I_OUTS = 128, + I_PABSB = 7721, I_PABSD = 7751, I_PABSW = 7736, I_PACKSSDW = 3882, I_PACKSSWB = 3714, + I_PACKUSDW = 7949, I_PACKUSWB = 3792, I_PADDB = 7237, I_PADDD = 7267, I_PADDQ = 6514, + I_PADDSB = 6963, I_PADDSW = 6980, I_PADDUSB = 6653, I_PADDUSW = 6672, I_PADDW = 7252, + I_PALIGNR = 9443, I_PAND = 6640, I_PANDN = 6698, I_PAUSE = 10046, I_PAVGB = 6713, + I_PAVGUSB = 2111, I_PAVGW = 6758, I_PBLENDVB = 7632, I_PBLENDW = 9424, I_PCLMULQDQ = 9680, + I_PCMPEQB = 4076, I_PCMPEQD = 4114, I_PCMPEQQ = 7909, I_PCMPEQW = 4095, I_PCMPESTRI = 9759, + I_PCMPESTRM = 9736, I_PCMPGTB = 3735, I_PCMPGTD = 3773, I_PCMPGTQ = 8120, + I_PCMPGTW = 3754, I_PCMPISTRI = 9805, I_PCMPISTRM = 9782, I_PEXTRB = 9462, + I_PEXTRD = 9479, I_PEXTRQ = 9487, I_PEXTRW = 6344, I_PF2ID = 1947, I_PF2IW = 1940, + I_PFACC = 2061, I_PFADD = 2010, I_PFCMPEQ = 2068, I_PFCMPGE = 1971, I_PFCMPGT = 2017, + I_PFMAX = 2026, I_PFMIN = 1980, I_PFMUL = 2077, I_PFNACC = 1954, I_PFPNACC = 1962, + I_PFRCP = 1987, I_PFRCPIT1 = 2033, I_PFRCPIT2 = 2084, I_PFRSQIT1 = 2043, I_PFRSQRT = 1994, + I_PFSUB = 2003, I_PFSUBR = 2053, I_PHADDD = 7408, I_PHADDSW = 7425, I_PHADDW = 7391, + I_PHMINPOSUW = 8292, I_PHSUBD = 7484, I_PHSUBSW = 7501, I_PHSUBW = 7467, I_PI2FD = 1933, + I_PI2FW = 1926, I_PINSRB = 9563, I_PINSRD = 9601, I_PINSRQ = 9609, I_PINSRW = 6327, + I_PMADDUBSW = 7444, I_PMADDWD = 7106, I_PMAXSB = 8207, I_PMAXSD = 8224, I_PMAXSW = 6997, + I_PMAXUB = 6681, I_PMAXUD = 8258, I_PMAXUW = 8241, I_PMINSB = 8139, I_PMINSD = 8156, + I_PMINSW = 6935, I_PMINUB = 6623, I_PMINUD = 8190, I_PMINUW = 8173, I_PMOVMSKB = 6564, + I_PMOVSXBD = 7787, I_PMOVSXBQ = 7808, I_PMOVSXBW = 7766, I_PMOVSXDQ = 7871, + I_PMOVSXWD = 7829, I_PMOVSXWQ = 7850, I_PMOVZXBD = 8015, I_PMOVZXBQ = 8036, + I_PMOVZXBW = 7994, I_PMOVZXDQ = 8099, I_PMOVZXWD = 8057, I_PMOVZXWQ = 8078, + I_PMULDQ = 7892, I_PMULHRSW = 7571, I_PMULHRW = 2094, I_PMULHUW = 6773, I_PMULHW = 6792, + I_PMULLD = 8275, I_PMULLW = 6529, I_PMULUDQ = 7087, I_POP = 22, I_POPA = 98, + I_POPCNT = 4371, I_POPF = 277, I_POR = 6952, I_PREFETCH = 1905, I_PREFETCHNTA = 2435, + I_PREFETCHT0 = 2448, I_PREFETCHT1 = 2460, I_PREFETCHT2 = 2472, I_PREFETCHW = 1915, + I_PSADBW = 7125, I_PSHUFB = 7374, I_PSHUFD = 4021, I_PSHUFHW = 4029, I_PSHUFLW = 4038, + I_PSHUFW = 4013, I_PSIGNB = 7520, I_PSIGND = 7554, I_PSIGNW = 7537, I_PSLLD = 7057, + I_PSLLDQ = 9880, I_PSLLQ = 7072, I_PSLLW = 7042, I_PSRAD = 6743, I_PSRAW = 6728, + I_PSRLD = 6484, I_PSRLDQ = 9863, I_PSRLQ = 6499, I_PSRLW = 6469, I_PSUBB = 7177, + I_PSUBD = 7207, I_PSUBQ = 7222, I_PSUBSB = 6901, I_PSUBSW = 6918, I_PSUBUSB = 6585, + I_PSUBUSW = 6604, I_PSUBW = 7192, I_PSWAPD = 2103, I_PTEST = 7662, I_PUNPCKHBW = 3813, + I_PUNPCKHDQ = 3859, I_PUNPCKHQDQ = 3928, I_PUNPCKHWD = 3836, I_PUNPCKLBW = 3645, + I_PUNPCKLDQ = 3691, I_PUNPCKLQDQ = 3903, I_PUNPCKLWD = 3668, I_PUSH = 16, + I_PUSHA = 91, I_PUSHF = 270, I_PXOR = 7014, I_RCL = 976, I_RCPPS = 2986, I_RCPSS = 2993, + I_RCR = 981, I_RDFSBASE = 9915, I_RDGSBASE = 9945, I_RDMSR = 599, I_RDPMC = 606, + I_RDRAND = 10059, I_RDTSC = 592, I_RDTSCP = 1897, I_RET = 325, I_RETF = 354, + I_ROL = 966, I_ROR = 971, I_ROUNDPD = 9329, I_ROUNDPS = 9310, I_ROUNDSD = 9367, + I_ROUNDSS = 9348, I_RSM = 881, I_RSQRTPS = 2948, I_RSQRTSS = 2957, I_SAHF = 283, + I_SAL = 996, I_SALC = 393, I_SAR = 1001, I_SBB = 36, I_SCAS = 319, I_SETA = 806, + I_SETAE = 779, I_SETB = 773, I_SETBE = 799, I_SETG = 858, I_SETGE = 844, I_SETL = 838, + I_SETLE = 851, I_SETNO = 766, I_SETNP = 831, I_SETNS = 818, I_SETNZ = 792, + I_SETO = 760, I_SETP = 825, I_SETS = 812, I_SETZ = 786, I_SFENCE = 4354, I_SGDT = 1690, + I_SHL = 986, I_SHLD = 875, I_SHR = 991, I_SHRD = 891, I_SHUFPD = 6369, I_SHUFPS = 6361, + I_SIDT = 1696, I_SKINIT = 1872, I_SLDT = 1656, I_SMSW = 1714, I_SQRTPD = 2888, + I_SQRTPS = 2880, I_SQRTSD = 2904, I_SQRTSS = 2896, I_STAC = 1792, I_STC = 496, + I_STD = 516, I_STGI = 1860, I_STI = 506, I_STMXCSR = 9984, I_STOS = 307, I_STR = 1662, + I_SUB = 51, I_SUBPD = 3412, I_SUBPS = 3405, I_SUBSD = 3426, I_SUBSS = 3419, + I_SWAPGS = 1889, I_SYSCALL = 531, I_SYSENTER = 613, I_SYSEXIT = 623, I_SYSRET = 546, + I_TEST = 206, I_TZCNT = 4384, I_UCOMISD = 2775, I_UCOMISS = 2766, I_UD2 = 568, + I_UNPCKHPD = 2329, I_UNPCKHPS = 2319, I_UNPCKLPD = 2287, I_UNPCKLPS = 2277, + I_VADDPD = 3172, I_VADDPS = 3164, I_VADDSD = 3188, I_VADDSS = 3180, I_VADDSUBPD = 6447, + I_VADDSUBPS = 6458, I_VAESDEC = 9250, I_VAESDECLAST = 9271, I_VAESENC = 9208, + I_VAESENCLAST = 9229, I_VAESIMC = 9191, I_VAESKEYGENASSIST = 9845, I_VANDNPD = 3071, + I_VANDNPS = 3062, I_VANDPD = 3038, I_VANDPS = 3030, I_VBLENDPD = 9414, I_VBLENDPS = 9395, + I_VBLENDVPD = 9714, I_VBLENDVPS = 9703, I_VBROADCASTF128 = 7705, I_VBROADCASTSD = 7691, + I_VBROADCASTSS = 7677, I_VCMPEQPD = 5121, I_VCMPEQPS = 4719, I_VCMPEQSD = 5925, + I_VCMPEQSS = 5523, I_VCMPEQ_OSPD = 5302, I_VCMPEQ_OSPS = 4900, I_VCMPEQ_OSSD = 6106, + I_VCMPEQ_OSSS = 5704, I_VCMPEQ_UQPD = 5208, I_VCMPEQ_UQPS = 4806, I_VCMPEQ_UQSD = 6012, + I_VCMPEQ_UQSS = 5610, I_VCMPEQ_USPD = 5411, I_VCMPEQ_USPS = 5009, I_VCMPEQ_USSD = 6215, + I_VCMPEQ_USSS = 5813, I_VCMPFALSEPD = 5243, I_VCMPFALSEPS = 4841, I_VCMPFALSESD = 6047, + I_VCMPFALSESS = 5645, I_VCMPFALSE_OSPD = 5452, I_VCMPFALSE_OSPS = 5050, I_VCMPFALSE_OSSD = 6256, + I_VCMPFALSE_OSSS = 5854, I_VCMPGEPD = 5270, I_VCMPGEPS = 4868, I_VCMPGESD = 6074, + I_VCMPGESS = 5672, I_VCMPGE_OQPD = 5482, I_VCMPGE_OQPS = 5080, I_VCMPGE_OQSD = 6286, + I_VCMPGE_OQSS = 5884, I_VCMPGTPD = 5280, I_VCMPGTPS = 4878, I_VCMPGTSD = 6084, + I_VCMPGTSS = 5682, I_VCMPGT_OQPD = 5495, I_VCMPGT_OQPS = 5093, I_VCMPGT_OQSD = 6299, + I_VCMPGT_OQSS = 5897, I_VCMPLEPD = 5141, I_VCMPLEPS = 4739, I_VCMPLESD = 5945, + I_VCMPLESS = 5543, I_VCMPLE_OQPD = 5328, I_VCMPLE_OQPS = 4926, I_VCMPLE_OQSD = 6132, + I_VCMPLE_OQSS = 5730, I_VCMPLTPD = 5131, I_VCMPLTPS = 4729, I_VCMPLTSD = 5935, + I_VCMPLTSS = 5533, I_VCMPLT_OQPD = 5315, I_VCMPLT_OQPS = 4913, I_VCMPLT_OQSD = 6119, + I_VCMPLT_OQSS = 5717, I_VCMPNEQPD = 5164, I_VCMPNEQPS = 4762, I_VCMPNEQSD = 5968, + I_VCMPNEQSS = 5566, I_VCMPNEQ_OQPD = 5256, I_VCMPNEQ_OQPS = 4854, I_VCMPNEQ_OQSD = 6060, + I_VCMPNEQ_OQSS = 5658, I_VCMPNEQ_OSPD = 5468, I_VCMPNEQ_OSPS = 5066, I_VCMPNEQ_OSSD = 6272, + I_VCMPNEQ_OSSS = 5870, I_VCMPNEQ_USPD = 5356, I_VCMPNEQ_USPS = 4954, I_VCMPNEQ_USSD = 6160, + I_VCMPNEQ_USSS = 5758, I_VCMPNGEPD = 5221, I_VCMPNGEPS = 4819, I_VCMPNGESD = 6025, + I_VCMPNGESS = 5623, I_VCMPNGE_UQPD = 5424, I_VCMPNGE_UQPS = 5022, I_VCMPNGE_UQSD = 6228, + I_VCMPNGE_UQSS = 5826, I_VCMPNGTPD = 5232, I_VCMPNGTPS = 4830, I_VCMPNGTSD = 6036, + I_VCMPNGTSS = 5634, I_VCMPNGT_UQPD = 5438, I_VCMPNGT_UQPS = 5036, I_VCMPNGT_UQSD = 6242, + I_VCMPNGT_UQSS = 5840, I_VCMPNLEPD = 5186, I_VCMPNLEPS = 4784, I_VCMPNLESD = 5990, + I_VCMPNLESS = 5588, I_VCMPNLE_UQPD = 5384, I_VCMPNLE_UQPS = 4982, I_VCMPNLE_UQSD = 6188, + I_VCMPNLE_UQSS = 5786, I_VCMPNLTPD = 5175, I_VCMPNLTPS = 4773, I_VCMPNLTSD = 5979, + I_VCMPNLTSS = 5577, I_VCMPNLT_UQPD = 5370, I_VCMPNLT_UQPS = 4968, I_VCMPNLT_UQSD = 6174, + I_VCMPNLT_UQSS = 5772, I_VCMPORDPD = 5197, I_VCMPORDPS = 4795, I_VCMPORDSD = 6001, + I_VCMPORDSS = 5599, I_VCMPORD_SPD = 5398, I_VCMPORD_SPS = 4996, I_VCMPORD_SSD = 6202, + I_VCMPORD_SSS = 5800, I_VCMPTRUEPD = 5290, I_VCMPTRUEPS = 4888, I_VCMPTRUESD = 6094, + I_VCMPTRUESS = 5692, I_VCMPTRUE_USPD = 5508, I_VCMPTRUE_USPS = 5106, I_VCMPTRUE_USSD = 6312, + I_VCMPTRUE_USSS = 5910, I_VCMPUNORDPD = 5151, I_VCMPUNORDPS = 4749, I_VCMPUNORDSD = 5955, + I_VCMPUNORDSS = 5553, I_VCMPUNORD_SPD = 5341, I_VCMPUNORD_SPS = 4939, I_VCMPUNORD_SSD = 6145, + I_VCMPUNORD_SSS = 5743, I_VCOMISD = 2829, I_VCOMISS = 2820, I_VCVTDQ2PD = 6852, + I_VCVTDQ2PS = 3371, I_VCVTPD2DQ = 6863, I_VCVTPD2PS = 3307, I_VCVTPS2DQ = 3382, + I_VCVTPS2PD = 3296, I_VCVTSD2SI = 2755, I_VCVTSD2SS = 3329, I_VCVTSI2SD = 2569, + I_VCVTSI2SS = 2558, I_VCVTSS2SD = 3318, I_VCVTSS2SI = 2744, I_VCVTTPD2DQ = 6840, + I_VCVTTPS2DQ = 3393, I_VCVTTSD2SI = 2692, I_VCVTTSS2SI = 2680, I_VDIVPD = 3561, + I_VDIVPS = 3553, I_VDIVSD = 3577, I_VDIVSS = 3569, I_VDPPD = 9654, I_VDPPS = 9641, + I_VERR = 1678, I_VERW = 1684, I_VEXTRACTF128 = 9549, I_VEXTRACTPS = 9524, + I_VFMADD132PD = 8420, I_VFMADD132PS = 8407, I_VFMADD132SD = 8446, I_VFMADD132SS = 8433, + I_VFMADD213PD = 8700, I_VFMADD213PS = 8687, I_VFMADD213SD = 8726, I_VFMADD213SS = 8713, + I_VFMADD231PD = 8980, I_VFMADD231PS = 8967, I_VFMADD231SD = 9006, I_VFMADD231SS = 8993, + I_VFMADDSUB132PD = 8359, I_VFMADDSUB132PS = 8343, I_VFMADDSUB213PD = 8639, + I_VFMADDSUB213PS = 8623, I_VFMADDSUB231PD = 8919, I_VFMADDSUB231PS = 8903, + I_VFMSUB132PD = 8472, I_VFMSUB132PS = 8459, I_VFMSUB132SD = 8498, I_VFMSUB132SS = 8485, + I_VFMSUB213PD = 8752, I_VFMSUB213PS = 8739, I_VFMSUB213SD = 8778, I_VFMSUB213SS = 8765, + I_VFMSUB231PD = 9032, I_VFMSUB231PS = 9019, I_VFMSUB231SD = 9058, I_VFMSUB231SS = 9045, + I_VFMSUBADD132PD = 8391, I_VFMSUBADD132PS = 8375, I_VFMSUBADD213PD = 8671, + I_VFMSUBADD213PS = 8655, I_VFMSUBADD231PD = 8951, I_VFMSUBADD231PS = 8935, + I_VFNMADD132PD = 8525, I_VFNMADD132PS = 8511, I_VFNMADD132SD = 8553, I_VFNMADD132SS = 8539, + I_VFNMADD213PD = 8805, I_VFNMADD213PS = 8791, I_VFNMADD213SD = 8833, I_VFNMADD213SS = 8819, + I_VFNMADD231PD = 9085, I_VFNMADD231PS = 9071, I_VFNMADD231SD = 9113, I_VFNMADD231SS = 9099, + I_VFNMSUB132PD = 8581, I_VFNMSUB132PS = 8567, I_VFNMSUB132SD = 8609, I_VFNMSUB132SS = 8595, + I_VFNMSUB213PD = 8861, I_VFNMSUB213PS = 8847, I_VFNMSUB213SD = 8889, I_VFNMSUB213SS = 8875, + I_VFNMSUB231PD = 9141, I_VFNMSUB231PS = 9127, I_VFNMSUB231SD = 9169, I_VFNMSUB231SS = 9155, + I_VHADDPD = 4230, I_VHADDPS = 4239, I_VHSUBPD = 4264, I_VHSUBPS = 4273, I_VINSERTF128 = 9536, + I_VINSERTPS = 9590, I_VLDDQU = 7034, I_VLDMXCSR = 9974, I_VMASKMOVDQU = 7164, + I_VMASKMOVPD = 7982, I_VMASKMOVPS = 7970, I_VMAXPD = 3621, I_VMAXPS = 3613, + I_VMAXSD = 3637, I_VMAXSS = 3629, I_VMCALL = 1734, I_VMCLEAR = 10022, I_VMFUNC = 1814, + I_VMINPD = 3501, I_VMINPS = 3493, I_VMINSD = 3517, I_VMINSS = 3509, I_VMLAUNCH = 1742, + I_VMLOAD = 1844, I_VMMCALL = 1835, I_VMOVAPD = 2509, I_VMOVAPS = 2500, I_VMOVD = 3965, + I_VMOVDDUP = 2267, I_VMOVDQA = 3995, I_VMOVDQU = 4004, I_VMOVHLPS = 2228, + I_VMOVHPD = 2415, I_VMOVHPS = 2406, I_VMOVLHPS = 2396, I_VMOVLPD = 2247, I_VMOVLPS = 2238, + I_VMOVMSKPD = 2869, I_VMOVMSKPS = 2858, I_VMOVNTDQ = 6891, I_VMOVNTDQA = 7938, + I_VMOVNTPD = 2626, I_VMOVNTPS = 2616, I_VMOVQ = 3972, I_VMOVSD = 2176, I_VMOVSHDUP = 2424, + I_VMOVSLDUP = 2256, I_VMOVSS = 2168, I_VMOVUPD = 2159, I_VMOVUPS = 2150, I_VMPSADBW = 9670, + I_VMPTRLD = 10013, I_VMPTRST = 6418, I_VMREAD = 4161, I_VMRESUME = 1752, I_VMRUN = 1828, + I_VMSAVE = 1852, I_VMULPD = 3232, I_VMULPS = 3224, I_VMULSD = 3248, I_VMULSS = 3240, + I_VMWRITE = 4185, I_VMXOFF = 1762, I_VMXON = 10031, I_VORPD = 3099, I_VORPS = 3092, + I_VPABSB = 7728, I_VPABSD = 7758, I_VPABSW = 7743, I_VPACKSSDW = 3892, I_VPACKSSWB = 3724, + I_VPACKUSDW = 7959, I_VPACKUSWB = 3802, I_VPADDB = 7244, I_VPADDD = 7274, + I_VPADDQ = 6521, I_VPADDSB = 6971, I_VPADDSW = 6988, I_VPADDUSW = 6662, I_VPADDW = 7259, + I_VPALIGNR = 9452, I_VPAND = 6646, I_VPANDN = 6705, I_VPAVGB = 6720, I_VPAVGW = 6765, + I_VPBLENDVB = 9725, I_VPBLENDW = 9433, I_VPCLMULQDQ = 9691, I_VPCMPEQB = 4085, + I_VPCMPEQD = 4123, I_VPCMPEQQ = 7918, I_VPCMPEQW = 4104, I_VPCMPESTRI = 9770, + I_VPCMPESTRM = 9747, I_VPCMPGTB = 3744, I_VPCMPGTD = 3782, I_VPCMPGTQ = 8129, + I_VPCMPGTW = 3763, I_VPCMPISTRI = 9816, I_VPCMPISTRM = 9793, I_VPERM2F128 = 9298, + I_VPERMILPD = 7603, I_VPERMILPS = 7592, I_VPEXTRB = 9470, I_VPEXTRD = 9495, + I_VPEXTRQ = 9504, I_VPEXTRW = 6352, I_VPHADDD = 7416, I_VPHADDSW = 7434, I_VPHADDW = 7399, + I_VPHMINPOSUW = 8304, I_VPHSUBD = 7492, I_VPHSUBSW = 7510, I_VPHSUBW = 7475, + I_VPINSRB = 9571, I_VPINSRD = 9617, I_VPINSRQ = 9626, I_VPINSRW = 6335, I_VPMADDUBSW = 7455, + I_VPMADDWD = 7115, I_VPMAXSB = 8215, I_VPMAXSD = 8232, I_VPMAXSW = 7005, I_VPMAXUB = 6689, + I_VPMAXUD = 8266, I_VPMAXUW = 8249, I_VPMINSB = 8147, I_VPMINSD = 8164, I_VPMINSW = 6943, + I_VPMINUB = 6631, I_VPMINUD = 8198, I_VPMINUW = 8181, I_VPMOVMSKB = 6574, + I_VPMOVSXBD = 7797, I_VPMOVSXBQ = 7818, I_VPMOVSXBW = 7776, I_VPMOVSXDQ = 7881, + I_VPMOVSXWD = 7839, I_VPMOVSXWQ = 7860, I_VPMOVZXBD = 8025, I_VPMOVZXBQ = 8046, + I_VPMOVZXBW = 8004, I_VPMOVZXDQ = 8109, I_VPMOVZXWD = 8067, I_VPMOVZXWQ = 8088, + I_VPMULDQ = 7900, I_VPMULHRSW = 7581, I_VPMULHUW = 6782, I_VPMULHW = 6800, + I_VPMULLD = 8283, I_VPMULLW = 6537, I_VPMULUDQ = 7096, I_VPOR = 6957, I_VPSADBW = 7133, + I_VPSHUFB = 7382, I_VPSHUFD = 4047, I_VPSHUFHW = 4056, I_VPSHUFLW = 4066, + I_VPSIGNB = 7528, I_VPSIGND = 7562, I_VPSIGNW = 7545, I_VPSLLD = 7064, I_VPSLLDQ = 9888, + I_VPSLLQ = 7079, I_VPSLLW = 7049, I_VPSRAD = 6750, I_VPSRAW = 6735, I_VPSRLD = 6491, + I_VPSRLDQ = 9871, I_VPSRLQ = 6506, I_VPSRLW = 6476, I_VPSUBB = 7184, I_VPSUBD = 7214, + I_VPSUBQ = 7229, I_VPSUBSB = 6909, I_VPSUBSW = 6926, I_VPSUBUSB = 6594, I_VPSUBUSW = 6613, + I_VPSUBW = 7199, I_VPTEST = 7669, I_VPUNPCKHBW = 3824, I_VPUNPCKHDQ = 3870, + I_VPUNPCKHQDQ = 3940, I_VPUNPCKHWD = 3847, I_VPUNPCKLBW = 3656, I_VPUNPCKLDQ = 3702, + I_VPUNPCKLQDQ = 3915, I_VPUNPCKLWD = 3679, I_VPXOR = 7020, I_VRCPPS = 3000, + I_VRCPSS = 3008, I_VROUNDPD = 9338, I_VROUNDPS = 9319, I_VROUNDSD = 9376, + I_VROUNDSS = 9357, I_VRSQRTPS = 2966, I_VRSQRTSS = 2976, I_VSHUFPD = 6386, + I_VSHUFPS = 6377, I_VSQRTPD = 2921, I_VSQRTPS = 2912, I_VSQRTSD = 2939, I_VSQRTSS = 2930, + I_VSTMXCSR = 10003, I_VSUBPD = 3441, I_VSUBPS = 3433, I_VSUBSD = 3457, I_VSUBSS = 3449, + I_VTESTPD = 7623, I_VTESTPS = 7614, I_VUCOMISD = 2794, I_VUCOMISS = 2784, + I_VUNPCKHPD = 2350, I_VUNPCKHPS = 2339, I_VUNPCKLPD = 2308, I_VUNPCKLPS = 2297, + I_VXORPD = 3128, I_VXORPS = 3120, I_VZEROALL = 4151, I_VZEROUPPER = 4139, + I_WAIT = 10053, I_WBINVD = 560, I_WRFSBASE = 9964, I_WRGSBASE = 9993, I_WRMSR = 585, + I_XABORT = 1006, I_XADD = 945, I_XBEGIN = 1014, I_XCHG = 212, I_XEND = 1822, + I_XGETBV = 1798, I_XLAT = 399, I_XOR = 61, I_XORPD = 3113, I_XORPS = 3106, + I_XRSTOR = 4306, I_XRSTOR64 = 4314, I_XSAVE = 4282, I_XSAVE64 = 4289, I_XSAVEOPT = 4332, + I_XSAVEOPT64 = 4342, I_XSETBV = 1806, I__3DNOW = 10067 } _InstructionType; typedef enum { diff --git a/NativeCore/Dependencies/distorm/src/config.h b/NativeCore/Dependencies/distorm/src/config.h index e78dba36..6febad67 100644 --- a/NativeCore/Dependencies/distorm/src/config.h +++ b/NativeCore/Dependencies/distorm/src/config.h @@ -13,7 +13,7 @@ This library is licensed under the BSD license. See the file COPYING. #define CONFIG_H /* diStorm version number. */ -#define __DISTORMV__ 0x030502 +#define __DISTORMV__ 0x030503 #include /* memset, memcpy - can be easily self implemented for libc independency. */ diff --git a/NativeCore/Dependencies/distorm/src/insts.c b/NativeCore/Dependencies/distorm/src/insts.c index 7aab70dc..688558c1 100644 --- a/NativeCore/Dependencies/distorm/src/insts.c +++ b/NativeCore/Dependencies/distorm/src/insts.c @@ -15,15 +15,15 @@ This library is licensed under the BSD license. See the file COPYING. /* - * GENERATED BY disOps at Sat Apr 3 17:52:58 2021 + * GENERATED BY disOps at Fri Dec 17 10:22:38 2021 */ -_InstInfo II_MOVSXD = /*II*/ {0x1d7, 10039}; -_InstInfo II_NOP = /*II*/ {0x53, 581}; -_InstInfo II_PAUSE = /*II*/ {0x91, 10047}; -_InstInfo II_WAIT = /*II*/ {0x53, 10054}; -_InstInfo II_RDRAND = /*II*/ {0x1d8, 10060}; -_InstInfo II_3DNOW = /*II*/ {0x1d9, 10068}; +_InstInfo II_MOVSXD = /*II*/ {0x1d7, 10038}; +_InstInfo II_NOP = /*II*/ {0x53, 580}; +_InstInfo II_PAUSE = /*II*/ {0x91, 10046}; +_InstInfo II_WAIT = /*II*/ {0x53, 10053}; +_InstInfo II_RDRAND = /*II*/ {0x1d8, 10059}; +_InstInfo II_3DNOW = /*II*/ {0x1d9, 10067}; _iflags FlagsTable[101] = { 0x80000011, @@ -316,75 +316,75 @@ _InstInfo InstInfos[1248] = { /*II_C9*/ {0x6a, 347}, /*II_CA*/ {0x6b, 354}, /*II_CB*/ {0x6c, 354}, - /*II_CC*/ {0x6d, 360}, - /*II_CD*/ {0x6e, 367}, - /*II_CE*/ {0x6f, 372}, - /*II_CF*/ {0x70, 378}, - /*II_D4*/ {0x71, 384}, - /*II_D5*/ {0x71, 389}, - /*II_D6*/ {0x72, 394}, - /*II_D7*/ {0x73, 400}, - /*II_E0*/ {0x74, 406}, - /*II_E1*/ {0x74, 414}, - /*II_E2*/ {0x75, 421}, - /*II_E4*/ {0x77, 447}, - /*II_E5*/ {0x78, 447}, - /*II_E6*/ {0x79, 451}, - /*II_E7*/ {0x7a, 451}, - /*II_E8*/ {0x7b, 456}, - /*II_E9*/ {0x7c, 462}, - /*II_EA*/ {0x7d, 467}, - /*II_EB*/ {0x7e, 462}, - /*II_EC*/ {0x7f, 447}, - /*II_ED*/ {0x80, 447}, - /*II_EE*/ {0x81, 451}, - /*II_EF*/ {0x82, 451}, - /*II_F1*/ {0x6d, 476}, - /*II_F4*/ {0x83, 482}, - /*II_F5*/ {0x84, 487}, - /*II_F8*/ {0x84, 492}, - /*II_F9*/ {0x84, 497}, - /*II_FA*/ {0x85, 502}, - /*II_FB*/ {0x85, 507}, - /*II_FC*/ {0x86, 512}, - /*II_FD*/ {0x86, 517}, - /*II_0F_02*/ {0x87, 522}, - /*II_0F_03*/ {0x87, 527}, - /*II_0F_05*/ {0x88, 532}, - /*II_0F_06*/ {0x89, 541}, - /*II_0F_07*/ {0x88, 547}, - /*II_0F_08*/ {0x89, 555}, - /*II_0F_09*/ {0x89, 561}, - /*II_0F_0B*/ {0x8a, 569}, - /*II_0F_0E*/ {0x8b, 574}, - /*II_0F_1F*/ {0x8c, 581}, + /*II_CC*/ {0x53, 360}, + /*II_CD*/ {0x6d, 366}, + /*II_CE*/ {0x6e, 371}, + /*II_CF*/ {0x6f, 377}, + /*II_D4*/ {0x70, 383}, + /*II_D5*/ {0x70, 388}, + /*II_D6*/ {0x71, 393}, + /*II_D7*/ {0x72, 399}, + /*II_E0*/ {0x73, 405}, + /*II_E1*/ {0x73, 413}, + /*II_E2*/ {0x74, 420}, + /*II_E4*/ {0x76, 446}, + /*II_E5*/ {0x77, 446}, + /*II_E6*/ {0x78, 450}, + /*II_E7*/ {0x79, 450}, + /*II_E8*/ {0x7a, 455}, + /*II_E9*/ {0x7b, 461}, + /*II_EA*/ {0x7c, 466}, + /*II_EB*/ {0x7d, 461}, + /*II_EC*/ {0x7e, 446}, + /*II_ED*/ {0x7f, 446}, + /*II_EE*/ {0x80, 450}, + /*II_EF*/ {0x81, 450}, + /*II_F1*/ {0x82, 475}, + /*II_F4*/ {0x83, 481}, + /*II_F5*/ {0x84, 486}, + /*II_F8*/ {0x84, 491}, + /*II_F9*/ {0x84, 496}, + /*II_FA*/ {0x85, 501}, + /*II_FB*/ {0x85, 506}, + /*II_FC*/ {0x86, 511}, + /*II_FD*/ {0x86, 516}, + /*II_0F_02*/ {0x87, 521}, + /*II_0F_03*/ {0x87, 526}, + /*II_0F_05*/ {0x88, 531}, + /*II_0F_06*/ {0x89, 540}, + /*II_0F_07*/ {0x88, 546}, + /*II_0F_08*/ {0x89, 554}, + /*II_0F_09*/ {0x89, 560}, + /*II_0F_0B*/ {0x8a, 568}, + /*II_0F_0E*/ {0x8b, 573}, + /*II_0F_1F*/ {0x8c, 580}, /*II_0F_20*/ {0x8d, 218}, /*II_0F_21*/ {0x8e, 218}, /*II_0F_22*/ {0x8f, 218}, /*II_0F_23*/ {0x90, 218}, - /*II_0F_30*/ {0x89, 586}, - /*II_0F_31*/ {0x89, 593}, - /*II_0F_32*/ {0x89, 600}, - /*II_0F_33*/ {0x89, 607}, - /*II_0F_34*/ {0x88, 614}, - /*II_0F_35*/ {0x88, 624}, - /*II_0F_37*/ {0x91, 633}, - /*II_0F_40*/ {0x92, 641}, - /*II_0F_41*/ {0x92, 648}, - /*II_0F_42*/ {0x93, 656}, - /*II_0F_43*/ {0x93, 663}, - /*II_0F_44*/ {0x94, 671}, - /*II_0F_45*/ {0x94, 678}, - /*II_0F_46*/ {0x95, 686}, - /*II_0F_47*/ {0x95, 694}, - /*II_0F_48*/ {0x96, 701}, - /*II_0F_49*/ {0x96, 708}, - /*II_0F_4A*/ {0x97, 716}, - /*II_0F_4B*/ {0x97, 723}, - /*II_0F_4C*/ {0x98, 731}, - /*II_0F_4D*/ {0x98, 738}, - /*II_0F_4E*/ {0x99, 746}, - /*II_0F_4F*/ {0x99, 754}, + /*II_0F_30*/ {0x89, 585}, + /*II_0F_31*/ {0x89, 592}, + /*II_0F_32*/ {0x89, 599}, + /*II_0F_33*/ {0x89, 606}, + /*II_0F_34*/ {0x88, 613}, + /*II_0F_35*/ {0x88, 623}, + /*II_0F_37*/ {0x91, 632}, + /*II_0F_40*/ {0x92, 640}, + /*II_0F_41*/ {0x92, 647}, + /*II_0F_42*/ {0x93, 655}, + /*II_0F_43*/ {0x93, 662}, + /*II_0F_44*/ {0x94, 670}, + /*II_0F_45*/ {0x94, 677}, + /*II_0F_46*/ {0x95, 685}, + /*II_0F_47*/ {0x95, 693}, + /*II_0F_48*/ {0x96, 700}, + /*II_0F_49*/ {0x96, 707}, + /*II_0F_4A*/ {0x97, 715}, + /*II_0F_4B*/ {0x97, 722}, + /*II_0F_4C*/ {0x98, 730}, + /*II_0F_4D*/ {0x98, 737}, + /*II_0F_4E*/ {0x99, 745}, + /*II_0F_4F*/ {0x99, 753}, /*II_0F_80*/ {0x9a, 134}, /*II_0F_81*/ {0x9a, 138}, /*II_0F_82*/ {0x9b, 143}, @@ -401,54 +401,54 @@ _InstInfo InstInfos[1248] = { /*II_0F_8D*/ {0xa0, 192}, /*II_0F_8E*/ {0xa1, 197}, /*II_0F_8F*/ {0xa1, 202}, - /*II_0F_90*/ {0xa2, 761}, - /*II_0F_91*/ {0xa2, 767}, - /*II_0F_92*/ {0xa3, 774}, - /*II_0F_93*/ {0xa3, 780}, - /*II_0F_94*/ {0xa4, 787}, - /*II_0F_95*/ {0xa4, 793}, - /*II_0F_96*/ {0xa5, 800}, - /*II_0F_97*/ {0xa5, 807}, - /*II_0F_98*/ {0xa6, 813}, - /*II_0F_99*/ {0xa6, 819}, - /*II_0F_9A*/ {0xa7, 826}, - /*II_0F_9B*/ {0xa7, 832}, - /*II_0F_9C*/ {0xa8, 839}, - /*II_0F_9D*/ {0xa8, 845}, - /*II_0F_9E*/ {0xa9, 852}, - /*II_0F_9F*/ {0xa9, 859}, + /*II_0F_90*/ {0xa2, 760}, + /*II_0F_91*/ {0xa2, 766}, + /*II_0F_92*/ {0xa3, 773}, + /*II_0F_93*/ {0xa3, 779}, + /*II_0F_94*/ {0xa4, 786}, + /*II_0F_95*/ {0xa4, 792}, + /*II_0F_96*/ {0xa5, 799}, + /*II_0F_97*/ {0xa5, 806}, + /*II_0F_98*/ {0xa6, 812}, + /*II_0F_99*/ {0xa6, 818}, + /*II_0F_9A*/ {0xa7, 825}, + /*II_0F_9B*/ {0xa7, 831}, + /*II_0F_9C*/ {0xa8, 838}, + /*II_0F_9D*/ {0xa8, 844}, + /*II_0F_9E*/ {0xa9, 851}, + /*II_0F_9F*/ {0xa9, 858}, /*II_0F_A0*/ {0xaa, 16}, /*II_0F_A1*/ {0xab, 22}, - /*II_0F_A2*/ {0x91, 865}, - /*II_0F_A3*/ {0xac, 872}, + /*II_0F_A2*/ {0x91, 864}, + /*II_0F_A3*/ {0xac, 871}, /*II_0F_A8*/ {0xae, 16}, /*II_0F_A9*/ {0xaf, 22}, - /*II_0F_AA*/ {0xb0, 882}, - /*II_0F_AB*/ {0xb1, 887}, + /*II_0F_AA*/ {0xb0, 881}, + /*II_0F_AB*/ {0xb1, 886}, /*II_0F_AF*/ {0xb2, 117}, - /*II_0F_B0*/ {0xb3, 898}, - /*II_0F_B1*/ {0xb4, 898}, - /*II_0F_B2*/ {0xb5, 907}, - /*II_0F_B3*/ {0xb1, 912}, - /*II_0F_B4*/ {0xb5, 917}, - /*II_0F_B5*/ {0xb5, 922}, - /*II_0F_B6*/ {0xb6, 927}, - /*II_0F_B7*/ {0xb7, 927}, - /*II_0F_B9*/ {0x8a, 569}, - /*II_0F_BB*/ {0xb1, 934}, - /*II_0F_BE*/ {0xb6, 939}, - /*II_0F_BF*/ {0xb7, 939}, - /*II_0F_C0*/ {0xb3, 946}, - /*II_0F_C1*/ {0xb4, 946}, - /*II_0F_C3*/ {0xb8, 952}, - /*II_0F_C8*/ {0xb9, 960}, - /*II_0F_C8*/ {0xb9, 960}, - /*II_0F_C8*/ {0xb9, 960}, - /*II_0F_C8*/ {0xb9, 960}, - /*II_0F_C8*/ {0xb9, 960}, - /*II_0F_C8*/ {0xb9, 960}, - /*II_0F_C8*/ {0xb9, 960}, - /*II_0F_C8*/ {0xb9, 960}, + /*II_0F_B0*/ {0xb3, 897}, + /*II_0F_B1*/ {0xb4, 897}, + /*II_0F_B2*/ {0xb5, 906}, + /*II_0F_B3*/ {0xb1, 911}, + /*II_0F_B4*/ {0xb5, 916}, + /*II_0F_B5*/ {0xb5, 921}, + /*II_0F_B6*/ {0xb6, 926}, + /*II_0F_B7*/ {0xb7, 926}, + /*II_0F_B9*/ {0x8a, 568}, + /*II_0F_BB*/ {0xb1, 933}, + /*II_0F_BE*/ {0xb6, 938}, + /*II_0F_BF*/ {0xb7, 938}, + /*II_0F_C0*/ {0xb3, 945}, + /*II_0F_C1*/ {0xb4, 945}, + /*II_0F_C3*/ {0xb8, 951}, + /*II_0F_C8*/ {0xb9, 959}, + /*II_0F_C8*/ {0xb9, 959}, + /*II_0F_C8*/ {0xb9, 959}, + /*II_0F_C8*/ {0xb9, 959}, + /*II_0F_C8*/ {0xb9, 959}, + /*II_0F_C8*/ {0xb9, 959}, + /*II_0F_C8*/ {0xb9, 959}, + /*II_0F_C8*/ {0xb9, 959}, /*II_80_00*/ {0xba, 11}, /*II_80_01*/ {0xbb, 27}, /*II_80_02*/ {0xbc, 31}, @@ -482,907 +482,907 @@ _InstInfo InstInfos[1248] = { /*II_83_06*/ {0xd0, 61}, /*II_83_07*/ {0xd1, 71}, /*II_8F_00*/ {0xd2, 22}, - /*II_C0_00*/ {0xd3, 967}, - /*II_C0_01*/ {0xd3, 972}, - /*II_C0_02*/ {0xd4, 977}, - /*II_C0_03*/ {0xd4, 982}, - /*II_C0_04*/ {0xd5, 987}, - /*II_C0_05*/ {0xd5, 992}, - /*II_C0_06*/ {0xd5, 997}, - /*II_C0_07*/ {0xd5, 1002}, - /*II_C1_00*/ {0xd6, 967}, - /*II_C1_01*/ {0xd6, 972}, - /*II_C1_02*/ {0xd7, 977}, - /*II_C1_03*/ {0xd7, 982}, - /*II_C1_04*/ {0xd8, 987}, - /*II_C1_05*/ {0xd8, 992}, - /*II_C1_06*/ {0xd8, 997}, - /*II_C1_07*/ {0xd8, 1002}, + /*II_C0_00*/ {0xd3, 966}, + /*II_C0_01*/ {0xd3, 971}, + /*II_C0_02*/ {0xd4, 976}, + /*II_C0_03*/ {0xd4, 981}, + /*II_C0_04*/ {0xd5, 986}, + /*II_C0_05*/ {0xd5, 991}, + /*II_C0_06*/ {0xd5, 996}, + /*II_C0_07*/ {0xd5, 1001}, + /*II_C1_00*/ {0xd6, 966}, + /*II_C1_01*/ {0xd6, 971}, + /*II_C1_02*/ {0xd7, 976}, + /*II_C1_03*/ {0xd7, 981}, + /*II_C1_04*/ {0xd8, 986}, + /*II_C1_05*/ {0xd8, 991}, + /*II_C1_06*/ {0xd8, 996}, + /*II_C1_07*/ {0xd8, 1001}, /*II_C6_00*/ {0xd9, 218}, - /*II_C6_F8*/ {0xda, 1007}, + /*II_C6_F8*/ {0xda, 1006}, /*II_C7_00*/ {0xdb, 218}, - /*II_C7_F8*/ {0xdc, 1015}, - /*II_D0_00*/ {0xdd, 967}, - /*II_D0_01*/ {0xdd, 972}, - /*II_D0_02*/ {0xde, 977}, - /*II_D0_03*/ {0xde, 982}, - /*II_D0_04*/ {0xdf, 987}, - /*II_D0_05*/ {0xdf, 992}, - /*II_D0_06*/ {0xdf, 997}, - /*II_D0_07*/ {0xdf, 1002}, - /*II_D1_00*/ {0xe0, 967}, - /*II_D1_01*/ {0xe0, 972}, - /*II_D1_02*/ {0xe1, 977}, - /*II_D1_03*/ {0xe1, 982}, - /*II_D1_04*/ {0xe2, 987}, - /*II_D1_05*/ {0xe2, 992}, - /*II_D1_06*/ {0xe2, 997}, - /*II_D1_07*/ {0xe2, 1002}, - /*II_D2_00*/ {0xe3, 967}, - /*II_D2_01*/ {0xe3, 972}, - /*II_D2_02*/ {0xe4, 977}, - /*II_D2_03*/ {0xe4, 982}, - /*II_D2_04*/ {0xe5, 987}, - /*II_D2_05*/ {0xe5, 992}, - /*II_D2_06*/ {0xe5, 997}, - /*II_D2_07*/ {0xe5, 1002}, - /*II_D3_00*/ {0xe6, 967}, - /*II_D3_01*/ {0xe6, 972}, - /*II_D3_02*/ {0xe7, 977}, - /*II_D3_03*/ {0xe7, 982}, - /*II_D3_04*/ {0xe8, 987}, - /*II_D3_05*/ {0xe8, 992}, - /*II_D3_06*/ {0xe8, 997}, - /*II_D3_07*/ {0xe8, 1002}, - /*II_D8_00*/ {0xe9, 1023}, - /*II_D8_01*/ {0xe9, 1029}, - /*II_D8_02*/ {0xe9, 1035}, - /*II_D8_03*/ {0xe9, 1041}, - /*II_D8_04*/ {0xe9, 1048}, - /*II_D8_05*/ {0xe9, 1054}, - /*II_D8_06*/ {0xe9, 1061}, - /*II_D8_07*/ {0xe9, 1067}, - /*II_D8_C0*/ {0xea, 1023}, - /*II_D8_C0*/ {0xea, 1023}, - /*II_D8_C0*/ {0xea, 1023}, - /*II_D8_C0*/ {0xea, 1023}, - /*II_D8_C0*/ {0xea, 1023}, - /*II_D8_C0*/ {0xea, 1023}, - /*II_D8_C0*/ {0xea, 1023}, - /*II_D8_C0*/ {0xea, 1023}, - /*II_D8_C8*/ {0xea, 1029}, - /*II_D8_C8*/ {0xea, 1029}, - /*II_D8_C8*/ {0xea, 1029}, - /*II_D8_C8*/ {0xea, 1029}, - /*II_D8_C8*/ {0xea, 1029}, - /*II_D8_C8*/ {0xea, 1029}, - /*II_D8_C8*/ {0xea, 1029}, - /*II_D8_C8*/ {0xea, 1029}, - /*II_D8_D0*/ {0xeb, 1035}, - /*II_D8_D0*/ {0xeb, 1035}, - /*II_D8_D0*/ {0xeb, 1035}, - /*II_D8_D0*/ {0xeb, 1035}, - /*II_D8_D0*/ {0xeb, 1035}, - /*II_D8_D0*/ {0xeb, 1035}, - /*II_D8_D0*/ {0xeb, 1035}, - /*II_D8_D0*/ {0xeb, 1035}, - /*II_D8_D8*/ {0xeb, 1041}, - /*II_D8_D9*/ {0xec, 1041}, - /*II_D8_D8*/ {0xeb, 1041}, - /*II_D8_D8*/ {0xeb, 1041}, - /*II_D8_D8*/ {0xeb, 1041}, - /*II_D8_D8*/ {0xeb, 1041}, - /*II_D8_D8*/ {0xeb, 1041}, - /*II_D8_D8*/ {0xeb, 1041}, - /*II_D8_E0*/ {0xea, 1048}, - /*II_D8_E0*/ {0xea, 1048}, - /*II_D8_E0*/ {0xea, 1048}, - /*II_D8_E0*/ {0xea, 1048}, - /*II_D8_E0*/ {0xea, 1048}, - /*II_D8_E0*/ {0xea, 1048}, - /*II_D8_E0*/ {0xea, 1048}, - /*II_D8_E0*/ {0xea, 1048}, - /*II_D8_E8*/ {0xea, 1054}, - /*II_D8_E8*/ {0xea, 1054}, - /*II_D8_E8*/ {0xea, 1054}, - /*II_D8_E8*/ {0xea, 1054}, - /*II_D8_E8*/ {0xea, 1054}, - /*II_D8_E8*/ {0xea, 1054}, - /*II_D8_E8*/ {0xea, 1054}, - /*II_D8_E8*/ {0xea, 1054}, - /*II_D8_F0*/ {0xea, 1061}, - /*II_D8_F0*/ {0xea, 1061}, - /*II_D8_F0*/ {0xea, 1061}, - /*II_D8_F0*/ {0xea, 1061}, - /*II_D8_F0*/ {0xea, 1061}, - /*II_D8_F0*/ {0xea, 1061}, - /*II_D8_F0*/ {0xea, 1061}, - /*II_D8_F0*/ {0xea, 1061}, - /*II_D8_F8*/ {0xea, 1067}, - /*II_D8_F8*/ {0xea, 1067}, - /*II_D8_F8*/ {0xea, 1067}, - /*II_D8_F8*/ {0xea, 1067}, - /*II_D8_F8*/ {0xea, 1067}, - /*II_D8_F8*/ {0xea, 1067}, - /*II_D8_F8*/ {0xea, 1067}, - /*II_D8_F8*/ {0xea, 1067}, - /*II_D9_00*/ {0xe9, 1074}, - /*II_D9_02*/ {0xed, 1079}, - /*II_D9_03*/ {0xed, 1084}, - /*II_D9_04*/ {0xee, 1090}, - /*II_D9_05*/ {0xef, 1098}, - /*II_D9_C0*/ {0xeb, 1074}, - /*II_D9_C0*/ {0xeb, 1074}, - /*II_D9_C0*/ {0xeb, 1074}, - /*II_D9_C0*/ {0xeb, 1074}, - /*II_D9_C0*/ {0xeb, 1074}, - /*II_D9_C0*/ {0xeb, 1074}, - /*II_D9_C0*/ {0xeb, 1074}, - /*II_D9_C0*/ {0xeb, 1074}, - /*II_D9_C8*/ {0xeb, 1105}, - /*II_D9_C9*/ {0xec, 1105}, - /*II_D9_C8*/ {0xeb, 1105}, - /*II_D9_C8*/ {0xeb, 1105}, - /*II_D9_C8*/ {0xeb, 1105}, - /*II_D9_C8*/ {0xeb, 1105}, - /*II_D9_C8*/ {0xeb, 1105}, - /*II_D9_C8*/ {0xeb, 1105}, - /*II_D9_D0*/ {0xec, 1111}, - /*II_D9_E0*/ {0xec, 1117}, - /*II_D9_E1*/ {0xec, 1123}, - /*II_D9_E4*/ {0xec, 1129}, - /*II_D9_E5*/ {0xec, 1135}, - /*II_D9_E8*/ {0xec, 1141}, - /*II_D9_E9*/ {0xec, 1147}, - /*II_D9_EA*/ {0xec, 1155}, - /*II_D9_EB*/ {0xec, 1163}, - /*II_D9_EC*/ {0xec, 1170}, - /*II_D9_ED*/ {0xec, 1178}, - /*II_D9_EE*/ {0xec, 1186}, - /*II_D9_F0*/ {0xec, 1192}, - /*II_D9_F1*/ {0xec, 1199}, - /*II_D9_F2*/ {0xec, 1206}, - /*II_D9_F3*/ {0xec, 1213}, - /*II_D9_F4*/ {0xec, 1221}, - /*II_D9_F5*/ {0xec, 1230}, - /*II_D9_F6*/ {0xec, 1238}, - /*II_D9_F7*/ {0xec, 1247}, - /*II_D9_F8*/ {0xec, 1256}, - /*II_D9_F9*/ {0xec, 1263}, - /*II_D9_FA*/ {0xec, 1272}, - /*II_D9_FB*/ {0xec, 1279}, - /*II_D9_FC*/ {0xec, 1288}, - /*II_D9_FD*/ {0xec, 1297}, - /*II_D9_FE*/ {0xec, 1305}, - /*II_D9_FF*/ {0xec, 1311}, - /*II_DA_00*/ {0xe9, 1317}, - /*II_DA_01*/ {0xe9, 1324}, - /*II_DA_02*/ {0xe9, 1331}, - /*II_DA_03*/ {0xe9, 1338}, - /*II_DA_04*/ {0xe9, 1346}, - /*II_DA_05*/ {0xe9, 1353}, - /*II_DA_06*/ {0xe9, 1361}, - /*II_DA_07*/ {0xe9, 1368}, - /*II_DA_C0*/ {0xf0, 1376}, - /*II_DA_C0*/ {0xf0, 1376}, - /*II_DA_C0*/ {0xf0, 1376}, - /*II_DA_C0*/ {0xf0, 1376}, - /*II_DA_C0*/ {0xf0, 1376}, - /*II_DA_C0*/ {0xf0, 1376}, - /*II_DA_C0*/ {0xf0, 1376}, - /*II_DA_C0*/ {0xf0, 1376}, - /*II_DA_C8*/ {0xf1, 1384}, - /*II_DA_C8*/ {0xf1, 1384}, - /*II_DA_C8*/ {0xf1, 1384}, - /*II_DA_C8*/ {0xf1, 1384}, - /*II_DA_C8*/ {0xf1, 1384}, - /*II_DA_C8*/ {0xf1, 1384}, - /*II_DA_C8*/ {0xf1, 1384}, - /*II_DA_C8*/ {0xf1, 1384}, - /*II_DA_D0*/ {0xf2, 1392}, - /*II_DA_D0*/ {0xf2, 1392}, - /*II_DA_D0*/ {0xf2, 1392}, - /*II_DA_D0*/ {0xf2, 1392}, - /*II_DA_D0*/ {0xf2, 1392}, - /*II_DA_D0*/ {0xf2, 1392}, - /*II_DA_D0*/ {0xf2, 1392}, - /*II_DA_D0*/ {0xf2, 1392}, - /*II_DA_D8*/ {0xf3, 1401}, - /*II_DA_D8*/ {0xf3, 1401}, - /*II_DA_D8*/ {0xf3, 1401}, - /*II_DA_D8*/ {0xf3, 1401}, - /*II_DA_D8*/ {0xf3, 1401}, - /*II_DA_D8*/ {0xf3, 1401}, - /*II_DA_D8*/ {0xf3, 1401}, - /*II_DA_D8*/ {0xf3, 1401}, - /*II_DA_E9*/ {0xec, 1409}, - /*II_DB_00*/ {0xe9, 1418}, - /*II_DB_01*/ {0xf4, 1424}, - /*II_DB_02*/ {0xed, 1432}, - /*II_DB_03*/ {0xed, 1438}, - /*II_DB_05*/ {0xf5, 1074}, - /*II_DB_07*/ {0xf6, 1084}, - /*II_DB_C0*/ {0xf0, 1445}, - /*II_DB_C0*/ {0xf0, 1445}, - /*II_DB_C0*/ {0xf0, 1445}, - /*II_DB_C0*/ {0xf0, 1445}, - /*II_DB_C0*/ {0xf0, 1445}, - /*II_DB_C0*/ {0xf0, 1445}, - /*II_DB_C0*/ {0xf0, 1445}, - /*II_DB_C0*/ {0xf0, 1445}, - /*II_DB_C8*/ {0xf1, 1454}, - /*II_DB_C8*/ {0xf1, 1454}, - /*II_DB_C8*/ {0xf1, 1454}, - /*II_DB_C8*/ {0xf1, 1454}, - /*II_DB_C8*/ {0xf1, 1454}, - /*II_DB_C8*/ {0xf1, 1454}, - /*II_DB_C8*/ {0xf1, 1454}, - /*II_DB_C8*/ {0xf1, 1454}, - /*II_DB_D0*/ {0xf2, 1463}, - /*II_DB_D0*/ {0xf2, 1463}, - /*II_DB_D0*/ {0xf2, 1463}, - /*II_DB_D0*/ {0xf2, 1463}, - /*II_DB_D0*/ {0xf2, 1463}, - /*II_DB_D0*/ {0xf2, 1463}, - /*II_DB_D0*/ {0xf2, 1463}, - /*II_DB_D0*/ {0xf2, 1463}, - /*II_DB_D8*/ {0xf3, 1473}, - /*II_DB_D8*/ {0xf3, 1473}, - /*II_DB_D8*/ {0xf3, 1473}, - /*II_DB_D8*/ {0xf3, 1473}, - /*II_DB_D8*/ {0xf3, 1473}, - /*II_DB_D8*/ {0xf3, 1473}, - /*II_DB_D8*/ {0xf3, 1473}, - /*II_DB_D8*/ {0xf3, 1473}, - /*II_DB_E0*/ {0xec, 1482}, - /*II_DB_E1*/ {0xec, 1488}, - /*II_DB_E4*/ {0xec, 1496}, - /*II_DB_E8*/ {0xf7, 1504}, - /*II_DB_E8*/ {0xf7, 1504}, - /*II_DB_E8*/ {0xf7, 1504}, - /*II_DB_E8*/ {0xf7, 1504}, - /*II_DB_E8*/ {0xf7, 1504}, - /*II_DB_E8*/ {0xf7, 1504}, - /*II_DB_E8*/ {0xf7, 1504}, - /*II_DB_E8*/ {0xf7, 1504}, - /*II_DB_F0*/ {0xf8, 1512}, - /*II_DB_F0*/ {0xf8, 1512}, - /*II_DB_F0*/ {0xf8, 1512}, - /*II_DB_F0*/ {0xf8, 1512}, - /*II_DB_F0*/ {0xf8, 1512}, - /*II_DB_F0*/ {0xf8, 1512}, - /*II_DB_F0*/ {0xf8, 1512}, - /*II_DB_F0*/ {0xf8, 1512}, - /*II_DC_00*/ {0xf9, 1023}, - /*II_DC_01*/ {0xf9, 1029}, - /*II_DC_02*/ {0xf9, 1035}, - /*II_DC_03*/ {0xf9, 1041}, - /*II_DC_04*/ {0xf9, 1048}, - /*II_DC_05*/ {0xf9, 1054}, - /*II_DC_06*/ {0xf9, 1061}, - /*II_DC_07*/ {0xf9, 1067}, - /*II_DC_C0*/ {0xfa, 1023}, - /*II_DC_C0*/ {0xfa, 1023}, - /*II_DC_C0*/ {0xfa, 1023}, - /*II_DC_C0*/ {0xfa, 1023}, - /*II_DC_C0*/ {0xfa, 1023}, - /*II_DC_C0*/ {0xfa, 1023}, - /*II_DC_C0*/ {0xfa, 1023}, - /*II_DC_C0*/ {0xfa, 1023}, - /*II_DC_C8*/ {0xfa, 1029}, - /*II_DC_C8*/ {0xfa, 1029}, - /*II_DC_C8*/ {0xfa, 1029}, - /*II_DC_C8*/ {0xfa, 1029}, - /*II_DC_C8*/ {0xfa, 1029}, - /*II_DC_C8*/ {0xfa, 1029}, - /*II_DC_C8*/ {0xfa, 1029}, - /*II_DC_C8*/ {0xfa, 1029}, - /*II_DC_E0*/ {0xfa, 1054}, - /*II_DC_E0*/ {0xfa, 1054}, - /*II_DC_E0*/ {0xfa, 1054}, - /*II_DC_E0*/ {0xfa, 1054}, - /*II_DC_E0*/ {0xfa, 1054}, - /*II_DC_E0*/ {0xfa, 1054}, - /*II_DC_E0*/ {0xfa, 1054}, - /*II_DC_E0*/ {0xfa, 1054}, - /*II_DC_E8*/ {0xfa, 1048}, - /*II_DC_E8*/ {0xfa, 1048}, - /*II_DC_E8*/ {0xfa, 1048}, - /*II_DC_E8*/ {0xfa, 1048}, - /*II_DC_E8*/ {0xfa, 1048}, - /*II_DC_E8*/ {0xfa, 1048}, - /*II_DC_E8*/ {0xfa, 1048}, - /*II_DC_E8*/ {0xfa, 1048}, - /*II_DC_F0*/ {0xfa, 1067}, - /*II_DC_F0*/ {0xfa, 1067}, - /*II_DC_F0*/ {0xfa, 1067}, - /*II_DC_F0*/ {0xfa, 1067}, - /*II_DC_F0*/ {0xfa, 1067}, - /*II_DC_F0*/ {0xfa, 1067}, - /*II_DC_F0*/ {0xfa, 1067}, - /*II_DC_F0*/ {0xfa, 1067}, - /*II_DC_F8*/ {0xfa, 1061}, - /*II_DC_F8*/ {0xfa, 1061}, - /*II_DC_F8*/ {0xfa, 1061}, - /*II_DC_F8*/ {0xfa, 1061}, - /*II_DC_F8*/ {0xfa, 1061}, - /*II_DC_F8*/ {0xfa, 1061}, - /*II_DC_F8*/ {0xfa, 1061}, - /*II_DC_F8*/ {0xfa, 1061}, - /*II_DD_00*/ {0xf9, 1074}, - /*II_DD_01*/ {0xfb, 1424}, - /*II_DD_02*/ {0xfc, 1079}, - /*II_DD_03*/ {0xfc, 1084}, - /*II_DD_04*/ {0xee, 1519}, - /*II_DD_C0*/ {0xeb, 1527}, - /*II_DD_C0*/ {0xeb, 1527}, - /*II_DD_C0*/ {0xeb, 1527}, - /*II_DD_C0*/ {0xeb, 1527}, - /*II_DD_C0*/ {0xeb, 1527}, - /*II_DD_C0*/ {0xeb, 1527}, - /*II_DD_C0*/ {0xeb, 1527}, - /*II_DD_C0*/ {0xeb, 1527}, - /*II_DD_D0*/ {0xeb, 1079}, - /*II_DD_D0*/ {0xeb, 1079}, - /*II_DD_D0*/ {0xeb, 1079}, - /*II_DD_D0*/ {0xeb, 1079}, - /*II_DD_D0*/ {0xeb, 1079}, - /*II_DD_D0*/ {0xeb, 1079}, - /*II_DD_D0*/ {0xeb, 1079}, - /*II_DD_D0*/ {0xeb, 1079}, - /*II_DD_D8*/ {0xeb, 1084}, - /*II_DD_D8*/ {0xeb, 1084}, - /*II_DD_D8*/ {0xeb, 1084}, - /*II_DD_D8*/ {0xeb, 1084}, - /*II_DD_D8*/ {0xeb, 1084}, - /*II_DD_D8*/ {0xeb, 1084}, - /*II_DD_D8*/ {0xeb, 1084}, - /*II_DD_D8*/ {0xeb, 1084}, - /*II_DD_E0*/ {0xfa, 1534}, - /*II_DD_E1*/ {0xec, 1534}, - /*II_DD_E0*/ {0xfa, 1534}, - /*II_DD_E0*/ {0xfa, 1534}, - /*II_DD_E0*/ {0xfa, 1534}, - /*II_DD_E0*/ {0xfa, 1534}, - /*II_DD_E0*/ {0xfa, 1534}, - /*II_DD_E0*/ {0xfa, 1534}, - /*II_DD_E8*/ {0xeb, 1541}, - /*II_DD_E9*/ {0xec, 1541}, - /*II_DD_E8*/ {0xeb, 1541}, - /*II_DD_E8*/ {0xeb, 1541}, - /*II_DD_E8*/ {0xeb, 1541}, - /*II_DD_E8*/ {0xeb, 1541}, - /*II_DD_E8*/ {0xeb, 1541}, - /*II_DD_E8*/ {0xeb, 1541}, - /*II_DE_00*/ {0xef, 1317}, - /*II_DE_01*/ {0xef, 1324}, - /*II_DE_02*/ {0xef, 1331}, - /*II_DE_03*/ {0xef, 1338}, - /*II_DE_04*/ {0xef, 1346}, - /*II_DE_05*/ {0xef, 1353}, - /*II_DE_06*/ {0xef, 1361}, - /*II_DE_07*/ {0xef, 1368}, - /*II_DE_C0*/ {0xfa, 1549}, - /*II_DE_C1*/ {0xec, 1549}, - /*II_DE_C0*/ {0xfa, 1549}, - /*II_DE_C0*/ {0xfa, 1549}, - /*II_DE_C0*/ {0xfa, 1549}, - /*II_DE_C0*/ {0xfa, 1549}, - /*II_DE_C0*/ {0xfa, 1549}, - /*II_DE_C0*/ {0xfa, 1549}, - /*II_DE_C8*/ {0xfa, 1556}, - /*II_DE_C9*/ {0xec, 1556}, - /*II_DE_C8*/ {0xfa, 1556}, - /*II_DE_C8*/ {0xfa, 1556}, - /*II_DE_C8*/ {0xfa, 1556}, - /*II_DE_C8*/ {0xfa, 1556}, - /*II_DE_C8*/ {0xfa, 1556}, - /*II_DE_C8*/ {0xfa, 1556}, - /*II_DE_D9*/ {0xec, 1563}, - /*II_DE_E0*/ {0xfa, 1571}, - /*II_DE_E1*/ {0xec, 1571}, - /*II_DE_E0*/ {0xfa, 1571}, - /*II_DE_E0*/ {0xfa, 1571}, - /*II_DE_E0*/ {0xfa, 1571}, - /*II_DE_E0*/ {0xfa, 1571}, - /*II_DE_E0*/ {0xfa, 1571}, - /*II_DE_E0*/ {0xfa, 1571}, - /*II_DE_E8*/ {0xfa, 1579}, - /*II_DE_E9*/ {0xec, 1579}, - /*II_DE_E8*/ {0xfa, 1579}, - /*II_DE_E8*/ {0xfa, 1579}, - /*II_DE_E8*/ {0xfa, 1579}, - /*II_DE_E8*/ {0xfa, 1579}, - /*II_DE_E8*/ {0xfa, 1579}, - /*II_DE_E8*/ {0xfa, 1579}, - /*II_DE_F0*/ {0xfa, 1586}, - /*II_DE_F1*/ {0xec, 1586}, - /*II_DE_F0*/ {0xfa, 1586}, - /*II_DE_F0*/ {0xfa, 1586}, - /*II_DE_F0*/ {0xfa, 1586}, - /*II_DE_F0*/ {0xfa, 1586}, - /*II_DE_F0*/ {0xfa, 1586}, - /*II_DE_F0*/ {0xfa, 1586}, - /*II_DE_F8*/ {0xfa, 1594}, - /*II_DE_F9*/ {0xec, 1594}, - /*II_DE_F8*/ {0xfa, 1594}, - /*II_DE_F8*/ {0xfa, 1594}, - /*II_DE_F8*/ {0xfa, 1594}, - /*II_DE_F8*/ {0xfa, 1594}, - /*II_DE_F8*/ {0xfa, 1594}, - /*II_DE_F8*/ {0xfa, 1594}, - /*II_DF_00*/ {0xef, 1418}, - /*II_DF_01*/ {0xfd, 1424}, - /*II_DF_02*/ {0xfe, 1432}, - /*II_DF_03*/ {0xfe, 1438}, - /*II_DF_04*/ {0xf5, 1601}, - /*II_DF_05*/ {0xf9, 1418}, - /*II_DF_06*/ {0xf6, 1607}, - /*II_DF_07*/ {0xfc, 1438}, - /*II_DF_E8*/ {0xf7, 1614}, - /*II_DF_E8*/ {0xf7, 1614}, - /*II_DF_E8*/ {0xf7, 1614}, - /*II_DF_E8*/ {0xf7, 1614}, - /*II_DF_E8*/ {0xf7, 1614}, - /*II_DF_E8*/ {0xf7, 1614}, - /*II_DF_E8*/ {0xf7, 1614}, - /*II_DF_E8*/ {0xf7, 1614}, - /*II_DF_F0*/ {0xf7, 1623}, - /*II_DF_F0*/ {0xf7, 1623}, - /*II_DF_F0*/ {0xf7, 1623}, - /*II_DF_F0*/ {0xf7, 1623}, - /*II_DF_F0*/ {0xf7, 1623}, - /*II_DF_F0*/ {0xf7, 1623}, - /*II_DF_F0*/ {0xf7, 1623}, - /*II_DF_F0*/ {0xf7, 1623}, + /*II_C7_F8*/ {0xdc, 1014}, + /*II_D0_00*/ {0xdd, 966}, + /*II_D0_01*/ {0xdd, 971}, + /*II_D0_02*/ {0xde, 976}, + /*II_D0_03*/ {0xde, 981}, + /*II_D0_04*/ {0xdf, 986}, + /*II_D0_05*/ {0xdf, 991}, + /*II_D0_06*/ {0xdf, 996}, + /*II_D0_07*/ {0xdf, 1001}, + /*II_D1_00*/ {0xe0, 966}, + /*II_D1_01*/ {0xe0, 971}, + /*II_D1_02*/ {0xe1, 976}, + /*II_D1_03*/ {0xe1, 981}, + /*II_D1_04*/ {0xe2, 986}, + /*II_D1_05*/ {0xe2, 991}, + /*II_D1_06*/ {0xe2, 996}, + /*II_D1_07*/ {0xe2, 1001}, + /*II_D2_00*/ {0xe3, 966}, + /*II_D2_01*/ {0xe3, 971}, + /*II_D2_02*/ {0xe4, 976}, + /*II_D2_03*/ {0xe4, 981}, + /*II_D2_04*/ {0xe5, 986}, + /*II_D2_05*/ {0xe5, 991}, + /*II_D2_06*/ {0xe5, 996}, + /*II_D2_07*/ {0xe5, 1001}, + /*II_D3_00*/ {0xe6, 966}, + /*II_D3_01*/ {0xe6, 971}, + /*II_D3_02*/ {0xe7, 976}, + /*II_D3_03*/ {0xe7, 981}, + /*II_D3_04*/ {0xe8, 986}, + /*II_D3_05*/ {0xe8, 991}, + /*II_D3_06*/ {0xe8, 996}, + /*II_D3_07*/ {0xe8, 1001}, + /*II_D8_00*/ {0xe9, 1022}, + /*II_D8_01*/ {0xe9, 1028}, + /*II_D8_02*/ {0xe9, 1034}, + /*II_D8_03*/ {0xe9, 1040}, + /*II_D8_04*/ {0xe9, 1047}, + /*II_D8_05*/ {0xe9, 1053}, + /*II_D8_06*/ {0xe9, 1060}, + /*II_D8_07*/ {0xe9, 1066}, + /*II_D8_C0*/ {0xea, 1022}, + /*II_D8_C0*/ {0xea, 1022}, + /*II_D8_C0*/ {0xea, 1022}, + /*II_D8_C0*/ {0xea, 1022}, + /*II_D8_C0*/ {0xea, 1022}, + /*II_D8_C0*/ {0xea, 1022}, + /*II_D8_C0*/ {0xea, 1022}, + /*II_D8_C0*/ {0xea, 1022}, + /*II_D8_C8*/ {0xea, 1028}, + /*II_D8_C8*/ {0xea, 1028}, + /*II_D8_C8*/ {0xea, 1028}, + /*II_D8_C8*/ {0xea, 1028}, + /*II_D8_C8*/ {0xea, 1028}, + /*II_D8_C8*/ {0xea, 1028}, + /*II_D8_C8*/ {0xea, 1028}, + /*II_D8_C8*/ {0xea, 1028}, + /*II_D8_D0*/ {0xeb, 1034}, + /*II_D8_D0*/ {0xeb, 1034}, + /*II_D8_D0*/ {0xeb, 1034}, + /*II_D8_D0*/ {0xeb, 1034}, + /*II_D8_D0*/ {0xeb, 1034}, + /*II_D8_D0*/ {0xeb, 1034}, + /*II_D8_D0*/ {0xeb, 1034}, + /*II_D8_D0*/ {0xeb, 1034}, + /*II_D8_D8*/ {0xeb, 1040}, + /*II_D8_D9*/ {0xec, 1040}, + /*II_D8_D8*/ {0xeb, 1040}, + /*II_D8_D8*/ {0xeb, 1040}, + /*II_D8_D8*/ {0xeb, 1040}, + /*II_D8_D8*/ {0xeb, 1040}, + /*II_D8_D8*/ {0xeb, 1040}, + /*II_D8_D8*/ {0xeb, 1040}, + /*II_D8_E0*/ {0xea, 1047}, + /*II_D8_E0*/ {0xea, 1047}, + /*II_D8_E0*/ {0xea, 1047}, + /*II_D8_E0*/ {0xea, 1047}, + /*II_D8_E0*/ {0xea, 1047}, + /*II_D8_E0*/ {0xea, 1047}, + /*II_D8_E0*/ {0xea, 1047}, + /*II_D8_E0*/ {0xea, 1047}, + /*II_D8_E8*/ {0xea, 1053}, + /*II_D8_E8*/ {0xea, 1053}, + /*II_D8_E8*/ {0xea, 1053}, + /*II_D8_E8*/ {0xea, 1053}, + /*II_D8_E8*/ {0xea, 1053}, + /*II_D8_E8*/ {0xea, 1053}, + /*II_D8_E8*/ {0xea, 1053}, + /*II_D8_E8*/ {0xea, 1053}, + /*II_D8_F0*/ {0xea, 1060}, + /*II_D8_F0*/ {0xea, 1060}, + /*II_D8_F0*/ {0xea, 1060}, + /*II_D8_F0*/ {0xea, 1060}, + /*II_D8_F0*/ {0xea, 1060}, + /*II_D8_F0*/ {0xea, 1060}, + /*II_D8_F0*/ {0xea, 1060}, + /*II_D8_F0*/ {0xea, 1060}, + /*II_D8_F8*/ {0xea, 1066}, + /*II_D8_F8*/ {0xea, 1066}, + /*II_D8_F8*/ {0xea, 1066}, + /*II_D8_F8*/ {0xea, 1066}, + /*II_D8_F8*/ {0xea, 1066}, + /*II_D8_F8*/ {0xea, 1066}, + /*II_D8_F8*/ {0xea, 1066}, + /*II_D8_F8*/ {0xea, 1066}, + /*II_D9_00*/ {0xe9, 1073}, + /*II_D9_02*/ {0xed, 1078}, + /*II_D9_03*/ {0xed, 1083}, + /*II_D9_04*/ {0xee, 1089}, + /*II_D9_05*/ {0xef, 1097}, + /*II_D9_C0*/ {0xeb, 1073}, + /*II_D9_C0*/ {0xeb, 1073}, + /*II_D9_C0*/ {0xeb, 1073}, + /*II_D9_C0*/ {0xeb, 1073}, + /*II_D9_C0*/ {0xeb, 1073}, + /*II_D9_C0*/ {0xeb, 1073}, + /*II_D9_C0*/ {0xeb, 1073}, + /*II_D9_C0*/ {0xeb, 1073}, + /*II_D9_C8*/ {0xeb, 1104}, + /*II_D9_C9*/ {0xec, 1104}, + /*II_D9_C8*/ {0xeb, 1104}, + /*II_D9_C8*/ {0xeb, 1104}, + /*II_D9_C8*/ {0xeb, 1104}, + /*II_D9_C8*/ {0xeb, 1104}, + /*II_D9_C8*/ {0xeb, 1104}, + /*II_D9_C8*/ {0xeb, 1104}, + /*II_D9_D0*/ {0xec, 1110}, + /*II_D9_E0*/ {0xec, 1116}, + /*II_D9_E1*/ {0xec, 1122}, + /*II_D9_E4*/ {0xec, 1128}, + /*II_D9_E5*/ {0xec, 1134}, + /*II_D9_E8*/ {0xec, 1140}, + /*II_D9_E9*/ {0xec, 1146}, + /*II_D9_EA*/ {0xec, 1154}, + /*II_D9_EB*/ {0xec, 1162}, + /*II_D9_EC*/ {0xec, 1169}, + /*II_D9_ED*/ {0xec, 1177}, + /*II_D9_EE*/ {0xec, 1185}, + /*II_D9_F0*/ {0xec, 1191}, + /*II_D9_F1*/ {0xec, 1198}, + /*II_D9_F2*/ {0xec, 1205}, + /*II_D9_F3*/ {0xec, 1212}, + /*II_D9_F4*/ {0xec, 1220}, + /*II_D9_F5*/ {0xec, 1229}, + /*II_D9_F6*/ {0xec, 1237}, + /*II_D9_F7*/ {0xec, 1246}, + /*II_D9_F8*/ {0xec, 1255}, + /*II_D9_F9*/ {0xec, 1262}, + /*II_D9_FA*/ {0xec, 1271}, + /*II_D9_FB*/ {0xec, 1278}, + /*II_D9_FC*/ {0xec, 1287}, + /*II_D9_FD*/ {0xec, 1296}, + /*II_D9_FE*/ {0xec, 1304}, + /*II_D9_FF*/ {0xec, 1310}, + /*II_DA_00*/ {0xe9, 1316}, + /*II_DA_01*/ {0xe9, 1323}, + /*II_DA_02*/ {0xe9, 1330}, + /*II_DA_03*/ {0xe9, 1337}, + /*II_DA_04*/ {0xe9, 1345}, + /*II_DA_05*/ {0xe9, 1352}, + /*II_DA_06*/ {0xe9, 1360}, + /*II_DA_07*/ {0xe9, 1367}, + /*II_DA_C0*/ {0xf0, 1375}, + /*II_DA_C0*/ {0xf0, 1375}, + /*II_DA_C0*/ {0xf0, 1375}, + /*II_DA_C0*/ {0xf0, 1375}, + /*II_DA_C0*/ {0xf0, 1375}, + /*II_DA_C0*/ {0xf0, 1375}, + /*II_DA_C0*/ {0xf0, 1375}, + /*II_DA_C0*/ {0xf0, 1375}, + /*II_DA_C8*/ {0xf1, 1383}, + /*II_DA_C8*/ {0xf1, 1383}, + /*II_DA_C8*/ {0xf1, 1383}, + /*II_DA_C8*/ {0xf1, 1383}, + /*II_DA_C8*/ {0xf1, 1383}, + /*II_DA_C8*/ {0xf1, 1383}, + /*II_DA_C8*/ {0xf1, 1383}, + /*II_DA_C8*/ {0xf1, 1383}, + /*II_DA_D0*/ {0xf2, 1391}, + /*II_DA_D0*/ {0xf2, 1391}, + /*II_DA_D0*/ {0xf2, 1391}, + /*II_DA_D0*/ {0xf2, 1391}, + /*II_DA_D0*/ {0xf2, 1391}, + /*II_DA_D0*/ {0xf2, 1391}, + /*II_DA_D0*/ {0xf2, 1391}, + /*II_DA_D0*/ {0xf2, 1391}, + /*II_DA_D8*/ {0xf3, 1400}, + /*II_DA_D8*/ {0xf3, 1400}, + /*II_DA_D8*/ {0xf3, 1400}, + /*II_DA_D8*/ {0xf3, 1400}, + /*II_DA_D8*/ {0xf3, 1400}, + /*II_DA_D8*/ {0xf3, 1400}, + /*II_DA_D8*/ {0xf3, 1400}, + /*II_DA_D8*/ {0xf3, 1400}, + /*II_DA_E9*/ {0xec, 1408}, + /*II_DB_00*/ {0xe9, 1417}, + /*II_DB_01*/ {0xf4, 1423}, + /*II_DB_02*/ {0xed, 1431}, + /*II_DB_03*/ {0xed, 1437}, + /*II_DB_05*/ {0xf5, 1073}, + /*II_DB_07*/ {0xf6, 1083}, + /*II_DB_C0*/ {0xf0, 1444}, + /*II_DB_C0*/ {0xf0, 1444}, + /*II_DB_C0*/ {0xf0, 1444}, + /*II_DB_C0*/ {0xf0, 1444}, + /*II_DB_C0*/ {0xf0, 1444}, + /*II_DB_C0*/ {0xf0, 1444}, + /*II_DB_C0*/ {0xf0, 1444}, + /*II_DB_C0*/ {0xf0, 1444}, + /*II_DB_C8*/ {0xf1, 1453}, + /*II_DB_C8*/ {0xf1, 1453}, + /*II_DB_C8*/ {0xf1, 1453}, + /*II_DB_C8*/ {0xf1, 1453}, + /*II_DB_C8*/ {0xf1, 1453}, + /*II_DB_C8*/ {0xf1, 1453}, + /*II_DB_C8*/ {0xf1, 1453}, + /*II_DB_C8*/ {0xf1, 1453}, + /*II_DB_D0*/ {0xf2, 1462}, + /*II_DB_D0*/ {0xf2, 1462}, + /*II_DB_D0*/ {0xf2, 1462}, + /*II_DB_D0*/ {0xf2, 1462}, + /*II_DB_D0*/ {0xf2, 1462}, + /*II_DB_D0*/ {0xf2, 1462}, + /*II_DB_D0*/ {0xf2, 1462}, + /*II_DB_D0*/ {0xf2, 1462}, + /*II_DB_D8*/ {0xf3, 1472}, + /*II_DB_D8*/ {0xf3, 1472}, + /*II_DB_D8*/ {0xf3, 1472}, + /*II_DB_D8*/ {0xf3, 1472}, + /*II_DB_D8*/ {0xf3, 1472}, + /*II_DB_D8*/ {0xf3, 1472}, + /*II_DB_D8*/ {0xf3, 1472}, + /*II_DB_D8*/ {0xf3, 1472}, + /*II_DB_E0*/ {0xec, 1481}, + /*II_DB_E1*/ {0xec, 1487}, + /*II_DB_E4*/ {0xec, 1495}, + /*II_DB_E8*/ {0xf7, 1503}, + /*II_DB_E8*/ {0xf7, 1503}, + /*II_DB_E8*/ {0xf7, 1503}, + /*II_DB_E8*/ {0xf7, 1503}, + /*II_DB_E8*/ {0xf7, 1503}, + /*II_DB_E8*/ {0xf7, 1503}, + /*II_DB_E8*/ {0xf7, 1503}, + /*II_DB_E8*/ {0xf7, 1503}, + /*II_DB_F0*/ {0xf8, 1511}, + /*II_DB_F0*/ {0xf8, 1511}, + /*II_DB_F0*/ {0xf8, 1511}, + /*II_DB_F0*/ {0xf8, 1511}, + /*II_DB_F0*/ {0xf8, 1511}, + /*II_DB_F0*/ {0xf8, 1511}, + /*II_DB_F0*/ {0xf8, 1511}, + /*II_DB_F0*/ {0xf8, 1511}, + /*II_DC_00*/ {0xf9, 1022}, + /*II_DC_01*/ {0xf9, 1028}, + /*II_DC_02*/ {0xf9, 1034}, + /*II_DC_03*/ {0xf9, 1040}, + /*II_DC_04*/ {0xf9, 1047}, + /*II_DC_05*/ {0xf9, 1053}, + /*II_DC_06*/ {0xf9, 1060}, + /*II_DC_07*/ {0xf9, 1066}, + /*II_DC_C0*/ {0xfa, 1022}, + /*II_DC_C0*/ {0xfa, 1022}, + /*II_DC_C0*/ {0xfa, 1022}, + /*II_DC_C0*/ {0xfa, 1022}, + /*II_DC_C0*/ {0xfa, 1022}, + /*II_DC_C0*/ {0xfa, 1022}, + /*II_DC_C0*/ {0xfa, 1022}, + /*II_DC_C0*/ {0xfa, 1022}, + /*II_DC_C8*/ {0xfa, 1028}, + /*II_DC_C8*/ {0xfa, 1028}, + /*II_DC_C8*/ {0xfa, 1028}, + /*II_DC_C8*/ {0xfa, 1028}, + /*II_DC_C8*/ {0xfa, 1028}, + /*II_DC_C8*/ {0xfa, 1028}, + /*II_DC_C8*/ {0xfa, 1028}, + /*II_DC_C8*/ {0xfa, 1028}, + /*II_DC_E0*/ {0xfa, 1053}, + /*II_DC_E0*/ {0xfa, 1053}, + /*II_DC_E0*/ {0xfa, 1053}, + /*II_DC_E0*/ {0xfa, 1053}, + /*II_DC_E0*/ {0xfa, 1053}, + /*II_DC_E0*/ {0xfa, 1053}, + /*II_DC_E0*/ {0xfa, 1053}, + /*II_DC_E0*/ {0xfa, 1053}, + /*II_DC_E8*/ {0xfa, 1047}, + /*II_DC_E8*/ {0xfa, 1047}, + /*II_DC_E8*/ {0xfa, 1047}, + /*II_DC_E8*/ {0xfa, 1047}, + /*II_DC_E8*/ {0xfa, 1047}, + /*II_DC_E8*/ {0xfa, 1047}, + /*II_DC_E8*/ {0xfa, 1047}, + /*II_DC_E8*/ {0xfa, 1047}, + /*II_DC_F0*/ {0xfa, 1066}, + /*II_DC_F0*/ {0xfa, 1066}, + /*II_DC_F0*/ {0xfa, 1066}, + /*II_DC_F0*/ {0xfa, 1066}, + /*II_DC_F0*/ {0xfa, 1066}, + /*II_DC_F0*/ {0xfa, 1066}, + /*II_DC_F0*/ {0xfa, 1066}, + /*II_DC_F0*/ {0xfa, 1066}, + /*II_DC_F8*/ {0xfa, 1060}, + /*II_DC_F8*/ {0xfa, 1060}, + /*II_DC_F8*/ {0xfa, 1060}, + /*II_DC_F8*/ {0xfa, 1060}, + /*II_DC_F8*/ {0xfa, 1060}, + /*II_DC_F8*/ {0xfa, 1060}, + /*II_DC_F8*/ {0xfa, 1060}, + /*II_DC_F8*/ {0xfa, 1060}, + /*II_DD_00*/ {0xf9, 1073}, + /*II_DD_01*/ {0xfb, 1423}, + /*II_DD_02*/ {0xfc, 1078}, + /*II_DD_03*/ {0xfc, 1083}, + /*II_DD_04*/ {0xee, 1518}, + /*II_DD_C0*/ {0xeb, 1526}, + /*II_DD_C0*/ {0xeb, 1526}, + /*II_DD_C0*/ {0xeb, 1526}, + /*II_DD_C0*/ {0xeb, 1526}, + /*II_DD_C0*/ {0xeb, 1526}, + /*II_DD_C0*/ {0xeb, 1526}, + /*II_DD_C0*/ {0xeb, 1526}, + /*II_DD_C0*/ {0xeb, 1526}, + /*II_DD_D0*/ {0xeb, 1078}, + /*II_DD_D0*/ {0xeb, 1078}, + /*II_DD_D0*/ {0xeb, 1078}, + /*II_DD_D0*/ {0xeb, 1078}, + /*II_DD_D0*/ {0xeb, 1078}, + /*II_DD_D0*/ {0xeb, 1078}, + /*II_DD_D0*/ {0xeb, 1078}, + /*II_DD_D0*/ {0xeb, 1078}, + /*II_DD_D8*/ {0xeb, 1083}, + /*II_DD_D8*/ {0xeb, 1083}, + /*II_DD_D8*/ {0xeb, 1083}, + /*II_DD_D8*/ {0xeb, 1083}, + /*II_DD_D8*/ {0xeb, 1083}, + /*II_DD_D8*/ {0xeb, 1083}, + /*II_DD_D8*/ {0xeb, 1083}, + /*II_DD_D8*/ {0xeb, 1083}, + /*II_DD_E0*/ {0xfa, 1533}, + /*II_DD_E1*/ {0xec, 1533}, + /*II_DD_E0*/ {0xfa, 1533}, + /*II_DD_E0*/ {0xfa, 1533}, + /*II_DD_E0*/ {0xfa, 1533}, + /*II_DD_E0*/ {0xfa, 1533}, + /*II_DD_E0*/ {0xfa, 1533}, + /*II_DD_E0*/ {0xfa, 1533}, + /*II_DD_E8*/ {0xeb, 1540}, + /*II_DD_E9*/ {0xec, 1540}, + /*II_DD_E8*/ {0xeb, 1540}, + /*II_DD_E8*/ {0xeb, 1540}, + /*II_DD_E8*/ {0xeb, 1540}, + /*II_DD_E8*/ {0xeb, 1540}, + /*II_DD_E8*/ {0xeb, 1540}, + /*II_DD_E8*/ {0xeb, 1540}, + /*II_DE_00*/ {0xef, 1316}, + /*II_DE_01*/ {0xef, 1323}, + /*II_DE_02*/ {0xef, 1330}, + /*II_DE_03*/ {0xef, 1337}, + /*II_DE_04*/ {0xef, 1345}, + /*II_DE_05*/ {0xef, 1352}, + /*II_DE_06*/ {0xef, 1360}, + /*II_DE_07*/ {0xef, 1367}, + /*II_DE_C0*/ {0xfa, 1548}, + /*II_DE_C1*/ {0xec, 1548}, + /*II_DE_C0*/ {0xfa, 1548}, + /*II_DE_C0*/ {0xfa, 1548}, + /*II_DE_C0*/ {0xfa, 1548}, + /*II_DE_C0*/ {0xfa, 1548}, + /*II_DE_C0*/ {0xfa, 1548}, + /*II_DE_C0*/ {0xfa, 1548}, + /*II_DE_C8*/ {0xfa, 1555}, + /*II_DE_C9*/ {0xec, 1555}, + /*II_DE_C8*/ {0xfa, 1555}, + /*II_DE_C8*/ {0xfa, 1555}, + /*II_DE_C8*/ {0xfa, 1555}, + /*II_DE_C8*/ {0xfa, 1555}, + /*II_DE_C8*/ {0xfa, 1555}, + /*II_DE_C8*/ {0xfa, 1555}, + /*II_DE_D9*/ {0xec, 1562}, + /*II_DE_E0*/ {0xfa, 1570}, + /*II_DE_E1*/ {0xec, 1570}, + /*II_DE_E0*/ {0xfa, 1570}, + /*II_DE_E0*/ {0xfa, 1570}, + /*II_DE_E0*/ {0xfa, 1570}, + /*II_DE_E0*/ {0xfa, 1570}, + /*II_DE_E0*/ {0xfa, 1570}, + /*II_DE_E0*/ {0xfa, 1570}, + /*II_DE_E8*/ {0xfa, 1578}, + /*II_DE_E9*/ {0xec, 1578}, + /*II_DE_E8*/ {0xfa, 1578}, + /*II_DE_E8*/ {0xfa, 1578}, + /*II_DE_E8*/ {0xfa, 1578}, + /*II_DE_E8*/ {0xfa, 1578}, + /*II_DE_E8*/ {0xfa, 1578}, + /*II_DE_E8*/ {0xfa, 1578}, + /*II_DE_F0*/ {0xfa, 1585}, + /*II_DE_F1*/ {0xec, 1585}, + /*II_DE_F0*/ {0xfa, 1585}, + /*II_DE_F0*/ {0xfa, 1585}, + /*II_DE_F0*/ {0xfa, 1585}, + /*II_DE_F0*/ {0xfa, 1585}, + /*II_DE_F0*/ {0xfa, 1585}, + /*II_DE_F0*/ {0xfa, 1585}, + /*II_DE_F8*/ {0xfa, 1593}, + /*II_DE_F9*/ {0xec, 1593}, + /*II_DE_F8*/ {0xfa, 1593}, + /*II_DE_F8*/ {0xfa, 1593}, + /*II_DE_F8*/ {0xfa, 1593}, + /*II_DE_F8*/ {0xfa, 1593}, + /*II_DE_F8*/ {0xfa, 1593}, + /*II_DE_F8*/ {0xfa, 1593}, + /*II_DF_00*/ {0xef, 1417}, + /*II_DF_01*/ {0xfd, 1423}, + /*II_DF_02*/ {0xfe, 1431}, + /*II_DF_03*/ {0xfe, 1437}, + /*II_DF_04*/ {0xf5, 1600}, + /*II_DF_05*/ {0xf9, 1417}, + /*II_DF_06*/ {0xf6, 1606}, + /*II_DF_07*/ {0xfc, 1437}, + /*II_DF_E8*/ {0xf7, 1613}, + /*II_DF_E8*/ {0xf7, 1613}, + /*II_DF_E8*/ {0xf7, 1613}, + /*II_DF_E8*/ {0xf7, 1613}, + /*II_DF_E8*/ {0xf7, 1613}, + /*II_DF_E8*/ {0xf7, 1613}, + /*II_DF_E8*/ {0xf7, 1613}, + /*II_DF_E8*/ {0xf7, 1613}, + /*II_DF_F0*/ {0xf7, 1622}, + /*II_DF_F0*/ {0xf7, 1622}, + /*II_DF_F0*/ {0xf7, 1622}, + /*II_DF_F0*/ {0xf7, 1622}, + /*II_DF_F0*/ {0xf7, 1622}, + /*II_DF_F0*/ {0xf7, 1622}, + /*II_DF_F0*/ {0xf7, 1622}, + /*II_DF_F0*/ {0xf7, 1622}, /*II_F6_00*/ {0xff, 206}, - /*II_F6_02*/ {0x100, 1631}, - /*II_F6_03*/ {0x101, 1636}, - /*II_F6_04*/ {0x102, 1641}, + /*II_F6_02*/ {0x100, 1630}, + /*II_F6_03*/ {0x101, 1635}, + /*II_F6_04*/ {0x102, 1640}, /*II_F6_05*/ {0x102, 117}, - /*II_F6_06*/ {0x103, 1646}, - /*II_F6_07*/ {0x103, 1651}, + /*II_F6_06*/ {0x103, 1645}, + /*II_F6_07*/ {0x103, 1650}, /*II_F7_00*/ {0x104, 206}, - /*II_F7_02*/ {0x105, 1631}, - /*II_F7_03*/ {0x106, 1636}, - /*II_F7_04*/ {0x107, 1641}, + /*II_F7_02*/ {0x105, 1630}, + /*II_F7_03*/ {0x106, 1635}, + /*II_F7_04*/ {0x107, 1640}, /*II_F7_05*/ {0x107, 117}, - /*II_F7_06*/ {0x108, 1646}, - /*II_F7_07*/ {0x108, 1651}, + /*II_F7_06*/ {0x108, 1645}, + /*II_F7_07*/ {0x108, 1650}, /*II_FE_00*/ {0x109, 81}, /*II_FE_01*/ {0x109, 86}, /*II_FF_00*/ {0x10a, 81}, /*II_FF_01*/ {0x10a, 86}, - /*II_FF_02*/ {0x10b, 456}, + /*II_FF_02*/ {0x10b, 455}, /*II_FF_03*/ {0x10c, 260}, - /*II_FF_04*/ {0x10d, 462}, - /*II_FF_05*/ {0x10e, 467}, + /*II_FF_04*/ {0x10d, 461}, + /*II_FF_05*/ {0x10e, 466}, /*II_FF_06*/ {0x10f, 16}, - /*II_0F_00_00*/ {0x110, 1657}, - /*II_0F_00_01*/ {0x111, 1663}, - /*II_0F_00_02*/ {0x112, 1668}, - /*II_0F_00_03*/ {0x113, 1674}, - /*II_0F_00_04*/ {0x114, 1679}, - /*II_0F_00_05*/ {0x114, 1685}, - /*II_0F_01_00*/ {0x115, 1691}, - /*II_0F_01_01*/ {0x115, 1697}, - /*II_0F_01_02*/ {0x116, 1703}, - /*II_0F_01_03*/ {0x116, 1709}, - /*II_0F_01_04*/ {0x117, 1715}, - /*II_0F_01_06*/ {0x118, 1721}, - /*II_0F_01_07*/ {0x119, 1727}, - /*II_0F_01_C1*/ {0x11a, 1735}, - /*II_0F_01_C2*/ {0x11a, 1743}, - /*II_0F_01_C3*/ {0x11a, 1753}, - /*II_0F_01_C4*/ {0x11a, 1763}, - /*II_0F_01_C8*/ {0x11b, 1771}, - /*II_0F_01_C9*/ {0x11b, 1780}, - /*II_0F_01_CA*/ {0x11b, 1787}, - /*II_0F_01_CB*/ {0x11b, 1793}, - /*II_0F_01_D0*/ {0x91, 1799}, - /*II_0F_01_D1*/ {0x91, 1807}, - /*II_0F_01_D4*/ {0x11a, 1815}, - /*II_0F_01_D5*/ {0x11c, 1823}, - /*II_0F_01_D8*/ {0x11d, 1829}, - /*II_0F_01_D9*/ {0x11e, 1836}, - /*II_0F_01_DA*/ {0x11f, 1845}, - /*II_0F_01_DB*/ {0x11f, 1853}, - /*II_0F_01_DC*/ {0x11e, 1861}, - /*II_0F_01_DD*/ {0x11e, 1867}, - /*II_0F_01_DE*/ {0x11f, 1873}, - /*II_0F_01_DF*/ {0x120, 1881}, - /*II_0F_01_F8*/ {0x121, 1890}, - /*II_0F_01_F9*/ {0x121, 1898}, - /*II_0F_0D_00*/ {0x122, 1906}, - /*II_0F_0D_01*/ {0x122, 1916}, - /*II_0F_0F_0C*/ {0x123, 1927}, - /*II_0F_0F_0D*/ {0x124, 1934}, - /*II_0F_0F_1C*/ {0x123, 1941}, - /*II_0F_0F_1D*/ {0x124, 1948}, - /*II_0F_0F_8A*/ {0x123, 1955}, - /*II_0F_0F_8E*/ {0x123, 1963}, - /*II_0F_0F_90*/ {0x124, 1972}, - /*II_0F_0F_94*/ {0x124, 1981}, - /*II_0F_0F_96*/ {0x124, 1988}, - /*II_0F_0F_97*/ {0x124, 1995}, - /*II_0F_0F_9A*/ {0x124, 2004}, - /*II_0F_0F_9E*/ {0x124, 2011}, - /*II_0F_0F_A0*/ {0x124, 2018}, - /*II_0F_0F_A4*/ {0x124, 2027}, - /*II_0F_0F_A6*/ {0x124, 2034}, - /*II_0F_0F_A7*/ {0x124, 2044}, - /*II_0F_0F_AA*/ {0x124, 2054}, - /*II_0F_0F_AE*/ {0x124, 2062}, - /*II_0F_0F_B0*/ {0x124, 2069}, - /*II_0F_0F_B4*/ {0x124, 2078}, - /*II_0F_0F_B6*/ {0x124, 2085}, - /*II_0F_0F_B7*/ {0x124, 2095}, - /*II_0F_0F_BB*/ {0x123, 2104}, - /*II_0F_0F_BF*/ {0x124, 2112}, - /*II_0F_10*/ {0x125, 2121}, - /*II_66_0F_10*/ {0x126, 2129}, - /*II_F3_0F_10*/ {0x127, 2137}, - /*II_F2_0F_10*/ {0x128, 2144}, - /*II_0F_11*/ {0x12d, 2121}, - /*II_66_0F_11*/ {0x12e, 2129}, - /*II_F3_0F_11*/ {0x12f, 2137}, - /*II_F2_0F_11*/ {0x130, 2144}, - /*II_66_0F_12*/ {0x135, 2202}, - /*II_F3_0F_12*/ {0x136, 2210}, - /*II_F2_0F_12*/ {0x136, 2220}, - /*II_0F_13*/ {0x13a, 2194}, - /*II_66_0F_13*/ {0x13b, 2202}, - /*II_0F_14*/ {0x13d, 2278}, - /*II_66_0F_14*/ {0x13e, 2288}, - /*II_0F_15*/ {0x13d, 2320}, - /*II_66_0F_15*/ {0x13e, 2330}, - /*II_66_0F_16*/ {0x135, 2379}, - /*II_F3_0F_16*/ {0x140, 2387}, - /*II_0F_17*/ {0x13a, 2371}, - /*II_66_0F_17*/ {0x13b, 2379}, - /*II_0F_18_00*/ {0x141, 2436}, - /*II_0F_18_01*/ {0x141, 2449}, - /*II_0F_18_02*/ {0x141, 2461}, - /*II_0F_18_03*/ {0x141, 2473}, - /*II_0F_28*/ {0x125, 2485}, - /*II_66_0F_28*/ {0x126, 2493}, - /*II_0F_29*/ {0x12d, 2485}, - /*II_66_0F_29*/ {0x12e, 2493}, - /*II_0F_2A*/ {0x142, 2519}, - /*II_66_0F_2A*/ {0x143, 2529}, - /*II_F3_0F_2A*/ {0x144, 2539}, - /*II_F2_0F_2A*/ {0x145, 2549}, - /*II_0F_2B*/ {0x146, 2581}, - /*II_66_0F_2B*/ {0x147, 2590}, - /*II_F3_0F_2B*/ {0x148, 2599}, - /*II_F2_0F_2B*/ {0x149, 2608}, - /*II_0F_2C*/ {0x14b, 2637}, - /*II_66_0F_2C*/ {0x14c, 2648}, - /*II_F3_0F_2C*/ {0x14d, 2659}, - /*II_F2_0F_2C*/ {0x14e, 2670}, - /*II_0F_2D*/ {0x14b, 2705}, - /*II_66_0F_2D*/ {0x13e, 2715}, - /*II_F3_0F_2D*/ {0x14d, 2725}, - /*II_F2_0F_2D*/ {0x14e, 2735}, - /*II_0F_2E*/ {0x150, 2767}, - /*II_66_0F_2E*/ {0x151, 2776}, - /*II_0F_2F*/ {0x150, 2805}, - /*II_66_0F_2F*/ {0x151, 2813}, - /*II_0F_50*/ {0x154, 2839}, - /*II_66_0F_50*/ {0x155, 2849}, - /*II_0F_51*/ {0x13d, 2881}, - /*II_66_0F_51*/ {0x13e, 2889}, - /*II_F3_0F_51*/ {0x157, 2897}, - /*II_F2_0F_51*/ {0x151, 2905}, - /*II_0F_52*/ {0x13d, 2949}, - /*II_F3_0F_52*/ {0x157, 2958}, - /*II_0F_53*/ {0x13d, 2987}, - /*II_F3_0F_53*/ {0x157, 2994}, - /*II_0F_54*/ {0x13d, 3017}, - /*II_66_0F_54*/ {0x13e, 3024}, - /*II_0F_55*/ {0x13d, 3047}, - /*II_66_0F_55*/ {0x13e, 3055}, - /*II_0F_56*/ {0x13d, 3081}, - /*II_66_0F_56*/ {0x13e, 3087}, - /*II_0F_57*/ {0x13d, 3107}, - /*II_66_0F_57*/ {0x13e, 3114}, - /*II_0F_58*/ {0x13d, 3137}, - /*II_66_0F_58*/ {0x13e, 3144}, - /*II_F3_0F_58*/ {0x157, 3151}, - /*II_F2_0F_58*/ {0x151, 3158}, - /*II_0F_59*/ {0x13d, 3197}, - /*II_66_0F_59*/ {0x13e, 3204}, - /*II_F3_0F_59*/ {0x157, 3211}, - /*II_F2_0F_59*/ {0x151, 3218}, - /*II_0F_5A*/ {0x151, 3257}, - /*II_66_0F_5A*/ {0x13e, 3267}, - /*II_F3_0F_5A*/ {0x158, 3277}, - /*II_F2_0F_5A*/ {0x151, 3287}, - /*II_0F_5B*/ {0x13e, 3341}, - /*II_66_0F_5B*/ {0x13e, 3351}, - /*II_F3_0F_5B*/ {0x13e, 3361}, - /*II_0F_5C*/ {0x13d, 3406}, - /*II_66_0F_5C*/ {0x13e, 3413}, - /*II_F3_0F_5C*/ {0x157, 3420}, - /*II_F2_0F_5C*/ {0x151, 3427}, - /*II_0F_5D*/ {0x13d, 3466}, - /*II_66_0F_5D*/ {0x13e, 3473}, - /*II_F3_0F_5D*/ {0x157, 3480}, - /*II_F2_0F_5D*/ {0x151, 3487}, - /*II_0F_5E*/ {0x13d, 3526}, - /*II_66_0F_5E*/ {0x13e, 3533}, - /*II_F3_0F_5E*/ {0x157, 3540}, - /*II_F2_0F_5E*/ {0x151, 3547}, - /*II_0F_5F*/ {0x13d, 3586}, - /*II_66_0F_5F*/ {0x13e, 3593}, - /*II_F3_0F_5F*/ {0x157, 3600}, - /*II_F2_0F_5F*/ {0x151, 3607}, - /*II_0F_60*/ {0x15b, 3646}, - /*II_66_0F_60*/ {0x13e, 3646}, - /*II_0F_61*/ {0x15b, 3669}, - /*II_66_0F_61*/ {0x13e, 3669}, - /*II_0F_62*/ {0x15b, 3692}, - /*II_66_0F_62*/ {0x13e, 3692}, - /*II_0F_63*/ {0x15c, 3715}, - /*II_66_0F_63*/ {0x13e, 3715}, - /*II_0F_64*/ {0x15c, 3736}, - /*II_66_0F_64*/ {0x13e, 3736}, - /*II_0F_65*/ {0x15c, 3755}, - /*II_66_0F_65*/ {0x13e, 3755}, - /*II_0F_66*/ {0x15c, 3774}, - /*II_66_0F_66*/ {0x13e, 3774}, - /*II_0F_67*/ {0x15c, 3793}, - /*II_66_0F_67*/ {0x13e, 3793}, - /*II_0F_68*/ {0x15c, 3814}, - /*II_66_0F_68*/ {0x13e, 3814}, - /*II_0F_69*/ {0x15c, 3837}, - /*II_66_0F_69*/ {0x13e, 3837}, - /*II_0F_6A*/ {0x15c, 3860}, - /*II_66_0F_6A*/ {0x13e, 3860}, - /*II_0F_6B*/ {0x15c, 3883}, - /*II_66_0F_6B*/ {0x13e, 3883}, - /*II_66_0F_6C*/ {0x13e, 3904}, - /*II_66_0F_6D*/ {0x13e, 3929}, - /*II_0F_6F*/ {0x160, 3960}, - /*II_66_0F_6F*/ {0x126, 3980}, - /*II_F3_0F_6F*/ {0x126, 3988}, - /*II_0F_74*/ {0x15c, 4077}, - /*II_66_0F_74*/ {0x13e, 4077}, - /*II_0F_75*/ {0x15c, 4096}, - /*II_66_0F_75*/ {0x13e, 4096}, - /*II_0F_76*/ {0x15c, 4115}, - /*II_66_0F_76*/ {0x13e, 4115}, - /*II_0F_77*/ {0x164, 4134}, - /*II_0F_78*/ {0x166, 4162}, - /*II_0F_79*/ {0x169, 4186}, - /*II_66_0F_79*/ {0x16a, 4170}, - /*II_F2_0F_79*/ {0x16b, 4177}, - /*II_0F_7A_30*/ {0x16c, 4195}, - /*II_0F_7A_31*/ {0x16d, 4205}, - /*II_66_0F_7C*/ {0x16e, 4215}, - /*II_F2_0F_7C*/ {0x16e, 4223}, - /*II_66_0F_7D*/ {0x16e, 4249}, - /*II_F2_0F_7D*/ {0x16e, 4257}, - /*II_F3_0F_7E*/ {0x128, 3960}, - /*II_0F_7F*/ {0x172, 3960}, - /*II_66_0F_7F*/ {0x12e, 3980}, - /*II_F3_0F_7F*/ {0x12e, 3988}, - /*II_F3_0F_B8*/ {0x176, 4372}, - /*II_0F_BA_04*/ {0x177, 872}, - /*II_0F_BA_05*/ {0x178, 887}, - /*II_0F_BA_06*/ {0x178, 912}, - /*II_0F_BA_07*/ {0x178, 934}, - /*II_0F_BC*/ {0x179, 4380}, - /*II_F3_0F_BC*/ {0x17a, 4385}, - /*II_0F_BD*/ {0x179, 4392}, - /*II_F3_0F_BD*/ {0x17b, 4397}, - /*II_0F_C7_07*/ {0x18b, 6419}, - /*II_66_0F_D0*/ {0x16e, 6428}, - /*II_F2_0F_D0*/ {0x16e, 6438}, - /*II_0F_D1*/ {0x15c, 6470}, - /*II_66_0F_D1*/ {0x13e, 6470}, - /*II_0F_D2*/ {0x15c, 6485}, - /*II_66_0F_D2*/ {0x13e, 6485}, - /*II_0F_D3*/ {0x15c, 6500}, - /*II_66_0F_D3*/ {0x13e, 6500}, - /*II_0F_D4*/ {0x151, 6515}, - /*II_66_0F_D4*/ {0x13e, 6515}, - /*II_0F_D5*/ {0x15c, 6530}, - /*II_66_0F_D5*/ {0x13e, 6530}, - /*II_66_0F_D6*/ {0x130, 3960}, - /*II_F3_0F_D6*/ {0x18c, 6547}, - /*II_F2_0F_D6*/ {0x18d, 6556}, - /*II_0F_D7*/ {0x18f, 6565}, - /*II_66_0F_D7*/ {0x190, 6565}, - /*II_0F_D8*/ {0x15c, 6586}, - /*II_66_0F_D8*/ {0x13e, 6586}, - /*II_0F_D9*/ {0x15c, 6605}, - /*II_66_0F_D9*/ {0x13e, 6605}, - /*II_0F_DA*/ {0x192, 6624}, - /*II_66_0F_DA*/ {0x13e, 6624}, - /*II_0F_DB*/ {0x15c, 6641}, - /*II_66_0F_DB*/ {0x13e, 6641}, - /*II_0F_DC*/ {0x15c, 6654}, - /*II_66_0F_DC*/ {0x13e, 6654}, - /*II_0F_DD*/ {0x15c, 6673}, - /*II_66_0F_DD*/ {0x13e, 6673}, - /*II_0F_DE*/ {0x192, 6682}, - /*II_66_0F_DE*/ {0x13e, 6682}, - /*II_0F_DF*/ {0x15c, 6699}, - /*II_66_0F_DF*/ {0x13e, 6699}, - /*II_0F_E0*/ {0x192, 6714}, - /*II_66_0F_E0*/ {0x13e, 6714}, - /*II_0F_E1*/ {0x15c, 6729}, - /*II_66_0F_E1*/ {0x13e, 6729}, - /*II_0F_E2*/ {0x15c, 6744}, - /*II_66_0F_E2*/ {0x13e, 6744}, - /*II_0F_E3*/ {0x192, 6759}, - /*II_66_0F_E3*/ {0x13e, 6759}, - /*II_0F_E4*/ {0x192, 6774}, - /*II_66_0F_E4*/ {0x13e, 6774}, - /*II_0F_E5*/ {0x15c, 6793}, - /*II_66_0F_E5*/ {0x13e, 6793}, - /*II_66_0F_E6*/ {0x13e, 6810}, - /*II_F3_0F_E6*/ {0x151, 6821}, - /*II_F2_0F_E6*/ {0x13e, 6831}, - /*II_0F_E7*/ {0x193, 6875}, - /*II_66_0F_E7*/ {0x147, 6883}, - /*II_0F_E8*/ {0x15c, 6902}, - /*II_66_0F_E8*/ {0x13e, 6902}, - /*II_0F_E9*/ {0x15c, 6919}, - /*II_66_0F_E9*/ {0x13e, 6919}, - /*II_0F_EA*/ {0x192, 6936}, - /*II_66_0F_EA*/ {0x13e, 6936}, - /*II_0F_EB*/ {0x15c, 6953}, - /*II_66_0F_EB*/ {0x13e, 6953}, - /*II_0F_EC*/ {0x15c, 6964}, - /*II_66_0F_EC*/ {0x13e, 6964}, - /*II_0F_ED*/ {0x15c, 6981}, - /*II_66_0F_ED*/ {0x13e, 6981}, - /*II_0F_EE*/ {0x192, 6998}, - /*II_66_0F_EE*/ {0x13e, 6998}, - /*II_0F_EF*/ {0x15c, 7015}, - /*II_66_0F_EF*/ {0x13e, 7015}, - /*II_F2_0F_F0*/ {0x194, 7028}, - /*II_0F_F1*/ {0x15c, 7043}, - /*II_66_0F_F1*/ {0x13e, 7043}, - /*II_0F_F2*/ {0x15c, 7058}, - /*II_66_0F_F2*/ {0x13e, 7058}, - /*II_0F_F3*/ {0x15c, 7073}, - /*II_66_0F_F3*/ {0x13e, 7073}, - /*II_0F_F4*/ {0x196, 7088}, - /*II_66_0F_F4*/ {0x13e, 7088}, - /*II_0F_F5*/ {0x15c, 7107}, - /*II_66_0F_F5*/ {0x13e, 7107}, - /*II_0F_F6*/ {0x192, 7126}, - /*II_66_0F_F6*/ {0x13e, 7126}, - /*II_0F_F7*/ {0x197, 7143}, - /*II_66_0F_F7*/ {0x198, 7153}, - /*II_0F_F8*/ {0x15c, 7178}, - /*II_66_0F_F8*/ {0x13e, 7178}, - /*II_0F_F9*/ {0x15c, 7193}, - /*II_66_0F_F9*/ {0x13e, 7193}, - /*II_0F_FA*/ {0x15c, 7208}, - /*II_66_0F_FA*/ {0x13e, 7208}, - /*II_0F_FB*/ {0x196, 7223}, - /*II_66_0F_FB*/ {0x13e, 7223}, - /*II_0F_FC*/ {0x15c, 7238}, - /*II_66_0F_FC*/ {0x13e, 7238}, - /*II_0F_FD*/ {0x15c, 7253}, - /*II_66_0F_FD*/ {0x13e, 7253}, - /*II_0F_FE*/ {0x15c, 7268}, - /*II_66_0F_FE*/ {0x13e, 7268}, - /*II_D9_06*/ {0x19a, 7283}, - /*II_9B_D9_06*/ {0x19b, 7292}, - /*II_D9_07*/ {0xfe, 7300}, - /*II_9B_D9_07*/ {0x19c, 7308}, - /*II_DB_E2*/ {0xec, 7315}, - /*II_9B_DB_E2*/ {0x19d, 7323}, - /*II_DB_E3*/ {0xec, 7330}, - /*II_9B_DB_E3*/ {0x19d, 7338}, - /*II_DD_06*/ {0x19a, 7345}, - /*II_9B_DD_06*/ {0x19b, 7353}, - /*II_DD_07*/ {0xfe, 7360}, - /*II_9B_DD_07*/ {0x19c, 7368}, - /*II_DF_E0*/ {0x19e, 7360}, - /*II_9B_DF_E0*/ {0x19f, 7368}, - /*II_0F_38_00*/ {0x1a0, 7375}, - /*II_66_0F_38_00*/ {0x1a1, 7375}, - /*II_0F_38_01*/ {0x1a0, 7392}, - /*II_66_0F_38_01*/ {0x1a1, 7392}, - /*II_0F_38_02*/ {0x1a0, 7409}, - /*II_66_0F_38_02*/ {0x1a1, 7409}, - /*II_0F_38_03*/ {0x1a0, 7426}, - /*II_66_0F_38_03*/ {0x1a1, 7426}, - /*II_0F_38_04*/ {0x1a0, 7445}, - /*II_66_0F_38_04*/ {0x1a1, 7445}, - /*II_0F_38_05*/ {0x1a0, 7468}, - /*II_66_0F_38_05*/ {0x1a1, 7468}, - /*II_0F_38_06*/ {0x1a0, 7485}, - /*II_66_0F_38_06*/ {0x1a1, 7485}, - /*II_0F_38_07*/ {0x1a0, 7502}, - /*II_66_0F_38_07*/ {0x1a1, 7502}, - /*II_0F_38_08*/ {0x1a0, 7521}, - /*II_66_0F_38_08*/ {0x1a1, 7521}, - /*II_0F_38_09*/ {0x1a0, 7538}, - /*II_66_0F_38_09*/ {0x1a1, 7538}, - /*II_0F_38_0A*/ {0x1a0, 7555}, - /*II_66_0F_38_0A*/ {0x1a1, 7555}, - /*II_0F_38_0B*/ {0x1a0, 7572}, - /*II_66_0F_38_0B*/ {0x1a1, 7572}, - /*II_66_0F_38_17*/ {0x1a3, 7663}, - /*II_0F_38_1C*/ {0x1a0, 7722}, - /*II_66_0F_38_1C*/ {0x1a1, 7722}, - /*II_0F_38_1D*/ {0x1a0, 7737}, - /*II_66_0F_38_1D*/ {0x1a1, 7737}, - /*II_0F_38_1E*/ {0x1a0, 7752}, - /*II_66_0F_38_1E*/ {0x1a1, 7752}, - /*II_66_0F_38_20*/ {0x1a8, 7767}, - /*II_66_0F_38_21*/ {0x1a9, 7788}, - /*II_66_0F_38_22*/ {0x1aa, 7809}, - /*II_66_0F_38_23*/ {0x1a8, 7830}, - /*II_66_0F_38_24*/ {0x1a9, 7851}, - /*II_66_0F_38_25*/ {0x1a8, 7872}, - /*II_66_0F_38_28*/ {0x1ac, 7893}, - /*II_66_0F_38_29*/ {0x1ac, 7910}, - /*II_66_0F_38_2A*/ {0x1ad, 7929}, - /*II_66_0F_38_2B*/ {0x1ac, 7950}, - /*II_66_0F_38_30*/ {0x1a8, 7995}, - /*II_66_0F_38_31*/ {0x1a9, 8016}, - /*II_66_0F_38_32*/ {0x1aa, 8037}, - /*II_66_0F_38_33*/ {0x1a8, 8058}, - /*II_66_0F_38_34*/ {0x1a9, 8079}, - /*II_66_0F_38_35*/ {0x1a8, 8100}, - /*II_66_0F_38_37*/ {0x1a3, 8121}, - /*II_66_0F_38_38*/ {0x1ac, 8140}, - /*II_66_0F_38_39*/ {0x1ac, 8157}, - /*II_66_0F_38_3A*/ {0x1ac, 8174}, - /*II_66_0F_38_3B*/ {0x1ac, 8191}, - /*II_66_0F_38_3C*/ {0x1ac, 8208}, - /*II_66_0F_38_3D*/ {0x1ac, 8225}, - /*II_66_0F_38_3E*/ {0x1ac, 8242}, - /*II_66_0F_38_3F*/ {0x1ac, 8259}, - /*II_66_0F_38_40*/ {0x1ac, 8276}, - /*II_66_0F_38_41*/ {0x1ac, 8293}, - /*II_66_0F_38_80*/ {0x1b0, 8318}, - /*II_66_0F_38_81*/ {0x1b0, 8326}, - /*II_66_0F_38_82*/ {0x1b0, 8335}, - /*II_66_0F_38_DB*/ {0x1b3, 9184}, - /*II_66_0F_38_DC*/ {0x1b3, 9201}, - /*II_66_0F_38_DD*/ {0x1b3, 9218}, - /*II_66_0F_38_DE*/ {0x1b3, 9243}, - /*II_66_0F_38_DF*/ {0x1b3, 9260}, - /*II_0F_38_F0*/ {0x1b6, 9285}, - /*II_F2_0F_38_F0*/ {0x1b7, 9292}, - /*II_0F_38_F1*/ {0x1b8, 9285}, - /*II_F2_0F_38_F1*/ {0x1b9, 9292}, - /*II_0F_71_02*/ {0x1d0, 6470}, - /*II_66_0F_71_02*/ {0x1d1, 6470}, - /*II_0F_71_04*/ {0x1d0, 6729}, - /*II_66_0F_71_04*/ {0x1d1, 6729}, - /*II_0F_71_06*/ {0x1d0, 7043}, - /*II_66_0F_71_06*/ {0x1d1, 7043}, - /*II_0F_72_02*/ {0x1d0, 6485}, - /*II_66_0F_72_02*/ {0x1d1, 6485}, - /*II_0F_72_04*/ {0x1d0, 6744}, - /*II_66_0F_72_04*/ {0x1d1, 6744}, - /*II_0F_72_06*/ {0x1d0, 7058}, - /*II_66_0F_72_06*/ {0x1d1, 7058}, - /*II_0F_73_02*/ {0x1d0, 6500}, - /*II_66_0F_73_02*/ {0x1d1, 6500}, - /*II_66_0F_73_03*/ {0x1d1, 9864}, - /*II_0F_73_06*/ {0x1d0, 7073}, - /*II_66_0F_73_06*/ {0x1d1, 7073}, - /*II_66_0F_73_07*/ {0x1d1, 9881}, - /*II_F3_0F_AE_00*/ {0x1d3, 9916}, - /*II_F3_0F_AE_01*/ {0x1d3, 9946}, - /*II_0F_AE_02*/ {0x1d4, 9956}, - /*II_F3_0F_AE_02*/ {0x1d3, 9965}, - /*II_0F_AE_03*/ {0x1d4, 9985}, - /*II_F3_0F_AE_03*/ {0x1d3, 9994}, - /*II_0F_C7_06*/ {0x1d6, 10014}, - /*II_66_0F_C7_06*/ {0x18b, 10023}, - /*II_F3_0F_C7_06*/ {0x18b, 10032} + /*II_0F_00_00*/ {0x110, 1656}, + /*II_0F_00_01*/ {0x111, 1662}, + /*II_0F_00_02*/ {0x112, 1667}, + /*II_0F_00_03*/ {0x113, 1673}, + /*II_0F_00_04*/ {0x114, 1678}, + /*II_0F_00_05*/ {0x114, 1684}, + /*II_0F_01_00*/ {0x115, 1690}, + /*II_0F_01_01*/ {0x115, 1696}, + /*II_0F_01_02*/ {0x116, 1702}, + /*II_0F_01_03*/ {0x116, 1708}, + /*II_0F_01_04*/ {0x117, 1714}, + /*II_0F_01_06*/ {0x118, 1720}, + /*II_0F_01_07*/ {0x119, 1726}, + /*II_0F_01_C1*/ {0x11a, 1734}, + /*II_0F_01_C2*/ {0x11a, 1742}, + /*II_0F_01_C3*/ {0x11a, 1752}, + /*II_0F_01_C4*/ {0x11a, 1762}, + /*II_0F_01_C8*/ {0x11b, 1770}, + /*II_0F_01_C9*/ {0x11b, 1779}, + /*II_0F_01_CA*/ {0x11b, 1786}, + /*II_0F_01_CB*/ {0x11b, 1792}, + /*II_0F_01_D0*/ {0x91, 1798}, + /*II_0F_01_D1*/ {0x91, 1806}, + /*II_0F_01_D4*/ {0x11a, 1814}, + /*II_0F_01_D5*/ {0x11c, 1822}, + /*II_0F_01_D8*/ {0x11d, 1828}, + /*II_0F_01_D9*/ {0x11e, 1835}, + /*II_0F_01_DA*/ {0x11f, 1844}, + /*II_0F_01_DB*/ {0x11f, 1852}, + /*II_0F_01_DC*/ {0x11e, 1860}, + /*II_0F_01_DD*/ {0x11e, 1866}, + /*II_0F_01_DE*/ {0x11f, 1872}, + /*II_0F_01_DF*/ {0x120, 1880}, + /*II_0F_01_F8*/ {0x121, 1889}, + /*II_0F_01_F9*/ {0x121, 1897}, + /*II_0F_0D_00*/ {0x122, 1905}, + /*II_0F_0D_01*/ {0x122, 1915}, + /*II_0F_0F_0C*/ {0x123, 1926}, + /*II_0F_0F_0D*/ {0x124, 1933}, + /*II_0F_0F_1C*/ {0x123, 1940}, + /*II_0F_0F_1D*/ {0x124, 1947}, + /*II_0F_0F_8A*/ {0x123, 1954}, + /*II_0F_0F_8E*/ {0x123, 1962}, + /*II_0F_0F_90*/ {0x124, 1971}, + /*II_0F_0F_94*/ {0x124, 1980}, + /*II_0F_0F_96*/ {0x124, 1987}, + /*II_0F_0F_97*/ {0x124, 1994}, + /*II_0F_0F_9A*/ {0x124, 2003}, + /*II_0F_0F_9E*/ {0x124, 2010}, + /*II_0F_0F_A0*/ {0x124, 2017}, + /*II_0F_0F_A4*/ {0x124, 2026}, + /*II_0F_0F_A6*/ {0x124, 2033}, + /*II_0F_0F_A7*/ {0x124, 2043}, + /*II_0F_0F_AA*/ {0x124, 2053}, + /*II_0F_0F_AE*/ {0x124, 2061}, + /*II_0F_0F_B0*/ {0x124, 2068}, + /*II_0F_0F_B4*/ {0x124, 2077}, + /*II_0F_0F_B6*/ {0x124, 2084}, + /*II_0F_0F_B7*/ {0x124, 2094}, + /*II_0F_0F_BB*/ {0x123, 2103}, + /*II_0F_0F_BF*/ {0x124, 2111}, + /*II_0F_10*/ {0x125, 2120}, + /*II_66_0F_10*/ {0x126, 2128}, + /*II_F3_0F_10*/ {0x127, 2136}, + /*II_F2_0F_10*/ {0x128, 2143}, + /*II_0F_11*/ {0x12d, 2120}, + /*II_66_0F_11*/ {0x12e, 2128}, + /*II_F3_0F_11*/ {0x12f, 2136}, + /*II_F2_0F_11*/ {0x130, 2143}, + /*II_66_0F_12*/ {0x135, 2201}, + /*II_F3_0F_12*/ {0x136, 2209}, + /*II_F2_0F_12*/ {0x136, 2219}, + /*II_0F_13*/ {0x13a, 2193}, + /*II_66_0F_13*/ {0x13b, 2201}, + /*II_0F_14*/ {0x13d, 2277}, + /*II_66_0F_14*/ {0x13e, 2287}, + /*II_0F_15*/ {0x13d, 2319}, + /*II_66_0F_15*/ {0x13e, 2329}, + /*II_66_0F_16*/ {0x135, 2378}, + /*II_F3_0F_16*/ {0x140, 2386}, + /*II_0F_17*/ {0x13a, 2370}, + /*II_66_0F_17*/ {0x13b, 2378}, + /*II_0F_18_00*/ {0x141, 2435}, + /*II_0F_18_01*/ {0x141, 2448}, + /*II_0F_18_02*/ {0x141, 2460}, + /*II_0F_18_03*/ {0x141, 2472}, + /*II_0F_28*/ {0x125, 2484}, + /*II_66_0F_28*/ {0x126, 2492}, + /*II_0F_29*/ {0x12d, 2484}, + /*II_66_0F_29*/ {0x12e, 2492}, + /*II_0F_2A*/ {0x142, 2518}, + /*II_66_0F_2A*/ {0x143, 2528}, + /*II_F3_0F_2A*/ {0x144, 2538}, + /*II_F2_0F_2A*/ {0x145, 2548}, + /*II_0F_2B*/ {0x146, 2580}, + /*II_66_0F_2B*/ {0x147, 2589}, + /*II_F3_0F_2B*/ {0x148, 2598}, + /*II_F2_0F_2B*/ {0x149, 2607}, + /*II_0F_2C*/ {0x14b, 2636}, + /*II_66_0F_2C*/ {0x14c, 2647}, + /*II_F3_0F_2C*/ {0x14d, 2658}, + /*II_F2_0F_2C*/ {0x14e, 2669}, + /*II_0F_2D*/ {0x14b, 2704}, + /*II_66_0F_2D*/ {0x13e, 2714}, + /*II_F3_0F_2D*/ {0x14d, 2724}, + /*II_F2_0F_2D*/ {0x14e, 2734}, + /*II_0F_2E*/ {0x150, 2766}, + /*II_66_0F_2E*/ {0x151, 2775}, + /*II_0F_2F*/ {0x150, 2804}, + /*II_66_0F_2F*/ {0x151, 2812}, + /*II_0F_50*/ {0x154, 2838}, + /*II_66_0F_50*/ {0x155, 2848}, + /*II_0F_51*/ {0x13d, 2880}, + /*II_66_0F_51*/ {0x13e, 2888}, + /*II_F3_0F_51*/ {0x157, 2896}, + /*II_F2_0F_51*/ {0x151, 2904}, + /*II_0F_52*/ {0x13d, 2948}, + /*II_F3_0F_52*/ {0x157, 2957}, + /*II_0F_53*/ {0x13d, 2986}, + /*II_F3_0F_53*/ {0x157, 2993}, + /*II_0F_54*/ {0x13d, 3016}, + /*II_66_0F_54*/ {0x13e, 3023}, + /*II_0F_55*/ {0x13d, 3046}, + /*II_66_0F_55*/ {0x13e, 3054}, + /*II_0F_56*/ {0x13d, 3080}, + /*II_66_0F_56*/ {0x13e, 3086}, + /*II_0F_57*/ {0x13d, 3106}, + /*II_66_0F_57*/ {0x13e, 3113}, + /*II_0F_58*/ {0x13d, 3136}, + /*II_66_0F_58*/ {0x13e, 3143}, + /*II_F3_0F_58*/ {0x157, 3150}, + /*II_F2_0F_58*/ {0x151, 3157}, + /*II_0F_59*/ {0x13d, 3196}, + /*II_66_0F_59*/ {0x13e, 3203}, + /*II_F3_0F_59*/ {0x157, 3210}, + /*II_F2_0F_59*/ {0x151, 3217}, + /*II_0F_5A*/ {0x151, 3256}, + /*II_66_0F_5A*/ {0x13e, 3266}, + /*II_F3_0F_5A*/ {0x158, 3276}, + /*II_F2_0F_5A*/ {0x151, 3286}, + /*II_0F_5B*/ {0x13e, 3340}, + /*II_66_0F_5B*/ {0x13e, 3350}, + /*II_F3_0F_5B*/ {0x13e, 3360}, + /*II_0F_5C*/ {0x13d, 3405}, + /*II_66_0F_5C*/ {0x13e, 3412}, + /*II_F3_0F_5C*/ {0x157, 3419}, + /*II_F2_0F_5C*/ {0x151, 3426}, + /*II_0F_5D*/ {0x13d, 3465}, + /*II_66_0F_5D*/ {0x13e, 3472}, + /*II_F3_0F_5D*/ {0x157, 3479}, + /*II_F2_0F_5D*/ {0x151, 3486}, + /*II_0F_5E*/ {0x13d, 3525}, + /*II_66_0F_5E*/ {0x13e, 3532}, + /*II_F3_0F_5E*/ {0x157, 3539}, + /*II_F2_0F_5E*/ {0x151, 3546}, + /*II_0F_5F*/ {0x13d, 3585}, + /*II_66_0F_5F*/ {0x13e, 3592}, + /*II_F3_0F_5F*/ {0x157, 3599}, + /*II_F2_0F_5F*/ {0x151, 3606}, + /*II_0F_60*/ {0x15b, 3645}, + /*II_66_0F_60*/ {0x13e, 3645}, + /*II_0F_61*/ {0x15b, 3668}, + /*II_66_0F_61*/ {0x13e, 3668}, + /*II_0F_62*/ {0x15b, 3691}, + /*II_66_0F_62*/ {0x13e, 3691}, + /*II_0F_63*/ {0x15c, 3714}, + /*II_66_0F_63*/ {0x13e, 3714}, + /*II_0F_64*/ {0x15c, 3735}, + /*II_66_0F_64*/ {0x13e, 3735}, + /*II_0F_65*/ {0x15c, 3754}, + /*II_66_0F_65*/ {0x13e, 3754}, + /*II_0F_66*/ {0x15c, 3773}, + /*II_66_0F_66*/ {0x13e, 3773}, + /*II_0F_67*/ {0x15c, 3792}, + /*II_66_0F_67*/ {0x13e, 3792}, + /*II_0F_68*/ {0x15c, 3813}, + /*II_66_0F_68*/ {0x13e, 3813}, + /*II_0F_69*/ {0x15c, 3836}, + /*II_66_0F_69*/ {0x13e, 3836}, + /*II_0F_6A*/ {0x15c, 3859}, + /*II_66_0F_6A*/ {0x13e, 3859}, + /*II_0F_6B*/ {0x15c, 3882}, + /*II_66_0F_6B*/ {0x13e, 3882}, + /*II_66_0F_6C*/ {0x13e, 3903}, + /*II_66_0F_6D*/ {0x13e, 3928}, + /*II_0F_6F*/ {0x160, 3959}, + /*II_66_0F_6F*/ {0x126, 3979}, + /*II_F3_0F_6F*/ {0x126, 3987}, + /*II_0F_74*/ {0x15c, 4076}, + /*II_66_0F_74*/ {0x13e, 4076}, + /*II_0F_75*/ {0x15c, 4095}, + /*II_66_0F_75*/ {0x13e, 4095}, + /*II_0F_76*/ {0x15c, 4114}, + /*II_66_0F_76*/ {0x13e, 4114}, + /*II_0F_77*/ {0x164, 4133}, + /*II_0F_78*/ {0x166, 4161}, + /*II_0F_79*/ {0x169, 4185}, + /*II_66_0F_79*/ {0x16a, 4169}, + /*II_F2_0F_79*/ {0x16b, 4176}, + /*II_0F_7A_30*/ {0x16c, 4194}, + /*II_0F_7A_31*/ {0x16d, 4204}, + /*II_66_0F_7C*/ {0x16e, 4214}, + /*II_F2_0F_7C*/ {0x16e, 4222}, + /*II_66_0F_7D*/ {0x16e, 4248}, + /*II_F2_0F_7D*/ {0x16e, 4256}, + /*II_F3_0F_7E*/ {0x128, 3959}, + /*II_0F_7F*/ {0x172, 3959}, + /*II_66_0F_7F*/ {0x12e, 3979}, + /*II_F3_0F_7F*/ {0x12e, 3987}, + /*II_F3_0F_B8*/ {0x176, 4371}, + /*II_0F_BA_04*/ {0x177, 871}, + /*II_0F_BA_05*/ {0x178, 886}, + /*II_0F_BA_06*/ {0x178, 911}, + /*II_0F_BA_07*/ {0x178, 933}, + /*II_0F_BC*/ {0x179, 4379}, + /*II_F3_0F_BC*/ {0x17a, 4384}, + /*II_0F_BD*/ {0x179, 4391}, + /*II_F3_0F_BD*/ {0x17b, 4396}, + /*II_0F_C7_07*/ {0x18b, 6418}, + /*II_66_0F_D0*/ {0x16e, 6427}, + /*II_F2_0F_D0*/ {0x16e, 6437}, + /*II_0F_D1*/ {0x15c, 6469}, + /*II_66_0F_D1*/ {0x13e, 6469}, + /*II_0F_D2*/ {0x15c, 6484}, + /*II_66_0F_D2*/ {0x13e, 6484}, + /*II_0F_D3*/ {0x15c, 6499}, + /*II_66_0F_D3*/ {0x13e, 6499}, + /*II_0F_D4*/ {0x151, 6514}, + /*II_66_0F_D4*/ {0x13e, 6514}, + /*II_0F_D5*/ {0x15c, 6529}, + /*II_66_0F_D5*/ {0x13e, 6529}, + /*II_66_0F_D6*/ {0x130, 3959}, + /*II_F3_0F_D6*/ {0x18c, 6546}, + /*II_F2_0F_D6*/ {0x18d, 6555}, + /*II_0F_D7*/ {0x18f, 6564}, + /*II_66_0F_D7*/ {0x190, 6564}, + /*II_0F_D8*/ {0x15c, 6585}, + /*II_66_0F_D8*/ {0x13e, 6585}, + /*II_0F_D9*/ {0x15c, 6604}, + /*II_66_0F_D9*/ {0x13e, 6604}, + /*II_0F_DA*/ {0x192, 6623}, + /*II_66_0F_DA*/ {0x13e, 6623}, + /*II_0F_DB*/ {0x15c, 6640}, + /*II_66_0F_DB*/ {0x13e, 6640}, + /*II_0F_DC*/ {0x15c, 6653}, + /*II_66_0F_DC*/ {0x13e, 6653}, + /*II_0F_DD*/ {0x15c, 6672}, + /*II_66_0F_DD*/ {0x13e, 6672}, + /*II_0F_DE*/ {0x192, 6681}, + /*II_66_0F_DE*/ {0x13e, 6681}, + /*II_0F_DF*/ {0x15c, 6698}, + /*II_66_0F_DF*/ {0x13e, 6698}, + /*II_0F_E0*/ {0x192, 6713}, + /*II_66_0F_E0*/ {0x13e, 6713}, + /*II_0F_E1*/ {0x15c, 6728}, + /*II_66_0F_E1*/ {0x13e, 6728}, + /*II_0F_E2*/ {0x15c, 6743}, + /*II_66_0F_E2*/ {0x13e, 6743}, + /*II_0F_E3*/ {0x192, 6758}, + /*II_66_0F_E3*/ {0x13e, 6758}, + /*II_0F_E4*/ {0x192, 6773}, + /*II_66_0F_E4*/ {0x13e, 6773}, + /*II_0F_E5*/ {0x15c, 6792}, + /*II_66_0F_E5*/ {0x13e, 6792}, + /*II_66_0F_E6*/ {0x13e, 6809}, + /*II_F3_0F_E6*/ {0x151, 6820}, + /*II_F2_0F_E6*/ {0x13e, 6830}, + /*II_0F_E7*/ {0x193, 6874}, + /*II_66_0F_E7*/ {0x147, 6882}, + /*II_0F_E8*/ {0x15c, 6901}, + /*II_66_0F_E8*/ {0x13e, 6901}, + /*II_0F_E9*/ {0x15c, 6918}, + /*II_66_0F_E9*/ {0x13e, 6918}, + /*II_0F_EA*/ {0x192, 6935}, + /*II_66_0F_EA*/ {0x13e, 6935}, + /*II_0F_EB*/ {0x15c, 6952}, + /*II_66_0F_EB*/ {0x13e, 6952}, + /*II_0F_EC*/ {0x15c, 6963}, + /*II_66_0F_EC*/ {0x13e, 6963}, + /*II_0F_ED*/ {0x15c, 6980}, + /*II_66_0F_ED*/ {0x13e, 6980}, + /*II_0F_EE*/ {0x192, 6997}, + /*II_66_0F_EE*/ {0x13e, 6997}, + /*II_0F_EF*/ {0x15c, 7014}, + /*II_66_0F_EF*/ {0x13e, 7014}, + /*II_F2_0F_F0*/ {0x194, 7027}, + /*II_0F_F1*/ {0x15c, 7042}, + /*II_66_0F_F1*/ {0x13e, 7042}, + /*II_0F_F2*/ {0x15c, 7057}, + /*II_66_0F_F2*/ {0x13e, 7057}, + /*II_0F_F3*/ {0x15c, 7072}, + /*II_66_0F_F3*/ {0x13e, 7072}, + /*II_0F_F4*/ {0x196, 7087}, + /*II_66_0F_F4*/ {0x13e, 7087}, + /*II_0F_F5*/ {0x15c, 7106}, + /*II_66_0F_F5*/ {0x13e, 7106}, + /*II_0F_F6*/ {0x192, 7125}, + /*II_66_0F_F6*/ {0x13e, 7125}, + /*II_0F_F7*/ {0x197, 7142}, + /*II_66_0F_F7*/ {0x198, 7152}, + /*II_0F_F8*/ {0x15c, 7177}, + /*II_66_0F_F8*/ {0x13e, 7177}, + /*II_0F_F9*/ {0x15c, 7192}, + /*II_66_0F_F9*/ {0x13e, 7192}, + /*II_0F_FA*/ {0x15c, 7207}, + /*II_66_0F_FA*/ {0x13e, 7207}, + /*II_0F_FB*/ {0x196, 7222}, + /*II_66_0F_FB*/ {0x13e, 7222}, + /*II_0F_FC*/ {0x15c, 7237}, + /*II_66_0F_FC*/ {0x13e, 7237}, + /*II_0F_FD*/ {0x15c, 7252}, + /*II_66_0F_FD*/ {0x13e, 7252}, + /*II_0F_FE*/ {0x15c, 7267}, + /*II_66_0F_FE*/ {0x13e, 7267}, + /*II_D9_06*/ {0x19a, 7282}, + /*II_9B_D9_06*/ {0x19b, 7291}, + /*II_D9_07*/ {0xfe, 7299}, + /*II_9B_D9_07*/ {0x19c, 7307}, + /*II_DB_E2*/ {0xec, 7314}, + /*II_9B_DB_E2*/ {0x19d, 7322}, + /*II_DB_E3*/ {0xec, 7329}, + /*II_9B_DB_E3*/ {0x19d, 7337}, + /*II_DD_06*/ {0x19a, 7344}, + /*II_9B_DD_06*/ {0x19b, 7352}, + /*II_DD_07*/ {0xfe, 7359}, + /*II_9B_DD_07*/ {0x19c, 7367}, + /*II_DF_E0*/ {0x19e, 7359}, + /*II_9B_DF_E0*/ {0x19f, 7367}, + /*II_0F_38_00*/ {0x1a0, 7374}, + /*II_66_0F_38_00*/ {0x1a1, 7374}, + /*II_0F_38_01*/ {0x1a0, 7391}, + /*II_66_0F_38_01*/ {0x1a1, 7391}, + /*II_0F_38_02*/ {0x1a0, 7408}, + /*II_66_0F_38_02*/ {0x1a1, 7408}, + /*II_0F_38_03*/ {0x1a0, 7425}, + /*II_66_0F_38_03*/ {0x1a1, 7425}, + /*II_0F_38_04*/ {0x1a0, 7444}, + /*II_66_0F_38_04*/ {0x1a1, 7444}, + /*II_0F_38_05*/ {0x1a0, 7467}, + /*II_66_0F_38_05*/ {0x1a1, 7467}, + /*II_0F_38_06*/ {0x1a0, 7484}, + /*II_66_0F_38_06*/ {0x1a1, 7484}, + /*II_0F_38_07*/ {0x1a0, 7501}, + /*II_66_0F_38_07*/ {0x1a1, 7501}, + /*II_0F_38_08*/ {0x1a0, 7520}, + /*II_66_0F_38_08*/ {0x1a1, 7520}, + /*II_0F_38_09*/ {0x1a0, 7537}, + /*II_66_0F_38_09*/ {0x1a1, 7537}, + /*II_0F_38_0A*/ {0x1a0, 7554}, + /*II_66_0F_38_0A*/ {0x1a1, 7554}, + /*II_0F_38_0B*/ {0x1a0, 7571}, + /*II_66_0F_38_0B*/ {0x1a1, 7571}, + /*II_66_0F_38_17*/ {0x1a3, 7662}, + /*II_0F_38_1C*/ {0x1a0, 7721}, + /*II_66_0F_38_1C*/ {0x1a1, 7721}, + /*II_0F_38_1D*/ {0x1a0, 7736}, + /*II_66_0F_38_1D*/ {0x1a1, 7736}, + /*II_0F_38_1E*/ {0x1a0, 7751}, + /*II_66_0F_38_1E*/ {0x1a1, 7751}, + /*II_66_0F_38_20*/ {0x1a8, 7766}, + /*II_66_0F_38_21*/ {0x1a9, 7787}, + /*II_66_0F_38_22*/ {0x1aa, 7808}, + /*II_66_0F_38_23*/ {0x1a8, 7829}, + /*II_66_0F_38_24*/ {0x1a9, 7850}, + /*II_66_0F_38_25*/ {0x1a8, 7871}, + /*II_66_0F_38_28*/ {0x1ac, 7892}, + /*II_66_0F_38_29*/ {0x1ac, 7909}, + /*II_66_0F_38_2A*/ {0x1ad, 7928}, + /*II_66_0F_38_2B*/ {0x1ac, 7949}, + /*II_66_0F_38_30*/ {0x1a8, 7994}, + /*II_66_0F_38_31*/ {0x1a9, 8015}, + /*II_66_0F_38_32*/ {0x1aa, 8036}, + /*II_66_0F_38_33*/ {0x1a8, 8057}, + /*II_66_0F_38_34*/ {0x1a9, 8078}, + /*II_66_0F_38_35*/ {0x1a8, 8099}, + /*II_66_0F_38_37*/ {0x1a3, 8120}, + /*II_66_0F_38_38*/ {0x1ac, 8139}, + /*II_66_0F_38_39*/ {0x1ac, 8156}, + /*II_66_0F_38_3A*/ {0x1ac, 8173}, + /*II_66_0F_38_3B*/ {0x1ac, 8190}, + /*II_66_0F_38_3C*/ {0x1ac, 8207}, + /*II_66_0F_38_3D*/ {0x1ac, 8224}, + /*II_66_0F_38_3E*/ {0x1ac, 8241}, + /*II_66_0F_38_3F*/ {0x1ac, 8258}, + /*II_66_0F_38_40*/ {0x1ac, 8275}, + /*II_66_0F_38_41*/ {0x1ac, 8292}, + /*II_66_0F_38_80*/ {0x1b0, 8317}, + /*II_66_0F_38_81*/ {0x1b0, 8325}, + /*II_66_0F_38_82*/ {0x1b0, 8334}, + /*II_66_0F_38_DB*/ {0x1b3, 9183}, + /*II_66_0F_38_DC*/ {0x1b3, 9200}, + /*II_66_0F_38_DD*/ {0x1b3, 9217}, + /*II_66_0F_38_DE*/ {0x1b3, 9242}, + /*II_66_0F_38_DF*/ {0x1b3, 9259}, + /*II_0F_38_F0*/ {0x1b6, 9284}, + /*II_F2_0F_38_F0*/ {0x1b7, 9291}, + /*II_0F_38_F1*/ {0x1b8, 9284}, + /*II_F2_0F_38_F1*/ {0x1b9, 9291}, + /*II_0F_71_02*/ {0x1d0, 6469}, + /*II_66_0F_71_02*/ {0x1d1, 6469}, + /*II_0F_71_04*/ {0x1d0, 6728}, + /*II_66_0F_71_04*/ {0x1d1, 6728}, + /*II_0F_71_06*/ {0x1d0, 7042}, + /*II_66_0F_71_06*/ {0x1d1, 7042}, + /*II_0F_72_02*/ {0x1d0, 6484}, + /*II_66_0F_72_02*/ {0x1d1, 6484}, + /*II_0F_72_04*/ {0x1d0, 6743}, + /*II_66_0F_72_04*/ {0x1d1, 6743}, + /*II_0F_72_06*/ {0x1d0, 7057}, + /*II_66_0F_72_06*/ {0x1d1, 7057}, + /*II_0F_73_02*/ {0x1d0, 6499}, + /*II_66_0F_73_02*/ {0x1d1, 6499}, + /*II_66_0F_73_03*/ {0x1d1, 9863}, + /*II_0F_73_06*/ {0x1d0, 7072}, + /*II_66_0F_73_06*/ {0x1d1, 7072}, + /*II_66_0F_73_07*/ {0x1d1, 9880}, + /*II_F3_0F_AE_00*/ {0x1d3, 9915}, + /*II_F3_0F_AE_01*/ {0x1d3, 9945}, + /*II_0F_AE_02*/ {0x1d4, 9955}, + /*II_F3_0F_AE_02*/ {0x1d3, 9964}, + /*II_0F_AE_03*/ {0x1d4, 9984}, + /*II_F3_0F_AE_03*/ {0x1d3, 9993}, + /*II_0F_C7_06*/ {0x1d6, 10013}, + /*II_66_0F_C7_06*/ {0x18b, 10022}, + /*II_F3_0F_C7_06*/ {0x18b, 10031} }; _InstInfoEx InstInfosEx[381] = { @@ -1390,383 +1390,383 @@ _InstInfoEx InstInfosEx[381] = { /*II_6B*/ {{0x34, 117}, 0x0, 5, 0, 0, 0}, /*II_98*/ {{0x4e, 228}, 0x0, 0, 0, 233, 239}, /*II_99*/ {{0x4e, 245}, 0x0, 0, 0, 250, 255}, - /*II_E3*/ {{0x76, 427}, 0x0, 0, 0, 433, 440}, - /*II_0F_A4*/ {{0xad, 876}, 0x0, 1, 0, 0, 0}, - /*II_0F_A5*/ {{0xad, 876}, 0x0, 42, 0, 0, 0}, - /*II_0F_AC*/ {{0xad, 892}, 0x0, 1, 0, 0, 0}, - /*II_0F_AD*/ {{0xad, 892}, 0x0, 42, 0, 0, 0}, - /*II_V_0F_10*/ {{0x129, 2151}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_10*/ {{0x129, 2160}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_10*/ {{0x12a, 2169}, 0x20, 31, 0, 0, 0}, - /*II_V_F2_0F_10*/ {{0x12a, 2177}, 0x20, 31, 0, 0, 0}, - /*II_VRR_F3_0F_10*/ {{0x12b, 2169}, 0x60, 0, 0, 0, 0}, - /*II_VRR_F2_0F_10*/ {{0x12c, 2177}, 0x60, 0, 0, 0, 0}, - /*II_V_0F_11*/ {{0x131, 2151}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_11*/ {{0x131, 2160}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_11*/ {{0x12a, 2169}, 0x20, 31, 0, 0, 0}, - /*II_V_F2_0F_11*/ {{0x12a, 2177}, 0x20, 31, 0, 0, 0}, - /*II_VRR_F3_0F_11*/ {{0x132, 2169}, 0x60, 0, 0, 0, 0}, - /*II_VRR_F2_0F_11*/ {{0x133, 2177}, 0x60, 0, 0, 0, 0}, - /*II_0F_12*/ {{0x134, 2185}, 0x0, 0, 0, 2194, 0}, - /*II_V_0F_12*/ {{0x137, 2229}, 0x0, 86, 0, 2239, 0}, - /*II_V_66_0F_12*/ {{0x138, 2248}, 0x0, 57, 0, 0, 0}, - /*II_V_F3_0F_12*/ {{0x129, 2257}, 0x41, 0, 0, 0, 0}, - /*II_V_F2_0F_12*/ {{0x139, 2268}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_13*/ {{0x13c, 2239}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_13*/ {{0x13c, 2248}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_14*/ {{0x13f, 2298}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_14*/ {{0x13f, 2309}, 0x1, 91, 0, 0, 0}, - /*II_V_0F_15*/ {{0x13f, 2340}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_15*/ {{0x13f, 2351}, 0x1, 91, 0, 0, 0}, - /*II_0F_16*/ {{0x134, 2362}, 0x0, 0, 0, 2371, 0}, - /*II_V_0F_16*/ {{0x137, 2397}, 0x0, 86, 0, 2407, 0}, - /*II_V_66_0F_16*/ {{0x138, 2416}, 0x0, 57, 0, 0, 0}, - /*II_V_F3_0F_16*/ {{0x129, 2425}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_17*/ {{0x13c, 2407}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_17*/ {{0x13c, 2416}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_28*/ {{0x129, 2501}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_28*/ {{0x129, 2510}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_29*/ {{0x131, 2501}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_29*/ {{0x131, 2510}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_2A*/ {{0x138, 2559}, 0x2, 73, 0, 0, 0}, - /*II_V_F2_0F_2A*/ {{0x138, 2570}, 0x2, 73, 0, 0, 0}, - /*II_V_0F_2B*/ {{0x14a, 2617}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_2B*/ {{0x14a, 2627}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_2C*/ {{0x14f, 2681}, 0x42, 0, 0, 0, 0}, - /*II_V_F2_0F_2C*/ {{0x14f, 2693}, 0x42, 0, 0, 0, 0}, - /*II_V_F3_0F_2D*/ {{0x14f, 2745}, 0x42, 0, 0, 0, 0}, - /*II_V_F2_0F_2D*/ {{0x14f, 2756}, 0x42, 0, 0, 0, 0}, - /*II_V_0F_2E*/ {{0x152, 2785}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_2E*/ {{0x153, 2795}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_2F*/ {{0x152, 2821}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_2F*/ {{0x153, 2830}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_50*/ {{0x156, 2859}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_50*/ {{0x156, 2870}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_51*/ {{0x129, 2913}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_51*/ {{0x129, 2922}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_51*/ {{0x138, 2931}, 0x0, 85, 0, 0, 0}, - /*II_V_F2_0F_51*/ {{0x138, 2940}, 0x0, 86, 0, 0, 0}, - /*II_V_0F_52*/ {{0x129, 2967}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_52*/ {{0x138, 2977}, 0x0, 85, 0, 0, 0}, - /*II_V_0F_53*/ {{0x129, 3001}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_53*/ {{0x138, 3009}, 0x0, 85, 0, 0, 0}, - /*II_V_0F_54*/ {{0x13f, 3031}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_54*/ {{0x13f, 3039}, 0x1, 91, 0, 0, 0}, - /*II_V_0F_55*/ {{0x13f, 3063}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_55*/ {{0x13f, 3072}, 0x1, 91, 0, 0, 0}, - /*II_V_0F_56*/ {{0x13f, 3093}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_56*/ {{0x13f, 3100}, 0x1, 91, 0, 0, 0}, - /*II_V_0F_57*/ {{0x13f, 3121}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_57*/ {{0x13f, 3129}, 0x1, 91, 0, 0, 0}, - /*II_V_0F_58*/ {{0x13f, 3165}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_58*/ {{0x13f, 3173}, 0x1, 91, 0, 0, 0}, - /*II_V_F3_0F_58*/ {{0x138, 3181}, 0x0, 85, 0, 0, 0}, - /*II_V_F2_0F_58*/ {{0x138, 3189}, 0x0, 86, 0, 0, 0}, - /*II_V_0F_59*/ {{0x13f, 3225}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_59*/ {{0x13f, 3233}, 0x1, 91, 0, 0, 0}, - /*II_V_F3_0F_59*/ {{0x138, 3241}, 0x0, 85, 0, 0, 0}, - /*II_V_F2_0F_59*/ {{0x138, 3249}, 0x0, 86, 0, 0, 0}, - /*II_V_0F_5A*/ {{0x159, 3297}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_5A*/ {{0x15a, 3308}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_5A*/ {{0x138, 3319}, 0x0, 85, 0, 0, 0}, - /*II_V_F2_0F_5A*/ {{0x138, 3330}, 0x0, 86, 0, 0, 0}, - /*II_V_0F_5B*/ {{0x129, 3372}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_5B*/ {{0x129, 3383}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_5B*/ {{0x129, 3394}, 0x41, 0, 0, 0, 0}, - /*II_V_0F_5C*/ {{0x13f, 3434}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_5C*/ {{0x13f, 3442}, 0x1, 91, 0, 0, 0}, - /*II_V_F3_0F_5C*/ {{0x138, 3450}, 0x0, 85, 0, 0, 0}, - /*II_V_F2_0F_5C*/ {{0x138, 3458}, 0x0, 86, 0, 0, 0}, - /*II_V_0F_5D*/ {{0x13f, 3494}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_5D*/ {{0x13f, 3502}, 0x1, 91, 0, 0, 0}, - /*II_V_F3_0F_5D*/ {{0x138, 3510}, 0x0, 85, 0, 0, 0}, - /*II_V_F2_0F_5D*/ {{0x138, 3518}, 0x0, 86, 0, 0, 0}, - /*II_V_0F_5E*/ {{0x13f, 3554}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_5E*/ {{0x13f, 3562}, 0x1, 91, 0, 0, 0}, - /*II_V_F3_0F_5E*/ {{0x138, 3570}, 0x0, 85, 0, 0, 0}, - /*II_V_F2_0F_5E*/ {{0x138, 3578}, 0x0, 86, 0, 0, 0}, - /*II_V_0F_5F*/ {{0x13f, 3614}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_5F*/ {{0x13f, 3622}, 0x1, 91, 0, 0, 0}, - /*II_V_F3_0F_5F*/ {{0x138, 3630}, 0x0, 85, 0, 0, 0}, - /*II_V_F2_0F_5F*/ {{0x138, 3638}, 0x0, 86, 0, 0, 0}, - /*II_V_66_0F_60*/ {{0x138, 3657}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_61*/ {{0x138, 3680}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_62*/ {{0x138, 3703}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_63*/ {{0x138, 3725}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_64*/ {{0x138, 3745}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_65*/ {{0x138, 3764}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_66*/ {{0x138, 3783}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_67*/ {{0x138, 3803}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_68*/ {{0x138, 3825}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_69*/ {{0x138, 3848}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_6A*/ {{0x138, 3871}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_6B*/ {{0x138, 3893}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_6C*/ {{0x138, 3916}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_6D*/ {{0x138, 3941}, 0x0, 87, 0, 0, 0}, - /*II_0F_6E*/ {{0x15d, 3954}, 0x0, 0, 0, 0, 3960}, - /*II_66_0F_6E*/ {{0x15e, 3954}, 0x0, 0, 0, 0, 3960}, - /*II_V_66_0F_6E*/ {{0x15f, 3966}, 0x46, 0, 0, 3973, 0}, - /*II_V_66_0F_6F*/ {{0x129, 3996}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_6F*/ {{0x129, 4005}, 0x41, 0, 0, 0, 0}, - /*II_0F_70*/ {{0x161, 4014}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_70*/ {{0x162, 4022}, 0x0, 1, 0, 0, 0}, - /*II_F3_0F_70*/ {{0x162, 4030}, 0x0, 1, 0, 0, 0}, - /*II_F2_0F_70*/ {{0x162, 4039}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_70*/ {{0x163, 4048}, 0x40, 1, 0, 0, 0}, - /*II_V_F3_0F_70*/ {{0x163, 4057}, 0x40, 1, 0, 0, 0}, - /*II_V_F2_0F_70*/ {{0x163, 4067}, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_74*/ {{0x138, 4086}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_75*/ {{0x138, 4105}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_76*/ {{0x138, 4124}, 0x0, 87, 0, 0, 0}, - /*II_V_0F_77*/ {{0x165, 4140}, 0x49, 0, 0, 4152, 0}, - /*II_66_0F_78*/ {{0x167, 4170}, 0x0, 49, 0, 0, 0}, - /*II_F2_0F_78*/ {{0x168, 4177}, 0x0, 48, 49, 0, 0}, - /*II_V_66_0F_7C*/ {{0x13f, 4231}, 0x1, 91, 0, 0, 0}, - /*II_V_F2_0F_7C*/ {{0x13f, 4240}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_7D*/ {{0x13f, 4265}, 0x1, 91, 0, 0, 0}, - /*II_V_F2_0F_7D*/ {{0x13f, 4274}, 0x1, 91, 0, 0, 0}, - /*II_0F_7E*/ {{0x16f, 3954}, 0x0, 0, 0, 0, 3960}, - /*II_66_0F_7E*/ {{0x170, 3954}, 0x0, 0, 0, 0, 3960}, - /*II_V_66_0F_7E*/ {{0x171, 3966}, 0x46, 0, 0, 3973, 0}, - /*II_V_F3_0F_7E*/ {{0x153, 3973}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_7F*/ {{0x131, 3996}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_7F*/ {{0x131, 4005}, 0x41, 0, 0, 0, 0}, - /*II_0F_AE_04*/ {{0x173, 4283}, 0x0, 0, 0, 0, 4290}, - /*II_0F_AE_05*/ {{0x174, 4299}, 0x0, 0, 0, 4307, 4315}, - /*II_0F_AE_06*/ {{0x174, 4325}, 0x0, 0, 0, 4333, 4343}, - /*II_0F_AE_07*/ {{0x175, 4355}, 0x0, 0, 0, 4363, 0}, - /*II_0F_C2*/ {{0x17c, 4404}, 0x0, 0, 0, 4413, 4422}, - /*II_66_0F_C2*/ {{0x17d, 4483}, 0x0, 0, 0, 4492, 4501}, - /*II_F3_0F_C2*/ {{0x17e, 4562}, 0x0, 0, 0, 4571, 4580}, - /*II_F2_0F_C2*/ {{0x17f, 4641}, 0x0, 0, 0, 4650, 4659}, - /*II_V_0F_C2*/ {{0x180, 4720}, 0x1, 91, 0, 4730, 4740}, - /*II_V_66_0F_C2*/ {{0x180, 5122}, 0x1, 91, 0, 5132, 5142}, - /*II_V_F3_0F_C2*/ {{0x181, 5524}, 0x0, 85, 0, 5534, 5544}, - /*II_V_F2_0F_C2*/ {{0x181, 5926}, 0x0, 86, 0, 5936, 5946}, - /*II_0F_C4*/ {{0x182, 6328}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C4*/ {{0x183, 6328}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_C4*/ {{0x184, 6336}, 0x0, 79, 1, 0, 0}, - /*II_0F_C5*/ {{0x185, 6345}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C5*/ {{0x186, 6345}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_C5*/ {{0x187, 6353}, 0x40, 1, 0, 0, 0}, - /*II_0F_C6*/ {{0x188, 6362}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C6*/ {{0x162, 6370}, 0x0, 1, 0, 0, 0}, - /*II_V_0F_C6*/ {{0x189, 6378}, 0x1, 91, 1, 0, 0}, - /*II_V_66_0F_C6*/ {{0x189, 6387}, 0x1, 91, 1, 0, 0}, - /*II_0F_C7_01*/ {{0x18a, 6396}, 0x0, 0, 0, 0, 6407}, - /*II_V_66_0F_D0*/ {{0x13f, 6448}, 0x1, 91, 0, 0, 0}, - /*II_V_F2_0F_D0*/ {{0x13f, 6459}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_D1*/ {{0x138, 6477}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_D2*/ {{0x138, 6492}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_D3*/ {{0x138, 6507}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_D4*/ {{0x138, 6522}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_D5*/ {{0x138, 6538}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_D6*/ {{0x18e, 3973}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_D7*/ {{0x191, 6575}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_D8*/ {{0x138, 6595}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_D9*/ {{0x138, 6614}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_DA*/ {{0x138, 6632}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_DB*/ {{0x138, 6647}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_DC*/ {{0x138, 6663}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_DD*/ {{0x138, 6663}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_DE*/ {{0x138, 6690}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_DF*/ {{0x138, 6706}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_E0*/ {{0x138, 6721}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_E1*/ {{0x138, 6736}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_E2*/ {{0x138, 6751}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_E3*/ {{0x138, 6766}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_E4*/ {{0x138, 6783}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_E5*/ {{0x138, 6801}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_E6*/ {{0x15a, 6841}, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_E6*/ {{0x159, 6853}, 0x41, 0, 0, 0, 0}, - /*II_V_F2_0F_E6*/ {{0x15a, 6864}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_E7*/ {{0x14a, 6892}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_E8*/ {{0x138, 6910}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_E9*/ {{0x138, 6927}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_EA*/ {{0x138, 6944}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_EB*/ {{0x138, 6958}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_EC*/ {{0x138, 6972}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_ED*/ {{0x138, 6989}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_EE*/ {{0x138, 7006}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_EF*/ {{0x138, 7021}, 0x0, 87, 0, 0, 0}, - /*II_V_F2_0F_F0*/ {{0x195, 7035}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_F1*/ {{0x138, 7050}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_F2*/ {{0x138, 7065}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_F3*/ {{0x138, 7080}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_F4*/ {{0x138, 7097}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_F5*/ {{0x138, 7116}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_F6*/ {{0x138, 7134}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_F7*/ {{0x199, 7165}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_F8*/ {{0x138, 7185}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_F9*/ {{0x138, 7200}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_FA*/ {{0x138, 7215}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_FB*/ {{0x138, 7230}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_FC*/ {{0x138, 7245}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_FD*/ {{0x138, 7260}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_FE*/ {{0x138, 7275}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_00*/ {{0x138, 7383}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_01*/ {{0x138, 7400}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_02*/ {{0x138, 7417}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_03*/ {{0x138, 7435}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_04*/ {{0x138, 7456}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_05*/ {{0x138, 7476}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_06*/ {{0x138, 7493}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_07*/ {{0x138, 7511}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_08*/ {{0x138, 7529}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_09*/ {{0x138, 7546}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_0A*/ {{0x138, 7563}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_0B*/ {{0x138, 7582}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_0C*/ {{0x13f, 7593}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_38_0D*/ {{0x13f, 7604}, 0x1, 91, 0, 0, 0}, - /*II_V_66_0F_38_0E*/ {{0x129, 7615}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_0F*/ {{0x129, 7624}, 0x41, 0, 0, 0, 0}, - /*II_66_0F_38_10*/ {{0x1a2, 7633}, 0x0, 32, 0, 0, 0}, - /*II_66_0F_38_14*/ {{0x1a2, 7643}, 0x0, 32, 0, 0, 0}, - /*II_66_0F_38_15*/ {{0x1a2, 7653}, 0x0, 32, 0, 0, 0}, - /*II_V_66_0F_38_17*/ {{0x129, 7670}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_18*/ {{0x1a4, 7678}, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_19*/ {{0x1a5, 7692}, 0x50, 0, 0, 0, 0}, - /*II_V_66_0F_38_1A*/ {{0x1a6, 7706}, 0x50, 0, 0, 0, 0}, - /*II_V_66_0F_38_1C*/ {{0x1a7, 7729}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_1D*/ {{0x1a7, 7744}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_1E*/ {{0x1a7, 7759}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_20*/ {{0x153, 7777}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_21*/ {{0x152, 7798}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_22*/ {{0x1ab, 7819}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_23*/ {{0x153, 7840}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_24*/ {{0x152, 7861}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_25*/ {{0x153, 7882}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_28*/ {{0x138, 7901}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_29*/ {{0x138, 7919}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_2A*/ {{0x1ae, 7939}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_2B*/ {{0x138, 7960}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_2C*/ {{0x13f, 7971}, 0x1, 67, 0, 0, 0}, - /*II_V_66_0F_38_2D*/ {{0x13f, 7983}, 0x1, 67, 0, 0, 0}, - /*II_V_66_0F_38_2E*/ {{0x1af, 7971}, 0x1, 36, 0, 0, 0}, - /*II_V_66_0F_38_2F*/ {{0x1af, 7983}, 0x1, 36, 0, 0, 0}, - /*II_V_66_0F_38_30*/ {{0x153, 8005}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_31*/ {{0x152, 8026}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_32*/ {{0x1ab, 8047}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_33*/ {{0x153, 8068}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_34*/ {{0x152, 8089}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_35*/ {{0x153, 8110}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_37*/ {{0x138, 8130}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_38*/ {{0x138, 8148}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_39*/ {{0x138, 8165}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_3A*/ {{0x138, 8182}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_3B*/ {{0x138, 8199}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_3C*/ {{0x138, 8216}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_3D*/ {{0x138, 8233}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_3E*/ {{0x138, 8250}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_3F*/ {{0x138, 8267}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_40*/ {{0x138, 8284}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_41*/ {{0x1a7, 8305}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_96*/ {{0x1b1, 8344}, 0x7, 91, 0, 8360, 0}, - /*II_V_66_0F_38_97*/ {{0x1b1, 8376}, 0x7, 91, 0, 8392, 0}, - /*II_V_66_0F_38_98*/ {{0x1b1, 8408}, 0x7, 91, 0, 8421, 0}, - /*II_V_66_0F_38_99*/ {{0x1b2, 8434}, 0x6, 88, 0, 8447, 0}, - /*II_V_66_0F_38_9A*/ {{0x1b1, 8460}, 0x7, 91, 0, 8473, 0}, - /*II_V_66_0F_38_9B*/ {{0x1b2, 8486}, 0x6, 88, 0, 8499, 0}, - /*II_V_66_0F_38_9C*/ {{0x1b1, 8512}, 0x7, 91, 0, 8526, 0}, - /*II_V_66_0F_38_9D*/ {{0x1b2, 8540}, 0x6, 88, 0, 8554, 0}, - /*II_V_66_0F_38_9E*/ {{0x1b1, 8568}, 0x7, 91, 0, 8582, 0}, - /*II_V_66_0F_38_9F*/ {{0x1b2, 8596}, 0x6, 88, 0, 8610, 0}, - /*II_V_66_0F_38_A6*/ {{0x1b1, 8624}, 0x7, 91, 0, 8640, 0}, - /*II_V_66_0F_38_A7*/ {{0x1b1, 8656}, 0x7, 91, 0, 8672, 0}, - /*II_V_66_0F_38_A8*/ {{0x1b1, 8688}, 0x7, 91, 0, 8701, 0}, - /*II_V_66_0F_38_A9*/ {{0x1b2, 8714}, 0x6, 88, 0, 8727, 0}, - /*II_V_66_0F_38_AA*/ {{0x1b1, 8740}, 0x7, 91, 0, 8753, 0}, - /*II_V_66_0F_38_AB*/ {{0x1b2, 8766}, 0x6, 88, 0, 8779, 0}, - /*II_V_66_0F_38_AC*/ {{0x1b1, 8792}, 0x7, 91, 0, 8806, 0}, - /*II_V_66_0F_38_AD*/ {{0x1b2, 8820}, 0x6, 88, 0, 8834, 0}, - /*II_V_66_0F_38_AE*/ {{0x1b1, 8848}, 0x7, 91, 0, 8862, 0}, - /*II_V_66_0F_38_AF*/ {{0x1b2, 8876}, 0x6, 88, 0, 8890, 0}, - /*II_V_66_0F_38_B6*/ {{0x1b1, 8904}, 0x7, 91, 0, 8920, 0}, - /*II_V_66_0F_38_B7*/ {{0x1b1, 8936}, 0x7, 91, 0, 8952, 0}, - /*II_V_66_0F_38_B8*/ {{0x1b1, 8968}, 0x7, 91, 0, 8981, 0}, - /*II_V_66_0F_38_B9*/ {{0x1b2, 8994}, 0x6, 88, 0, 9007, 0}, - /*II_V_66_0F_38_BA*/ {{0x1b1, 9020}, 0x7, 91, 0, 9033, 0}, - /*II_V_66_0F_38_BB*/ {{0x1b2, 9046}, 0x6, 88, 0, 9059, 0}, - /*II_V_66_0F_38_BC*/ {{0x1b1, 9072}, 0x7, 91, 0, 9086, 0}, - /*II_V_66_0F_38_BD*/ {{0x1b2, 9100}, 0x6, 88, 0, 9114, 0}, - /*II_V_66_0F_38_BE*/ {{0x1b1, 9128}, 0x7, 91, 0, 9142, 0}, - /*II_V_66_0F_38_BF*/ {{0x1b2, 9156}, 0x6, 88, 0, 9170, 0}, - /*II_V_66_0F_38_DB*/ {{0x1b4, 9192}, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_DC*/ {{0x1b5, 9209}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_DD*/ {{0x1b5, 9230}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_DE*/ {{0x1b5, 9251}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_38_DF*/ {{0x1b5, 9272}, 0x0, 87, 0, 0, 0}, - /*II_V_66_0F_3A_04*/ {{0x1ba, 7593}, 0x41, 1, 0, 0, 0}, - /*II_V_66_0F_3A_05*/ {{0x1ba, 7604}, 0x41, 1, 0, 0, 0}, - /*II_V_66_0F_3A_06*/ {{0x1bb, 9299}, 0x10, 89, 1, 0, 0}, - /*II_66_0F_3A_08*/ {{0x1a2, 9311}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_08*/ {{0x1ba, 9320}, 0x41, 1, 0, 0, 0}, - /*II_66_0F_3A_09*/ {{0x1a2, 9330}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_09*/ {{0x1ba, 9339}, 0x41, 1, 0, 0, 0}, - /*II_66_0F_3A_0A*/ {{0x1bc, 9349}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0A*/ {{0x184, 9358}, 0x0, 85, 1, 0, 0}, - /*II_66_0F_3A_0B*/ {{0x1bd, 9368}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0B*/ {{0x184, 9377}, 0x0, 86, 1, 0, 0}, - /*II_66_0F_3A_0C*/ {{0x1a2, 9387}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0C*/ {{0x189, 9396}, 0x1, 91, 1, 0, 0}, - /*II_66_0F_3A_0D*/ {{0x1a2, 9406}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0D*/ {{0x189, 9415}, 0x1, 91, 1, 0, 0}, - /*II_66_0F_3A_0E*/ {{0x1a2, 9425}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0E*/ {{0x184, 9434}, 0x0, 87, 1, 0, 0}, - /*II_0F_3A_0F*/ {{0x1be, 9444}, 0x0, 1, 0, 0, 0}, - /*II_66_0F_3A_0F*/ {{0x1bf, 9444}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0F*/ {{0x184, 9453}, 0x0, 87, 1, 0, 0}, - /*II_66_0F_3A_14*/ {{0x1c0, 9463}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_14*/ {{0x1c1, 9471}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_15*/ {{0x1c2, 6345}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_15*/ {{0x1c3, 6353}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_16*/ {{0x1c4, 9480}, 0x0, 1, 0, 0, 9488}, - /*II_V_66_0F_3A_16*/ {{0x1c5, 9496}, 0x46, 1, 0, 9505, 0}, - /*II_66_0F_3A_17*/ {{0x1c6, 9514}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_17*/ {{0x1c7, 9525}, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_3A_18*/ {{0x1bb, 9537}, 0x10, 87, 1, 0, 0}, - /*II_V_66_0F_3A_19*/ {{0x1c8, 9550}, 0x50, 1, 0, 0, 0}, - /*II_66_0F_3A_20*/ {{0x1c9, 9564}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_20*/ {{0x184, 9572}, 0x0, 80, 1, 0, 0}, - /*II_66_0F_3A_21*/ {{0x1bc, 9581}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_21*/ {{0x184, 9591}, 0x0, 85, 1, 0, 0}, - /*II_66_0F_3A_22*/ {{0x1ca, 9602}, 0x0, 1, 0, 0, 9610}, - /*II_V_66_0F_3A_22*/ {{0x184, 9618}, 0x6, 73, 1, 9627, 0}, - /*II_66_0F_3A_40*/ {{0x1a2, 9636}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_40*/ {{0x189, 9642}, 0x1, 91, 1, 0, 0}, - /*II_66_0F_3A_41*/ {{0x1a2, 9649}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_41*/ {{0x184, 9655}, 0x0, 87, 1, 0, 0}, - /*II_66_0F_3A_42*/ {{0x1a2, 9662}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_42*/ {{0x184, 9671}, 0x0, 87, 1, 0, 0}, - /*II_66_0F_3A_44*/ {{0x1cb, 9681}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_44*/ {{0x1cc, 9692}, 0x0, 87, 1, 0, 0}, - /*II_V_66_0F_3A_4A*/ {{0x189, 9704}, 0x1, 91, 37, 0, 0}, - /*II_V_66_0F_3A_4B*/ {{0x189, 9715}, 0x1, 91, 37, 0, 0}, - /*II_V_66_0F_3A_4C*/ {{0x184, 9726}, 0x0, 87, 35, 0, 0}, - /*II_66_0F_3A_60*/ {{0x1cd, 9737}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_60*/ {{0x163, 9748}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_61*/ {{0x1cd, 9760}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_61*/ {{0x163, 9771}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_62*/ {{0x1cd, 9783}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_62*/ {{0x163, 9794}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_63*/ {{0x1cd, 9806}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_63*/ {{0x163, 9817}, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_DF*/ {{0x1ce, 9829}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_DF*/ {{0x1cf, 9846}, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_71_02*/ {{0x1d2, 6477}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_71_04*/ {{0x1d2, 6736}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_71_06*/ {{0x1d2, 7050}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_02*/ {{0x1d2, 6492}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_04*/ {{0x1d2, 6751}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_06*/ {{0x1d2, 7065}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_02*/ {{0x1d2, 6507}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_03*/ {{0x1d2, 9872}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_06*/ {{0x1d2, 7080}, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_07*/ {{0x1d2, 9889}, 0x0, 1, 0, 0, 0}, - /*II_0F_AE_00*/ {{0x173, 9898}, 0x0, 0, 0, 0, 9906}, - /*II_0F_AE_01*/ {{0x173, 9926}, 0x0, 0, 0, 0, 9935}, - /*II_V_0F_AE_02*/ {{0x1d5, 9975}, 0x40, 0, 0, 0, 0}, - /*II_V_0F_AE_03*/ {{0x1d5, 10004}, 0x40, 0, 0, 0, 0} + /*II_E3*/ {{0x75, 426}, 0x0, 0, 0, 432, 439}, + /*II_0F_A4*/ {{0xad, 875}, 0x0, 1, 0, 0, 0}, + /*II_0F_A5*/ {{0xad, 875}, 0x0, 42, 0, 0, 0}, + /*II_0F_AC*/ {{0xad, 891}, 0x0, 1, 0, 0, 0}, + /*II_0F_AD*/ {{0xad, 891}, 0x0, 42, 0, 0, 0}, + /*II_V_0F_10*/ {{0x129, 2150}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_10*/ {{0x129, 2159}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_10*/ {{0x12a, 2168}, 0x20, 31, 0, 0, 0}, + /*II_V_F2_0F_10*/ {{0x12a, 2176}, 0x20, 31, 0, 0, 0}, + /*II_VRR_F3_0F_10*/ {{0x12b, 2168}, 0x60, 0, 0, 0, 0}, + /*II_VRR_F2_0F_10*/ {{0x12c, 2176}, 0x60, 0, 0, 0, 0}, + /*II_V_0F_11*/ {{0x131, 2150}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_11*/ {{0x131, 2159}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_11*/ {{0x12a, 2168}, 0x20, 31, 0, 0, 0}, + /*II_V_F2_0F_11*/ {{0x12a, 2176}, 0x20, 31, 0, 0, 0}, + /*II_VRR_F3_0F_11*/ {{0x132, 2168}, 0x60, 0, 0, 0, 0}, + /*II_VRR_F2_0F_11*/ {{0x133, 2176}, 0x60, 0, 0, 0, 0}, + /*II_0F_12*/ {{0x134, 2184}, 0x0, 0, 0, 2193, 0}, + /*II_V_0F_12*/ {{0x137, 2228}, 0x0, 86, 0, 2238, 0}, + /*II_V_66_0F_12*/ {{0x138, 2247}, 0x0, 57, 0, 0, 0}, + /*II_V_F3_0F_12*/ {{0x129, 2256}, 0x41, 0, 0, 0, 0}, + /*II_V_F2_0F_12*/ {{0x139, 2267}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_13*/ {{0x13c, 2238}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_13*/ {{0x13c, 2247}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_14*/ {{0x13f, 2297}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_14*/ {{0x13f, 2308}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_15*/ {{0x13f, 2339}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_15*/ {{0x13f, 2350}, 0x1, 91, 0, 0, 0}, + /*II_0F_16*/ {{0x134, 2361}, 0x0, 0, 0, 2370, 0}, + /*II_V_0F_16*/ {{0x137, 2396}, 0x0, 86, 0, 2406, 0}, + /*II_V_66_0F_16*/ {{0x138, 2415}, 0x0, 57, 0, 0, 0}, + /*II_V_F3_0F_16*/ {{0x129, 2424}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_17*/ {{0x13c, 2406}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_17*/ {{0x13c, 2415}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_28*/ {{0x129, 2500}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_28*/ {{0x129, 2509}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_29*/ {{0x131, 2500}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_29*/ {{0x131, 2509}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_2A*/ {{0x138, 2558}, 0x2, 73, 0, 0, 0}, + /*II_V_F2_0F_2A*/ {{0x138, 2569}, 0x2, 73, 0, 0, 0}, + /*II_V_0F_2B*/ {{0x14a, 2616}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_2B*/ {{0x14a, 2626}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_2C*/ {{0x14f, 2680}, 0x42, 0, 0, 0, 0}, + /*II_V_F2_0F_2C*/ {{0x14f, 2692}, 0x42, 0, 0, 0, 0}, + /*II_V_F3_0F_2D*/ {{0x14f, 2744}, 0x42, 0, 0, 0, 0}, + /*II_V_F2_0F_2D*/ {{0x14f, 2755}, 0x42, 0, 0, 0, 0}, + /*II_V_0F_2E*/ {{0x152, 2784}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_2E*/ {{0x153, 2794}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_2F*/ {{0x152, 2820}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_2F*/ {{0x153, 2829}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_50*/ {{0x156, 2858}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_50*/ {{0x156, 2869}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_51*/ {{0x129, 2912}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_51*/ {{0x129, 2921}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_51*/ {{0x138, 2930}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_51*/ {{0x138, 2939}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_52*/ {{0x129, 2966}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_52*/ {{0x138, 2976}, 0x0, 85, 0, 0, 0}, + /*II_V_0F_53*/ {{0x129, 3000}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_53*/ {{0x138, 3008}, 0x0, 85, 0, 0, 0}, + /*II_V_0F_54*/ {{0x13f, 3030}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_54*/ {{0x13f, 3038}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_55*/ {{0x13f, 3062}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_55*/ {{0x13f, 3071}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_56*/ {{0x13f, 3092}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_56*/ {{0x13f, 3099}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_57*/ {{0x13f, 3120}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_57*/ {{0x13f, 3128}, 0x1, 91, 0, 0, 0}, + /*II_V_0F_58*/ {{0x13f, 3164}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_58*/ {{0x13f, 3172}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_58*/ {{0x138, 3180}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_58*/ {{0x138, 3188}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_59*/ {{0x13f, 3224}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_59*/ {{0x13f, 3232}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_59*/ {{0x138, 3240}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_59*/ {{0x138, 3248}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5A*/ {{0x159, 3296}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_5A*/ {{0x15a, 3307}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_5A*/ {{0x138, 3318}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5A*/ {{0x138, 3329}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5B*/ {{0x129, 3371}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_5B*/ {{0x129, 3382}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_5B*/ {{0x129, 3393}, 0x41, 0, 0, 0, 0}, + /*II_V_0F_5C*/ {{0x13f, 3433}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_5C*/ {{0x13f, 3441}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_5C*/ {{0x138, 3449}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5C*/ {{0x138, 3457}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5D*/ {{0x13f, 3493}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_5D*/ {{0x13f, 3501}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_5D*/ {{0x138, 3509}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5D*/ {{0x138, 3517}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5E*/ {{0x13f, 3553}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_5E*/ {{0x13f, 3561}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_5E*/ {{0x138, 3569}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5E*/ {{0x138, 3577}, 0x0, 86, 0, 0, 0}, + /*II_V_0F_5F*/ {{0x13f, 3613}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_5F*/ {{0x13f, 3621}, 0x1, 91, 0, 0, 0}, + /*II_V_F3_0F_5F*/ {{0x138, 3629}, 0x0, 85, 0, 0, 0}, + /*II_V_F2_0F_5F*/ {{0x138, 3637}, 0x0, 86, 0, 0, 0}, + /*II_V_66_0F_60*/ {{0x138, 3656}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_61*/ {{0x138, 3679}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_62*/ {{0x138, 3702}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_63*/ {{0x138, 3724}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_64*/ {{0x138, 3744}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_65*/ {{0x138, 3763}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_66*/ {{0x138, 3782}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_67*/ {{0x138, 3802}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_68*/ {{0x138, 3824}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_69*/ {{0x138, 3847}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_6A*/ {{0x138, 3870}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_6B*/ {{0x138, 3892}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_6C*/ {{0x138, 3915}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_6D*/ {{0x138, 3940}, 0x0, 87, 0, 0, 0}, + /*II_0F_6E*/ {{0x15d, 3953}, 0x0, 0, 0, 0, 3959}, + /*II_66_0F_6E*/ {{0x15e, 3953}, 0x0, 0, 0, 0, 3959}, + /*II_V_66_0F_6E*/ {{0x15f, 3965}, 0x46, 0, 0, 3972, 0}, + /*II_V_66_0F_6F*/ {{0x129, 3995}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_6F*/ {{0x129, 4004}, 0x41, 0, 0, 0, 0}, + /*II_0F_70*/ {{0x161, 4013}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_70*/ {{0x162, 4021}, 0x0, 1, 0, 0, 0}, + /*II_F3_0F_70*/ {{0x162, 4029}, 0x0, 1, 0, 0, 0}, + /*II_F2_0F_70*/ {{0x162, 4038}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_70*/ {{0x163, 4047}, 0x40, 1, 0, 0, 0}, + /*II_V_F3_0F_70*/ {{0x163, 4056}, 0x40, 1, 0, 0, 0}, + /*II_V_F2_0F_70*/ {{0x163, 4066}, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_74*/ {{0x138, 4085}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_75*/ {{0x138, 4104}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_76*/ {{0x138, 4123}, 0x0, 87, 0, 0, 0}, + /*II_V_0F_77*/ {{0x165, 4139}, 0x49, 0, 0, 4151, 0}, + /*II_66_0F_78*/ {{0x167, 4169}, 0x0, 49, 0, 0, 0}, + /*II_F2_0F_78*/ {{0x168, 4176}, 0x0, 48, 49, 0, 0}, + /*II_V_66_0F_7C*/ {{0x13f, 4230}, 0x1, 91, 0, 0, 0}, + /*II_V_F2_0F_7C*/ {{0x13f, 4239}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_7D*/ {{0x13f, 4264}, 0x1, 91, 0, 0, 0}, + /*II_V_F2_0F_7D*/ {{0x13f, 4273}, 0x1, 91, 0, 0, 0}, + /*II_0F_7E*/ {{0x16f, 3953}, 0x0, 0, 0, 0, 3959}, + /*II_66_0F_7E*/ {{0x170, 3953}, 0x0, 0, 0, 0, 3959}, + /*II_V_66_0F_7E*/ {{0x171, 3965}, 0x46, 0, 0, 3972, 0}, + /*II_V_F3_0F_7E*/ {{0x153, 3972}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_7F*/ {{0x131, 3995}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_7F*/ {{0x131, 4004}, 0x41, 0, 0, 0, 0}, + /*II_0F_AE_04*/ {{0x173, 4282}, 0x0, 0, 0, 0, 4289}, + /*II_0F_AE_05*/ {{0x174, 4298}, 0x0, 0, 0, 4306, 4314}, + /*II_0F_AE_06*/ {{0x174, 4324}, 0x0, 0, 0, 4332, 4342}, + /*II_0F_AE_07*/ {{0x175, 4354}, 0x0, 0, 0, 4362, 0}, + /*II_0F_C2*/ {{0x17c, 4403}, 0x0, 0, 0, 4412, 4421}, + /*II_66_0F_C2*/ {{0x17d, 4482}, 0x0, 0, 0, 4491, 4500}, + /*II_F3_0F_C2*/ {{0x17e, 4561}, 0x0, 0, 0, 4570, 4579}, + /*II_F2_0F_C2*/ {{0x17f, 4640}, 0x0, 0, 0, 4649, 4658}, + /*II_V_0F_C2*/ {{0x180, 4719}, 0x1, 91, 0, 4729, 4739}, + /*II_V_66_0F_C2*/ {{0x180, 5121}, 0x1, 91, 0, 5131, 5141}, + /*II_V_F3_0F_C2*/ {{0x181, 5523}, 0x0, 85, 0, 5533, 5543}, + /*II_V_F2_0F_C2*/ {{0x181, 5925}, 0x0, 86, 0, 5935, 5945}, + /*II_0F_C4*/ {{0x182, 6327}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C4*/ {{0x183, 6327}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_C4*/ {{0x184, 6335}, 0x0, 79, 1, 0, 0}, + /*II_0F_C5*/ {{0x185, 6344}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C5*/ {{0x186, 6344}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_C5*/ {{0x187, 6352}, 0x40, 1, 0, 0, 0}, + /*II_0F_C6*/ {{0x188, 6361}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C6*/ {{0x162, 6369}, 0x0, 1, 0, 0, 0}, + /*II_V_0F_C6*/ {{0x189, 6377}, 0x1, 91, 1, 0, 0}, + /*II_V_66_0F_C6*/ {{0x189, 6386}, 0x1, 91, 1, 0, 0}, + /*II_0F_C7_01*/ {{0x18a, 6395}, 0x0, 0, 0, 0, 6406}, + /*II_V_66_0F_D0*/ {{0x13f, 6447}, 0x1, 91, 0, 0, 0}, + /*II_V_F2_0F_D0*/ {{0x13f, 6458}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_D1*/ {{0x138, 6476}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D2*/ {{0x138, 6491}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D3*/ {{0x138, 6506}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D4*/ {{0x138, 6521}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D5*/ {{0x138, 6537}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D6*/ {{0x18e, 3972}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_D7*/ {{0x191, 6574}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_D8*/ {{0x138, 6594}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_D9*/ {{0x138, 6613}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DA*/ {{0x138, 6631}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DB*/ {{0x138, 6646}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DC*/ {{0x138, 6662}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DD*/ {{0x138, 6662}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DE*/ {{0x138, 6689}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_DF*/ {{0x138, 6705}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E0*/ {{0x138, 6720}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E1*/ {{0x138, 6735}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E2*/ {{0x138, 6750}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E3*/ {{0x138, 6765}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E4*/ {{0x138, 6782}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E5*/ {{0x138, 6800}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E6*/ {{0x15a, 6840}, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_E6*/ {{0x159, 6852}, 0x41, 0, 0, 0, 0}, + /*II_V_F2_0F_E6*/ {{0x15a, 6863}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_E7*/ {{0x14a, 6891}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_E8*/ {{0x138, 6909}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_E9*/ {{0x138, 6926}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EA*/ {{0x138, 6943}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EB*/ {{0x138, 6957}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EC*/ {{0x138, 6971}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_ED*/ {{0x138, 6988}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EE*/ {{0x138, 7005}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_EF*/ {{0x138, 7020}, 0x0, 87, 0, 0, 0}, + /*II_V_F2_0F_F0*/ {{0x195, 7034}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_F1*/ {{0x138, 7049}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F2*/ {{0x138, 7064}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F3*/ {{0x138, 7079}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F4*/ {{0x138, 7096}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F5*/ {{0x138, 7115}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F6*/ {{0x138, 7133}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F7*/ {{0x199, 7164}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_F8*/ {{0x138, 7184}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_F9*/ {{0x138, 7199}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FA*/ {{0x138, 7214}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FB*/ {{0x138, 7229}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FC*/ {{0x138, 7244}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FD*/ {{0x138, 7259}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_FE*/ {{0x138, 7274}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_00*/ {{0x138, 7382}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_01*/ {{0x138, 7399}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_02*/ {{0x138, 7416}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_03*/ {{0x138, 7434}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_04*/ {{0x138, 7455}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_05*/ {{0x138, 7475}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_06*/ {{0x138, 7492}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_07*/ {{0x138, 7510}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_08*/ {{0x138, 7528}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_09*/ {{0x138, 7545}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_0A*/ {{0x138, 7562}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_0B*/ {{0x138, 7581}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_0C*/ {{0x13f, 7592}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_38_0D*/ {{0x13f, 7603}, 0x1, 91, 0, 0, 0}, + /*II_V_66_0F_38_0E*/ {{0x129, 7614}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_0F*/ {{0x129, 7623}, 0x41, 0, 0, 0, 0}, + /*II_66_0F_38_10*/ {{0x1a2, 7632}, 0x0, 32, 0, 0, 0}, + /*II_66_0F_38_14*/ {{0x1a2, 7642}, 0x0, 32, 0, 0, 0}, + /*II_66_0F_38_15*/ {{0x1a2, 7652}, 0x0, 32, 0, 0, 0}, + /*II_V_66_0F_38_17*/ {{0x129, 7669}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_18*/ {{0x1a4, 7677}, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_19*/ {{0x1a5, 7691}, 0x50, 0, 0, 0, 0}, + /*II_V_66_0F_38_1A*/ {{0x1a6, 7705}, 0x50, 0, 0, 0, 0}, + /*II_V_66_0F_38_1C*/ {{0x1a7, 7728}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_1D*/ {{0x1a7, 7743}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_1E*/ {{0x1a7, 7758}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_20*/ {{0x153, 7776}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_21*/ {{0x152, 7797}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_22*/ {{0x1ab, 7818}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_23*/ {{0x153, 7839}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_24*/ {{0x152, 7860}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_25*/ {{0x153, 7881}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_28*/ {{0x138, 7900}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_29*/ {{0x138, 7918}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_2A*/ {{0x1ae, 7938}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_2B*/ {{0x138, 7959}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_2C*/ {{0x13f, 7970}, 0x1, 67, 0, 0, 0}, + /*II_V_66_0F_38_2D*/ {{0x13f, 7982}, 0x1, 67, 0, 0, 0}, + /*II_V_66_0F_38_2E*/ {{0x1af, 7970}, 0x1, 36, 0, 0, 0}, + /*II_V_66_0F_38_2F*/ {{0x1af, 7982}, 0x1, 36, 0, 0, 0}, + /*II_V_66_0F_38_30*/ {{0x153, 8004}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_31*/ {{0x152, 8025}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_32*/ {{0x1ab, 8046}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_33*/ {{0x153, 8067}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_34*/ {{0x152, 8088}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_35*/ {{0x153, 8109}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_37*/ {{0x138, 8129}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_38*/ {{0x138, 8147}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_39*/ {{0x138, 8164}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3A*/ {{0x138, 8181}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3B*/ {{0x138, 8198}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3C*/ {{0x138, 8215}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3D*/ {{0x138, 8232}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3E*/ {{0x138, 8249}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_3F*/ {{0x138, 8266}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_40*/ {{0x138, 8283}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_41*/ {{0x1a7, 8304}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_96*/ {{0x1b1, 8343}, 0x7, 91, 0, 8359, 0}, + /*II_V_66_0F_38_97*/ {{0x1b1, 8375}, 0x7, 91, 0, 8391, 0}, + /*II_V_66_0F_38_98*/ {{0x1b1, 8407}, 0x7, 91, 0, 8420, 0}, + /*II_V_66_0F_38_99*/ {{0x1b2, 8433}, 0x6, 88, 0, 8446, 0}, + /*II_V_66_0F_38_9A*/ {{0x1b1, 8459}, 0x7, 91, 0, 8472, 0}, + /*II_V_66_0F_38_9B*/ {{0x1b2, 8485}, 0x6, 88, 0, 8498, 0}, + /*II_V_66_0F_38_9C*/ {{0x1b1, 8511}, 0x7, 91, 0, 8525, 0}, + /*II_V_66_0F_38_9D*/ {{0x1b2, 8539}, 0x6, 88, 0, 8553, 0}, + /*II_V_66_0F_38_9E*/ {{0x1b1, 8567}, 0x7, 91, 0, 8581, 0}, + /*II_V_66_0F_38_9F*/ {{0x1b2, 8595}, 0x6, 88, 0, 8609, 0}, + /*II_V_66_0F_38_A6*/ {{0x1b1, 8623}, 0x7, 91, 0, 8639, 0}, + /*II_V_66_0F_38_A7*/ {{0x1b1, 8655}, 0x7, 91, 0, 8671, 0}, + /*II_V_66_0F_38_A8*/ {{0x1b1, 8687}, 0x7, 91, 0, 8700, 0}, + /*II_V_66_0F_38_A9*/ {{0x1b2, 8713}, 0x6, 88, 0, 8726, 0}, + /*II_V_66_0F_38_AA*/ {{0x1b1, 8739}, 0x7, 91, 0, 8752, 0}, + /*II_V_66_0F_38_AB*/ {{0x1b2, 8765}, 0x6, 88, 0, 8778, 0}, + /*II_V_66_0F_38_AC*/ {{0x1b1, 8791}, 0x7, 91, 0, 8805, 0}, + /*II_V_66_0F_38_AD*/ {{0x1b2, 8819}, 0x6, 88, 0, 8833, 0}, + /*II_V_66_0F_38_AE*/ {{0x1b1, 8847}, 0x7, 91, 0, 8861, 0}, + /*II_V_66_0F_38_AF*/ {{0x1b2, 8875}, 0x6, 88, 0, 8889, 0}, + /*II_V_66_0F_38_B6*/ {{0x1b1, 8903}, 0x7, 91, 0, 8919, 0}, + /*II_V_66_0F_38_B7*/ {{0x1b1, 8935}, 0x7, 91, 0, 8951, 0}, + /*II_V_66_0F_38_B8*/ {{0x1b1, 8967}, 0x7, 91, 0, 8980, 0}, + /*II_V_66_0F_38_B9*/ {{0x1b2, 8993}, 0x6, 88, 0, 9006, 0}, + /*II_V_66_0F_38_BA*/ {{0x1b1, 9019}, 0x7, 91, 0, 9032, 0}, + /*II_V_66_0F_38_BB*/ {{0x1b2, 9045}, 0x6, 88, 0, 9058, 0}, + /*II_V_66_0F_38_BC*/ {{0x1b1, 9071}, 0x7, 91, 0, 9085, 0}, + /*II_V_66_0F_38_BD*/ {{0x1b2, 9099}, 0x6, 88, 0, 9113, 0}, + /*II_V_66_0F_38_BE*/ {{0x1b1, 9127}, 0x7, 91, 0, 9141, 0}, + /*II_V_66_0F_38_BF*/ {{0x1b2, 9155}, 0x6, 88, 0, 9169, 0}, + /*II_V_66_0F_38_DB*/ {{0x1b4, 9191}, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_DC*/ {{0x1b5, 9208}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_DD*/ {{0x1b5, 9229}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_DE*/ {{0x1b5, 9250}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_38_DF*/ {{0x1b5, 9271}, 0x0, 87, 0, 0, 0}, + /*II_V_66_0F_3A_04*/ {{0x1ba, 7592}, 0x41, 1, 0, 0, 0}, + /*II_V_66_0F_3A_05*/ {{0x1ba, 7603}, 0x41, 1, 0, 0, 0}, + /*II_V_66_0F_3A_06*/ {{0x1bb, 9298}, 0x10, 89, 1, 0, 0}, + /*II_66_0F_3A_08*/ {{0x1a2, 9310}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_08*/ {{0x1ba, 9319}, 0x41, 1, 0, 0, 0}, + /*II_66_0F_3A_09*/ {{0x1a2, 9329}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_09*/ {{0x1ba, 9338}, 0x41, 1, 0, 0, 0}, + /*II_66_0F_3A_0A*/ {{0x1bc, 9348}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0A*/ {{0x184, 9357}, 0x0, 85, 1, 0, 0}, + /*II_66_0F_3A_0B*/ {{0x1bd, 9367}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0B*/ {{0x184, 9376}, 0x0, 86, 1, 0, 0}, + /*II_66_0F_3A_0C*/ {{0x1a2, 9386}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0C*/ {{0x189, 9395}, 0x1, 91, 1, 0, 0}, + /*II_66_0F_3A_0D*/ {{0x1a2, 9405}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0D*/ {{0x189, 9414}, 0x1, 91, 1, 0, 0}, + /*II_66_0F_3A_0E*/ {{0x1a2, 9424}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0E*/ {{0x184, 9433}, 0x0, 87, 1, 0, 0}, + /*II_0F_3A_0F*/ {{0x1be, 9443}, 0x0, 1, 0, 0, 0}, + /*II_66_0F_3A_0F*/ {{0x1bf, 9443}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0F*/ {{0x184, 9452}, 0x0, 87, 1, 0, 0}, + /*II_66_0F_3A_14*/ {{0x1c0, 9462}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_14*/ {{0x1c1, 9470}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_15*/ {{0x1c2, 6344}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_15*/ {{0x1c3, 6352}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_16*/ {{0x1c4, 9479}, 0x0, 1, 0, 0, 9487}, + /*II_V_66_0F_3A_16*/ {{0x1c5, 9495}, 0x46, 1, 0, 9504, 0}, + /*II_66_0F_3A_17*/ {{0x1c6, 9513}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_17*/ {{0x1c7, 9524}, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_3A_18*/ {{0x1bb, 9536}, 0x10, 87, 1, 0, 0}, + /*II_V_66_0F_3A_19*/ {{0x1c8, 9549}, 0x50, 1, 0, 0, 0}, + /*II_66_0F_3A_20*/ {{0x1c9, 9563}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_20*/ {{0x184, 9571}, 0x0, 80, 1, 0, 0}, + /*II_66_0F_3A_21*/ {{0x1bc, 9580}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_21*/ {{0x184, 9590}, 0x0, 85, 1, 0, 0}, + /*II_66_0F_3A_22*/ {{0x1ca, 9601}, 0x0, 1, 0, 0, 9609}, + /*II_V_66_0F_3A_22*/ {{0x184, 9617}, 0x6, 73, 1, 9626, 0}, + /*II_66_0F_3A_40*/ {{0x1a2, 9635}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_40*/ {{0x189, 9641}, 0x1, 91, 1, 0, 0}, + /*II_66_0F_3A_41*/ {{0x1a2, 9648}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_41*/ {{0x184, 9654}, 0x0, 87, 1, 0, 0}, + /*II_66_0F_3A_42*/ {{0x1a2, 9661}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_42*/ {{0x184, 9670}, 0x0, 87, 1, 0, 0}, + /*II_66_0F_3A_44*/ {{0x1cb, 9680}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_44*/ {{0x1cc, 9691}, 0x0, 87, 1, 0, 0}, + /*II_V_66_0F_3A_4A*/ {{0x189, 9703}, 0x1, 91, 37, 0, 0}, + /*II_V_66_0F_3A_4B*/ {{0x189, 9714}, 0x1, 91, 37, 0, 0}, + /*II_V_66_0F_3A_4C*/ {{0x184, 9725}, 0x0, 87, 35, 0, 0}, + /*II_66_0F_3A_60*/ {{0x1cd, 9736}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_60*/ {{0x163, 9747}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_61*/ {{0x1cd, 9759}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_61*/ {{0x163, 9770}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_62*/ {{0x1cd, 9782}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_62*/ {{0x163, 9793}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_63*/ {{0x1cd, 9805}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_63*/ {{0x163, 9816}, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_DF*/ {{0x1ce, 9828}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_DF*/ {{0x1cf, 9845}, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_71_02*/ {{0x1d2, 6476}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_71_04*/ {{0x1d2, 6735}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_71_06*/ {{0x1d2, 7049}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_02*/ {{0x1d2, 6491}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_04*/ {{0x1d2, 6750}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_06*/ {{0x1d2, 7064}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_02*/ {{0x1d2, 6506}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_03*/ {{0x1d2, 9871}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_06*/ {{0x1d2, 7079}, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_07*/ {{0x1d2, 9888}, 0x0, 1, 0, 0, 0}, + /*II_0F_AE_00*/ {{0x173, 9897}, 0x0, 0, 0, 0, 9905}, + /*II_0F_AE_01*/ {{0x173, 9925}, 0x0, 0, 0, 0, 9934}, + /*II_V_0F_AE_02*/ {{0x1d5, 9974}, 0x40, 0, 0, 0, 0}, + /*II_V_0F_AE_03*/ {{0x1d5, 10003}, 0x40, 0, 0, 0, 0} }; _InstNode InstructionsTree[5688] = { @@ -7570,7 +7570,6 @@ _InstSharedInfo InstSharedInfoTable[474] = { {13, 0, 0, 0, 0, 0, 256}, {28, 0, 2, 0, 0, 0, 258}, {28, 0, 0, 0, 0, 0, 258}, -{11, 0, 0, 0, 0, 0, 262}, {11, 0, 1, 0, 0, 0, 262}, {9, 0, 0, 0, 0, 0, 262}, {28, 0, 0, 255, 0, 0, 33026}, @@ -7592,6 +7591,7 @@ _InstSharedInfo InstSharedInfoTable[474] = { {1, 25, 14, 0, 0, 0, 33024}, {11, 11, 25, 0, 0, 0, 33024}, {11, 14, 25, 0, 0, 0, 33024}, +{11, 0, 0, 0, 0, 0, 262}, {11, 0, 0, 0, 0, 0, 33032}, {11, 0, 0, 1, 0, 0, 256}, {11, 0, 0, 2, 0, 0, 33024}, diff --git a/NativeCore/Dependencies/distorm/src/mnemonics.c b/NativeCore/Dependencies/distorm/src/mnemonics.c index f306a258..91be7a8e 100644 --- a/NativeCore/Dependencies/distorm/src/mnemonics.c +++ b/NativeCore/Dependencies/distorm/src/mnemonics.c @@ -27,32 +27,32 @@ const unsigned char _MNEMONICS[] = "\x03" "cqo\0" "\x08" "call far\0" "\x05" "pushf\0" "\x04" "popf\0" \ "\x04" "sahf\0" "\x04" "lahf\0" "\x04" "movs\0" "\x04" "cmps\0" "\x04" "stos\0" \ "\x04" "lods\0" "\x04" "scas\0" "\x03" "ret\0" "\x03" "les\0" "\x03" "lds\0" \ -"\x05" "enter\0" "\x05" "leave\0" "\x04" "retf\0" "\x05" "int 3\0" \ -"\x03" "int\0" "\x04" "into\0" "\x04" "iret\0" "\x03" "aam\0" "\x03" "aad\0" \ -"\x04" "salc\0" "\x04" "xlat\0" "\x06" "loopnz\0" "\x05" "loopz\0" \ -"\x04" "loop\0" "\x04" "jcxz\0" "\x05" "jecxz\0" "\x05" "jrcxz\0" "\x02" "in\0" \ -"\x03" "out\0" "\x04" "call\0" "\x03" "jmp\0" "\x07" "jmp far\0" "\x04" "int1\0" \ -"\x03" "hlt\0" "\x03" "cmc\0" "\x03" "clc\0" "\x03" "stc\0" "\x03" "cli\0" \ -"\x03" "sti\0" "\x03" "cld\0" "\x03" "std\0" "\x03" "lar\0" "\x03" "lsl\0" \ -"\x07" "syscall\0" "\x04" "clts\0" "\x06" "sysret\0" "\x04" "invd\0" \ -"\x06" "wbinvd\0" "\x03" "ud2\0" "\x05" "femms\0" "\x03" "nop\0" "\x05" "wrmsr\0" \ -"\x05" "rdtsc\0" "\x05" "rdmsr\0" "\x05" "rdpmc\0" "\x08" "sysenter\0" \ -"\x07" "sysexit\0" "\x06" "getsec\0" "\x05" "cmovo\0" "\x06" "cmovno\0" \ -"\x05" "cmovb\0" "\x06" "cmovae\0" "\x05" "cmovz\0" "\x06" "cmovnz\0" \ -"\x06" "cmovbe\0" "\x05" "cmova\0" "\x05" "cmovs\0" "\x06" "cmovns\0" \ -"\x05" "cmovp\0" "\x06" "cmovnp\0" "\x05" "cmovl\0" "\x06" "cmovge\0" \ -"\x06" "cmovle\0" "\x05" "cmovg\0" "\x04" "seto\0" "\x05" "setno\0" \ -"\x04" "setb\0" "\x05" "setae\0" "\x04" "setz\0" "\x05" "setnz\0" "\x05" "setbe\0" \ -"\x04" "seta\0" "\x04" "sets\0" "\x05" "setns\0" "\x04" "setp\0" "\x05" "setnp\0" \ -"\x04" "setl\0" "\x05" "setge\0" "\x05" "setle\0" "\x04" "setg\0" "\x05" "cpuid\0" \ -"\x02" "bt\0" "\x04" "shld\0" "\x03" "rsm\0" "\x03" "bts\0" "\x04" "shrd\0" \ -"\x07" "cmpxchg\0" "\x03" "lss\0" "\x03" "btr\0" "\x03" "lfs\0" "\x03" "lgs\0" \ -"\x05" "movzx\0" "\x03" "btc\0" "\x05" "movsx\0" "\x04" "xadd\0" "\x06" "movnti\0" \ -"\x05" "bswap\0" "\x03" "rol\0" "\x03" "ror\0" "\x03" "rcl\0" "\x03" "rcr\0" \ -"\x03" "shl\0" "\x03" "shr\0" "\x03" "sal\0" "\x03" "sar\0" "\x06" "xabort\0" \ -"\x06" "xbegin\0" "\x04" "fadd\0" "\x04" "fmul\0" "\x04" "fcom\0" "\x05" "fcomp\0" \ -"\x04" "fsub\0" "\x05" "fsubr\0" "\x04" "fdiv\0" "\x05" "fdivr\0" "\x03" "fld\0" \ -"\x03" "fst\0" "\x04" "fstp\0" "\x06" "fldenv\0" "\x05" "fldcw\0" "\x04" "fxch\0" \ +"\x05" "enter\0" "\x05" "leave\0" "\x04" "retf\0" "\x04" "int3\0" "\x03" "int\0" \ +"\x04" "into\0" "\x04" "iret\0" "\x03" "aam\0" "\x03" "aad\0" "\x04" "salc\0" \ +"\x04" "xlat\0" "\x06" "loopnz\0" "\x05" "loopz\0" "\x04" "loop\0" \ +"\x04" "jcxz\0" "\x05" "jecxz\0" "\x05" "jrcxz\0" "\x02" "in\0" "\x03" "out\0" \ +"\x04" "call\0" "\x03" "jmp\0" "\x07" "jmp far\0" "\x04" "int1\0" "\x03" "hlt\0" \ +"\x03" "cmc\0" "\x03" "clc\0" "\x03" "stc\0" "\x03" "cli\0" "\x03" "sti\0" \ +"\x03" "cld\0" "\x03" "std\0" "\x03" "lar\0" "\x03" "lsl\0" "\x07" "syscall\0" \ +"\x04" "clts\0" "\x06" "sysret\0" "\x04" "invd\0" "\x06" "wbinvd\0" \ +"\x03" "ud2\0" "\x05" "femms\0" "\x03" "nop\0" "\x05" "wrmsr\0" "\x05" "rdtsc\0" \ +"\x05" "rdmsr\0" "\x05" "rdpmc\0" "\x08" "sysenter\0" "\x07" "sysexit\0" \ +"\x06" "getsec\0" "\x05" "cmovo\0" "\x06" "cmovno\0" "\x05" "cmovb\0" \ +"\x06" "cmovae\0" "\x05" "cmovz\0" "\x06" "cmovnz\0" "\x06" "cmovbe\0" \ +"\x05" "cmova\0" "\x05" "cmovs\0" "\x06" "cmovns\0" "\x05" "cmovp\0" \ +"\x06" "cmovnp\0" "\x05" "cmovl\0" "\x06" "cmovge\0" "\x06" "cmovle\0" \ +"\x05" "cmovg\0" "\x04" "seto\0" "\x05" "setno\0" "\x04" "setb\0" "\x05" "setae\0" \ +"\x04" "setz\0" "\x05" "setnz\0" "\x05" "setbe\0" "\x04" "seta\0" "\x04" "sets\0" \ +"\x05" "setns\0" "\x04" "setp\0" "\x05" "setnp\0" "\x04" "setl\0" "\x05" "setge\0" \ +"\x05" "setle\0" "\x04" "setg\0" "\x05" "cpuid\0" "\x02" "bt\0" "\x04" "shld\0" \ +"\x03" "rsm\0" "\x03" "bts\0" "\x04" "shrd\0" "\x07" "cmpxchg\0" "\x03" "lss\0" \ +"\x03" "btr\0" "\x03" "lfs\0" "\x03" "lgs\0" "\x05" "movzx\0" "\x03" "btc\0" \ +"\x05" "movsx\0" "\x04" "xadd\0" "\x06" "movnti\0" "\x05" "bswap\0" \ +"\x03" "rol\0" "\x03" "ror\0" "\x03" "rcl\0" "\x03" "rcr\0" "\x03" "shl\0" \ +"\x03" "shr\0" "\x03" "sal\0" "\x03" "sar\0" "\x06" "xabort\0" "\x06" "xbegin\0" \ +"\x04" "fadd\0" "\x04" "fmul\0" "\x04" "fcom\0" "\x05" "fcomp\0" "\x04" "fsub\0" \ +"\x05" "fsubr\0" "\x04" "fdiv\0" "\x05" "fdivr\0" "\x03" "fld\0" "\x03" "fst\0" \ +"\x04" "fstp\0" "\x06" "fldenv\0" "\x05" "fldcw\0" "\x04" "fxch\0" \ "\x04" "fnop\0" "\x04" "fchs\0" "\x04" "fabs\0" "\x04" "ftst\0" "\x04" "fxam\0" \ "\x04" "fld1\0" "\x06" "fldl2t\0" "\x06" "fldl2e\0" "\x05" "fldpi\0" \ "\x06" "fldlg2\0" "\x06" "fldln2\0" "\x04" "fldz\0" "\x05" "f2xm1\0" \ diff --git a/NativeCore/Dependencies/distorm/src/wstring.c b/NativeCore/Dependencies/distorm/src/wstring.c deleted file mode 100644 index 083200b4..00000000 --- a/NativeCore/Dependencies/distorm/src/wstring.c +++ /dev/null @@ -1,47 +0,0 @@ -/* -wstring.c - -diStorm3 - Powerful disassembler for X86/AMD64 -http://ragestorm.net/distorm/ -distorm at gmail dot com -Copyright (C) 2003-2018 Gil Dabah -This library is licensed under the BSD license. See the file COPYING. -*/ - - -#include "wstring.h" - -#ifndef DISTORM_LIGHT - -void strclear_WS(_WString* s) -{ - s->p[0] = '\0'; - s->length = 0; -} - -void chrcat_WS(_WString* s, uint8_t ch) -{ - s->p[s->length] = ch; - s->p[s->length + 1] = '\0'; - s->length += 1; -} - -void strcpylen_WS(_WString* s, const int8_t* buf, unsigned int len) -{ - s->length = len; - memcpy((int8_t*)s->p, buf, len + 1); -} - -void strcatlen_WS(_WString* s, const int8_t* buf, unsigned int len) -{ - memcpy((int8_t*)&s->p[s->length], buf, len + 1); - s->length += len; -} - -void strcat_WS(_WString* s, const _WString* s2) -{ - memcpy((int8_t*)&s->p[s->length], s2->p, s2->length + 1); - s->length += s2->length; -} - -#endif /* DISTORM_LIGHT */ From 2e48bce5e75a7f7ae26eeab50899b94c6dd39251 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Fri, 7 Oct 2022 00:33:42 +0200 Subject: [PATCH 14/17] Add support for x86 and x64 in Makefiles. --- Makefile | 14 +- NativeCore/Shared/DistormHelper.cpp | 6 +- NativeCore/Unix/Makefile | 358 +++++++++++++++++------- NativeCore/Unix/NativeCore.Unix.vcxproj | 2 - NativeCore/Windows/NativeCore.vcxproj | 4 +- README.md | 15 +- ReClass.NET/Memory/UnionDataType.cs | 12 +- 7 files changed, 285 insertions(+), 126 deletions(-) diff --git a/Makefile b/Makefile index 10ab0620..750027d5 100644 --- a/Makefile +++ b/Makefile @@ -37,12 +37,12 @@ docker_all: docker_debug: cd ReClass.NET_Launcher && make docker_debug cd ReClass.NET && make docker_debug - docker container run --rm -v ${PWD}:/build:z -w /build -u $(shell id -u ${USER}):$(shell id -g ${USER}) gcc:latest bash -c "cd NativeCore/Unix && make debug" + docker container run --rm -v ${PWD}:/build:z -w /build -u $(shell id -u ${USER}):$(shell id -g ${USER}) gcc_multilib:latest bash -c "cd NativeCore/Unix && make debug" docker_release: cd ReClass.NET_Launcher && make docker_release cd ReClass.NET && make docker_release - docker container run --rm -v ${PWD}:/build:z -w /build -u $(shell id -u ${USER}):$(shell id -g ${USER}) gcc:latest bash -c "cd NativeCore/Unix && make release" + docker container run --rm -v ${PWD}:/build:z -w /build -u $(shell id -u ${USER}):$(shell id -g ${USER}) gcc_multilib:latest bash -c "cd NativeCore/Unix && make release" podman_all: make podman_debug @@ -52,19 +52,21 @@ podman_all: podman_debug: cd ReClass.NET_Launcher && make podman_debug cd ReClass.NET && make podman_debug - podman container run --rm -v ${PWD}:/build:z -w /build gcc:latest bash -c "cd NativeCore/Unix && make debug" + podman container run --rm -v ${PWD}:/build:z -w /build gcc_multilib:latest bash -c "cd NativeCore/Unix && make debug" podman_release: cd ReClass.NET_Launcher && make podman_release cd ReClass.NET && make podman_release - podman container run --rm -v ${PWD}:/build:z -w /build gcc:latest bash -c "cd NativeCore/Unix && make release" + podman container run --rm -v ${PWD}:/build:z -w /build gcc_multilib:latest bash -c "cd NativeCore/Unix && make release" dist: test -d build || mkdir -p build cp -r ReClass.NET/bin/* build/ cp -r ReClass.NET_Launcher/bin/* build/ - cp NativeCore/Unix/build/debug/NativeCore.so build/Debug/x64 - cp NativeCore/Unix/build/release/NativeCore.so build/Release/x64 + cp NativeCore/Unix/build/debug/x86/NativeCore.so build/Debug/x86 + cp NativeCore/Unix/build/debug/x64/NativeCore.so build/Debug/x64 + cp NativeCore/Unix/build/release/x86/NativeCore.so build/Release/x86 + cp NativeCore/Unix/build/release/x64/NativeCore.so build/Release/x64 test -d build/Debug/x86/Plugins || mkdir build/Debug/x86/Plugins test -d build/Debug/x64/Plugins || mkdir build/Debug/x64/Plugins test -d build/Release/x86/Plugins || mkdir build/Release/x86/Plugins diff --git a/NativeCore/Shared/DistormHelper.cpp b/NativeCore/Shared/DistormHelper.cpp index 9d8d9e85..092b1670 100644 --- a/NativeCore/Shared/DistormHelper.cpp +++ b/NativeCore/Shared/DistormHelper.cpp @@ -66,10 +66,10 @@ _CodeInfo CreateCodeInfo(const uint8_t* address, int length, const _OffsetType v info.codeLen = length; info.features = DF_NONE; -#ifdef RECLASSNET32 - info.dt = Decode32Bits; -#else +#ifdef RECLASSNET64 info.dt = Decode64Bits; +#else + info.dt = Decode32Bits; #endif return info; diff --git a/NativeCore/Unix/Makefile b/NativeCore/Unix/Makefile index 12c8b33b..f18ff1fb 100644 --- a/NativeCore/Unix/Makefile +++ b/NativeCore/Unix/Makefile @@ -7,192 +7,338 @@ LD = g++ WINDRES = windres INC = -I../Dependencies/distorm/include -CFLAGS = -Wall -fPIC -DRECLASSNET64=1 +CFLAGS32 = -Wall -fPIC -m32 +CFLAGS64 = -Wall -fPIC -m64 -DRECLASSNET64=1 RESINC = LIBDIR = LIB = -lstdc++fs -lstdc++ -LDFLAGS = -shared -Wl,--no-undefined +LDFLAGS32 = -m32 -shared -Wl,--no-undefined +LDFLAGS64 = -m64 -shared -Wl,--no-undefined INC_DEBUG = $(INC) -CFLAGS_DEBUG = $(CFLAGS) -g +CFLAGS32_DEBUG = $(CFLAGS32) -g +CFLAGS64_DEBUG = $(CFLAGS64) -g RESINC_DEBUG = $(RESINC) RCFLAGS_DEBUG = $(RCFLAGS) LIBDIR_DEBUG = $(LIBDIR) LIB_DEBUG = $(LIB) -LDFLAGS_DEBUG = $(LDFLAGS) -OBJDIR_DEBUG = obj/debug +LDFLAGS32_DEBUG = $(LDFLAGS32) +LDFLAGS64_DEBUG = $(LDFLAGS64) +OBJDIR32_DEBUG = obj/debug/x86 +OBJDIR64_DEBUG = obj/debug/x64 DEP_DEBUG = -OUT_DEBUG = build/debug/NativeCore.so +OUT32_DEBUG = build/debug/x86/NativeCore.so +OUT64_DEBUG = build/debug/x64/NativeCore.so INC_RELEASE = $(INC) -CFLAGS_RELEASE = $(CFLAGS) -O2 +CFLAGS32_RELEASE = $(CFLAGS32) -O2 +CFLAGS64_RELEASE = $(CFLAGS64) -O2 RESINC_RELEASE = $(RESINC) RCFLAGS_RELEASE = $(RCFLAGS) LIBDIR_RELEASE = $(LIBDIR) LIB_RELEASE = $(LIB) -LDFLAGS_RELEASE = $(LDFLAGS) -s -OBJDIR_RELEASE = obj/release +LDFLAGS32_RELEASE = $(LDFLAGS32) -s +LDFLAGS64_RELEASE = $(LDFLAGS64) -s +OBJDIR32_RELEASE = obj/release/x86 +OBJDIR64_RELEASE = obj/release/x64 DEP_RELEASE = -OUT_RELEASE = build/release/NativeCore.so +OUT32_RELEASE = build/release/x86/NativeCore.so +OUT64_RELEASE = build/release/x64/NativeCore.so -OBJ_DEBUG = $(OBJDIR_DEBUG)/WriteRemoteMemory.o $(OBJDIR_DEBUG)/ReadRemoteMemory.o $(OBJDIR_DEBUG)/OpenRemoteProcess.o $(OBJDIR_DEBUG)/IsProcessValid.o $(OBJDIR_DEBUG)/Input.o $(OBJDIR_DEBUG)/EnumerateRemoteSectionsAndModules.o $(OBJDIR_DEBUG)/EnumerateProcesses.o $(OBJDIR_DEBUG)/DisassembleCode.o $(OBJDIR_DEBUG)/DistormHelper.o $(OBJDIR_DEBUG)/Debugger.o $(OBJDIR_DEBUG)/ControlRemoteProcess.o $(OBJDIR_DEBUG)/CloseRemoteProcess.o $(OBJDIR_DEBUG)/decoder.o $(OBJDIR_DEBUG)/distorm.o $(OBJDIR_DEBUG)/instructions.o $(OBJDIR_DEBUG)/insts.o $(OBJDIR_DEBUG)/mnemonics.o $(OBJDIR_DEBUG)/operands.o $(OBJDIR_DEBUG)/prefix.o $(OBJDIR_DEBUG)/textdefs.o +OBJ32_DEBUG = $(OBJDIR32_DEBUG)/WriteRemoteMemory.o $(OBJDIR32_DEBUG)/ReadRemoteMemory.o $(OBJDIR32_DEBUG)/OpenRemoteProcess.o $(OBJDIR32_DEBUG)/IsProcessValid.o $(OBJDIR32_DEBUG)/Input.o $(OBJDIR32_DEBUG)/EnumerateRemoteSectionsAndModules.o $(OBJDIR32_DEBUG)/EnumerateProcesses.o $(OBJDIR32_DEBUG)/DisassembleCode.o $(OBJDIR32_DEBUG)/DistormHelper.o $(OBJDIR32_DEBUG)/Debugger.o $(OBJDIR32_DEBUG)/ControlRemoteProcess.o $(OBJDIR32_DEBUG)/CloseRemoteProcess.o $(OBJDIR32_DEBUG)/decoder.o $(OBJDIR32_DEBUG)/distorm.o $(OBJDIR32_DEBUG)/instructions.o $(OBJDIR32_DEBUG)/insts.o $(OBJDIR32_DEBUG)/mnemonics.o $(OBJDIR32_DEBUG)/operands.o $(OBJDIR32_DEBUG)/prefix.o $(OBJDIR32_DEBUG)/textdefs.o +OBJ64_DEBUG = $(OBJDIR64_DEBUG)/WriteRemoteMemory.o $(OBJDIR64_DEBUG)/ReadRemoteMemory.o $(OBJDIR64_DEBUG)/OpenRemoteProcess.o $(OBJDIR64_DEBUG)/IsProcessValid.o $(OBJDIR64_DEBUG)/Input.o $(OBJDIR64_DEBUG)/EnumerateRemoteSectionsAndModules.o $(OBJDIR64_DEBUG)/EnumerateProcesses.o $(OBJDIR64_DEBUG)/DisassembleCode.o $(OBJDIR64_DEBUG)/DistormHelper.o $(OBJDIR64_DEBUG)/Debugger.o $(OBJDIR64_DEBUG)/ControlRemoteProcess.o $(OBJDIR64_DEBUG)/CloseRemoteProcess.o $(OBJDIR64_DEBUG)/decoder.o $(OBJDIR64_DEBUG)/distorm.o $(OBJDIR64_DEBUG)/instructions.o $(OBJDIR64_DEBUG)/insts.o $(OBJDIR64_DEBUG)/mnemonics.o $(OBJDIR64_DEBUG)/operands.o $(OBJDIR64_DEBUG)/prefix.o $(OBJDIR64_DEBUG)/textdefs.o -OBJ_RELEASE = $(OBJDIR_RELEASE)/WriteRemoteMemory.o $(OBJDIR_RELEASE)/ReadRemoteMemory.o $(OBJDIR_RELEASE)/OpenRemoteProcess.o $(OBJDIR_RELEASE)/IsProcessValid.o $(OBJDIR_RELEASE)/Input.o $(OBJDIR_RELEASE)/EnumerateRemoteSectionsAndModules.o $(OBJDIR_RELEASE)/EnumerateProcesses.o $(OBJDIR_RELEASE)/DisassembleCode.o $(OBJDIR_RELEASE)/DistormHelper.o $(OBJDIR_RELEASE)/Debugger.o $(OBJDIR_RELEASE)/ControlRemoteProcess.o $(OBJDIR_RELEASE)/CloseRemoteProcess.o $(OBJDIR_RELEASE)/decoder.o $(OBJDIR_RELEASE)/distorm.o $(OBJDIR_RELEASE)/instructions.o $(OBJDIR_RELEASE)/insts.o $(OBJDIR_RELEASE)/mnemonics.o $(OBJDIR_RELEASE)/operands.o $(OBJDIR_RELEASE)/prefix.o $(OBJDIR_RELEASE)/textdefs.o +OBJ32_RELEASE = $(OBJDIR32_RELEASE)/WriteRemoteMemory.o $(OBJDIR32_RELEASE)/ReadRemoteMemory.o $(OBJDIR32_RELEASE)/OpenRemoteProcess.o $(OBJDIR32_RELEASE)/IsProcessValid.o $(OBJDIR32_RELEASE)/Input.o $(OBJDIR32_RELEASE)/EnumerateRemoteSectionsAndModules.o $(OBJDIR32_RELEASE)/EnumerateProcesses.o $(OBJDIR32_RELEASE)/DisassembleCode.o $(OBJDIR32_RELEASE)/DistormHelper.o $(OBJDIR32_RELEASE)/Debugger.o $(OBJDIR32_RELEASE)/ControlRemoteProcess.o $(OBJDIR32_RELEASE)/CloseRemoteProcess.o $(OBJDIR32_RELEASE)/decoder.o $(OBJDIR32_RELEASE)/distorm.o $(OBJDIR32_RELEASE)/instructions.o $(OBJDIR32_RELEASE)/insts.o $(OBJDIR32_RELEASE)/mnemonics.o $(OBJDIR32_RELEASE)/operands.o $(OBJDIR32_RELEASE)/prefix.o $(OBJDIR32_RELEASE)/textdefs.o +OBJ64_RELEASE = $(OBJDIR64_RELEASE)/WriteRemoteMemory.o $(OBJDIR64_RELEASE)/ReadRemoteMemory.o $(OBJDIR64_RELEASE)/OpenRemoteProcess.o $(OBJDIR64_RELEASE)/IsProcessValid.o $(OBJDIR64_RELEASE)/Input.o $(OBJDIR64_RELEASE)/EnumerateRemoteSectionsAndModules.o $(OBJDIR64_RELEASE)/EnumerateProcesses.o $(OBJDIR64_RELEASE)/DisassembleCode.o $(OBJDIR64_RELEASE)/DistormHelper.o $(OBJDIR64_RELEASE)/Debugger.o $(OBJDIR64_RELEASE)/ControlRemoteProcess.o $(OBJDIR64_RELEASE)/CloseRemoteProcess.o $(OBJDIR64_RELEASE)/decoder.o $(OBJDIR64_RELEASE)/distorm.o $(OBJDIR64_RELEASE)/instructions.o $(OBJDIR64_RELEASE)/insts.o $(OBJDIR64_RELEASE)/mnemonics.o $(OBJDIR64_RELEASE)/operands.o $(OBJDIR64_RELEASE)/prefix.o $(OBJDIR64_RELEASE)/textdefs.o all: debug release clean: clean_debug clean_release before_debug: - test -d build/debug || mkdir -p build/debug - test -d $(OBJDIR_DEBUG) || mkdir -p $(OBJDIR_DEBUG) + test -d build/debug/x86 || mkdir -p build/debug/x86 + test -d build/debug/x64 || mkdir -p build/debug/x64 + test -d $(OBJDIR32_DEBUG) || mkdir -p $(OBJDIR32_DEBUG) + test -d $(OBJDIR64_DEBUG) || mkdir -p $(OBJDIR64_DEBUG) after_debug: -debug: before_debug out_debug after_debug +debug: before_debug out_debug32 out_debug64 after_debug -out_debug: before_debug $(OBJ_DEBUG) $(DEP_DEBUG) - $(CXX) $(LIBDIR_DEBUG) -o $(OUT_DEBUG) $(OBJ_DEBUG) $(LDFLAGS_DEBUG) $(LIB_DEBUG) +out_debug32: before_debug $(OBJ32_DEBUG) $(DEP_DEBUG) + $(CXX) $(LIBDIR_DEBUG) -o $(OUT32_DEBUG) $(OBJ32_DEBUG) $(LDFLAGS32_DEBUG) $(LIB_DEBUG) -$(OBJDIR_DEBUG)/WriteRemoteMemory.o: WriteRemoteMemory.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c WriteRemoteMemory.cpp -o $(OBJDIR_DEBUG)/WriteRemoteMemory.o +$(OBJDIR32_DEBUG)/WriteRemoteMemory.o: WriteRemoteMemory.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c WriteRemoteMemory.cpp -o $(OBJDIR32_DEBUG)/WriteRemoteMemory.o -$(OBJDIR_DEBUG)/ReadRemoteMemory.o: ReadRemoteMemory.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ReadRemoteMemory.cpp -o $(OBJDIR_DEBUG)/ReadRemoteMemory.o +$(OBJDIR32_DEBUG)/ReadRemoteMemory.o: ReadRemoteMemory.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ReadRemoteMemory.cpp -o $(OBJDIR32_DEBUG)/ReadRemoteMemory.o -$(OBJDIR_DEBUG)/OpenRemoteProcess.o: OpenRemoteProcess.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c OpenRemoteProcess.cpp -o $(OBJDIR_DEBUG)/OpenRemoteProcess.o +$(OBJDIR32_DEBUG)/OpenRemoteProcess.o: OpenRemoteProcess.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c OpenRemoteProcess.cpp -o $(OBJDIR32_DEBUG)/OpenRemoteProcess.o -$(OBJDIR_DEBUG)/IsProcessValid.o: IsProcessValid.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c IsProcessValid.cpp -o $(OBJDIR_DEBUG)/IsProcessValid.o +$(OBJDIR32_DEBUG)/IsProcessValid.o: IsProcessValid.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c IsProcessValid.cpp -o $(OBJDIR32_DEBUG)/IsProcessValid.o -$(OBJDIR_DEBUG)/Input.o: Input.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c Input.cpp -o $(OBJDIR_DEBUG)/Input.o +$(OBJDIR32_DEBUG)/Input.o: Input.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c Input.cpp -o $(OBJDIR32_DEBUG)/Input.o -$(OBJDIR_DEBUG)/EnumerateRemoteSectionsAndModules.o: EnumerateRemoteSectionsAndModules.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c EnumerateRemoteSectionsAndModules.cpp -o $(OBJDIR_DEBUG)/EnumerateRemoteSectionsAndModules.o +$(OBJDIR32_DEBUG)/EnumerateRemoteSectionsAndModules.o: EnumerateRemoteSectionsAndModules.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c EnumerateRemoteSectionsAndModules.cpp -o $(OBJDIR32_DEBUG)/EnumerateRemoteSectionsAndModules.o -$(OBJDIR_DEBUG)/EnumerateProcesses.o: EnumerateProcesses.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c EnumerateProcesses.cpp -o $(OBJDIR_DEBUG)/EnumerateProcesses.o +$(OBJDIR32_DEBUG)/EnumerateProcesses.o: EnumerateProcesses.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c EnumerateProcesses.cpp -o $(OBJDIR32_DEBUG)/EnumerateProcesses.o -$(OBJDIR_DEBUG)/DisassembleCode.o: DisassembleCode.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c DisassembleCode.cpp -o $(OBJDIR_DEBUG)/DisassembleCode.o +$(OBJDIR32_DEBUG)/DisassembleCode.o: DisassembleCode.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c DisassembleCode.cpp -o $(OBJDIR32_DEBUG)/DisassembleCode.o -$(OBJDIR_DEBUG)/DistormHelper.o: ../Shared/DistormHelper.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Shared/DistormHelper.cpp -o $(OBJDIR_DEBUG)/DistormHelper.o +$(OBJDIR32_DEBUG)/DistormHelper.o: ../Shared/DistormHelper.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Shared/DistormHelper.cpp -o $(OBJDIR32_DEBUG)/DistormHelper.o -$(OBJDIR_DEBUG)/Debugger.o: Debugger.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c Debugger.cpp -o $(OBJDIR_DEBUG)/Debugger.o +$(OBJDIR32_DEBUG)/Debugger.o: Debugger.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c Debugger.cpp -o $(OBJDIR32_DEBUG)/Debugger.o -$(OBJDIR_DEBUG)/ControlRemoteProcess.o: ControlRemoteProcess.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ControlRemoteProcess.cpp -o $(OBJDIR_DEBUG)/ControlRemoteProcess.o +$(OBJDIR32_DEBUG)/ControlRemoteProcess.o: ControlRemoteProcess.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ControlRemoteProcess.cpp -o $(OBJDIR32_DEBUG)/ControlRemoteProcess.o -$(OBJDIR_DEBUG)/CloseRemoteProcess.o: CloseRemoteProcess.cpp - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c CloseRemoteProcess.cpp -o $(OBJDIR_DEBUG)/CloseRemoteProcess.o +$(OBJDIR32_DEBUG)/CloseRemoteProcess.o: CloseRemoteProcess.cpp + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c CloseRemoteProcess.cpp -o $(OBJDIR32_DEBUG)/CloseRemoteProcess.o -$(OBJDIR_DEBUG)/decoder.o: ../Dependencies/distorm/src/decoder.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR_DEBUG)/decoder.o +$(OBJDIR32_DEBUG)/decoder.o: ../Dependencies/distorm/src/decoder.c + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR32_DEBUG)/decoder.o -$(OBJDIR_DEBUG)/distorm.o: ../Dependencies/distorm/src/distorm.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR_DEBUG)/distorm.o +$(OBJDIR32_DEBUG)/distorm.o: ../Dependencies/distorm/src/distorm.c + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR32_DEBUG)/distorm.o -$(OBJDIR_DEBUG)/instructions.o: ../Dependencies/distorm/src/instructions.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR_DEBUG)/instructions.o +$(OBJDIR32_DEBUG)/instructions.o: ../Dependencies/distorm/src/instructions.c + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR32_DEBUG)/instructions.o -$(OBJDIR_DEBUG)/insts.o: ../Dependencies/distorm/src/insts.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR_DEBUG)/insts.o +$(OBJDIR32_DEBUG)/insts.o: ../Dependencies/distorm/src/insts.c + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR32_DEBUG)/insts.o -$(OBJDIR_DEBUG)/mnemonics.o: ../Dependencies/distorm/src/mnemonics.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR_DEBUG)/mnemonics.o +$(OBJDIR32_DEBUG)/mnemonics.o: ../Dependencies/distorm/src/mnemonics.c + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR32_DEBUG)/mnemonics.o -$(OBJDIR_DEBUG)/operands.o: ../Dependencies/distorm/src/operands.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR_DEBUG)/operands.o +$(OBJDIR32_DEBUG)/operands.o: ../Dependencies/distorm/src/operands.c + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR32_DEBUG)/operands.o -$(OBJDIR_DEBUG)/prefix.o: ../Dependencies/distorm/src/prefix.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR_DEBUG)/prefix.o +$(OBJDIR32_DEBUG)/prefix.o: ../Dependencies/distorm/src/prefix.c + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR32_DEBUG)/prefix.o -$(OBJDIR_DEBUG)/textdefs.o: ../Dependencies/distorm/src/textdefs.c - $(CXX) $(CFLAGS_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR_DEBUG)/textdefs.o +$(OBJDIR32_DEBUG)/textdefs.o: ../Dependencies/distorm/src/textdefs.c + $(CXX) $(CFLAGS32_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR32_DEBUG)/textdefs.o + +out_debug64: before_debug $(OBJ64_DEBUG) $(DEP_DEBUG) + $(CXX) $(LIBDIR_DEBUG) -o $(OUT64_DEBUG) $(OBJ64_DEBUG) $(LDFLAGS64_DEBUG) $(LIB_DEBUG) + +$(OBJDIR64_DEBUG)/WriteRemoteMemory.o: WriteRemoteMemory.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c WriteRemoteMemory.cpp -o $(OBJDIR64_DEBUG)/WriteRemoteMemory.o + +$(OBJDIR64_DEBUG)/ReadRemoteMemory.o: ReadRemoteMemory.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ReadRemoteMemory.cpp -o $(OBJDIR64_DEBUG)/ReadRemoteMemory.o + +$(OBJDIR64_DEBUG)/OpenRemoteProcess.o: OpenRemoteProcess.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c OpenRemoteProcess.cpp -o $(OBJDIR64_DEBUG)/OpenRemoteProcess.o + +$(OBJDIR64_DEBUG)/IsProcessValid.o: IsProcessValid.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c IsProcessValid.cpp -o $(OBJDIR64_DEBUG)/IsProcessValid.o + +$(OBJDIR64_DEBUG)/Input.o: Input.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c Input.cpp -o $(OBJDIR64_DEBUG)/Input.o + +$(OBJDIR64_DEBUG)/EnumerateRemoteSectionsAndModules.o: EnumerateRemoteSectionsAndModules.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c EnumerateRemoteSectionsAndModules.cpp -o $(OBJDIR64_DEBUG)/EnumerateRemoteSectionsAndModules.o + +$(OBJDIR64_DEBUG)/EnumerateProcesses.o: EnumerateProcesses.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c EnumerateProcesses.cpp -o $(OBJDIR64_DEBUG)/EnumerateProcesses.o + +$(OBJDIR64_DEBUG)/DisassembleCode.o: DisassembleCode.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c DisassembleCode.cpp -o $(OBJDIR64_DEBUG)/DisassembleCode.o + +$(OBJDIR64_DEBUG)/DistormHelper.o: ../Shared/DistormHelper.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Shared/DistormHelper.cpp -o $(OBJDIR64_DEBUG)/DistormHelper.o + +$(OBJDIR64_DEBUG)/Debugger.o: Debugger.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c Debugger.cpp -o $(OBJDIR64_DEBUG)/Debugger.o + +$(OBJDIR64_DEBUG)/ControlRemoteProcess.o: ControlRemoteProcess.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ControlRemoteProcess.cpp -o $(OBJDIR64_DEBUG)/ControlRemoteProcess.o + +$(OBJDIR64_DEBUG)/CloseRemoteProcess.o: CloseRemoteProcess.cpp + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c CloseRemoteProcess.cpp -o $(OBJDIR64_DEBUG)/CloseRemoteProcess.o + +$(OBJDIR64_DEBUG)/decoder.o: ../Dependencies/distorm/src/decoder.c + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR64_DEBUG)/decoder.o + +$(OBJDIR64_DEBUG)/distorm.o: ../Dependencies/distorm/src/distorm.c + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR64_DEBUG)/distorm.o + +$(OBJDIR64_DEBUG)/instructions.o: ../Dependencies/distorm/src/instructions.c + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR64_DEBUG)/instructions.o + +$(OBJDIR64_DEBUG)/insts.o: ../Dependencies/distorm/src/insts.c + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR64_DEBUG)/insts.o + +$(OBJDIR64_DEBUG)/mnemonics.o: ../Dependencies/distorm/src/mnemonics.c + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR64_DEBUG)/mnemonics.o + +$(OBJDIR64_DEBUG)/operands.o: ../Dependencies/distorm/src/operands.c + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR64_DEBUG)/operands.o + +$(OBJDIR64_DEBUG)/prefix.o: ../Dependencies/distorm/src/prefix.c + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR64_DEBUG)/prefix.o + +$(OBJDIR64_DEBUG)/textdefs.o: ../Dependencies/distorm/src/textdefs.c + $(CXX) $(CFLAGS64_DEBUG) $(INC_DEBUG) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR64_DEBUG)/textdefs.o clean_debug: - rm -f $(OBJ_DEBUG) $(OUT_DEBUG) + rm -f $(OBJ32_DEBUG) $(OUT32_DEBUG) + rm -f $(OBJ64_DEBUG) $(OUT64_DEBUG) rm -rf build/debug - rm -rf $(OBJDIR_DEBUG) + rm -rf $(OBJDIR32_DEBUG) + rm -rf $(OBJDIR64_DEBUG) before_release: - test -d build/release || mkdir -p build/release - test -d $(OBJDIR_RELEASE) || mkdir -p $(OBJDIR_RELEASE) + test -d build/release/x86 || mkdir -p build/release/x86 + test -d build/release/x64 || mkdir -p build/release/x64 + test -d $(OBJDIR32_RELEASE) || mkdir -p $(OBJDIR32_RELEASE) + test -d $(OBJDIR64_RELEASE) || mkdir -p $(OBJDIR64_RELEASE) after_release: -release: before_release out_release after_release +release: before_release out_release32 out_release64 after_release + +out_release32: before_release $(OBJ32_RELEASE) $(DEP_RELEASE) + $(CXX) $(LIBDIR_RELEASE) -o $(OUT32_RELEASE) $(OBJ32_RELEASE) $(LDFLAGS32_RELEASE) $(LIB_RELEASE) + +$(OBJDIR32_RELEASE)/WriteRemoteMemory.o: WriteRemoteMemory.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c WriteRemoteMemory.cpp -o $(OBJDIR32_RELEASE)/WriteRemoteMemory.o + +$(OBJDIR32_RELEASE)/ReadRemoteMemory.o: ReadRemoteMemory.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ReadRemoteMemory.cpp -o $(OBJDIR32_RELEASE)/ReadRemoteMemory.o + +$(OBJDIR32_RELEASE)/OpenRemoteProcess.o: OpenRemoteProcess.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c OpenRemoteProcess.cpp -o $(OBJDIR32_RELEASE)/OpenRemoteProcess.o + +$(OBJDIR32_RELEASE)/IsProcessValid.o: IsProcessValid.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c IsProcessValid.cpp -o $(OBJDIR32_RELEASE)/IsProcessValid.o + +$(OBJDIR32_RELEASE)/Input.o: Input.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c Input.cpp -o $(OBJDIR32_RELEASE)/Input.o + +$(OBJDIR32_RELEASE)/EnumerateRemoteSectionsAndModules.o: EnumerateRemoteSectionsAndModules.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c EnumerateRemoteSectionsAndModules.cpp -o $(OBJDIR32_RELEASE)/EnumerateRemoteSectionsAndModules.o + +$(OBJDIR32_RELEASE)/EnumerateProcesses.o: EnumerateProcesses.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c EnumerateProcesses.cpp -o $(OBJDIR32_RELEASE)/EnumerateProcesses.o + +$(OBJDIR32_RELEASE)/DisassembleCode.o: DisassembleCode.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c DisassembleCode.cpp -o $(OBJDIR32_RELEASE)/DisassembleCode.o + +$(OBJDIR32_RELEASE)/DistormHelper.o: ../Shared/DistormHelper.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Shared/DistormHelper.cpp -o $(OBJDIR32_RELEASE)/DistormHelper.o + +$(OBJDIR32_RELEASE)/Debugger.o: Debugger.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c Debugger.cpp -o $(OBJDIR32_RELEASE)/Debugger.o + +$(OBJDIR32_RELEASE)/ControlRemoteProcess.o: ControlRemoteProcess.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ControlRemoteProcess.cpp -o $(OBJDIR32_RELEASE)/ControlRemoteProcess.o + +$(OBJDIR32_RELEASE)/CloseRemoteProcess.o: CloseRemoteProcess.cpp + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c CloseRemoteProcess.cpp -o $(OBJDIR32_RELEASE)/CloseRemoteProcess.o + +$(OBJDIR32_RELEASE)/decoder.o: ../Dependencies/distorm/src/decoder.c + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR32_RELEASE)/decoder.o + +$(OBJDIR32_RELEASE)/distorm.o: ../Dependencies/distorm/src/distorm.c + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR32_RELEASE)/distorm.o + +$(OBJDIR32_RELEASE)/instructions.o: ../Dependencies/distorm/src/instructions.c + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR32_RELEASE)/instructions.o + +$(OBJDIR32_RELEASE)/insts.o: ../Dependencies/distorm/src/insts.c + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR32_RELEASE)/insts.o + +$(OBJDIR32_RELEASE)/mnemonics.o: ../Dependencies/distorm/src/mnemonics.c + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR32_RELEASE)/mnemonics.o + +$(OBJDIR32_RELEASE)/operands.o: ../Dependencies/distorm/src/operands.c + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR32_RELEASE)/operands.o + +$(OBJDIR32_RELEASE)/prefix.o: ../Dependencies/distorm/src/prefix.c + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR32_RELEASE)/prefix.o + +$(OBJDIR32_RELEASE)/textdefs.o: ../Dependencies/distorm/src/textdefs.c + $(CXX) $(CFLAGS32_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR32_RELEASE)/textdefs.o -out_release: before_release $(OBJ_RELEASE) $(DEP_RELEASE) - $(LD) $(LIBDIR_RELEASE) -o $(OUT_RELEASE) $(OBJ_RELEASE) $(LDFLAGS_RELEASE) $(LIB_RELEASE) +out_release64: before_release $(OBJ64_RELEASE) $(DEP_RELEASE) + $(CXX) $(LIBDIR_RELEASE) -o $(OUT64_RELEASE) $(OBJ64_RELEASE) $(LDFLAGS64_RELEASE) $(LIB_RELEASE) -$(OBJDIR_RELEASE)/WriteRemoteMemory.o: WriteRemoteMemory.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c WriteRemoteMemory.cpp -o $(OBJDIR_RELEASE)/WriteRemoteMemory.o +$(OBJDIR64_RELEASE)/WriteRemoteMemory.o: WriteRemoteMemory.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c WriteRemoteMemory.cpp -o $(OBJDIR64_RELEASE)/WriteRemoteMemory.o -$(OBJDIR_RELEASE)/ReadRemoteMemory.o: ReadRemoteMemory.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ReadRemoteMemory.cpp -o $(OBJDIR_RELEASE)/ReadRemoteMemory.o +$(OBJDIR64_RELEASE)/ReadRemoteMemory.o: ReadRemoteMemory.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ReadRemoteMemory.cpp -o $(OBJDIR64_RELEASE)/ReadRemoteMemory.o -$(OBJDIR_RELEASE)/OpenRemoteProcess.o: OpenRemoteProcess.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c OpenRemoteProcess.cpp -o $(OBJDIR_RELEASE)/OpenRemoteProcess.o +$(OBJDIR64_RELEASE)/OpenRemoteProcess.o: OpenRemoteProcess.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c OpenRemoteProcess.cpp -o $(OBJDIR64_RELEASE)/OpenRemoteProcess.o -$(OBJDIR_RELEASE)/IsProcessValid.o: IsProcessValid.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c IsProcessValid.cpp -o $(OBJDIR_RELEASE)/IsProcessValid.o +$(OBJDIR64_RELEASE)/IsProcessValid.o: IsProcessValid.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c IsProcessValid.cpp -o $(OBJDIR64_RELEASE)/IsProcessValid.o -$(OBJDIR_RELEASE)/Input.o: Input.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c Input.cpp -o $(OBJDIR_RELEASE)/Input.o +$(OBJDIR64_RELEASE)/Input.o: Input.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c Input.cpp -o $(OBJDIR64_RELEASE)/Input.o -$(OBJDIR_RELEASE)/EnumerateRemoteSectionsAndModules.o: EnumerateRemoteSectionsAndModules.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c EnumerateRemoteSectionsAndModules.cpp -o $(OBJDIR_RELEASE)/EnumerateRemoteSectionsAndModules.o +$(OBJDIR64_RELEASE)/EnumerateRemoteSectionsAndModules.o: EnumerateRemoteSectionsAndModules.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c EnumerateRemoteSectionsAndModules.cpp -o $(OBJDIR64_RELEASE)/EnumerateRemoteSectionsAndModules.o -$(OBJDIR_RELEASE)/EnumerateProcesses.o: EnumerateProcesses.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c EnumerateProcesses.cpp -o $(OBJDIR_RELEASE)/EnumerateProcesses.o +$(OBJDIR64_RELEASE)/EnumerateProcesses.o: EnumerateProcesses.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c EnumerateProcesses.cpp -o $(OBJDIR64_RELEASE)/EnumerateProcesses.o -$(OBJDIR_RELEASE)/DisassembleCode.o: DisassembleCode.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c DisassembleCode.cpp -o $(OBJDIR_RELEASE)/DisassembleCode.o +$(OBJDIR64_RELEASE)/DisassembleCode.o: DisassembleCode.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c DisassembleCode.cpp -o $(OBJDIR64_RELEASE)/DisassembleCode.o -$(OBJDIR_RELEASE)/DistormHelper.o: ../Shared/DistormHelper.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Shared/DistormHelper.cpp -o $(OBJDIR_RELEASE)/DistormHelper.o +$(OBJDIR64_RELEASE)/DistormHelper.o: ../Shared/DistormHelper.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Shared/DistormHelper.cpp -o $(OBJDIR64_RELEASE)/DistormHelper.o -$(OBJDIR_RELEASE)/Debugger.o: Debugger.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c Debugger.cpp -o $(OBJDIR_RELEASE)/Debugger.o +$(OBJDIR64_RELEASE)/Debugger.o: Debugger.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c Debugger.cpp -o $(OBJDIR64_RELEASE)/Debugger.o -$(OBJDIR_RELEASE)/ControlRemoteProcess.o: ControlRemoteProcess.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ControlRemoteProcess.cpp -o $(OBJDIR_RELEASE)/ControlRemoteProcess.o +$(OBJDIR64_RELEASE)/ControlRemoteProcess.o: ControlRemoteProcess.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ControlRemoteProcess.cpp -o $(OBJDIR64_RELEASE)/ControlRemoteProcess.o -$(OBJDIR_RELEASE)/CloseRemoteProcess.o: CloseRemoteProcess.cpp - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c CloseRemoteProcess.cpp -o $(OBJDIR_RELEASE)/CloseRemoteProcess.o +$(OBJDIR64_RELEASE)/CloseRemoteProcess.o: CloseRemoteProcess.cpp + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c CloseRemoteProcess.cpp -o $(OBJDIR64_RELEASE)/CloseRemoteProcess.o -$(OBJDIR_RELEASE)/decoder.o: ../Dependencies/distorm/src/decoder.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR_RELEASE)/decoder.o +$(OBJDIR64_RELEASE)/decoder.o: ../Dependencies/distorm/src/decoder.c + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/decoder.c -o $(OBJDIR64_RELEASE)/decoder.o -$(OBJDIR_RELEASE)/distorm.o: ../Dependencies/distorm/src/distorm.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR_RELEASE)/distorm.o +$(OBJDIR64_RELEASE)/distorm.o: ../Dependencies/distorm/src/distorm.c + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/distorm.c -o $(OBJDIR64_RELEASE)/distorm.o -$(OBJDIR_RELEASE)/instructions.o: ../Dependencies/distorm/src/instructions.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR_RELEASE)/instructions.o +$(OBJDIR64_RELEASE)/instructions.o: ../Dependencies/distorm/src/instructions.c + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/instructions.c -o $(OBJDIR64_RELEASE)/instructions.o -$(OBJDIR_RELEASE)/insts.o: ../Dependencies/distorm/src/insts.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR_RELEASE)/insts.o +$(OBJDIR64_RELEASE)/insts.o: ../Dependencies/distorm/src/insts.c + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/insts.c -o $(OBJDIR64_RELEASE)/insts.o -$(OBJDIR_RELEASE)/mnemonics.o: ../Dependencies/distorm/src/mnemonics.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR_RELEASE)/mnemonics.o +$(OBJDIR64_RELEASE)/mnemonics.o: ../Dependencies/distorm/src/mnemonics.c + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/mnemonics.c -o $(OBJDIR64_RELEASE)/mnemonics.o -$(OBJDIR_RELEASE)/operands.o: ../Dependencies/distorm/src/operands.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR_RELEASE)/operands.o +$(OBJDIR64_RELEASE)/operands.o: ../Dependencies/distorm/src/operands.c + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/operands.c -o $(OBJDIR64_RELEASE)/operands.o -$(OBJDIR_RELEASE)/prefix.o: ../Dependencies/distorm/src/prefix.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR_RELEASE)/prefix.o +$(OBJDIR64_RELEASE)/prefix.o: ../Dependencies/distorm/src/prefix.c + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/prefix.c -o $(OBJDIR64_RELEASE)/prefix.o -$(OBJDIR_RELEASE)/textdefs.o: ../Dependencies/distorm/src/textdefs.c - $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR_RELEASE)/textdefs.o +$(OBJDIR64_RELEASE)/textdefs.o: ../Dependencies/distorm/src/textdefs.c + $(CXX) $(CFLAGS64_RELEASE) $(INC_RELEASE) -c ../Dependencies/distorm/src/textdefs.c -o $(OBJDIR64_RELEASE)/textdefs.o clean_release: - rm -f $(OBJ_RELEASE) $(OUT_RELEASE) + rm -f $(OBJ32_RELEASE) $(OUT32_RELEASE) + rm -f $(OBJ64_RELEASE) $(OUT64_RELEASE) rm -rf build/release - rm -rf $(OBJDIR_RELEASE) + rm -rf $(OBJDIR32_RELEASE) + rm -rf $(OBJDIR64_RELEASE) .PHONY: before_debug after_debug clean_debug before_release after_release clean_release diff --git a/NativeCore/Unix/NativeCore.Unix.vcxproj b/NativeCore/Unix/NativeCore.Unix.vcxproj index 9ce274fd..83bff48a 100644 --- a/NativeCore/Unix/NativeCore.Unix.vcxproj +++ b/NativeCore/Unix/NativeCore.Unix.vcxproj @@ -155,7 +155,6 @@ c++1y ../Dependencies/distorm/include;$(Sysroot)\usr\include;$(StlIncludeDirectories);%(AdditionalIncludeDirectories) -m32 %(AdditionalOptions) - RECLASSNET32 -m32 %(AdditionalOptions) @@ -168,7 +167,6 @@ c++1y ../Dependencies/distorm/include;$(Sysroot)\usr\include;$(StlIncludeDirectories);%(AdditionalIncludeDirectories) -m32 %(AdditionalOptions) - RECLASSNET32;%(PreprocessorDefinitions) None true false diff --git a/NativeCore/Windows/NativeCore.vcxproj b/NativeCore/Windows/NativeCore.vcxproj index 5715bcb4..5600a51a 100644 --- a/NativeCore/Windows/NativeCore.vcxproj +++ b/NativeCore/Windows/NativeCore.vcxproj @@ -103,7 +103,7 @@ Level3 Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;NATIVECORE_EXPORTS;_CRT_SECURE_NO_WARNINGS;NOMINMAX;RECLASSNET32;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;%(PreprocessorDefinitions) + WIN32;_DEBUG;_WINDOWS;_USRDLL;NATIVECORE_EXPORTS;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;%(PreprocessorDefinitions) stdcpp17 @@ -137,7 +137,7 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;NATIVECORE_EXPORTS;_CRT_SECURE_NO_WARNINGS;NOMINMAX;RECLASSNET32;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;_USRDLL;NATIVECORE_EXPORTS;_CRT_SECURE_NO_WARNINGS;NOMINMAX;_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;%(PreprocessorDefinitions) stdcpp17 diff --git a/README.md b/README.md index 6f424ced..82a8a53d 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,20 @@ Just download the [latest version](https://github.com/ReClassNET/ReClass.NET/rel If you want to compile ReClass.NET just fork the repository and open the ReClass.NET.sln file with Visual Studio 2019. Compile the project and copy the dependencies to the output folder. -To compile the linux native core library, you need WSL [installed and configured](https://learn.microsoft.com/en-us/cpp/build/walkthrough-build-debug-wsl2). If you do not need linux support, simply unload the project in the Solution Explorer. +To compile the linux native core library, you need WSL [installed and configured](https://learn.microsoft.com/en-us/cpp/build/walkthrough-build-debug-wsl2). If you do not need linux support, simply unload the project in the Solution Explorer. If you want to build cross-platform (x86/x64) you have to install `g++-multilib` too. + +If you use the `Makefile` with `docker` or `podman` you have to build the needed image `gcc_multilib` from the following `Dockerfile` (`docker build -t gcc_multi .`): + +``` +FROM ubuntu:latest + +RUN apt-get update \ + && apt-get install --assume-yes --no-install-recommends --quiet \ + make \ + g++ \ + g++-multilib \ + && apt-get clean all +``` ## Videos diff --git a/ReClass.NET/Memory/UnionDataType.cs b/ReClass.NET/Memory/UnionDataType.cs index 36a47a7e..0cea977a 100644 --- a/ReClass.NET/Memory/UnionDataType.cs +++ b/ReClass.NET/Memory/UnionDataType.cs @@ -56,20 +56,20 @@ public struct UInt64FloatDoubleData public long LongValue; public IntPtr IntPtr => -#if RECLASSNET32 - unchecked((IntPtr)(int)LongValue); -#else +#if RECLASSNET64 (IntPtr)LongValue; +#else + unchecked((IntPtr)(int)LongValue); #endif [FieldOffset(0)] public ulong ULongValue; public UIntPtr UIntPtr => -#if RECLASSNET32 - unchecked((UIntPtr)(uint)ULongValue); -#else +#if RECLASSNET64 (UIntPtr)ULongValue; +#else + unchecked((UIntPtr)(uint)ULongValue); #endif [FieldOffset(0)] From a895421d2e8aa20a02d25696ec305b09a7f37a6d Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Sat, 29 Apr 2023 10:57:16 +0200 Subject: [PATCH 15/17] Prevent inserting bytes in ContainerNodes. --- ReClass.NET/Forms/MainForm.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index 010eea25..e771a10d 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -473,6 +473,7 @@ private void selectedNodeContextMenuStrip_Opening(object sender, CancelEventArgs var parentNode = node?.GetParentContainer(); var nodeIsClass = node is ClassNode; + var nodeIsContainer = node is BaseContainerNode; var nodeIsSearchableValueNode = node switch { BaseHexNode _ => true, @@ -494,8 +495,8 @@ private void selectedNodeContextMenuStrip_Opening(object sender, CancelEventArgs _ => false }; - addBytesToolStripMenuItem.Enabled = parentNode != null || nodeIsClass; - insertBytesToolStripMenuItem.Enabled = count == 1 && parentNode != null && !nodeIsClass; + addBytesToolStripMenuItem.Enabled = parentNode != null || nodeIsContainer; + insertBytesToolStripMenuItem.Enabled = count == 1 && parentNode != null && !nodeIsContainer; changeTypeToolStripMenuItem.Enabled = count > 0 && !nodeIsClass; @@ -830,9 +831,10 @@ private void memoryViewControl_SelectionChanged(object sender, EventArgs e) var node = selectedNodes.FirstOrDefault()?.Node; var parentContainer = node?.GetParentContainer(); var nodeIsClass = node is ClassNode; + var isContainerNode = node is BaseContainerNode; - addBytesToolStripDropDownButton.Enabled = parentContainer != null || nodeIsClass; - insertBytesToolStripDropDownButton.Enabled = selectedNodes.Count == 1 && parentContainer != null && !nodeIsClass; + addBytesToolStripDropDownButton.Enabled = parentContainer != null || isContainerNode; + insertBytesToolStripDropDownButton.Enabled = selectedNodes.Count == 1 && parentContainer != null && !isContainerNode; var enabled = selectedNodes.Count > 0 && !nodeIsClass; toolStrip.Items.OfType().ForEach(b => b.Enabled = enabled); From 8dc64c8ce5563fab12d8fc360d1acc1de8d4a57d Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Mon, 5 Jun 2023 20:31:34 +0200 Subject: [PATCH 16/17] Fix rtf \tab keyword. --- ReClass.NET/Util/Rtf/RtfBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReClass.NET/Util/Rtf/RtfBuilder.cs b/ReClass.NET/Util/Rtf/RtfBuilder.cs index 76bd7b95..5f83c837 100644 --- a/ReClass.NET/Util/Rtf/RtfBuilder.cs +++ b/ReClass.NET/Util/Rtf/RtfBuilder.cs @@ -258,7 +258,7 @@ private static string EscapeString(string value) { if (c == '\t') { - sb.Append(@"\tab"); + sb.Append(@"\tab "); } else if (c <= 255) { From b6c17dcd75f439666b2aa1e40a2b99932949e2e2 Mon Sep 17 00:00:00 2001 From: descear <47546329+descear@users.noreply.github.com> Date: Sat, 24 Jun 2023 12:12:40 +0100 Subject: [PATCH 17/17] Fix infinite loop in iteration of memory mapping lines; fixes #242 --- NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp index 079cba54..9d821cfe 100644 --- a/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp +++ b/NativeCore/Unix/EnumerateRemoteSectionsAndModules.cpp @@ -52,11 +52,12 @@ extern "C" void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, auto path = std::stringstream(); path << "/proc/" << reinterpret_cast(handle) << "/maps"; + std::ifstream input(path.str()); std::unordered_map modules; std::string line; - while (std::getline(std::ifstream(path.str()), line)) + while (std::getline(input, line)) { std::stringstream ss(line);