From 17f43d1a9b33e8820e0ae51b6d0fdae6e188742a Mon Sep 17 00:00:00 2001 From: distorm Date: Tue, 24 Jul 2012 19:11:26 +0000 Subject: [PATCH] Added CPU flags that each instruction affects (mod/tst/undf). Compacted DB --- disOps/disOps.py | 215 +- disOps/x86db.py | 16 +- disOps/x86header.py | 18 +- disOps/x86sets.py | 51 +- include/distorm.h | 37 +- include/mnemonics.h | 51 +- python/distorm3/__init__.py | 64 +- src/decoder.c | 29 +- src/instructions.c | 14 +- src/instructions.h | 66 +- src/insts.c | 3746 ++++++++++++++++++++--------------- src/insts.h | 23 + src/mnemonics.c | 3 +- src/operands.c | 3 +- src/operands.h | 2 +- src/x86defs.h | 33 +- 16 files changed, 2559 insertions(+), 1812 deletions(-) diff --git a/disOps/disOps.py b/disOps/disOps.py index ddc1bca..7e1bc79 100644 --- a/disOps/disOps.py +++ b/disOps/disOps.py @@ -48,8 +48,6 @@ import x86db from x86header import * -FLAGS_BASE_INDEX = 5 # Used to reserve the first few flags in the table for manual defined instructions in x86defs.c - mnemonicsIds = {} # mnemonic : offset to mnemonics table of strings. idsCounter = len("undefined") + 2 # Starts immediately after this one. @@ -133,10 +131,6 @@ def CreateJavaDict(mnemonicsIds): def DumpMnemonics(): global mnemonicsIds - # Add the hardcoded instruction which are not found in the DB. - # Warning: This should be updated synchronously with the code in diStorm. - map(lambda x: TranslateMnemonics(None, [x]), ["WAIT", "MOVSXD", "PAUSE"]) - f = open("defs.txt", "w") f.write("typedef enum {\n\tI_UNDEFINED = 0, ") @@ -182,7 +176,7 @@ def DumpMnemonics(): f.write(regsEnum + "\n") - # Mnemonics are sorted by insertion order. (Psuedo mnemonics depends on this!) + # Mnemonics are sorted by insertion order. (Psuedo mnemonics depend on this!) s = "const unsigned char _MNEMONICS[] =\n\"\\x09\" \"UNDEFINED\\0\" " l = zip(mnemonicsIds.keys(), mnemonicsIds.values()) l.sort(lambda x, y: x[1] - y[1]) @@ -197,7 +191,7 @@ def DumpMnemonics(): f.close() # Used for Python/Java dictionary of opcodeIds-->mnemonics. - #CreatePythonDict(mnemonicsIds) + CreatePythonDict(mnemonicsIds) #CreateJavaDict(mnemonicsIds) O_NONE = 0 @@ -313,7 +307,6 @@ def DumpMnemonics(): OperandType.LMEM128_256 : O_MEM } -flagsDict = {} def CheckOTCollisions(ii): """ Checks whether an instruction has two or more operands that use the same fields in the diStorm3 structure. E.G: ENTER 0x10, 0x1 --> This instruction uses two OT_IMM, which will cause a collision and use the same field twice which is bougs. """ @@ -364,6 +357,169 @@ def CheckWritableDestinationOperand(ii): ii.flags |= InstFlag.DST_WR return +g = set() +ccc = 0 +def SetInstructionAffectedFlags(ii, flagsTuple): + """ Helper routine to set the m/t/u flags for an instruction info. """ + # Pad tuple for fast access. + if not isinstance(flagsTuple, type(())): + flagsTuple = (flagsTuple,) + flagsTuple += (0,) * (3 - len(flagsTuple)) + ii.modifiedFlags = flagsTuple[0] + ii.testedFlags = flagsTuple[1] + ii.undefinedFlags = flagsTuple[2] + global g + g.add(flagsTuple) + global ccc + ccc += 1 + #print ii.mnemonics + +def GetTestedFlagsForCondition(cond): + OF, SF, ZF, AF, PF, CF, IF, DF = CPUFlags.OF, CPUFlags.SF, CPUFlags.ZF, CPUFlags.AF, CPUFlags.PF, CPUFlags.CF, CPUFlags.IF, CPUFlags.DF + Conditions = { + "O": OF, + "NO": OF, + "B": CF, + "AE": CF, + "Z": ZF, + "NZ": ZF, + "BE": CF | ZF, + "A": CF | ZF, + "S": SF, + "NS": SF, + "P": PF, + "NP": PF, + "L": SF | OF, + "GE": SF | OF, + "LE": SF | OF | ZF, + "G": SF | OF | ZF, + # Special for FCMOV + "U": PF, + "NU": PF, + "E": ZF, + "NE": ZF, + "NB": CF, + "NBE": CF | ZF + } + return Conditions[cond] + +def CheckInstructionAffectedFlags(ii): + """ + Add flags for each instruction that is in the following table. We add modified/tested/undefined flags. + Note that some instruction reset specific flags, but we don't record that here, we only care about actually modified ones. + """ + # MNEM: MODIFIED, TEST, UNDEFINED. + OF, SF, ZF, AF, PF, CF, IF, DF = CPUFlags.OF, CPUFlags.SF, CPUFlags.ZF, CPUFlags.AF, CPUFlags.PF, CPUFlags.CF, CPUFlags.IF, CPUFlags.DF + InstByMnem = { + "AAA": (AF | CF, AF, OF | SF | ZF | PF), + "AAS": (AF | CF, AF, OF | SF | ZF | PF), + "AAD": (SF | ZF | PF, 0, OF | AF | CF), + "AAM": (SF | ZF | PF, 0, OF | AF | CF), + "ADC": (OF | SF | ZF | AF | PF | CF, CF), + "ADD": (OF | SF | ZF | AF | PF | CF), + "AND": (OF | SF | ZF | PF | CF, 0, AF), + "ARPL": (ZF), + "BSF": (ZF, 0, OF | SF | ZF | AF | PF | CF), + "BSR": (ZF, 0, OF | SF | ZF | AF | PF | CF), + "BT": (CF, 0, OF | SF | ZF | AF | PF), + "BTS": (CF, 0, OF | SF | ZF | AF | PF), + "BTR": (CF, 0, OF | SF | ZF | AF | PF), + "BTC": (CF, 0, OF | SF | ZF | AF | PF), + "CLC": (CF), + "CLD": (DF), + "CLI": (IF), + "CMC": (CF), + "CMP": (OF | SF | ZF | AF | PF | CF), + "CMPXCHG": (OF | SF | ZF | AF | PF | CF), + "CMPXCHG8B": (ZF), + "CMPXCHG16B": (ZF), # Same inst as previous. + "COMSID": (ZF | PF | CF), + "COMISS": (ZF | PF | CF), + "DAA": (SF | ZF | AF | PF | CF, AF | CF, OF), + "DAS": (SF | ZF | AF | PF | CF, AF | CF, OF), + "DEC": (OF | SF | ZF | AF | PF), + "DIV": (0, 0, OF | SF | ZF | AF | PF | CF), + "FCOMI": (ZF | PF | CF), + "FCOMIP": (ZF | PF | CF), + "FUCOMI": (ZF | PF | CF), + "FUCOMIP": (ZF | PF | CF), + "IDIV": (0, 0, OF | SF | ZF | AF | PF | CF), + "IMUL": (OF | CF, 0, SF | ZF | AF | PF), + "INC": (OF | SF | ZF | AF | PF), + "UCOMSID": (ZF | PF | CF), + "UCOMISS": (ZF | PF | CF), + "IRET": (OF | SF | ZF | AF | PF | CF | IF | DF), + "LAR": (ZF), + "LOOPZ": (0, ZF), + "LOOPNZ": (0, ZF), + "LSL": (ZF), + "LZCNT": (ZF | CF, 0, OF | SF | AF | PF), + "MUL": (OF | CF, 0, SF | ZF | AF | PF), + "NEG": (OF | SF | ZF | AF | PF | CF), + "OR": (SF | ZF | PF, AF), + "POPCNT": (ZF), + "POPF": (OF | SF | ZF | AF | PF | CF | IF | DF), + "RSM": (OF | SF | ZF | AF | PF | CF | IF | DF), + "SAHF": (SF | ZF | AF | PF | CF), + "SBB": (OF | SF | ZF | AF | PF | CF, CF), + "STC": (CF), + "STD": (DF), + "STI": (IF), + "SUB": (OF | SF | ZF | AF | PF | CF), + "TEST": (SF | ZF | PF, 0, AF), + "VERR": (ZF), + "VERW": (ZF), + "XADD": (OF | SF | ZF | AF | PF | CF), + "XOR": (SF | ZF | PF, 0, AF), + # IO/String instructions: + "MOVS": (0, DF), + "LODS": (0, DF), + "STOS": (0, DF), + "CMPS": (OF | SF | ZF | AF | PF | CF, DF), + "SCAS": (OF | SF | ZF | AF | PF | CF, DF), + "INS": (0, DF), + "OUTS": (0, DF) + } + # Check for mnemonics in the above table. + for i in ii.mnemonics: + if InstByMnem.has_key(i) and (ii.flags & InstFlag.PSEUDO_OPCODE) == 0: + SetInstructionAffectedFlags(ii, InstByMnem[i]) + return + + # Look carefuly for SETcc or Jcc instructions. + for i in ["SET", "CMOV", "FCMOV"]: + if ii.mnemonics[0].find(i) == 0: + SetInstructionAffectedFlags(ii, GetTestedFlagsForCondition(ii.mnemonics[0][len(i):])) + return + # See if it's a Jcc instruction. + if ii.mnemonics[0][:1] == "J" and ii.mnemonics[0][:2] not in ["JM", "JC", "JE", "JR"]: + SetInstructionAffectedFlags(ii, GetTestedFlagsForCondition(ii.mnemonics[0][1:])) + return + + # Still no match, try special shift/rotate instructions. + # Special shift/rotate instruction that with constant 1 have different flag affections: + # First tuple is with constant 1, second tuple is with any count (CL). + Shifts = [ + (["RCL", "RCR"], (OF | CF, CF), (CF, CF, OF)), + (["ROL", "ROR"], (OF | CF), (CF, 0, OF)), + (["SAL" "SAR", "SHL", "SHR"], (OF | SF | ZF | PF | CF, 0, AF), (SF | ZF | PF | CF, 0, OF | AF)), + (["SHLD", "SHRD"], (OF | SF | ZF | PF | CF, 0, AF), (SF | ZF | PF | CF, 0, OF | AF)) + ] + for i in Shifts: + for j in i[0]: + if ii.mnemonics[0] == j: + flags = i[1] if ii.operands[1] == OperandType.CONST1 else i[2] + SetInstructionAffectedFlags(ii, flags) + return + + # The instruction doesn't affect any flags... + return + +# Table to hold shared inst-info. +sharedInfoDict = {} +# Table to hold shared flags. +flagsDict = {} + def FormatInstruction(ii): """ Formats a string with all information relevant for diStorm InstInfo structure or the InstInfoEx. These are the internal structures diStorm uses for holding the instructions' information. @@ -388,6 +544,9 @@ def FormatInstruction(ii): # Add flags for writable destination operand. CheckWritableDestinationOperand(ii) + # Add affected modified/tested/undefined flags for instruction. + CheckInstructionAffectedFlags(ii) + # Pad mnemonics to three, in case EXMNEMONIC/2 isn't used (so we don't get an exception). mnems = TranslateMnemonics([None, ii.classType][(ii.flags & InstFlag.PSEUDO_OPCODE) == InstFlag.PSEUDO_OPCODE], ii.mnemonics) + ["0", "0"] @@ -414,16 +573,23 @@ def FormatInstruction(ii): flags = ii.flags & ((1 << InstFlag.FLAGS_EX_START_INDEX)-1) # Allocate a slot for this flag if needed. if not flagsDict.has_key(flags): - flagsDict[flags] = len(flagsDict) + FLAGS_BASE_INDEX # Skip a few reserved slots. + flagsDict[flags] = len(flagsDict) # Get the flags-index. flagsIndex = flagsDict[flags] if flagsIndex >= 256: raise "FlagsIndex exceeded its 8 bits. Change flags of _InstInfo to be uint16!" - # Also classType and flow control are shared in two nibbles. - fields = "0x%x, %d, %d, %d, %s" % (flagsIndex, ops[1], ops[0], (ii.classType << 3) | ii.flowControl, mnems[0]) - # "Structure-Name" = II_Bytes-Code {Fields + Optional-Fields}. + # InstSharedInfo: + sharedInfo = (flagsIndex, ops[1], ops[0], (ii.classType << 3) | ii.flowControl, ii.modifiedFlags, ii.testedFlags, ii.undefinedFlags) + if not sharedInfoDict.has_key(sharedInfo): + sharedInfoDict[sharedInfo] = len(sharedInfoDict) + # Get the shared-info-index. + sharedInfoIndex = sharedInfoDict[sharedInfo] + if sharedInfoIndex >= 2**16: + raise "SharedInfoIndex exceeded its 16 bits. Change type of sharedInfoIndex in _InstInfo!" + fields = "0x%x, %s" % (sharedInfoIndex, mnems[0]) + # "Structure-Name" = II_Bytes-Code {Fields + Optional-Fields}. return ("\t/*II%s*/ {%s%s}" % (ii.tag, fields, optFields), (ii.flags & InstFlag.EXTENDED) != 0) def FilterTable(table): @@ -442,7 +608,7 @@ def GeneratePseudoMnemonicOffsets(): # (AVX=VCMPxxxYY + null + lengthByte). lengths = map(lambda x: 4 + len(x) + 2 + 2, AVXCmpTypes) - s += "uint16_t VCmpMnemonicOffsets[32] = {\n" + ", ".join([str(sum(lengths[:i] or [0])) for i in xrange(len(lengths))]) + "\n};\n"; + s += "uint16_t VCmpMnemonicOffsets[32] = {\n" + ", ".join([str(sum(lengths[:i] or [0])) for i in xrange(len(lengths))]) + "\n};"; return s def CreateTables(db): @@ -535,7 +701,6 @@ def CreateTables(db): :!:NOTE:!: You MUST iterate a table with GenBlock wrapper, otherwise you might NOT get all instructions from the DB! Refer to x86db.py-class GenBlock for more information. """ - indexShift = 13 # According to InstNode in instructions.h. InstInfos = [] InstInfosEx = [] @@ -567,14 +732,16 @@ def CreateTables(db): else: # False indicates this entry points nothing. InstructionsTree.append((0, "")) - s0 = "/* See x86defs.c if you get an error here. */\n_iflags FlagsTable[%d + %d] = {\n%s\n};" % (len(flagsDict), FLAGS_BASE_INDEX, ",\n".join(["0x%x" % i[1] for i in sorted(zip(flagsDict.values(), flagsDict.keys()))])) - s1 = "\n".join(["_InstNode Table%s = %d;" % (i[0], i[1]) for i in externTables]) - s2 = "_InstInfo InstInfos[] = {\n%s\n};" % (",\n".join(InstInfos)) - s3 = "_InstInfoEx InstInfosEx[] = {\n%s\n};" % (",\n".join(InstInfosEx)) - s4 = "_InstNode InstructionsTree[] = {\n" - s4 += ",\n".join(["/* %x - %s */ %s" % (i[0], i[1][1], "0" if i[1][0] == 0 else "0x%x" % i[1][0]) for i in enumerate(InstructionsTree)]) - s5 = GeneratePseudoMnemonicOffsets() - return s0 + "\n\n" + s1 + "\n\n" + s2 + "\n\n" + s3 + "\n\n" + s4 + "\n};\n\n" + s5 + "\n" + s = ["\n".join(["_InstInfo II_%s =%s;" % (i.mnemonics[0], FormatInstruction(i)[0]) for i in db.getExportedInstructions()]), + "_iflags FlagsTable[%d] = {\n%s\n};" % (len(flagsDict), ",\n".join(["0x%x" % i[1] for i in sorted(zip(flagsDict.values(), flagsDict.keys()))])), + "\n".join(["_InstNode Table%s = %d;" % (i[0], i[1]) for i in externTables]), + "_InstInfo InstInfos[%d] = {\n%s\n};" % (len(InstInfos), ",\n".join(InstInfos)), + "_InstInfoEx InstInfosEx[%d] = {\n%s\n};" % (len(InstInfosEx), ",\n".join(InstInfosEx)), + "_InstNode InstructionsTree[%d] = {\n%s\n};" % (len(InstructionsTree), ",\n".join(["/* %x - %s */ %s" % (i[0], i[1][1], "0" if i[1][0] == 0 else "0x%x" % i[1][0]) for i in enumerate(InstructionsTree)])), + # sharedInfoDict must be evaluated last, since the exported instructions above add items to it! + "_InstSharedInfo InstSharedInfoTable[%d] = {\n%s\n};" % (len(sharedInfoDict), ",\n".join(["{%s}" % str(i[1])[1:-1] for i in sorted(zip(sharedInfoDict.values(), sharedInfoDict.keys()))])), + GeneratePseudoMnemonicOffsets()] + return "\n\n".join(s) def main(): # Init the 80x86/x64 instructions sets DB. @@ -590,11 +757,9 @@ def main(): lists = CreateTables(db) # Write them to the file also. f.write(lists) - f.close() DumpMnemonics() print "The file output.txt was written successfully" main() - diff --git a/disOps/x86db.py b/disOps/x86db.py index 24df851..528972d 100644 --- a/disOps/x86db.py +++ b/disOps/x86db.py @@ -1,7 +1,7 @@ # # x86db.py # -# Copyright (C) 2009 Gil Dabah, http://ragestorm.net/disops/ +# Copyright (C) 2012 Gil Dabah, http://ragestorm.net/disops/ # from x86header import * @@ -37,6 +37,7 @@ class InstructionInfo: """ Instruction Info holds all information relevant for an instruction. another string member, self.tag, will be initialized in runtime to have the bytes of the opcode (I.E: 0f_0f_a7). """ def __init__(self, classType, OL, pos, isModRMIncluded, mnemonics, operands, flags): + self.tag = "" self.classType = classType # Check for special mandatory-prefixed instruction. if pos[0] in _MandatoryPrefixesList: @@ -54,6 +55,10 @@ def __init__(self, classType, OL, pos, isModRMIncluded, mnemonics, operands, fla self.mnemonics = mnemonics self.operands = operands self.flags = flags + # CPU affected flags by instruction: + self.modifiedFlags = 0 + self.testedFlags = 0 + self.undefinedFlags = 0 if len(self.operands) == 3: self.flags |= InstFlag.USE_OP3 elif len(self.operands) == 4: @@ -199,6 +204,11 @@ class InstructionsDB: def __init__(self): # Root contains a Full InstructionsTable with 256 entries. self.root = InstructionsTable(InstructionsTable.Full, "", []) + # Special instructions that diStorm has to use manually and can look them up using the tables. + self.exportedInstructions = [] + + def getExportedInstructions(self): + return self.exportedInstructions def HandleMandatoryPrefix(self, type, o, pos, ii, tag): if ii.prefixed: @@ -331,6 +341,10 @@ def CreateSet(self, type, o, pos, ii, tag = "", level = 0): def SetInstruction(self, *args): """ This function is used in order to insert an instruction info into the DB. """ + if (args[4] & InstFlag.EXPORTED) != 0: + ii = InstructionInfo(args[0], OpcodeLength.OL_1, [0], False, args[2], args[3], args[4]) + self.exportedInstructions.append(ii) + return # *args = ISetClass, OL, pos, mnemonics, operands, flags # Construct an Instruction Info object with the info given in args. opcode = args[1].replace(" ", "").split(",") diff --git a/disOps/x86header.py b/disOps/x86header.py index 0aba380..dfa7196 100644 --- a/disOps/x86header.py +++ b/disOps/x86header.py @@ -176,8 +176,9 @@ class InstFlag: FORCE_VEXL, # 36 MODRR_BASED, # 37 VEX_V_UNUSED, # 38 - GEN_BLOCK # 39 - ) = [1 << i for i in xrange(40)] + GEN_BLOCK, # 39 From here on: internal to disOps. + EXPORTED # 40 + ) = [1 << i for i in xrange(41)] # Nodes are extended if they have any of the following flags: EXTENDED = (PRE_VEX | USE_EXMNEMONIC | USE_EXMNEMONIC2 | USE_OP3 | USE_OP4) SEGMENTS = (PRE_CS | PRE_SS | PRE_DS | PRE_ES | PRE_FS | PRE_FS) @@ -232,3 +233,16 @@ class NodeType: LIST_DIVIDED, # 5 LIST_PREFIXED # 6 ) = range(0, 7) + +class CPUFlags: + """ Specifies all the flags that the x86/x64 CPU supports. """ + (ZF, # 0 + SF, # 1 + CF, # 2 + OF, # 3 + PF, # 4 + AF, # 5 + DF, # 6 + IF # 7 + ) = [1 << i for i in xrange(8)] + diff --git a/disOps/x86sets.py b/disOps/x86sets.py index 032f8d5..5f83350 100644 --- a/disOps/x86sets.py +++ b/disOps/x86sets.py @@ -205,18 +205,6 @@ def init_INTEGER(self): Set("60", ["PUSHA"], [], IFlag.NATIVE | IFlag.INVALID_64BITS) Set("61", ["POPA"], [], IFlag.NATIVE | IFlag.INVALID_64BITS) Set("62", ["BOUND"], [OPT.REG_FULL, OPT.MEM], IFlag.MODRM_REQUIRED | IFlag.INVALID_64BITS) - - # Notes for diStorm: - # 63 /R - # 16/32: ARPL reg/mem16, reg16 - # 64: MOVSXD OT_REG_FULL, OT_RM_FULL - # Damn processor, my DB won't support mixing of operands types. - # Therefore this instruction will be defined in x86defs and returned in the locate_inst according to the decoding type. - # This is because I must not change the DB, otherwise the code isn't multi-threaded compliant! - # I combine DB with Code in Waitable instructions also... - # This InstInfo is unused! x86defs.c uses its own. We just allocate it here so it exists in DB. - - Set("63", ["ARPL"], [OPT.RM16, OPT.REG16], IFlag.MODRM_REQUIRED | IFlag._64BITS) Set("68", ["PUSH"], [OPT.IMM_FULL], IFlag._64BITS) Set("69", ["IMUL"], [OPT.REG_FULL, OPT.RM_FULL, OPT.IMM_FULL], IFlag.MODRM_REQUIRED) Set("6a", ["PUSH"], [OPT.SEIMM8], IFlag.PRE_OP_SIZE | IFlag._64BITS) @@ -481,6 +469,41 @@ def init_INTEGER(self): # XSAVEOPT is declared below (see SFENCE). + def init_Exported(self): + """ Exported instruction are special instruction that create a collision in the DB. + Therefore they are exported directly so diStorm can use them manually in the + insts.c instruction look-up code. + Note that they ignore their opcodes here. + Also the path to the instruction in the trie has to be defined by any instruction with same opcode! + So for instance, NOP|PAUSE|XCHG -> XHG is really defined, the rest are exported. + Inside diStorm it will know which one to use. """ + + Set = lambda *args: self.SetCallback(ISetClass.INTEGER, *args) + # 63 /R + # 16/32: ARPL reg/mem16, reg16 + # 64: MOVSXD OT_REG_FULL, OT_RM_FULL + # Damn processor, my DB won't support mixing of operands types. + # Define ARPL! + Set("63", ["ARPL"], [OPT.RM16, OPT.REG16], IFlag.MODRM_REQUIRED) + + # MOVSXD: + # This is the worst defined instruction ever. It has so many variations. + # I decided after a third review, to make it like MOVSXD RAX, EAX when there IS a REX.W. + # Otherwise it will be MOVSXD EAX, EAX, which really zero extends to RAX. + # Completely ignoring DB 0x66, which is possible by the docs, BTW. + Set("63", ["MOVSXD"], [OPT.REG32_64, OPT.RM32], IFlag.MODRM_REQUIRED | IFlag._64BITS | IFlag.PRE_REX | IFlag.EXPORTED) + + Set("90", ["NOP"], [], IFlag.EXPORTED) + # This instruction is supported directly in diStorm, since it's not a mandatory prefix really. + Set("f3, 90", ["PAUSE"], [], IFlag._32BITS | IFlag.EXPORTED) + + # Wait instruction is needed, but it can be a prefix. See next page for more info. + Set("9b", ["WAIT"], [], IFlag.EXPORTED) + + Set = lambda *args: self.SetCallback(ISetClass._3DNOW, *args) + # This is not really an instruction, but a gateway to all 3dnow instructions. + Set("0f, 0f", ["3DNOW"], [OPT.MM, OPT.MM64], IFlag.MODRM_REQUIRED | IFlag._3DNOW_FETCH | IFlag.EXPORTED) + def init_FPU(self): Set = lambda *args: self.SetCallback(ISetClass.FPU, *args) @@ -970,9 +993,6 @@ def init_SSE2(self): Set("f3, 0f, d6", ["MOVQ2DQ"], [OPT.XMM, OPT.MM_RM], IFlag.MODRM_REQUIRED | IFlag._32BITS | IFlag.MODRR_REQUIRED) Set("f3, 0f, e6", ["CVTDQ2PD"], [OPT.XMM, OPT.XMM64], IFlag.MODRM_REQUIRED | IFlag._32BITS) - # This instruction is suppoeted directly in diStorm, since it's not a mandatory prefix really. - # Set("f3, 90", ["PAUSE"], [], IFlag._32BITS) - def init_SSE3(self): Set = lambda *args: self.SetCallback(ISetClass.SSE3, *args) Set("66, 0f, 7c", ["HADDPD"], [OPT.XMM, OPT.XMM128], IFlag.MODRM_REQUIRED | IFlag._32BITS) @@ -1614,6 +1634,7 @@ def __init__(self, SetCallback): self.SetCallback = SetCallback Set = lambda *args: self.SetCallback(ISetClass.INTEGER, *args) self.init_INTEGER() + self.init_Exported() self.init_FPU() self.init_P6() self.init_MMX() diff --git a/include/distorm.h b/include/distorm.h index d8fd067..2227505 100644 --- a/include/distorm.h +++ b/include/distorm.h @@ -216,19 +216,18 @@ typedef struct { /* No register was defined. */ #define R_NONE ((uint8_t)-1) -#define REGS64_BASE (0) -#define REGS32_BASE (16) -#define REGS16_BASE (32) -#define REGS8_BASE (48) -#define REGS8_REX_BASE (64) -#define SREGS_BASE (68) -/* #define RIP 74 */ -#define FPUREGS_BASE (75) -#define MMXREGS_BASE (83) -#define SSEREGS_BASE (91) -#define AVXREGS_BASE (107) -#define CREGS_BASE (123) -#define DREGS_BASE (132) +#define REGS64_BASE 0 +#define REGS32_BASE 16 +#define REGS16_BASE 32 +#define REGS8_BASE 48 +#define REGS8_REX_BASE 64 +#define SREGS_BASE 68 +#define FPUREGS_BASE 75 +#define MMXREGS_BASE 83 +#define SSEREGS_BASE 91 +#define AVXREGS_BASE 107 +#define CREGS_BASE 123 +#define DREGS_BASE 132 #define OPERANDS_NO (4) @@ -258,6 +257,8 @@ typedef struct { 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. */ + uint8_t modifiedFlagsMask, testedFlagsMask, undefinedFlagsMask; } _DInst; #ifndef DISTORM_LIGHT @@ -304,6 +305,16 @@ typedef struct { * For now R8 - R15 are not supported and non general purpose registers map into same RM. */ +/* CPU Flags that instructions modify, test or undefine. */ +#define D_ZF 1 /* Zero */ +#define D_SF 2 /* Sign */ +#define D_CF 4 /* Carry */ +#define D_OF 8 /* Overflow */ +#define D_PF 0x10 /* Parity */ +#define D_AF 0x20 /* Auxilary */ +#define D_DF 0x40 /* Direction */ +#define D_IF 0x80 /* Interrupt */ + /* * Instructions Set classes: * if you want a better understanding of the available classes, look at disOps project, file: x86sets.py. diff --git a/include/mnemonics.h b/include/mnemonics.h index 61b4441..c8cbd86 100644 --- a/include/mnemonics.h +++ b/include/mnemonics.h @@ -53,28 +53,29 @@ 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 = 3110, - I_ADDPS = 3103, I_ADDSD = 3124, I_ADDSS = 3117, I_ADDSUBPD = 6394, I_ADDSUBPS = 6404, - I_AESDEC = 9209, I_AESDECLAST = 9226, I_AESENC = 9167, I_AESENCLAST = 9184, - I_AESIMC = 9150, I_AESKEYGENASSIST = 9795, I_AND = 41, I_ANDNPD = 3021, I_ANDNPS = 3013, - I_ANDPD = 2990, I_ANDPS = 2983, I_ARPL = 111, I_BLENDPD = 9372, I_BLENDPS = 9353, - I_BLENDVPD = 7619, I_BLENDVPS = 7609, I_BOUND = 104, I_BSF = 4346, I_BSR = 4358, - 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 = 4329, I_CLGI = 1833, 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 = 4449, I_CMPEQPS = 4370, I_CMPEQSD = 4607, I_CMPEQSS = 4528, - I_CMPLEPD = 4467, I_CMPLEPS = 4388, I_CMPLESD = 4625, I_CMPLESS = 4546, I_CMPLTPD = 4458, - I_CMPLTPS = 4379, I_CMPLTSD = 4616, I_CMPLTSS = 4537, I_CMPNEQPD = 4488, I_CMPNEQPS = 4409, - I_CMPNEQSD = 4646, I_CMPNEQSS = 4567, I_CMPNLEPD = 4508, I_CMPNLEPS = 4429, - I_CMPNLESD = 4666, I_CMPNLESS = 4587, I_CMPNLTPD = 4498, I_CMPNLTPS = 4419, - I_CMPNLTSD = 4656, I_CMPNLTSS = 4577, I_CMPORDPD = 4518, I_CMPORDPS = 4439, - I_CMPORDSD = 4676, I_CMPORDSS = 4597, I_CMPS = 301, I_CMPUNORDPD = 4476, I_CMPUNORDPS = 4397, - I_CMPUNORDSD = 4634, I_CMPUNORDSS = 4555, I_CMPXCHG = 898, I_CMPXCHG16B = 6373, - I_CMPXCHG8B = 6362, I_COMISD = 2779, I_COMISS = 2771, I_CPUID = 865, I_CQO = 255, - I_CRC32 = 9258, I_CVTDQ2PD = 6787, I_CVTDQ2PS = 3307, I_CVTPD2DQ = 6797, I_CVTPD2PI = 2681, + I_UNDEFINED = 0, I_3DNOW = 10034, I_AAA = 66, I_AAD = 389, I_AAM = 384, I_AAS = 76, I_ADC = 31, + I_ADD = 11, I_ADDPD = 3110, I_ADDPS = 3103, I_ADDSD = 3124, I_ADDSS = 3117, + I_ADDSUBPD = 6394, I_ADDSUBPS = 6404, I_AESDEC = 9209, I_AESDECLAST = 9226, + I_AESENC = 9167, I_AESENCLAST = 9184, I_AESIMC = 9150, I_AESKEYGENASSIST = 9795, + I_AND = 41, I_ANDNPD = 3021, I_ANDNPS = 3013, I_ANDPD = 2990, I_ANDPS = 2983, + I_ARPL = 111, I_BLENDPD = 9372, I_BLENDPS = 9353, I_BLENDVPD = 7619, I_BLENDVPS = 7609, + I_BOUND = 104, I_BSF = 4346, I_BSR = 4358, 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 = 4329, I_CLGI = 1833, 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 = 4449, I_CMPEQPS = 4370, + I_CMPEQSD = 4607, I_CMPEQSS = 4528, I_CMPLEPD = 4467, I_CMPLEPS = 4388, I_CMPLESD = 4625, + I_CMPLESS = 4546, I_CMPLTPD = 4458, I_CMPLTPS = 4379, I_CMPLTSD = 4616, I_CMPLTSS = 4537, + I_CMPNEQPD = 4488, I_CMPNEQPS = 4409, I_CMPNEQSD = 4646, I_CMPNEQSS = 4567, + I_CMPNLEPD = 4508, I_CMPNLEPS = 4429, I_CMPNLESD = 4666, I_CMPNLESS = 4587, + I_CMPNLTPD = 4498, I_CMPNLTPS = 4419, I_CMPNLTSD = 4656, I_CMPNLTSS = 4577, + I_CMPORDPD = 4518, I_CMPORDPS = 4439, I_CMPORDSD = 4676, I_CMPORDSS = 4597, + I_CMPS = 301, I_CMPUNORDPD = 4476, I_CMPUNORDPS = 4397, I_CMPUNORDSD = 4634, + I_CMPUNORDSS = 4555, I_CMPXCHG = 898, I_CMPXCHG16B = 6373, I_CMPXCHG8B = 6362, + I_COMISD = 2779, I_COMISS = 2771, I_CPUID = 865, I_CQO = 255, I_CRC32 = 9258, + I_CVTDQ2PD = 6787, I_CVTDQ2PS = 3307, I_CVTPD2DQ = 6797, I_CVTPD2PI = 2681, I_CVTPD2PS = 3233, I_CVTPH2PS = 4161, I_CVTPI2PD = 2495, I_CVTPI2PS = 2485, I_CVTPS2DQ = 3317, I_CVTPS2PD = 3223, I_CVTPS2PH = 4171, I_CVTPS2PI = 2671, I_CVTSD2SI = 2701, I_CVTSD2SS = 3253, I_CVTSI2SD = 2515, I_CVTSI2SS = 2505, @@ -124,14 +125,14 @@ typedef enum { I_MOVNTDQA = 7895, I_MOVNTI = 952, I_MOVNTPD = 2556, I_MOVNTPS = 2547, I_MOVNTQ = 6841, I_MOVNTSD = 2574, I_MOVNTSS = 2565, I_MOVQ = 3926, I_MOVQ2DQ = 6513, I_MOVS = 295, I_MOVSD = 2110, I_MOVSHDUP = 2353, I_MOVSLDUP = 2176, I_MOVSS = 2103, I_MOVSX = 939, - I_MOVSXD = 10019, I_MOVUPD = 2095, I_MOVUPS = 2087, I_MOVZX = 927, I_MPSADBW = 9628, + I_MOVSXD = 10013, I_MOVUPD = 2095, I_MOVUPS = 2087, I_MOVZX = 927, I_MPSADBW = 9628, I_MUL = 1625, I_MULPD = 3170, I_MULPS = 3163, I_MULSD = 3184, I_MULSS = 3177, I_MWAIT = 1764, I_NEG = 1620, I_NOP = 581, I_NOT = 1615, I_OR = 27, I_ORPD = 3053, I_ORPS = 3047, I_OUT = 451, I_OUTS = 128, I_PABSB = 7688, I_PABSD = 7718, I_PABSW = 7703, I_PACKSSDW = 3849, I_PACKSSWB = 3681, I_PACKUSDW = 7916, I_PACKUSWB = 3759, I_PADDB = 7204, I_PADDD = 7234, I_PADDQ = 6481, I_PADDSB = 6930, I_PADDSW = 6947, I_PADDUSB = 6620, I_PADDUSW = 6639, I_PADDW = 7219, I_PALIGNR = 9410, I_PAND = 6607, - I_PANDN = 6665, I_PAUSE = 10027, I_PAVGB = 6680, I_PAVGUSB = 2078, I_PAVGW = 6725, + I_PANDN = 6665, I_PAUSE = 10021, I_PAVGB = 6680, I_PAVGUSB = 2078, I_PAVGW = 6725, I_PBLENDVB = 7599, I_PBLENDW = 9391, I_PCLMULQDQ = 9647, I_PCMPEQB = 4043, I_PCMPEQD = 4081, I_PCMPEQQ = 7876, I_PCMPEQW = 4062, I_PCMPESTRI = 9726, I_PCMPESTRM = 9703, I_PCMPGTB = 3702, I_PCMPGTD = 3740, I_PCMPGTQ = 8087, @@ -287,7 +288,7 @@ typedef enum { I_VTESTPD = 7590, I_VTESTPS = 7581, I_VUCOMISD = 2761, I_VUCOMISS = 2751, I_VUNPCKHPD = 2317, I_VUNPCKHPS = 2306, I_VUNPCKLPD = 2275, I_VUNPCKLPS = 2264, I_VXORPD = 3095, I_VXORPS = 3087, I_VZEROALL = 4118, I_VZEROUPPER = 4106, - I_WAIT = 10013, I_WBINVD = 561, I_WRFSBASE = 9931, I_WRGSBASE = 9960, I_WRMSR = 586, + I_WAIT = 10028, I_WBINVD = 561, I_WRFSBASE = 9931, I_WRGSBASE = 9960, I_WRMSR = 586, I_XADD = 946, I_XCHG = 212, I_XGETBV = 1771, I_XLAT = 400, I_XOR = 61, I_XORPD = 3080, I_XORPS = 3073, I_XRSTOR = 4273, I_XRSTOR64 = 4281, I_XSAVE = 4249, I_XSAVE64 = 4256, I_XSAVEOPT = 4299, I_XSAVEOPT64 = 4309, I_XSETBV = 1779 diff --git a/python/distorm3/__init__.py b/python/distorm3/__init__.py index 0725771..4dc7bd5 100644 --- a/python/distorm3/__init__.py +++ b/python/distorm3/__init__.py @@ -230,7 +230,7 @@ class _DInst (Structure): 0x1dd4: "VPTEST", 0x532: "FISUB", 0x205: "STD", 0xf13: "VPACKSSDW", 0x3d: "XOR", 0xc7f: "VMULPD", 0x1f1: "STC", 0x1fb: "STI", 0x26c2: "LDMXCSR", 0x116a: "CMPLTPD", 0xbe7: "ORPS", 0x1ef6: "VPACKUSDW", 0x61b: "FSUBP", 0x66f: "STR", 0x40e: "FSUBR", -0x111b: "CMPLTPS", 0x230d: "VFMADD231SD", 0x272b: "PAUSE", 0x1a8d: "CVTPD2DQ", +0x111b: "CMPLTPS", 0x230d: "VFMADD231SD", 0x2725: "PAUSE", 0x1a8d: "CVTPD2DQ", 0x372: "RSM", 0xb5a: "VSQRTSD", 0xbf3: "VORPS", 0x218e: "VFMADDSUB213PS", 0x23cf: "AESENC", 0x1437: "VCMPEQ_UQPD", 0x902: "VUNPCKHPS", 0x1cf3: "PMADDUBSW", 0x1355: "VCMPNLE_UQPS", 0x1b68: "VPSLLW", 0x1bc5: "MASKMOVQ", 0x1c8: "CALL", 0xb51: "VSQRTSS", 0x19dc: "PADDUSB", @@ -280,7 +280,7 @@ class _DInst (Structure): 0x340: "SETNP", 0xf43: "VPUNPCKHQDQ", 0xd2c: "SUBPS", 0x1230: "CMPNLTSD", 0x674: "LLDT", 0x2229: "VFMSUB213SD", 0x1dcd: "PTEST", 0x2164: "VFNMSUB132PD", 0x279: "GETSEC", 0x1d69: "VPSIGND", 0x1ab: "JCXZ", 0x11e1: "CMPNLTSS", 0x34d: "SETGE", 0x1112: "CMPEQPS", -0x1bb4: "PSADBW", 0x2723: "MOVSXD", 0x2156: "VFNMSUB132PS", 0x185: "AAD", 0x23ec: "VAESENCLAST", +0x1bb4: "PSADBW", 0x271d: "MOVSXD", 0x2156: "VFNMSUB132PS", 0x185: "AAD", 0x23ec: "VAESENCLAST", 0xf37: "PUNPCKHQDQ", 0x878: "MOVLPD", 0x19e5: "VPADDUSW", 0x12c8: "VCMPFALSEPS", 0x180: "AAM", 0xf2a: "VPUNPCKLQDQ", 0xd76: "MINSS", 0x1c42: "PADDD", 0x145a: "VCMPFALSEPD", 0xe3e: "VPUNPCKLWD", 0x870: "MOVLPS", 0x729: "CLGI", 0x4c: "AAS", 0x139: "LODS", @@ -301,19 +301,19 @@ class _DInst (Structure): 0xb6c: "RSQRTSS", 0x1d9d: "VTESTPS", 0x86: "JO", 0xdfc: "VMAXPS", 0x1998: "PSUBUSB", 0xca: "JG", 0x1ddc: "VBROADCASTSS", 0xa6: "JA", 0x8f: "JB", 0xe9: "CWDE", 0x13f4: "VCMPLEPD", 0x1038: "VMWRITE", 0x1262: "VCMPLEPS", 0x1983: "PMOVMSKB", 0x254b: "INSERTPS", -0x25fe: "PCMPESTRI", 0x271d: "WAIT", 0x152b: "VCMPFALSE_OSPD", 0x25e7: "PCMPESTRM", -0xe4a: "PUNPCKLDQ", 0xc69: "MULSS", 0xd50: "VSUBPD", 0x1161: "CMPEQPD", 0x178b: "VCMPNEQ_OQSD", -0xaec: "VCOMISD", 0xd94: "VMINSS", 0x1c49: "VPADDD", 0x258: "RDMSR", 0x1d58: "VPSIGNW", -0x1b1: "JECXZ", 0xc70: "MULSD", 0x154: "ENTER", 0x2423: "MOVBE", 0x1016: "VZEROALL", -0xd9c: "VMINSD", 0x15f9: "VCMPNEQ_OQSS", 0x7e4: "PFSUBR", 0x12e3: "VCMPGEPS", -0x19a1: "VPSUBUSB", 0x2341: "VFMSUB231SD", 0x2021: "PMAXUD", 0x2688: "FXSAVE", -0x580: "FISTTP", 0x1475: "VCMPGEPD", 0x2489: "BLENDPS", 0x1718: "VCMPLESD", -0x5a7: "FCMOVNBE", 0x2334: "VFMSUB231SS", 0x25c6: "VBLENDVPS", 0x25a5: "VMPSADBW", -0x19b4: "VPSUBUSW", 0x170e: "VCMPLTSD", 0x1ed7: "MOVNTDQA", 0x18c0: "SHUFPD", -0xd33: "SUBPD", 0xb27: "SQRTPD", 0x94e: "VMOVHPD", 0x6b7: "VMCALL", 0x20c3: "VFMADD132PD", -0x15b: "LEAVE", 0x18b8: "SHUFPS", 0x1303: "VCMPEQ_OSPS", 0x2609: "VPCMPESTRI", -0x157c: "VCMPLTSS", 0x25f2: "VPCMPESTRM", 0x20b6: "VFMADD132PS", 0x69d: "LIDT", -0x498: "F2XM1", 0x945: "VMOVHPS", 0x1f82: "PMOVZXDQ", 0x100a: "VZEROUPPER", +0x2732: "3DNOW", 0x25fe: "PCMPESTRI", 0x272c: "WAIT", 0x152b: "VCMPFALSE_OSPD", +0x25e7: "PCMPESTRM", 0xe4a: "PUNPCKLDQ", 0xc69: "MULSS", 0xd50: "VSUBPD", 0x1161: "CMPEQPD", +0x178b: "VCMPNEQ_OQSD", 0xaec: "VCOMISD", 0xd94: "VMINSS", 0x1c49: "VPADDD", +0x258: "RDMSR", 0x1d58: "VPSIGNW", 0x1b1: "JECXZ", 0xc70: "MULSD", 0x154: "ENTER", +0x2423: "MOVBE", 0x1016: "VZEROALL", 0xd9c: "VMINSD", 0x15f9: "VCMPNEQ_OQSS", +0x7e4: "PFSUBR", 0x12e3: "VCMPGEPS", 0x19a1: "VPSUBUSB", 0x2341: "VFMSUB231SD", +0x2021: "PMAXUD", 0x2688: "FXSAVE", 0x580: "FISTTP", 0x1475: "VCMPGEPD", 0x2489: "BLENDPS", +0x1718: "VCMPLESD", 0x5a7: "FCMOVNBE", 0x2334: "VFMSUB231SS", 0x25c6: "VBLENDVPS", +0x25a5: "VMPSADBW", 0x19b4: "VPSUBUSW", 0x170e: "VCMPLTSD", 0x1ed7: "MOVNTDQA", +0x18c0: "SHUFPD", 0xd33: "SUBPD", 0xb27: "SQRTPD", 0x94e: "VMOVHPD", 0x6b7: "VMCALL", +0x20c3: "VFMADD132PD", 0x15b: "LEAVE", 0x18b8: "SHUFPS", 0x1303: "VCMPEQ_OSPS", +0x2609: "VPCMPESTRI", 0x157c: "VCMPLTSS", 0x25f2: "VPCMPESTRM", 0x20b6: "VFMADD132PS", +0x69d: "LIDT", 0x498: "F2XM1", 0x945: "VMOVHPS", 0x1f82: "PMOVZXDQ", 0x100a: "VZEROUPPER", 0xb1f: "SQRTPS", 0xbd5: "VANDNPS", 0x1958: "VPADDQ", 0x4d8: "FPREM", 0x1c3a: "VPADDW", 0x24c2: "PALIGNR", 0x1faa: "PMINSB", 0xe89: "PCMPGTW", 0x36c: "SHLD", 0x14f: "LDS", 0x1c2b: "VPADDB", 0x703: "VMRUN", 0x269a: "RDFSBASE", 0xbde: "VANDNPD", 0x190: "XLAT", @@ -461,6 +461,22 @@ class _DInst (Structure): # Instruction could not be disassembled. Special-case handling FLAG_NOT_DECODABLE = 0xFFFF # -1 in uint16 +# Some features +DF_NONE = 0 +DF_MAXIMUM_ADDR16 = 1 +DF_MAXIMUM_ADDR32 = 2 +DF_RETURN_FC_ONLY = 4 +DF_STOP_ON_CALL = 8 +# Flow control flags +DF_STOP_ON_CALL = 0x8 +DF_STOP_ON_RET = 0x10 +DF_STOP_ON_SYS = 0x20 +DF_STOP_ON_UNC_BRANCH = 0x40 +DF_STOP_ON_CND_BRANCH = 0x80 +DF_STOP_ON_INT = 0x100 +DF_STOP_ON_CMOV = 0x200 +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) def DecodeGenerator(codeOffset, code, dt): """ @@ -814,7 +830,7 @@ def __str__(self): return self._toText() -def DecomposeGenerator(codeOffset, code, dt): +def DecomposeGenerator(codeOffset, code, dt, features = 0): """ @type codeOffset: long @param codeOffset: Memory address where the code is located. @@ -833,6 +849,10 @@ def DecomposeGenerator(codeOffset, code, dt): * L{Decode64Bits}: AMD64 decoding + @type features: int + @param features: A flow control stopping criterion, eg. DF_STOP_ON_CALL. + or other features, eg. DF_RETURN_FC_ONLY. + @rtype: generator of TODO @return: Generator of TODO @@ -857,7 +877,7 @@ def DecomposeGenerator(codeOffset, code, dt): while codeLen > 0: usedInstructionsCount = c_uint(0) - codeInfo = _CodeInfo(_OffsetType(codeOffset), _OffsetType(0), cast(p_code, c_char_p), codeLen, dt, 0) + codeInfo = _CodeInfo(_OffsetType(codeOffset), _OffsetType(0), cast(p_code, c_char_p), codeLen, dt, features) status = internal_decompose(byref(codeInfo), byref(result), MAX_INSTRUCTIONS, byref(usedInstructionsCount)) if status == DECRES_INPUTERR: raise ValueError("Invalid arguments passed to distorm_decode()") @@ -878,8 +898,10 @@ def DecomposeGenerator(codeOffset, code, dt): codeOffset = codeOffset + delta p_code = byref(code_buf, instruction_off) codeLen = codeLen - delta + if (features & DF_STOP_ON_FLOW_CONTROL) != 0: + break # User passed a stop flag. -def Decompose(offset, code, type = Decode32Bits): +def Decompose(offset, code, type = Decode32Bits, features = 0): """ @type offset: long @param offset: Memory address where the code is located. @@ -898,8 +920,12 @@ def Decompose(offset, code, type = Decode32Bits): * L{Decode64Bits}: AMD64 decoding + @type features: int + @param features: A flow control stopping criterion, eg. DF_STOP_ON_CALL. + or other features, eg. DF_RETURN_FC_ONLY. + @rtype: TODO @return: TODO @raise ValueError: Invalid arguments. """ - return list( DecomposeGenerator(offset, code, type) ) + return list( DecomposeGenerator(offset, code, type, features) ) diff --git a/src/decoder.c b/src/decoder.c index d5b69f2..0236f04 100644 --- a/src/decoder.c +++ b/src/decoder.c @@ -27,6 +27,7 @@ along with this program. If not, see #include "prefix.h" #include "x86defs.h" #include "operands.h" +#include "insts.h" #include "../include/mnemonics.h" @@ -93,6 +94,7 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) /* Holds the info about the current found instruction. */ _InstInfo* ii = NULL; + _InstSharedInfo* isi = NULL; /* Used only for special CMP instructions which have pseudo opcodes suffix. */ unsigned char cmpType = 0; @@ -110,7 +112,8 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) ii = inst_lookup(ci, ps); if (ii == NULL) goto _Undecodable; - instFlags = INST_INFO_FLAGS(ii); + isi = &InstSharedInfoTable[ii->sharedIndex]; + instFlags = FlagsTable[isi->flagsIndex]; /* * If both REX and OpSize are available we will have to disable the OpSize, because REX has precedence. @@ -179,22 +182,22 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) * Note: do-while with a constant 0 makes the compiler warning about it. */ for (;;) { - if (ii->d != OT_NONE) { - if (!operands_extract(ci, di, ii, (_OpType)ii->d, ONT_1, modrm, ps, effOpSz, effAdrSz, &lockable)) goto _Undecodable; + 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; - if (ii->s != OT_NONE) { - if (!operands_extract(ci, di, ii, (_OpType)ii->s, ONT_2, modrm, ps, effOpSz, effAdrSz, NULL)) 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, (_OpType)((_InstInfoEx*)ii)->op3, ONT_3, modrm, ps, effOpSz, effAdrSz, NULL)) goto _Undecodable; + 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, (_OpType)((_InstInfoEx*)ii)->op4, ONT_4, modrm, ps, effOpSz, effAdrSz, NULL)) goto _Undecodable; + if (!operands_extract(ci, di, ii, instFlags, (_OpType)((_InstInfoEx*)ii)->op4, ONT_4, modrm, ps, effOpSz, effAdrSz, NULL)) goto _Undecodable; } break; } /* Continue here after all operands were extracted. */ @@ -203,7 +206,8 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) if (instFlags & INST_3DNOW_FETCH) { ii = inst_lookup_3dnow(ci); if (ii == NULL) goto _Undecodable; - instFlags = INST_INFO_FLAGS(ii); + isi = &InstSharedInfoTable[ii->sharedIndex]; + instFlags = FlagsTable[isi->flagsIndex]; } /* Check whether pseudo opcode is needed, only for CMP instructions: */ @@ -339,7 +343,7 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) di->opcode = ii->opcodeId + CmpMnemonicOffsets[cmpType]; } } - + /* * Store the address size inside the flags. * This is necessary for the caller to know the size of rSP when using PUSHA for example. @@ -353,12 +357,17 @@ static _DecodeResult decode_inst(_CodeInfo* ci, _PrefixState* ps, _DInst* di) di->unusedPrefixesMask = prefixes_set_unused_mask(ps); /* Copy instruction meta. */ - di->meta = ii->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. */ + di->modifiedFlagsMask = isi->modifiedFlags; + di->testedFlagsMask = isi->testedFlags; + di->undefinedFlagsMask = isi->undefinedFlags; + /* Calculate the size of the instruction we've just decoded. */ di->size = (uint8_t)((ci->code - startCode) & 0xff); return DECRES_SUCCESS; diff --git a/src/instructions.c b/src/instructions.c index a861869..01a550f 100644 --- a/src/instructions.c +++ b/src/instructions.c @@ -33,6 +33,9 @@ along with this program. If not, see #define INST_NODE_INDEX(n) ((n) & 0x1fff) #define INST_NODE_TYPE(n) ((n) >> 13) +/* Helper macro to read the actual flags that are associated with an inst-info. */ +#define INST_INFO_FLAGS(ii) (FlagsTable[InstSharedInfoTable[(ii)->sharedIndex].flagsIndex]) + /* I use the trie data structure as I found it most fitting to a disassembler mechanism. When you read a byte and have to decide if it's enough or you should read more bytes, 'till you get to the instruction information. @@ -383,14 +386,17 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) * 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 */ - return ci->dt == Decode64Bits ? &II_movsxd : &II_arpl; + 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 */ /* 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. */ ps->usedPrefixes |= INST_PRE_REP; - return &II_pause; + return &II_PAUSE; } /* @@ -402,7 +408,7 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) * 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; + if ((ci->dt != Decode64Bits) || (~rex & PREFIX_EX_B)) return &II_NOP; break; case INST_LEA_INDEX: @@ -471,7 +477,7 @@ _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps) instType = INST_NODE_TYPE(in); /* This is where we check if we just read two escape bytes in a row, which means it is a 3DNow! instruction. */ - if ((tmpIndex0 == _3DNOW_ESCAPE_BYTE) && (tmpIndex1 == _3DNOW_ESCAPE_BYTE)) return &II_3dnow; + if ((tmpIndex0 == _3DNOW_ESCAPE_BYTE) && (tmpIndex1 == _3DNOW_ESCAPE_BYTE)) return &II_3DNOW; /* 2 bytes instruction (OCST_2BYTES). */ if (instType < INT_INFOS) diff --git a/src/instructions.h b/src/instructions.h index c5990b6..d6a85a2 100644 --- a/src/instructions.h +++ b/src/instructions.h @@ -58,9 +58,9 @@ typedef enum OpType { /* 16 bits immediate using the first imm-slot */ OT_IMM16_1, /* 8 bits immediate using the first imm-slot */ - OT_IMM8_1, + OT_IMM8_1, /* 8 bits immediate using the second imm-slot */ - OT_IMM8_2, + OT_IMM8_2, /* Use a 8bit register */ OT_REG8, @@ -240,39 +240,39 @@ typedef enum OpType { /* ModR/M for 32 bits. */ OT_RM32, /* Reg32/Reg64 (prefix width) or Mem8. */ - OT_REG32_64_M8, + OT_REG32_64_M8, /* Reg32/Reg64 (prefix width) or Mem16. */ - OT_REG32_64_M16, + OT_REG32_64_M16, /* Reg32/Reg 64 depends on prefix width only. */ - OT_WREG32_64, + OT_WREG32_64, /* RM32/RM64 depends on prefix width only. */ - OT_WRM32_64, + OT_WRM32_64, /* XMM or Mem32/Mem64 depends on perfix width only. */ - OT_WXMM32_64, + OT_WXMM32_64, /* XMM is encoded in VEX.VVVV. */ - OT_VXMM, + OT_VXMM, /* XMM is encoded in the high nibble of an immediate byte. */ - OT_XMM_IMM, + OT_XMM_IMM, /* YMM/XMM is dependent on VEX.L. */ - OT_YXMM, + OT_YXMM, /* YMM/XMM (depends on prefix length) is encoded in the high nibble of an immediate byte. */ - OT_YXMM_IMM, + OT_YXMM_IMM, /* YMM is encoded in reg. */ - OT_YMM, + OT_YMM, /* YMM or Mem256. */ - OT_YMM256, + OT_YMM256, /* YMM is encoded in VEX.VVVV. */ - OT_VYMM, + OT_VYMM, /* YMM/XMM is dependent on VEX.L, and encoded in VEX.VVVV. */ - OT_VYXMM, + OT_VYXMM, /* YMM/XMM or Mem64/Mem256 is dependent on VEX.L. */ - OT_YXMM64_256, + OT_YXMM64_256, /* YMM/XMM or Mem128/Mem256 is dependent on VEX.L. */ - OT_YXMM128_256, + OT_YXMM128_256, /* XMM or Mem64/Mem256 is dependent on VEX.L. */ - OT_LXMM64_128, + OT_LXMM64_128, /* Mem128/Mem256 is dependent on VEX.L. */ - OT_LMEM128_256 + OT_LMEM128_256 } _OpType; /* Flags for instruction: */ @@ -384,15 +384,29 @@ typedef enum OpType { typedef enum {ONT_NONE = -1, ONT_1 = 0, ONT_2 = 1, ONT_3 = 2, ONT_4 = 3} _OperandNumberType; /* - * Info about the instruction, source/dest types, its name in text and flags. - * This structure is used for the instructions DB and NOT for the disassembled result code! - * This is the BASE structure, there are extentions to this structure below. + * In order to save more space for storing the DB statically, + * I came up with another level of shared info. + * Because I saw that most of the information that instructions use repeats itself. + * + * Info about the instruction, source/dest types, meta and flags. + * _InstInfo points to a table of _InstSharedInfo. */ - typedef struct { - uint8_t flagsIndex; /* An index into FlagsTables. */ + 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. */ + uint8_t modifiedFlags; + uint8_t testedFlags; + uint8_t undefinedFlags; +} _InstSharedInfo; + +/* + * This structure is used for the instructions DB and NOT for the disassembled result code! + * This is the BASE structure, there are extentions to this structure below. + */ +typedef struct { + uint16_t sharedIndex; /* An index into the SharedInfoTable. */ uint16_t opcodeId; /* The opcodeId is really a byte-offset into the mnemonics table. */ } _InstInfo; @@ -406,7 +420,6 @@ typedef struct { * therefore, I decided to make the extended structure contain all extra info in the same structure. * There are a few instructions (SHLD/SHRD/IMUL and SSE too) which use third operand (or a fourth). * A flag will indicate it uses a third/fourth operand. - * */ typedef struct { /* Base structure (doesn't get accessed directly from code). */ @@ -435,9 +448,6 @@ typedef enum { /* Instruction node is treated as { int index:13; int type:3; } */ typedef uint16_t _InstNode; -/* Helper macro to read the actual flags that are associated with an inst-info. */ -#define INST_INFO_FLAGS(ii) (FlagsTable[(ii)->flagsIndex]) - _InstInfo* inst_lookup(_CodeInfo* ci, _PrefixState* ps); _InstInfo* inst_lookup_3dnow(_CodeInfo* ci); diff --git a/src/insts.c b/src/insts.c index f6f6883..6eed62f 100644 --- a/src/insts.c +++ b/src/insts.c @@ -27,16 +27,16 @@ along with this program. If not, see /* - * GENERATED BY disOps at Mon May 07 05:39:59 2012 + * GENERATED BY disOps at Tue Jul 24 20:48:33 2012 */ -/* See x86defs.c if you get an error here. */ -_iflags FlagsTable[97 + 5] = { -INST_MODRM_REQUIRED, -INST_MODRM_REQUIRED | INST_PRE_REX | INST_64BITS, -INST_FLAGS_NONE, -INST_FLAGS_NONE, -INST_32BITS | INST_MODRM_REQUIRED | INST_3DNOW_FETCH, +_InstInfo II_MOVSXD = /*II*/ {0x1cf, 10013}; +_InstInfo II_NOP = /*II*/ {0x53, 581}; +_InstInfo II_PAUSE = /*II*/ {0x88, 10021}; +_InstInfo II_WAIT = /*II*/ {0x53, 10028}; +_InstInfo II_3DNOW = /*II*/ {0x1d0, 10034}; + +_iflags FlagsTable[98] = { 0x80000011, 0x80000000, 0x800400, @@ -54,7 +54,6 @@ INST_32BITS | INST_MODRM_REQUIRED | INST_3DNOW_FETCH, 0x81000000, 0x808000, 0x800001, -0x1000001, 0x80020001, 0x1002000, 0x60, @@ -133,7 +132,9 @@ INST_32BITS | INST_MODRM_REQUIRED | INST_3DNOW_FETCH, 0x4020009, 0x40100009, 0x60120009, -0x41000009 +0x41000009, +0x83000001, +0x200001 }; _InstNode Table_0F = 256; @@ -141,1637 +142,1637 @@ _InstNode Table_0F_0F = 1312; _InstNode Table_0F_38 = 1768; _InstNode Table_0F_3A = 2024; -_InstInfo InstInfos[] = { - /*II_00*/ {0x5, 9, 15, 8, 11}, - /*II_01*/ {0x5, 11, 17, 8, 11}, - /*II_02*/ {0x5, 15, 9, 8, 11}, - /*II_03*/ {0x5, 17, 11, 8, 11}, - /*II_04*/ {0x6, 1, 33, 8, 11}, - /*II_05*/ {0x6, 3, 35, 8, 11}, - /*II_06*/ {0x7, 0, 32, 8, 16}, - /*II_07*/ {0x8, 0, 32, 8, 22}, - /*II_08*/ {0x5, 9, 15, 8, 27}, - /*II_09*/ {0x5, 11, 17, 8, 27}, - /*II_0A*/ {0x5, 15, 9, 8, 27}, - /*II_0B*/ {0x5, 17, 11, 8, 27}, - /*II_0C*/ {0x6, 1, 33, 8, 27}, - /*II_0D*/ {0x6, 3, 35, 8, 27}, - /*II_0E*/ {0x9, 0, 32, 8, 16}, - /*II_10*/ {0x5, 9, 15, 8, 31}, - /*II_11*/ {0x5, 11, 17, 8, 31}, - /*II_12*/ {0x5, 15, 9, 8, 31}, - /*II_13*/ {0x5, 17, 11, 8, 31}, - /*II_14*/ {0x6, 1, 33, 8, 31}, - /*II_15*/ {0x6, 3, 35, 8, 31}, - /*II_16*/ {0xa, 0, 32, 8, 16}, - /*II_17*/ {0xb, 0, 32, 8, 22}, - /*II_18*/ {0x5, 9, 15, 8, 36}, - /*II_19*/ {0x5, 11, 17, 8, 36}, - /*II_1A*/ {0x5, 15, 9, 8, 36}, - /*II_1B*/ {0x5, 17, 11, 8, 36}, - /*II_1C*/ {0x6, 1, 33, 8, 36}, - /*II_1D*/ {0x6, 3, 35, 8, 36}, - /*II_1E*/ {0xc, 0, 32, 8, 16}, - /*II_1F*/ {0xd, 0, 32, 8, 22}, - /*II_20*/ {0x5, 9, 15, 8, 41}, - /*II_21*/ {0x5, 11, 17, 8, 41}, - /*II_22*/ {0x5, 15, 9, 8, 41}, - /*II_23*/ {0x5, 17, 11, 8, 41}, - /*II_24*/ {0x6, 1, 33, 8, 41}, - /*II_25*/ {0x6, 3, 35, 8, 41}, - /*II_27*/ {0xe, 0, 0, 8, 46}, - /*II_28*/ {0x5, 9, 15, 8, 51}, - /*II_29*/ {0x5, 11, 17, 8, 51}, - /*II_2A*/ {0x5, 15, 9, 8, 51}, - /*II_2B*/ {0x5, 17, 11, 8, 51}, - /*II_2C*/ {0x6, 1, 33, 8, 51}, - /*II_2D*/ {0x6, 3, 35, 8, 51}, - /*II_2F*/ {0xe, 0, 0, 8, 56}, - /*II_30*/ {0x5, 9, 15, 8, 61}, - /*II_31*/ {0x5, 11, 17, 8, 61}, - /*II_32*/ {0x5, 15, 9, 8, 61}, - /*II_33*/ {0x5, 17, 11, 8, 61}, - /*II_34*/ {0x6, 1, 33, 8, 61}, - /*II_35*/ {0x6, 3, 35, 8, 61}, - /*II_37*/ {0xe, 0, 0, 8, 66}, - /*II_38*/ {0xf, 9, 15, 8, 71}, - /*II_39*/ {0xf, 11, 17, 8, 71}, - /*II_3A*/ {0xf, 15, 9, 8, 71}, - /*II_3B*/ {0xf, 17, 11, 8, 71}, - /*II_3C*/ {0x10, 1, 33, 8, 71}, - /*II_3D*/ {0x10, 3, 35, 8, 71}, - /*II_3F*/ {0xe, 0, 0, 8, 76}, - /*II_40*/ {0x11, 0, 54, 8, 81}, - /*II_40*/ {0x11, 0, 54, 8, 81}, - /*II_40*/ {0x11, 0, 54, 8, 81}, - /*II_40*/ {0x11, 0, 54, 8, 81}, - /*II_40*/ {0x11, 0, 54, 8, 81}, - /*II_40*/ {0x11, 0, 54, 8, 81}, - /*II_40*/ {0x11, 0, 54, 8, 81}, - /*II_40*/ {0x11, 0, 54, 8, 81}, - /*II_48*/ {0x11, 0, 54, 8, 86}, - /*II_48*/ {0x11, 0, 54, 8, 86}, - /*II_48*/ {0x11, 0, 54, 8, 86}, - /*II_48*/ {0x11, 0, 54, 8, 86}, - /*II_48*/ {0x11, 0, 54, 8, 86}, - /*II_48*/ {0x11, 0, 54, 8, 86}, - /*II_48*/ {0x11, 0, 54, 8, 86}, - /*II_48*/ {0x11, 0, 54, 8, 86}, - /*II_50*/ {0x12, 0, 54, 8, 16}, - /*II_50*/ {0x12, 0, 54, 8, 16}, - /*II_50*/ {0x12, 0, 54, 8, 16}, - /*II_50*/ {0x12, 0, 54, 8, 16}, - /*II_50*/ {0x12, 0, 54, 8, 16}, - /*II_50*/ {0x12, 0, 54, 8, 16}, - /*II_50*/ {0x12, 0, 54, 8, 16}, - /*II_50*/ {0x12, 0, 54, 8, 16}, - /*II_58*/ {0x13, 0, 54, 8, 22}, - /*II_58*/ {0x13, 0, 54, 8, 22}, - /*II_58*/ {0x13, 0, 54, 8, 22}, - /*II_58*/ {0x13, 0, 54, 8, 22}, - /*II_58*/ {0x13, 0, 54, 8, 22}, - /*II_58*/ {0x13, 0, 54, 8, 22}, - /*II_58*/ {0x13, 0, 54, 8, 22}, - /*II_58*/ {0x13, 0, 54, 8, 22}, - /*II_60*/ {0x14, 0, 0, 8, 91}, - /*II_61*/ {0x14, 0, 0, 8, 98}, - /*II_62*/ {0x15, 42, 11, 8, 104}, - /*II_63*/ {0x16, 10, 16, 8, 111}, - /*II_68*/ {0x12, 0, 3, 8, 16}, - /*II_6A*/ {0x18, 0, 5, 8, 16}, - /*II_6C*/ {0x19, 59, 56, 8, 123}, - /*II_6D*/ {0x1a, 59, 56, 8, 123}, - /*II_6E*/ {0x19, 55, 59, 8, 128}, - /*II_6F*/ {0x1a, 55, 59, 8, 128}, - /*II_70*/ {0x12, 0, 40, 13, 134}, - /*II_71*/ {0x12, 0, 40, 13, 138}, - /*II_72*/ {0x12, 0, 40, 13, 143}, - /*II_73*/ {0x12, 0, 40, 13, 147}, - /*II_74*/ {0x12, 0, 40, 13, 152}, - /*II_75*/ {0x12, 0, 40, 13, 156}, - /*II_76*/ {0x12, 0, 40, 13, 161}, - /*II_77*/ {0x12, 0, 40, 13, 166}, - /*II_78*/ {0x12, 0, 40, 13, 170}, - /*II_79*/ {0x12, 0, 40, 13, 174}, - /*II_7A*/ {0x12, 0, 40, 13, 179}, - /*II_7B*/ {0x12, 0, 40, 13, 183}, - /*II_7C*/ {0x12, 0, 40, 13, 188}, - /*II_7D*/ {0x12, 0, 40, 13, 192}, - /*II_7E*/ {0x12, 0, 40, 13, 197}, - /*II_7F*/ {0x12, 0, 40, 13, 202}, - /*II_84*/ {0xf, 9, 15, 8, 206}, - /*II_85*/ {0xf, 11, 17, 8, 206}, - /*II_86*/ {0x5, 9, 15, 8, 212}, - /*II_87*/ {0x5, 11, 17, 8, 212}, - /*II_88*/ {0x1b, 9, 15, 8, 218}, - /*II_89*/ {0x1b, 11, 17, 8, 218}, - /*II_8A*/ {0x1b, 15, 9, 8, 218}, - /*II_8B*/ {0x1b, 17, 11, 8, 218}, - /*II_8C*/ {0x1b, 31, 28, 8, 218}, - /*II_8D*/ {0x1b, 42, 11, 8, 223}, - /*II_8E*/ {0x1b, 28, 31, 8, 218}, - /*II_90*/ {0x6, 35, 54, 8, 212}, - /*II_91*/ {0x6, 35, 54, 8, 212}, - /*II_92*/ {0x6, 35, 54, 8, 212}, - /*II_93*/ {0x6, 35, 54, 8, 212}, - /*II_94*/ {0x6, 35, 54, 8, 212}, - /*II_95*/ {0x6, 35, 54, 8, 212}, - /*II_96*/ {0x6, 35, 54, 8, 212}, - /*II_97*/ {0x6, 35, 54, 8, 212}, - /*II_9A*/ {0xe, 0, 38, 9, 260}, - /*II_9C*/ {0x1d, 0, 0, 8, 270}, - /*II_9D*/ {0x1d, 0, 0, 8, 277}, - /*II_9E*/ {0x10, 0, 0, 8, 283}, - /*II_9F*/ {0x10, 0, 0, 8, 289}, - /*II_A0*/ {0x6, 49, 33, 8, 218}, - /*II_A1*/ {0x6, 50, 35, 8, 218}, - /*II_A2*/ {0x6, 33, 49, 8, 218}, - /*II_A3*/ {0x6, 35, 50, 8, 218}, - /*II_A4*/ {0x1e, 55, 56, 8, 295}, - /*II_A5*/ {0x1f, 55, 56, 8, 295}, - /*II_A6*/ {0x19, 56, 55, 8, 301}, - /*II_A7*/ {0x20, 56, 55, 8, 301}, - /*II_A8*/ {0x10, 1, 33, 8, 206}, - /*II_A9*/ {0x10, 3, 35, 8, 206}, - /*II_AA*/ {0x19, 33, 56, 8, 307}, - /*II_AB*/ {0x20, 35, 56, 8, 307}, - /*II_AC*/ {0x19, 55, 33, 8, 313}, - /*II_AD*/ {0x20, 55, 35, 8, 313}, - /*II_AE*/ {0x19, 33, 56, 8, 319}, - /*II_AF*/ {0x20, 35, 56, 8, 319}, - /*II_B0*/ {0x6, 1, 53, 8, 218}, - /*II_B0*/ {0x6, 1, 53, 8, 218}, - /*II_B0*/ {0x6, 1, 53, 8, 218}, - /*II_B0*/ {0x6, 1, 53, 8, 218}, - /*II_B0*/ {0x6, 1, 53, 8, 218}, - /*II_B0*/ {0x6, 1, 53, 8, 218}, - /*II_B0*/ {0x6, 1, 53, 8, 218}, - /*II_B0*/ {0x6, 1, 53, 8, 218}, - /*II_B8*/ {0x21, 3, 54, 8, 218}, - /*II_B8*/ {0x21, 3, 54, 8, 218}, - /*II_B8*/ {0x21, 3, 54, 8, 218}, - /*II_B8*/ {0x21, 3, 54, 8, 218}, - /*II_B8*/ {0x21, 3, 54, 8, 218}, - /*II_B8*/ {0x21, 3, 54, 8, 218}, - /*II_B8*/ {0x21, 3, 54, 8, 218}, - /*II_B8*/ {0x21, 3, 54, 8, 218}, - /*II_C2*/ {0x12, 0, 2, 10, 325}, - /*II_C3*/ {0x12, 0, 0, 10, 325}, - /*II_C4*/ {0x15, 37, 11, 8, 330}, - /*II_C5*/ {0x15, 37, 11, 8, 335}, - /*II_C8*/ {0x12, 8, 6, 8, 340}, - /*II_C9*/ {0x12, 0, 0, 8, 347}, - /*II_CA*/ {0x22, 0, 2, 10, 354}, - /*II_CB*/ {0x22, 0, 0, 10, 354}, - /*II_CC*/ {0x10, 0, 0, 14, 360}, - /*II_CD*/ {0x10, 0, 1, 14, 367}, - /*II_CE*/ {0xe, 0, 0, 14, 372}, - /*II_CF*/ {0x22, 0, 0, 10, 378}, - /*II_D4*/ {0xe, 0, 1, 8, 384}, - /*II_D5*/ {0xe, 0, 1, 8, 389}, - /*II_D6*/ {0xe, 0, 0, 8, 394}, - /*II_D7*/ {0x23, 0, 57, 8, 400}, - /*II_E0*/ {0x24, 0, 40, 13, 406}, - /*II_E1*/ {0x24, 0, 40, 13, 414}, - /*II_E2*/ {0x24, 0, 40, 13, 421}, - /*II_E4*/ {0x6, 1, 33, 8, 447}, - /*II_E5*/ {0x6, 1, 36, 8, 447}, - /*II_E6*/ {0x10, 33, 1, 8, 451}, - /*II_E7*/ {0x10, 36, 1, 8, 451}, - /*II_E8*/ {0x12, 0, 41, 9, 456}, - /*II_E9*/ {0x12, 0, 41, 12, 462}, - /*II_EA*/ {0xe, 0, 38, 12, 467}, - /*II_EB*/ {0x12, 0, 40, 12, 462}, - /*II_EC*/ {0x6, 59, 33, 8, 447}, - /*II_ED*/ {0x6, 59, 36, 8, 447}, - /*II_EE*/ {0x10, 33, 59, 8, 451}, - /*II_EF*/ {0x10, 36, 59, 8, 451}, - /*II_F1*/ {0x10, 0, 0, 14, 476}, - /*II_F4*/ {0x10, 0, 0, 8, 482}, - /*II_F5*/ {0x10, 0, 0, 8, 487}, - /*II_F8*/ {0x10, 0, 0, 8, 492}, - /*II_F9*/ {0x10, 0, 0, 8, 497}, - /*II_FA*/ {0x10, 0, 0, 8, 502}, - /*II_FB*/ {0x10, 0, 0, 8, 507}, - /*II_FC*/ {0x10, 0, 0, 8, 512}, - /*II_FD*/ {0x10, 0, 0, 8, 517}, - /*II_0F_02*/ {0xf, 16, 11, 8, 522}, - /*II_0F_03*/ {0xf, 16, 11, 8, 527}, - /*II_0F_05*/ {0x26, 0, 0, 27, 532}, - /*II_0F_06*/ {0x26, 0, 0, 8, 541}, - /*II_0F_07*/ {0x26, 0, 0, 27, 547}, - /*II_0F_08*/ {0x26, 0, 0, 8, 555}, - /*II_0F_09*/ {0x26, 0, 0, 8, 561}, - /*II_0F_0B*/ {0x26, 0, 0, 14, 569}, - /*II_0F_0E*/ {0x10, 0, 0, 96, 574}, - /*II_0F_1F*/ {0xf, 0, 17, 8, 581}, - /*II_0F_20*/ {0x27, 29, 14, 8, 218}, - /*II_0F_21*/ {0x27, 30, 14, 8, 218}, - /*II_0F_22*/ {0x27, 14, 29, 8, 218}, - /*II_0F_23*/ {0x27, 14, 30, 8, 218}, - /*II_0F_30*/ {0x26, 0, 0, 8, 586}, - /*II_0F_31*/ {0x26, 0, 0, 8, 593}, - /*II_0F_32*/ {0x26, 0, 0, 8, 600}, - /*II_0F_33*/ {0x26, 0, 0, 8, 607}, - /*II_0F_34*/ {0x26, 0, 0, 27, 614}, - /*II_0F_35*/ {0x26, 0, 0, 27, 624}, - /*II_0F_37*/ {0x28, 0, 0, 8, 633}, - /*II_0F_40*/ {0x29, 17, 11, 31, 641}, - /*II_0F_41*/ {0x29, 17, 11, 31, 648}, - /*II_0F_42*/ {0x29, 17, 11, 31, 656}, - /*II_0F_43*/ {0x29, 17, 11, 31, 663}, - /*II_0F_44*/ {0x29, 17, 11, 31, 671}, - /*II_0F_45*/ {0x29, 17, 11, 31, 678}, - /*II_0F_46*/ {0x29, 17, 11, 31, 686}, - /*II_0F_47*/ {0x29, 17, 11, 31, 694}, - /*II_0F_48*/ {0x29, 17, 11, 31, 701}, - /*II_0F_49*/ {0x29, 17, 11, 31, 708}, - /*II_0F_4A*/ {0x29, 17, 11, 31, 716}, - /*II_0F_4B*/ {0x29, 17, 11, 31, 723}, - /*II_0F_4C*/ {0x29, 17, 11, 31, 731}, - /*II_0F_4D*/ {0x29, 17, 11, 31, 738}, - /*II_0F_4E*/ {0x29, 17, 11, 31, 746}, - /*II_0F_4F*/ {0x29, 17, 11, 31, 754}, - /*II_0F_80*/ {0x26, 0, 41, 13, 134}, - /*II_0F_81*/ {0x26, 0, 41, 13, 138}, - /*II_0F_82*/ {0x26, 0, 41, 13, 143}, - /*II_0F_83*/ {0x26, 0, 41, 13, 147}, - /*II_0F_84*/ {0x26, 0, 41, 13, 152}, - /*II_0F_85*/ {0x26, 0, 41, 13, 156}, - /*II_0F_86*/ {0x26, 0, 41, 13, 161}, - /*II_0F_87*/ {0x26, 0, 41, 13, 166}, - /*II_0F_88*/ {0x26, 0, 41, 13, 170}, - /*II_0F_89*/ {0x26, 0, 41, 13, 174}, - /*II_0F_8A*/ {0x26, 0, 41, 13, 179}, - /*II_0F_8B*/ {0x26, 0, 41, 13, 183}, - /*II_0F_8C*/ {0x26, 0, 41, 13, 188}, - /*II_0F_8D*/ {0x26, 0, 41, 13, 192}, - /*II_0F_8E*/ {0x26, 0, 41, 13, 197}, - /*II_0F_8F*/ {0x26, 0, 41, 13, 202}, - /*II_0F_90*/ {0x29, 0, 15, 8, 761}, - /*II_0F_91*/ {0x29, 0, 15, 8, 767}, - /*II_0F_92*/ {0x29, 0, 15, 8, 774}, - /*II_0F_93*/ {0x29, 0, 15, 8, 780}, - /*II_0F_94*/ {0x29, 0, 15, 8, 787}, - /*II_0F_95*/ {0x29, 0, 15, 8, 793}, - /*II_0F_96*/ {0x29, 0, 15, 8, 800}, - /*II_0F_97*/ {0x29, 0, 15, 8, 807}, - /*II_0F_98*/ {0x29, 0, 15, 8, 813}, - /*II_0F_99*/ {0x29, 0, 15, 8, 819}, - /*II_0F_9A*/ {0x29, 0, 15, 8, 826}, - /*II_0F_9B*/ {0x29, 0, 15, 8, 832}, - /*II_0F_9C*/ {0x29, 0, 15, 8, 839}, - /*II_0F_9D*/ {0x29, 0, 15, 8, 845}, - /*II_0F_9E*/ {0x29, 0, 15, 8, 852}, - /*II_0F_9F*/ {0x29, 0, 15, 8, 859}, - /*II_0F_A0*/ {0x2a, 0, 32, 8, 16}, - /*II_0F_A1*/ {0x2b, 0, 32, 8, 22}, - /*II_0F_A2*/ {0x26, 0, 0, 8, 865}, - /*II_0F_A3*/ {0x29, 11, 17, 8, 872}, - /*II_0F_A8*/ {0x2d, 0, 32, 8, 16}, - /*II_0F_A9*/ {0x2e, 0, 32, 8, 22}, - /*II_0F_AA*/ {0x26, 0, 0, 8, 882}, - /*II_0F_AB*/ {0x2f, 11, 17, 8, 887}, - /*II_0F_AF*/ {0x29, 17, 11, 8, 117}, - /*II_0F_B0*/ {0x2f, 9, 15, 8, 898}, - /*II_0F_B1*/ {0x2f, 11, 17, 8, 898}, - /*II_0F_B2*/ {0x30, 37, 11, 8, 907}, - /*II_0F_B3*/ {0x2f, 11, 17, 8, 912}, - /*II_0F_B4*/ {0x30, 37, 11, 8, 917}, - /*II_0F_B5*/ {0x30, 37, 11, 8, 922}, - /*II_0F_B6*/ {0x29, 15, 11, 8, 927}, - /*II_0F_B7*/ {0x31, 16, 11, 8, 927}, - /*II_0F_B9*/ {0x26, 0, 0, 14, 569}, - /*II_0F_BB*/ {0x2f, 11, 17, 8, 934}, - /*II_0F_BE*/ {0x29, 15, 11, 8, 939}, - /*II_0F_BF*/ {0x31, 16, 11, 8, 939}, - /*II_0F_C0*/ {0x2f, 9, 15, 8, 946}, - /*II_0F_C1*/ {0x2f, 11, 17, 8, 946}, - /*II_0F_C3*/ {0x31, 13, 45, 48, 952}, - /*II_0F_C8*/ {0x32, 0, 54, 8, 960}, - /*II_0F_C8*/ {0x32, 0, 54, 8, 960}, - /*II_0F_C8*/ {0x32, 0, 54, 8, 960}, - /*II_0F_C8*/ {0x32, 0, 54, 8, 960}, - /*II_0F_C8*/ {0x32, 0, 54, 8, 960}, - /*II_0F_C8*/ {0x32, 0, 54, 8, 960}, - /*II_0F_C8*/ {0x32, 0, 54, 8, 960}, - /*II_0F_C8*/ {0x32, 0, 54, 8, 960}, - /*II_80_00*/ {0x33, 1, 15, 8, 11}, - /*II_80_01*/ {0x33, 1, 15, 8, 27}, - /*II_80_02*/ {0x33, 1, 15, 8, 31}, - /*II_80_03*/ {0x33, 1, 15, 8, 36}, - /*II_80_04*/ {0x33, 1, 15, 8, 41}, - /*II_80_05*/ {0x33, 1, 15, 8, 51}, - /*II_80_06*/ {0x33, 1, 15, 8, 61}, - /*II_80_07*/ {0x34, 1, 15, 8, 71}, - /*II_81_00*/ {0x33, 3, 17, 8, 11}, - /*II_81_01*/ {0x33, 3, 17, 8, 27}, - /*II_81_02*/ {0x33, 3, 17, 8, 31}, - /*II_81_03*/ {0x33, 3, 17, 8, 36}, - /*II_81_04*/ {0x33, 3, 17, 8, 41}, - /*II_81_05*/ {0x33, 3, 17, 8, 51}, - /*II_81_06*/ {0x33, 3, 17, 8, 61}, - /*II_81_07*/ {0x34, 3, 17, 8, 71}, - /*II_82_00*/ {0x35, 1, 15, 8, 11}, - /*II_82_01*/ {0x35, 1, 15, 8, 27}, - /*II_82_02*/ {0x35, 1, 15, 8, 31}, - /*II_82_03*/ {0x35, 1, 15, 8, 36}, - /*II_82_04*/ {0x35, 1, 15, 8, 41}, - /*II_82_05*/ {0x35, 1, 15, 8, 51}, - /*II_82_06*/ {0x35, 1, 15, 8, 61}, - /*II_82_07*/ {0x36, 1, 15, 8, 71}, - /*II_83_00*/ {0x33, 5, 17, 8, 11}, - /*II_83_01*/ {0x37, 5, 17, 8, 27}, - /*II_83_02*/ {0x33, 5, 17, 8, 31}, - /*II_83_03*/ {0x33, 5, 17, 8, 36}, - /*II_83_04*/ {0x37, 5, 17, 8, 41}, - /*II_83_05*/ {0x33, 5, 17, 8, 51}, - /*II_83_06*/ {0x37, 5, 17, 8, 61}, - /*II_83_07*/ {0x34, 5, 17, 8, 71}, - /*II_8F_00*/ {0x38, 0, 17, 8, 22}, - /*II_C0_00*/ {0x39, 1, 15, 8, 967}, - /*II_C0_01*/ {0x39, 1, 15, 8, 972}, - /*II_C0_02*/ {0x39, 1, 15, 8, 977}, - /*II_C0_03*/ {0x39, 1, 15, 8, 982}, - /*II_C0_04*/ {0x39, 1, 15, 8, 987}, - /*II_C0_05*/ {0x39, 1, 15, 8, 992}, - /*II_C0_06*/ {0x39, 1, 15, 8, 997}, - /*II_C0_07*/ {0x39, 1, 15, 8, 1002}, - /*II_C1_00*/ {0x39, 1, 17, 8, 967}, - /*II_C1_01*/ {0x39, 1, 17, 8, 972}, - /*II_C1_02*/ {0x39, 1, 17, 8, 977}, - /*II_C1_03*/ {0x39, 1, 17, 8, 982}, - /*II_C1_04*/ {0x39, 1, 17, 8, 987}, - /*II_C1_05*/ {0x39, 1, 17, 8, 992}, - /*II_C1_06*/ {0x39, 1, 17, 8, 997}, - /*II_C1_07*/ {0x39, 1, 17, 8, 1002}, - /*II_C6_00*/ {0x39, 1, 15, 8, 218}, - /*II_C7_00*/ {0x39, 3, 17, 8, 218}, - /*II_D0_00*/ {0x39, 51, 15, 8, 967}, - /*II_D0_01*/ {0x39, 51, 15, 8, 972}, - /*II_D0_02*/ {0x39, 51, 15, 8, 977}, - /*II_D0_03*/ {0x39, 51, 15, 8, 982}, - /*II_D0_04*/ {0x39, 51, 15, 8, 987}, - /*II_D0_05*/ {0x39, 51, 15, 8, 992}, - /*II_D0_06*/ {0x39, 51, 15, 8, 997}, - /*II_D0_07*/ {0x39, 51, 15, 8, 1002}, - /*II_D1_00*/ {0x39, 51, 17, 8, 967}, - /*II_D1_01*/ {0x39, 51, 17, 8, 972}, - /*II_D1_02*/ {0x39, 51, 17, 8, 977}, - /*II_D1_03*/ {0x39, 51, 17, 8, 982}, - /*II_D1_04*/ {0x39, 51, 17, 8, 987}, - /*II_D1_05*/ {0x39, 51, 17, 8, 992}, - /*II_D1_06*/ {0x39, 51, 17, 8, 997}, - /*II_D1_07*/ {0x39, 51, 17, 8, 1002}, - /*II_D2_00*/ {0x39, 52, 15, 8, 967}, - /*II_D2_01*/ {0x39, 52, 15, 8, 972}, - /*II_D2_02*/ {0x39, 52, 15, 8, 977}, - /*II_D2_03*/ {0x39, 52, 15, 8, 982}, - /*II_D2_04*/ {0x39, 52, 15, 8, 987}, - /*II_D2_05*/ {0x39, 52, 15, 8, 992}, - /*II_D2_06*/ {0x39, 52, 15, 8, 997}, - /*II_D2_07*/ {0x39, 52, 15, 8, 1002}, - /*II_D3_00*/ {0x39, 52, 17, 8, 967}, - /*II_D3_01*/ {0x39, 52, 17, 8, 972}, - /*II_D3_02*/ {0x39, 52, 17, 8, 977}, - /*II_D3_03*/ {0x39, 52, 17, 8, 982}, - /*II_D3_04*/ {0x39, 52, 17, 8, 987}, - /*II_D3_05*/ {0x39, 52, 17, 8, 992}, - /*II_D3_06*/ {0x39, 52, 17, 8, 997}, - /*II_D3_07*/ {0x39, 52, 17, 8, 1002}, - /*II_D8_00*/ {0x34, 0, 21, 16, 1007}, - /*II_D8_01*/ {0x34, 0, 21, 16, 1013}, - /*II_D8_02*/ {0x34, 0, 21, 16, 1019}, - /*II_D8_03*/ {0x34, 0, 21, 16, 1025}, - /*II_D8_04*/ {0x34, 0, 21, 16, 1032}, - /*II_D8_05*/ {0x34, 0, 21, 16, 1038}, - /*II_D8_06*/ {0x34, 0, 21, 16, 1045}, - /*II_D8_07*/ {0x34, 0, 21, 16, 1051}, - /*II_D8_C0*/ {0x3a, 0, 62, 16, 1007}, - /*II_D8_C0*/ {0x3a, 0, 62, 16, 1007}, - /*II_D8_C0*/ {0x3a, 0, 62, 16, 1007}, - /*II_D8_C0*/ {0x3a, 0, 62, 16, 1007}, - /*II_D8_C0*/ {0x3a, 0, 62, 16, 1007}, - /*II_D8_C0*/ {0x3a, 0, 62, 16, 1007}, - /*II_D8_C0*/ {0x3a, 0, 62, 16, 1007}, - /*II_D8_C0*/ {0x3a, 0, 62, 16, 1007}, - /*II_D8_C8*/ {0x3a, 0, 62, 16, 1013}, - /*II_D8_C8*/ {0x3a, 0, 62, 16, 1013}, - /*II_D8_C8*/ {0x3a, 0, 62, 16, 1013}, - /*II_D8_C8*/ {0x3a, 0, 62, 16, 1013}, - /*II_D8_C8*/ {0x3a, 0, 62, 16, 1013}, - /*II_D8_C8*/ {0x3a, 0, 62, 16, 1013}, - /*II_D8_C8*/ {0x3a, 0, 62, 16, 1013}, - /*II_D8_C8*/ {0x3a, 0, 62, 16, 1013}, - /*II_D8_D0*/ {0x3a, 0, 61, 16, 1019}, - /*II_D8_D0*/ {0x3a, 0, 61, 16, 1019}, - /*II_D8_D0*/ {0x3a, 0, 61, 16, 1019}, - /*II_D8_D0*/ {0x3a, 0, 61, 16, 1019}, - /*II_D8_D0*/ {0x3a, 0, 61, 16, 1019}, - /*II_D8_D0*/ {0x3a, 0, 61, 16, 1019}, - /*II_D8_D0*/ {0x3a, 0, 61, 16, 1019}, - /*II_D8_D0*/ {0x3a, 0, 61, 16, 1019}, - /*II_D8_D8*/ {0x3a, 0, 61, 16, 1025}, - /*II_D8_D9*/ {0x3a, 0, 0, 16, 1025}, - /*II_D8_D8*/ {0x3a, 0, 61, 16, 1025}, - /*II_D8_D8*/ {0x3a, 0, 61, 16, 1025}, - /*II_D8_D8*/ {0x3a, 0, 61, 16, 1025}, - /*II_D8_D8*/ {0x3a, 0, 61, 16, 1025}, - /*II_D8_D8*/ {0x3a, 0, 61, 16, 1025}, - /*II_D8_D8*/ {0x3a, 0, 61, 16, 1025}, - /*II_D8_E0*/ {0x3a, 0, 62, 16, 1032}, - /*II_D8_E0*/ {0x3a, 0, 62, 16, 1032}, - /*II_D8_E0*/ {0x3a, 0, 62, 16, 1032}, - /*II_D8_E0*/ {0x3a, 0, 62, 16, 1032}, - /*II_D8_E0*/ {0x3a, 0, 62, 16, 1032}, - /*II_D8_E0*/ {0x3a, 0, 62, 16, 1032}, - /*II_D8_E0*/ {0x3a, 0, 62, 16, 1032}, - /*II_D8_E0*/ {0x3a, 0, 62, 16, 1032}, - /*II_D8_E8*/ {0x3a, 0, 62, 16, 1038}, - /*II_D8_E8*/ {0x3a, 0, 62, 16, 1038}, - /*II_D8_E8*/ {0x3a, 0, 62, 16, 1038}, - /*II_D8_E8*/ {0x3a, 0, 62, 16, 1038}, - /*II_D8_E8*/ {0x3a, 0, 62, 16, 1038}, - /*II_D8_E8*/ {0x3a, 0, 62, 16, 1038}, - /*II_D8_E8*/ {0x3a, 0, 62, 16, 1038}, - /*II_D8_E8*/ {0x3a, 0, 62, 16, 1038}, - /*II_D8_F0*/ {0x3a, 0, 62, 16, 1045}, - /*II_D8_F0*/ {0x3a, 0, 62, 16, 1045}, - /*II_D8_F0*/ {0x3a, 0, 62, 16, 1045}, - /*II_D8_F0*/ {0x3a, 0, 62, 16, 1045}, - /*II_D8_F0*/ {0x3a, 0, 62, 16, 1045}, - /*II_D8_F0*/ {0x3a, 0, 62, 16, 1045}, - /*II_D8_F0*/ {0x3a, 0, 62, 16, 1045}, - /*II_D8_F0*/ {0x3a, 0, 62, 16, 1045}, - /*II_D8_F8*/ {0x3a, 0, 62, 16, 1051}, - /*II_D8_F8*/ {0x3a, 0, 62, 16, 1051}, - /*II_D8_F8*/ {0x3a, 0, 62, 16, 1051}, - /*II_D8_F8*/ {0x3a, 0, 62, 16, 1051}, - /*II_D8_F8*/ {0x3a, 0, 62, 16, 1051}, - /*II_D8_F8*/ {0x3a, 0, 62, 16, 1051}, - /*II_D8_F8*/ {0x3a, 0, 62, 16, 1051}, - /*II_D8_F8*/ {0x3a, 0, 62, 16, 1051}, - /*II_D9_00*/ {0x34, 0, 21, 16, 1058}, - /*II_D9_02*/ {0x34, 0, 21, 16, 1063}, - /*II_D9_03*/ {0x34, 0, 21, 16, 1068}, - /*II_D9_04*/ {0x34, 0, 42, 16, 1074}, - /*II_D9_05*/ {0x34, 0, 42, 16, 1082}, - /*II_D9_C0*/ {0x3a, 0, 61, 16, 1058}, - /*II_D9_C0*/ {0x3a, 0, 61, 16, 1058}, - /*II_D9_C0*/ {0x3a, 0, 61, 16, 1058}, - /*II_D9_C0*/ {0x3a, 0, 61, 16, 1058}, - /*II_D9_C0*/ {0x3a, 0, 61, 16, 1058}, - /*II_D9_C0*/ {0x3a, 0, 61, 16, 1058}, - /*II_D9_C0*/ {0x3a, 0, 61, 16, 1058}, - /*II_D9_C0*/ {0x3a, 0, 61, 16, 1058}, - /*II_D9_C8*/ {0x3a, 0, 61, 16, 1089}, - /*II_D9_C9*/ {0x3a, 0, 0, 16, 1089}, - /*II_D9_C8*/ {0x3a, 0, 61, 16, 1089}, - /*II_D9_C8*/ {0x3a, 0, 61, 16, 1089}, - /*II_D9_C8*/ {0x3a, 0, 61, 16, 1089}, - /*II_D9_C8*/ {0x3a, 0, 61, 16, 1089}, - /*II_D9_C8*/ {0x3a, 0, 61, 16, 1089}, - /*II_D9_C8*/ {0x3a, 0, 61, 16, 1089}, - /*II_D9_D0*/ {0x3a, 0, 0, 16, 1095}, - /*II_D9_E0*/ {0x3a, 0, 0, 16, 1101}, - /*II_D9_E1*/ {0x3a, 0, 0, 16, 1107}, - /*II_D9_E4*/ {0x3a, 0, 0, 16, 1113}, - /*II_D9_E5*/ {0x3a, 0, 0, 16, 1119}, - /*II_D9_E8*/ {0x3a, 0, 0, 16, 1125}, - /*II_D9_E9*/ {0x3a, 0, 0, 16, 1131}, - /*II_D9_EA*/ {0x3a, 0, 0, 16, 1139}, - /*II_D9_EB*/ {0x3a, 0, 0, 16, 1147}, - /*II_D9_EC*/ {0x3a, 0, 0, 16, 1154}, - /*II_D9_ED*/ {0x3a, 0, 0, 16, 1162}, - /*II_D9_EE*/ {0x3a, 0, 0, 16, 1170}, - /*II_D9_F0*/ {0x3a, 0, 0, 16, 1176}, - /*II_D9_F1*/ {0x3a, 0, 0, 16, 1183}, - /*II_D9_F2*/ {0x3a, 0, 0, 16, 1190}, - /*II_D9_F3*/ {0x3a, 0, 0, 16, 1197}, - /*II_D9_F4*/ {0x3a, 0, 0, 16, 1205}, - /*II_D9_F5*/ {0x3a, 0, 0, 16, 1214}, - /*II_D9_F6*/ {0x3a, 0, 0, 16, 1222}, - /*II_D9_F7*/ {0x3a, 0, 0, 16, 1231}, - /*II_D9_F8*/ {0x3a, 0, 0, 16, 1240}, - /*II_D9_F9*/ {0x3a, 0, 0, 16, 1247}, - /*II_D9_FA*/ {0x3a, 0, 0, 16, 1256}, - /*II_D9_FB*/ {0x3a, 0, 0, 16, 1263}, - /*II_D9_FC*/ {0x3a, 0, 0, 16, 1272}, - /*II_D9_FD*/ {0x3a, 0, 0, 16, 1281}, - /*II_D9_FE*/ {0x3a, 0, 0, 16, 1289}, - /*II_D9_FF*/ {0x3a, 0, 0, 16, 1295}, - /*II_DA_00*/ {0x34, 0, 21, 16, 1301}, - /*II_DA_01*/ {0x34, 0, 21, 16, 1308}, - /*II_DA_02*/ {0x34, 0, 21, 16, 1315}, - /*II_DA_03*/ {0x34, 0, 21, 16, 1322}, - /*II_DA_04*/ {0x34, 0, 21, 16, 1330}, - /*II_DA_05*/ {0x34, 0, 21, 16, 1337}, - /*II_DA_06*/ {0x34, 0, 21, 16, 1345}, - /*II_DA_07*/ {0x34, 0, 21, 16, 1352}, - /*II_DA_C0*/ {0x3b, 0, 62, 24, 1360}, - /*II_DA_C0*/ {0x3b, 0, 62, 24, 1360}, - /*II_DA_C0*/ {0x3b, 0, 62, 24, 1360}, - /*II_DA_C0*/ {0x3b, 0, 62, 24, 1360}, - /*II_DA_C0*/ {0x3b, 0, 62, 24, 1360}, - /*II_DA_C0*/ {0x3b, 0, 62, 24, 1360}, - /*II_DA_C0*/ {0x3b, 0, 62, 24, 1360}, - /*II_DA_C0*/ {0x3b, 0, 62, 24, 1360}, - /*II_DA_C8*/ {0x3b, 0, 62, 24, 1368}, - /*II_DA_C8*/ {0x3b, 0, 62, 24, 1368}, - /*II_DA_C8*/ {0x3b, 0, 62, 24, 1368}, - /*II_DA_C8*/ {0x3b, 0, 62, 24, 1368}, - /*II_DA_C8*/ {0x3b, 0, 62, 24, 1368}, - /*II_DA_C8*/ {0x3b, 0, 62, 24, 1368}, - /*II_DA_C8*/ {0x3b, 0, 62, 24, 1368}, - /*II_DA_C8*/ {0x3b, 0, 62, 24, 1368}, - /*II_DA_D0*/ {0x3b, 0, 62, 24, 1376}, - /*II_DA_D0*/ {0x3b, 0, 62, 24, 1376}, - /*II_DA_D0*/ {0x3b, 0, 62, 24, 1376}, - /*II_DA_D0*/ {0x3b, 0, 62, 24, 1376}, - /*II_DA_D0*/ {0x3b, 0, 62, 24, 1376}, - /*II_DA_D0*/ {0x3b, 0, 62, 24, 1376}, - /*II_DA_D0*/ {0x3b, 0, 62, 24, 1376}, - /*II_DA_D0*/ {0x3b, 0, 62, 24, 1376}, - /*II_DA_D8*/ {0x3b, 0, 62, 24, 1385}, - /*II_DA_D8*/ {0x3b, 0, 62, 24, 1385}, - /*II_DA_D8*/ {0x3b, 0, 62, 24, 1385}, - /*II_DA_D8*/ {0x3b, 0, 62, 24, 1385}, - /*II_DA_D8*/ {0x3b, 0, 62, 24, 1385}, - /*II_DA_D8*/ {0x3b, 0, 62, 24, 1385}, - /*II_DA_D8*/ {0x3b, 0, 62, 24, 1385}, - /*II_DA_D8*/ {0x3b, 0, 62, 24, 1385}, - /*II_DA_E9*/ {0x3a, 0, 0, 16, 1393}, - /*II_DB_00*/ {0x34, 0, 21, 16, 1402}, - /*II_DB_01*/ {0x3c, 0, 21, 56, 1408}, - /*II_DB_02*/ {0x34, 0, 21, 16, 1416}, - /*II_DB_03*/ {0x34, 0, 21, 16, 1422}, - /*II_DB_05*/ {0x34, 0, 23, 16, 1058}, - /*II_DB_07*/ {0x34, 0, 23, 16, 1068}, - /*II_DB_C0*/ {0x3b, 0, 62, 24, 1429}, - /*II_DB_C0*/ {0x3b, 0, 62, 24, 1429}, - /*II_DB_C0*/ {0x3b, 0, 62, 24, 1429}, - /*II_DB_C0*/ {0x3b, 0, 62, 24, 1429}, - /*II_DB_C0*/ {0x3b, 0, 62, 24, 1429}, - /*II_DB_C0*/ {0x3b, 0, 62, 24, 1429}, - /*II_DB_C0*/ {0x3b, 0, 62, 24, 1429}, - /*II_DB_C0*/ {0x3b, 0, 62, 24, 1429}, - /*II_DB_C8*/ {0x3b, 0, 62, 24, 1438}, - /*II_DB_C8*/ {0x3b, 0, 62, 24, 1438}, - /*II_DB_C8*/ {0x3b, 0, 62, 24, 1438}, - /*II_DB_C8*/ {0x3b, 0, 62, 24, 1438}, - /*II_DB_C8*/ {0x3b, 0, 62, 24, 1438}, - /*II_DB_C8*/ {0x3b, 0, 62, 24, 1438}, - /*II_DB_C8*/ {0x3b, 0, 62, 24, 1438}, - /*II_DB_C8*/ {0x3b, 0, 62, 24, 1438}, - /*II_DB_D0*/ {0x3b, 0, 62, 24, 1447}, - /*II_DB_D0*/ {0x3b, 0, 62, 24, 1447}, - /*II_DB_D0*/ {0x3b, 0, 62, 24, 1447}, - /*II_DB_D0*/ {0x3b, 0, 62, 24, 1447}, - /*II_DB_D0*/ {0x3b, 0, 62, 24, 1447}, - /*II_DB_D0*/ {0x3b, 0, 62, 24, 1447}, - /*II_DB_D0*/ {0x3b, 0, 62, 24, 1447}, - /*II_DB_D0*/ {0x3b, 0, 62, 24, 1447}, - /*II_DB_D8*/ {0x3b, 0, 62, 24, 1457}, - /*II_DB_D8*/ {0x3b, 0, 62, 24, 1457}, - /*II_DB_D8*/ {0x3b, 0, 62, 24, 1457}, - /*II_DB_D8*/ {0x3b, 0, 62, 24, 1457}, - /*II_DB_D8*/ {0x3b, 0, 62, 24, 1457}, - /*II_DB_D8*/ {0x3b, 0, 62, 24, 1457}, - /*II_DB_D8*/ {0x3b, 0, 62, 24, 1457}, - /*II_DB_D8*/ {0x3b, 0, 62, 24, 1457}, - /*II_DB_E0*/ {0x3a, 0, 0, 16, 1466}, - /*II_DB_E1*/ {0x3a, 0, 0, 16, 1472}, - /*II_DB_E4*/ {0x3a, 0, 0, 16, 1480}, - /*II_DB_E8*/ {0x3b, 0, 62, 16, 1488}, - /*II_DB_E8*/ {0x3b, 0, 62, 16, 1488}, - /*II_DB_E8*/ {0x3b, 0, 62, 16, 1488}, - /*II_DB_E8*/ {0x3b, 0, 62, 16, 1488}, - /*II_DB_E8*/ {0x3b, 0, 62, 16, 1488}, - /*II_DB_E8*/ {0x3b, 0, 62, 16, 1488}, - /*II_DB_E8*/ {0x3b, 0, 62, 16, 1488}, - /*II_DB_E8*/ {0x3b, 0, 62, 16, 1488}, - /*II_DB_F0*/ {0x3b, 0, 62, 24, 1496}, - /*II_DB_F0*/ {0x3b, 0, 62, 24, 1496}, - /*II_DB_F0*/ {0x3b, 0, 62, 24, 1496}, - /*II_DB_F0*/ {0x3b, 0, 62, 24, 1496}, - /*II_DB_F0*/ {0x3b, 0, 62, 24, 1496}, - /*II_DB_F0*/ {0x3b, 0, 62, 24, 1496}, - /*II_DB_F0*/ {0x3b, 0, 62, 24, 1496}, - /*II_DB_F0*/ {0x3b, 0, 62, 24, 1496}, - /*II_DC_00*/ {0x34, 0, 22, 16, 1007}, - /*II_DC_01*/ {0x34, 0, 22, 16, 1013}, - /*II_DC_02*/ {0x34, 0, 22, 16, 1019}, - /*II_DC_03*/ {0x34, 0, 22, 16, 1025}, - /*II_DC_04*/ {0x34, 0, 22, 16, 1032}, - /*II_DC_05*/ {0x34, 0, 22, 16, 1038}, - /*II_DC_06*/ {0x34, 0, 22, 16, 1045}, - /*II_DC_07*/ {0x34, 0, 22, 16, 1051}, - /*II_DC_C0*/ {0x3a, 0, 63, 16, 1007}, - /*II_DC_C0*/ {0x3a, 0, 63, 16, 1007}, - /*II_DC_C0*/ {0x3a, 0, 63, 16, 1007}, - /*II_DC_C0*/ {0x3a, 0, 63, 16, 1007}, - /*II_DC_C0*/ {0x3a, 0, 63, 16, 1007}, - /*II_DC_C0*/ {0x3a, 0, 63, 16, 1007}, - /*II_DC_C0*/ {0x3a, 0, 63, 16, 1007}, - /*II_DC_C0*/ {0x3a, 0, 63, 16, 1007}, - /*II_DC_C8*/ {0x3a, 0, 63, 16, 1013}, - /*II_DC_C8*/ {0x3a, 0, 63, 16, 1013}, - /*II_DC_C8*/ {0x3a, 0, 63, 16, 1013}, - /*II_DC_C8*/ {0x3a, 0, 63, 16, 1013}, - /*II_DC_C8*/ {0x3a, 0, 63, 16, 1013}, - /*II_DC_C8*/ {0x3a, 0, 63, 16, 1013}, - /*II_DC_C8*/ {0x3a, 0, 63, 16, 1013}, - /*II_DC_C8*/ {0x3a, 0, 63, 16, 1013}, - /*II_DC_E0*/ {0x3a, 0, 63, 16, 1038}, - /*II_DC_E0*/ {0x3a, 0, 63, 16, 1038}, - /*II_DC_E0*/ {0x3a, 0, 63, 16, 1038}, - /*II_DC_E0*/ {0x3a, 0, 63, 16, 1038}, - /*II_DC_E0*/ {0x3a, 0, 63, 16, 1038}, - /*II_DC_E0*/ {0x3a, 0, 63, 16, 1038}, - /*II_DC_E0*/ {0x3a, 0, 63, 16, 1038}, - /*II_DC_E0*/ {0x3a, 0, 63, 16, 1038}, - /*II_DC_E8*/ {0x3a, 0, 63, 16, 1032}, - /*II_DC_E8*/ {0x3a, 0, 63, 16, 1032}, - /*II_DC_E8*/ {0x3a, 0, 63, 16, 1032}, - /*II_DC_E8*/ {0x3a, 0, 63, 16, 1032}, - /*II_DC_E8*/ {0x3a, 0, 63, 16, 1032}, - /*II_DC_E8*/ {0x3a, 0, 63, 16, 1032}, - /*II_DC_E8*/ {0x3a, 0, 63, 16, 1032}, - /*II_DC_E8*/ {0x3a, 0, 63, 16, 1032}, - /*II_DC_F0*/ {0x3a, 0, 63, 16, 1051}, - /*II_DC_F0*/ {0x3a, 0, 63, 16, 1051}, - /*II_DC_F0*/ {0x3a, 0, 63, 16, 1051}, - /*II_DC_F0*/ {0x3a, 0, 63, 16, 1051}, - /*II_DC_F0*/ {0x3a, 0, 63, 16, 1051}, - /*II_DC_F0*/ {0x3a, 0, 63, 16, 1051}, - /*II_DC_F0*/ {0x3a, 0, 63, 16, 1051}, - /*II_DC_F0*/ {0x3a, 0, 63, 16, 1051}, - /*II_DC_F8*/ {0x3a, 0, 63, 16, 1045}, - /*II_DC_F8*/ {0x3a, 0, 63, 16, 1045}, - /*II_DC_F8*/ {0x3a, 0, 63, 16, 1045}, - /*II_DC_F8*/ {0x3a, 0, 63, 16, 1045}, - /*II_DC_F8*/ {0x3a, 0, 63, 16, 1045}, - /*II_DC_F8*/ {0x3a, 0, 63, 16, 1045}, - /*II_DC_F8*/ {0x3a, 0, 63, 16, 1045}, - /*II_DC_F8*/ {0x3a, 0, 63, 16, 1045}, - /*II_DD_00*/ {0x34, 0, 22, 16, 1058}, - /*II_DD_01*/ {0x3c, 0, 22, 56, 1408}, - /*II_DD_02*/ {0x34, 0, 22, 16, 1063}, - /*II_DD_03*/ {0x34, 0, 22, 16, 1068}, - /*II_DD_04*/ {0x34, 0, 42, 16, 1503}, - /*II_DD_C0*/ {0x3a, 0, 61, 16, 1511}, - /*II_DD_C0*/ {0x3a, 0, 61, 16, 1511}, - /*II_DD_C0*/ {0x3a, 0, 61, 16, 1511}, - /*II_DD_C0*/ {0x3a, 0, 61, 16, 1511}, - /*II_DD_C0*/ {0x3a, 0, 61, 16, 1511}, - /*II_DD_C0*/ {0x3a, 0, 61, 16, 1511}, - /*II_DD_C0*/ {0x3a, 0, 61, 16, 1511}, - /*II_DD_C0*/ {0x3a, 0, 61, 16, 1511}, - /*II_DD_D0*/ {0x3a, 0, 61, 16, 1063}, - /*II_DD_D0*/ {0x3a, 0, 61, 16, 1063}, - /*II_DD_D0*/ {0x3a, 0, 61, 16, 1063}, - /*II_DD_D0*/ {0x3a, 0, 61, 16, 1063}, - /*II_DD_D0*/ {0x3a, 0, 61, 16, 1063}, - /*II_DD_D0*/ {0x3a, 0, 61, 16, 1063}, - /*II_DD_D0*/ {0x3a, 0, 61, 16, 1063}, - /*II_DD_D0*/ {0x3a, 0, 61, 16, 1063}, - /*II_DD_D8*/ {0x3a, 0, 61, 16, 1068}, - /*II_DD_D8*/ {0x3a, 0, 61, 16, 1068}, - /*II_DD_D8*/ {0x3a, 0, 61, 16, 1068}, - /*II_DD_D8*/ {0x3a, 0, 61, 16, 1068}, - /*II_DD_D8*/ {0x3a, 0, 61, 16, 1068}, - /*II_DD_D8*/ {0x3a, 0, 61, 16, 1068}, - /*II_DD_D8*/ {0x3a, 0, 61, 16, 1068}, - /*II_DD_D8*/ {0x3a, 0, 61, 16, 1068}, - /*II_DD_E0*/ {0x3a, 0, 63, 16, 1518}, - /*II_DD_E1*/ {0x3a, 0, 0, 16, 1518}, - /*II_DD_E0*/ {0x3a, 0, 63, 16, 1518}, - /*II_DD_E0*/ {0x3a, 0, 63, 16, 1518}, - /*II_DD_E0*/ {0x3a, 0, 63, 16, 1518}, - /*II_DD_E0*/ {0x3a, 0, 63, 16, 1518}, - /*II_DD_E0*/ {0x3a, 0, 63, 16, 1518}, - /*II_DD_E0*/ {0x3a, 0, 63, 16, 1518}, - /*II_DD_E8*/ {0x3a, 0, 61, 16, 1525}, - /*II_DD_E9*/ {0x3a, 0, 0, 16, 1525}, - /*II_DD_E8*/ {0x3a, 0, 61, 16, 1525}, - /*II_DD_E8*/ {0x3a, 0, 61, 16, 1525}, - /*II_DD_E8*/ {0x3a, 0, 61, 16, 1525}, - /*II_DD_E8*/ {0x3a, 0, 61, 16, 1525}, - /*II_DD_E8*/ {0x3a, 0, 61, 16, 1525}, - /*II_DD_E8*/ {0x3a, 0, 61, 16, 1525}, - /*II_DE_00*/ {0x34, 0, 20, 16, 1301}, - /*II_DE_01*/ {0x34, 0, 20, 16, 1308}, - /*II_DE_02*/ {0x34, 0, 20, 16, 1315}, - /*II_DE_03*/ {0x34, 0, 20, 16, 1322}, - /*II_DE_04*/ {0x34, 0, 20, 16, 1330}, - /*II_DE_05*/ {0x34, 0, 20, 16, 1337}, - /*II_DE_06*/ {0x34, 0, 20, 16, 1345}, - /*II_DE_07*/ {0x34, 0, 20, 16, 1352}, - /*II_DE_C0*/ {0x3a, 0, 63, 16, 1533}, - /*II_DE_C1*/ {0x3a, 0, 0, 16, 1533}, - /*II_DE_C0*/ {0x3a, 0, 63, 16, 1533}, - /*II_DE_C0*/ {0x3a, 0, 63, 16, 1533}, - /*II_DE_C0*/ {0x3a, 0, 63, 16, 1533}, - /*II_DE_C0*/ {0x3a, 0, 63, 16, 1533}, - /*II_DE_C0*/ {0x3a, 0, 63, 16, 1533}, - /*II_DE_C0*/ {0x3a, 0, 63, 16, 1533}, - /*II_DE_C8*/ {0x3a, 0, 63, 16, 1540}, - /*II_DE_C9*/ {0x3a, 0, 0, 16, 1540}, - /*II_DE_C8*/ {0x3a, 0, 63, 16, 1540}, - /*II_DE_C8*/ {0x3a, 0, 63, 16, 1540}, - /*II_DE_C8*/ {0x3a, 0, 63, 16, 1540}, - /*II_DE_C8*/ {0x3a, 0, 63, 16, 1540}, - /*II_DE_C8*/ {0x3a, 0, 63, 16, 1540}, - /*II_DE_C8*/ {0x3a, 0, 63, 16, 1540}, - /*II_DE_D9*/ {0x3a, 0, 0, 16, 1547}, - /*II_DE_E0*/ {0x3a, 0, 63, 16, 1555}, - /*II_DE_E1*/ {0x3a, 0, 0, 16, 1555}, - /*II_DE_E0*/ {0x3a, 0, 63, 16, 1555}, - /*II_DE_E0*/ {0x3a, 0, 63, 16, 1555}, - /*II_DE_E0*/ {0x3a, 0, 63, 16, 1555}, - /*II_DE_E0*/ {0x3a, 0, 63, 16, 1555}, - /*II_DE_E0*/ {0x3a, 0, 63, 16, 1555}, - /*II_DE_E0*/ {0x3a, 0, 63, 16, 1555}, - /*II_DE_E8*/ {0x3a, 0, 63, 16, 1563}, - /*II_DE_E9*/ {0x3a, 0, 0, 16, 1563}, - /*II_DE_E8*/ {0x3a, 0, 63, 16, 1563}, - /*II_DE_E8*/ {0x3a, 0, 63, 16, 1563}, - /*II_DE_E8*/ {0x3a, 0, 63, 16, 1563}, - /*II_DE_E8*/ {0x3a, 0, 63, 16, 1563}, - /*II_DE_E8*/ {0x3a, 0, 63, 16, 1563}, - /*II_DE_E8*/ {0x3a, 0, 63, 16, 1563}, - /*II_DE_F0*/ {0x3a, 0, 63, 16, 1570}, - /*II_DE_F1*/ {0x3a, 0, 0, 16, 1570}, - /*II_DE_F0*/ {0x3a, 0, 63, 16, 1570}, - /*II_DE_F0*/ {0x3a, 0, 63, 16, 1570}, - /*II_DE_F0*/ {0x3a, 0, 63, 16, 1570}, - /*II_DE_F0*/ {0x3a, 0, 63, 16, 1570}, - /*II_DE_F0*/ {0x3a, 0, 63, 16, 1570}, - /*II_DE_F0*/ {0x3a, 0, 63, 16, 1570}, - /*II_DE_F8*/ {0x3a, 0, 63, 16, 1578}, - /*II_DE_F9*/ {0x3a, 0, 0, 16, 1578}, - /*II_DE_F8*/ {0x3a, 0, 63, 16, 1578}, - /*II_DE_F8*/ {0x3a, 0, 63, 16, 1578}, - /*II_DE_F8*/ {0x3a, 0, 63, 16, 1578}, - /*II_DE_F8*/ {0x3a, 0, 63, 16, 1578}, - /*II_DE_F8*/ {0x3a, 0, 63, 16, 1578}, - /*II_DE_F8*/ {0x3a, 0, 63, 16, 1578}, - /*II_DF_00*/ {0x34, 0, 20, 16, 1402}, - /*II_DF_01*/ {0x3c, 0, 20, 56, 1408}, - /*II_DF_02*/ {0x34, 0, 20, 16, 1416}, - /*II_DF_03*/ {0x34, 0, 20, 16, 1422}, - /*II_DF_04*/ {0x34, 0, 23, 16, 1585}, - /*II_DF_05*/ {0x34, 0, 22, 16, 1402}, - /*II_DF_06*/ {0x34, 0, 23, 16, 1591}, - /*II_DF_07*/ {0x34, 0, 22, 16, 1422}, - /*II_DF_E8*/ {0x3b, 0, 62, 16, 1598}, - /*II_DF_E8*/ {0x3b, 0, 62, 16, 1598}, - /*II_DF_E8*/ {0x3b, 0, 62, 16, 1598}, - /*II_DF_E8*/ {0x3b, 0, 62, 16, 1598}, - /*II_DF_E8*/ {0x3b, 0, 62, 16, 1598}, - /*II_DF_E8*/ {0x3b, 0, 62, 16, 1598}, - /*II_DF_E8*/ {0x3b, 0, 62, 16, 1598}, - /*II_DF_E8*/ {0x3b, 0, 62, 16, 1598}, - /*II_DF_F0*/ {0x3b, 0, 62, 16, 1607}, - /*II_DF_F0*/ {0x3b, 0, 62, 16, 1607}, - /*II_DF_F0*/ {0x3b, 0, 62, 16, 1607}, - /*II_DF_F0*/ {0x3b, 0, 62, 16, 1607}, - /*II_DF_F0*/ {0x3b, 0, 62, 16, 1607}, - /*II_DF_F0*/ {0x3b, 0, 62, 16, 1607}, - /*II_DF_F0*/ {0x3b, 0, 62, 16, 1607}, - /*II_DF_F0*/ {0x3b, 0, 62, 16, 1607}, - /*II_F6_00*/ {0x34, 1, 15, 8, 206}, - /*II_F6_02*/ {0x33, 0, 15, 8, 1615}, - /*II_F6_03*/ {0x33, 0, 15, 8, 1620}, - /*II_F6_04*/ {0x39, 0, 15, 8, 1625}, - /*II_F6_05*/ {0x39, 0, 15, 8, 117}, - /*II_F6_06*/ {0x39, 0, 15, 8, 1630}, - /*II_F6_07*/ {0x39, 0, 15, 8, 1635}, - /*II_F7_00*/ {0x34, 3, 17, 8, 206}, - /*II_F7_02*/ {0x33, 0, 17, 8, 1615}, - /*II_F7_03*/ {0x33, 0, 17, 8, 1620}, - /*II_F7_04*/ {0x39, 0, 17, 8, 1625}, - /*II_F7_05*/ {0x39, 0, 17, 8, 117}, - /*II_F7_06*/ {0x39, 0, 17, 8, 1630}, - /*II_F7_07*/ {0x39, 0, 17, 8, 1635}, - /*II_FE_00*/ {0x33, 0, 15, 8, 81}, - /*II_FE_01*/ {0x33, 0, 15, 8, 86}, - /*II_FF_00*/ {0x33, 0, 17, 8, 81}, - /*II_FF_01*/ {0x33, 0, 17, 8, 86}, - /*II_FF_02*/ {0x3d, 0, 17, 9, 456}, - /*II_FF_03*/ {0x3e, 0, 37, 9, 260}, - /*II_FF_04*/ {0x3d, 0, 17, 12, 462}, - /*II_FF_05*/ {0x3e, 0, 37, 12, 467}, - /*II_FF_06*/ {0x3d, 0, 17, 8, 16}, - /*II_0F_00_00*/ {0x34, 0, 17, 8, 1641}, - /*II_0F_00_01*/ {0x34, 0, 16, 8, 1647}, - /*II_0F_00_02*/ {0x34, 0, 16, 8, 1652}, - /*II_0F_00_03*/ {0x3c, 0, 16, 8, 1658}, - /*II_0F_00_04*/ {0x34, 0, 16, 8, 1663}, - /*II_0F_00_05*/ {0x34, 0, 16, 8, 1669}, - /*II_0F_01_00*/ {0x3d, 0, 39, 8, 1675}, - /*II_0F_01_01*/ {0x3d, 0, 39, 8, 1681}, - /*II_0F_01_02*/ {0x3d, 0, 39, 8, 1687}, - /*II_0F_01_03*/ {0x3d, 0, 39, 8, 1693}, - /*II_0F_01_04*/ {0x3f, 0, 28, 8, 1699}, - /*II_0F_01_06*/ {0x40, 0, 16, 8, 1705}, - /*II_0F_01_07*/ {0x3c, 0, 42, 8, 1711}, - /*II_0F_01_C1*/ {0x3b, 0, 0, 112, 1719}, - /*II_0F_01_C2*/ {0x3b, 0, 0, 112, 1727}, - /*II_0F_01_C3*/ {0x3b, 0, 0, 112, 1737}, - /*II_0F_01_C4*/ {0x3b, 0, 0, 112, 1747}, - /*II_0F_01_C8*/ {0x3b, 0, 0, 8, 1755}, - /*II_0F_01_C9*/ {0x3b, 0, 0, 8, 1764}, - /*II_0F_01_D0*/ {0x26, 0, 0, 8, 1771}, - /*II_0F_01_D1*/ {0x26, 0, 0, 8, 1779}, - /*II_0F_01_D4*/ {0x3b, 0, 0, 112, 1787}, - /*II_0F_01_D8*/ {0x3c, 0, 58, 120, 1795}, - /*II_0F_01_D9*/ {0x3b, 0, 0, 120, 1802}, - /*II_0F_01_DA*/ {0x3b, 0, 58, 120, 1811}, - /*II_0F_01_DB*/ {0x3b, 0, 58, 120, 1819}, - /*II_0F_01_DC*/ {0x3b, 0, 0, 120, 1827}, - /*II_0F_01_DD*/ {0x3b, 0, 0, 120, 1833}, - /*II_0F_01_DE*/ {0x3b, 0, 58, 120, 1839}, - /*II_0F_01_DF*/ {0x3b, 60, 58, 120, 1847}, - /*II_0F_01_F8*/ {0x41, 0, 0, 8, 1856}, - /*II_0F_01_F9*/ {0x41, 0, 0, 8, 1864}, - /*II_0F_0D_00*/ {0x3c, 0, 42, 96, 1872}, - /*II_0F_0D_01*/ {0x3c, 0, 42, 96, 1882}, - /*II_0F_0F_0C*/ {0x42, 67, 64, 104, 1893}, - /*II_0F_0F_0D*/ {0x42, 67, 64, 96, 1900}, - /*II_0F_0F_1C*/ {0x42, 67, 64, 104, 1907}, - /*II_0F_0F_1D*/ {0x42, 67, 64, 96, 1914}, - /*II_0F_0F_8A*/ {0x42, 67, 64, 104, 1921}, - /*II_0F_0F_8E*/ {0x42, 67, 64, 104, 1929}, - /*II_0F_0F_90*/ {0x42, 67, 64, 96, 1938}, - /*II_0F_0F_94*/ {0x42, 67, 64, 96, 1947}, - /*II_0F_0F_96*/ {0x42, 67, 64, 96, 1954}, - /*II_0F_0F_97*/ {0x42, 67, 64, 96, 1961}, - /*II_0F_0F_9A*/ {0x42, 67, 64, 96, 1970}, - /*II_0F_0F_9E*/ {0x42, 67, 64, 96, 1977}, - /*II_0F_0F_A0*/ {0x42, 67, 64, 96, 1984}, - /*II_0F_0F_A4*/ {0x42, 67, 64, 96, 1993}, - /*II_0F_0F_A6*/ {0x42, 67, 64, 96, 2000}, - /*II_0F_0F_A7*/ {0x42, 67, 64, 96, 2010}, - /*II_0F_0F_AA*/ {0x42, 67, 64, 96, 2020}, - /*II_0F_0F_AE*/ {0x42, 67, 64, 96, 2028}, - /*II_0F_0F_B0*/ {0x42, 67, 64, 96, 2035}, - /*II_0F_0F_B4*/ {0x42, 67, 64, 96, 2044}, - /*II_0F_0F_B6*/ {0x42, 67, 64, 96, 2051}, - /*II_0F_0F_B7*/ {0x42, 67, 64, 96, 2061}, - /*II_0F_0F_BB*/ {0x42, 67, 64, 104, 2070}, - /*II_0F_0F_BF*/ {0x42, 67, 64, 96, 2078}, - /*II_0F_10*/ {0x29, 73, 68, 40, 2087}, - /*II_66_0F_10*/ {0x29, 73, 68, 48, 2095}, - /*II_F3_0F_10*/ {0x29, 71, 68, 40, 2103}, - /*II_F2_0F_10*/ {0x29, 72, 68, 48, 2110}, - /*II_0F_11*/ {0x29, 68, 73, 40, 2087}, - /*II_66_0F_11*/ {0x29, 68, 73, 48, 2095}, - /*II_F3_0F_11*/ {0x29, 68, 71, 40, 2103}, - /*II_F2_0F_11*/ {0x29, 68, 72, 48, 2110}, - /*II_66_0F_12*/ {0x29, 46, 68, 48, 2168}, - /*II_F3_0F_12*/ {0x29, 72, 68, 56, 2176}, - /*II_F2_0F_12*/ {0x29, 72, 68, 56, 2186}, - /*II_0F_13*/ {0x29, 68, 46, 40, 2160}, - /*II_66_0F_13*/ {0x29, 68, 46, 48, 2168}, - /*II_0F_14*/ {0x28, 73, 68, 40, 2244}, - /*II_66_0F_14*/ {0x28, 73, 68, 48, 2254}, - /*II_0F_15*/ {0x28, 73, 68, 40, 2286}, - /*II_66_0F_15*/ {0x28, 73, 68, 48, 2296}, - /*II_66_0F_16*/ {0x29, 46, 68, 48, 2345}, - /*II_F3_0F_16*/ {0x29, 73, 68, 56, 2353}, - /*II_0F_17*/ {0x29, 68, 46, 40, 2337}, - /*II_66_0F_17*/ {0x29, 68, 46, 48, 2345}, - /*II_0F_18_00*/ {0x3c, 0, 42, 40, 2402}, - /*II_0F_18_01*/ {0x3c, 0, 42, 40, 2415}, - /*II_0F_18_02*/ {0x3c, 0, 42, 40, 2427}, - /*II_0F_18_03*/ {0x3c, 0, 42, 40, 2439}, - /*II_0F_28*/ {0x29, 73, 68, 40, 2451}, - /*II_66_0F_28*/ {0x29, 73, 68, 48, 2459}, - /*II_0F_29*/ {0x29, 68, 73, 40, 2451}, - /*II_66_0F_29*/ {0x29, 68, 73, 48, 2459}, - /*II_0F_2A*/ {0x28, 67, 68, 40, 2485}, - /*II_66_0F_2A*/ {0x28, 67, 68, 48, 2495}, - /*II_F3_0F_2A*/ {0x30, 18, 68, 40, 2505}, - /*II_F2_0F_2A*/ {0x30, 18, 68, 48, 2515}, - /*II_0F_2B*/ {0x29, 68, 47, 40, 2547}, - /*II_66_0F_2B*/ {0x29, 68, 47, 48, 2556}, - /*II_F3_0F_2B*/ {0x29, 68, 44, 88, 2565}, - /*II_F2_0F_2B*/ {0x29, 68, 46, 88, 2574}, - /*II_0F_2C*/ {0x28, 72, 64, 40, 2603}, - /*II_66_0F_2C*/ {0x28, 73, 64, 48, 2614}, - /*II_F3_0F_2C*/ {0x30, 71, 13, 40, 2625}, - /*II_F2_0F_2C*/ {0x30, 72, 13, 48, 2636}, - /*II_0F_2D*/ {0x28, 72, 64, 40, 2671}, - /*II_66_0F_2D*/ {0x28, 73, 68, 48, 2681}, - /*II_F3_0F_2D*/ {0x30, 71, 13, 40, 2691}, - /*II_F2_0F_2D*/ {0x30, 72, 13, 48, 2701}, - /*II_0F_2E*/ {0x28, 71, 68, 40, 2733}, - /*II_66_0F_2E*/ {0x28, 72, 68, 48, 2742}, - /*II_0F_2F*/ {0x28, 71, 68, 40, 2771}, - /*II_66_0F_2F*/ {0x28, 72, 68, 48, 2779}, - /*II_0F_50*/ {0x49, 69, 12, 40, 2805}, - /*II_66_0F_50*/ {0x49, 69, 12, 48, 2815}, - /*II_0F_51*/ {0x28, 73, 68, 40, 2847}, - /*II_66_0F_51*/ {0x28, 73, 68, 48, 2855}, - /*II_F3_0F_51*/ {0x28, 71, 68, 40, 2863}, - /*II_F2_0F_51*/ {0x28, 72, 68, 48, 2871}, - /*II_0F_52*/ {0x28, 73, 68, 40, 2915}, - /*II_F3_0F_52*/ {0x28, 71, 68, 40, 2924}, - /*II_0F_53*/ {0x28, 73, 68, 40, 2953}, - /*II_F3_0F_53*/ {0x28, 71, 68, 40, 2960}, - /*II_0F_54*/ {0x28, 73, 68, 40, 2983}, - /*II_66_0F_54*/ {0x28, 73, 68, 48, 2990}, - /*II_0F_55*/ {0x28, 73, 68, 40, 3013}, - /*II_66_0F_55*/ {0x28, 73, 68, 48, 3021}, - /*II_0F_56*/ {0x28, 73, 68, 40, 3047}, - /*II_66_0F_56*/ {0x28, 73, 68, 48, 3053}, - /*II_0F_57*/ {0x28, 73, 68, 40, 3073}, - /*II_66_0F_57*/ {0x28, 73, 68, 48, 3080}, - /*II_0F_58*/ {0x28, 73, 68, 40, 3103}, - /*II_66_0F_58*/ {0x28, 73, 68, 48, 3110}, - /*II_F3_0F_58*/ {0x28, 71, 68, 40, 3117}, - /*II_F2_0F_58*/ {0x28, 72, 68, 48, 3124}, - /*II_0F_59*/ {0x28, 73, 68, 40, 3163}, - /*II_66_0F_59*/ {0x28, 73, 68, 48, 3170}, - /*II_F3_0F_59*/ {0x28, 71, 68, 40, 3177}, - /*II_F2_0F_59*/ {0x28, 72, 68, 48, 3184}, - /*II_0F_5A*/ {0x28, 72, 68, 48, 3223}, - /*II_66_0F_5A*/ {0x28, 73, 68, 48, 3233}, - /*II_F3_0F_5A*/ {0x28, 71, 68, 48, 3243}, - /*II_F2_0F_5A*/ {0x28, 72, 68, 48, 3253}, - /*II_0F_5B*/ {0x28, 73, 68, 48, 3307}, - /*II_66_0F_5B*/ {0x28, 73, 68, 48, 3317}, - /*II_F3_0F_5B*/ {0x28, 73, 68, 48, 3327}, - /*II_0F_5C*/ {0x28, 73, 68, 40, 3372}, - /*II_66_0F_5C*/ {0x28, 73, 68, 48, 3379}, - /*II_F3_0F_5C*/ {0x28, 71, 68, 40, 3386}, - /*II_F2_0F_5C*/ {0x28, 72, 68, 48, 3393}, - /*II_0F_5D*/ {0x28, 73, 68, 40, 3432}, - /*II_66_0F_5D*/ {0x28, 73, 68, 48, 3439}, - /*II_F3_0F_5D*/ {0x28, 71, 68, 40, 3446}, - /*II_F2_0F_5D*/ {0x28, 72, 68, 48, 3453}, - /*II_0F_5E*/ {0x28, 73, 68, 40, 3492}, - /*II_66_0F_5E*/ {0x28, 73, 68, 48, 3499}, - /*II_F3_0F_5E*/ {0x28, 71, 68, 40, 3506}, - /*II_F2_0F_5E*/ {0x28, 72, 68, 48, 3513}, - /*II_0F_5F*/ {0x28, 73, 68, 40, 3552}, - /*II_66_0F_5F*/ {0x28, 73, 68, 48, 3559}, - /*II_F3_0F_5F*/ {0x28, 71, 68, 40, 3566}, - /*II_F2_0F_5F*/ {0x28, 72, 68, 48, 3573}, - /*II_0F_60*/ {0x28, 66, 64, 32, 3612}, - /*II_66_0F_60*/ {0x28, 73, 68, 48, 3612}, - /*II_0F_61*/ {0x28, 66, 64, 32, 3635}, - /*II_66_0F_61*/ {0x28, 73, 68, 48, 3635}, - /*II_0F_62*/ {0x28, 66, 64, 32, 3658}, - /*II_66_0F_62*/ {0x28, 73, 68, 48, 3658}, - /*II_0F_63*/ {0x28, 67, 64, 32, 3681}, - /*II_66_0F_63*/ {0x28, 73, 68, 48, 3681}, - /*II_0F_64*/ {0x28, 67, 64, 32, 3702}, - /*II_66_0F_64*/ {0x28, 73, 68, 48, 3702}, - /*II_0F_65*/ {0x28, 67, 64, 32, 3721}, - /*II_66_0F_65*/ {0x28, 73, 68, 48, 3721}, - /*II_0F_66*/ {0x28, 67, 64, 32, 3740}, - /*II_66_0F_66*/ {0x28, 73, 68, 48, 3740}, - /*II_0F_67*/ {0x28, 67, 64, 32, 3759}, - /*II_66_0F_67*/ {0x28, 73, 68, 48, 3759}, - /*II_0F_68*/ {0x28, 67, 64, 32, 3780}, - /*II_66_0F_68*/ {0x28, 73, 68, 48, 3780}, - /*II_0F_69*/ {0x28, 67, 64, 32, 3803}, - /*II_66_0F_69*/ {0x28, 73, 68, 48, 3803}, - /*II_0F_6A*/ {0x28, 67, 64, 32, 3826}, - /*II_66_0F_6A*/ {0x28, 73, 68, 48, 3826}, - /*II_0F_6B*/ {0x28, 67, 64, 32, 3849}, - /*II_66_0F_6B*/ {0x28, 73, 68, 48, 3849}, - /*II_66_0F_6C*/ {0x28, 73, 68, 48, 3870}, - /*II_66_0F_6D*/ {0x28, 73, 68, 48, 3895}, - /*II_0F_6F*/ {0x29, 67, 64, 32, 3926}, - /*II_66_0F_6F*/ {0x29, 73, 68, 48, 3946}, - /*II_F3_0F_6F*/ {0x29, 73, 68, 48, 3954}, - /*II_0F_74*/ {0x28, 67, 64, 32, 4043}, - /*II_66_0F_74*/ {0x28, 73, 68, 48, 4043}, - /*II_0F_75*/ {0x28, 67, 64, 32, 4062}, - /*II_66_0F_75*/ {0x28, 73, 68, 48, 4062}, - /*II_0F_76*/ {0x28, 67, 64, 32, 4081}, - /*II_66_0F_76*/ {0x28, 73, 68, 48, 4081}, - /*II_0F_77*/ {0x26, 0, 0, 32, 4100}, - /*II_0F_78*/ {0x4e, 13, 18, 112, 4128}, - /*II_0F_79*/ {0x4e, 18, 13, 112, 4152}, - /*II_66_0F_79*/ {0x28, 69, 68, 88, 4136}, - /*II_F2_0F_79*/ {0x51, 69, 68, 88, 4143}, - /*II_0F_7A_30*/ {0x26, 72, 68, 112, 4161}, - /*II_0F_7A_31*/ {0x26, 68, 72, 112, 4171}, - /*II_66_0F_7C*/ {0x28, 73, 68, 56, 4181}, - /*II_F2_0F_7C*/ {0x28, 73, 68, 56, 4189}, - /*II_66_0F_7D*/ {0x28, 73, 68, 56, 4215}, - /*II_F2_0F_7D*/ {0x28, 73, 68, 56, 4223}, - /*II_F3_0F_7E*/ {0x29, 72, 68, 48, 3926}, - /*II_0F_7F*/ {0x29, 64, 67, 32, 3926}, - /*II_66_0F_7F*/ {0x29, 68, 73, 48, 3946}, - /*II_F3_0F_7F*/ {0x29, 68, 73, 48, 3954}, - /*II_F3_0F_B8*/ {0x55, 17, 11, 80, 4338}, - /*II_0F_BA_04*/ {0x56, 1, 17, 8, 872}, - /*II_0F_BA_05*/ {0x37, 1, 17, 8, 887}, - /*II_0F_BA_06*/ {0x37, 1, 17, 8, 912}, - /*II_0F_BA_07*/ {0x37, 1, 17, 8, 934}, - /*II_0F_BC*/ {0x28, 17, 11, 8, 4346}, - /*II_F3_0F_BC*/ {0x57, 17, 11, 112, 4351}, - /*II_0F_BD*/ {0x28, 17, 11, 8, 4358}, - /*II_F3_0F_BD*/ {0x58, 17, 11, 8, 4363}, - /*II_0F_C7_07*/ {0x3c, 0, 46, 112, 6385}, - /*II_66_0F_D0*/ {0x28, 73, 68, 56, 6394}, - /*II_F2_0F_D0*/ {0x28, 73, 68, 56, 6404}, - /*II_0F_D1*/ {0x28, 67, 64, 32, 6436}, - /*II_66_0F_D1*/ {0x28, 73, 68, 48, 6436}, - /*II_0F_D2*/ {0x28, 67, 64, 32, 6451}, - /*II_66_0F_D2*/ {0x28, 73, 68, 48, 6451}, - /*II_0F_D3*/ {0x28, 67, 64, 32, 6466}, - /*II_66_0F_D3*/ {0x28, 73, 68, 48, 6466}, - /*II_0F_D4*/ {0x28, 72, 68, 48, 6481}, - /*II_66_0F_D4*/ {0x28, 73, 68, 48, 6481}, - /*II_0F_D5*/ {0x28, 67, 64, 32, 6496}, - /*II_66_0F_D5*/ {0x28, 73, 68, 48, 6496}, - /*II_66_0F_D6*/ {0x29, 68, 72, 48, 3926}, - /*II_F3_0F_D6*/ {0x49, 65, 68, 48, 6513}, - /*II_F2_0F_D6*/ {0x49, 69, 64, 48, 6522}, - /*II_0F_D7*/ {0x51, 65, 12, 40, 6531}, - /*II_66_0F_D7*/ {0x51, 69, 12, 48, 6531}, - /*II_0F_D8*/ {0x28, 67, 64, 32, 6552}, - /*II_66_0F_D8*/ {0x28, 73, 68, 48, 6552}, - /*II_0F_D9*/ {0x28, 67, 64, 32, 6571}, - /*II_66_0F_D9*/ {0x28, 73, 68, 48, 6571}, - /*II_0F_DA*/ {0x28, 67, 64, 40, 6590}, - /*II_66_0F_DA*/ {0x28, 73, 68, 48, 6590}, - /*II_0F_DB*/ {0x28, 67, 64, 32, 6607}, - /*II_66_0F_DB*/ {0x28, 73, 68, 48, 6607}, - /*II_0F_DC*/ {0x28, 67, 64, 32, 6620}, - /*II_66_0F_DC*/ {0x28, 73, 68, 48, 6620}, - /*II_0F_DD*/ {0x28, 67, 64, 32, 6639}, - /*II_66_0F_DD*/ {0x28, 73, 68, 48, 6639}, - /*II_0F_DE*/ {0x28, 67, 64, 40, 6648}, - /*II_66_0F_DE*/ {0x28, 73, 68, 48, 6648}, - /*II_0F_DF*/ {0x28, 67, 64, 32, 6665}, - /*II_66_0F_DF*/ {0x28, 73, 68, 48, 6665}, - /*II_0F_E0*/ {0x28, 67, 64, 40, 6680}, - /*II_66_0F_E0*/ {0x28, 73, 68, 48, 6680}, - /*II_0F_E1*/ {0x28, 67, 64, 32, 6695}, - /*II_66_0F_E1*/ {0x28, 73, 68, 48, 6695}, - /*II_0F_E2*/ {0x28, 67, 64, 32, 6710}, - /*II_66_0F_E2*/ {0x28, 73, 68, 48, 6710}, - /*II_0F_E3*/ {0x28, 67, 64, 40, 6725}, - /*II_66_0F_E3*/ {0x28, 73, 68, 48, 6725}, - /*II_0F_E4*/ {0x28, 67, 64, 40, 6740}, - /*II_66_0F_E4*/ {0x28, 73, 68, 48, 6740}, - /*II_0F_E5*/ {0x28, 67, 64, 32, 6759}, - /*II_66_0F_E5*/ {0x28, 73, 68, 48, 6759}, - /*II_66_0F_E6*/ {0x28, 73, 68, 48, 6776}, - /*II_F3_0F_E6*/ {0x28, 72, 68, 48, 6787}, - /*II_F2_0F_E6*/ {0x28, 73, 68, 48, 6797}, - /*II_0F_E7*/ {0x29, 64, 46, 40, 6841}, - /*II_66_0F_E7*/ {0x29, 68, 47, 48, 6849}, - /*II_0F_E8*/ {0x28, 67, 64, 32, 6868}, - /*II_66_0F_E8*/ {0x28, 73, 68, 48, 6868}, - /*II_0F_E9*/ {0x28, 67, 64, 32, 6885}, - /*II_66_0F_E9*/ {0x28, 73, 68, 48, 6885}, - /*II_0F_EA*/ {0x28, 67, 64, 40, 6902}, - /*II_66_0F_EA*/ {0x28, 73, 68, 48, 6902}, - /*II_0F_EB*/ {0x28, 67, 64, 32, 6919}, - /*II_66_0F_EB*/ {0x28, 73, 68, 48, 6919}, - /*II_0F_EC*/ {0x28, 67, 64, 32, 6930}, - /*II_66_0F_EC*/ {0x28, 73, 68, 48, 6930}, - /*II_0F_ED*/ {0x28, 67, 64, 32, 6947}, - /*II_66_0F_ED*/ {0x28, 73, 68, 48, 6947}, - /*II_0F_EE*/ {0x28, 67, 64, 40, 6964}, - /*II_66_0F_EE*/ {0x28, 73, 68, 48, 6964}, - /*II_0F_EF*/ {0x28, 67, 64, 32, 6981}, - /*II_66_0F_EF*/ {0x28, 73, 68, 48, 6981}, - /*II_F2_0F_F0*/ {0x28, 42, 68, 56, 6994}, - /*II_0F_F1*/ {0x28, 67, 64, 32, 7009}, - /*II_66_0F_F1*/ {0x28, 73, 68, 48, 7009}, - /*II_0F_F2*/ {0x28, 67, 64, 32, 7024}, - /*II_66_0F_F2*/ {0x28, 73, 68, 48, 7024}, - /*II_0F_F3*/ {0x28, 67, 64, 32, 7039}, - /*II_66_0F_F3*/ {0x28, 73, 68, 48, 7039}, - /*II_0F_F4*/ {0x28, 67, 64, 48, 7054}, - /*II_66_0F_F4*/ {0x28, 73, 68, 48, 7054}, - /*II_0F_F5*/ {0x28, 67, 64, 32, 7073}, - /*II_66_0F_F5*/ {0x28, 73, 68, 48, 7073}, - /*II_0F_F6*/ {0x28, 67, 64, 40, 7092}, - /*II_66_0F_F6*/ {0x28, 73, 68, 48, 7092}, - /*II_0F_F7*/ {0x51, 65, 64, 40, 7109}, - /*II_66_0F_F7*/ {0x51, 69, 68, 48, 7119}, - /*II_0F_F8*/ {0x28, 67, 64, 32, 7144}, - /*II_66_0F_F8*/ {0x28, 73, 68, 48, 7144}, - /*II_0F_F9*/ {0x28, 67, 64, 32, 7159}, - /*II_66_0F_F9*/ {0x28, 73, 68, 48, 7159}, - /*II_0F_FA*/ {0x28, 67, 64, 32, 7174}, - /*II_66_0F_FA*/ {0x28, 73, 68, 48, 7174}, - /*II_0F_FB*/ {0x28, 67, 64, 48, 7189}, - /*II_66_0F_FB*/ {0x28, 73, 68, 48, 7189}, - /*II_0F_FC*/ {0x28, 67, 64, 32, 7204}, - /*II_66_0F_FC*/ {0x28, 73, 68, 48, 7204}, - /*II_0F_FD*/ {0x28, 67, 64, 32, 7219}, - /*II_66_0F_FD*/ {0x28, 73, 68, 48, 7219}, - /*II_0F_FE*/ {0x28, 67, 64, 32, 7234}, - /*II_66_0F_FE*/ {0x28, 73, 68, 48, 7234}, - /*II_D9_06*/ {0x34, 0, 42, 16, 7249}, - /*II_9B_D9_06*/ {0x60, 0, 42, 16, 7258}, - /*II_D9_07*/ {0x34, 0, 42, 16, 7266}, - /*II_9B_D9_07*/ {0x60, 0, 42, 16, 7274}, - /*II_DB_E2*/ {0x3a, 0, 0, 16, 7281}, - /*II_9B_DB_E2*/ {0x61, 0, 0, 16, 7289}, - /*II_DB_E3*/ {0x3a, 0, 0, 16, 7296}, - /*II_9B_DB_E3*/ {0x61, 0, 0, 16, 7304}, - /*II_DD_06*/ {0x34, 0, 42, 16, 7311}, - /*II_9B_DD_06*/ {0x60, 0, 42, 16, 7319}, - /*II_DD_07*/ {0x34, 0, 42, 16, 7326}, - /*II_9B_DD_07*/ {0x60, 0, 42, 16, 7334}, - /*II_DF_E0*/ {0x3a, 0, 34, 16, 7326}, - /*II_9B_DF_E0*/ {0x61, 0, 34, 16, 7334}, - /*II_0F_38_00*/ {0x28, 67, 64, 64, 7341}, - /*II_66_0F_38_00*/ {0x28, 73, 68, 64, 7341}, - /*II_0F_38_01*/ {0x28, 67, 64, 64, 7358}, - /*II_66_0F_38_01*/ {0x28, 73, 68, 64, 7358}, - /*II_0F_38_02*/ {0x28, 67, 64, 64, 7375}, - /*II_66_0F_38_02*/ {0x28, 73, 68, 64, 7375}, - /*II_0F_38_03*/ {0x28, 67, 64, 64, 7392}, - /*II_66_0F_38_03*/ {0x28, 73, 68, 64, 7392}, - /*II_0F_38_04*/ {0x28, 67, 64, 64, 7411}, - /*II_66_0F_38_04*/ {0x28, 73, 68, 64, 7411}, - /*II_0F_38_05*/ {0x28, 67, 64, 64, 7434}, - /*II_66_0F_38_05*/ {0x28, 73, 68, 64, 7434}, - /*II_0F_38_06*/ {0x28, 67, 64, 64, 7451}, - /*II_66_0F_38_06*/ {0x28, 73, 68, 64, 7451}, - /*II_0F_38_07*/ {0x28, 67, 64, 64, 7468}, - /*II_66_0F_38_07*/ {0x28, 73, 68, 64, 7468}, - /*II_0F_38_08*/ {0x28, 67, 64, 64, 7487}, - /*II_66_0F_38_08*/ {0x28, 73, 68, 64, 7487}, - /*II_0F_38_09*/ {0x28, 67, 64, 64, 7504}, - /*II_66_0F_38_09*/ {0x28, 73, 68, 64, 7504}, - /*II_0F_38_0A*/ {0x28, 67, 64, 64, 7521}, - /*II_66_0F_38_0A*/ {0x28, 73, 68, 64, 7521}, - /*II_0F_38_0B*/ {0x28, 67, 64, 64, 7538}, - /*II_66_0F_38_0B*/ {0x28, 73, 68, 64, 7538}, - /*II_66_0F_38_17*/ {0x28, 73, 68, 80, 7629}, - /*II_0F_38_1C*/ {0x28, 67, 64, 64, 7688}, - /*II_66_0F_38_1C*/ {0x28, 73, 68, 64, 7688}, - /*II_0F_38_1D*/ {0x28, 67, 64, 64, 7703}, - /*II_66_0F_38_1D*/ {0x28, 73, 68, 64, 7703}, - /*II_0F_38_1E*/ {0x28, 67, 64, 64, 7718}, - /*II_66_0F_38_1E*/ {0x28, 73, 68, 64, 7718}, - /*II_66_0F_38_20*/ {0x28, 72, 68, 72, 7733}, - /*II_66_0F_38_21*/ {0x28, 71, 68, 72, 7754}, - /*II_66_0F_38_22*/ {0x28, 70, 68, 72, 7775}, - /*II_66_0F_38_23*/ {0x28, 72, 68, 72, 7796}, - /*II_66_0F_38_24*/ {0x28, 71, 68, 72, 7817}, - /*II_66_0F_38_25*/ {0x28, 72, 68, 72, 7838}, - /*II_66_0F_38_28*/ {0x28, 73, 68, 72, 7859}, - /*II_66_0F_38_29*/ {0x28, 73, 68, 72, 7876}, - /*II_66_0F_38_2A*/ {0x29, 47, 68, 72, 7895}, - /*II_66_0F_38_2B*/ {0x28, 73, 68, 72, 7916}, - /*II_66_0F_38_30*/ {0x28, 72, 68, 72, 7961}, - /*II_66_0F_38_31*/ {0x28, 71, 68, 72, 7982}, - /*II_66_0F_38_32*/ {0x28, 70, 68, 72, 8003}, - /*II_66_0F_38_33*/ {0x28, 72, 68, 72, 8024}, - /*II_66_0F_38_34*/ {0x28, 71, 68, 72, 8045}, - /*II_66_0F_38_35*/ {0x28, 72, 68, 72, 8066}, - /*II_66_0F_38_37*/ {0x28, 73, 68, 80, 8087}, - /*II_66_0F_38_38*/ {0x28, 73, 68, 72, 8106}, - /*II_66_0F_38_39*/ {0x28, 73, 68, 72, 8123}, - /*II_66_0F_38_3A*/ {0x28, 73, 68, 72, 8140}, - /*II_66_0F_38_3B*/ {0x28, 73, 68, 72, 8157}, - /*II_66_0F_38_3C*/ {0x28, 73, 68, 72, 8174}, - /*II_66_0F_38_3D*/ {0x28, 73, 68, 72, 8191}, - /*II_66_0F_38_3E*/ {0x28, 73, 68, 72, 8208}, - /*II_66_0F_38_3F*/ {0x28, 73, 68, 72, 8225}, - /*II_66_0F_38_40*/ {0x28, 73, 68, 72, 8242}, - /*II_66_0F_38_41*/ {0x28, 73, 68, 72, 8259}, - /*II_66_0F_38_80*/ {0x4e, 47, 13, 112, 8284}, - /*II_66_0F_38_81*/ {0x4e, 47, 13, 112, 8292}, - /*II_66_0F_38_82*/ {0x4e, 47, 13, 112, 8301}, - /*II_66_0F_38_DB*/ {0x28, 73, 68, 152, 9150}, - /*II_66_0F_38_DC*/ {0x28, 73, 68, 152, 9167}, - /*II_66_0F_38_DD*/ {0x28, 73, 68, 152, 9184}, - /*II_66_0F_38_DE*/ {0x28, 73, 68, 152, 9209}, - /*II_66_0F_38_DF*/ {0x28, 73, 68, 152, 9226}, - /*II_0F_38_F0*/ {0x29, 17, 11, 8, 9251}, - /*II_F2_0F_38_F0*/ {0x29, 15, 13, 80, 9258}, - /*II_0F_38_F1*/ {0x29, 11, 17, 8, 9251}, - /*II_F2_0F_38_F1*/ {0x29, 17, 13, 80, 9258}, - /*II_0F_71_02*/ {0x63, 1, 65, 32, 6436}, - /*II_66_0F_71_02*/ {0x3c, 1, 69, 48, 6436}, - /*II_0F_71_04*/ {0x63, 1, 65, 32, 6695}, - /*II_66_0F_71_04*/ {0x3c, 1, 69, 48, 6695}, - /*II_0F_71_06*/ {0x63, 1, 65, 32, 7009}, - /*II_66_0F_71_06*/ {0x3c, 1, 69, 48, 7009}, - /*II_0F_72_02*/ {0x63, 1, 65, 32, 6451}, - /*II_66_0F_72_02*/ {0x3c, 1, 69, 48, 6451}, - /*II_0F_72_04*/ {0x63, 1, 65, 32, 6710}, - /*II_66_0F_72_04*/ {0x3c, 1, 69, 48, 6710}, - /*II_0F_72_06*/ {0x63, 1, 65, 32, 7024}, - /*II_66_0F_72_06*/ {0x3c, 1, 69, 48, 7024}, - /*II_0F_73_02*/ {0x63, 1, 65, 32, 6466}, - /*II_66_0F_73_02*/ {0x3c, 1, 69, 48, 6466}, - /*II_66_0F_73_03*/ {0x3c, 1, 69, 48, 9830}, - /*II_0F_73_06*/ {0x63, 1, 65, 32, 7039}, - /*II_66_0F_73_06*/ {0x3c, 1, 69, 48, 7039}, - /*II_66_0F_73_07*/ {0x3c, 1, 69, 48, 9847}, - /*II_F3_0F_AE_00*/ {0x65, 0, 13, 112, 9882}, - /*II_F3_0F_AE_01*/ {0x65, 0, 13, 112, 9912}, - /*II_0F_AE_02*/ {0x3c, 0, 42, 8, 9922}, - /*II_F3_0F_AE_02*/ {0x65, 0, 13, 112, 9931}, - /*II_0F_AE_03*/ {0x3c, 0, 42, 8, 9951}, - /*II_F3_0F_AE_03*/ {0x65, 0, 13, 112, 9960}, - /*II_66_0F_C7_06*/ {0x3c, 0, 46, 112, 9997}, - /*II_F3_0F_C7_06*/ {0x3c, 0, 46, 112, 10006} +_InstInfo InstInfos[1242] = { + /*II_00*/ {0x0, 11}, + /*II_01*/ {0x1, 11}, + /*II_02*/ {0x2, 11}, + /*II_03*/ {0x3, 11}, + /*II_04*/ {0x4, 11}, + /*II_05*/ {0x5, 11}, + /*II_06*/ {0x6, 16}, + /*II_07*/ {0x7, 22}, + /*II_08*/ {0x8, 27}, + /*II_09*/ {0x9, 27}, + /*II_0A*/ {0xa, 27}, + /*II_0B*/ {0xb, 27}, + /*II_0C*/ {0xc, 27}, + /*II_0D*/ {0xd, 27}, + /*II_0E*/ {0xe, 16}, + /*II_10*/ {0xf, 31}, + /*II_11*/ {0x10, 31}, + /*II_12*/ {0x11, 31}, + /*II_13*/ {0x12, 31}, + /*II_14*/ {0x13, 31}, + /*II_15*/ {0x14, 31}, + /*II_16*/ {0x15, 16}, + /*II_17*/ {0x16, 22}, + /*II_18*/ {0xf, 36}, + /*II_19*/ {0x10, 36}, + /*II_1A*/ {0x11, 36}, + /*II_1B*/ {0x12, 36}, + /*II_1C*/ {0x13, 36}, + /*II_1D*/ {0x14, 36}, + /*II_1E*/ {0x17, 16}, + /*II_1F*/ {0x18, 22}, + /*II_20*/ {0x19, 41}, + /*II_21*/ {0x1a, 41}, + /*II_22*/ {0x1b, 41}, + /*II_23*/ {0x1c, 41}, + /*II_24*/ {0x1d, 41}, + /*II_25*/ {0x1e, 41}, + /*II_27*/ {0x1f, 46}, + /*II_28*/ {0x0, 51}, + /*II_29*/ {0x1, 51}, + /*II_2A*/ {0x2, 51}, + /*II_2B*/ {0x3, 51}, + /*II_2C*/ {0x4, 51}, + /*II_2D*/ {0x5, 51}, + /*II_2F*/ {0x1f, 56}, + /*II_30*/ {0x20, 61}, + /*II_31*/ {0x21, 61}, + /*II_32*/ {0x22, 61}, + /*II_33*/ {0x23, 61}, + /*II_34*/ {0x24, 61}, + /*II_35*/ {0x25, 61}, + /*II_37*/ {0x26, 66}, + /*II_38*/ {0x27, 71}, + /*II_39*/ {0x28, 71}, + /*II_3A*/ {0x29, 71}, + /*II_3B*/ {0x2a, 71}, + /*II_3C*/ {0x2b, 71}, + /*II_3D*/ {0x2c, 71}, + /*II_3F*/ {0x26, 76}, + /*II_40*/ {0x2d, 81}, + /*II_40*/ {0x2d, 81}, + /*II_40*/ {0x2d, 81}, + /*II_40*/ {0x2d, 81}, + /*II_40*/ {0x2d, 81}, + /*II_40*/ {0x2d, 81}, + /*II_40*/ {0x2d, 81}, + /*II_40*/ {0x2d, 81}, + /*II_48*/ {0x2d, 86}, + /*II_48*/ {0x2d, 86}, + /*II_48*/ {0x2d, 86}, + /*II_48*/ {0x2d, 86}, + /*II_48*/ {0x2d, 86}, + /*II_48*/ {0x2d, 86}, + /*II_48*/ {0x2d, 86}, + /*II_48*/ {0x2d, 86}, + /*II_50*/ {0x2e, 16}, + /*II_50*/ {0x2e, 16}, + /*II_50*/ {0x2e, 16}, + /*II_50*/ {0x2e, 16}, + /*II_50*/ {0x2e, 16}, + /*II_50*/ {0x2e, 16}, + /*II_50*/ {0x2e, 16}, + /*II_50*/ {0x2e, 16}, + /*II_58*/ {0x2f, 22}, + /*II_58*/ {0x2f, 22}, + /*II_58*/ {0x2f, 22}, + /*II_58*/ {0x2f, 22}, + /*II_58*/ {0x2f, 22}, + /*II_58*/ {0x2f, 22}, + /*II_58*/ {0x2f, 22}, + /*II_58*/ {0x2f, 22}, + /*II_60*/ {0x30, 91}, + /*II_61*/ {0x30, 98}, + /*II_62*/ {0x31, 104}, + /*II_63*/ {0x32, 111}, + /*II_68*/ {0x33, 16}, + /*II_6A*/ {0x35, 16}, + /*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}, + /*II_73*/ {0x3b, 147}, + /*II_74*/ {0x3c, 152}, + /*II_75*/ {0x3c, 156}, + /*II_76*/ {0x3d, 161}, + /*II_77*/ {0x3d, 166}, + /*II_78*/ {0x3e, 170}, + /*II_79*/ {0x3e, 174}, + /*II_7A*/ {0x3f, 179}, + /*II_7B*/ {0x3f, 183}, + /*II_7C*/ {0x40, 188}, + /*II_7D*/ {0x40, 192}, + /*II_7E*/ {0x41, 197}, + /*II_7F*/ {0x41, 202}, + /*II_84*/ {0x42, 206}, + /*II_85*/ {0x43, 206}, + /*II_86*/ {0x44, 212}, + /*II_87*/ {0x45, 212}, + /*II_88*/ {0x46, 218}, + /*II_89*/ {0x47, 218}, + /*II_8A*/ {0x48, 218}, + /*II_8B*/ {0x49, 218}, + /*II_8C*/ {0x4a, 218}, + /*II_8D*/ {0x4b, 223}, + /*II_8E*/ {0x4c, 218}, + /*II_90*/ {0x4d, 212}, + /*II_91*/ {0x4d, 212}, + /*II_92*/ {0x4d, 212}, + /*II_93*/ {0x4d, 212}, + /*II_94*/ {0x4d, 212}, + /*II_95*/ {0x4d, 212}, + /*II_96*/ {0x4d, 212}, + /*II_97*/ {0x4d, 212}, + /*II_9A*/ {0x4f, 260}, + /*II_9C*/ {0x50, 270}, + /*II_9D*/ {0x51, 277}, + /*II_9E*/ {0x52, 283}, + /*II_9F*/ {0x53, 289}, + /*II_A0*/ {0x54, 218}, + /*II_A1*/ {0x55, 218}, + /*II_A2*/ {0x56, 218}, + /*II_A3*/ {0x57, 218}, + /*II_A4*/ {0x58, 295}, + /*II_A5*/ {0x59, 295}, + /*II_A6*/ {0x5a, 301}, + /*II_A7*/ {0x5b, 301}, + /*II_A8*/ {0x5c, 206}, + /*II_A9*/ {0x5d, 206}, + /*II_AA*/ {0x5e, 307}, + /*II_AB*/ {0x5f, 307}, + /*II_AC*/ {0x60, 313}, + /*II_AD*/ {0x61, 313}, + /*II_AE*/ {0x62, 319}, + /*II_AF*/ {0x63, 319}, + /*II_B0*/ {0x64, 218}, + /*II_B0*/ {0x64, 218}, + /*II_B0*/ {0x64, 218}, + /*II_B0*/ {0x64, 218}, + /*II_B0*/ {0x64, 218}, + /*II_B0*/ {0x64, 218}, + /*II_B0*/ {0x64, 218}, + /*II_B0*/ {0x64, 218}, + /*II_B8*/ {0x65, 218}, + /*II_B8*/ {0x65, 218}, + /*II_B8*/ {0x65, 218}, + /*II_B8*/ {0x65, 218}, + /*II_B8*/ {0x65, 218}, + /*II_B8*/ {0x65, 218}, + /*II_B8*/ {0x65, 218}, + /*II_B8*/ {0x65, 218}, + /*II_C2*/ {0x66, 325}, + /*II_C3*/ {0x67, 325}, + /*II_C4*/ {0x68, 330}, + /*II_C5*/ {0x68, 335}, + /*II_C8*/ {0x69, 340}, + /*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*/ {0x53, 482}, + /*II_F5*/ {0x83, 487}, + /*II_F8*/ {0x83, 492}, + /*II_F9*/ {0x83, 497}, + /*II_FA*/ {0x84, 502}, + /*II_FB*/ {0x84, 507}, + /*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, 541}, + /*II_0F_07*/ {0x87, 547}, + /*II_0F_08*/ {0x88, 555}, + /*II_0F_09*/ {0x88, 561}, + /*II_0F_0B*/ {0x89, 569}, + /*II_0F_0E*/ {0x8a, 574}, + /*II_0F_1F*/ {0x8b, 581}, + /*II_0F_20*/ {0x8c, 218}, + /*II_0F_21*/ {0x8d, 218}, + /*II_0F_22*/ {0x8e, 218}, + /*II_0F_23*/ {0x8f, 218}, + /*II_0F_30*/ {0x88, 586}, + /*II_0F_31*/ {0x88, 593}, + /*II_0F_32*/ {0x88, 600}, + /*II_0F_33*/ {0x88, 607}, + /*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*/ {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*/ {0xd9, 997}, + /*II_C1_07*/ {0xd9, 1002}, + /*II_C6_00*/ {0xd5, 218}, + /*II_C7_00*/ {0xda, 218}, + /*II_D0_00*/ {0xdb, 967}, + /*II_D0_01*/ {0xdb, 972}, + /*II_D0_02*/ {0xdc, 977}, + /*II_D0_03*/ {0xdc, 982}, + /*II_D0_04*/ {0xdd, 987}, + /*II_D0_05*/ {0xdd, 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*/ {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*/ {0xe6, 997}, + /*II_D2_07*/ {0xe6, 1002}, + /*II_D3_00*/ {0xe7, 967}, + /*II_D3_01*/ {0xe7, 972}, + /*II_D3_02*/ {0xe8, 977}, + /*II_D3_03*/ {0xe8, 982}, + /*II_D3_04*/ {0xe9, 987}, + /*II_D3_05*/ {0xe9, 992}, + /*II_D3_06*/ {0xea, 997}, + /*II_D3_07*/ {0xea, 1002}, + /*II_D8_00*/ {0xeb, 1007}, + /*II_D8_01*/ {0xeb, 1013}, + /*II_D8_02*/ {0xeb, 1019}, + /*II_D8_03*/ {0xeb, 1025}, + /*II_D8_04*/ {0xeb, 1032}, + /*II_D8_05*/ {0xeb, 1038}, + /*II_D8_06*/ {0xeb, 1045}, + /*II_D8_07*/ {0xeb, 1051}, + /*II_D8_C0*/ {0xec, 1007}, + /*II_D8_C0*/ {0xec, 1007}, + /*II_D8_C0*/ {0xec, 1007}, + /*II_D8_C0*/ {0xec, 1007}, + /*II_D8_C0*/ {0xec, 1007}, + /*II_D8_C0*/ {0xec, 1007}, + /*II_D8_C0*/ {0xec, 1007}, + /*II_D8_C0*/ {0xec, 1007}, + /*II_D8_C8*/ {0xec, 1013}, + /*II_D8_C8*/ {0xec, 1013}, + /*II_D8_C8*/ {0xec, 1013}, + /*II_D8_C8*/ {0xec, 1013}, + /*II_D8_C8*/ {0xec, 1013}, + /*II_D8_C8*/ {0xec, 1013}, + /*II_D8_C8*/ {0xec, 1013}, + /*II_D8_C8*/ {0xec, 1013}, + /*II_D8_D0*/ {0xed, 1019}, + /*II_D8_D0*/ {0xed, 1019}, + /*II_D8_D0*/ {0xed, 1019}, + /*II_D8_D0*/ {0xed, 1019}, + /*II_D8_D0*/ {0xed, 1019}, + /*II_D8_D0*/ {0xed, 1019}, + /*II_D8_D0*/ {0xed, 1019}, + /*II_D8_D0*/ {0xed, 1019}, + /*II_D8_D8*/ {0xed, 1025}, + /*II_D8_D9*/ {0xee, 1025}, + /*II_D8_D8*/ {0xed, 1025}, + /*II_D8_D8*/ {0xed, 1025}, + /*II_D8_D8*/ {0xed, 1025}, + /*II_D8_D8*/ {0xed, 1025}, + /*II_D8_D8*/ {0xed, 1025}, + /*II_D8_D8*/ {0xed, 1025}, + /*II_D8_E0*/ {0xec, 1032}, + /*II_D8_E0*/ {0xec, 1032}, + /*II_D8_E0*/ {0xec, 1032}, + /*II_D8_E0*/ {0xec, 1032}, + /*II_D8_E0*/ {0xec, 1032}, + /*II_D8_E0*/ {0xec, 1032}, + /*II_D8_E0*/ {0xec, 1032}, + /*II_D8_E0*/ {0xec, 1032}, + /*II_D8_E8*/ {0xec, 1038}, + /*II_D8_E8*/ {0xec, 1038}, + /*II_D8_E8*/ {0xec, 1038}, + /*II_D8_E8*/ {0xec, 1038}, + /*II_D8_E8*/ {0xec, 1038}, + /*II_D8_E8*/ {0xec, 1038}, + /*II_D8_E8*/ {0xec, 1038}, + /*II_D8_E8*/ {0xec, 1038}, + /*II_D8_F0*/ {0xec, 1045}, + /*II_D8_F0*/ {0xec, 1045}, + /*II_D8_F0*/ {0xec, 1045}, + /*II_D8_F0*/ {0xec, 1045}, + /*II_D8_F0*/ {0xec, 1045}, + /*II_D8_F0*/ {0xec, 1045}, + /*II_D8_F0*/ {0xec, 1045}, + /*II_D8_F0*/ {0xec, 1045}, + /*II_D8_F8*/ {0xec, 1051}, + /*II_D8_F8*/ {0xec, 1051}, + /*II_D8_F8*/ {0xec, 1051}, + /*II_D8_F8*/ {0xec, 1051}, + /*II_D8_F8*/ {0xec, 1051}, + /*II_D8_F8*/ {0xec, 1051}, + /*II_D8_F8*/ {0xec, 1051}, + /*II_D8_F8*/ {0xec, 1051}, + /*II_D9_00*/ {0xeb, 1058}, + /*II_D9_02*/ {0xeb, 1063}, + /*II_D9_03*/ {0xeb, 1068}, + /*II_D9_04*/ {0xef, 1074}, + /*II_D9_05*/ {0xef, 1082}, + /*II_D9_C0*/ {0xed, 1058}, + /*II_D9_C0*/ {0xed, 1058}, + /*II_D9_C0*/ {0xed, 1058}, + /*II_D9_C0*/ {0xed, 1058}, + /*II_D9_C0*/ {0xed, 1058}, + /*II_D9_C0*/ {0xed, 1058}, + /*II_D9_C0*/ {0xed, 1058}, + /*II_D9_C0*/ {0xed, 1058}, + /*II_D9_C8*/ {0xed, 1089}, + /*II_D9_C9*/ {0xee, 1089}, + /*II_D9_C8*/ {0xed, 1089}, + /*II_D9_C8*/ {0xed, 1089}, + /*II_D9_C8*/ {0xed, 1089}, + /*II_D9_C8*/ {0xed, 1089}, + /*II_D9_C8*/ {0xed, 1089}, + /*II_D9_C8*/ {0xed, 1089}, + /*II_D9_D0*/ {0xee, 1095}, + /*II_D9_E0*/ {0xee, 1101}, + /*II_D9_E1*/ {0xee, 1107}, + /*II_D9_E4*/ {0xee, 1113}, + /*II_D9_E5*/ {0xee, 1119}, + /*II_D9_E8*/ {0xee, 1125}, + /*II_D9_E9*/ {0xee, 1131}, + /*II_D9_EA*/ {0xee, 1139}, + /*II_D9_EB*/ {0xee, 1147}, + /*II_D9_EC*/ {0xee, 1154}, + /*II_D9_ED*/ {0xee, 1162}, + /*II_D9_EE*/ {0xee, 1170}, + /*II_D9_F0*/ {0xee, 1176}, + /*II_D9_F1*/ {0xee, 1183}, + /*II_D9_F2*/ {0xee, 1190}, + /*II_D9_F3*/ {0xee, 1197}, + /*II_D9_F4*/ {0xee, 1205}, + /*II_D9_F5*/ {0xee, 1214}, + /*II_D9_F6*/ {0xee, 1222}, + /*II_D9_F7*/ {0xee, 1231}, + /*II_D9_F8*/ {0xee, 1240}, + /*II_D9_F9*/ {0xee, 1247}, + /*II_D9_FA*/ {0xee, 1256}, + /*II_D9_FB*/ {0xee, 1263}, + /*II_D9_FC*/ {0xee, 1272}, + /*II_D9_FD*/ {0xee, 1281}, + /*II_D9_FE*/ {0xee, 1289}, + /*II_D9_FF*/ {0xee, 1295}, + /*II_DA_00*/ {0xeb, 1301}, + /*II_DA_01*/ {0xeb, 1308}, + /*II_DA_02*/ {0xeb, 1315}, + /*II_DA_03*/ {0xeb, 1322}, + /*II_DA_04*/ {0xeb, 1330}, + /*II_DA_05*/ {0xeb, 1337}, + /*II_DA_06*/ {0xeb, 1345}, + /*II_DA_07*/ {0xeb, 1352}, + /*II_DA_C0*/ {0xf0, 1360}, + /*II_DA_C0*/ {0xf0, 1360}, + /*II_DA_C0*/ {0xf0, 1360}, + /*II_DA_C0*/ {0xf0, 1360}, + /*II_DA_C0*/ {0xf0, 1360}, + /*II_DA_C0*/ {0xf0, 1360}, + /*II_DA_C0*/ {0xf0, 1360}, + /*II_DA_C0*/ {0xf0, 1360}, + /*II_DA_C8*/ {0xf1, 1368}, + /*II_DA_C8*/ {0xf1, 1368}, + /*II_DA_C8*/ {0xf1, 1368}, + /*II_DA_C8*/ {0xf1, 1368}, + /*II_DA_C8*/ {0xf1, 1368}, + /*II_DA_C8*/ {0xf1, 1368}, + /*II_DA_C8*/ {0xf1, 1368}, + /*II_DA_C8*/ {0xf1, 1368}, + /*II_DA_D0*/ {0xf2, 1376}, + /*II_DA_D0*/ {0xf2, 1376}, + /*II_DA_D0*/ {0xf2, 1376}, + /*II_DA_D0*/ {0xf2, 1376}, + /*II_DA_D0*/ {0xf2, 1376}, + /*II_DA_D0*/ {0xf2, 1376}, + /*II_DA_D0*/ {0xf2, 1376}, + /*II_DA_D0*/ {0xf2, 1376}, + /*II_DA_D8*/ {0xf3, 1385}, + /*II_DA_D8*/ {0xf3, 1385}, + /*II_DA_D8*/ {0xf3, 1385}, + /*II_DA_D8*/ {0xf3, 1385}, + /*II_DA_D8*/ {0xf3, 1385}, + /*II_DA_D8*/ {0xf3, 1385}, + /*II_DA_D8*/ {0xf3, 1385}, + /*II_DA_D8*/ {0xf3, 1385}, + /*II_DA_E9*/ {0xee, 1393}, + /*II_DB_00*/ {0xeb, 1402}, + /*II_DB_01*/ {0xf4, 1408}, + /*II_DB_02*/ {0xeb, 1416}, + /*II_DB_03*/ {0xeb, 1422}, + /*II_DB_05*/ {0xf5, 1058}, + /*II_DB_07*/ {0xf5, 1068}, + /*II_DB_C0*/ {0xf0, 1429}, + /*II_DB_C0*/ {0xf0, 1429}, + /*II_DB_C0*/ {0xf0, 1429}, + /*II_DB_C0*/ {0xf0, 1429}, + /*II_DB_C0*/ {0xf0, 1429}, + /*II_DB_C0*/ {0xf0, 1429}, + /*II_DB_C0*/ {0xf0, 1429}, + /*II_DB_C0*/ {0xf0, 1429}, + /*II_DB_C8*/ {0xf1, 1438}, + /*II_DB_C8*/ {0xf1, 1438}, + /*II_DB_C8*/ {0xf1, 1438}, + /*II_DB_C8*/ {0xf1, 1438}, + /*II_DB_C8*/ {0xf1, 1438}, + /*II_DB_C8*/ {0xf1, 1438}, + /*II_DB_C8*/ {0xf1, 1438}, + /*II_DB_C8*/ {0xf1, 1438}, + /*II_DB_D0*/ {0xf2, 1447}, + /*II_DB_D0*/ {0xf2, 1447}, + /*II_DB_D0*/ {0xf2, 1447}, + /*II_DB_D0*/ {0xf2, 1447}, + /*II_DB_D0*/ {0xf2, 1447}, + /*II_DB_D0*/ {0xf2, 1447}, + /*II_DB_D0*/ {0xf2, 1447}, + /*II_DB_D0*/ {0xf2, 1447}, + /*II_DB_D8*/ {0xf3, 1457}, + /*II_DB_D8*/ {0xf3, 1457}, + /*II_DB_D8*/ {0xf3, 1457}, + /*II_DB_D8*/ {0xf3, 1457}, + /*II_DB_D8*/ {0xf3, 1457}, + /*II_DB_D8*/ {0xf3, 1457}, + /*II_DB_D8*/ {0xf3, 1457}, + /*II_DB_D8*/ {0xf3, 1457}, + /*II_DB_E0*/ {0xee, 1466}, + /*II_DB_E1*/ {0xee, 1472}, + /*II_DB_E4*/ {0xee, 1480}, + /*II_DB_E8*/ {0xf6, 1488}, + /*II_DB_E8*/ {0xf6, 1488}, + /*II_DB_E8*/ {0xf6, 1488}, + /*II_DB_E8*/ {0xf6, 1488}, + /*II_DB_E8*/ {0xf6, 1488}, + /*II_DB_E8*/ {0xf6, 1488}, + /*II_DB_E8*/ {0xf6, 1488}, + /*II_DB_E8*/ {0xf6, 1488}, + /*II_DB_F0*/ {0xf7, 1496}, + /*II_DB_F0*/ {0xf7, 1496}, + /*II_DB_F0*/ {0xf7, 1496}, + /*II_DB_F0*/ {0xf7, 1496}, + /*II_DB_F0*/ {0xf7, 1496}, + /*II_DB_F0*/ {0xf7, 1496}, + /*II_DB_F0*/ {0xf7, 1496}, + /*II_DB_F0*/ {0xf7, 1496}, + /*II_DC_00*/ {0xf8, 1007}, + /*II_DC_01*/ {0xf8, 1013}, + /*II_DC_02*/ {0xf8, 1019}, + /*II_DC_03*/ {0xf8, 1025}, + /*II_DC_04*/ {0xf8, 1032}, + /*II_DC_05*/ {0xf8, 1038}, + /*II_DC_06*/ {0xf8, 1045}, + /*II_DC_07*/ {0xf8, 1051}, + /*II_DC_C0*/ {0xf9, 1007}, + /*II_DC_C0*/ {0xf9, 1007}, + /*II_DC_C0*/ {0xf9, 1007}, + /*II_DC_C0*/ {0xf9, 1007}, + /*II_DC_C0*/ {0xf9, 1007}, + /*II_DC_C0*/ {0xf9, 1007}, + /*II_DC_C0*/ {0xf9, 1007}, + /*II_DC_C0*/ {0xf9, 1007}, + /*II_DC_C8*/ {0xf9, 1013}, + /*II_DC_C8*/ {0xf9, 1013}, + /*II_DC_C8*/ {0xf9, 1013}, + /*II_DC_C8*/ {0xf9, 1013}, + /*II_DC_C8*/ {0xf9, 1013}, + /*II_DC_C8*/ {0xf9, 1013}, + /*II_DC_C8*/ {0xf9, 1013}, + /*II_DC_C8*/ {0xf9, 1013}, + /*II_DC_E0*/ {0xf9, 1038}, + /*II_DC_E0*/ {0xf9, 1038}, + /*II_DC_E0*/ {0xf9, 1038}, + /*II_DC_E0*/ {0xf9, 1038}, + /*II_DC_E0*/ {0xf9, 1038}, + /*II_DC_E0*/ {0xf9, 1038}, + /*II_DC_E0*/ {0xf9, 1038}, + /*II_DC_E0*/ {0xf9, 1038}, + /*II_DC_E8*/ {0xf9, 1032}, + /*II_DC_E8*/ {0xf9, 1032}, + /*II_DC_E8*/ {0xf9, 1032}, + /*II_DC_E8*/ {0xf9, 1032}, + /*II_DC_E8*/ {0xf9, 1032}, + /*II_DC_E8*/ {0xf9, 1032}, + /*II_DC_E8*/ {0xf9, 1032}, + /*II_DC_E8*/ {0xf9, 1032}, + /*II_DC_F0*/ {0xf9, 1051}, + /*II_DC_F0*/ {0xf9, 1051}, + /*II_DC_F0*/ {0xf9, 1051}, + /*II_DC_F0*/ {0xf9, 1051}, + /*II_DC_F0*/ {0xf9, 1051}, + /*II_DC_F0*/ {0xf9, 1051}, + /*II_DC_F0*/ {0xf9, 1051}, + /*II_DC_F0*/ {0xf9, 1051}, + /*II_DC_F8*/ {0xf9, 1045}, + /*II_DC_F8*/ {0xf9, 1045}, + /*II_DC_F8*/ {0xf9, 1045}, + /*II_DC_F8*/ {0xf9, 1045}, + /*II_DC_F8*/ {0xf9, 1045}, + /*II_DC_F8*/ {0xf9, 1045}, + /*II_DC_F8*/ {0xf9, 1045}, + /*II_DC_F8*/ {0xf9, 1045}, + /*II_DD_00*/ {0xf8, 1058}, + /*II_DD_01*/ {0xfa, 1408}, + /*II_DD_02*/ {0xf8, 1063}, + /*II_DD_03*/ {0xf8, 1068}, + /*II_DD_04*/ {0xef, 1503}, + /*II_DD_C0*/ {0xed, 1511}, + /*II_DD_C0*/ {0xed, 1511}, + /*II_DD_C0*/ {0xed, 1511}, + /*II_DD_C0*/ {0xed, 1511}, + /*II_DD_C0*/ {0xed, 1511}, + /*II_DD_C0*/ {0xed, 1511}, + /*II_DD_C0*/ {0xed, 1511}, + /*II_DD_C0*/ {0xed, 1511}, + /*II_DD_D0*/ {0xed, 1063}, + /*II_DD_D0*/ {0xed, 1063}, + /*II_DD_D0*/ {0xed, 1063}, + /*II_DD_D0*/ {0xed, 1063}, + /*II_DD_D0*/ {0xed, 1063}, + /*II_DD_D0*/ {0xed, 1063}, + /*II_DD_D0*/ {0xed, 1063}, + /*II_DD_D0*/ {0xed, 1063}, + /*II_DD_D8*/ {0xed, 1068}, + /*II_DD_D8*/ {0xed, 1068}, + /*II_DD_D8*/ {0xed, 1068}, + /*II_DD_D8*/ {0xed, 1068}, + /*II_DD_D8*/ {0xed, 1068}, + /*II_DD_D8*/ {0xed, 1068}, + /*II_DD_D8*/ {0xed, 1068}, + /*II_DD_D8*/ {0xed, 1068}, + /*II_DD_E0*/ {0xf9, 1518}, + /*II_DD_E1*/ {0xee, 1518}, + /*II_DD_E0*/ {0xf9, 1518}, + /*II_DD_E0*/ {0xf9, 1518}, + /*II_DD_E0*/ {0xf9, 1518}, + /*II_DD_E0*/ {0xf9, 1518}, + /*II_DD_E0*/ {0xf9, 1518}, + /*II_DD_E0*/ {0xf9, 1518}, + /*II_DD_E8*/ {0xed, 1525}, + /*II_DD_E9*/ {0xee, 1525}, + /*II_DD_E8*/ {0xed, 1525}, + /*II_DD_E8*/ {0xed, 1525}, + /*II_DD_E8*/ {0xed, 1525}, + /*II_DD_E8*/ {0xed, 1525}, + /*II_DD_E8*/ {0xed, 1525}, + /*II_DD_E8*/ {0xed, 1525}, + /*II_DE_00*/ {0xfb, 1301}, + /*II_DE_01*/ {0xfb, 1308}, + /*II_DE_02*/ {0xfb, 1315}, + /*II_DE_03*/ {0xfb, 1322}, + /*II_DE_04*/ {0xfb, 1330}, + /*II_DE_05*/ {0xfb, 1337}, + /*II_DE_06*/ {0xfb, 1345}, + /*II_DE_07*/ {0xfb, 1352}, + /*II_DE_C0*/ {0xf9, 1533}, + /*II_DE_C1*/ {0xee, 1533}, + /*II_DE_C0*/ {0xf9, 1533}, + /*II_DE_C0*/ {0xf9, 1533}, + /*II_DE_C0*/ {0xf9, 1533}, + /*II_DE_C0*/ {0xf9, 1533}, + /*II_DE_C0*/ {0xf9, 1533}, + /*II_DE_C0*/ {0xf9, 1533}, + /*II_DE_C8*/ {0xf9, 1540}, + /*II_DE_C9*/ {0xee, 1540}, + /*II_DE_C8*/ {0xf9, 1540}, + /*II_DE_C8*/ {0xf9, 1540}, + /*II_DE_C8*/ {0xf9, 1540}, + /*II_DE_C8*/ {0xf9, 1540}, + /*II_DE_C8*/ {0xf9, 1540}, + /*II_DE_C8*/ {0xf9, 1540}, + /*II_DE_D9*/ {0xee, 1547}, + /*II_DE_E0*/ {0xf9, 1555}, + /*II_DE_E1*/ {0xee, 1555}, + /*II_DE_E0*/ {0xf9, 1555}, + /*II_DE_E0*/ {0xf9, 1555}, + /*II_DE_E0*/ {0xf9, 1555}, + /*II_DE_E0*/ {0xf9, 1555}, + /*II_DE_E0*/ {0xf9, 1555}, + /*II_DE_E0*/ {0xf9, 1555}, + /*II_DE_E8*/ {0xf9, 1563}, + /*II_DE_E9*/ {0xee, 1563}, + /*II_DE_E8*/ {0xf9, 1563}, + /*II_DE_E8*/ {0xf9, 1563}, + /*II_DE_E8*/ {0xf9, 1563}, + /*II_DE_E8*/ {0xf9, 1563}, + /*II_DE_E8*/ {0xf9, 1563}, + /*II_DE_E8*/ {0xf9, 1563}, + /*II_DE_F0*/ {0xf9, 1570}, + /*II_DE_F1*/ {0xee, 1570}, + /*II_DE_F0*/ {0xf9, 1570}, + /*II_DE_F0*/ {0xf9, 1570}, + /*II_DE_F0*/ {0xf9, 1570}, + /*II_DE_F0*/ {0xf9, 1570}, + /*II_DE_F0*/ {0xf9, 1570}, + /*II_DE_F0*/ {0xf9, 1570}, + /*II_DE_F8*/ {0xf9, 1578}, + /*II_DE_F9*/ {0xee, 1578}, + /*II_DE_F8*/ {0xf9, 1578}, + /*II_DE_F8*/ {0xf9, 1578}, + /*II_DE_F8*/ {0xf9, 1578}, + /*II_DE_F8*/ {0xf9, 1578}, + /*II_DE_F8*/ {0xf9, 1578}, + /*II_DE_F8*/ {0xf9, 1578}, + /*II_DF_00*/ {0xfb, 1402}, + /*II_DF_01*/ {0xfc, 1408}, + /*II_DF_02*/ {0xfb, 1416}, + /*II_DF_03*/ {0xfb, 1422}, + /*II_DF_04*/ {0xf5, 1585}, + /*II_DF_05*/ {0xf8, 1402}, + /*II_DF_06*/ {0xf5, 1591}, + /*II_DF_07*/ {0xf8, 1422}, + /*II_DF_E8*/ {0xf6, 1598}, + /*II_DF_E8*/ {0xf6, 1598}, + /*II_DF_E8*/ {0xf6, 1598}, + /*II_DF_E8*/ {0xf6, 1598}, + /*II_DF_E8*/ {0xf6, 1598}, + /*II_DF_E8*/ {0xf6, 1598}, + /*II_DF_E8*/ {0xf6, 1598}, + /*II_DF_E8*/ {0xf6, 1598}, + /*II_DF_F0*/ {0xf6, 1607}, + /*II_DF_F0*/ {0xf6, 1607}, + /*II_DF_F0*/ {0xf6, 1607}, + /*II_DF_F0*/ {0xf6, 1607}, + /*II_DF_F0*/ {0xf6, 1607}, + /*II_DF_F0*/ {0xf6, 1607}, + /*II_DF_F0*/ {0xf6, 1607}, + /*II_DF_F0*/ {0xf6, 1607}, + /*II_F6_00*/ {0xfd, 206}, + /*II_F6_02*/ {0xfe, 1615}, + /*II_F6_03*/ {0xff, 1620}, + /*II_F6_04*/ {0x100, 1625}, + /*II_F6_05*/ {0x100, 117}, + /*II_F6_06*/ {0x101, 1630}, + /*II_F6_07*/ {0x101, 1635}, + /*II_F7_00*/ {0x102, 206}, + /*II_F7_02*/ {0x103, 1615}, + /*II_F7_03*/ {0x104, 1620}, + /*II_F7_04*/ {0x105, 1625}, + /*II_F7_05*/ {0x105, 117}, + /*II_F7_06*/ {0x106, 1630}, + /*II_F7_07*/ {0x106, 1635}, + /*II_FE_00*/ {0x107, 81}, + /*II_FE_01*/ {0x107, 86}, + /*II_FF_00*/ {0x108, 81}, + /*II_FF_01*/ {0x108, 86}, + /*II_FF_02*/ {0x109, 456}, + /*II_FF_03*/ {0x10a, 260}, + /*II_FF_04*/ {0x10b, 462}, + /*II_FF_05*/ {0x10c, 467}, + /*II_FF_06*/ {0x10d, 16}, + /*II_0F_00_00*/ {0x10e, 1641}, + /*II_0F_00_01*/ {0x10f, 1647}, + /*II_0F_00_02*/ {0x10f, 1652}, + /*II_0F_00_03*/ {0x110, 1658}, + /*II_0F_00_04*/ {0x111, 1663}, + /*II_0F_00_05*/ {0x111, 1669}, + /*II_0F_01_00*/ {0x112, 1675}, + /*II_0F_01_01*/ {0x112, 1681}, + /*II_0F_01_02*/ {0x112, 1687}, + /*II_0F_01_03*/ {0x112, 1693}, + /*II_0F_01_04*/ {0x113, 1699}, + /*II_0F_01_06*/ {0x114, 1705}, + /*II_0F_01_07*/ {0x115, 1711}, + /*II_0F_01_C1*/ {0x116, 1719}, + /*II_0F_01_C2*/ {0x116, 1727}, + /*II_0F_01_C3*/ {0x116, 1737}, + /*II_0F_01_C4*/ {0x116, 1747}, + /*II_0F_01_C8*/ {0x117, 1755}, + /*II_0F_01_C9*/ {0x117, 1764}, + /*II_0F_01_D0*/ {0x88, 1771}, + /*II_0F_01_D1*/ {0x88, 1779}, + /*II_0F_01_D4*/ {0x116, 1787}, + /*II_0F_01_D8*/ {0x118, 1795}, + /*II_0F_01_D9*/ {0x119, 1802}, + /*II_0F_01_DA*/ {0x11a, 1811}, + /*II_0F_01_DB*/ {0x11a, 1819}, + /*II_0F_01_DC*/ {0x119, 1827}, + /*II_0F_01_DD*/ {0x119, 1833}, + /*II_0F_01_DE*/ {0x11a, 1839}, + /*II_0F_01_DF*/ {0x11b, 1847}, + /*II_0F_01_F8*/ {0x11c, 1856}, + /*II_0F_01_F9*/ {0x11c, 1864}, + /*II_0F_0D_00*/ {0x11d, 1872}, + /*II_0F_0D_01*/ {0x11d, 1882}, + /*II_0F_0F_0C*/ {0x11e, 1893}, + /*II_0F_0F_0D*/ {0x11f, 1900}, + /*II_0F_0F_1C*/ {0x11e, 1907}, + /*II_0F_0F_1D*/ {0x11f, 1914}, + /*II_0F_0F_8A*/ {0x11e, 1921}, + /*II_0F_0F_8E*/ {0x11e, 1929}, + /*II_0F_0F_90*/ {0x11f, 1938}, + /*II_0F_0F_94*/ {0x11f, 1947}, + /*II_0F_0F_96*/ {0x11f, 1954}, + /*II_0F_0F_97*/ {0x11f, 1961}, + /*II_0F_0F_9A*/ {0x11f, 1970}, + /*II_0F_0F_9E*/ {0x11f, 1977}, + /*II_0F_0F_A0*/ {0x11f, 1984}, + /*II_0F_0F_A4*/ {0x11f, 1993}, + /*II_0F_0F_A6*/ {0x11f, 2000}, + /*II_0F_0F_A7*/ {0x11f, 2010}, + /*II_0F_0F_AA*/ {0x11f, 2020}, + /*II_0F_0F_AE*/ {0x11f, 2028}, + /*II_0F_0F_B0*/ {0x11f, 2035}, + /*II_0F_0F_B4*/ {0x11f, 2044}, + /*II_0F_0F_B6*/ {0x11f, 2051}, + /*II_0F_0F_B7*/ {0x11f, 2061}, + /*II_0F_0F_BB*/ {0x11e, 2070}, + /*II_0F_0F_BF*/ {0x11f, 2078}, + /*II_0F_10*/ {0x120, 2087}, + /*II_66_0F_10*/ {0x121, 2095}, + /*II_F3_0F_10*/ {0x122, 2103}, + /*II_F2_0F_10*/ {0x123, 2110}, + /*II_0F_11*/ {0x128, 2087}, + /*II_66_0F_11*/ {0x129, 2095}, + /*II_F3_0F_11*/ {0x12a, 2103}, + /*II_F2_0F_11*/ {0x12b, 2110}, + /*II_66_0F_12*/ {0x130, 2168}, + /*II_F3_0F_12*/ {0x131, 2176}, + /*II_F2_0F_12*/ {0x131, 2186}, + /*II_0F_13*/ {0x135, 2160}, + /*II_66_0F_13*/ {0x136, 2168}, + /*II_0F_14*/ {0x138, 2244}, + /*II_66_0F_14*/ {0x139, 2254}, + /*II_0F_15*/ {0x138, 2286}, + /*II_66_0F_15*/ {0x139, 2296}, + /*II_66_0F_16*/ {0x130, 2345}, + /*II_F3_0F_16*/ {0x13b, 2353}, + /*II_0F_17*/ {0x135, 2337}, + /*II_66_0F_17*/ {0x136, 2345}, + /*II_0F_18_00*/ {0x13c, 2402}, + /*II_0F_18_01*/ {0x13c, 2415}, + /*II_0F_18_02*/ {0x13c, 2427}, + /*II_0F_18_03*/ {0x13c, 2439}, + /*II_0F_28*/ {0x120, 2451}, + /*II_66_0F_28*/ {0x121, 2459}, + /*II_0F_29*/ {0x128, 2451}, + /*II_66_0F_29*/ {0x129, 2459}, + /*II_0F_2A*/ {0x13d, 2485}, + /*II_66_0F_2A*/ {0x13e, 2495}, + /*II_F3_0F_2A*/ {0x13f, 2505}, + /*II_F2_0F_2A*/ {0x140, 2515}, + /*II_0F_2B*/ {0x141, 2547}, + /*II_66_0F_2B*/ {0x142, 2556}, + /*II_F3_0F_2B*/ {0x143, 2565}, + /*II_F2_0F_2B*/ {0x144, 2574}, + /*II_0F_2C*/ {0x146, 2603}, + /*II_66_0F_2C*/ {0x147, 2614}, + /*II_F3_0F_2C*/ {0x148, 2625}, + /*II_F2_0F_2C*/ {0x149, 2636}, + /*II_0F_2D*/ {0x146, 2671}, + /*II_66_0F_2D*/ {0x139, 2681}, + /*II_F3_0F_2D*/ {0x148, 2691}, + /*II_F2_0F_2D*/ {0x149, 2701}, + /*II_0F_2E*/ {0x14b, 2733}, + /*II_66_0F_2E*/ {0x14c, 2742}, + /*II_0F_2F*/ {0x14b, 2771}, + /*II_66_0F_2F*/ {0x14c, 2779}, + /*II_0F_50*/ {0x14f, 2805}, + /*II_66_0F_50*/ {0x150, 2815}, + /*II_0F_51*/ {0x138, 2847}, + /*II_66_0F_51*/ {0x139, 2855}, + /*II_F3_0F_51*/ {0x152, 2863}, + /*II_F2_0F_51*/ {0x14c, 2871}, + /*II_0F_52*/ {0x138, 2915}, + /*II_F3_0F_52*/ {0x152, 2924}, + /*II_0F_53*/ {0x138, 2953}, + /*II_F3_0F_53*/ {0x152, 2960}, + /*II_0F_54*/ {0x138, 2983}, + /*II_66_0F_54*/ {0x139, 2990}, + /*II_0F_55*/ {0x138, 3013}, + /*II_66_0F_55*/ {0x139, 3021}, + /*II_0F_56*/ {0x138, 3047}, + /*II_66_0F_56*/ {0x139, 3053}, + /*II_0F_57*/ {0x138, 3073}, + /*II_66_0F_57*/ {0x139, 3080}, + /*II_0F_58*/ {0x138, 3103}, + /*II_66_0F_58*/ {0x139, 3110}, + /*II_F3_0F_58*/ {0x152, 3117}, + /*II_F2_0F_58*/ {0x14c, 3124}, + /*II_0F_59*/ {0x138, 3163}, + /*II_66_0F_59*/ {0x139, 3170}, + /*II_F3_0F_59*/ {0x152, 3177}, + /*II_F2_0F_59*/ {0x14c, 3184}, + /*II_0F_5A*/ {0x14c, 3223}, + /*II_66_0F_5A*/ {0x139, 3233}, + /*II_F3_0F_5A*/ {0x153, 3243}, + /*II_F2_0F_5A*/ {0x14c, 3253}, + /*II_0F_5B*/ {0x139, 3307}, + /*II_66_0F_5B*/ {0x139, 3317}, + /*II_F3_0F_5B*/ {0x139, 3327}, + /*II_0F_5C*/ {0x138, 3372}, + /*II_66_0F_5C*/ {0x139, 3379}, + /*II_F3_0F_5C*/ {0x152, 3386}, + /*II_F2_0F_5C*/ {0x14c, 3393}, + /*II_0F_5D*/ {0x138, 3432}, + /*II_66_0F_5D*/ {0x139, 3439}, + /*II_F3_0F_5D*/ {0x152, 3446}, + /*II_F2_0F_5D*/ {0x14c, 3453}, + /*II_0F_5E*/ {0x138, 3492}, + /*II_66_0F_5E*/ {0x139, 3499}, + /*II_F3_0F_5E*/ {0x152, 3506}, + /*II_F2_0F_5E*/ {0x14c, 3513}, + /*II_0F_5F*/ {0x138, 3552}, + /*II_66_0F_5F*/ {0x139, 3559}, + /*II_F3_0F_5F*/ {0x152, 3566}, + /*II_F2_0F_5F*/ {0x14c, 3573}, + /*II_0F_60*/ {0x156, 3612}, + /*II_66_0F_60*/ {0x139, 3612}, + /*II_0F_61*/ {0x156, 3635}, + /*II_66_0F_61*/ {0x139, 3635}, + /*II_0F_62*/ {0x156, 3658}, + /*II_66_0F_62*/ {0x139, 3658}, + /*II_0F_63*/ {0x157, 3681}, + /*II_66_0F_63*/ {0x139, 3681}, + /*II_0F_64*/ {0x157, 3702}, + /*II_66_0F_64*/ {0x139, 3702}, + /*II_0F_65*/ {0x157, 3721}, + /*II_66_0F_65*/ {0x139, 3721}, + /*II_0F_66*/ {0x157, 3740}, + /*II_66_0F_66*/ {0x139, 3740}, + /*II_0F_67*/ {0x157, 3759}, + /*II_66_0F_67*/ {0x139, 3759}, + /*II_0F_68*/ {0x157, 3780}, + /*II_66_0F_68*/ {0x139, 3780}, + /*II_0F_69*/ {0x157, 3803}, + /*II_66_0F_69*/ {0x139, 3803}, + /*II_0F_6A*/ {0x157, 3826}, + /*II_66_0F_6A*/ {0x139, 3826}, + /*II_0F_6B*/ {0x157, 3849}, + /*II_66_0F_6B*/ {0x139, 3849}, + /*II_66_0F_6C*/ {0x139, 3870}, + /*II_66_0F_6D*/ {0x139, 3895}, + /*II_0F_6F*/ {0x15b, 3926}, + /*II_66_0F_6F*/ {0x121, 3946}, + /*II_F3_0F_6F*/ {0x121, 3954}, + /*II_0F_74*/ {0x157, 4043}, + /*II_66_0F_74*/ {0x139, 4043}, + /*II_0F_75*/ {0x157, 4062}, + /*II_66_0F_75*/ {0x139, 4062}, + /*II_0F_76*/ {0x157, 4081}, + /*II_66_0F_76*/ {0x139, 4081}, + /*II_0F_77*/ {0x15f, 4100}, + /*II_0F_78*/ {0x161, 4128}, + /*II_0F_79*/ {0x164, 4152}, + /*II_66_0F_79*/ {0x165, 4136}, + /*II_F2_0F_79*/ {0x166, 4143}, + /*II_0F_7A_30*/ {0x167, 4161}, + /*II_0F_7A_31*/ {0x168, 4171}, + /*II_66_0F_7C*/ {0x169, 4181}, + /*II_F2_0F_7C*/ {0x169, 4189}, + /*II_66_0F_7D*/ {0x169, 4215}, + /*II_F2_0F_7D*/ {0x169, 4223}, + /*II_F3_0F_7E*/ {0x123, 3926}, + /*II_0F_7F*/ {0x16d, 3926}, + /*II_66_0F_7F*/ {0x129, 3946}, + /*II_F3_0F_7F*/ {0x129, 3954}, + /*II_F3_0F_B8*/ {0x171, 4338}, + /*II_0F_BA_04*/ {0x172, 872}, + /*II_0F_BA_05*/ {0x173, 887}, + /*II_0F_BA_06*/ {0x173, 912}, + /*II_0F_BA_07*/ {0x173, 934}, + /*II_0F_BC*/ {0x174, 4346}, + /*II_F3_0F_BC*/ {0x175, 4351}, + /*II_0F_BD*/ {0x174, 4358}, + /*II_F3_0F_BD*/ {0x176, 4363}, + /*II_0F_C7_07*/ {0x186, 6385}, + /*II_66_0F_D0*/ {0x169, 6394}, + /*II_F2_0F_D0*/ {0x169, 6404}, + /*II_0F_D1*/ {0x157, 6436}, + /*II_66_0F_D1*/ {0x139, 6436}, + /*II_0F_D2*/ {0x157, 6451}, + /*II_66_0F_D2*/ {0x139, 6451}, + /*II_0F_D3*/ {0x157, 6466}, + /*II_66_0F_D3*/ {0x139, 6466}, + /*II_0F_D4*/ {0x14c, 6481}, + /*II_66_0F_D4*/ {0x139, 6481}, + /*II_0F_D5*/ {0x157, 6496}, + /*II_66_0F_D5*/ {0x139, 6496}, + /*II_66_0F_D6*/ {0x12b, 3926}, + /*II_F3_0F_D6*/ {0x187, 6513}, + /*II_F2_0F_D6*/ {0x188, 6522}, + /*II_0F_D7*/ {0x18a, 6531}, + /*II_66_0F_D7*/ {0x18b, 6531}, + /*II_0F_D8*/ {0x157, 6552}, + /*II_66_0F_D8*/ {0x139, 6552}, + /*II_0F_D9*/ {0x157, 6571}, + /*II_66_0F_D9*/ {0x139, 6571}, + /*II_0F_DA*/ {0x18d, 6590}, + /*II_66_0F_DA*/ {0x139, 6590}, + /*II_0F_DB*/ {0x157, 6607}, + /*II_66_0F_DB*/ {0x139, 6607}, + /*II_0F_DC*/ {0x157, 6620}, + /*II_66_0F_DC*/ {0x139, 6620}, + /*II_0F_DD*/ {0x157, 6639}, + /*II_66_0F_DD*/ {0x139, 6639}, + /*II_0F_DE*/ {0x18d, 6648}, + /*II_66_0F_DE*/ {0x139, 6648}, + /*II_0F_DF*/ {0x157, 6665}, + /*II_66_0F_DF*/ {0x139, 6665}, + /*II_0F_E0*/ {0x18d, 6680}, + /*II_66_0F_E0*/ {0x139, 6680}, + /*II_0F_E1*/ {0x157, 6695}, + /*II_66_0F_E1*/ {0x139, 6695}, + /*II_0F_E2*/ {0x157, 6710}, + /*II_66_0F_E2*/ {0x139, 6710}, + /*II_0F_E3*/ {0x18d, 6725}, + /*II_66_0F_E3*/ {0x139, 6725}, + /*II_0F_E4*/ {0x18d, 6740}, + /*II_66_0F_E4*/ {0x139, 6740}, + /*II_0F_E5*/ {0x157, 6759}, + /*II_66_0F_E5*/ {0x139, 6759}, + /*II_66_0F_E6*/ {0x139, 6776}, + /*II_F3_0F_E6*/ {0x14c, 6787}, + /*II_F2_0F_E6*/ {0x139, 6797}, + /*II_0F_E7*/ {0x18e, 6841}, + /*II_66_0F_E7*/ {0x142, 6849}, + /*II_0F_E8*/ {0x157, 6868}, + /*II_66_0F_E8*/ {0x139, 6868}, + /*II_0F_E9*/ {0x157, 6885}, + /*II_66_0F_E9*/ {0x139, 6885}, + /*II_0F_EA*/ {0x18d, 6902}, + /*II_66_0F_EA*/ {0x139, 6902}, + /*II_0F_EB*/ {0x157, 6919}, + /*II_66_0F_EB*/ {0x139, 6919}, + /*II_0F_EC*/ {0x157, 6930}, + /*II_66_0F_EC*/ {0x139, 6930}, + /*II_0F_ED*/ {0x157, 6947}, + /*II_66_0F_ED*/ {0x139, 6947}, + /*II_0F_EE*/ {0x18d, 6964}, + /*II_66_0F_EE*/ {0x139, 6964}, + /*II_0F_EF*/ {0x157, 6981}, + /*II_66_0F_EF*/ {0x139, 6981}, + /*II_F2_0F_F0*/ {0x18f, 6994}, + /*II_0F_F1*/ {0x157, 7009}, + /*II_66_0F_F1*/ {0x139, 7009}, + /*II_0F_F2*/ {0x157, 7024}, + /*II_66_0F_F2*/ {0x139, 7024}, + /*II_0F_F3*/ {0x157, 7039}, + /*II_66_0F_F3*/ {0x139, 7039}, + /*II_0F_F4*/ {0x191, 7054}, + /*II_66_0F_F4*/ {0x139, 7054}, + /*II_0F_F5*/ {0x157, 7073}, + /*II_66_0F_F5*/ {0x139, 7073}, + /*II_0F_F6*/ {0x18d, 7092}, + /*II_66_0F_F6*/ {0x139, 7092}, + /*II_0F_F7*/ {0x192, 7109}, + /*II_66_0F_F7*/ {0x193, 7119}, + /*II_0F_F8*/ {0x157, 7144}, + /*II_66_0F_F8*/ {0x139, 7144}, + /*II_0F_F9*/ {0x157, 7159}, + /*II_66_0F_F9*/ {0x139, 7159}, + /*II_0F_FA*/ {0x157, 7174}, + /*II_66_0F_FA*/ {0x139, 7174}, + /*II_0F_FB*/ {0x191, 7189}, + /*II_66_0F_FB*/ {0x139, 7189}, + /*II_0F_FC*/ {0x157, 7204}, + /*II_66_0F_FC*/ {0x139, 7204}, + /*II_0F_FD*/ {0x157, 7219}, + /*II_66_0F_FD*/ {0x139, 7219}, + /*II_0F_FE*/ {0x157, 7234}, + /*II_66_0F_FE*/ {0x139, 7234}, + /*II_D9_06*/ {0xef, 7249}, + /*II_9B_D9_06*/ {0x195, 7258}, + /*II_D9_07*/ {0xef, 7266}, + /*II_9B_D9_07*/ {0x195, 7274}, + /*II_DB_E2*/ {0xee, 7281}, + /*II_9B_DB_E2*/ {0x196, 7289}, + /*II_DB_E3*/ {0xee, 7296}, + /*II_9B_DB_E3*/ {0x196, 7304}, + /*II_DD_06*/ {0xef, 7311}, + /*II_9B_DD_06*/ {0x195, 7319}, + /*II_DD_07*/ {0xef, 7326}, + /*II_9B_DD_07*/ {0x195, 7334}, + /*II_DF_E0*/ {0x197, 7326}, + /*II_9B_DF_E0*/ {0x198, 7334}, + /*II_0F_38_00*/ {0x199, 7341}, + /*II_66_0F_38_00*/ {0x19a, 7341}, + /*II_0F_38_01*/ {0x199, 7358}, + /*II_66_0F_38_01*/ {0x19a, 7358}, + /*II_0F_38_02*/ {0x199, 7375}, + /*II_66_0F_38_02*/ {0x19a, 7375}, + /*II_0F_38_03*/ {0x199, 7392}, + /*II_66_0F_38_03*/ {0x19a, 7392}, + /*II_0F_38_04*/ {0x199, 7411}, + /*II_66_0F_38_04*/ {0x19a, 7411}, + /*II_0F_38_05*/ {0x199, 7434}, + /*II_66_0F_38_05*/ {0x19a, 7434}, + /*II_0F_38_06*/ {0x199, 7451}, + /*II_66_0F_38_06*/ {0x19a, 7451}, + /*II_0F_38_07*/ {0x199, 7468}, + /*II_66_0F_38_07*/ {0x19a, 7468}, + /*II_0F_38_08*/ {0x199, 7487}, + /*II_66_0F_38_08*/ {0x19a, 7487}, + /*II_0F_38_09*/ {0x199, 7504}, + /*II_66_0F_38_09*/ {0x19a, 7504}, + /*II_0F_38_0A*/ {0x199, 7521}, + /*II_66_0F_38_0A*/ {0x19a, 7521}, + /*II_0F_38_0B*/ {0x199, 7538}, + /*II_66_0F_38_0B*/ {0x19a, 7538}, + /*II_66_0F_38_17*/ {0x19c, 7629}, + /*II_0F_38_1C*/ {0x199, 7688}, + /*II_66_0F_38_1C*/ {0x19a, 7688}, + /*II_0F_38_1D*/ {0x199, 7703}, + /*II_66_0F_38_1D*/ {0x19a, 7703}, + /*II_0F_38_1E*/ {0x199, 7718}, + /*II_66_0F_38_1E*/ {0x19a, 7718}, + /*II_66_0F_38_20*/ {0x1a1, 7733}, + /*II_66_0F_38_21*/ {0x1a2, 7754}, + /*II_66_0F_38_22*/ {0x1a3, 7775}, + /*II_66_0F_38_23*/ {0x1a1, 7796}, + /*II_66_0F_38_24*/ {0x1a2, 7817}, + /*II_66_0F_38_25*/ {0x1a1, 7838}, + /*II_66_0F_38_28*/ {0x1a5, 7859}, + /*II_66_0F_38_29*/ {0x1a5, 7876}, + /*II_66_0F_38_2A*/ {0x1a6, 7895}, + /*II_66_0F_38_2B*/ {0x1a5, 7916}, + /*II_66_0F_38_30*/ {0x1a1, 7961}, + /*II_66_0F_38_31*/ {0x1a2, 7982}, + /*II_66_0F_38_32*/ {0x1a3, 8003}, + /*II_66_0F_38_33*/ {0x1a1, 8024}, + /*II_66_0F_38_34*/ {0x1a2, 8045}, + /*II_66_0F_38_35*/ {0x1a1, 8066}, + /*II_66_0F_38_37*/ {0x19c, 8087}, + /*II_66_0F_38_38*/ {0x1a5, 8106}, + /*II_66_0F_38_39*/ {0x1a5, 8123}, + /*II_66_0F_38_3A*/ {0x1a5, 8140}, + /*II_66_0F_38_3B*/ {0x1a5, 8157}, + /*II_66_0F_38_3C*/ {0x1a5, 8174}, + /*II_66_0F_38_3D*/ {0x1a5, 8191}, + /*II_66_0F_38_3E*/ {0x1a5, 8208}, + /*II_66_0F_38_3F*/ {0x1a5, 8225}, + /*II_66_0F_38_40*/ {0x1a5, 8242}, + /*II_66_0F_38_41*/ {0x1a5, 8259}, + /*II_66_0F_38_80*/ {0x1a9, 8284}, + /*II_66_0F_38_81*/ {0x1a9, 8292}, + /*II_66_0F_38_82*/ {0x1a9, 8301}, + /*II_66_0F_38_DB*/ {0x1ac, 9150}, + /*II_66_0F_38_DC*/ {0x1ac, 9167}, + /*II_66_0F_38_DD*/ {0x1ac, 9184}, + /*II_66_0F_38_DE*/ {0x1ac, 9209}, + /*II_66_0F_38_DF*/ {0x1ac, 9226}, + /*II_0F_38_F0*/ {0x1af, 9251}, + /*II_F2_0F_38_F0*/ {0x1b0, 9258}, + /*II_0F_38_F1*/ {0x1b1, 9251}, + /*II_F2_0F_38_F1*/ {0x1b2, 9258}, + /*II_0F_71_02*/ {0x1c9, 6436}, + /*II_66_0F_71_02*/ {0x1ca, 6436}, + /*II_0F_71_04*/ {0x1c9, 6695}, + /*II_66_0F_71_04*/ {0x1ca, 6695}, + /*II_0F_71_06*/ {0x1c9, 7009}, + /*II_66_0F_71_06*/ {0x1ca, 7009}, + /*II_0F_72_02*/ {0x1c9, 6451}, + /*II_66_0F_72_02*/ {0x1ca, 6451}, + /*II_0F_72_04*/ {0x1c9, 6710}, + /*II_66_0F_72_04*/ {0x1ca, 6710}, + /*II_0F_72_06*/ {0x1c9, 7024}, + /*II_66_0F_72_06*/ {0x1ca, 7024}, + /*II_0F_73_02*/ {0x1c9, 6466}, + /*II_66_0F_73_02*/ {0x1ca, 6466}, + /*II_66_0F_73_03*/ {0x1ca, 9830}, + /*II_0F_73_06*/ {0x1c9, 7039}, + /*II_66_0F_73_06*/ {0x1ca, 7039}, + /*II_66_0F_73_07*/ {0x1ca, 9847}, + /*II_F3_0F_AE_00*/ {0x1cc, 9882}, + /*II_F3_0F_AE_01*/ {0x1cc, 9912}, + /*II_0F_AE_02*/ {0x115, 9922}, + /*II_F3_0F_AE_02*/ {0x1cc, 9931}, + /*II_0F_AE_03*/ {0x115, 9951}, + /*II_F3_0F_AE_03*/ {0x1cc, 9960}, + /*II_66_0F_C7_06*/ {0x186, 9997}, + /*II_F3_0F_C7_06*/ {0x186, 10006} }; -_InstInfoEx InstInfosEx[] = { - /*II_69*/ {0x17, 17, 11, 8, 117, 0x0, 3, 0, 0, 0}, - /*II_6B*/ {0x17, 17, 11, 8, 117, 0x0, 5, 0, 0, 0}, - /*II_98*/ {0x1c, 0, 0, 8, 228, 0x0, 0, 0, 233, 239}, - /*II_99*/ {0x1c, 0, 0, 8, 245, 0x0, 0, 0, 250, 255}, - /*II_E3*/ {0x25, 0, 40, 13, 427, 0x0, 0, 0, 433, 440}, - /*II_0F_A4*/ {0x2c, 11, 17, 8, 876, 0x0, 1, 0, 0, 0}, - /*II_0F_A5*/ {0x2c, 11, 17, 8, 876, 0x0, 52, 0, 0, 0}, - /*II_0F_AC*/ {0x2c, 11, 17, 8, 892, 0x0, 1, 0, 0, 0}, - /*II_0F_AD*/ {0x2c, 11, 17, 8, 892, 0x0, 52, 0, 0, 0}, - /*II_V_0F_10*/ {0x43, 90, 83, 128, 2117, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_10*/ {0x43, 90, 83, 128, 2126, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_10*/ {0x44, 81, 68, 128, 2135, 0x20, 69, 0, 0, 0}, - /*II_V_F2_0F_10*/ {0x44, 81, 68, 128, 2143, 0x20, 69, 0, 0, 0}, - /*II_VRR_F3_0F_10*/ {0x45, 44, 68, 128, 2135, 0x60, 0, 0, 0, 0}, - /*II_VRR_F2_0F_10*/ {0x45, 46, 68, 128, 2143, 0x60, 0, 0, 0, 0}, - /*II_V_0F_11*/ {0x43, 83, 90, 128, 2117, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_11*/ {0x43, 83, 90, 128, 2126, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_11*/ {0x44, 81, 68, 128, 2135, 0x20, 69, 0, 0, 0}, - /*II_V_F2_0F_11*/ {0x44, 81, 68, 128, 2143, 0x20, 69, 0, 0, 0}, - /*II_VRR_F3_0F_11*/ {0x45, 68, 44, 128, 2135, 0x60, 0, 0, 0, 0}, - /*II_VRR_F2_0F_11*/ {0x45, 68, 46, 128, 2143, 0x60, 0, 0, 0, 0}, - /*II_0F_12*/ {0x46, 72, 68, 40, 2151, 0x0, 0, 0, 2160, 0}, - /*II_V_0F_12*/ {0x47, 81, 68, 128, 2195, 0x0, 72, 0, 2205, 0}, - /*II_V_66_0F_12*/ {0x48, 81, 68, 128, 2214, 0x0, 46, 0, 0, 0}, - /*II_V_F3_0F_12*/ {0x43, 90, 83, 128, 2223, 0x41, 0, 0, 0, 0}, - /*II_V_F2_0F_12*/ {0x43, 89, 83, 128, 2234, 0x41, 0, 0, 0, 0}, - /*II_V_0F_13*/ {0x43, 68, 46, 128, 2205, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_13*/ {0x43, 68, 46, 128, 2214, 0x40, 0, 0, 0, 0}, - /*II_V_0F_14*/ {0x48, 88, 83, 128, 2264, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_14*/ {0x48, 88, 83, 128, 2275, 0x1, 90, 0, 0, 0}, - /*II_V_0F_15*/ {0x48, 88, 83, 128, 2306, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_15*/ {0x48, 88, 83, 128, 2317, 0x1, 90, 0, 0, 0}, - /*II_0F_16*/ {0x46, 72, 68, 40, 2328, 0x0, 0, 0, 2337, 0}, - /*II_V_0F_16*/ {0x47, 81, 68, 128, 2363, 0x0, 72, 0, 2373, 0}, - /*II_V_66_0F_16*/ {0x48, 81, 68, 128, 2382, 0x0, 46, 0, 0, 0}, - /*II_V_F3_0F_16*/ {0x43, 90, 83, 128, 2391, 0x41, 0, 0, 0, 0}, - /*II_V_0F_17*/ {0x43, 68, 46, 128, 2373, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_17*/ {0x43, 68, 46, 128, 2382, 0x40, 0, 0, 0, 0}, - /*II_V_0F_28*/ {0x43, 90, 83, 128, 2467, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_28*/ {0x43, 90, 83, 128, 2476, 0x41, 0, 0, 0, 0}, - /*II_V_0F_29*/ {0x43, 83, 90, 128, 2467, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_29*/ {0x43, 83, 90, 128, 2476, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_2A*/ {0x48, 81, 68, 128, 2525, 0x2, 79, 0, 0, 0}, - /*II_V_F2_0F_2A*/ {0x48, 81, 68, 128, 2536, 0x2, 79, 0, 0, 0}, - /*II_V_0F_2B*/ {0x43, 83, 92, 128, 2583, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_2B*/ {0x43, 83, 92, 128, 2593, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_2C*/ {0x43, 80, 78, 128, 2647, 0x42, 0, 0, 0, 0}, - /*II_V_F2_0F_2C*/ {0x43, 80, 78, 128, 2659, 0x42, 0, 0, 0, 0}, - /*II_V_F3_0F_2D*/ {0x43, 80, 78, 128, 2711, 0x42, 0, 0, 0, 0}, - /*II_V_F2_0F_2D*/ {0x43, 80, 78, 128, 2722, 0x42, 0, 0, 0, 0}, - /*II_V_0F_2E*/ {0x43, 71, 68, 128, 2751, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_2E*/ {0x43, 72, 68, 128, 2761, 0x40, 0, 0, 0, 0}, - /*II_V_0F_2F*/ {0x43, 71, 68, 128, 2787, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_2F*/ {0x43, 72, 68, 128, 2796, 0x40, 0, 0, 0, 0}, - /*II_V_0F_50*/ {0x4a, 83, 13, 128, 2825, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_50*/ {0x4a, 83, 13, 128, 2836, 0x41, 0, 0, 0, 0}, - /*II_V_0F_51*/ {0x43, 90, 83, 128, 2879, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_51*/ {0x43, 90, 83, 128, 2888, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_51*/ {0x48, 81, 68, 128, 2897, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_51*/ {0x48, 81, 68, 128, 2906, 0x0, 72, 0, 0, 0}, - /*II_V_0F_52*/ {0x43, 90, 83, 128, 2933, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_52*/ {0x48, 81, 68, 128, 2943, 0x0, 71, 0, 0, 0}, - /*II_V_0F_53*/ {0x43, 90, 83, 128, 2967, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_53*/ {0x48, 81, 68, 128, 2975, 0x0, 71, 0, 0, 0}, - /*II_V_0F_54*/ {0x48, 88, 83, 128, 2997, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_54*/ {0x48, 88, 83, 128, 3005, 0x1, 90, 0, 0, 0}, - /*II_V_0F_55*/ {0x48, 88, 83, 128, 3029, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_55*/ {0x48, 88, 83, 128, 3038, 0x1, 90, 0, 0, 0}, - /*II_V_0F_56*/ {0x48, 88, 83, 128, 3059, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_56*/ {0x48, 88, 83, 128, 3066, 0x1, 90, 0, 0, 0}, - /*II_V_0F_57*/ {0x48, 88, 83, 128, 3087, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_57*/ {0x48, 88, 83, 128, 3095, 0x1, 90, 0, 0, 0}, - /*II_V_0F_58*/ {0x48, 88, 83, 128, 3131, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_58*/ {0x48, 88, 83, 128, 3139, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_58*/ {0x48, 81, 68, 128, 3147, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_58*/ {0x48, 81, 68, 128, 3155, 0x0, 72, 0, 0, 0}, - /*II_V_0F_59*/ {0x48, 88, 83, 128, 3191, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_59*/ {0x48, 88, 83, 128, 3199, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_59*/ {0x48, 81, 68, 128, 3207, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_59*/ {0x48, 81, 68, 128, 3215, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5A*/ {0x43, 91, 83, 128, 3263, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_5A*/ {0x43, 90, 68, 128, 3274, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_5A*/ {0x48, 81, 68, 128, 3285, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5A*/ {0x48, 81, 68, 128, 3296, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5B*/ {0x43, 90, 83, 128, 3338, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_5B*/ {0x43, 90, 83, 128, 3349, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_5B*/ {0x43, 90, 83, 128, 3360, 0x41, 0, 0, 0, 0}, - /*II_V_0F_5C*/ {0x48, 88, 83, 128, 3400, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_5C*/ {0x48, 88, 83, 128, 3408, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_5C*/ {0x48, 81, 68, 128, 3416, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5C*/ {0x48, 81, 68, 128, 3424, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5D*/ {0x48, 88, 83, 128, 3460, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_5D*/ {0x48, 88, 83, 128, 3468, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_5D*/ {0x48, 81, 68, 128, 3476, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5D*/ {0x48, 81, 68, 128, 3484, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5E*/ {0x48, 88, 83, 128, 3520, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_5E*/ {0x48, 88, 83, 128, 3528, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_5E*/ {0x48, 81, 68, 128, 3536, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5E*/ {0x48, 81, 68, 128, 3544, 0x0, 72, 0, 0, 0}, - /*II_V_0F_5F*/ {0x48, 88, 83, 128, 3580, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_5F*/ {0x48, 88, 83, 128, 3588, 0x1, 90, 0, 0, 0}, - /*II_V_F3_0F_5F*/ {0x48, 81, 68, 128, 3596, 0x0, 71, 0, 0, 0}, - /*II_V_F2_0F_5F*/ {0x48, 81, 68, 128, 3604, 0x0, 72, 0, 0, 0}, - /*II_V_66_0F_60*/ {0x48, 81, 68, 128, 3623, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_61*/ {0x48, 81, 68, 128, 3646, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_62*/ {0x48, 81, 68, 128, 3669, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_63*/ {0x48, 81, 68, 128, 3691, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_64*/ {0x48, 81, 68, 128, 3711, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_65*/ {0x48, 81, 68, 128, 3730, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_66*/ {0x48, 81, 68, 128, 3749, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_67*/ {0x48, 81, 68, 128, 3769, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_68*/ {0x48, 81, 68, 128, 3791, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_69*/ {0x48, 81, 68, 128, 3814, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_6A*/ {0x48, 81, 68, 128, 3837, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_6B*/ {0x48, 81, 68, 128, 3859, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_6C*/ {0x48, 81, 68, 128, 3882, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_6D*/ {0x48, 81, 68, 128, 3907, 0x0, 73, 0, 0, 0}, - /*II_0F_6E*/ {0x4b, 18, 64, 32, 3920, 0x0, 0, 0, 0, 3926}, - /*II_66_0F_6E*/ {0x4b, 18, 68, 48, 3920, 0x0, 0, 0, 0, 3926}, - /*II_V_66_0F_6E*/ {0x43, 79, 68, 128, 3932, 0x46, 0, 0, 3939, 0}, - /*II_V_66_0F_6F*/ {0x43, 90, 83, 128, 3962, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_6F*/ {0x43, 90, 83, 128, 3971, 0x41, 0, 0, 0, 0}, - /*II_0F_70*/ {0x4c, 67, 64, 40, 3980, 0x0, 1, 0, 0, 0}, - /*II_66_0F_70*/ {0x4c, 73, 68, 48, 3988, 0x0, 1, 0, 0, 0}, - /*II_F3_0F_70*/ {0x4c, 73, 68, 48, 3996, 0x0, 1, 0, 0, 0}, - /*II_F2_0F_70*/ {0x4c, 73, 68, 48, 4005, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_70*/ {0x48, 73, 68, 128, 4014, 0x40, 1, 0, 0, 0}, - /*II_V_F3_0F_70*/ {0x48, 73, 68, 128, 4023, 0x40, 1, 0, 0, 0}, - /*II_V_F2_0F_70*/ {0x48, 73, 68, 128, 4033, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_74*/ {0x48, 81, 68, 128, 4052, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_75*/ {0x48, 81, 68, 128, 4071, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_76*/ {0x48, 81, 68, 128, 4090, 0x0, 73, 0, 0, 0}, - /*II_V_0F_77*/ {0x4d, 0, 0, 128, 4106, 0x49, 0, 0, 4118, 0}, - /*II_66_0F_78*/ {0x4f, 7, 69, 88, 4136, 0x0, 8, 0, 0, 0}, - /*II_F2_0F_78*/ {0x50, 69, 68, 88, 4143, 0x0, 7, 8, 0, 0}, - /*II_V_66_0F_7C*/ {0x48, 88, 83, 128, 4197, 0x1, 90, 0, 0, 0}, - /*II_V_F2_0F_7C*/ {0x48, 88, 83, 128, 4206, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_7D*/ {0x48, 88, 83, 128, 4231, 0x1, 90, 0, 0, 0}, - /*II_V_F2_0F_7D*/ {0x48, 88, 83, 128, 4240, 0x1, 90, 0, 0, 0}, - /*II_0F_7E*/ {0x4b, 64, 18, 32, 3920, 0x0, 0, 0, 0, 3926}, - /*II_66_0F_7E*/ {0x4b, 68, 18, 48, 3920, 0x0, 0, 0, 0, 3926}, - /*II_V_66_0F_7E*/ {0x43, 68, 79, 128, 3932, 0x46, 0, 0, 3939, 0}, - /*II_V_F3_0F_7E*/ {0x43, 72, 68, 128, 3939, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_7F*/ {0x43, 83, 90, 128, 3962, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_7F*/ {0x43, 83, 90, 128, 3971, 0x41, 0, 0, 0, 0}, - /*II_0F_AE_04*/ {0x52, 0, 42, 8, 4249, 0x0, 0, 0, 0, 4256}, - /*II_0F_AE_05*/ {0x53, 0, 43, 8, 4265, 0x0, 0, 0, 4273, 4281}, - /*II_0F_AE_06*/ {0x53, 0, 43, 8, 4291, 0x0, 0, 0, 4299, 4309}, - /*II_0F_AE_07*/ {0x54, 0, 43, 8, 4321, 0x0, 0, 0, 4329, 0}, - /*II_0F_C2*/ {0x59, 73, 68, 40, 4370, 0x0, 0, 0, 4379, 4388}, - /*II_66_0F_C2*/ {0x59, 73, 68, 48, 4449, 0x0, 0, 0, 4458, 4467}, - /*II_F3_0F_C2*/ {0x59, 71, 68, 40, 4528, 0x0, 0, 0, 4537, 4546}, - /*II_F2_0F_C2*/ {0x59, 72, 68, 48, 4607, 0x0, 0, 0, 4616, 4625}, - /*II_V_0F_C2*/ {0x5a, 88, 83, 128, 4686, 0x1, 90, 0, 4696, 4706}, - /*II_V_66_0F_C2*/ {0x5a, 88, 83, 128, 5088, 0x1, 90, 0, 5098, 5108}, - /*II_V_F3_0F_C2*/ {0x5a, 81, 68, 128, 5490, 0x0, 71, 0, 5500, 5510}, - /*II_V_F2_0F_C2*/ {0x5a, 81, 68, 128, 5892, 0x0, 72, 0, 5902, 5912}, - /*II_0F_C4*/ {0x4c, 25, 64, 40, 6294, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C4*/ {0x4c, 25, 68, 48, 6294, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_C4*/ {0x5b, 81, 68, 128, 6302, 0x0, 25, 1, 0, 0}, - /*II_0F_C5*/ {0x5c, 65, 12, 40, 6311, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C5*/ {0x4c, 69, 12, 48, 6311, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_C5*/ {0x5d, 68, 13, 128, 6319, 0x40, 1, 0, 0, 0}, - /*II_0F_C6*/ {0x4c, 73, 68, 40, 6328, 0x0, 1, 0, 0, 0}, - /*II_66_0F_C6*/ {0x4c, 73, 68, 48, 6336, 0x0, 1, 0, 0, 0}, - /*II_V_0F_C6*/ {0x5b, 88, 83, 128, 6344, 0x1, 90, 1, 0, 0}, - /*II_V_66_0F_C6*/ {0x5b, 88, 83, 128, 6353, 0x1, 90, 1, 0, 0}, - /*II_0F_C7_01*/ {0x5e, 0, 48, 8, 6362, 0x0, 0, 0, 0, 6373}, - /*II_V_66_0F_D0*/ {0x48, 88, 83, 128, 6414, 0x1, 90, 0, 0, 0}, - /*II_V_F2_0F_D0*/ {0x48, 88, 83, 128, 6425, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_D1*/ {0x48, 81, 68, 128, 6443, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D2*/ {0x48, 81, 68, 128, 6458, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D3*/ {0x48, 81, 68, 128, 6473, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D4*/ {0x48, 81, 68, 128, 6488, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D5*/ {0x48, 81, 68, 128, 6504, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D6*/ {0x43, 68, 72, 128, 3939, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_D7*/ {0x4a, 68, 13, 128, 6541, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_D8*/ {0x48, 81, 68, 128, 6561, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_D9*/ {0x48, 81, 68, 128, 6580, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DA*/ {0x48, 81, 68, 128, 6598, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DB*/ {0x48, 81, 68, 128, 6613, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DC*/ {0x48, 81, 68, 128, 6629, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DD*/ {0x48, 81, 68, 128, 6629, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DE*/ {0x48, 81, 68, 128, 6656, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_DF*/ {0x48, 81, 68, 128, 6672, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E0*/ {0x48, 81, 68, 128, 6687, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E1*/ {0x48, 81, 68, 128, 6702, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E2*/ {0x48, 81, 68, 128, 6717, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E3*/ {0x48, 81, 68, 128, 6732, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E4*/ {0x48, 81, 68, 128, 6749, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E5*/ {0x48, 81, 68, 128, 6767, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E6*/ {0x43, 90, 68, 128, 6807, 0x41, 0, 0, 0, 0}, - /*II_V_F3_0F_E6*/ {0x43, 91, 83, 128, 6819, 0x41, 0, 0, 0, 0}, - /*II_V_F2_0F_E6*/ {0x43, 90, 68, 128, 6830, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_E7*/ {0x43, 83, 92, 128, 6858, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_E8*/ {0x48, 81, 68, 128, 6876, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_E9*/ {0x48, 81, 68, 128, 6893, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EA*/ {0x48, 81, 68, 128, 6910, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EB*/ {0x48, 81, 68, 128, 6924, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EC*/ {0x48, 81, 68, 128, 6938, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_ED*/ {0x48, 81, 68, 128, 6955, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EE*/ {0x48, 81, 68, 128, 6972, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_EF*/ {0x48, 81, 68, 128, 6987, 0x0, 73, 0, 0, 0}, - /*II_V_F2_0F_F0*/ {0x43, 92, 83, 128, 7001, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_F1*/ {0x48, 81, 68, 128, 7016, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F2*/ {0x48, 81, 68, 128, 7031, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F3*/ {0x48, 81, 68, 128, 7046, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F4*/ {0x48, 81, 68, 128, 7063, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F5*/ {0x48, 81, 68, 128, 7082, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F6*/ {0x48, 81, 68, 128, 7100, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F7*/ {0x5f, 69, 68, 128, 7131, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_F8*/ {0x48, 81, 68, 128, 7151, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_F9*/ {0x48, 81, 68, 128, 7166, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FA*/ {0x48, 81, 68, 128, 7181, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FB*/ {0x48, 81, 68, 128, 7196, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FC*/ {0x48, 81, 68, 128, 7211, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FD*/ {0x48, 81, 68, 128, 7226, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_FE*/ {0x48, 81, 68, 128, 7241, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_00*/ {0x48, 81, 68, 128, 7349, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_01*/ {0x48, 81, 68, 128, 7366, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_02*/ {0x48, 81, 68, 128, 7383, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_03*/ {0x48, 81, 68, 128, 7401, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_04*/ {0x48, 81, 68, 128, 7422, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_05*/ {0x48, 81, 68, 128, 7442, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_06*/ {0x48, 81, 68, 128, 7459, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_07*/ {0x48, 81, 68, 128, 7477, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_08*/ {0x48, 81, 68, 128, 7495, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_09*/ {0x48, 81, 68, 128, 7512, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_0A*/ {0x48, 81, 68, 128, 7529, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_0B*/ {0x48, 81, 68, 128, 7548, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_0C*/ {0x48, 88, 83, 128, 7559, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_38_0D*/ {0x48, 88, 83, 128, 7570, 0x1, 90, 0, 0, 0}, - /*II_V_66_0F_38_0E*/ {0x43, 90, 83, 128, 7581, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_0F*/ {0x43, 90, 83, 128, 7590, 0x41, 0, 0, 0, 0}, - /*II_66_0F_38_10*/ {0x4c, 73, 68, 72, 7599, 0x0, 74, 0, 0, 0}, - /*II_66_0F_38_14*/ {0x4c, 73, 68, 72, 7609, 0x0, 74, 0, 0, 0}, - /*II_66_0F_38_15*/ {0x4c, 73, 68, 72, 7619, 0x0, 74, 0, 0, 0}, - /*II_V_66_0F_38_17*/ {0x43, 90, 83, 128, 7636, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_18*/ {0x43, 44, 83, 128, 7644, 0x41, 0, 0, 0, 0}, - /*II_V_66_0F_38_19*/ {0x43, 46, 85, 128, 7658, 0x50, 0, 0, 0, 0}, - /*II_V_66_0F_38_1A*/ {0x43, 47, 85, 128, 7672, 0x50, 0, 0, 0, 0}, - /*II_V_66_0F_38_1C*/ {0x43, 73, 68, 128, 7695, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_1D*/ {0x43, 73, 68, 128, 7710, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_1E*/ {0x43, 73, 68, 128, 7725, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_20*/ {0x43, 72, 68, 128, 7743, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_21*/ {0x43, 71, 68, 128, 7764, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_22*/ {0x43, 70, 68, 128, 7785, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_23*/ {0x43, 72, 68, 128, 7806, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_24*/ {0x43, 71, 68, 128, 7827, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_25*/ {0x43, 72, 68, 128, 7848, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_28*/ {0x48, 81, 68, 128, 7867, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_29*/ {0x48, 81, 68, 128, 7885, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_2A*/ {0x43, 47, 68, 128, 7905, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_2B*/ {0x48, 81, 68, 128, 7926, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_2C*/ {0x48, 88, 83, 128, 7937, 0x1, 92, 0, 0, 0}, - /*II_V_66_0F_38_2D*/ {0x48, 88, 83, 128, 7949, 0x1, 92, 0, 0, 0}, - /*II_V_66_0F_38_2E*/ {0x48, 88, 92, 128, 7937, 0x1, 83, 0, 0, 0}, - /*II_V_66_0F_38_2F*/ {0x48, 88, 92, 128, 7949, 0x1, 83, 0, 0, 0}, - /*II_V_66_0F_38_30*/ {0x43, 72, 68, 128, 7971, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_31*/ {0x43, 71, 68, 128, 7992, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_32*/ {0x43, 70, 68, 128, 8013, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_33*/ {0x43, 72, 68, 128, 8034, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_34*/ {0x43, 71, 68, 128, 8055, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_35*/ {0x43, 72, 68, 128, 8076, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_37*/ {0x48, 81, 68, 128, 8096, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_38*/ {0x48, 81, 68, 128, 8114, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_39*/ {0x48, 81, 68, 128, 8131, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3A*/ {0x48, 81, 68, 128, 8148, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3B*/ {0x48, 81, 68, 128, 8165, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3C*/ {0x48, 81, 68, 128, 8182, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3D*/ {0x48, 81, 68, 128, 8199, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3E*/ {0x48, 81, 68, 128, 8216, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_3F*/ {0x48, 81, 68, 128, 8233, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_40*/ {0x48, 81, 68, 128, 8250, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_41*/ {0x43, 73, 68, 128, 8271, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_96*/ {0x48, 88, 83, 136, 8310, 0x7, 90, 0, 8326, 0}, - /*II_V_66_0F_38_97*/ {0x48, 88, 83, 136, 8342, 0x7, 90, 0, 8358, 0}, - /*II_V_66_0F_38_98*/ {0x48, 88, 83, 136, 8374, 0x7, 90, 0, 8387, 0}, - /*II_V_66_0F_38_99*/ {0x48, 81, 68, 136, 8400, 0x6, 80, 0, 8413, 0}, - /*II_V_66_0F_38_9A*/ {0x48, 88, 83, 136, 8426, 0x7, 90, 0, 8439, 0}, - /*II_V_66_0F_38_9B*/ {0x48, 81, 68, 136, 8452, 0x6, 80, 0, 8465, 0}, - /*II_V_66_0F_38_9C*/ {0x48, 88, 83, 136, 8478, 0x7, 90, 0, 8492, 0}, - /*II_V_66_0F_38_9D*/ {0x48, 81, 68, 136, 8506, 0x6, 80, 0, 8520, 0}, - /*II_V_66_0F_38_9E*/ {0x48, 88, 83, 136, 8534, 0x7, 90, 0, 8548, 0}, - /*II_V_66_0F_38_9F*/ {0x48, 81, 68, 136, 8562, 0x6, 80, 0, 8576, 0}, - /*II_V_66_0F_38_A6*/ {0x48, 88, 83, 136, 8590, 0x7, 90, 0, 8606, 0}, - /*II_V_66_0F_38_A7*/ {0x48, 88, 83, 136, 8622, 0x7, 90, 0, 8638, 0}, - /*II_V_66_0F_38_A8*/ {0x48, 88, 83, 136, 8654, 0x7, 90, 0, 8667, 0}, - /*II_V_66_0F_38_A9*/ {0x48, 81, 68, 136, 8680, 0x6, 80, 0, 8693, 0}, - /*II_V_66_0F_38_AA*/ {0x48, 88, 83, 136, 8706, 0x7, 90, 0, 8719, 0}, - /*II_V_66_0F_38_AB*/ {0x48, 81, 68, 136, 8732, 0x6, 80, 0, 8745, 0}, - /*II_V_66_0F_38_AC*/ {0x48, 88, 83, 136, 8758, 0x7, 90, 0, 8772, 0}, - /*II_V_66_0F_38_AD*/ {0x48, 81, 68, 136, 8786, 0x6, 80, 0, 8800, 0}, - /*II_V_66_0F_38_AE*/ {0x48, 88, 83, 136, 8814, 0x7, 90, 0, 8828, 0}, - /*II_V_66_0F_38_AF*/ {0x48, 81, 68, 136, 8842, 0x6, 80, 0, 8856, 0}, - /*II_V_66_0F_38_B6*/ {0x48, 88, 83, 136, 8870, 0x7, 90, 0, 8886, 0}, - /*II_V_66_0F_38_B7*/ {0x48, 88, 83, 136, 8902, 0x7, 90, 0, 8918, 0}, - /*II_V_66_0F_38_B8*/ {0x48, 88, 83, 136, 8934, 0x7, 90, 0, 8947, 0}, - /*II_V_66_0F_38_B9*/ {0x48, 81, 68, 136, 8960, 0x6, 80, 0, 8973, 0}, - /*II_V_66_0F_38_BA*/ {0x48, 88, 83, 136, 8986, 0x7, 90, 0, 8999, 0}, - /*II_V_66_0F_38_BB*/ {0x48, 81, 68, 136, 9012, 0x6, 80, 0, 9025, 0}, - /*II_V_66_0F_38_BC*/ {0x48, 88, 83, 136, 9038, 0x7, 90, 0, 9052, 0}, - /*II_V_66_0F_38_BD*/ {0x48, 81, 68, 136, 9066, 0x6, 80, 0, 9080, 0}, - /*II_V_66_0F_38_BE*/ {0x48, 88, 83, 136, 9094, 0x7, 90, 0, 9108, 0}, - /*II_V_66_0F_38_BF*/ {0x48, 81, 68, 136, 9122, 0x6, 80, 0, 9136, 0}, - /*II_V_66_0F_38_DB*/ {0x43, 73, 68, 152, 9158, 0x40, 0, 0, 0, 0}, - /*II_V_66_0F_38_DC*/ {0x48, 81, 68, 152, 9175, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_DD*/ {0x48, 81, 68, 152, 9196, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_DE*/ {0x48, 81, 68, 152, 9217, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_38_DF*/ {0x48, 81, 68, 152, 9238, 0x0, 73, 0, 0, 0}, - /*II_V_66_0F_3A_04*/ {0x48, 90, 83, 128, 7559, 0x41, 1, 0, 0, 0}, - /*II_V_66_0F_3A_05*/ {0x48, 90, 83, 128, 7570, 0x41, 1, 0, 0, 0}, - /*II_V_66_0F_3A_06*/ {0x5b, 87, 85, 128, 9265, 0x10, 86, 1, 0, 0}, - /*II_66_0F_3A_08*/ {0x4c, 73, 68, 72, 9277, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_08*/ {0x48, 90, 83, 128, 9286, 0x41, 1, 0, 0, 0}, - /*II_66_0F_3A_09*/ {0x4c, 73, 68, 72, 9296, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_09*/ {0x48, 90, 83, 128, 9305, 0x41, 1, 0, 0, 0}, - /*II_66_0F_3A_0A*/ {0x4c, 71, 68, 72, 9315, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0A*/ {0x5b, 81, 68, 128, 9324, 0x0, 71, 1, 0, 0}, - /*II_66_0F_3A_0B*/ {0x4c, 72, 68, 72, 9334, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0B*/ {0x5b, 81, 68, 128, 9343, 0x0, 72, 1, 0, 0}, - /*II_66_0F_3A_0C*/ {0x4c, 73, 68, 72, 9353, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0C*/ {0x5b, 88, 83, 128, 9362, 0x1, 90, 1, 0, 0}, - /*II_66_0F_3A_0D*/ {0x4c, 73, 68, 72, 9372, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0D*/ {0x5b, 88, 83, 128, 9381, 0x1, 90, 1, 0, 0}, - /*II_66_0F_3A_0E*/ {0x4c, 73, 68, 72, 9391, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0E*/ {0x5b, 81, 68, 128, 9400, 0x0, 73, 1, 0, 0}, - /*II_0F_3A_0F*/ {0x4c, 67, 64, 64, 9410, 0x0, 1, 0, 0, 0}, - /*II_66_0F_3A_0F*/ {0x4c, 73, 68, 64, 9410, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_0F*/ {0x5b, 81, 68, 128, 9419, 0x0, 73, 1, 0, 0}, - /*II_66_0F_3A_14*/ {0x4c, 68, 26, 72, 9429, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_14*/ {0x5d, 68, 76, 128, 9437, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_15*/ {0x4c, 68, 27, 72, 6311, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_15*/ {0x5d, 68, 77, 128, 6319, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_16*/ {0x62, 68, 18, 72, 9446, 0x0, 1, 0, 0, 9454}, - /*II_V_66_0F_3A_16*/ {0x48, 68, 79, 128, 9462, 0x46, 1, 0, 9471, 0}, - /*II_66_0F_3A_17*/ {0x4c, 68, 18, 72, 9480, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_17*/ {0x48, 68, 75, 128, 9491, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_3A_18*/ {0x5b, 87, 85, 128, 9503, 0x10, 73, 1, 0, 0}, - /*II_V_66_0F_3A_19*/ {0x48, 85, 73, 128, 9516, 0x50, 1, 0, 0, 0}, - /*II_66_0F_3A_20*/ {0x4c, 24, 68, 72, 9530, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_20*/ {0x5b, 81, 68, 128, 9538, 0x0, 76, 1, 0, 0}, - /*II_66_0F_3A_21*/ {0x4c, 71, 68, 72, 9547, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_21*/ {0x5b, 81, 68, 128, 9557, 0x0, 71, 1, 0, 0}, - /*II_66_0F_3A_22*/ {0x62, 18, 68, 72, 9568, 0x0, 1, 0, 0, 9576}, - /*II_V_66_0F_3A_22*/ {0x5b, 81, 68, 128, 9584, 0x6, 79, 1, 9593, 0}, - /*II_66_0F_3A_40*/ {0x4c, 73, 68, 72, 9602, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_40*/ {0x5b, 88, 83, 128, 9608, 0x1, 90, 1, 0, 0}, - /*II_66_0F_3A_41*/ {0x4c, 73, 68, 72, 9615, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_41*/ {0x5b, 81, 68, 128, 9621, 0x0, 73, 1, 0, 0}, - /*II_66_0F_3A_42*/ {0x4c, 73, 68, 72, 9628, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_42*/ {0x5b, 81, 68, 128, 9637, 0x0, 73, 1, 0, 0}, - /*II_66_0F_3A_44*/ {0x4c, 73, 68, 144, 9647, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_44*/ {0x5b, 81, 68, 144, 9658, 0x0, 73, 1, 0, 0}, - /*II_V_66_0F_3A_4A*/ {0x5b, 88, 83, 128, 9670, 0x1, 90, 84, 0, 0}, - /*II_V_66_0F_3A_4B*/ {0x5b, 88, 83, 128, 9681, 0x1, 90, 84, 0, 0}, - /*II_V_66_0F_3A_4C*/ {0x5b, 81, 68, 128, 9692, 0x0, 73, 82, 0, 0}, - /*II_66_0F_3A_60*/ {0x4c, 73, 68, 80, 9703, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_60*/ {0x48, 73, 68, 128, 9714, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_61*/ {0x4c, 73, 68, 80, 9726, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_61*/ {0x48, 73, 68, 128, 9737, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_62*/ {0x4c, 73, 68, 80, 9749, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_62*/ {0x48, 73, 68, 128, 9760, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_63*/ {0x4c, 73, 68, 80, 9772, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_63*/ {0x48, 73, 68, 128, 9783, 0x40, 1, 0, 0, 0}, - /*II_66_0F_3A_DF*/ {0x4c, 73, 68, 152, 9795, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_3A_DF*/ {0x48, 73, 68, 152, 9812, 0x40, 1, 0, 0, 0}, - /*II_V_66_0F_71_02*/ {0x64, 69, 81, 128, 6443, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_71_04*/ {0x64, 69, 81, 128, 6702, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_71_06*/ {0x64, 69, 81, 128, 7016, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_02*/ {0x64, 69, 81, 128, 6458, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_04*/ {0x64, 69, 81, 128, 6717, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_72_06*/ {0x64, 69, 81, 128, 7031, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_02*/ {0x64, 69, 81, 128, 6473, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_03*/ {0x64, 69, 81, 128, 9838, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_06*/ {0x64, 69, 81, 128, 7046, 0x0, 1, 0, 0, 0}, - /*II_V_66_0F_73_07*/ {0x64, 69, 81, 128, 9855, 0x0, 1, 0, 0, 0}, - /*II_0F_AE_00*/ {0x52, 0, 42, 8, 9864, 0x0, 0, 0, 0, 9872}, - /*II_0F_AE_01*/ {0x52, 0, 42, 8, 9892, 0x0, 0, 0, 0, 9901}, - /*II_V_0F_AE_02*/ {0x45, 0, 44, 128, 9941, 0x40, 0, 0, 0, 0}, - /*II_V_0F_AE_03*/ {0x45, 0, 44, 128, 9970, 0x40, 0, 0, 0, 0}, - /*II_0F_C7_06*/ {0x54, 0, 43, 112, 9980, 0x0, 0, 0, 9988, 0} +_InstInfoEx InstInfosEx[382] = { + /*II_69*/ {0x34, 117, 0x0, 3, 0, 0, 0}, + /*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*/ {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*/ {0x124, 2117, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_10*/ {0x124, 2126, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_10*/ {0x125, 2135, 0x20, 69, 0, 0, 0}, + /*II_V_F2_0F_10*/ {0x125, 2143, 0x20, 69, 0, 0, 0}, + /*II_VRR_F3_0F_10*/ {0x126, 2135, 0x60, 0, 0, 0, 0}, + /*II_VRR_F2_0F_10*/ {0x127, 2143, 0x60, 0, 0, 0, 0}, + /*II_V_0F_11*/ {0x12c, 2117, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_11*/ {0x12c, 2126, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_11*/ {0x125, 2135, 0x20, 69, 0, 0, 0}, + /*II_V_F2_0F_11*/ {0x125, 2143, 0x20, 69, 0, 0, 0}, + /*II_VRR_F3_0F_11*/ {0x12d, 2135, 0x60, 0, 0, 0, 0}, + /*II_VRR_F2_0F_11*/ {0x12e, 2143, 0x60, 0, 0, 0, 0}, + /*II_0F_12*/ {0x12f, 2151, 0x0, 0, 0, 2160, 0}, + /*II_V_0F_12*/ {0x132, 2195, 0x0, 72, 0, 2205, 0}, + /*II_V_66_0F_12*/ {0x133, 2214, 0x0, 46, 0, 0, 0}, + /*II_V_F3_0F_12*/ {0x124, 2223, 0x41, 0, 0, 0, 0}, + /*II_V_F2_0F_12*/ {0x134, 2234, 0x41, 0, 0, 0, 0}, + /*II_V_0F_13*/ {0x137, 2205, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_13*/ {0x137, 2214, 0x40, 0, 0, 0, 0}, + /*II_V_0F_14*/ {0x13a, 2264, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_14*/ {0x13a, 2275, 0x1, 90, 0, 0, 0}, + /*II_V_0F_15*/ {0x13a, 2306, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_15*/ {0x13a, 2317, 0x1, 90, 0, 0, 0}, + /*II_0F_16*/ {0x12f, 2328, 0x0, 0, 0, 2337, 0}, + /*II_V_0F_16*/ {0x132, 2363, 0x0, 72, 0, 2373, 0}, + /*II_V_66_0F_16*/ {0x133, 2382, 0x0, 46, 0, 0, 0}, + /*II_V_F3_0F_16*/ {0x124, 2391, 0x41, 0, 0, 0, 0}, + /*II_V_0F_17*/ {0x137, 2373, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_17*/ {0x137, 2382, 0x40, 0, 0, 0, 0}, + /*II_V_0F_28*/ {0x124, 2467, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_28*/ {0x124, 2476, 0x41, 0, 0, 0, 0}, + /*II_V_0F_29*/ {0x12c, 2467, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_29*/ {0x12c, 2476, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_2A*/ {0x133, 2525, 0x2, 79, 0, 0, 0}, + /*II_V_F2_0F_2A*/ {0x133, 2536, 0x2, 79, 0, 0, 0}, + /*II_V_0F_2B*/ {0x145, 2583, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_2B*/ {0x145, 2593, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_2C*/ {0x14a, 2647, 0x42, 0, 0, 0, 0}, + /*II_V_F2_0F_2C*/ {0x14a, 2659, 0x42, 0, 0, 0, 0}, + /*II_V_F3_0F_2D*/ {0x14a, 2711, 0x42, 0, 0, 0, 0}, + /*II_V_F2_0F_2D*/ {0x14a, 2722, 0x42, 0, 0, 0, 0}, + /*II_V_0F_2E*/ {0x14d, 2751, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_2E*/ {0x14e, 2761, 0x40, 0, 0, 0, 0}, + /*II_V_0F_2F*/ {0x14d, 2787, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_2F*/ {0x14e, 2796, 0x40, 0, 0, 0, 0}, + /*II_V_0F_50*/ {0x151, 2825, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_50*/ {0x151, 2836, 0x41, 0, 0, 0, 0}, + /*II_V_0F_51*/ {0x124, 2879, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_51*/ {0x124, 2888, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_51*/ {0x133, 2897, 0x0, 71, 0, 0, 0}, + /*II_V_F2_0F_51*/ {0x133, 2906, 0x0, 72, 0, 0, 0}, + /*II_V_0F_52*/ {0x124, 2933, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_52*/ {0x133, 2943, 0x0, 71, 0, 0, 0}, + /*II_V_0F_53*/ {0x124, 2967, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_53*/ {0x133, 2975, 0x0, 71, 0, 0, 0}, + /*II_V_0F_54*/ {0x13a, 2997, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_54*/ {0x13a, 3005, 0x1, 90, 0, 0, 0}, + /*II_V_0F_55*/ {0x13a, 3029, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_55*/ {0x13a, 3038, 0x1, 90, 0, 0, 0}, + /*II_V_0F_56*/ {0x13a, 3059, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_56*/ {0x13a, 3066, 0x1, 90, 0, 0, 0}, + /*II_V_0F_57*/ {0x13a, 3087, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_57*/ {0x13a, 3095, 0x1, 90, 0, 0, 0}, + /*II_V_0F_58*/ {0x13a, 3131, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_58*/ {0x13a, 3139, 0x1, 90, 0, 0, 0}, + /*II_V_F3_0F_58*/ {0x133, 3147, 0x0, 71, 0, 0, 0}, + /*II_V_F2_0F_58*/ {0x133, 3155, 0x0, 72, 0, 0, 0}, + /*II_V_0F_59*/ {0x13a, 3191, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_59*/ {0x13a, 3199, 0x1, 90, 0, 0, 0}, + /*II_V_F3_0F_59*/ {0x133, 3207, 0x0, 71, 0, 0, 0}, + /*II_V_F2_0F_59*/ {0x133, 3215, 0x0, 72, 0, 0, 0}, + /*II_V_0F_5A*/ {0x154, 3263, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_5A*/ {0x155, 3274, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_5A*/ {0x133, 3285, 0x0, 71, 0, 0, 0}, + /*II_V_F2_0F_5A*/ {0x133, 3296, 0x0, 72, 0, 0, 0}, + /*II_V_0F_5B*/ {0x124, 3338, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_5B*/ {0x124, 3349, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_5B*/ {0x124, 3360, 0x41, 0, 0, 0, 0}, + /*II_V_0F_5C*/ {0x13a, 3400, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_5C*/ {0x13a, 3408, 0x1, 90, 0, 0, 0}, + /*II_V_F3_0F_5C*/ {0x133, 3416, 0x0, 71, 0, 0, 0}, + /*II_V_F2_0F_5C*/ {0x133, 3424, 0x0, 72, 0, 0, 0}, + /*II_V_0F_5D*/ {0x13a, 3460, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_5D*/ {0x13a, 3468, 0x1, 90, 0, 0, 0}, + /*II_V_F3_0F_5D*/ {0x133, 3476, 0x0, 71, 0, 0, 0}, + /*II_V_F2_0F_5D*/ {0x133, 3484, 0x0, 72, 0, 0, 0}, + /*II_V_0F_5E*/ {0x13a, 3520, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_5E*/ {0x13a, 3528, 0x1, 90, 0, 0, 0}, + /*II_V_F3_0F_5E*/ {0x133, 3536, 0x0, 71, 0, 0, 0}, + /*II_V_F2_0F_5E*/ {0x133, 3544, 0x0, 72, 0, 0, 0}, + /*II_V_0F_5F*/ {0x13a, 3580, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_5F*/ {0x13a, 3588, 0x1, 90, 0, 0, 0}, + /*II_V_F3_0F_5F*/ {0x133, 3596, 0x0, 71, 0, 0, 0}, + /*II_V_F2_0F_5F*/ {0x133, 3604, 0x0, 72, 0, 0, 0}, + /*II_V_66_0F_60*/ {0x133, 3623, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_61*/ {0x133, 3646, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_62*/ {0x133, 3669, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_63*/ {0x133, 3691, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_64*/ {0x133, 3711, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_65*/ {0x133, 3730, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_66*/ {0x133, 3749, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_67*/ {0x133, 3769, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_68*/ {0x133, 3791, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_69*/ {0x133, 3814, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_6A*/ {0x133, 3837, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_6B*/ {0x133, 3859, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_6C*/ {0x133, 3882, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_6D*/ {0x133, 3907, 0x0, 73, 0, 0, 0}, + /*II_0F_6E*/ {0x158, 3920, 0x0, 0, 0, 0, 3926}, + /*II_66_0F_6E*/ {0x159, 3920, 0x0, 0, 0, 0, 3926}, + /*II_V_66_0F_6E*/ {0x15a, 3932, 0x46, 0, 0, 3939, 0}, + /*II_V_66_0F_6F*/ {0x124, 3962, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_6F*/ {0x124, 3971, 0x41, 0, 0, 0, 0}, + /*II_0F_70*/ {0x15c, 3980, 0x0, 1, 0, 0, 0}, + /*II_66_0F_70*/ {0x15d, 3988, 0x0, 1, 0, 0, 0}, + /*II_F3_0F_70*/ {0x15d, 3996, 0x0, 1, 0, 0, 0}, + /*II_F2_0F_70*/ {0x15d, 4005, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_70*/ {0x15e, 4014, 0x40, 1, 0, 0, 0}, + /*II_V_F3_0F_70*/ {0x15e, 4023, 0x40, 1, 0, 0, 0}, + /*II_V_F2_0F_70*/ {0x15e, 4033, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_74*/ {0x133, 4052, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_75*/ {0x133, 4071, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_76*/ {0x133, 4090, 0x0, 73, 0, 0, 0}, + /*II_V_0F_77*/ {0x160, 4106, 0x49, 0, 0, 4118, 0}, + /*II_66_0F_78*/ {0x162, 4136, 0x0, 8, 0, 0, 0}, + /*II_F2_0F_78*/ {0x163, 4143, 0x0, 7, 8, 0, 0}, + /*II_V_66_0F_7C*/ {0x13a, 4197, 0x1, 90, 0, 0, 0}, + /*II_V_F2_0F_7C*/ {0x13a, 4206, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_7D*/ {0x13a, 4231, 0x1, 90, 0, 0, 0}, + /*II_V_F2_0F_7D*/ {0x13a, 4240, 0x1, 90, 0, 0, 0}, + /*II_0F_7E*/ {0x16a, 3920, 0x0, 0, 0, 0, 3926}, + /*II_66_0F_7E*/ {0x16b, 3920, 0x0, 0, 0, 0, 3926}, + /*II_V_66_0F_7E*/ {0x16c, 3932, 0x46, 0, 0, 3939, 0}, + /*II_V_F3_0F_7E*/ {0x14e, 3939, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_7F*/ {0x12c, 3962, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_7F*/ {0x12c, 3971, 0x41, 0, 0, 0, 0}, + /*II_0F_AE_04*/ {0x16e, 4249, 0x0, 0, 0, 0, 4256}, + /*II_0F_AE_05*/ {0x16f, 4265, 0x0, 0, 0, 4273, 4281}, + /*II_0F_AE_06*/ {0x16f, 4291, 0x0, 0, 0, 4299, 4309}, + /*II_0F_AE_07*/ {0x170, 4321, 0x0, 0, 0, 4329, 0}, + /*II_0F_C2*/ {0x177, 4370, 0x0, 0, 0, 4379, 4388}, + /*II_66_0F_C2*/ {0x178, 4449, 0x0, 0, 0, 4458, 4467}, + /*II_F3_0F_C2*/ {0x179, 4528, 0x0, 0, 0, 4537, 4546}, + /*II_F2_0F_C2*/ {0x17a, 4607, 0x0, 0, 0, 4616, 4625}, + /*II_V_0F_C2*/ {0x17b, 4686, 0x1, 90, 0, 4696, 4706}, + /*II_V_66_0F_C2*/ {0x17b, 5088, 0x1, 90, 0, 5098, 5108}, + /*II_V_F3_0F_C2*/ {0x17c, 5490, 0x0, 71, 0, 5500, 5510}, + /*II_V_F2_0F_C2*/ {0x17c, 5892, 0x0, 72, 0, 5902, 5912}, + /*II_0F_C4*/ {0x17d, 6294, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C4*/ {0x17e, 6294, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_C4*/ {0x17f, 6302, 0x0, 25, 1, 0, 0}, + /*II_0F_C5*/ {0x180, 6311, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C5*/ {0x181, 6311, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_C5*/ {0x182, 6319, 0x40, 1, 0, 0, 0}, + /*II_0F_C6*/ {0x183, 6328, 0x0, 1, 0, 0, 0}, + /*II_66_0F_C6*/ {0x15d, 6336, 0x0, 1, 0, 0, 0}, + /*II_V_0F_C6*/ {0x184, 6344, 0x1, 90, 1, 0, 0}, + /*II_V_66_0F_C6*/ {0x184, 6353, 0x1, 90, 1, 0, 0}, + /*II_0F_C7_01*/ {0x185, 6362, 0x0, 0, 0, 0, 6373}, + /*II_V_66_0F_D0*/ {0x13a, 6414, 0x1, 90, 0, 0, 0}, + /*II_V_F2_0F_D0*/ {0x13a, 6425, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_D1*/ {0x133, 6443, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_D2*/ {0x133, 6458, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_D3*/ {0x133, 6473, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_D4*/ {0x133, 6488, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_D5*/ {0x133, 6504, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_D6*/ {0x189, 3939, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_D7*/ {0x18c, 6541, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_D8*/ {0x133, 6561, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_D9*/ {0x133, 6580, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_DA*/ {0x133, 6598, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_DB*/ {0x133, 6613, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_DC*/ {0x133, 6629, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_DD*/ {0x133, 6629, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_DE*/ {0x133, 6656, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_DF*/ {0x133, 6672, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_E0*/ {0x133, 6687, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_E1*/ {0x133, 6702, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_E2*/ {0x133, 6717, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_E3*/ {0x133, 6732, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_E4*/ {0x133, 6749, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_E5*/ {0x133, 6767, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_E6*/ {0x155, 6807, 0x41, 0, 0, 0, 0}, + /*II_V_F3_0F_E6*/ {0x154, 6819, 0x41, 0, 0, 0, 0}, + /*II_V_F2_0F_E6*/ {0x155, 6830, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_E7*/ {0x145, 6858, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_E8*/ {0x133, 6876, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_E9*/ {0x133, 6893, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_EA*/ {0x133, 6910, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_EB*/ {0x133, 6924, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_EC*/ {0x133, 6938, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_ED*/ {0x133, 6955, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_EE*/ {0x133, 6972, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_EF*/ {0x133, 6987, 0x0, 73, 0, 0, 0}, + /*II_V_F2_0F_F0*/ {0x190, 7001, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_F1*/ {0x133, 7016, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_F2*/ {0x133, 7031, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_F3*/ {0x133, 7046, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_F4*/ {0x133, 7063, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_F5*/ {0x133, 7082, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_F6*/ {0x133, 7100, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_F7*/ {0x194, 7131, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_F8*/ {0x133, 7151, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_F9*/ {0x133, 7166, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_FA*/ {0x133, 7181, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_FB*/ {0x133, 7196, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_FC*/ {0x133, 7211, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_FD*/ {0x133, 7226, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_FE*/ {0x133, 7241, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_00*/ {0x133, 7349, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_01*/ {0x133, 7366, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_02*/ {0x133, 7383, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_03*/ {0x133, 7401, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_04*/ {0x133, 7422, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_05*/ {0x133, 7442, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_06*/ {0x133, 7459, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_07*/ {0x133, 7477, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_08*/ {0x133, 7495, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_09*/ {0x133, 7512, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_0A*/ {0x133, 7529, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_0B*/ {0x133, 7548, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_0C*/ {0x13a, 7559, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_38_0D*/ {0x13a, 7570, 0x1, 90, 0, 0, 0}, + /*II_V_66_0F_38_0E*/ {0x124, 7581, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_0F*/ {0x124, 7590, 0x41, 0, 0, 0, 0}, + /*II_66_0F_38_10*/ {0x19b, 7599, 0x0, 74, 0, 0, 0}, + /*II_66_0F_38_14*/ {0x19b, 7609, 0x0, 74, 0, 0, 0}, + /*II_66_0F_38_15*/ {0x19b, 7619, 0x0, 74, 0, 0, 0}, + /*II_V_66_0F_38_17*/ {0x124, 7636, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_18*/ {0x19d, 7644, 0x41, 0, 0, 0, 0}, + /*II_V_66_0F_38_19*/ {0x19e, 7658, 0x50, 0, 0, 0, 0}, + /*II_V_66_0F_38_1A*/ {0x19f, 7672, 0x50, 0, 0, 0, 0}, + /*II_V_66_0F_38_1C*/ {0x1a0, 7695, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_1D*/ {0x1a0, 7710, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_1E*/ {0x1a0, 7725, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_20*/ {0x14e, 7743, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_21*/ {0x14d, 7764, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_22*/ {0x1a4, 7785, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_23*/ {0x14e, 7806, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_24*/ {0x14d, 7827, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_25*/ {0x14e, 7848, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_28*/ {0x133, 7867, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_29*/ {0x133, 7885, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_2A*/ {0x1a7, 7905, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_2B*/ {0x133, 7926, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_2C*/ {0x13a, 7937, 0x1, 92, 0, 0, 0}, + /*II_V_66_0F_38_2D*/ {0x13a, 7949, 0x1, 92, 0, 0, 0}, + /*II_V_66_0F_38_2E*/ {0x1a8, 7937, 0x1, 83, 0, 0, 0}, + /*II_V_66_0F_38_2F*/ {0x1a8, 7949, 0x1, 83, 0, 0, 0}, + /*II_V_66_0F_38_30*/ {0x14e, 7971, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_31*/ {0x14d, 7992, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_32*/ {0x1a4, 8013, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_33*/ {0x14e, 8034, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_34*/ {0x14d, 8055, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_35*/ {0x14e, 8076, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_37*/ {0x133, 8096, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_38*/ {0x133, 8114, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_39*/ {0x133, 8131, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_3A*/ {0x133, 8148, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_3B*/ {0x133, 8165, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_3C*/ {0x133, 8182, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_3D*/ {0x133, 8199, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_3E*/ {0x133, 8216, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_3F*/ {0x133, 8233, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_40*/ {0x133, 8250, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_41*/ {0x1a0, 8271, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_96*/ {0x1aa, 8310, 0x7, 90, 0, 8326, 0}, + /*II_V_66_0F_38_97*/ {0x1aa, 8342, 0x7, 90, 0, 8358, 0}, + /*II_V_66_0F_38_98*/ {0x1aa, 8374, 0x7, 90, 0, 8387, 0}, + /*II_V_66_0F_38_99*/ {0x1ab, 8400, 0x6, 80, 0, 8413, 0}, + /*II_V_66_0F_38_9A*/ {0x1aa, 8426, 0x7, 90, 0, 8439, 0}, + /*II_V_66_0F_38_9B*/ {0x1ab, 8452, 0x6, 80, 0, 8465, 0}, + /*II_V_66_0F_38_9C*/ {0x1aa, 8478, 0x7, 90, 0, 8492, 0}, + /*II_V_66_0F_38_9D*/ {0x1ab, 8506, 0x6, 80, 0, 8520, 0}, + /*II_V_66_0F_38_9E*/ {0x1aa, 8534, 0x7, 90, 0, 8548, 0}, + /*II_V_66_0F_38_9F*/ {0x1ab, 8562, 0x6, 80, 0, 8576, 0}, + /*II_V_66_0F_38_A6*/ {0x1aa, 8590, 0x7, 90, 0, 8606, 0}, + /*II_V_66_0F_38_A7*/ {0x1aa, 8622, 0x7, 90, 0, 8638, 0}, + /*II_V_66_0F_38_A8*/ {0x1aa, 8654, 0x7, 90, 0, 8667, 0}, + /*II_V_66_0F_38_A9*/ {0x1ab, 8680, 0x6, 80, 0, 8693, 0}, + /*II_V_66_0F_38_AA*/ {0x1aa, 8706, 0x7, 90, 0, 8719, 0}, + /*II_V_66_0F_38_AB*/ {0x1ab, 8732, 0x6, 80, 0, 8745, 0}, + /*II_V_66_0F_38_AC*/ {0x1aa, 8758, 0x7, 90, 0, 8772, 0}, + /*II_V_66_0F_38_AD*/ {0x1ab, 8786, 0x6, 80, 0, 8800, 0}, + /*II_V_66_0F_38_AE*/ {0x1aa, 8814, 0x7, 90, 0, 8828, 0}, + /*II_V_66_0F_38_AF*/ {0x1ab, 8842, 0x6, 80, 0, 8856, 0}, + /*II_V_66_0F_38_B6*/ {0x1aa, 8870, 0x7, 90, 0, 8886, 0}, + /*II_V_66_0F_38_B7*/ {0x1aa, 8902, 0x7, 90, 0, 8918, 0}, + /*II_V_66_0F_38_B8*/ {0x1aa, 8934, 0x7, 90, 0, 8947, 0}, + /*II_V_66_0F_38_B9*/ {0x1ab, 8960, 0x6, 80, 0, 8973, 0}, + /*II_V_66_0F_38_BA*/ {0x1aa, 8986, 0x7, 90, 0, 8999, 0}, + /*II_V_66_0F_38_BB*/ {0x1ab, 9012, 0x6, 80, 0, 9025, 0}, + /*II_V_66_0F_38_BC*/ {0x1aa, 9038, 0x7, 90, 0, 9052, 0}, + /*II_V_66_0F_38_BD*/ {0x1ab, 9066, 0x6, 80, 0, 9080, 0}, + /*II_V_66_0F_38_BE*/ {0x1aa, 9094, 0x7, 90, 0, 9108, 0}, + /*II_V_66_0F_38_BF*/ {0x1ab, 9122, 0x6, 80, 0, 9136, 0}, + /*II_V_66_0F_38_DB*/ {0x1ad, 9158, 0x40, 0, 0, 0, 0}, + /*II_V_66_0F_38_DC*/ {0x1ae, 9175, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_DD*/ {0x1ae, 9196, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_DE*/ {0x1ae, 9217, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_38_DF*/ {0x1ae, 9238, 0x0, 73, 0, 0, 0}, + /*II_V_66_0F_3A_04*/ {0x1b3, 7559, 0x41, 1, 0, 0, 0}, + /*II_V_66_0F_3A_05*/ {0x1b3, 7570, 0x41, 1, 0, 0, 0}, + /*II_V_66_0F_3A_06*/ {0x1b4, 9265, 0x10, 86, 1, 0, 0}, + /*II_66_0F_3A_08*/ {0x19b, 9277, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_08*/ {0x1b3, 9286, 0x41, 1, 0, 0, 0}, + /*II_66_0F_3A_09*/ {0x19b, 9296, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_09*/ {0x1b3, 9305, 0x41, 1, 0, 0, 0}, + /*II_66_0F_3A_0A*/ {0x1b5, 9315, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0A*/ {0x17f, 9324, 0x0, 71, 1, 0, 0}, + /*II_66_0F_3A_0B*/ {0x1b6, 9334, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0B*/ {0x17f, 9343, 0x0, 72, 1, 0, 0}, + /*II_66_0F_3A_0C*/ {0x19b, 9353, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0C*/ {0x184, 9362, 0x1, 90, 1, 0, 0}, + /*II_66_0F_3A_0D*/ {0x19b, 9372, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0D*/ {0x184, 9381, 0x1, 90, 1, 0, 0}, + /*II_66_0F_3A_0E*/ {0x19b, 9391, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0E*/ {0x17f, 9400, 0x0, 73, 1, 0, 0}, + /*II_0F_3A_0F*/ {0x1b7, 9410, 0x0, 1, 0, 0, 0}, + /*II_66_0F_3A_0F*/ {0x1b8, 9410, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_0F*/ {0x17f, 9419, 0x0, 73, 1, 0, 0}, + /*II_66_0F_3A_14*/ {0x1b9, 9429, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_14*/ {0x1ba, 9437, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_15*/ {0x1bb, 6311, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_15*/ {0x1bc, 6319, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_16*/ {0x1bd, 9446, 0x0, 1, 0, 0, 9454}, + /*II_V_66_0F_3A_16*/ {0x1be, 9462, 0x46, 1, 0, 9471, 0}, + /*II_66_0F_3A_17*/ {0x1bf, 9480, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_17*/ {0x1c0, 9491, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_3A_18*/ {0x1b4, 9503, 0x10, 73, 1, 0, 0}, + /*II_V_66_0F_3A_19*/ {0x1c1, 9516, 0x50, 1, 0, 0, 0}, + /*II_66_0F_3A_20*/ {0x1c2, 9530, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_20*/ {0x17f, 9538, 0x0, 76, 1, 0, 0}, + /*II_66_0F_3A_21*/ {0x1b5, 9547, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_21*/ {0x17f, 9557, 0x0, 71, 1, 0, 0}, + /*II_66_0F_3A_22*/ {0x1c3, 9568, 0x0, 1, 0, 0, 9576}, + /*II_V_66_0F_3A_22*/ {0x17f, 9584, 0x6, 79, 1, 9593, 0}, + /*II_66_0F_3A_40*/ {0x19b, 9602, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_40*/ {0x184, 9608, 0x1, 90, 1, 0, 0}, + /*II_66_0F_3A_41*/ {0x19b, 9615, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_41*/ {0x17f, 9621, 0x0, 73, 1, 0, 0}, + /*II_66_0F_3A_42*/ {0x19b, 9628, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_42*/ {0x17f, 9637, 0x0, 73, 1, 0, 0}, + /*II_66_0F_3A_44*/ {0x1c4, 9647, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_44*/ {0x1c5, 9658, 0x0, 73, 1, 0, 0}, + /*II_V_66_0F_3A_4A*/ {0x184, 9670, 0x1, 90, 84, 0, 0}, + /*II_V_66_0F_3A_4B*/ {0x184, 9681, 0x1, 90, 84, 0, 0}, + /*II_V_66_0F_3A_4C*/ {0x17f, 9692, 0x0, 73, 82, 0, 0}, + /*II_66_0F_3A_60*/ {0x1c6, 9703, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_60*/ {0x15e, 9714, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_61*/ {0x1c6, 9726, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_61*/ {0x15e, 9737, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_62*/ {0x1c6, 9749, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_62*/ {0x15e, 9760, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_63*/ {0x1c6, 9772, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_63*/ {0x15e, 9783, 0x40, 1, 0, 0, 0}, + /*II_66_0F_3A_DF*/ {0x1c7, 9795, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_3A_DF*/ {0x1c8, 9812, 0x40, 1, 0, 0, 0}, + /*II_V_66_0F_71_02*/ {0x1cb, 6443, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_71_04*/ {0x1cb, 6702, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_71_06*/ {0x1cb, 7016, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_02*/ {0x1cb, 6458, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_04*/ {0x1cb, 6717, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_72_06*/ {0x1cb, 7031, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_02*/ {0x1cb, 6473, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_03*/ {0x1cb, 9838, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_06*/ {0x1cb, 7046, 0x0, 1, 0, 0, 0}, + /*II_V_66_0F_73_07*/ {0x1cb, 9855, 0x0, 1, 0, 0, 0}, + /*II_0F_AE_00*/ {0x16e, 9864, 0x0, 0, 0, 0, 9872}, + /*II_0F_AE_01*/ {0x16e, 9892, 0x0, 0, 0, 0, 9901}, + /*II_V_0F_AE_02*/ {0x1cd, 9941, 0x40, 0, 0, 0, 0}, + /*II_V_0F_AE_03*/ {0x1cd, 9970, 0x40, 0, 0, 0, 0}, + /*II_0F_C7_06*/ {0x1ce, 9980, 0x0, 0, 0, 9988, 0} }; -_InstNode InstructionsTree[] = { +_InstNode InstructionsTree[5560] = { /* 0 - _00 */ 0x2000, /* 1 - _01 */ 0x2001, /* 2 - _02 */ 0x2002, @@ -7334,10 +7335,477 @@ _InstNode InstructionsTree[] = { /* 15b7 - */ 0 }; +_InstSharedInfo InstSharedInfoTable[465] = { +{0, 9, 15, 8, 63, 0, 0}, +{0, 11, 17, 8, 63, 0, 0}, +{0, 15, 9, 8, 63, 0, 0}, +{0, 17, 11, 8, 63, 0, 0}, +{1, 1, 33, 8, 63, 0, 0}, +{1, 3, 35, 8, 63, 0, 0}, +{2, 0, 32, 8, 0, 0, 0}, +{3, 0, 32, 8, 0, 0, 0}, +{0, 9, 15, 8, 19, 32, 0}, +{0, 11, 17, 8, 19, 32, 0}, +{0, 15, 9, 8, 19, 32, 0}, +{0, 17, 11, 8, 19, 32, 0}, +{1, 1, 33, 8, 19, 32, 0}, +{1, 3, 35, 8, 19, 32, 0}, +{4, 0, 32, 8, 0, 0, 0}, +{0, 9, 15, 8, 63, 4, 0}, +{0, 11, 17, 8, 63, 4, 0}, +{0, 15, 9, 8, 63, 4, 0}, +{0, 17, 11, 8, 63, 4, 0}, +{1, 1, 33, 8, 63, 4, 0}, +{1, 3, 35, 8, 63, 4, 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, 31, 0, 32}, +{0, 11, 17, 8, 31, 0, 32}, +{0, 15, 9, 8, 31, 0, 32}, +{0, 17, 11, 8, 31, 0, 32}, +{1, 1, 33, 8, 31, 0, 32}, +{1, 3, 35, 8, 31, 0, 32}, +{9, 0, 0, 8, 55, 36, 8}, +{0, 9, 15, 8, 19, 0, 32}, +{0, 11, 17, 8, 19, 0, 32}, +{0, 15, 9, 8, 19, 0, 32}, +{0, 17, 11, 8, 19, 0, 32}, +{1, 1, 33, 8, 19, 0, 32}, +{1, 3, 35, 8, 19, 0, 32}, +{9, 0, 0, 8, 36, 32, 27}, +{10, 9, 15, 8, 63, 0, 0}, +{10, 11, 17, 8, 63, 0, 0}, +{10, 15, 9, 8, 63, 0, 0}, +{10, 17, 11, 8, 63, 0, 0}, +{11, 1, 33, 8, 63, 0, 0}, +{11, 3, 35, 8, 63, 0, 0}, +{12, 0, 54, 8, 59, 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, 1, 0, 0}, +{13, 0, 3, 8, 0, 0, 0}, +{17, 17, 11, 8, 12, 0, 51}, +{18, 0, 5, 8, 0, 0, 0}, +{19, 59, 56, 8, 0, 64, 0}, +{20, 59, 56, 8, 0, 64, 0}, +{19, 55, 59, 8, 0, 64, 0}, +{20, 55, 59, 8, 0, 64, 0}, +{13, 0, 40, 13, 8, 0, 0}, +{13, 0, 40, 13, 4, 0, 0}, +{13, 0, 40, 13, 1, 0, 0}, +{13, 0, 40, 13, 5, 0, 0}, +{13, 0, 40, 13, 2, 0, 0}, +{13, 0, 40, 13, 16, 0, 0}, +{13, 0, 40, 13, 10, 0, 0}, +{13, 0, 40, 13, 11, 0, 0}, +{10, 9, 15, 8, 19, 0, 32}, +{10, 11, 17, 8, 19, 0, 32}, +{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, 55, 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, 64, 0}, +{25, 55, 56, 8, 0, 64, 0}, +{19, 56, 55, 8, 63, 64, 0}, +{26, 56, 55, 8, 63, 64, 0}, +{11, 1, 33, 8, 19, 0, 32}, +{11, 3, 35, 8, 19, 0, 32}, +{19, 33, 56, 8, 0, 64, 0}, +{26, 35, 56, 8, 0, 64, 0}, +{19, 55, 33, 8, 0, 64, 0}, +{26, 55, 35, 8, 0, 64, 0}, +{19, 33, 56, 8, 63, 64, 0}, +{26, 35, 56, 8, 63, 64, 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, 19, 0, 44}, +{9, 0, 0, 8, 0, 0, 0}, +{29, 0, 57, 8, 0, 0, 0}, +{30, 0, 40, 13, 0, 1, 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, 4, 0, 0}, +{11, 0, 0, 8, 128, 0, 0}, +{11, 0, 0, 8, 64, 0, 0}, +{10, 16, 11, 8, 1, 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, 8, 0, 0}, +{35, 17, 11, 31, 4, 0, 0}, +{35, 17, 11, 31, 1, 0, 0}, +{35, 17, 11, 31, 5, 0, 0}, +{35, 17, 11, 31, 2, 0, 0}, +{35, 17, 11, 31, 16, 0, 0}, +{35, 17, 11, 31, 10, 0, 0}, +{35, 17, 11, 31, 11, 0, 0}, +{32, 0, 41, 13, 8, 0, 0}, +{32, 0, 41, 13, 4, 0, 0}, +{32, 0, 41, 13, 1, 0, 0}, +{32, 0, 41, 13, 5, 0, 0}, +{32, 0, 41, 13, 2, 0, 0}, +{32, 0, 41, 13, 16, 0, 0}, +{32, 0, 41, 13, 10, 0, 0}, +{32, 0, 41, 13, 11, 0, 0}, +{35, 0, 15, 8, 8, 0, 0}, +{35, 0, 15, 8, 4, 0, 0}, +{35, 0, 15, 8, 1, 0, 0}, +{35, 0, 15, 8, 5, 0, 0}, +{35, 0, 15, 8, 2, 0, 0}, +{35, 0, 15, 8, 16, 0, 0}, +{35, 0, 15, 8, 10, 0, 0}, +{35, 0, 15, 8, 11, 0, 0}, +{36, 0, 32, 8, 0, 0, 0}, +{37, 0, 32, 8, 0, 0, 0}, +{35, 11, 17, 8, 4, 0, 59}, +{38, 11, 17, 8, 23, 0, 40}, +{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, 4, 0, 59}, +{35, 17, 11, 8, 12, 0, 51}, +{41, 9, 15, 8, 63, 0, 0}, +{41, 11, 17, 8, 63, 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, 63, 0, 0}, +{45, 1, 15, 8, 19, 32, 0}, +{45, 1, 15, 8, 63, 4, 0}, +{45, 1, 15, 8, 31, 0, 32}, +{45, 1, 15, 8, 19, 0, 32}, +{46, 1, 15, 8, 63, 0, 0}, +{45, 3, 17, 8, 63, 0, 0}, +{45, 3, 17, 8, 19, 32, 0}, +{45, 3, 17, 8, 63, 4, 0}, +{45, 3, 17, 8, 31, 0, 32}, +{45, 3, 17, 8, 19, 0, 32}, +{46, 3, 17, 8, 63, 0, 0}, +{47, 1, 15, 8, 63, 0, 0}, +{47, 1, 15, 8, 19, 32, 0}, +{47, 1, 15, 8, 63, 4, 0}, +{47, 1, 15, 8, 31, 0, 32}, +{47, 1, 15, 8, 19, 0, 32}, +{48, 1, 15, 8, 63, 0, 0}, +{45, 5, 17, 8, 63, 0, 0}, +{49, 5, 17, 8, 19, 32, 0}, +{45, 5, 17, 8, 63, 4, 0}, +{49, 5, 17, 8, 31, 0, 32}, +{49, 5, 17, 8, 19, 0, 32}, +{46, 5, 17, 8, 63, 0, 0}, +{50, 0, 17, 8, 0, 0, 0}, +{51, 1, 15, 8, 4, 0, 8}, +{51, 1, 15, 8, 4, 4, 8}, +{51, 1, 15, 8, 23, 0, 40}, +{51, 1, 15, 8, 0, 0, 0}, +{51, 1, 17, 8, 4, 0, 8}, +{51, 1, 17, 8, 4, 4, 8}, +{51, 1, 17, 8, 23, 0, 40}, +{51, 1, 17, 8, 0, 0, 0}, +{51, 3, 17, 8, 0, 0, 0}, +{51, 51, 15, 8, 12, 0, 0}, +{51, 51, 15, 8, 12, 4, 0}, +{51, 51, 15, 8, 31, 0, 32}, +{51, 51, 15, 8, 0, 0, 0}, +{51, 51, 17, 8, 12, 0, 0}, +{51, 51, 17, 8, 12, 4, 0}, +{51, 51, 17, 8, 31, 0, 32}, +{51, 51, 17, 8, 0, 0, 0}, +{51, 52, 15, 8, 4, 0, 8}, +{51, 52, 15, 8, 4, 4, 8}, +{51, 52, 15, 8, 23, 0, 40}, +{51, 52, 15, 8, 0, 0, 0}, +{51, 52, 17, 8, 4, 0, 8}, +{51, 52, 17, 8, 4, 4, 8}, +{51, 52, 17, 8, 23, 0, 40}, +{51, 52, 17, 8, 0, 0, 0}, +{46, 0, 21, 16, 0, 0, 0}, +{52, 0, 62, 16, 0, 0, 0}, +{52, 0, 61, 16, 0, 0, 0}, +{52, 0, 0, 16, 0, 0, 0}, +{46, 0, 42, 16, 0, 0, 0}, +{53, 0, 62, 24, 4, 0, 0}, +{53, 0, 62, 24, 1, 0, 0}, +{53, 0, 62, 24, 5, 0, 0}, +{53, 0, 62, 24, 16, 0, 0}, +{54, 0, 21, 56, 0, 0, 0}, +{46, 0, 23, 16, 0, 0, 0}, +{53, 0, 62, 16, 21, 0, 0}, +{53, 0, 62, 24, 21, 0, 0}, +{46, 0, 22, 16, 0, 0, 0}, +{52, 0, 63, 16, 0, 0, 0}, +{54, 0, 22, 56, 0, 0, 0}, +{46, 0, 20, 16, 0, 0, 0}, +{54, 0, 20, 56, 0, 0, 0}, +{46, 1, 15, 8, 19, 0, 32}, +{45, 0, 15, 8, 0, 0, 0}, +{45, 0, 15, 8, 63, 0, 0}, +{51, 0, 15, 8, 12, 0, 51}, +{51, 0, 15, 8, 0, 0, 63}, +{46, 3, 17, 8, 19, 0, 32}, +{45, 0, 17, 8, 0, 0, 0}, +{45, 0, 17, 8, 63, 0, 0}, +{51, 0, 17, 8, 12, 0, 51}, +{51, 0, 17, 8, 0, 0, 63}, +{45, 0, 15, 8, 59, 0, 0}, +{45, 0, 17, 8, 59, 0, 0}, +{55, 0, 17, 9, 0, 0, 0}, +{56, 0, 37, 9, 0, 0, 0}, +{55, 0, 17, 12, 0, 0, 0}, +{56, 0, 37, 12, 0, 0, 0}, +{55, 0, 17, 8, 0, 0, 0}, +{46, 0, 17, 8, 0, 0, 0}, +{46, 0, 16, 8, 0, 0, 0}, +{54, 0, 16, 8, 0, 0, 0}, +{46, 0, 16, 8, 1, 0, 0}, +{55, 0, 39, 8, 0, 0, 0}, +{57, 0, 28, 8, 0, 0, 0}, +{58, 0, 16, 8, 0, 0, 0}, +{54, 0, 42, 8, 0, 0, 0}, +{53, 0, 0, 112, 0, 0, 0}, +{53, 0, 0, 8, 0, 0, 0}, +{54, 0, 58, 120, 0, 0, 0}, +{53, 0, 0, 120, 0, 0, 0}, +{53, 0, 58, 120, 0, 0, 0}, +{53, 60, 58, 120, 0, 0, 0}, +{59, 0, 0, 8, 0, 0, 0}, +{54, 0, 42, 96, 0, 0, 0}, +{60, 67, 64, 104, 0, 0, 0}, +{60, 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}, +{61, 90, 83, 128, 0, 0, 0}, +{62, 81, 68, 128, 0, 0, 0}, +{63, 44, 68, 128, 0, 0, 0}, +{63, 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}, +{61, 83, 90, 128, 0, 0, 0}, +{63, 68, 44, 128, 0, 0, 0}, +{63, 68, 46, 128, 0, 0, 0}, +{64, 72, 68, 40, 0, 0, 0}, +{35, 46, 68, 48, 0, 0, 0}, +{35, 72, 68, 56, 0, 0, 0}, +{65, 81, 68, 128, 0, 0, 0}, +{66, 81, 68, 128, 0, 0, 0}, +{61, 89, 83, 128, 0, 0, 0}, +{35, 68, 46, 40, 0, 0, 0}, +{35, 68, 46, 48, 0, 0, 0}, +{61, 68, 46, 128, 0, 0, 0}, +{34, 73, 68, 40, 0, 0, 0}, +{34, 73, 68, 48, 0, 0, 0}, +{66, 88, 83, 128, 0, 0, 0}, +{35, 73, 68, 56, 0, 0, 0}, +{54, 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}, +{61, 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}, +{61, 80, 78, 128, 0, 0, 0}, +{34, 71, 68, 40, 21, 0, 0}, +{34, 72, 68, 48, 0, 0, 0}, +{61, 71, 68, 128, 0, 0, 0}, +{61, 72, 68, 128, 0, 0, 0}, +{67, 69, 12, 40, 0, 0, 0}, +{67, 69, 12, 48, 0, 0, 0}, +{68, 83, 13, 128, 0, 0, 0}, +{34, 71, 68, 40, 0, 0, 0}, +{34, 71, 68, 48, 0, 0, 0}, +{61, 91, 83, 128, 0, 0, 0}, +{61, 90, 68, 128, 0, 0, 0}, +{34, 66, 64, 32, 0, 0, 0}, +{34, 67, 64, 32, 0, 0, 0}, +{69, 18, 64, 32, 0, 0, 0}, +{69, 18, 68, 48, 0, 0, 0}, +{61, 79, 68, 128, 0, 0, 0}, +{35, 67, 64, 32, 0, 0, 0}, +{70, 67, 64, 40, 0, 0, 0}, +{70, 73, 68, 48, 0, 0, 0}, +{66, 73, 68, 128, 0, 0, 0}, +{32, 0, 0, 32, 0, 0, 0}, +{71, 0, 0, 128, 0, 0, 0}, +{72, 13, 18, 112, 0, 0, 0}, +{73, 7, 69, 88, 0, 0, 0}, +{74, 69, 68, 88, 0, 0, 0}, +{72, 18, 13, 112, 0, 0, 0}, +{34, 69, 68, 88, 0, 0, 0}, +{75, 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}, +{69, 64, 18, 32, 0, 0, 0}, +{69, 68, 18, 48, 0, 0, 0}, +{61, 68, 79, 128, 0, 0, 0}, +{35, 64, 67, 32, 0, 0, 0}, +{76, 0, 42, 8, 0, 0, 0}, +{77, 0, 43, 8, 0, 0, 0}, +{78, 0, 43, 8, 0, 0, 0}, +{79, 17, 11, 80, 1, 0, 0}, +{80, 1, 17, 8, 4, 0, 59}, +{49, 1, 17, 8, 4, 0, 59}, +{34, 17, 11, 8, 1, 0, 63}, +{81, 17, 11, 112, 0, 0, 0}, +{82, 17, 11, 8, 5, 0, 58}, +{83, 73, 68, 40, 0, 0, 0}, +{83, 73, 68, 48, 0, 0, 0}, +{83, 71, 68, 40, 0, 0, 0}, +{83, 72, 68, 48, 0, 0, 0}, +{84, 88, 83, 128, 0, 0, 0}, +{84, 81, 68, 128, 0, 0, 0}, +{70, 25, 64, 40, 0, 0, 0}, +{70, 25, 68, 48, 0, 0, 0}, +{85, 81, 68, 128, 0, 0, 0}, +{86, 65, 12, 40, 0, 0, 0}, +{70, 69, 12, 48, 0, 0, 0}, +{87, 68, 13, 128, 0, 0, 0}, +{70, 73, 68, 40, 0, 0, 0}, +{85, 88, 83, 128, 0, 0, 0}, +{88, 0, 48, 8, 1, 0, 0}, +{54, 0, 46, 112, 0, 0, 0}, +{67, 65, 68, 48, 0, 0, 0}, +{67, 69, 64, 48, 0, 0, 0}, +{61, 68, 72, 128, 0, 0, 0}, +{75, 65, 12, 40, 0, 0, 0}, +{75, 69, 12, 48, 0, 0, 0}, +{68, 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}, +{61, 92, 83, 128, 0, 0, 0}, +{34, 67, 64, 48, 0, 0, 0}, +{75, 65, 64, 40, 0, 0, 0}, +{75, 69, 68, 48, 0, 0, 0}, +{89, 69, 68, 128, 0, 0, 0}, +{90, 0, 42, 16, 0, 0, 0}, +{91, 0, 0, 16, 0, 0, 0}, +{52, 0, 34, 16, 0, 0, 0}, +{91, 0, 34, 16, 0, 0, 0}, +{34, 67, 64, 64, 0, 0, 0}, +{34, 73, 68, 64, 0, 0, 0}, +{70, 73, 68, 72, 0, 0, 0}, +{34, 73, 68, 80, 0, 0, 0}, +{61, 44, 83, 128, 0, 0, 0}, +{61, 46, 85, 128, 0, 0, 0}, +{61, 47, 85, 128, 0, 0, 0}, +{61, 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}, +{61, 70, 68, 128, 0, 0, 0}, +{34, 73, 68, 72, 0, 0, 0}, +{35, 47, 68, 72, 0, 0, 0}, +{61, 47, 68, 128, 0, 0, 0}, +{66, 88, 92, 128, 0, 0, 0}, +{72, 47, 13, 112, 0, 0, 0}, +{66, 88, 83, 136, 0, 0, 0}, +{66, 81, 68, 136, 0, 0, 0}, +{34, 73, 68, 152, 0, 0, 0}, +{61, 73, 68, 152, 0, 0, 0}, +{66, 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}, +{66, 90, 83, 128, 0, 0, 0}, +{85, 87, 85, 128, 0, 0, 0}, +{70, 71, 68, 72, 0, 0, 0}, +{70, 72, 68, 72, 0, 0, 0}, +{70, 67, 64, 64, 0, 0, 0}, +{70, 73, 68, 64, 0, 0, 0}, +{70, 68, 26, 72, 0, 0, 0}, +{87, 68, 76, 128, 0, 0, 0}, +{70, 68, 27, 72, 0, 0, 0}, +{87, 68, 77, 128, 0, 0, 0}, +{92, 68, 18, 72, 0, 0, 0}, +{66, 68, 79, 128, 0, 0, 0}, +{70, 68, 18, 72, 0, 0, 0}, +{66, 68, 75, 128, 0, 0, 0}, +{66, 85, 73, 128, 0, 0, 0}, +{70, 24, 68, 72, 0, 0, 0}, +{92, 18, 68, 72, 0, 0, 0}, +{70, 73, 68, 144, 0, 0, 0}, +{85, 81, 68, 144, 0, 0, 0}, +{70, 73, 68, 80, 0, 0, 0}, +{70, 73, 68, 152, 0, 0, 0}, +{66, 73, 68, 152, 0, 0, 0}, +{93, 1, 65, 32, 0, 0, 0}, +{54, 1, 69, 48, 0, 0, 0}, +{94, 69, 81, 128, 0, 0, 0}, +{95, 0, 13, 112, 0, 0, 0}, +{63, 0, 44, 128, 0, 0, 0}, +{78, 0, 43, 112, 0, 0, 0}, +{96, 75, 13, 8, 0, 0, 0}, +{97, 67, 64, 96, 0, 0, 0} +}; + uint16_t CmpMnemonicOffsets[8] = { 0, 9, 18, 27, 39, 49, 59, 69 }; uint16_t VCmpMnemonicOffsets[32] = { -0, 10, 20, 30, 43, 54, 65, 76, 87, 100, 111, 122, 135, 149, 159, 169, 181, -194, 207, 220, 235, 249, 263, 277, 290, 303, 317, 331, 347, 361, 374, 387 +0, 10, 20, 30, 43, 54, 65, 76, 87, 100, 111, 122, 135, 149, 159, 169, 181, 194, 207, 220, 235, 249, 263, 277, 290, 303, 317, 331, 347, 361, 374, 387 }; diff --git a/src/insts.h b/src/insts.h index 6217317..d985e48 100644 --- a/src/insts.h +++ b/src/insts.h @@ -31,6 +31,7 @@ along with this program. If not, see extern _iflags FlagsTable[]; /* Root Trie DB */ +extern _InstSharedInfo InstSharedInfoTable[]; extern _InstInfo InstInfos[]; extern _InstInfoEx InstInfosEx[]; extern _InstNode InstructionsTree[]; @@ -40,6 +41,28 @@ extern _InstNode Table_0F_0F; /* AVX related: */ extern _InstNode Table_0F, Table_0F_38, Table_0F_3A; +/* + * The inst_lookup will return on of these two instructions according to the specified decoding mode. + * ARPL or MOVSXD on 64 bits is one byte instruction at index 0x63. + */ +extern _InstInfo II_ARPL; +extern _InstInfo II_MOVSXD; + +/* + * The NOP instruction can be prefixed by REX in 64bits, therefore we have to decide in runtime whether it's an XCHG or NOP instruction. + * If 0x90 is prefixed by a useable REX it will become XCHG, otherwise it will become a NOP. + * Also note that if it's prefixed by 0xf3, it becomes a Pause. + */ +extern _InstInfo II_NOP; +extern _InstInfo II_PAUSE; + +/* + * Used for letting the extract operand know the type of operands without knowing the + * instruction itself yet, because of the way those instructions work. + * See function instructions.c!inst_lookup_3dnow. + */ +extern _InstInfo II_3DNOW; + /* Helper tables for pesudo compare mnemonics. */ extern uint16_t CmpMnemonicOffsets[8]; /* SSE */ extern uint16_t VCmpMnemonicOffsets[32]; /* AVX */ diff --git a/src/mnemonics.c b/src/mnemonics.c index be7d54a..a12e497 100644 --- a/src/mnemonics.c +++ b/src/mnemonics.c @@ -273,7 +273,8 @@ const unsigned char _MNEMONICS[] = "\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" "\x06" "RDRAND\0" "\x07" "VMPTRLD\0" \ -"\x07" "VMCLEAR\0" "\x05" "VMXON\0" "\x04" "WAIT\0" "\x06" "MOVSXD\0" "\x05" "PAUSE\0"; +"\x07" "VMCLEAR\0" "\x05" "VMXON\0" "\x06" "MOVSXD\0" "\x05" "PAUSE\0" "\x04" "WAIT\0" \ +"\x05" "3DNOW\0"; 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"}, diff --git a/src/operands.c b/src/operands.c index f4da9e4..beaec8a 100644 --- a/src/operands.c +++ b/src/operands.c @@ -501,14 +501,13 @@ static int operands_extract_modrm(_CodeInfo* ci, */ int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, - _OpType type, _OperandNumberType opNum, + _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; - _iflags instFlags = INST_INFO_FLAGS(ii); _Operand* op = &di->ops[opNum]; /* Used to indicate the size of the MEMORY INDIRECTION only. */ diff --git a/src/operands.h b/src/operands.h index 879f44c..f0ae04f 100644 --- a/src/operands.h +++ b/src/operands.h @@ -33,7 +33,7 @@ along with this program. If not, see extern uint16_t _REGISTERTORCLASS[]; int operands_extract(_CodeInfo* ci, _DInst* di, _InstInfo* ii, - _OpType type, _OperandNumberType opNum, + _iflags instFlags, _OpType type, _OperandNumberType opNum, unsigned int modrm, _PrefixState* ps, _DecodeType effOpSz, _DecodeType effAdrSz, int* lockableInstruction); diff --git a/src/x86defs.h b/src/x86defs.h index 7cde557..8e36633 100644 --- a/src/x86defs.h +++ b/src/x86defs.h @@ -24,9 +24,6 @@ along with this program. If not, see #ifndef X86DEFS_H #define X86DEFS_H -#include "config.h" -#include "instructions.h" - #define SEG_REGS_MAX (6) #define CREGS_MAX (9) @@ -47,6 +44,12 @@ along with this program. If not, see /* Lea instruction byte code. */ #define INST_LEA_INDEX (0x8d) +/* NOP/XCHG instruction byte code. */ +#define INST_NOP_INDEX (0x90) + +/* ARPL/MOVSXD instruction byte code. */ +#define INST_ARPL_INDEX (0x63) + /* * Minimal MODR/M value of divided instructions. * It's 0xc0, two MSBs set, which indicates a general purpose register is used too. @@ -88,28 +91,4 @@ along with this program. If not, see /* Vector Lengh */ #define PREFIX_EX_L (0x10) -/* - * The inst_lookup will return on of these two instructions according to the specified decoding mode. - * ARPL or MOVSXD on 64 bits is one byte instruction at index 0x63. - */ -#define INST_ARPL_INDEX (0x63) -extern _InstInfo II_arpl; -extern _InstInfo II_movsxd; - -/* - * The NOP instruction can be prefixed by REX in 64bits, therefore we have to decide in runtime whether it's an XCHG or NOP instruction. - * If 0x90 is prefixed by a useable REX it will become XCHG, otherwise it will become a NOP. - * Also note that if it's prefixed by 0xf3, it becomes a Pause. - */ -#define INST_NOP_INDEX (0x90) -extern _InstInfo II_nop; -extern _InstInfo II_pause; - -/* - * Used for letting the extract operand know the type of operands without knowing the - * instruction itself yet, because of the way those instructions work. - * See function instructions.c!inst_lookup_3dnow. - */ -extern _InstInfo II_3dnow; - #endif /* X86DEFS_H */