diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 059d0068..5f7fe0b3 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -29,7 +29,7 @@ jobs: - name: Clone Doxygen theme run: >- git clone - --depth=1 --branch=v2.1.0 + --depth=1 --branch=v2.3.1 https://github.com/jothepro/doxygen-awesome-css.git /tmp/doxy-theme - name: Generate documentation diff --git a/CMakeLists.txt b/CMakeLists.txt index 104be96f..e80b4781 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,12 @@ project(Zydis VERSION 4.0.0.0 LANGUAGES C) include(GNUInstallDirs) include(CMakePackageConfigHelpers) +# Set ZYDIS_ROOT_PROJECT to ON if this is the top-level project otherwise OFF by default. +set(ZYDIS_ROOT_PROJECT OFF) +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(ZYDIS_ROOT_PROJECT ON) +endif() + # =============================================================================================== # # Overridable options # # =============================================================================================== # @@ -43,19 +49,19 @@ option(ZYDIS_BUILD_SHARED_LIB OFF) option(ZYDIS_BUILD_EXAMPLES "Build examples" - ON) + ${ZYDIS_ROOT_PROJECT}) option(ZYDIS_BUILD_TOOLS "Build tools" - ON) + ${ZYDIS_ROOT_PROJECT}) option(ZYDIS_BUILD_MAN "Build manpages for the tools (requires Ronn-NG)" OFF) option(ZYDIS_BUILD_DOXYGEN "Build doxygen documentation (requires Doxygen)" - ON) + ${ZYDIS_ROOT_PROJECT}) option(ZYDIS_BUILD_TESTS "Build tests" - OFF) + ${ZYDIS_ROOT_PROJECT}) option(ZYDIS_FUZZ_AFL_FAST "Enables AFL persistent mode and reduces prints in ZydisFuzzIn" OFF) @@ -65,7 +71,7 @@ option(ZYDIS_LIBFUZZER # Dependencies option(ZYAN_SYSTEM_ZYCORE - "Use system Zycore library" + "Force using system installed Zycore library" OFF) set(ZYAN_ZYCORE_PATH "${CMAKE_CURRENT_LIST_DIR}/dependencies/zycore" @@ -77,35 +83,62 @@ set(ZYAN_ZYCORE_PATH # Dependencies # # =============================================================================================== # -if (ZYAN_SYSTEM_ZYCORE) - find_package(Zycore) -else () - # Try to initialize the Zycore submodule using Git - if (NOT EXISTS "${ZYAN_ZYCORE_PATH}/CMakeLists.txt" AND - "${ZYAN_ZYCORE_PATH}" STREQUAL "${CMAKE_CURRENT_LIST_DIR}/dependencies/zycore") - find_package(Git QUIET) - if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") - execute_process( - COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - endif() +# Tries to make Zycore available. +# +# Priorities: +# +# - ZYAN_ZYCORE_PATH specified path always takes maximum precedence if it exists. +# - Default value is the sub-module path. So if the sub-module is present, we pick that. +# Allows hacking on Zydis/Zycore even if a Zydis OS package is installed. +# - Look for a system-installed Zycore package (via find_package). +# - If git is installed & this is a git repository, try cloning the sub-module. +# - Give up. +# +# This is in a function so we can elegantly early-exit once the library is found. +function (locate_zycore) + if (NOT ${ZYAN_SYSTEM_ZYCORE} AND EXISTS "${ZYAN_ZYCORE_PATH}/CMakeLists.txt") + message(VERBOSE "Using ZYAN_ZYCORE_PATH specified Zycore") + add_subdirectory(${ZYAN_ZYCORE_PATH} "zycore" EXCLUDE_FROM_ALL) + return () endif () - if (NOT EXISTS "${ZYAN_ZYCORE_PATH}/CMakeLists.txt") - message( - FATAL_ERROR - "Can't find zycore submodule. Please make sure to clone the repo recursively.\n" - "You can fix this by running\n" - " git submodule update --init\n" - "or by cloning using\n" - " git clone --recursive \n" - "Alternatively, you can manually clone zycore to some path and set ZYDIS_ZYCORE_PATH." - ) + if (NOT "${ZYAN_ZYCORE_PATH}" STREQUAL "${CMAKE_CURRENT_LIST_DIR}/dependencies/zycore") + message(FATAL_ERROR "No CMake project found at explicitly set ZYAN_ZYCORE_PATH") endif () - add_subdirectory(${ZYAN_ZYCORE_PATH} "zycore" EXCLUDE_FROM_ALL) -endif () + find_package(Zycore QUIET) + if (Zycore_FOUND) + message(VERBOSE "Using system Zycore") + return () + endif () + + if (ZYAN_SYSTEM_ZYCORE) + message(FATAL_ERROR "ZYAN_SYSTEM_ZYCORE set but no system-installed Zycore found") + endif () + + find_package(Git QUIET) + if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") + message(VERBOSE "Pulling Zycore submodule with git.") + execute_process( + COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) + add_subdirectory(${ZYAN_ZYCORE_PATH} "zycore" EXCLUDE_FROM_ALL) + return () + endif() + + message( + FATAL_ERROR + "Can't find Zycore. Please make sure to clone the repo recursively.\n" + "You can fix this by running\n" + " git submodule update --init\n" + "or by cloning using\n" + " git clone --recursive \n" + "Alternatively, you can manually clone zycore to some path and set ZYDIS_ZYCORE_PATH." + ) +endfunction () + +locate_zycore() # =============================================================================================== # # Library configuration # diff --git a/Doxyfile b/Doxyfile index b37baf1f..da6c56f7 100644 --- a/Doxyfile +++ b/Doxyfile @@ -17,3 +17,4 @@ GENERATE_LATEX = NO GENERATE_TREEVIEW = YES DISABLE_INDEX = NO FULL_SIDEBAR = NO +EXTRACT_ALL = YES diff --git a/LICENSE b/LICENSE index 11185a5a..e1f98280 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ The MIT License (MIT) -Copyright (c) 2014-2021 Florian Bernd -Copyright (c) 2014-2021 Joel Höner +Copyright (c) 2014-2024 Florian Bernd +Copyright (c) 2014-2024 Joel Höner Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/assets/porting-guide-v4-v5.md b/assets/porting-guide-v4-v5.md new file mode 100644 index 00000000..157c44f8 --- /dev/null +++ b/assets/porting-guide-v4-v5.md @@ -0,0 +1,7 @@ +# Porting Guide v4 -> v5 + +# Encoder + +- `ZydisEncoderDecodedInstructionToEncoderRequest` now expects exactly `instruction->operand_count_visible` to be + passed, not `operand_count_visible` at maximum. Passing a lower value was previously allowed but didn't really + make much sense at all. \ No newline at end of file diff --git a/include/Zydis/Decoder.h b/include/Zydis/Decoder.h index 4460af81..b23bde08 100644 --- a/include/Zydis/Decoder.h +++ b/include/Zydis/Decoder.h @@ -149,13 +149,22 @@ typedef enum ZydisDecoderMode_ * This mode is enabled by default. */ ZYDIS_DECODER_MODE_IPREFETCH, + /** + * Enables the `UD0` compatibility mode. + * + * Some processors decode the `UD0` instruction without a ModR/M byte. Enable this decoder mode + * to mimic this behavior. + * + * This mode is disabled by default. + */ + ZYDIS_DECODER_MODE_UD0_COMPAT, // TODO: APX mode /** * Maximum value of this enum. */ - ZYDIS_DECODER_MODE_MAX_VALUE = ZYDIS_DECODER_MODE_IPREFETCH, + ZYDIS_DECODER_MODE_MAX_VALUE = ZYDIS_DECODER_MODE_UD0_COMPAT, /** * The minimum number of bits required to represent all values of this enum. */ diff --git a/include/Zydis/Encoder.h b/include/Zydis/Encoder.h index df135052..b945fb42 100644 --- a/include/Zydis/Encoder.h +++ b/include/Zydis/Encoder.h @@ -312,7 +312,9 @@ typedef struct ZydisEncoderRequest_ */ ZydisOperandSizeHint operand_size_hint; /** - * The number of instruction-operands. + * The number of visible (explicit) instruction operands. + * + * The encoder does not care about hidden (implicit) operands. */ ZyanU8 operand_count; /** @@ -422,11 +424,11 @@ ZYDIS_EXPORT ZyanStatus ZydisEncoderEncodeInstructionAbsolute(ZydisEncoderReques * Converts decoded instruction to encoder request that can be passed to * `ZydisEncoderEncodeInstruction`. * - * @param instruction A pointer to the `ZydisDecodedInstruction` struct. - * @param operands A pointer to the decoded operands. - * @param operand_count The operand count. - * @param request A pointer to the `ZydisEncoderRequest` struct, that receives - * information necessary for encoder to re-encode the instruction. + * @param instruction A pointer to the `ZydisDecodedInstruction` struct. + * @param operands A pointer to the decoded operands. + * @param operand_count_visible The number of visible instruction operands. + * @param request A pointer to the `ZydisEncoderRequest` struct, that receives + * information necessary for encoder to re-encode the instruction. * * This function performs simple structure conversion and does minimal sanity checks on the * input. There's no guarantee that produced request will be accepted by @@ -437,7 +439,7 @@ ZYDIS_EXPORT ZyanStatus ZydisEncoderEncodeInstructionAbsolute(ZydisEncoderReques */ ZYDIS_EXPORT ZyanStatus ZydisEncoderDecodedInstructionToEncoderRequest( const ZydisDecodedInstruction* instruction, const ZydisDecodedOperand* operands, - ZyanU8 operand_count, ZydisEncoderRequest* request); + ZyanU8 operand_count_visible, ZydisEncoderRequest* request); /** * Fills provided buffer with `NOP` instructions using longest possible multi-byte instructions. diff --git a/include/Zydis/Formatter.h b/include/Zydis/Formatter.h index ac92dfbf..e503d5fa 100644 --- a/include/Zydis/Formatter.h +++ b/include/Zydis/Formatter.h @@ -176,16 +176,16 @@ typedef enum ZydisFormatterProperty_ /** * Controls the padding of absolute address values. * - * Pass `ZYDIS_PADDING_DISABLED` to disable padding, `ZYDIS_PADDING_AUTO` to padd all - * addresses to the current stack width (hexadecimal only), or any other integer value for + * Pass `ZYDIS_PADDING_DISABLED` to disable padding, `ZYDIS_PADDING_AUTO` to pad all + * addresses to the current address width (hexadecimal only), or any other integer value for * custom padding. */ ZYDIS_FORMATTER_PROP_ADDR_PADDING_ABSOLUTE, /** * Controls the padding of relative address values. * - * Pass `ZYDIS_PADDING_DISABLED` to disable padding, `ZYDIS_PADDING_AUTO` to padd all - * addresses to the current stack width (hexadecimal only), or any other integer value for + * Pass `ZYDIS_PADDING_DISABLED` to disable padding, `ZYDIS_PADDING_AUTO` to pad all + * addresses to the current address width (hexadecimal only), or any other integer value for * custom padding. */ ZYDIS_FORMATTER_PROP_ADDR_PADDING_RELATIVE, @@ -262,6 +262,8 @@ typedef enum ZydisFormatterProperty_ * Controls the letter-case for decorators. * * Pass `ZYAN_TRUE` as value to format in uppercase or `ZYAN_FALSE` to format in lowercase. + * + * WARNING: this is currently not implemented (ignored). */ ZYDIS_FORMATTER_PROP_UPPERCASE_DECORATORS, @@ -798,75 +800,75 @@ struct ZydisFormatter_ */ ZyanBool print_branch_size; /** - * The `ZYDIS_FORMATTER_DETAILED_PREFIXES` property. + * The `ZYDIS_FORMATTER_PROP_DETAILED_PREFIXES` property. */ ZyanBool detailed_prefixes; /** - * The `ZYDIS_FORMATTER_ADDR_BASE` property. + * The `ZYDIS_FORMATTER_PROP_ADDR_BASE` property. */ ZydisNumericBase addr_base; /** - * The `ZYDIS_FORMATTER_ADDR_SIGNEDNESS` property. + * The `ZYDIS_FORMATTER_PROP_ADDR_SIGNEDNESS` property. */ ZydisSignedness addr_signedness; /** - * The `ZYDIS_FORMATTER_ADDR_PADDING_ABSOLUTE` property. + * The `ZYDIS_FORMATTER_PROP_ADDR_PADDING_ABSOLUTE` property. */ ZydisPadding addr_padding_absolute; /** - * The `ZYDIS_FORMATTER_ADDR_PADDING_RELATIVE` property. + * The `ZYDIS_FORMATTER_PROP_ADDR_PADDING_RELATIVE` property. */ ZydisPadding addr_padding_relative; /** - * The `ZYDIS_FORMATTER_DISP_BASE` property. + * The `ZYDIS_FORMATTER_PROP_DISP_BASE` property. */ ZydisNumericBase disp_base; /** - * The `ZYDIS_FORMATTER_DISP_SIGNEDNESS` property. + * The `ZYDIS_FORMATTER_PROP_DISP_SIGNEDNESS` property. */ ZydisSignedness disp_signedness; /** - * The `ZYDIS_FORMATTER_DISP_PADDING` property. + * The `ZYDIS_FORMATTER_PROP_DISP_PADDING` property. */ ZydisPadding disp_padding; /** - * The `ZYDIS_FORMATTER_IMM_BASE` property. + * The `ZYDIS_FORMATTER_PROP_IMM_BASE` property. */ ZydisNumericBase imm_base; /** - * The `ZYDIS_FORMATTER_IMM_SIGNEDNESS` property. + * The `ZYDIS_FORMATTER_PROP_IMM_SIGNEDNESS` property. */ ZydisSignedness imm_signedness; /** - * The `ZYDIS_FORMATTER_IMM_PADDING` property. + * The `ZYDIS_FORMATTER_PROP_IMM_PADDING` property. */ ZydisPadding imm_padding; /** - * The `ZYDIS_FORMATTER_UPPERCASE_PREFIXES` property. + * The `ZYDIS_FORMATTER_PROP_UPPERCASE_PREFIXES` property. */ ZyanI32 case_prefixes; /** - * The `ZYDIS_FORMATTER_UPPERCASE_MNEMONIC` property. + * The `ZYDIS_FORMATTER_PROP_UPPERCASE_MNEMONIC` property. */ ZyanI32 case_mnemonic; /** - * The `ZYDIS_FORMATTER_UPPERCASE_REGISTERS` property. + * The `ZYDIS_FORMATTER_PROP_UPPERCASE_REGISTERS` property. */ ZyanI32 case_registers; /** - * The `ZYDIS_FORMATTER_UPPERCASE_TYPECASTS` property. + * The `ZYDIS_FORMATTER_PROP_UPPERCASE_TYPECASTS` property. */ ZyanI32 case_typecasts; /** - * The `ZYDIS_FORMATTER_UPPERCASE_DECORATORS` property. + * The `ZYDIS_FORMATTER_PROP_UPPERCASE_DECORATORS` property. */ ZyanI32 case_decorators; /** - * The `ZYDIS_FORMATTER_HEX_UPPERCASE` property. + * The `ZYDIS_FORMATTER_PROP_HEX_UPPERCASE` property. */ ZyanBool hex_uppercase; /** - * The `ZYDIS_FORMATTER_HEX_FORCE_LEADING_NUMBER` property. + * The `ZYDIS_FORMATTER_PROP_HEX_FORCE_LEADING_NUMBER` property. */ ZyanBool hex_force_leading_number; /** diff --git a/include/Zydis/Internal/DecoderData.h b/include/Zydis/Internal/DecoderData.h index f5ae557a..d409df27 100644 --- a/include/Zydis/Internal/DecoderData.h +++ b/include/Zydis/Internal/DecoderData.h @@ -182,22 +182,26 @@ enum ZydisDecoderTreeNodeTypes * Reference to a IPREFETCH-mode filter. */ ZYDIS_NODETYPE_FILTER_MODE_IPREFETCH = 0x1D, + /** + * Reference to a UD0_COMPAT-mode filter. + */ + ZYDIS_NODETYPE_FILTER_MODE_UD0_COMPAT = 0x1E, /** * Reference to an EVEX.nd filter. */ - ZYDIS_NODETYPE_FILTER_EVEX_ND = 0x1E, + ZYDIS_NODETYPE_FILTER_EVEX_ND = 0x1F, /** * Reference to an EVEX.nf filter. */ - ZYDIS_NODETYPE_FILTER_EVEX_NF = 0x1F, + ZYDIS_NODETYPE_FILTER_EVEX_NF = 0x20, /** * Reference to an EVEX.scc filter. */ - ZYDIS_NODETYPE_FILTER_EVEX_SCC = 0x20, + ZYDIS_NODETYPE_FILTER_EVEX_SCC = 0x21, /** * Reference to a REX2-prefix filter. */ - ZYDIS_NODETYPE_FILTER_REX2_PREFIX = 0x21 + ZYDIS_NODETYPE_FILTER_REX2_PREFIX = 0x22 }; /* ---------------------------------------------------------------------------------------------- */ diff --git a/include/Zydis/Internal/EncoderData.h b/include/Zydis/Internal/EncoderData.h index 808c1fa5..886e4a7d 100644 --- a/include/Zydis/Internal/EncoderData.h +++ b/include/Zydis/Internal/EncoderData.h @@ -221,6 +221,10 @@ typedef struct ZydisEncoderRelInfo_ * True if instruction accepts branch hint prefixes. */ ZyanBool accepts_branch_hints; + /** + * True if instruction accepts bound (`BND`) prefix. + */ + ZyanBool accepts_bound; } ZydisEncoderRelInfo; /** diff --git a/include/Zydis/Register.h b/include/Zydis/Register.h index 3cb6349c..5eeb7828 100644 --- a/include/Zydis/Register.h +++ b/include/Zydis/Register.h @@ -287,7 +287,7 @@ ZYDIS_EXPORT ZydisRegisterWidth ZydisRegisterGetWidth(ZydisMachineMode mode, Zyd * @param reg The register. * * @return The largest enclosing register of the given register, or `ZYDIS_REGISTER_NONE` if the - * register is invalid for the active machine-mode or does not have an enclosing-register. + * register is invalid for the active machine-mode. */ ZYDIS_EXPORT ZydisRegister ZydisRegisterGetLargestEnclosing(ZydisMachineMode mode, ZydisRegister reg); diff --git a/include/Zydis/ShortString.h b/include/Zydis/ShortString.h index c7598855..cac57a37 100644 --- a/include/Zydis/ShortString.h +++ b/include/Zydis/ShortString.h @@ -44,7 +44,7 @@ extern "C" { /* Enums and types */ /* ============================================================================================== */ -#if !(defined(ZYAN_AARCH64) && defined(ZYAN_APPLE)) +#if !defined(ZYAN_APPLE) # pragma pack(push, 1) #endif @@ -68,7 +68,7 @@ typedef struct ZydisShortString_ ZyanU8 size; } ZydisShortString; -#if !(defined(ZYAN_AARCH64) && defined(ZYAN_APPLE)) +#if !defined(ZYAN_APPLE) # pragma pack(pop) #endif diff --git a/resources/VersionInfo.rc b/resources/VersionInfo.rc index c8fcd53f..786dc0ae 100644 Binary files a/resources/VersionInfo.rc and b/resources/VersionInfo.rc differ diff --git a/src/Decoder.c b/src/Decoder.c index ce488f2b..e2a493e5 100644 --- a/src/Decoder.c +++ b/src/Decoder.c @@ -5085,7 +5085,9 @@ static ZyanStatus ZydisDecodeInstruction(ZydisDecoderState* state, case ZYDIS_NODETYPE_FILTER_MODE_IPREFETCH: index = !!(state->decoder->decoder_mode & (1 << ZYDIS_DECODER_MODE_IPREFETCH)); break; - case ZYDIS_NODETYPE_FILTER_EVEX_ND: + case ZYDIS_NODETYPE_FILTER_MODE_UD0_COMPAT: + index = !!(state->decoder->decoder_mode & (1 << ZYDIS_DECODER_MODE_UD0_COMPAT)); + break; case ZYDIS_NODETYPE_FILTER_EVEX_ND: status = ZydisNodeHandlerEvexND(state->context, instruction, &index); break; case ZYDIS_NODETYPE_FILTER_EVEX_NF: @@ -5202,6 +5204,8 @@ static ZyanStatus ZydisDecodeInstruction(ZydisDecoderState* state, ZyanStatus ZydisDecoderInit(ZydisDecoder* decoder, ZydisMachineMode machine_mode, ZydisStackWidth stack_width) { + ZYAN_STATIC_ASSERT(ZYDIS_DECODER_MODE_MAX_VALUE <= 32); + static const ZyanU32 decoder_modes = #ifdef ZYDIS_MINIMAL_MODE (1 << ZYDIS_DECODER_MODE_MINIMAL) | @@ -5210,7 +5214,8 @@ ZyanStatus ZydisDecoderInit(ZydisDecoder* decoder, ZydisMachineMode machine_mode (1 << ZYDIS_DECODER_MODE_CET) | (1 << ZYDIS_DECODER_MODE_LZCNT) | (1 << ZYDIS_DECODER_MODE_TZCNT) | - (1 << ZYDIS_DECODER_MODE_CLDEMOTE); + (1 << ZYDIS_DECODER_MODE_CLDEMOTE) | + (1 << ZYDIS_DECODER_MODE_IPREFETCH); if (!decoder) { diff --git a/src/DecoderData.c b/src/DecoderData.c index cb0a4d7f..e547ebf7 100644 --- a/src/DecoderData.c +++ b/src/DecoderData.c @@ -161,17 +161,19 @@ const ZydisDecoderTreeNode* ZydisDecoderTreeGetChildNode(const ZydisDecoderTreeN case ZYDIS_NODETYPE_FILTER_MODE_IPREFETCH: ZYAN_ASSERT(index < 2); return &FILTERS_MODE_IPREFETCH[parent->value][index]; - case ZYDIS_NODETYPE_FILTER_EVEX_ND: - ZYAN_ASSERT(index < 2); + case ZYDIS_NODETYPE_FILTER_MODE_UD0_COMPAT: + ZYAN_ASSERT(index < 2); + return &FILTERS_MODE_UD0_COMPAT[parent->value][index]; case ZYDIS_NODETYPE_FILTER_EVEX_ND: + ZYAN_ASSERT(index < 2); return &FILTERS_EVEX_ND[parent->value][index]; case ZYDIS_NODETYPE_FILTER_EVEX_NF: - ZYAN_ASSERT(index < 2); + ZYAN_ASSERT(index < 2); return &FILTERS_EVEX_NF[parent->value][index]; case ZYDIS_NODETYPE_FILTER_EVEX_SCC: - ZYAN_ASSERT(index < 16); + ZYAN_ASSERT(index < 16); return &FILTERS_EVEX_SCC[parent->value][index]; case ZYDIS_NODETYPE_FILTER_REX2_PREFIX: - ZYAN_ASSERT(index < 2); + ZYAN_ASSERT(index < 2); return &FILTERS_REX2_PREFIX[parent->value][index]; default: ZYAN_UNREACHABLE; diff --git a/src/Encoder.c b/src/Encoder.c index ae1743d0..12147ad0 100644 --- a/src/Encoder.c +++ b/src/Encoder.c @@ -4375,7 +4375,18 @@ ZYDIS_EXPORT ZyanStatus ZydisEncoderEncodeInstructionAbsolute(ZydisEncoderReques (request->prefixes & (ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN | ZYDIS_ATTRIB_HAS_BRANCH_TAKEN))) { - extra_length = 1; + extra_length += 1; + } + if ((rel_info->accepts_bound) && (request->prefixes & ZYDIS_ATTRIB_HAS_BND)) + { + extra_length += 1; + // `BND` prefix is not accepted for short `JMP` (Intel SDM Vol. 1) + if ((request->mnemonic == ZYDIS_MNEMONIC_JMP) && + (request->branch_type == ZYDIS_BRANCH_TYPE_NONE) && + (request->branch_width == ZYDIS_BRANCH_WIDTH_NONE)) + { + start_offset = 1; + } } if (request->branch_width == ZYDIS_BRANCH_WIDTH_NONE) { @@ -4516,6 +4527,10 @@ ZYDIS_EXPORT ZyanStatus ZydisEncoderEncodeInstructionAbsolute(ZydisEncoderReques } ZYAN_ASSERT(instruction.disp_size != 0); ZyanU8 disp_offset = (instruction.disp_size >> 3) + (instruction.imm_size >> 3); + if (instruction.encoding == ZYDIS_INSTRUCTION_ENCODING_3DNOW) + { + disp_offset += 1; + } ZYAN_ASSERT(instruction_size > disp_offset); ZYAN_MEMCPY((ZyanU8 *)buffer + instruction_size - disp_offset, &rip_rel, sizeof(ZyanI32)); op_rip_rel->mem.displacement = rip_rel; @@ -4525,10 +4540,11 @@ ZYDIS_EXPORT ZyanStatus ZydisEncoderEncodeInstructionAbsolute(ZydisEncoderReques } ZYDIS_EXPORT ZyanStatus ZydisEncoderDecodedInstructionToEncoderRequest( - const ZydisDecodedInstruction *instruction, const ZydisDecodedOperand* operands, - ZyanU8 operand_count, ZydisEncoderRequest *request) + const ZydisDecodedInstruction *instruction, const ZydisDecodedOperand* operands, + ZyanU8 operand_count_visible, ZydisEncoderRequest *request) { - if (!instruction || !request || (operand_count && !operands)) + if (!instruction || !request || (operand_count_visible && !operands) || + operand_count_visible != instruction->operand_count_visible) { return ZYAN_STATUS_INVALID_ARGUMENT; } @@ -4635,13 +4651,8 @@ ZYDIS_EXPORT ZyanStatus ZydisEncoderDecodedInstructionToEncoderRequest( } request->allowed_encodings = 1 << instruction->encoding; - if ((operand_count > ZYDIS_ENCODER_MAX_OPERANDS) || - (operand_count > instruction->operand_count_visible)) - { - return ZYAN_STATUS_INVALID_ARGUMENT; - } - request->operand_count = operand_count; - for (ZyanU8 i = 0; i < operand_count; ++i) + request->operand_count = operand_count_visible; + for (ZyanU8 i = 0; i < operand_count_visible; ++i) { const ZydisDecodedOperand *dec_op = &operands[i]; ZydisEncoderOperand *enc_op = &request->operands[i]; diff --git a/src/Formatter.c b/src/Formatter.c index 7ffb35dd..80d79e0b 100644 --- a/src/Formatter.c +++ b/src/Formatter.c @@ -331,6 +331,11 @@ ZyanStatus ZydisFormatterSetProperty(ZydisFormatter* formatter, ZydisFormatterPr formatter->hex_uppercase = (value) ? ZYAN_TRUE : ZYAN_FALSE; break; } + case ZYDIS_FORMATTER_PROP_HEX_FORCE_LEADING_NUMBER: + { + formatter->hex_force_leading_number = (value) ? ZYAN_TRUE : ZYAN_FALSE; + break; + } case ZYDIS_FORMATTER_PROP_HEX_PREFIX: { base = ZYDIS_NUMERIC_BASE_HEX; diff --git a/src/FormatterBase.c b/src/FormatterBase.c index 00c9321b..39bb9ae6 100644 --- a/src/FormatterBase.c +++ b/src/FormatterBase.c @@ -86,12 +86,17 @@ ZyanU32 ZydisFormatterHelperGetExplicitSize(const ZydisFormatter* formatter, ZYAN_ASSERT(operand->type == ZYDIS_OPERAND_TYPE_MEMORY); ZYAN_ASSERT((operand->mem.type == ZYDIS_MEMOP_TYPE_MEM) || + (operand->mem.type == ZYDIS_MEMOP_TYPE_AGEN) || (operand->mem.type == ZYDIS_MEMOP_TYPE_VSIB)); if (formatter->force_memory_size) { return operand->size; } + else if (operand->mem.type == ZYDIS_MEMOP_TYPE_AGEN) + { + return 0; + } if (!context->operands) { @@ -231,7 +236,7 @@ ZyanStatus ZydisFormatterBasePrintAddressABS(const ZydisFormatter* formatter, if ((formatter->addr_padding_absolute == ZYDIS_PADDING_AUTO) && (formatter->addr_base == ZYDIS_NUMERIC_BASE_HEX)) { - switch (context->instruction->stack_width) + switch (context->instruction->address_width) { case 16: padding = 4; @@ -271,7 +276,7 @@ ZyanStatus ZydisFormatterBasePrintAddressREL(const ZydisFormatter* formatter, if ((formatter->addr_padding_relative == ZYDIS_PADDING_AUTO) && (formatter->addr_base == ZYDIS_NUMERIC_BASE_HEX)) { - switch (context->instruction->stack_width) + switch (context->instruction->address_width) { case 16: padding = 4; diff --git a/src/FormatterIntel.c b/src/FormatterIntel.c index 0584fb24..5e01e858 100644 --- a/src/FormatterIntel.c +++ b/src/FormatterIntel.c @@ -201,6 +201,7 @@ ZyanStatus ZydisFormatterIntelFormatOperandMEM(const ZydisFormatter* formatter, ZYAN_ASSERT(context); if ((context->operand->mem.type == ZYDIS_MEMOP_TYPE_MEM) || + (context->operand->mem.type == ZYDIS_MEMOP_TYPE_AGEN) || (context->operand->mem.type == ZYDIS_MEMOP_TYPE_VSIB)) { ZYAN_CHECK(formatter->func_print_typecast(formatter, buffer, context)); @@ -425,7 +426,7 @@ ZyanStatus ZydisFormatterIntelPrintAddressMASM(const ZydisFormatter* formatter, if ((formatter->addr_padding_relative == ZYDIS_PADDING_AUTO) && (formatter->addr_base == ZYDIS_NUMERIC_BASE_HEX)) { - switch (context->instruction->stack_width) + switch (context->instruction->address_width) { case 16: padding = 4; diff --git a/src/Generated/EncoderTables.inc b/src/Generated/EncoderTables.inc index 8e79cdc0..a837130e 100644 --- a/src/Generated/EncoderTables.inc +++ b/src/Generated/EncoderTables.inc @@ -809,376 +809,375 @@ const ZydisEncoderLookupEntry encoder_instruction_lookup[] = { 0x07BA, 2 }, { 0x07BC, 2 }, { 0x07BE, 2 }, - { 0x07C0, 2 }, - { 0x07C2, 2 }, - { 0x07C4, 1 }, + { 0x07C0, 3 }, + { 0x07C3, 2 }, { 0x07C5, 1 }, { 0x07C6, 1 }, { 0x07C7, 1 }, - { 0x07C8, 2 }, - { 0x07CA, 2 }, - { 0x07CC, 2 }, - { 0x07CE, 2 }, - { 0x07D0, 1 }, + { 0x07C8, 1 }, + { 0x07C9, 2 }, + { 0x07CB, 2 }, + { 0x07CD, 2 }, + { 0x07CF, 2 }, { 0x07D1, 1 }, { 0x07D2, 1 }, { 0x07D3, 1 }, - { 0x07D4, 3 }, - { 0x07D7, 3 }, - { 0x07DA, 14 }, - { 0x07E8, 7 }, - { 0x07EF, 14 }, - { 0x07FD, 5 }, - { 0x0802, 3 }, - { 0x0805, 3 }, - { 0x0808, 5 }, - { 0x080D, 4 }, - { 0x0811, 4 }, - { 0x0815, 10 }, - { 0x081F, 10 }, - { 0x0829, 10 }, - { 0x0833, 10 }, - { 0x083D, 2 }, - { 0x083F, 2 }, - { 0x0841, 8 }, - { 0x0849, 6 }, - { 0x084F, 10 }, - { 0x0859, 10 }, - { 0x0863, 10 }, - { 0x086D, 10 }, - { 0x0877, 2 }, - { 0x0879, 2 }, - { 0x087B, 9 }, - { 0x0884, 9 }, - { 0x088D, 4 }, - { 0x0891, 4 }, - { 0x0895, 4 }, - { 0x0899, 4 }, - { 0x089D, 1 }, - { 0x089E, 4 }, - { 0x08A2, 3 }, - { 0x08A5, 1 }, - { 0x08A6, 2 }, - { 0x08A8, 2 }, - { 0x08AA, 1 }, - { 0x08AB, 6 }, - { 0x08B1, 3 }, - { 0x08B4, 1 }, - { 0x08B5, 2 }, - { 0x08B7, 2 }, - { 0x08B9, 7 }, - { 0x08C0, 11 }, - { 0x08CB, 14 }, - { 0x08D9, 7 }, - { 0x08E0, 14 }, - { 0x08EE, 5 }, - { 0x08F3, 3 }, - { 0x08F6, 5 }, - { 0x08FB, 5 }, - { 0x0900, 3 }, - { 0x0903, 5 }, - { 0x0908, 6 }, - { 0x090E, 6 }, - { 0x0914, 14 }, - { 0x0922, 7 }, - { 0x0929, 11 }, - { 0x0934, 3 }, - { 0x0937, 3 }, - { 0x093A, 3 }, - { 0x093D, 3 }, - { 0x0940, 3 }, - { 0x0943, 3 }, - { 0x0946, 6 }, - { 0x094C, 2 }, - { 0x094E, 2 }, - { 0x0950, 2 }, - { 0x0952, 2 }, - { 0x0954, 10 }, - { 0x095E, 11 }, - { 0x0969, 7 }, - { 0x0970, 14 }, - { 0x097E, 7 }, - { 0x0985, 7 }, - { 0x098C, 7 }, - { 0x0993, 7 }, - { 0x099A, 7 }, - { 0x09A1, 11 }, - { 0x09AC, 7 }, - { 0x09B3, 7 }, - { 0x09BA, 7 }, - { 0x09C1, 7 }, - { 0x09C8, 7 }, - { 0x09CF, 7 }, - { 0x09D6, 11 }, - { 0x09E1, 14 }, - { 0x09EF, 11 }, - { 0x09FA, 7 }, - { 0x0A01, 7 }, - { 0x0A08, 7 }, - { 0x0A0F, 7 }, - { 0x0A16, 7 }, - { 0x0A1D, 7 }, - { 0x0A24, 7 }, - { 0x0A2B, 3 }, - { 0x0A2E, 15 }, - { 0x0A3D, 5 }, - { 0x0A42, 9 }, - { 0x0A4B, 3 }, - { 0x0A4E, 9 }, - { 0x0A57, 3 }, - { 0x0A5A, 9 }, - { 0x0A63, 13 }, - { 0x0A70, 9 }, - { 0x0A79, 15 }, - { 0x0A88, 5 }, - { 0x0A8D, 3 }, - { 0x0A90, 15 }, - { 0x0A9F, 9 }, - { 0x0AA8, 11 }, - { 0x0AB3, 7 }, - { 0x0ABA, 7 }, - { 0x0AC1, 7 }, - { 0x0AC8, 7 }, - { 0x0ACF, 7 }, - { 0x0AD6, 7 }, - { 0x0ADD, 7 }, - { 0x0AE4, 7 }, - { 0x0AEB, 7 }, - { 0x0AF2, 11 }, - { 0x0AFD, 7 }, - { 0x0B04, 7 }, - { 0x0B0B, 7 }, - { 0x0B12, 15 }, - { 0x0B21, 9 }, - { 0x0B2A, 9 }, - { 0x0B33, 9 }, - { 0x0B3C, 15 }, - { 0x0B4B, 9 }, - { 0x0B54, 10 }, - { 0x0B5E, 7 }, - { 0x0B65, 7 }, - { 0x0B6C, 7 }, - { 0x0B73, 7 }, - { 0x0B7A, 7 }, - { 0x0B81, 7 }, - { 0x0B88, 9 }, - { 0x0B91, 9 }, - { 0x0B9A, 7 }, - { 0x0BA1, 7 }, - { 0x0BA8, 6 }, - { 0x0BAE, 11 }, - { 0x0BB9, 7 }, - { 0x0BC0, 11 }, - { 0x0BCB, 5 }, - { 0x0BD0, 3 }, - { 0x0BD3, 5 }, - { 0x0BD8, 6 }, - { 0x0BDE, 2 }, - { 0x0BE0, 4 }, - { 0x0BE4, 2 }, - { 0x0BE6, 2 }, - { 0x0BE8, 3 }, - { 0x0BEB, 3 }, - { 0x0BEE, 3 }, - { 0x0BF1, 6 }, - { 0x0BF7, 6 }, - { 0x0BFD, 2 }, - { 0x0BFF, 4 }, - { 0x0C03, 2 }, - { 0x0C05, 4 }, - { 0x0C09, 2 }, - { 0x0C0B, 2 }, - { 0x0C0D, 4 }, - { 0x0C11, 2 }, - { 0x0C13, 4 }, - { 0x0C17, 2 }, - { 0x0C19, 4 }, - { 0x0C1D, 7 }, - { 0x0C24, 3 }, - { 0x0C27, 7 }, - { 0x0C2E, 3 }, - { 0x0C31, 7 }, - { 0x0C38, 7 }, - { 0x0C3F, 3 }, - { 0x0C42, 3 }, - { 0x0C45, 3 }, - { 0x0C48, 3 }, - { 0x0C4B, 14 }, - { 0x0C59, 7 }, - { 0x0C60, 14 }, - { 0x0C6E, 5 }, - { 0x0C73, 3 }, - { 0x0C76, 5 }, - { 0x0C7B, 14 }, - { 0x0C89, 7 }, - { 0x0C90, 14 }, - { 0x0C9E, 5 }, - { 0x0CA3, 3 }, - { 0x0CA6, 5 }, - { 0x0CAB, 14 }, - { 0x0CB9, 7 }, - { 0x0CC0, 14 }, - { 0x0CCE, 5 }, - { 0x0CD3, 3 }, - { 0x0CD6, 5 }, - { 0x0CDB, 3 }, - { 0x0CDE, 7 }, - { 0x0CE5, 3 }, - { 0x0CE8, 8 }, - { 0x0CF0, 8 }, - { 0x0CF8, 4 }, - { 0x0CFC, 4 }, - { 0x0D00, 11 }, - { 0x0D0B, 7 }, - { 0x0D12, 11 }, - { 0x0D1D, 11 }, - { 0x0D28, 7 }, - { 0x0D2F, 11 }, - { 0x0D3A, 11 }, - { 0x0D45, 7 }, - { 0x0D4C, 11 }, - { 0x0D57, 8 }, - { 0x0D5F, 8 }, - { 0x0D67, 14 }, - { 0x0D75, 7 }, - { 0x0D7C, 14 }, - { 0x0D8A, 5 }, - { 0x0D8F, 3 }, - { 0x0D92, 5 }, - { 0x0D97, 14 }, - { 0x0DA5, 7 }, - { 0x0DAC, 14 }, - { 0x0DBA, 5 }, - { 0x0DBF, 3 }, - { 0x0DC2, 5 }, - { 0x0DC7, 14 }, - { 0x0DD5, 7 }, - { 0x0DDC, 14 }, - { 0x0DEA, 5 }, - { 0x0DEF, 3 }, - { 0x0DF2, 5 }, - { 0x0DF7, 11 }, - { 0x0E02, 7 }, - { 0x0E09, 11 }, - { 0x0E14, 11 }, - { 0x0E1F, 7 }, - { 0x0E26, 11 }, - { 0x0E31, 11 }, - { 0x0E3C, 7 }, - { 0x0E43, 11 }, - { 0x0E4E, 8 }, - { 0x0E56, 8 }, - { 0x0E5E, 8 }, - { 0x0E66, 8 }, - { 0x0E6E, 4 }, - { 0x0E72, 4 }, - { 0x0E76, 7 }, - { 0x0E7D, 3 }, - { 0x0E80, 14 }, - { 0x0E8E, 7 }, - { 0x0E95, 14 }, - { 0x0EA3, 5 }, - { 0x0EA8, 3 }, - { 0x0EAB, 5 }, - { 0x0EB0, 14 }, - { 0x0EBE, 7 }, - { 0x0EC5, 14 }, - { 0x0ED3, 5 }, - { 0x0ED8, 3 }, - { 0x0EDB, 5 }, - { 0x0EE0, 14 }, - { 0x0EEE, 7 }, - { 0x0EF5, 14 }, - { 0x0F03, 5 }, - { 0x0F08, 3 }, - { 0x0F0B, 5 }, - { 0x0F10, 8 }, - { 0x0F18, 8 }, - { 0x0F20, 4 }, - { 0x0F24, 4 }, - { 0x0F28, 14 }, - { 0x0F36, 7 }, - { 0x0F3D, 14 }, - { 0x0F4B, 5 }, - { 0x0F50, 3 }, - { 0x0F53, 5 }, - { 0x0F58, 14 }, - { 0x0F66, 7 }, - { 0x0F6D, 14 }, - { 0x0F7B, 5 }, - { 0x0F80, 3 }, - { 0x0F83, 5 }, - { 0x0F88, 14 }, - { 0x0F96, 7 }, - { 0x0F9D, 14 }, - { 0x0FAB, 5 }, - { 0x0FB0, 3 }, - { 0x0FB3, 5 }, - { 0x0FB8, 8 }, - { 0x0FC0, 8 }, - { 0x0FC8, 4 }, - { 0x0FCC, 4 }, - { 0x0FD0, 6 }, - { 0x0FD6, 6 }, - { 0x0FDC, 6 }, - { 0x0FE2, 2 }, - { 0x0FE4, 2 }, - { 0x0FE6, 2 }, - { 0x0FE8, 4 }, - { 0x0FEC, 4 }, - { 0x0FF0, 2 }, - { 0x0FF2, 2 }, - { 0x0FF4, 6 }, - { 0x0FFA, 6 }, - { 0x1000, 1 }, - { 0x1001, 2 }, - { 0x1003, 1 }, + { 0x07D4, 1 }, + { 0x07D5, 3 }, + { 0x07D8, 3 }, + { 0x07DB, 14 }, + { 0x07E9, 7 }, + { 0x07F0, 14 }, + { 0x07FE, 5 }, + { 0x0803, 3 }, + { 0x0806, 3 }, + { 0x0809, 5 }, + { 0x080E, 4 }, + { 0x0812, 4 }, + { 0x0816, 10 }, + { 0x0820, 10 }, + { 0x082A, 10 }, + { 0x0834, 10 }, + { 0x083E, 2 }, + { 0x0840, 2 }, + { 0x0842, 8 }, + { 0x084A, 6 }, + { 0x0850, 10 }, + { 0x085A, 10 }, + { 0x0864, 10 }, + { 0x086E, 10 }, + { 0x0878, 2 }, + { 0x087A, 2 }, + { 0x087C, 9 }, + { 0x0885, 9 }, + { 0x088E, 4 }, + { 0x0892, 4 }, + { 0x0896, 4 }, + { 0x089A, 4 }, + { 0x089E, 1 }, + { 0x089F, 4 }, + { 0x08A3, 3 }, + { 0x08A6, 1 }, + { 0x08A7, 2 }, + { 0x08A9, 2 }, + { 0x08AB, 1 }, + { 0x08AC, 6 }, + { 0x08B2, 3 }, + { 0x08B5, 1 }, + { 0x08B6, 2 }, + { 0x08B8, 2 }, + { 0x08BA, 7 }, + { 0x08C1, 11 }, + { 0x08CC, 14 }, + { 0x08DA, 7 }, + { 0x08E1, 14 }, + { 0x08EF, 5 }, + { 0x08F4, 3 }, + { 0x08F7, 5 }, + { 0x08FC, 5 }, + { 0x0901, 3 }, + { 0x0904, 5 }, + { 0x0909, 6 }, + { 0x090F, 6 }, + { 0x0915, 14 }, + { 0x0923, 7 }, + { 0x092A, 11 }, + { 0x0935, 3 }, + { 0x0938, 3 }, + { 0x093B, 3 }, + { 0x093E, 3 }, + { 0x0941, 3 }, + { 0x0944, 3 }, + { 0x0947, 6 }, + { 0x094D, 2 }, + { 0x094F, 2 }, + { 0x0951, 2 }, + { 0x0953, 2 }, + { 0x0955, 10 }, + { 0x095F, 11 }, + { 0x096A, 7 }, + { 0x0971, 14 }, + { 0x097F, 7 }, + { 0x0986, 7 }, + { 0x098D, 7 }, + { 0x0994, 7 }, + { 0x099B, 7 }, + { 0x09A2, 11 }, + { 0x09AD, 7 }, + { 0x09B4, 7 }, + { 0x09BB, 7 }, + { 0x09C2, 7 }, + { 0x09C9, 7 }, + { 0x09D0, 7 }, + { 0x09D7, 11 }, + { 0x09E2, 14 }, + { 0x09F0, 11 }, + { 0x09FB, 7 }, + { 0x0A02, 7 }, + { 0x0A09, 7 }, + { 0x0A10, 7 }, + { 0x0A17, 7 }, + { 0x0A1E, 7 }, + { 0x0A25, 7 }, + { 0x0A2C, 3 }, + { 0x0A2F, 15 }, + { 0x0A3E, 5 }, + { 0x0A43, 9 }, + { 0x0A4C, 3 }, + { 0x0A4F, 9 }, + { 0x0A58, 3 }, + { 0x0A5B, 9 }, + { 0x0A64, 13 }, + { 0x0A71, 9 }, + { 0x0A7A, 15 }, + { 0x0A89, 5 }, + { 0x0A8E, 3 }, + { 0x0A91, 15 }, + { 0x0AA0, 9 }, + { 0x0AA9, 11 }, + { 0x0AB4, 7 }, + { 0x0ABB, 7 }, + { 0x0AC2, 7 }, + { 0x0AC9, 7 }, + { 0x0AD0, 7 }, + { 0x0AD7, 7 }, + { 0x0ADE, 7 }, + { 0x0AE5, 7 }, + { 0x0AEC, 7 }, + { 0x0AF3, 11 }, + { 0x0AFE, 7 }, + { 0x0B05, 7 }, + { 0x0B0C, 7 }, + { 0x0B13, 15 }, + { 0x0B22, 9 }, + { 0x0B2B, 9 }, + { 0x0B34, 9 }, + { 0x0B3D, 15 }, + { 0x0B4C, 9 }, + { 0x0B55, 10 }, + { 0x0B5F, 7 }, + { 0x0B66, 7 }, + { 0x0B6D, 7 }, + { 0x0B74, 7 }, + { 0x0B7B, 7 }, + { 0x0B82, 7 }, + { 0x0B89, 9 }, + { 0x0B92, 9 }, + { 0x0B9B, 7 }, + { 0x0BA2, 7 }, + { 0x0BA9, 6 }, + { 0x0BAF, 11 }, + { 0x0BBA, 7 }, + { 0x0BC1, 11 }, + { 0x0BCC, 5 }, + { 0x0BD1, 3 }, + { 0x0BD4, 5 }, + { 0x0BD9, 6 }, + { 0x0BDF, 2 }, + { 0x0BE1, 4 }, + { 0x0BE5, 2 }, + { 0x0BE7, 2 }, + { 0x0BE9, 3 }, + { 0x0BEC, 3 }, + { 0x0BEF, 3 }, + { 0x0BF2, 6 }, + { 0x0BF8, 6 }, + { 0x0BFE, 2 }, + { 0x0C00, 4 }, + { 0x0C04, 2 }, + { 0x0C06, 4 }, + { 0x0C0A, 2 }, + { 0x0C0C, 2 }, + { 0x0C0E, 4 }, + { 0x0C12, 2 }, + { 0x0C14, 4 }, + { 0x0C18, 2 }, + { 0x0C1A, 4 }, + { 0x0C1E, 7 }, + { 0x0C25, 3 }, + { 0x0C28, 7 }, + { 0x0C2F, 3 }, + { 0x0C32, 7 }, + { 0x0C39, 7 }, + { 0x0C40, 3 }, + { 0x0C43, 3 }, + { 0x0C46, 3 }, + { 0x0C49, 3 }, + { 0x0C4C, 14 }, + { 0x0C5A, 7 }, + { 0x0C61, 14 }, + { 0x0C6F, 5 }, + { 0x0C74, 3 }, + { 0x0C77, 5 }, + { 0x0C7C, 14 }, + { 0x0C8A, 7 }, + { 0x0C91, 14 }, + { 0x0C9F, 5 }, + { 0x0CA4, 3 }, + { 0x0CA7, 5 }, + { 0x0CAC, 14 }, + { 0x0CBA, 7 }, + { 0x0CC1, 14 }, + { 0x0CCF, 5 }, + { 0x0CD4, 3 }, + { 0x0CD7, 5 }, + { 0x0CDC, 3 }, + { 0x0CDF, 7 }, + { 0x0CE6, 3 }, + { 0x0CE9, 8 }, + { 0x0CF1, 8 }, + { 0x0CF9, 4 }, + { 0x0CFD, 4 }, + { 0x0D01, 11 }, + { 0x0D0C, 7 }, + { 0x0D13, 11 }, + { 0x0D1E, 11 }, + { 0x0D29, 7 }, + { 0x0D30, 11 }, + { 0x0D3B, 11 }, + { 0x0D46, 7 }, + { 0x0D4D, 11 }, + { 0x0D58, 8 }, + { 0x0D60, 8 }, + { 0x0D68, 14 }, + { 0x0D76, 7 }, + { 0x0D7D, 14 }, + { 0x0D8B, 5 }, + { 0x0D90, 3 }, + { 0x0D93, 5 }, + { 0x0D98, 14 }, + { 0x0DA6, 7 }, + { 0x0DAD, 14 }, + { 0x0DBB, 5 }, + { 0x0DC0, 3 }, + { 0x0DC3, 5 }, + { 0x0DC8, 14 }, + { 0x0DD6, 7 }, + { 0x0DDD, 14 }, + { 0x0DEB, 5 }, + { 0x0DF0, 3 }, + { 0x0DF3, 5 }, + { 0x0DF8, 11 }, + { 0x0E03, 7 }, + { 0x0E0A, 11 }, + { 0x0E15, 11 }, + { 0x0E20, 7 }, + { 0x0E27, 11 }, + { 0x0E32, 11 }, + { 0x0E3D, 7 }, + { 0x0E44, 11 }, + { 0x0E4F, 8 }, + { 0x0E57, 8 }, + { 0x0E5F, 8 }, + { 0x0E67, 8 }, + { 0x0E6F, 4 }, + { 0x0E73, 4 }, + { 0x0E77, 7 }, + { 0x0E7E, 3 }, + { 0x0E81, 14 }, + { 0x0E8F, 7 }, + { 0x0E96, 14 }, + { 0x0EA4, 5 }, + { 0x0EA9, 3 }, + { 0x0EAC, 5 }, + { 0x0EB1, 14 }, + { 0x0EBF, 7 }, + { 0x0EC6, 14 }, + { 0x0ED4, 5 }, + { 0x0ED9, 3 }, + { 0x0EDC, 5 }, + { 0x0EE1, 14 }, + { 0x0EEF, 7 }, + { 0x0EF6, 14 }, + { 0x0F04, 5 }, + { 0x0F09, 3 }, + { 0x0F0C, 5 }, + { 0x0F11, 8 }, + { 0x0F19, 8 }, + { 0x0F21, 4 }, + { 0x0F25, 4 }, + { 0x0F29, 14 }, + { 0x0F37, 7 }, + { 0x0F3E, 14 }, + { 0x0F4C, 5 }, + { 0x0F51, 3 }, + { 0x0F54, 5 }, + { 0x0F59, 14 }, + { 0x0F67, 7 }, + { 0x0F6E, 14 }, + { 0x0F7C, 5 }, + { 0x0F81, 3 }, + { 0x0F84, 5 }, + { 0x0F89, 14 }, + { 0x0F97, 7 }, + { 0x0F9E, 14 }, + { 0x0FAC, 5 }, + { 0x0FB1, 3 }, + { 0x0FB4, 5 }, + { 0x0FB9, 8 }, + { 0x0FC1, 8 }, + { 0x0FC9, 4 }, + { 0x0FCD, 4 }, + { 0x0FD1, 6 }, + { 0x0FD7, 6 }, + { 0x0FDD, 6 }, + { 0x0FE3, 2 }, + { 0x0FE5, 2 }, + { 0x0FE7, 2 }, + { 0x0FE9, 4 }, + { 0x0FED, 4 }, + { 0x0FF1, 2 }, + { 0x0FF3, 2 }, + { 0x0FF5, 6 }, + { 0x0FFB, 6 }, + { 0x1001, 1 }, + { 0x1002, 2 }, { 0x1004, 1 }, { 0x1005, 1 }, { 0x1006, 1 }, { 0x1007, 1 }, - { 0x1008, 2 }, - { 0x100A, 1 }, + { 0x1008, 1 }, + { 0x1009, 2 }, { 0x100B, 1 }, - { 0x100C, 5 }, - { 0x1011, 5 }, - { 0x1016, 10 }, - { 0x1020, 7 }, - { 0x1027, 10 }, - { 0x1031, 3 }, - { 0x1034, 3 }, - { 0x1037, 3 }, - { 0x103A, 10 }, - { 0x1044, 7 }, - { 0x104B, 10 }, - { 0x1055, 3 }, - { 0x1058, 3 }, - { 0x105B, 3 }, - { 0x105E, 10 }, - { 0x1068, 10 }, - { 0x1072, 10 }, - { 0x107C, 3 }, - { 0x107F, 3 }, - { 0x1082, 3 }, - { 0x1085, 3 }, - { 0x1088, 3 }, - { 0x108B, 4 }, - { 0x108F, 4 }, - { 0x1093, 4 }, - { 0x1097, 4 }, - { 0x109B, 2 }, - { 0x109D, 4 }, - { 0x10A1, 2 }, - { 0x10A3, 4 }, - { 0x10A7, 2 }, - { 0x10A9, 2 }, - { 0x10AB, 4 }, - { 0x10AF, 2 }, - { 0x10B1, 4 }, - { 0x10B5, 2 }, - { 0x10B7, 4 }, - { 0x10BB, 2 }, - { 0x10BD, 1 }, + { 0x100C, 1 }, + { 0x100D, 5 }, + { 0x1012, 5 }, + { 0x1017, 10 }, + { 0x1021, 7 }, + { 0x1028, 10 }, + { 0x1032, 3 }, + { 0x1035, 3 }, + { 0x1038, 3 }, + { 0x103B, 10 }, + { 0x1045, 7 }, + { 0x104C, 10 }, + { 0x1056, 3 }, + { 0x1059, 3 }, + { 0x105C, 3 }, + { 0x105F, 10 }, + { 0x1069, 10 }, + { 0x1073, 10 }, + { 0x107D, 3 }, + { 0x1080, 3 }, + { 0x1083, 3 }, + { 0x1086, 3 }, + { 0x1089, 3 }, + { 0x108C, 4 }, + { 0x1090, 4 }, + { 0x1094, 4 }, + { 0x1098, 4 }, + { 0x109C, 2 }, + { 0x109E, 4 }, + { 0x10A2, 2 }, + { 0x10A4, 4 }, + { 0x10A8, 2 }, + { 0x10AA, 2 }, + { 0x10AC, 4 }, + { 0x10B0, 2 }, + { 0x10B2, 4 }, + { 0x10B6, 2 }, + { 0x10B8, 4 }, + { 0x10BC, 2 }, { 0x10BE, 1 }, { 0x10BF, 1 }, { 0x10C0, 1 }, @@ -1187,94 +1186,94 @@ const ZydisEncoderLookupEntry encoder_instruction_lookup[] = { 0x10C3, 1 }, { 0x10C4, 1 }, { 0x10C5, 1 }, - { 0x10C6, 3 }, - { 0x10C9, 1 }, - { 0x10CA, 4 }, - { 0x10CE, 4 }, - { 0x10D2, 11 }, - { 0x10DD, 7 }, - { 0x10E4, 11 }, - { 0x10EF, 5 }, - { 0x10F4, 3 }, - { 0x10F7, 5 }, - { 0x10FC, 1 }, + { 0x10C6, 1 }, + { 0x10C7, 3 }, + { 0x10CA, 1 }, + { 0x10CB, 4 }, + { 0x10CF, 4 }, + { 0x10D3, 11 }, + { 0x10DE, 7 }, + { 0x10E5, 11 }, + { 0x10F0, 5 }, + { 0x10F5, 3 }, + { 0x10F8, 5 }, { 0x10FD, 1 }, { 0x10FE, 1 }, - { 0x10FF, 11 }, - { 0x110A, 7 }, - { 0x1111, 11 }, - { 0x111C, 5 }, - { 0x1121, 3 }, - { 0x1124, 5 }, - { 0x1129, 1 }, + { 0x10FF, 1 }, + { 0x1100, 11 }, + { 0x110B, 7 }, + { 0x1112, 11 }, + { 0x111D, 5 }, + { 0x1122, 3 }, + { 0x1125, 5 }, { 0x112A, 1 }, { 0x112B, 1 }, - { 0x112C, 24 }, - { 0x1144, 24 }, - { 0x115C, 16 }, - { 0x116C, 10 }, - { 0x1176, 8 }, - { 0x117E, 16 }, - { 0x118E, 16 }, - { 0x119E, 8 }, - { 0x11A6, 12 }, - { 0x11B2, 12 }, - { 0x11BE, 12 }, - { 0x11CA, 12 }, - { 0x11D6, 2 }, - { 0x11D8, 4 }, - { 0x11DC, 4 }, - { 0x11E0, 2 }, - { 0x11E2, 4 }, - { 0x11E6, 4 }, - { 0x11EA, 2 }, - { 0x11EC, 2 }, - { 0x11EE, 1 }, + { 0x112C, 1 }, + { 0x112D, 24 }, + { 0x1145, 24 }, + { 0x115D, 16 }, + { 0x116D, 10 }, + { 0x1177, 8 }, + { 0x117F, 16 }, + { 0x118F, 16 }, + { 0x119F, 8 }, + { 0x11A7, 12 }, + { 0x11B3, 12 }, + { 0x11BF, 12 }, + { 0x11CB, 12 }, + { 0x11D7, 2 }, + { 0x11D9, 4 }, + { 0x11DD, 4 }, + { 0x11E1, 2 }, + { 0x11E3, 4 }, + { 0x11E7, 4 }, + { 0x11EB, 2 }, + { 0x11ED, 2 }, { 0x11EF, 1 }, { 0x11F0, 1 }, { 0x11F1, 1 }, - { 0x11F2, 5 }, - { 0x11F7, 5 }, - { 0x11FC, 5 }, - { 0x1201, 5 }, - { 0x1206, 16 }, - { 0x1216, 8 }, - { 0x121E, 4 }, - { 0x1222, 10 }, - { 0x122C, 10 }, - { 0x1236, 8 }, - { 0x123E, 20 }, - { 0x1252, 20 }, - { 0x1266, 4 }, - { 0x126A, 4 }, - { 0x126E, 1 }, + { 0x11F2, 1 }, + { 0x11F3, 5 }, + { 0x11F8, 5 }, + { 0x11FD, 5 }, + { 0x1202, 5 }, + { 0x1207, 16 }, + { 0x1217, 8 }, + { 0x121F, 4 }, + { 0x1223, 10 }, + { 0x122D, 10 }, + { 0x1237, 8 }, + { 0x123F, 20 }, + { 0x1253, 20 }, + { 0x1267, 4 }, + { 0x126B, 4 }, { 0x126F, 1 }, - { 0x1270, 4 }, - { 0x1274, 1 }, + { 0x1270, 1 }, + { 0x1271, 4 }, { 0x1275, 1 }, { 0x1276, 1 }, - { 0x1277, 14 }, - { 0x1285, 7 }, - { 0x128C, 14 }, - { 0x129A, 5 }, - { 0x129F, 3 }, - { 0x12A2, 5 }, - { 0x12A7, 4 }, - { 0x12AB, 1 }, + { 0x1277, 1 }, + { 0x1278, 14 }, + { 0x1286, 7 }, + { 0x128D, 14 }, + { 0x129B, 5 }, + { 0x12A0, 3 }, + { 0x12A3, 5 }, + { 0x12A8, 4 }, { 0x12AC, 1 }, - { 0x12AD, 10 }, - { 0x12B7, 10 }, - { 0x12C1, 6 }, - { 0x12C7, 6 }, - { 0x12CD, 1 }, + { 0x12AD, 1 }, + { 0x12AE, 10 }, + { 0x12B8, 10 }, + { 0x12C2, 6 }, + { 0x12C8, 6 }, { 0x12CE, 1 }, - { 0x12CF, 10 }, - { 0x12D9, 10 }, - { 0x12E3, 6 }, - { 0x12E9, 10 }, - { 0x12F3, 10 }, - { 0x12FD, 10 }, - { 0x1307, 1 }, + { 0x12CF, 1 }, + { 0x12D0, 10 }, + { 0x12DA, 10 }, + { 0x12E4, 6 }, + { 0x12EA, 10 }, + { 0x12F4, 10 }, + { 0x12FE, 10 }, { 0x1308, 1 }, { 0x1309, 1 }, { 0x130A, 1 }, @@ -1282,471 +1281,471 @@ const ZydisEncoderLookupEntry encoder_instruction_lookup[] = { 0x130C, 1 }, { 0x130D, 1 }, { 0x130E, 1 }, - { 0x130F, 10 }, - { 0x1319, 10 }, - { 0x1323, 3 }, - { 0x1326, 10 }, - { 0x1330, 13 }, - { 0x133D, 10 }, - { 0x1347, 10 }, - { 0x1351, 3 }, - { 0x1354, 3 }, - { 0x1357, 10 }, - { 0x1361, 10 }, - { 0x136B, 10 }, - { 0x1375, 10 }, - { 0x137F, 10 }, - { 0x1389, 4 }, - { 0x138D, 9 }, - { 0x1396, 4 }, - { 0x139A, 9 }, - { 0x13A3, 9 }, - { 0x13AC, 9 }, - { 0x13B5, 10 }, - { 0x13BF, 10 }, - { 0x13C9, 4 }, - { 0x13CD, 6 }, - { 0x13D3, 9 }, - { 0x13DC, 9 }, - { 0x13E5, 6 }, - { 0x13EB, 4 }, - { 0x13EF, 4 }, - { 0x13F3, 13 }, - { 0x1400, 17 }, - { 0x1411, 3 }, - { 0x1414, 3 }, - { 0x1417, 14 }, - { 0x1425, 13 }, - { 0x1432, 10 }, - { 0x143C, 8 }, - { 0x1444, 6 }, - { 0x144A, 9 }, - { 0x1453, 10 }, - { 0x145D, 13 }, - { 0x146A, 10 }, - { 0x1474, 10 }, - { 0x147E, 2 }, - { 0x1480, 4 }, - { 0x1484, 10 }, - { 0x148E, 13 }, - { 0x149B, 10 }, - { 0x14A5, 10 }, - { 0x14AF, 2 }, - { 0x14B1, 2 }, - { 0x14B3, 3 }, - { 0x14B6, 6 }, - { 0x14BC, 6 }, - { 0x14C2, 9 }, - { 0x14CB, 6 }, - { 0x14D1, 6 }, - { 0x14D7, 6 }, - { 0x14DD, 2 }, - { 0x14DF, 2 }, - { 0x14E1, 6 }, - { 0x14E7, 6 }, - { 0x14ED, 6 }, - { 0x14F3, 6 }, - { 0x14F9, 2 }, - { 0x14FB, 2 }, - { 0x14FD, 2 }, - { 0x14FF, 2 }, - { 0x1501, 2 }, - { 0x1503, 2 }, - { 0x1505, 6 }, - { 0x150B, 6 }, - { 0x1511, 4 }, - { 0x1515, 4 }, - { 0x1519, 4 }, - { 0x151D, 4 }, - { 0x1521, 10 }, - { 0x152B, 10 }, - { 0x1535, 4 }, - { 0x1539, 4 }, - { 0x153D, 10 }, - { 0x1547, 10 }, - { 0x1551, 4 }, - { 0x1555, 4 }, - { 0x1559, 4 }, - { 0x155D, 4 }, - { 0x1561, 4 }, - { 0x1565, 4 }, - { 0x1569, 2 }, - { 0x156B, 2 }, - { 0x156D, 6 }, - { 0x1573, 8 }, - { 0x157B, 3 }, - { 0x157E, 6 }, - { 0x1584, 6 }, - { 0x158A, 6 }, - { 0x1590, 6 }, - { 0x1596, 6 }, - { 0x159C, 6 }, - { 0x15A2, 8 }, - { 0x15AA, 8 }, - { 0x15B2, 20 }, - { 0x15C6, 20 }, - { 0x15DA, 10 }, - { 0x15E4, 6 }, - { 0x15EA, 10 }, - { 0x15F4, 6 }, - { 0x15FA, 6 }, - { 0x1600, 6 }, - { 0x1606, 6 }, - { 0x160C, 6 }, - { 0x1612, 6 }, - { 0x1618, 6 }, - { 0x161E, 6 }, - { 0x1624, 6 }, - { 0x162A, 6 }, - { 0x1630, 6 }, - { 0x1636, 4 }, - { 0x163A, 8 }, - { 0x1642, 4 }, - { 0x1646, 6 }, - { 0x164C, 6 }, - { 0x1652, 6 }, - { 0x1658, 5 }, - { 0x165D, 5 }, - { 0x1662, 2 }, - { 0x1664, 2 }, - { 0x1666, 2 }, - { 0x1668, 4 }, - { 0x166C, 2 }, - { 0x166E, 4 }, - { 0x1672, 2 }, - { 0x1674, 2 }, - { 0x1676, 2 }, - { 0x1678, 2 }, - { 0x167A, 2 }, - { 0x167C, 2 }, - { 0x167E, 4 }, - { 0x1682, 2 }, - { 0x1684, 2 }, - { 0x1686, 2 }, - { 0x1688, 2 }, - { 0x168A, 4 }, - { 0x168E, 2 }, - { 0x1690, 4 }, - { 0x1694, 4 }, - { 0x1698, 2 }, - { 0x169A, 4 }, - { 0x169E, 8 }, - { 0x16A6, 4 }, - { 0x16AA, 4 }, - { 0x16AE, 6 }, - { 0x16B4, 6 }, - { 0x16BA, 2 }, - { 0x16BC, 2 }, - { 0x16BE, 2 }, - { 0x16C0, 2 }, - { 0x16C2, 2 }, - { 0x16C4, 2 }, - { 0x16C6, 2 }, - { 0x16C8, 2 }, - { 0x16CA, 2 }, - { 0x16CC, 2 }, - { 0x16CE, 2 }, - { 0x16D0, 2 }, - { 0x16D2, 3 }, - { 0x16D5, 3 }, - { 0x16D8, 10 }, - { 0x16E2, 10 }, - { 0x16EC, 10 }, - { 0x16F6, 10 }, - { 0x1700, 4 }, - { 0x1704, 4 }, - { 0x1708, 10 }, - { 0x1712, 13 }, - { 0x171F, 6 }, - { 0x1725, 10 }, - { 0x172F, 10 }, - { 0x1739, 13 }, - { 0x1746, 6 }, - { 0x174C, 10 }, - { 0x1756, 10 }, - { 0x1760, 13 }, - { 0x176D, 6 }, - { 0x1773, 10 }, - { 0x177D, 10 }, - { 0x1787, 13 }, - { 0x1794, 6 }, - { 0x179A, 10 }, - { 0x17A4, 3 }, - { 0x17A7, 3 }, - { 0x17AA, 6 }, - { 0x17B0, 6 }, - { 0x17B6, 3 }, - { 0x17B9, 3 }, - { 0x17BC, 3 }, - { 0x17BF, 3 }, - { 0x17C2, 2 }, - { 0x17C4, 3 }, - { 0x17C7, 6 }, - { 0x17CD, 6 }, - { 0x17D3, 6 }, - { 0x17D9, 6 }, - { 0x17DF, 6 }, - { 0x17E5, 6 }, - { 0x17EB, 6 }, - { 0x17F1, 6 }, - { 0x17F7, 6 }, - { 0x17FD, 10 }, - { 0x1807, 10 }, - { 0x1811, 10 }, - { 0x181B, 10 }, - { 0x1825, 10 }, - { 0x182F, 10 }, - { 0x1839, 6 }, - { 0x183F, 6 }, - { 0x1845, 6 }, - { 0x184B, 6 }, - { 0x1851, 6 }, - { 0x1857, 6 }, - { 0x185D, 3 }, - { 0x1860, 6 }, - { 0x1866, 10 }, - { 0x1870, 10 }, - { 0x187A, 10 }, - { 0x1884, 10 }, - { 0x188E, 10 }, - { 0x1898, 10 }, - { 0x18A2, 10 }, - { 0x18AC, 3 }, - { 0x18AF, 10 }, - { 0x18B9, 3 }, - { 0x18BC, 10 }, - { 0x18C6, 10 }, - { 0x18D0, 13 }, - { 0x18DD, 6 }, - { 0x18E3, 10 }, - { 0x18ED, 6 }, - { 0x18F3, 10 }, - { 0x18FD, 6 }, - { 0x1903, 6 }, - { 0x1909, 6 }, - { 0x190F, 6 }, - { 0x1915, 4 }, - { 0x1919, 9 }, - { 0x1922, 9 }, - { 0x192B, 4 }, - { 0x192F, 2 }, - { 0x1931, 2 }, - { 0x1933, 2 }, - { 0x1935, 2 }, - { 0x1937, 2 }, - { 0x1939, 2 }, - { 0x193B, 2 }, - { 0x193D, 2 }, - { 0x193F, 6 }, - { 0x1945, 6 }, - { 0x194B, 6 }, - { 0x1951, 6 }, - { 0x1957, 6 }, - { 0x195D, 6 }, - { 0x1963, 6 }, - { 0x1969, 6 }, - { 0x196F, 6 }, - { 0x1975, 6 }, - { 0x197B, 6 }, - { 0x1981, 6 }, - { 0x1987, 10 }, - { 0x1991, 3 }, - { 0x1994, 3 }, - { 0x1997, 4 }, - { 0x199B, 4 }, - { 0x199F, 3 }, - { 0x19A2, 3 }, - { 0x19A5, 4 }, - { 0x19A9, 4 }, - { 0x19AD, 4 }, - { 0x19B1, 4 }, - { 0x19B5, 4 }, - { 0x19B9, 4 }, - { 0x19BD, 6 }, - { 0x19C3, 6 }, - { 0x19C9, 6 }, - { 0x19CF, 6 }, - { 0x19D5, 6 }, - { 0x19DB, 6 }, - { 0x19E1, 4 }, - { 0x19E5, 4 }, - { 0x19E9, 6 }, - { 0x19EF, 6 }, - { 0x19F5, 6 }, - { 0x19FB, 6 }, - { 0x1A01, 6 }, - { 0x1A07, 6 }, - { 0x1A0D, 10 }, - { 0x1A17, 6 }, - { 0x1A1D, 13 }, - { 0x1A2A, 10 }, - { 0x1A34, 10 }, - { 0x1A3E, 4 }, - { 0x1A42, 4 }, - { 0x1A46, 4 }, - { 0x1A4A, 21 }, - { 0x1A5F, 8 }, - { 0x1A67, 18 }, - { 0x1A79, 13 }, - { 0x1A86, 10 }, - { 0x1A90, 6 }, - { 0x1A96, 18 }, - { 0x1AA8, 21 }, - { 0x1ABD, 12 }, - { 0x1AC9, 13 }, - { 0x1AD6, 6 }, - { 0x1ADC, 6 }, - { 0x1AE2, 18 }, - { 0x1AF4, 21 }, - { 0x1B09, 8 }, - { 0x1B11, 18 }, - { 0x1B23, 13 }, - { 0x1B30, 10 }, - { 0x1B3A, 6 }, - { 0x1B40, 18 }, - { 0x1B52, 10 }, - { 0x1B5C, 13 }, - { 0x1B69, 10 }, - { 0x1B73, 3 }, - { 0x1B76, 3 }, - { 0x1B79, 10 }, - { 0x1B83, 3 }, - { 0x1B86, 10 }, - { 0x1B90, 10 }, - { 0x1B9A, 10 }, - { 0x1BA4, 10 }, - { 0x1BAE, 6 }, - { 0x1BB4, 6 }, - { 0x1BBA, 4 }, - { 0x1BBE, 6 }, - { 0x1BC4, 9 }, - { 0x1BCD, 6 }, - { 0x1BD3, 6 }, - { 0x1BD9, 6 }, - { 0x1BDF, 6 }, - { 0x1BE5, 6 }, - { 0x1BEB, 6 }, - { 0x1BF1, 10 }, - { 0x1BFB, 10 }, - { 0x1C05, 10 }, - { 0x1C0F, 10 }, - { 0x1C19, 10 }, - { 0x1C23, 10 }, - { 0x1C2D, 10 }, - { 0x1C37, 10 }, - { 0x1C41, 4 }, - { 0x1C45, 9 }, - { 0x1C4E, 9 }, - { 0x1C57, 7 }, - { 0x1C5E, 7 }, - { 0x1C65, 3 }, - { 0x1C68, 3 }, - { 0x1C6B, 6 }, - { 0x1C71, 6 }, - { 0x1C77, 2 }, - { 0x1C79, 2 }, - { 0x1C7B, 3 }, - { 0x1C7E, 3 }, - { 0x1C81, 3 }, - { 0x1C84, 3 }, - { 0x1C87, 3 }, - { 0x1C8A, 6 }, - { 0x1C90, 4 }, - { 0x1C94, 2 }, - { 0x1C96, 2 }, - { 0x1C98, 7 }, - { 0x1C9F, 7 }, - { 0x1CA6, 7 }, - { 0x1CAD, 3 }, - { 0x1CB0, 3 }, - { 0x1CB3, 3 }, - { 0x1CB6, 3 }, - { 0x1CB9, 3 }, - { 0x1CBC, 7 }, - { 0x1CC3, 7 }, - { 0x1CCA, 7 }, - { 0x1CD1, 3 }, - { 0x1CD4, 3 }, - { 0x1CD7, 3 }, - { 0x1CDA, 4 }, - { 0x1CDE, 4 }, - { 0x1CE2, 2 }, - { 0x1CE4, 2 }, - { 0x1CE6, 6 }, - { 0x1CEC, 6 }, - { 0x1CF2, 2 }, - { 0x1CF4, 2 }, - { 0x1CF6, 3 }, - { 0x1CF9, 3 }, - { 0x1CFC, 3 }, - { 0x1CFF, 3 }, - { 0x1D02, 3 }, - { 0x1D05, 6 }, - { 0x1D0B, 4 }, - { 0x1D0F, 2 }, - { 0x1D11, 2 }, - { 0x1D13, 7 }, - { 0x1D1A, 7 }, - { 0x1D21, 7 }, - { 0x1D28, 3 }, - { 0x1D2B, 3 }, - { 0x1D2E, 3 }, - { 0x1D31, 3 }, - { 0x1D34, 4 }, - { 0x1D38, 4 }, - { 0x1D3C, 1 }, - { 0x1D3D, 2 }, - { 0x1D3F, 1 }, + { 0x130F, 1 }, + { 0x1310, 10 }, + { 0x131A, 10 }, + { 0x1324, 3 }, + { 0x1327, 10 }, + { 0x1331, 13 }, + { 0x133E, 10 }, + { 0x1348, 10 }, + { 0x1352, 3 }, + { 0x1355, 3 }, + { 0x1358, 10 }, + { 0x1362, 10 }, + { 0x136C, 10 }, + { 0x1376, 10 }, + { 0x1380, 10 }, + { 0x138A, 4 }, + { 0x138E, 9 }, + { 0x1397, 4 }, + { 0x139B, 9 }, + { 0x13A4, 9 }, + { 0x13AD, 9 }, + { 0x13B6, 10 }, + { 0x13C0, 10 }, + { 0x13CA, 4 }, + { 0x13CE, 6 }, + { 0x13D4, 9 }, + { 0x13DD, 9 }, + { 0x13E6, 6 }, + { 0x13EC, 4 }, + { 0x13F0, 4 }, + { 0x13F4, 13 }, + { 0x1401, 17 }, + { 0x1412, 3 }, + { 0x1415, 3 }, + { 0x1418, 14 }, + { 0x1426, 13 }, + { 0x1433, 10 }, + { 0x143D, 8 }, + { 0x1445, 6 }, + { 0x144B, 9 }, + { 0x1454, 10 }, + { 0x145E, 13 }, + { 0x146B, 10 }, + { 0x1475, 10 }, + { 0x147F, 2 }, + { 0x1481, 4 }, + { 0x1485, 10 }, + { 0x148F, 13 }, + { 0x149C, 10 }, + { 0x14A6, 10 }, + { 0x14B0, 2 }, + { 0x14B2, 2 }, + { 0x14B4, 3 }, + { 0x14B7, 6 }, + { 0x14BD, 6 }, + { 0x14C3, 9 }, + { 0x14CC, 6 }, + { 0x14D2, 6 }, + { 0x14D8, 6 }, + { 0x14DE, 2 }, + { 0x14E0, 2 }, + { 0x14E2, 6 }, + { 0x14E8, 6 }, + { 0x14EE, 6 }, + { 0x14F4, 6 }, + { 0x14FA, 2 }, + { 0x14FC, 2 }, + { 0x14FE, 2 }, + { 0x1500, 2 }, + { 0x1502, 2 }, + { 0x1504, 2 }, + { 0x1506, 6 }, + { 0x150C, 6 }, + { 0x1512, 4 }, + { 0x1516, 4 }, + { 0x151A, 4 }, + { 0x151E, 4 }, + { 0x1522, 10 }, + { 0x152C, 10 }, + { 0x1536, 4 }, + { 0x153A, 4 }, + { 0x153E, 10 }, + { 0x1548, 10 }, + { 0x1552, 4 }, + { 0x1556, 4 }, + { 0x155A, 4 }, + { 0x155E, 4 }, + { 0x1562, 4 }, + { 0x1566, 4 }, + { 0x156A, 2 }, + { 0x156C, 2 }, + { 0x156E, 6 }, + { 0x1574, 8 }, + { 0x157C, 3 }, + { 0x157F, 6 }, + { 0x1585, 6 }, + { 0x158B, 6 }, + { 0x1591, 6 }, + { 0x1597, 6 }, + { 0x159D, 6 }, + { 0x15A3, 8 }, + { 0x15AB, 8 }, + { 0x15B3, 20 }, + { 0x15C7, 20 }, + { 0x15DB, 10 }, + { 0x15E5, 6 }, + { 0x15EB, 10 }, + { 0x15F5, 6 }, + { 0x15FB, 6 }, + { 0x1601, 6 }, + { 0x1607, 6 }, + { 0x160D, 6 }, + { 0x1613, 6 }, + { 0x1619, 6 }, + { 0x161F, 6 }, + { 0x1625, 6 }, + { 0x162B, 6 }, + { 0x1631, 6 }, + { 0x1637, 4 }, + { 0x163B, 8 }, + { 0x1643, 4 }, + { 0x1647, 6 }, + { 0x164D, 6 }, + { 0x1653, 6 }, + { 0x1659, 5 }, + { 0x165E, 5 }, + { 0x1663, 2 }, + { 0x1665, 2 }, + { 0x1667, 2 }, + { 0x1669, 4 }, + { 0x166D, 2 }, + { 0x166F, 4 }, + { 0x1673, 2 }, + { 0x1675, 2 }, + { 0x1677, 2 }, + { 0x1679, 2 }, + { 0x167B, 2 }, + { 0x167D, 2 }, + { 0x167F, 4 }, + { 0x1683, 2 }, + { 0x1685, 2 }, + { 0x1687, 2 }, + { 0x1689, 2 }, + { 0x168B, 4 }, + { 0x168F, 2 }, + { 0x1691, 4 }, + { 0x1695, 4 }, + { 0x1699, 2 }, + { 0x169B, 4 }, + { 0x169F, 8 }, + { 0x16A7, 4 }, + { 0x16AB, 4 }, + { 0x16AF, 6 }, + { 0x16B5, 6 }, + { 0x16BB, 2 }, + { 0x16BD, 2 }, + { 0x16BF, 2 }, + { 0x16C1, 2 }, + { 0x16C3, 2 }, + { 0x16C5, 2 }, + { 0x16C7, 2 }, + { 0x16C9, 2 }, + { 0x16CB, 2 }, + { 0x16CD, 2 }, + { 0x16CF, 2 }, + { 0x16D1, 2 }, + { 0x16D3, 3 }, + { 0x16D6, 3 }, + { 0x16D9, 10 }, + { 0x16E3, 10 }, + { 0x16ED, 10 }, + { 0x16F7, 10 }, + { 0x1701, 4 }, + { 0x1705, 4 }, + { 0x1709, 10 }, + { 0x1713, 13 }, + { 0x1720, 6 }, + { 0x1726, 10 }, + { 0x1730, 10 }, + { 0x173A, 13 }, + { 0x1747, 6 }, + { 0x174D, 10 }, + { 0x1757, 10 }, + { 0x1761, 13 }, + { 0x176E, 6 }, + { 0x1774, 10 }, + { 0x177E, 10 }, + { 0x1788, 13 }, + { 0x1795, 6 }, + { 0x179B, 10 }, + { 0x17A5, 3 }, + { 0x17A8, 3 }, + { 0x17AB, 6 }, + { 0x17B1, 6 }, + { 0x17B7, 3 }, + { 0x17BA, 3 }, + { 0x17BD, 3 }, + { 0x17C0, 3 }, + { 0x17C3, 2 }, + { 0x17C5, 3 }, + { 0x17C8, 6 }, + { 0x17CE, 6 }, + { 0x17D4, 6 }, + { 0x17DA, 6 }, + { 0x17E0, 6 }, + { 0x17E6, 6 }, + { 0x17EC, 6 }, + { 0x17F2, 6 }, + { 0x17F8, 6 }, + { 0x17FE, 10 }, + { 0x1808, 10 }, + { 0x1812, 10 }, + { 0x181C, 10 }, + { 0x1826, 10 }, + { 0x1830, 10 }, + { 0x183A, 6 }, + { 0x1840, 6 }, + { 0x1846, 6 }, + { 0x184C, 6 }, + { 0x1852, 6 }, + { 0x1858, 6 }, + { 0x185E, 3 }, + { 0x1861, 6 }, + { 0x1867, 10 }, + { 0x1871, 10 }, + { 0x187B, 10 }, + { 0x1885, 10 }, + { 0x188F, 10 }, + { 0x1899, 10 }, + { 0x18A3, 10 }, + { 0x18AD, 3 }, + { 0x18B0, 10 }, + { 0x18BA, 3 }, + { 0x18BD, 10 }, + { 0x18C7, 10 }, + { 0x18D1, 13 }, + { 0x18DE, 6 }, + { 0x18E4, 10 }, + { 0x18EE, 6 }, + { 0x18F4, 10 }, + { 0x18FE, 6 }, + { 0x1904, 6 }, + { 0x190A, 6 }, + { 0x1910, 6 }, + { 0x1916, 4 }, + { 0x191A, 9 }, + { 0x1923, 9 }, + { 0x192C, 4 }, + { 0x1930, 2 }, + { 0x1932, 2 }, + { 0x1934, 2 }, + { 0x1936, 2 }, + { 0x1938, 2 }, + { 0x193A, 2 }, + { 0x193C, 2 }, + { 0x193E, 2 }, + { 0x1940, 6 }, + { 0x1946, 6 }, + { 0x194C, 6 }, + { 0x1952, 6 }, + { 0x1958, 6 }, + { 0x195E, 6 }, + { 0x1964, 6 }, + { 0x196A, 6 }, + { 0x1970, 6 }, + { 0x1976, 6 }, + { 0x197C, 6 }, + { 0x1982, 6 }, + { 0x1988, 10 }, + { 0x1992, 3 }, + { 0x1995, 3 }, + { 0x1998, 4 }, + { 0x199C, 4 }, + { 0x19A0, 3 }, + { 0x19A3, 3 }, + { 0x19A6, 4 }, + { 0x19AA, 4 }, + { 0x19AE, 4 }, + { 0x19B2, 4 }, + { 0x19B6, 4 }, + { 0x19BA, 4 }, + { 0x19BE, 6 }, + { 0x19C4, 6 }, + { 0x19CA, 6 }, + { 0x19D0, 6 }, + { 0x19D6, 6 }, + { 0x19DC, 6 }, + { 0x19E2, 4 }, + { 0x19E6, 4 }, + { 0x19EA, 6 }, + { 0x19F0, 6 }, + { 0x19F6, 6 }, + { 0x19FC, 6 }, + { 0x1A02, 6 }, + { 0x1A08, 6 }, + { 0x1A0E, 10 }, + { 0x1A18, 6 }, + { 0x1A1E, 13 }, + { 0x1A2B, 10 }, + { 0x1A35, 10 }, + { 0x1A3F, 4 }, + { 0x1A43, 4 }, + { 0x1A47, 4 }, + { 0x1A4B, 21 }, + { 0x1A60, 8 }, + { 0x1A68, 18 }, + { 0x1A7A, 13 }, + { 0x1A87, 10 }, + { 0x1A91, 6 }, + { 0x1A97, 18 }, + { 0x1AA9, 21 }, + { 0x1ABE, 12 }, + { 0x1ACA, 13 }, + { 0x1AD7, 6 }, + { 0x1ADD, 6 }, + { 0x1AE3, 18 }, + { 0x1AF5, 21 }, + { 0x1B0A, 8 }, + { 0x1B12, 18 }, + { 0x1B24, 13 }, + { 0x1B31, 10 }, + { 0x1B3B, 6 }, + { 0x1B41, 18 }, + { 0x1B53, 10 }, + { 0x1B5D, 13 }, + { 0x1B6A, 10 }, + { 0x1B74, 3 }, + { 0x1B77, 3 }, + { 0x1B7A, 10 }, + { 0x1B84, 3 }, + { 0x1B87, 10 }, + { 0x1B91, 10 }, + { 0x1B9B, 10 }, + { 0x1BA5, 10 }, + { 0x1BAF, 6 }, + { 0x1BB5, 6 }, + { 0x1BBB, 4 }, + { 0x1BBF, 6 }, + { 0x1BC5, 9 }, + { 0x1BCE, 6 }, + { 0x1BD4, 6 }, + { 0x1BDA, 6 }, + { 0x1BE0, 6 }, + { 0x1BE6, 6 }, + { 0x1BEC, 6 }, + { 0x1BF2, 10 }, + { 0x1BFC, 10 }, + { 0x1C06, 10 }, + { 0x1C10, 10 }, + { 0x1C1A, 10 }, + { 0x1C24, 10 }, + { 0x1C2E, 10 }, + { 0x1C38, 10 }, + { 0x1C42, 4 }, + { 0x1C46, 9 }, + { 0x1C4F, 9 }, + { 0x1C58, 7 }, + { 0x1C5F, 7 }, + { 0x1C66, 3 }, + { 0x1C69, 3 }, + { 0x1C6C, 6 }, + { 0x1C72, 6 }, + { 0x1C78, 2 }, + { 0x1C7A, 2 }, + { 0x1C7C, 3 }, + { 0x1C7F, 3 }, + { 0x1C82, 3 }, + { 0x1C85, 3 }, + { 0x1C88, 3 }, + { 0x1C8B, 6 }, + { 0x1C91, 4 }, + { 0x1C95, 2 }, + { 0x1C97, 2 }, + { 0x1C99, 7 }, + { 0x1CA0, 7 }, + { 0x1CA7, 7 }, + { 0x1CAE, 3 }, + { 0x1CB1, 3 }, + { 0x1CB4, 3 }, + { 0x1CB7, 3 }, + { 0x1CBA, 3 }, + { 0x1CBD, 7 }, + { 0x1CC4, 7 }, + { 0x1CCB, 7 }, + { 0x1CD2, 3 }, + { 0x1CD5, 3 }, + { 0x1CD8, 3 }, + { 0x1CDB, 4 }, + { 0x1CDF, 4 }, + { 0x1CE3, 2 }, + { 0x1CE5, 2 }, + { 0x1CE7, 6 }, + { 0x1CED, 6 }, + { 0x1CF3, 2 }, + { 0x1CF5, 2 }, + { 0x1CF7, 3 }, + { 0x1CFA, 3 }, + { 0x1CFD, 3 }, + { 0x1D00, 3 }, + { 0x1D03, 3 }, + { 0x1D06, 6 }, + { 0x1D0C, 4 }, + { 0x1D10, 2 }, + { 0x1D12, 2 }, + { 0x1D14, 7 }, + { 0x1D1B, 7 }, + { 0x1D22, 7 }, + { 0x1D29, 3 }, + { 0x1D2C, 3 }, + { 0x1D2F, 3 }, + { 0x1D32, 3 }, + { 0x1D35, 4 }, + { 0x1D39, 4 }, + { 0x1D3D, 1 }, + { 0x1D3E, 2 }, { 0x1D40, 1 }, { 0x1D41, 1 }, { 0x1D42, 1 }, { 0x1D43, 1 }, - { 0x1D44, 2 }, - { 0x1D46, 1 }, + { 0x1D44, 1 }, + { 0x1D45, 2 }, { 0x1D47, 1 }, - { 0x1D48, 3 }, - { 0x1D4B, 3 }, - { 0x1D4E, 1 }, + { 0x1D48, 1 }, + { 0x1D49, 3 }, + { 0x1D4C, 3 }, { 0x1D4F, 1 }, { 0x1D50, 1 }, - { 0x1D51, 4 }, - { 0x1D55, 4 }, - { 0x1D59, 4 }, - { 0x1D5D, 4 }, - { 0x1D61, 10 }, - { 0x1D6B, 10 }, - { 0x1D75, 2 }, - { 0x1D77, 2 }, - { 0x1D79, 2 }, - { 0x1D7B, 4 }, - { 0x1D7F, 4 }, - { 0x1D83, 11 }, - { 0x1D8E, 7 }, - { 0x1D95, 11 }, - { 0x1DA0, 5 }, - { 0x1DA5, 3 }, - { 0x1DA8, 5 }, - { 0x1DAD, 1 }, - { 0x1DAE, 14 }, - { 0x1DBC, 7 }, - { 0x1DC3, 14 }, - { 0x1DD1, 3 }, - { 0x1DD4, 3 }, - { 0x1DD7, 5 }, - { 0x1DDC, 3 }, - { 0x1DDF, 5 }, - { 0x1DE4, 4 }, - { 0x1DE8, 4 }, - { 0x1DEC, 5 }, - { 0x1DF1, 3 }, - { 0x1DF4, 5 }, - { 0x1DF9, 10 }, - { 0x1E03, 10 }, - { 0x1E0D, 10 }, - { 0x1E17, 10 }, - { 0x1E21, 10 }, - { 0x1E2B, 10 }, - { 0x1E35, 1 }, + { 0x1D51, 1 }, + { 0x1D52, 4 }, + { 0x1D56, 4 }, + { 0x1D5A, 4 }, + { 0x1D5E, 4 }, + { 0x1D62, 10 }, + { 0x1D6C, 10 }, + { 0x1D76, 2 }, + { 0x1D78, 2 }, + { 0x1D7A, 2 }, + { 0x1D7C, 4 }, + { 0x1D80, 4 }, + { 0x1D84, 11 }, + { 0x1D8F, 7 }, + { 0x1D96, 11 }, + { 0x1DA1, 5 }, + { 0x1DA6, 3 }, + { 0x1DA9, 5 }, + { 0x1DAE, 1 }, + { 0x1DAF, 14 }, + { 0x1DBD, 7 }, + { 0x1DC4, 14 }, + { 0x1DD2, 3 }, + { 0x1DD5, 3 }, + { 0x1DD8, 5 }, + { 0x1DDD, 3 }, + { 0x1DE0, 5 }, + { 0x1DE5, 4 }, + { 0x1DE9, 4 }, + { 0x1DED, 5 }, + { 0x1DF2, 3 }, + { 0x1DF5, 5 }, + { 0x1DFA, 10 }, + { 0x1E04, 10 }, + { 0x1E0E, 10 }, + { 0x1E18, 10 }, + { 0x1E22, 10 }, + { 0x1E2C, 10 }, { 0x1E36, 1 }, { 0x1E37, 1 }, { 0x1E38, 1 }, @@ -1760,10 +1759,10 @@ const ZydisEncoderLookupEntry encoder_instruction_lookup[] = { 0x1E40, 1 }, { 0x1E41, 1 }, { 0x1E42, 1 }, - { 0x1E43, 4 }, - { 0x1E47, 1 }, - { 0x1E48, 6 }, - { 0x1E4E, 1 }, + { 0x1E43, 1 }, + { 0x1E44, 4 }, + { 0x1E48, 1 }, + { 0x1E49, 6 }, { 0x1E4F, 1 }, { 0x1E50, 1 }, { 0x1E51, 1 }, @@ -1771,10 +1770,10 @@ const ZydisEncoderLookupEntry encoder_instruction_lookup[] = { 0x1E53, 1 }, { 0x1E54, 1 }, { 0x1E55, 1 }, - { 0x1E56, 18 }, - { 0x1E68, 2 }, - { 0x1E6A, 2 }, - { 0x1E6C, 1 }, + { 0x1E56, 1 }, + { 0x1E57, 18 }, + { 0x1E69, 2 }, + { 0x1E6B, 2 }, { 0x1E6D, 1 }, { 0x1E6E, 1 }, { 0x1E6F, 1 }, @@ -1790,9 +1789,10 @@ const ZydisEncoderLookupEntry encoder_instruction_lookup[] = { 0x1E79, 1 }, { 0x1E7A, 1 }, { 0x1E7B, 1 }, - { 0x1E7C, 2 }, - { 0x1E7E, 1 }, + { 0x1E7C, 1 }, + { 0x1E7D, 2 }, { 0x1E7F, 1 }, + { 0x1E80, 1 }, }; const ZydisEncodableInstruction encoder_instructions[] = @@ -3781,22 +3781,23 @@ const ZydisEncodableInstruction encoder_instructions[] = { 0x0728, 0x0022, 0x2E, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0729, 0x0002, 0x2E, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x072A, 0x0022, 0x2E, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x072B, 0x0002, 0xFF, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x072C, 0x0022, 0xFF, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x072D, 0x0002, 0xB9, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x072E, 0x0022, 0xB9, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x072F, 0x0000, 0x0B, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0730, 0x0000, 0x01, 0xEC, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0731, 0x0001, 0xAE, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0732, 0x0001, 0xAE, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0733, 0x0002, 0x15, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0734, 0x0022, 0x15, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0735, 0x0002, 0x15, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0736, 0x0022, 0x15, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0737, 0x0002, 0x14, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0738, 0x0022, 0x14, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0739, 0x0002, 0x14, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x073A, 0x0022, 0x14, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x072B, 0x0000, 0xFF, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x072C, 0x0002, 0xFF, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x072D, 0x0022, 0xFF, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x072E, 0x0002, 0xB9, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x072F, 0x0022, 0xB9, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0730, 0x0000, 0x0B, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0731, 0x0000, 0x01, 0xEC, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0732, 0x0001, 0xAE, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0733, 0x0001, 0xAE, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0734, 0x0002, 0x15, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0735, 0x0022, 0x15, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0736, 0x0002, 0x15, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0737, 0x0022, 0x15, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0738, 0x0002, 0x14, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0739, 0x0022, 0x14, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x073A, 0x0002, 0x14, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x073B, 0x0022, 0x14, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0000, 0x0204, 0x9A, 0x00, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_512, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0001, 0x0204, 0x9B, 0x00, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0002, 0x0204, 0xAA, 0x00, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_512, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, @@ -4841,10 +4842,10 @@ const ZydisEncodableInstruction encoder_instructions[] = { 0x0182, 0x0604, 0x40, 0xC0, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F3A, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0183, 0x0684, 0x40, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F3A, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0184, 0x0684, 0x40, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F3A, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x073B, 0x0001, 0x00, 0xE0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x073C, 0x0009, 0x00, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x073D, 0x0001, 0x00, 0xE8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x073E, 0x0009, 0x00, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x073C, 0x0001, 0x00, 0xE0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x073D, 0x0009, 0x00, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x073E, 0x0001, 0x00, 0xE8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x073F, 0x0009, 0x00, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0043, 0x0003, 0xC8, 0xC0, ZYDIS_INSTRUCTION_ENCODING_MVEX, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0044, 0x0003, 0xC8, 0xC0, ZYDIS_INSTRUCTION_ENCODING_MVEX, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0045, 0x0083, 0xC8, 0x00, ZYDIS_INSTRUCTION_ENCODING_MVEX, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, @@ -6145,9 +6146,9 @@ const ZydisEncodableInstruction encoder_instructions[] = { 0x05FE, 0x0004, 0x5F, 0xC0, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x05FF, 0x0004, 0x5F, 0xC0, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0600, 0x0204, 0x5F, 0x00, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x073F, 0x0000, 0x01, 0xC1, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0740, 0x0009, 0xC7, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0741, 0x0000, 0x01, 0xD4, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0740, 0x0000, 0x01, 0xC1, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0741, 0x0009, 0xC7, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0742, 0x0000, 0x01, 0xD4, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x030D, 0x0003, 0x5D, 0xC0, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x030E, 0x0003, 0x5D, 0xC0, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x030F, 0x0083, 0x5D, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, @@ -6190,9 +6191,9 @@ const ZydisEncodableInstruction encoder_instructions[] = { 0x061C, 0x0004, 0x5D, 0xC0, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x061D, 0x0004, 0x5D, 0xC0, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x061E, 0x0204, 0x5D, 0x00, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0742, 0x0000, 0x01, 0xC2, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0743, 0x0001, 0x01, 0xDA, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0744, 0x0000, 0x01, 0xD9, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0743, 0x0000, 0x01, 0xC2, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0744, 0x0001, 0x01, 0xDA, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0745, 0x0000, 0x01, 0xD9, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x031B, 0x0022, 0x28, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x031C, 0x0022, 0x28, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x031F, 0x000A, 0x29, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, @@ -6515,15 +6516,15 @@ const ZydisEncodableInstruction encoder_instructions[] = { 0x0384, 0x0604, 0x42, 0xC0, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F3A, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0385, 0x0684, 0x42, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F3A, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0386, 0x0684, 0x42, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F3A, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0745, 0x0009, 0xC7, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0746, 0x0009, 0xC7, 0x38, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0747, 0x0002, 0x78, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0748, 0x000A, 0x78, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0749, 0x0002, 0x78, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x074A, 0x000A, 0x78, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x074B, 0x0000, 0x01, 0xC3, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x074C, 0x0001, 0x01, 0xD8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x074D, 0x0001, 0x01, 0xDB, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0746, 0x0009, 0xC7, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0747, 0x0009, 0xC7, 0x38, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0748, 0x0002, 0x78, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0749, 0x000A, 0x78, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x074A, 0x0002, 0x78, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x074B, 0x000A, 0x78, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x074C, 0x0000, 0x01, 0xC3, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x074D, 0x0001, 0x01, 0xD8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x074E, 0x0001, 0x01, 0xDB, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0387, 0x0003, 0x59, 0xC0, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0388, 0x0003, 0x59, 0xC0, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0389, 0x0083, 0x59, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, @@ -6572,12 +6573,12 @@ const ZydisEncodableInstruction encoder_instructions[] = { 0x06FA, 0x0004, 0x59, 0xC0, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x06FB, 0x0004, 0x59, 0xC0, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x06FC, 0x0204, 0x59, 0x00, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x074E, 0x0002, 0x79, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x074F, 0x0022, 0x79, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0750, 0x0002, 0x79, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0751, 0x0022, 0x79, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0752, 0x0000, 0x01, 0xC4, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0753, 0x0009, 0xC7, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x074F, 0x0002, 0x79, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0750, 0x0022, 0x79, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0751, 0x0002, 0x79, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0752, 0x0022, 0x79, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0753, 0x0000, 0x01, 0xC4, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0754, 0x0009, 0xC7, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0393, 0x0003, 0x56, 0xC0, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0394, 0x0003, 0x56, 0xC0, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x0395, 0x0083, 0x56, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, @@ -9532,78 +9533,78 @@ const ZydisEncodableInstruction encoder_instructions[] = { 0x0E3B, 0x0204, 0x57, 0x00, ZYDIS_INSTRUCTION_ENCODING_EVEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_512, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x069C, 0x0000, 0x77, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_256, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, { 0x069D, 0x0000, 0x77, 0x00, ZYDIS_INSTRUCTION_ENCODING_VEX, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_128, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0754, 0x0000, 0x09, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0755, 0x0001, 0xAE, 0xD0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0756, 0x0001, 0xAE, 0xD8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0757, 0x0000, 0x30, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0758, 0x0000, 0x01, 0xC6, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0759, 0x0000, 0x01, 0xC6, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x075A, 0x0000, 0x01, 0xEF, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x075B, 0x000A, 0xF6, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x075C, 0x000A, 0xF6, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x075D, 0x000A, 0xF5, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x075E, 0x000A, 0xF5, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x075F, 0x0019, 0xC6, 0xF8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0760, 0x0002, 0xC0, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0761, 0x000A, 0xC0, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0762, 0x0002, 0xC1, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0763, 0x000A, 0xC1, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0764, 0x0019, 0xC7, 0xF8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_OSZ, ZYAN_FALSE }, - { 0x0769, 0x0002, 0x90, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x076A, 0x0002, 0x91, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0765, 0x0002, 0x86, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0766, 0x000A, 0x86, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0767, 0x0002, 0x87, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0768, 0x000A, 0x87, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x076B, 0x0000, 0xA7, 0xD0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x076C, 0x0000, 0xA7, 0xE0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x076D, 0x0000, 0xA7, 0xD8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x076E, 0x0000, 0xA7, 0xC8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x076F, 0x0000, 0xA7, 0xE8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x0770, 0x0000, 0x01, 0xD5, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0771, 0x0000, 0x01, 0xD0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0772, 0x0000, 0xD7, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x0773, 0x0002, 0x30, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0774, 0x000A, 0x30, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0775, 0x0002, 0x31, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0776, 0x000A, 0x31, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0777, 0x0002, 0x32, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0778, 0x0022, 0x32, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0779, 0x0002, 0x33, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x077A, 0x0022, 0x33, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x077B, 0x0062, 0x34, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x077D, 0x0062, 0x80, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x077E, 0x006A, 0x80, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0781, 0x0062, 0x82, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0782, 0x006A, 0x82, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0783, 0x0062, 0x83, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0784, 0x006A, 0x83, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x077C, 0x0062, 0x35, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x077F, 0x0062, 0x81, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0780, 0x006A, 0x81, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0785, 0x0002, 0x57, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0786, 0x0022, 0x57, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0787, 0x0002, 0x57, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0788, 0x0022, 0x57, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0789, 0x0000, 0x01, 0xE9, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x078A, 0x0009, 0xAE, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x078B, 0x0009, 0xAE, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x078C, 0x0009, 0xC7, 0x18, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x078D, 0x0009, 0xC7, 0x18, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x078E, 0x0009, 0xAE, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x078F, 0x0009, 0xAE, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0790, 0x0009, 0xC7, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0791, 0x0009, 0xC7, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0792, 0x0009, 0xAE, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0793, 0x0009, 0xAE, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0794, 0x0009, 0xC7, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0795, 0x0009, 0xC7, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0796, 0x0000, 0x01, 0xD1, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x0797, 0x0000, 0xA6, 0xC8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x0798, 0x0000, 0xA6, 0xD0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x0799, 0x0000, 0xA7, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x079A, 0x0000, 0xA7, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { 0x079B, 0x0000, 0x01, 0xE8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { 0x079C, 0x0000, 0x01, 0xD6, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0755, 0x0000, 0x09, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0756, 0x0001, 0xAE, 0xD0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0757, 0x0001, 0xAE, 0xD8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0758, 0x0000, 0x30, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0759, 0x0000, 0x01, 0xC6, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x075A, 0x0000, 0x01, 0xC6, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x075B, 0x0000, 0x01, 0xEF, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x075C, 0x000A, 0xF6, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x075D, 0x000A, 0xF6, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x075E, 0x000A, 0xF5, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x075F, 0x000A, 0xF5, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F38, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0760, 0x0019, 0xC6, 0xF8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0761, 0x0002, 0xC0, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0762, 0x000A, 0xC0, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0763, 0x0002, 0xC1, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0764, 0x000A, 0xC1, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0765, 0x0019, 0xC7, 0xF8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_OSZ, ZYAN_FALSE }, + { 0x076A, 0x0002, 0x90, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x076B, 0x0002, 0x91, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0766, 0x0002, 0x86, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0767, 0x000A, 0x86, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0768, 0x0002, 0x87, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0769, 0x000A, 0x87, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x076C, 0x0000, 0xA7, 0xD0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x076D, 0x0000, 0xA7, 0xE0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x076E, 0x0000, 0xA7, 0xD8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x076F, 0x0000, 0xA7, 0xC8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x0770, 0x0000, 0xA7, 0xE8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x0771, 0x0000, 0x01, 0xD5, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0772, 0x0000, 0x01, 0xD0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0773, 0x0000, 0xD7, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x0774, 0x0002, 0x30, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0775, 0x000A, 0x30, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0776, 0x0002, 0x31, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0777, 0x000A, 0x31, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0778, 0x0002, 0x32, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0779, 0x0022, 0x32, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x077A, 0x0002, 0x33, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x077B, 0x0022, 0x33, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x077C, 0x0062, 0x34, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x077E, 0x0062, 0x80, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x077F, 0x006A, 0x80, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0782, 0x0062, 0x82, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0783, 0x006A, 0x82, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0784, 0x0062, 0x83, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0785, 0x006A, 0x83, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x077D, 0x0062, 0x35, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0780, 0x0062, 0x81, 0xF0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0781, 0x006A, 0x81, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_DEFAULT, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0786, 0x0002, 0x57, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0787, 0x0022, 0x57, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_66, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0788, 0x0002, 0x57, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0789, 0x0022, 0x57, 0x00, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x078A, 0x0000, 0x01, 0xE9, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x078B, 0x0009, 0xAE, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x078C, 0x0009, 0xAE, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x078D, 0x0009, 0xC7, 0x18, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x078E, 0x0009, 0xC7, 0x18, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x078F, 0x0009, 0xAE, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0790, 0x0009, 0xAE, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0791, 0x0009, 0xC7, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0792, 0x0009, 0xC7, 0x20, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0793, 0x0009, 0xAE, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0794, 0x0009, 0xAE, 0x30, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0795, 0x0009, 0xC7, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0796, 0x0009, 0xC7, 0x28, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_64, ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_TRUE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0797, 0x0000, 0x01, 0xD1, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x0798, 0x0000, 0xA6, 0xC8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x0799, 0x0000, 0xA6, 0xD0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x079A, 0x0000, 0xA7, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x079B, 0x0000, 0xA7, 0xC0, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F3, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, + { 0x079C, 0x0000, 0x01, 0xE8, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_F2, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, + { 0x079D, 0x0000, 0x01, 0xD6, ZYDIS_INSTRUCTION_ENCODING_LEGACY, ZYDIS_OPCODE_MAP_0F, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_WIDTH_16 | ZYDIS_WIDTH_32 | ZYDIS_WIDTH_64, ZYDIS_MANDATORY_PREFIX_NONE, ZYAN_FALSE, ZYDIS_VECTOR_LENGTH_INVALID, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, }; diff --git a/src/Generated/GetRelInfo.inc b/src/Generated/GetRelInfo.inc index 20556267..a7748f81 100644 --- a/src/Generated/GetRelInfo.inc +++ b/src/Generated/GetRelInfo.inc @@ -2,15 +2,15 @@ const ZydisEncoderRelInfo *ZydisGetRelInfo(ZydisMnemonic mnemonic) { static const ZydisEncoderRelInfo info_lookup[9] = { - { { { 0, 3, 6 }, { 0, 4, 5 }, { 0, 0, 5 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { { { 2, 4, 7 }, { 2, 5, 6 }, { 2, 0, 6 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_TRUE }, - { { { 2, 0, 0 }, { 3, 0, 0 }, { 0, 0, 0 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { { { 3, 0, 0 }, { 2, 0, 0 }, { 3, 0, 0 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { { { 0, 0, 0 }, { 0, 0, 0 }, { 5, 0, 7 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { { { 2, 3, 6 }, { 2, 4, 5 }, { 2, 0, 5 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { { { 0, 0, 0 }, { 0, 0, 0 }, { 2, 0, 0 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE }, - { { { 2, 0, 0 }, { 2, 0, 0 }, { 2, 0, 0 } }, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE }, - { { { 0, 4, 7 }, { 0, 5, 6 }, { 0, 5, 6 } }, ZYDIS_SIZE_HINT_OSZ, ZYAN_FALSE }, + { { { 0, 3, 6 }, { 0, 4, 5 }, { 0, 0, 5 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE, ZYAN_TRUE }, + { { { 2, 4, 7 }, { 2, 5, 6 }, { 2, 0, 6 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_TRUE, ZYAN_TRUE }, + { { { 2, 0, 0 }, { 3, 0, 0 }, { 0, 0, 0 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE, ZYAN_FALSE }, + { { { 3, 0, 0 }, { 2, 0, 0 }, { 3, 0, 0 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE, ZYAN_FALSE }, + { { { 0, 0, 0 }, { 0, 0, 0 }, { 5, 0, 7 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE, ZYAN_FALSE }, + { { { 2, 3, 6 }, { 2, 4, 5 }, { 2, 0, 5 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE, ZYAN_TRUE }, + { { { 0, 0, 0 }, { 0, 0, 0 }, { 2, 0, 0 } }, ZYDIS_SIZE_HINT_NONE, ZYAN_FALSE, ZYAN_FALSE }, + { { { 2, 0, 0 }, { 2, 0, 0 }, { 2, 0, 0 } }, ZYDIS_SIZE_HINT_ASZ, ZYAN_FALSE, ZYAN_FALSE }, + { { { 0, 4, 7 }, { 0, 5, 6 }, { 0, 5, 6 } }, ZYDIS_SIZE_HINT_OSZ, ZYAN_FALSE, ZYAN_FALSE }, }; switch (mnemonic) diff --git a/src/Register.c b/src/Register.c index 4ed0fc10..47244190 100644 --- a/src/Register.c +++ b/src/Register.c @@ -156,6 +156,52 @@ ZydisRegister ZydisRegisterGetLargestEnclosing(ZydisMachineMode mode, ZydisRegis return ZYDIS_REGISTER_NONE; } + if (mode > ZYDIS_MACHINE_MODE_MAX_VALUE) + { + return ZYDIS_REGISTER_NONE; + } + + const ZydisRegisterClass reg_class = REG_LOOKUP[reg].class; + + if ((reg_class == ZYDIS_REGCLASS_INVALID) || + ((reg_class == ZYDIS_REGCLASS_GPR64) && (mode != ZYDIS_MACHINE_MODE_LONG_64))) + { + return ZYDIS_REGISTER_NONE; + } + + static const ZydisRegister STATIC_MAPPING[ZYDIS_REGCLASS_MAX_VALUE + 1][3] = + { + /* 16 */ /* 32 */ /* 64 */ + [ZYDIS_REGCLASS_FLAGS] = { ZYDIS_REGISTER_FLAGS, ZYDIS_REGISTER_EFLAGS, ZYDIS_REGISTER_RFLAGS }, + [ZYDIS_REGCLASS_IP ] = { ZYDIS_REGISTER_IP , ZYDIS_REGISTER_EIP , ZYDIS_REGISTER_RIP }, + }; + ZYAN_ASSERT(reg_class < ZYAN_ARRAY_LENGTH(STATIC_MAPPING)); + + ZyanU8 mode_bits; + switch (mode) + { + case ZYDIS_MACHINE_MODE_LONG_64: + mode_bits = 2; + break; + case ZYDIS_MACHINE_MODE_LONG_COMPAT_32: + case ZYDIS_MACHINE_MODE_LEGACY_32: + mode_bits = 1; + break; + case ZYDIS_MACHINE_MODE_LONG_COMPAT_16: + case ZYDIS_MACHINE_MODE_LEGACY_16: + case ZYDIS_MACHINE_MODE_REAL_16: + mode_bits = 0; + break; + default: + ZYAN_UNREACHABLE; + } + + const ZydisRegister static_reg = STATIC_MAPPING[reg_class][mode_bits]; + if (static_reg != ZYDIS_REGISTER_NONE) + { + return static_reg; + } + static const ZyanU8 GPR8_MAPPING[20] = { /* AL */ 0, @@ -177,16 +223,9 @@ ZydisRegister ZydisRegisterGetLargestEnclosing(ZydisMachineMode mode, ZydisRegis /* R12B */ 12, /* R13B */ 13, /* R14B */ 14, - /* R15B */ 15, + /* R15B */ 15 }; - const ZydisRegisterClass reg_class = REG_LOOKUP[reg].class; - if ((reg_class == ZYDIS_REGCLASS_INVALID) || - ((reg_class == ZYDIS_REGCLASS_GPR64) && (mode != ZYDIS_MACHINE_MODE_LONG_64))) - { - return ZYDIS_REGISTER_NONE; - } - ZyanU8 reg_id = REG_LOOKUP[reg].id; switch (reg_class) { @@ -196,19 +235,16 @@ ZydisRegister ZydisRegisterGetLargestEnclosing(ZydisMachineMode mode, ZydisRegis case ZYDIS_REGCLASS_GPR16: case ZYDIS_REGCLASS_GPR32: case ZYDIS_REGCLASS_GPR64: - switch (mode) + switch (mode_bits) { - case ZYDIS_MACHINE_MODE_LONG_64: + case 2: return REG_CLASS_LOOKUP[ZYDIS_REGCLASS_GPR64].lo + reg_id; - case ZYDIS_MACHINE_MODE_LONG_COMPAT_32: - case ZYDIS_MACHINE_MODE_LEGACY_32: + case 1: return REG_CLASS_LOOKUP[ZYDIS_REGCLASS_GPR32].lo + reg_id; - case ZYDIS_MACHINE_MODE_LONG_COMPAT_16: - case ZYDIS_MACHINE_MODE_LEGACY_16: - case ZYDIS_MACHINE_MODE_REAL_16: + case 0: return REG_CLASS_LOOKUP[ZYDIS_REGCLASS_GPR16].lo + reg_id; default: - return ZYDIS_REGISTER_NONE; + ZYAN_UNREACHABLE; } case ZYDIS_REGCLASS_XMM: case ZYDIS_REGCLASS_YMM: @@ -219,7 +255,7 @@ ZydisRegister ZydisRegisterGetLargestEnclosing(ZydisMachineMode mode, ZydisRegis return REG_CLASS_LOOKUP[ZYDIS_REGCLASS_ZMM].lo + reg_id; #endif default: - return ZYDIS_REGISTER_NONE; + return reg; } } diff --git a/src/String.c b/src/String.c index f1ba2c2b..f7660c35 100644 --- a/src/String.c +++ b/src/String.c @@ -322,7 +322,7 @@ ZyanStatus ZydisStringAppendDecU(ZyanString* string, ZyanU64 value, ZyanU8 paddi ZYAN_CHECK(ZydisStringAppend(string, prefix)); } -#if defined(ZYAN_X64) || defined(ZYAN_AARCH64) || defined(ZYAN_PPC64) || defined(ZYAN_RISCV64) +#if defined(ZYAN_X64) || defined(ZYAN_AARCH64) || defined(ZYAN_PPC64) || defined(ZYAN_RISCV64) || defined(ZYAN_LOONGARCH) ZYAN_CHECK(ZydisStringAppendDecU64(string, value, padding_length)); #else if (value & 0xFFFFFFFF00000000) @@ -348,7 +348,7 @@ ZyanStatus ZydisStringAppendHexU(ZyanString* string, ZyanU64 value, ZyanU8 paddi ZYAN_CHECK(ZydisStringAppend(string, prefix)); } -#if defined(ZYAN_X64) || defined(ZYAN_AARCH64) || defined(ZYAN_PPC64) || defined(ZYAN_RISCV64) +#if defined(ZYAN_X64) || defined(ZYAN_AARCH64) || defined(ZYAN_PPC64) || defined(ZYAN_RISCV64) || defined(ZYAN_LOONGARCH) ZYAN_CHECK(ZydisStringAppendHexU64(string, value, padding_length, force_leading_number, uppercase)); #else diff --git a/tools/ZydisDisasm.c b/tools/ZydisDisasm.c index 3346f5c4..58e0ff5e 100644 --- a/tools/ZydisDisasm.c +++ b/tools/ZydisDisasm.c @@ -91,7 +91,7 @@ static void PrintDisassembly(const ZydisFormatter* formatter, const ZydisFormatterToken* token; if (!ZYAN_SUCCESS(status = ZydisFormatterTokenizeInstruction(formatter, instruction, operands, - instruction->operand_count_visible, buffer, length, runtime_address, &token, NULL))) + instruction->operand_count_visible, buffer, length, runtime_address, &token, ZYAN_NULL))) { PrintStatusError(status, "Failed to tokenize instruction"); exit(status); diff --git a/tools/ZydisFuzzDecoder.c b/tools/ZydisFuzzDecoder.c index 6e6ef258..bb843a6e 100644 --- a/tools/ZydisFuzzDecoder.c +++ b/tools/ZydisFuzzDecoder.c @@ -133,13 +133,13 @@ int ZydisFuzzTarget(ZydisStreamRead read_fn, void* stream_ctx) // Allow the control block to artificially restrict the buffer size. ZyanUSize output_len = ZYAN_MIN(sizeof(format_buffer), control_block.formatter_max_len); ZydisFormatterFormatInstruction(&formatter, &instruction, operands, - instruction.operand_count_visible, format_buffer, output_len, control_block.u64, NULL); + instruction.operand_count_visible, format_buffer, output_len, control_block.u64, ZYAN_NULL); // Fuzz tokenizer. const ZydisFormatterToken* token; status = ZydisFormatterTokenizeInstruction(&formatter, &instruction, operands, instruction.operand_count_visible, format_buffer, output_len, control_block.u64, &token, - NULL); + ZYAN_NULL); // Walk tokens. while (ZYAN_SUCCESS(status)) @@ -163,11 +163,11 @@ int ZydisFuzzTarget(ZydisStreamRead read_fn, void* stream_ctx) const ZydisDecodedOperand* op = &operands[op_idx]; ZydisFormatterFormatOperand(&formatter, &instruction, op, format_buffer, output_len, - control_block.u64, NULL); + control_block.u64, ZYAN_NULL); // Fuzz single operand tokenization. ZydisFormatterTokenizeOperand(&formatter, &instruction, op, format_buffer, output_len, - control_block.u64, &token, NULL); + control_block.u64, &token, ZYAN_NULL); // Address translation helper. ZyanU64 abs_addr; diff --git a/tools/ZydisFuzzShared.c b/tools/ZydisFuzzShared.c index 6b00e6fa..ab4935a1 100644 --- a/tools/ZydisFuzzShared.c +++ b/tools/ZydisFuzzShared.c @@ -39,6 +39,10 @@ # include #endif +#ifdef ZYAN_POSIX +# include +#endif + /* ============================================================================================== */ /* Stream reading abstraction */ /* ============================================================================================== */ @@ -46,7 +50,14 @@ ZyanUSize ZydisStdinRead(void *ctx, ZyanU8* buf, ZyanUSize max_len) { ZYAN_UNUSED(ctx); +#ifdef ZYAN_POSIX + // `fread` does internal buffering that can result in different code paths to be taken every + // time we call it. This is detrimental for fuzzing stability in persistent mode. Use direct + // syscall when possible. + return read(0, buf, max_len); +#else return fread(buf, 1, max_len, ZYAN_STDIN); +#endif } #ifdef ZYDIS_LIBFUZZER @@ -119,7 +130,7 @@ void ZydisPrintInstruction(const ZydisDecodedInstruction* instruction, char buffer[256]; ZydisFormatterFormatInstruction(&formatter, instruction, operands, operand_count, buffer, - sizeof(buffer), 0, NULL); + sizeof(buffer), 0, ZYAN_NULL); printf(" %s\n", buffer); } @@ -359,6 +370,88 @@ void ZydisValidateInstructionIdentity(const ZydisDecodedInstruction* insn1, #if !defined(ZYDIS_DISABLE_ENCODER) +static void ZydisReEncodeInstructionAbsolute(ZydisEncoderRequest* req, + const ZydisDecodedInstruction* insn2, const ZydisDecodedOperand* insn2_operands, + const ZyanU8* insn2_bytes) +{ + ZyanU64 runtime_address; + switch (insn2->address_width) + { + case 16: + runtime_address = (ZyanU64)(ZyanU16)ZYAN_INT16_MIN; + break; + case 32: + runtime_address = (ZyanU64)(ZyanU32)ZYAN_INT32_MIN; + break; + case 64: + runtime_address = (ZyanU64)ZYAN_INT64_MIN; + break; + default: + ZYAN_UNREACHABLE; + } + if ((insn2->machine_mode != ZYDIS_MACHINE_MODE_LONG_64) && (insn2->operand_width == 16)) + { + runtime_address = (ZyanU64)(ZyanU16)ZYAN_INT16_MIN; + } + runtime_address -= insn2->length; + + ZyanBool has_relative = ZYAN_FALSE; + for (ZyanU8 i = 0; i < req->operand_count; ++i) + { + const ZydisDecodedOperand *decoded_op = &insn2_operands[i]; + ZydisEncoderOperand *op = &req->operands[i]; + ZyanU64 *dst_address = ZYAN_NULL; + switch (op->type) + { + case ZYDIS_OPERAND_TYPE_IMMEDIATE: + if (decoded_op->imm.is_relative) + { + dst_address = &op->imm.u; + } + break; + case ZYDIS_OPERAND_TYPE_MEMORY: + if ((decoded_op->mem.base == ZYDIS_REGISTER_EIP) || + (decoded_op->mem.base == ZYDIS_REGISTER_RIP)) + { + dst_address = (ZyanU64 *)&op->mem.displacement; + } + break; + default: + break; + } + if (!dst_address) + { + continue; + } + has_relative = ZYAN_TRUE; + if (!ZYAN_SUCCESS(ZydisCalcAbsoluteAddress(insn2, decoded_op, runtime_address, + dst_address))) + { + fputs("ZydisCalcAbsoluteAddress has failed\n", ZYAN_STDERR); + abort(); + } + } + if (!has_relative) + { + return; + } + + ZyanU8 insn1_bytes[ZYDIS_MAX_INSTRUCTION_LENGTH]; + ZyanUSize insn1_length = sizeof(insn1_bytes); + ZyanStatus status = ZydisEncoderEncodeInstructionAbsolute(req, insn1_bytes, &insn1_length, + runtime_address); + if (!ZYAN_SUCCESS(status)) + { + fputs("Failed to re-encode instruction (absolute)\n", ZYAN_STDERR); + abort(); + } + if (insn1_length != insn2->length || ZYAN_MEMCMP(insn1_bytes, insn2_bytes, insn2->length)) + { + fputs("Instruction mismatch (absolute)\n", ZYAN_STDERR); + abort(); + } +} + void ZydisReEncodeInstruction(const ZydisDecoder *decoder, const ZydisDecodedInstruction *insn1, const ZydisDecodedOperand* operands1, ZyanU8 operand_count, const ZyanU8 *insn1_bytes) { @@ -404,6 +497,8 @@ void ZydisReEncodeInstruction(const ZydisDecoder *decoder, const ZydisDecodedIns fputs("Suboptimal output size detected\n", ZYAN_STDERR); abort(); } + + ZydisReEncodeInstructionAbsolute(&request, &insn2, operands2, encoded_instruction); } #endif diff --git a/tools/ZydisInfo.c b/tools/ZydisInfo.c index cc23ad4f..2dcd84e5 100644 --- a/tools/ZydisInfo.c +++ b/tools/ZydisInfo.c @@ -875,7 +875,7 @@ static void PrintDisassembly(const ZydisDecodedInstruction* instruction, PrintValueLabel("ABSOLUTE"); if (!ZYAN_SUCCESS(status = ZydisFormatterTokenizeInstruction(&formatter, instruction, operands, - instruction->operand_count_visible, buffer, sizeof(buffer), 0, &token, NULL))) + instruction->operand_count_visible, buffer, sizeof(buffer), 0, &token, ZYAN_NULL))) { PrintStatusError(status, "Failed to tokenize instruction"); exit(status); @@ -884,7 +884,7 @@ static void PrintDisassembly(const ZydisDecodedInstruction* instruction, PrintValueLabel("RELATIVE"); if (!ZYAN_SUCCESS(status = ZydisFormatterTokenizeInstruction(&formatter, instruction, operands, instruction->operand_count_visible, buffer, sizeof(buffer), ZYDIS_RUNTIME_ADDRESS_NONE, - &token, NULL))) + &token, ZYAN_NULL))) { PrintStatusError(status, "Failed to tokenize instruction"); exit(status); diff --git a/tools/ZydisTestEncoderAbsolute.c b/tools/ZydisTestEncoderAbsolute.c index f910d662..915b71e2 100644 --- a/tools/ZydisTestEncoderAbsolute.c +++ b/tools/ZydisTestEncoderAbsolute.c @@ -224,11 +224,15 @@ static ZyanBool RunBranchingTests(void) static const ZydisInstructionAttributes prefixes[] = { 0, ZYDIS_ATTRIB_HAS_BRANCH_TAKEN, + ZYDIS_ATTRIB_HAS_BND, + ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN | ZYDIS_ATTRIB_HAS_BND, }; static const char *str_prefixes[] = { "P00", "PBT", + "PBD", + "PBN+PBD", }; static const ZydisAddressSizeHint address_hints[] = { @@ -283,7 +287,12 @@ static ZyanBool RunBranchingTests(void) const ZydisEncoderRelInfo *rel_info = ZydisGetRelInfo(mnemonic); ZYAN_ASSERT(rel_info); - if (!rel_info->accepts_branch_hints && iter_branches[5].value != 0) + if ((!rel_info->accepts_branch_hints) && (prefix & (ZYDIS_ATTRIB_HAS_BRANCH_TAKEN | + ZYDIS_ATTRIB_HAS_BRANCH_NOT_TAKEN))) + { + continue; + } + if ((!rel_info->accepts_bound) && (prefix & ZYDIS_ATTRIB_HAS_BND)) { continue; } @@ -434,6 +443,19 @@ static ZyanBool RunRipRelativeTests(void) req.operands[1].reg.value = ZYDIS_REGISTER_EBX; all_passed &= RunTest(&req, ZydisMnemonicGetString(req.mnemonic), 0, ZYAN_TRUE); + // AMD 3DNow! + ZYAN_MEMSET(&req, 0, sizeof(req)); + req.machine_mode = ZYDIS_MACHINE_MODE_LONG_64; + req.mnemonic = ZYDIS_MNEMONIC_PI2FD; + req.operand_count = 2; + req.operands[0].type = ZYDIS_OPERAND_TYPE_REGISTER; + req.operands[0].reg.value = ZYDIS_REGISTER_MM1; + req.operands[1].type = ZYDIS_OPERAND_TYPE_MEMORY; + req.operands[1].mem.base = ZYDIS_REGISTER_RIP; + req.operands[1].mem.displacement = 0x66666666; + req.operands[1].mem.size = 8; + all_passed &= RunTest(&req, ZydisMnemonicGetString(req.mnemonic), 1, ZYAN_TRUE); + return all_passed; }