diff --git a/Examples/PerformanceTest/Main.c b/Bindings/C/Zydis.h similarity index 76% rename from Examples/PerformanceTest/Main.c rename to Bindings/C/Zydis.h index 5fb82f9..49e8574 100644 --- a/Examples/PerformanceTest/Main.c +++ b/Bindings/C/Zydis.h @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : athre0z - - Last change : 19. March 2015 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,14 +26,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ +***************************************************************************************************/ -#include +#ifndef _ZYDIS_DISASSEMBLER_H_ +#define _ZYDIS_DISASSEMBLER_H_ -int main(int argc, char* argv[]) -{ - ZYDIS_UNUSED(argc); ZYDIS_UNUSED(argv); +#include "ZydisTypes.h" +#include "ZydisInstructionDecoder.h" +#include "ZydisInstructionFormatter.h" +#include "ZydisSymbolResolver.h" +#include "ZydisUtils.h" - // TODO: - return 0; -} +#endif /* _ZYDIS_DISASSEMBLER_H_ */ \ No newline at end of file diff --git a/Bindings/C/ZydisInstructionDecoder.cpp b/Bindings/C/ZydisInstructionDecoder.cpp new file mode 100644 index 0000000..89b622c --- /dev/null +++ b/Bindings/C/ZydisInstructionDecoder.cpp @@ -0,0 +1,259 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#include "ZydisInstructionDecoder.h" +#include "ZydisInstructionDecoder.hpp" +#include "ZydisTypes.hpp" + +/* Helpers ===================================================================================== */ + +namespace +{ + +inline Zydis::BaseInput* ZydisBaseInput_CppPtr( + ZydisBaseInputContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline const Zydis::BaseInput* ZydisBaseInput_CppPtr( + const ZydisBaseInputContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline ZydisBaseInputContext* ZydisBaseInput_CPtr( + Zydis::BaseInput *ptr) +{ + return reinterpret_cast(ptr); +} + +inline const ZydisBaseInputContext* ZydisBaseInput_CPtr( + const Zydis::BaseInput *ptr) +{ + return reinterpret_cast(ptr); +} + +inline Zydis::InstructionInfo* ZydisInstructionInfo_CppPtr( + ZydisInstructionInfo *ptr) +{ + static_assert(sizeof(*ptr) == sizeof(Zydis::InstructionInfo), "broken struct"); + return reinterpret_cast(ptr); +} + +inline const Zydis::InstructionInfo* ZydisInstructionInfo_CppPtr( + const ZydisInstructionInfo *ptr) +{ + static_assert(sizeof(*ptr) == sizeof(Zydis::InstructionInfo), "broken struct"); + return reinterpret_cast(ptr); +} + +inline ZydisInstructionDecoderContext* ZydisInstructionDecoder_CPtr( + Zydis::InstructionDecoder *ptr) +{ + return reinterpret_cast(ptr); +} + +inline const ZydisInstructionDecoderContext* ZydisInstructionDecoder_CPtr( + const Zydis::InstructionDecoder *ptr) +{ + return reinterpret_cast(ptr); +} + +inline Zydis::InstructionDecoder* ZydisInstructionDecoder_CppPtr( + ZydisInstructionDecoderContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline const Zydis::InstructionDecoder* ZydisInstructionDecoder_CppPtr( + const ZydisInstructionDecoderContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline Zydis::DisassemblerMode ZydisDisassemblerMode_CppRepr( + ZydisDisassemblerMode val) +{ + return static_cast(val); +} + +inline ZydisDisassemblerMode ZydisDisassemblerMode_CRepr( + Zydis::DisassemblerMode val) +{ + return static_cast(val); +} + +inline Zydis::InstructionSetVendor ZydisInstructionSetVendor_CppRepr( + ZydisInstructionSetVendor val) +{ + return static_cast(val); +} + +inline ZydisInstructionSetVendor ZydisInstructionSetVendor_CRepr( + Zydis::InstructionSetVendor val) +{ + return static_cast(val); +} + +} + +/* BaseInput ============================================================================ */ + +void ZydisBaseInput_Release(ZydisBaseInputContext *ctx) +{ + delete ZydisBaseInput_CppPtr(ctx); +} + +uint8_t ZydisBaseInput_InputPeek(ZydisBaseInputContext *ctx, ZydisInstructionInfo *info) +{ + return ZydisBaseInput_CppPtr(ctx)->inputPeek(*ZydisInstructionInfo_CppPtr(info)); +} + +uint8_t ZydisBaseInput_InputNext(ZydisBaseInputContext *ctx, ZydisInstructionInfo *info) +{ + return ZydisBaseInput_CppPtr(ctx)->inputNext(*ZydisInstructionInfo_CppPtr(info)); +} + +uint8_t ZydisBaseInput_InputCurrent(const ZydisBaseInputContext *ctx) +{ + return ZydisBaseInput_CppPtr(ctx)->inputCurrent(); +} + +bool ZydisBaseInput_IsEndOfInput(const ZydisBaseInputContext *ctx) +{ + return ZydisBaseInput_CppPtr(ctx)->isEndOfInput(); +} + +uint64_t ZydisBaseInput_GetPosition(const ZydisBaseInputContext *ctx) +{ + return ZydisBaseInput_CppPtr(ctx)->getPosition(); +} + +bool ZydisBaseInput_SetPosition(ZydisBaseInputContext *ctx, uint64_t position) +{ + return ZydisBaseInput_CppPtr(ctx)->setPosition(position); +} + +/* MemoryInput ========================================================================== */ + +ZydisBaseInputContext* ZydisMemoryInput_Create(const void* buffer, size_t bufferLen) +{ + return reinterpret_cast( + new Zydis::MemoryInput(buffer, bufferLen)); +} + +/* InstructionDecoder ======================================================================== */ + +ZydisInstructionDecoderContext* ZydisInstructionDecoder_Create() +{ + return reinterpret_cast(new Zydis::InstructionDecoder); +} + +ZydisInstructionDecoderContext* ZydisInstructionDecoder_CreateEx( + ZydisBaseInputContext *input, + ZydisDisassemblerMode disassemblerMode, + ZydisInstructionSetVendor preferredVendor, + uint64_t instructionPointer) +{ + return ZydisInstructionDecoder_CPtr(new Zydis::InstructionDecoder( + ZydisBaseInput_CppPtr(input), + ZydisDisassemblerMode_CppRepr(disassemblerMode), + ZydisInstructionSetVendor_CppRepr(preferredVendor), + instructionPointer)); +} + +void ZydisInstructionDecoder_Release(ZydisInstructionDecoderContext *ctx) +{ + delete ZydisInstructionDecoder_CppPtr(ctx); +} + +bool ZydisInstructionDecoder_DecodeInstruction( + ZydisInstructionDecoderContext *ctx, ZydisInstructionInfo *info) +{ + return ZydisInstructionDecoder_CppPtr(ctx)->decodeInstruction( + *ZydisInstructionInfo_CppPtr(info)); +} + +ZydisBaseInputContext* ZydisInstructionDecoder_GetDataSource( + const ZydisInstructionDecoderContext *ctx) +{ + return ZydisBaseInput_CPtr(ZydisInstructionDecoder_CppPtr(ctx)->getDataSource()); +} + +void ZydisInstructionDecoder_SetDataSource( + ZydisInstructionDecoderContext *ctx, ZydisBaseInputContext *input) +{ + ZydisInstructionDecoder_CppPtr(ctx)->setDataSource(ZydisBaseInput_CppPtr(input)); +} + +ZydisDisassemblerMode ZydisInstructionDecoder_GetDisassemblerMode( + ZydisInstructionDecoderContext *ctx) +{ + return ZydisDisassemblerMode_CRepr(ZydisInstructionDecoder_CppPtr(ctx)->getDisassemblerMode()); +} + +void ZydisInstructionDecoder_SetDisassemblerMode( + ZydisInstructionDecoderContext *ctx, + ZydisDisassemblerMode disassemblerMode) +{ + ZydisInstructionDecoder_CppPtr(ctx)->setDisassemblerMode( + ZydisDisassemblerMode_CppRepr(disassemblerMode)); +} + +ZydisInstructionSetVendor ZydisInstructionDecoder_GetPreferredVendor( + const ZydisInstructionDecoderContext *ctx) +{ + return ZydisInstructionSetVendor_CRepr( + ZydisInstructionDecoder_CppPtr(ctx)->getPreferredVendor()); +} + +void ZydisInstructionDecoder_SetPreferredVendor( + ZydisInstructionDecoderContext *ctx, + ZydisInstructionSetVendor preferredVendor) +{ + return ZydisInstructionDecoder_CppPtr(ctx)->setPreferredVendor( + ZydisInstructionSetVendor_CppRepr(preferredVendor)); +} + +uint64_t ZydisInstructionDecoder_GetInstructionPointer( + ZydisInstructionDecoderContext *ctx) +{ + return ZydisInstructionDecoder_CppPtr(ctx)->getInstructionPointer(); +} + +void ZydisInstructionDecoder_SetInstructionPointer( + ZydisInstructionDecoderContext *ctx, + uint64_t instructionPointer) +{ + ZydisInstructionDecoder_CppPtr(ctx)->setInstructionPointer(instructionPointer); +} + +/* ============================================================================================= */ \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisInstructionDecoder.h b/Bindings/C/ZydisInstructionDecoder.h similarity index 52% rename from VerteronDisassemblerEngine/ZyDisInstructionDecoder.h rename to Bindings/C/ZydisInstructionDecoder.h index d75748c..f6a3bce 100644 --- a/VerteronDisassemblerEngine/ZyDisInstructionDecoder.h +++ b/Bindings/C/ZydisInstructionDecoder.h @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : athre0z - - Last change : 14. March 2015 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,14 +26,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ +***************************************************************************************************/ -#ifndef _VDE_ZyDisINSTRUCTIONDECODERC_H_ -#define _VDE_ZyDisINSTRUCTIONDECODERC_H_ - -#include "ZyDisDisassemblerTypes.h" -#include "ZyDisDisassemblerUtils.h" +#ifndef _ZYDIS_INSTRUCTIONDECODER_H_ +#define _ZYDIS_INSTRUCTIONDECODER_H_ +#include "ZydisTypes.h" #include #include @@ -44,24 +40,16 @@ extern "C" { #endif -/* ZyDisBaseDataSource ============================================================================ */ +/* BaseInput ============================================================================ */ -typedef struct _ZyDisBaseDataSourceContext { ZyDisContextDescriptor d; } ZyDisBaseDataSourceContext; - -typedef void(*ZyDisBaseDataSource_DestructionCallback)(ZyDisBaseDataSourceContext *ctx); -typedef uint8_t(*ZyDisBaseDataSource_InputCallback)(ZyDisBaseDataSourceContext *ctx); -typedef bool(*ZyDisBaseDataSource_IsEndOfInputCallback)(const ZyDisBaseDataSourceContext *ctx); -typedef uint64_t(*ZyDisBaseDataSource_GetPositionCallback)(const ZyDisBaseDataSourceContext *ctx); -typedef bool(*ZyDisBaseDataSource_SetPositionCallback)( - ZyDisBaseDataSourceContext *ctx, uint64_t position); +typedef struct _ZydisBaseInputContext { int a; } ZydisBaseInputContext; /** * @brief Releases a data source. * @param ctx The context to release. * The context may no longer be used after it was released. */ -ZYDIS_EXPORT void ZyDisBaseDataSource_Release( - ZyDisBaseDataSourceContext *ctx); +void ZydisBaseInput_Release(ZydisBaseInputContext *ctx); /** * @brief Reads the next byte from the data source without altering the current input position @@ -72,9 +60,7 @@ ZYDIS_EXPORT void ZyDisBaseDataSource_Release( * field of the @c info parameter for error flags. Possible error values are * @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. */ -ZYDIS_EXPORT uint8_t ZyDisBaseDataSource_InputPeek( - ZyDisBaseDataSourceContext *ctx, - ZyDisInstructionInfo *info); +uint8_t ZydisBaseInput_InputPeek(ZydisBaseInputContext *ctx, ZydisInstructionInfo *info); /** * @brief Reads the next byte from the data source. @@ -87,30 +73,7 @@ ZYDIS_EXPORT uint8_t ZyDisBaseDataSource_InputPeek( * parameter. This function also appends the new byte to to @c data field of the @c info * parameter. */ -ZYDIS_EXPORT uint8_t ZyDisBaseDataSource_InputNext8( - ZyDisBaseDataSourceContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @copydoc ZyDisBaseDataSource_InputNext8 - */ -ZYDIS_EXPORT uint16_t ZyDisBaseDataSource_InputNext16( - ZyDisBaseDataSourceContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @copydoc ZyDisBaseDataSource_InputNext8 - */ -ZYDIS_EXPORT uint32_t ZyDisBaseDataSource_InputNext32( - ZyDisBaseDataSourceContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @copydoc ZyDisBaseDataSource_InputNext8 - */ -ZYDIS_EXPORT uint64_t ZyDisBaseDataSource_InputNext64( - ZyDisBaseDataSourceContext *ctx, - ZyDisInstructionInfo *info); +uint8_t ZydisBaseInput_InputNext(ZydisBaseInputContext *ctx, ZydisInstructionInfo *info); /** * @brief Returns the current input byte. @@ -119,24 +82,21 @@ ZYDIS_EXPORT uint64_t ZyDisBaseDataSource_InputNext64( * The current input byte is set everytime the @c inputPeek or @c inputNext method is called. */ // TODO: check long descr -ZYDIS_EXPORT uint8_t ZyDisBaseDataSource_InputCurrent( - const ZyDisBaseDataSourceContext *ctx); +uint8_t ZydisBaseInput_InputCurrent(const ZydisBaseInputContext *ctx); /** * @brief Queries if the end of the data source is reached. * @param ctx The data soruce context. * @return @c true if end of input, @c false if not. */ -ZYDIS_EXPORT bool ZyDisBaseDataSource_IsEndOfInput( - const ZyDisBaseDataSourceContext *ctx); +bool ZydisBaseInput_IsEndOfInput(const ZydisBaseInputContext *ctx); /** * @brief Returns the current input position. * @param ctx The data soruce context. * @return The current input position. */ -ZYDIS_EXPORT uint64_t ZyDisBaseDataSource_GetPosition( - const ZyDisBaseDataSourceContext *ctx); +uint64_t ZydisBaseInput_GetPosition(const ZydisBaseInputContext *ctx); /** * @brief Sets a new input position. @@ -144,81 +104,53 @@ ZYDIS_EXPORT uint64_t ZyDisBaseDataSource_GetPosition( * @param position The new input position. * @return @c false if the new position exceeds the maximum input length. */ -ZYDIS_EXPORT bool ZyDisBaseDataSource_SetPosition( - ZyDisBaseDataSourceContext *ctx, - uint64_t position); +bool ZydisBaseInput_SetPosition(ZydisBaseInputContext *ctx, uint64_t position); -/* ZyDisMemoryDataSource ========================================================================== */ +/* MemoryInput ========================================================================== */ /** * @brief Creates a memory data source. * @param buffer The input buffer. * @param bufferLen THe length of the input buffer. * @return @c NULL if it fails, else a data source context. - * @see ZyDisBaseDataSource_Release + * @see BaseInput_Release */ -ZYDIS_EXPORT ZyDisBaseDataSourceContext* ZyDisMemoryDataSource_Create( - const void* buffer, - size_t bufferLen); - -/* ZyDisCustomDataSource ========================================================================== */ - -/** - * @brief Creates a custom daat source. - * @param ctx The context. - * @param inputPeekCb The callback peeking the next input byte. - * @param inputNextCb The callback consuming the next input byte. - * @param isEndOfInputCb The callback determining if the end of input was reached. - * @param getPositionCb The callback obtaining the current input position. - * @param setPositionCb The callback setting the current input position. - * @param destructionCb The destruction callback. May be @c NULL. - * @return @c NULL if it fails, else a data source context. - * @see ZyDisBaseDataSource_Release - */ -ZYDIS_EXPORT ZyDisBaseDataSourceContext* ZyDisCustomDataSource_Create( - ZyDisBaseDataSource_InputCallback inputPeekCb, - ZyDisBaseDataSource_InputCallback inputNextCb, - ZyDisBaseDataSource_IsEndOfInputCallback isEndOfInputCb, - ZyDisBaseDataSource_GetPositionCallback getPositionCb, - ZyDisBaseDataSource_SetPositionCallback setPositionCb, - ZyDisBaseDataSource_DestructionCallback destructionCb); +// TODO: verify return value +ZydisBaseInputContext* ZydisMemoryInput_Create(const void* buffer, size_t bufferLen); /* Enums ======================================================================================= */ /** * @brief Values that represent a disassembler mode. */ -typedef enum _ZyDisDisassemblerMode /* : uint8_t */ +typedef enum _ZydisDisassemblerMode /* : uint8_t */ { DM_M16BIT, DM_M32BIT, DM_M64BIT -} ZyDisDisassemblerMode; +} ZydisDisassemblerMode; /** * @brief Values that represent an instruction-set vendor. */ -typedef enum _ZyDisInstructionSetVendor /* : uint8_t */ +typedef enum _ZydisInstructionSetVendor /* : uint8_t */ { ISV_ANY, ISV_INTEL, ISV_AMD -} ZyDisInstructionSetVendor; +} ZydisInstructionSetVendor; -/* ZyDisInstructionDecoder ======================================================================== */ +/* InstructionDecoder ======================================================================== */ -typedef struct _ZyDisInstructionDecoderContext -{ - ZyDisContextDescriptor d; -} ZyDisInstructionDecoderContext; +typedef struct _ZydisInstructionDecoderContext { int a; } ZydisInstructionDecoderContext; /** * @brief Creates an instruction decoder. * @return @c NULL if it fails, else an instruction decoder context. - * @see ZyDisInstructionDecoder_Release + * @see InstructionDecoder_Release */ // TODO: verify return value -ZYDIS_EXPORT ZyDisInstructionDecoderContext* ZyDisInstructionDecoder_Create(void); +ZydisInstructionDecoderContext* ZydisInstructionDecoder_Create(void); /** * @brief Creates an instruction decoder. @@ -227,100 +159,89 @@ ZYDIS_EXPORT ZyDisInstructionDecoderContext* ZyDisInstructionDecoder_Create(void * @param preferredVendor The preferred instruction-set vendor. * @param instructionPointer The initial instruction pointer. * @return @c NULL if it fails, else an instruction decoder context. - * @see ZyDisInstructionDecoder_Release + * @see InstructionDecoder_Release */ -ZYDIS_EXPORT ZyDisInstructionDecoderContext* ZyDisInstructionDecoder_CreateEx( - ZyDisBaseDataSourceContext *input, - ZyDisDisassemblerMode disassemblerMode, - ZyDisInstructionSetVendor preferredVendor, +ZydisInstructionDecoderContext* ZydisInstructionDecoder_CreateEx(ZydisBaseInputContext *input, + ZydisDisassemblerMode disassemblerMode, ZydisInstructionSetVendor preferredVendor, uint64_t instructionPointer); /** * @brief Releases an instruction decoder. * @param ctx The context of the instruction decoder to release. */ -ZYDIS_EXPORT void ZyDisInstructionDecoder_Release( - ZyDisInstructionDecoderContext *ctx); +void ZydisInstructionDecoder_Release(ZydisInstructionDecoderContext *ctx); /** * @brief Decodes the next instruction from the input data source. * @param ctx The instruction decoder context. - * @param info The @c ZyDisInstructionInfo struct that receives the information about the decoded + * @param info The @c ZydisInstructionInfo struct that receives the information about the decoded * instruction. * @return This function returns @c false if the current position exceeds the maximum input * length. In all other cases (valid and invalid instructions) the return value is * @c true. */ -ZYDIS_EXPORT bool ZyDisInstructionDecoder_DecodeInstruction( - ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); +bool ZydisInstructionDecoder_DecodeInstruction(ZydisInstructionDecoderContext *ctx, + ZydisInstructionInfo *info); /** * @brief Returns a pointer to the current data source. * @param ctx The instruction decoder context. * @return The context of the data source. */ -ZYDIS_EXPORT ZyDisBaseDataSourceContext* ZyDisInstructionDecoder_GetDataSource( - const ZyDisInstructionDecoderContext *ctx); +ZydisBaseInputContext* ZydisInstructionDecoder_GetDataSource(const ZydisInstructionDecoderContext *ctx); /** * @brief Sets a new data source. * @param ctx The instruction decoder context. * @param input The context of the new input data source. */ -ZYDIS_EXPORT void ZyDisInstructionDecoder_SetDataSource( - ZyDisInstructionDecoderContext *ctx, - ZyDisBaseDataSourceContext *input); +void ZydisInstructionDecoder_SetDataSource(ZydisInstructionDecoderContext *ctx, + ZydisBaseInputContext *input); /** * @brief Returns the current disassembler mode. * @param ctx The instruction decoder context. * @return The current disassembler mode. */ -ZYDIS_EXPORT ZyDisDisassemblerMode ZyDisInstructionDecoder_GetDisassemblerMode( - const ZyDisInstructionDecoderContext *ctx); +ZydisDisassemblerMode ZydisInstructionDecoder_GetDisassemblerMode(ZydisInstructionDecoderContext *ctx); /** * @brief Sets the current disassembler mode. * @param ctx The instruction decoder context. * @param disassemblerMode The new disassembler mode. */ -ZYDIS_EXPORT void ZyDisInstructionDecoder_SetDisassemblerMode( - ZyDisInstructionDecoderContext *ctx, - ZyDisDisassemblerMode disassemblerMode); +void ZydisInstructionDecoder_SetDisassemblerMode(ZydisInstructionDecoderContext *ctx, + ZydisDisassemblerMode disassemblerMode); /** * @brief Returns the preferred instruction-set vendor. * @param ctx The instruction decoder context. * @return The preferred instruction-set vendor. */ -ZYDIS_EXPORT ZyDisInstructionSetVendor ZyDisInstructionDecoder_GetPreferredVendor( - const ZyDisInstructionDecoderContext *ctx); +ZydisInstructionSetVendor ZydisInstructionDecoder_GetPreferredVendor( + const ZydisInstructionDecoderContext *ctx); /** * @brief Sets the preferred instruction-set vendor. * @param ctx The instruction decoder context. * @param preferredVendor The new preferred instruction-set vendor. */ -ZYDIS_EXPORT void ZyDisInstructionDecoder_SetPreferredVendor( - ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionSetVendor preferredVendor); +void ZydisInstructionDecoder_SetPreferredVendor(ZydisInstructionDecoderContext *ctx, + ZydisInstructionSetVendor preferredVendor); /** * @brief Returns the current instruction pointer. * @param ctx The instruction decoder context. * @return The current instruction pointer. */ -ZYDIS_EXPORT uint64_t ZyDisInstructionDecoder_GetInstructionPointer( - const ZyDisInstructionDecoderContext *ctx); +uint64_t ZydisInstructionDecoder_GetInstructionPointer(ZydisInstructionDecoderContext *ctx); /** * @brief Sets a new instruction pointer. * @param ctx The instruction decoder context. * @param instructionPointer The new instruction pointer. */ -ZYDIS_EXPORT void ZyDisInstructionDecoder_SetInstructionPointer( - ZyDisInstructionDecoderContext *ctx, +void ZydisInstructionDecoder_SetInstructionPointer(ZydisInstructionDecoderContext *ctx, uint64_t instructionPointer); /* ============================================================================================= */ @@ -329,4 +250,4 @@ ZYDIS_EXPORT void ZyDisInstructionDecoder_SetInstructionPointer( } #endif -#endif /* _VDE_ZyDisINSTRUCTIONDECODERC_H_ */ +#endif /* _ZYDIS_INSTRUCTIONDECODER_H_ */ diff --git a/Bindings/C/ZydisInstructionFormatter.cpp b/Bindings/C/ZydisInstructionFormatter.cpp new file mode 100644 index 0000000..d6d8c7c --- /dev/null +++ b/Bindings/C/ZydisInstructionFormatter.cpp @@ -0,0 +1,251 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#include "ZydisInstructionFormatter.h" +#include "ZydisInstructionFormatter.hpp" + +/* Helpers ===================================================================================== */ + +namespace +{ + +inline Zydis::BaseSymbolResolver* ZydisBaseSymbolResolver_CppPtr( + ZydisBaseSymbolResolverContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline const Zydis::BaseSymbolResolver* ZydisBaseSymbolResolver_CppPtr( + const ZydisBaseSymbolResolverContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline ZydisBaseSymbolResolverContext* ZydisBaseSymbolResolver_CPtr( + Zydis::BaseSymbolResolver *ptr) +{ + return reinterpret_cast(ptr); +} + +inline const ZydisBaseSymbolResolverContext* ZydisBaseSymbolResolver_CPtr( + const Zydis::BaseSymbolResolver *ptr) +{ + return reinterpret_cast(ptr); +} + +inline Zydis::ExactSymbolResolver* ZydisExactSymbolResolver_CppPtr( + ZydisBaseSymbolResolverContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline const Zydis::ExactSymbolResolver* ZydisExactSymbolResolver_CppPtr( + const ZydisBaseSymbolResolverContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline ZydisBaseSymbolResolverContext* ZydisExactSymbolResolver_CPtr( + Zydis::ExactSymbolResolver *ptr) +{ + return reinterpret_cast(ptr); +} + +inline const ZydisBaseSymbolResolverContext* ZydisExactSymbolResolver_CPtr( + const Zydis::ExactSymbolResolver *ptr) +{ + return reinterpret_cast(ptr); +} + +inline Zydis::InstructionInfo* ZydisInstructionInfo_CppPtr( + ZydisInstructionInfo *ptr) +{ + static_assert(sizeof(*ptr) == sizeof(Zydis::InstructionInfo), "broken struct"); + return reinterpret_cast(ptr); +} + +inline const Zydis::InstructionInfo* ZydisInstructionInfo_CppPtr( + const ZydisInstructionInfo *ptr) +{ + static_assert(sizeof(*ptr) == sizeof(Zydis::InstructionInfo), "broken struct"); + return reinterpret_cast(ptr); +} + +inline ZydisInstructionInfo* ZydisInstructionInfo_CPtr( + Zydis::InstructionInfo *ptr) +{ + return reinterpret_cast(ptr); +} + +inline const ZydisInstructionInfo* ZydisInstructionInfo_CPtr( + const Zydis::InstructionInfo *ptr) +{ + return reinterpret_cast(ptr); +} + +inline Zydis::BaseInstructionFormatter* ZydisBaseInstructionFormatter_CppPtr( + ZydisBaseInstructionFormatterContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline const Zydis::BaseInstructionFormatter* ZydisBaseInstructionFormatter_CppPtr( + const ZydisBaseInstructionFormatterContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline Zydis::BaseInstructionFormatter* ZydisIntelInstructionFormatter_CppPtr( + ZydisBaseInstructionFormatterContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline const Zydis::BaseInstructionFormatter* ZydisIntelInstructionFormatter_CppPtr( + const ZydisBaseInstructionFormatterContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline ZydisBaseInstructionFormatterContext* ZydisIntelInstructionFormatter_CPtr( + Zydis::BaseInstructionFormatter *ctx) +{ + return reinterpret_cast(ctx); +} + +inline const ZydisBaseInstructionFormatterContext* ZydisIntelInstructionFormatter_CPtr( + const Zydis::BaseInstructionFormatter *ctx) +{ + return reinterpret_cast(ctx); +} + +} + +/* BaseSymbolResolver ======================================================================== */ + +void ZydisBaseSymbolResolver_Release( + ZydisBaseSymbolResolverContext *ctx) +{ + delete ZydisBaseSymbolResolver_CppPtr(ctx); +} + +const char* ZydisBaseSymbolResolver_ResolveSymbol( + ZydisBaseSymbolResolverContext *ctx, + const ZydisInstructionInfo *info, + uint64_t address, + uint64_t *offset) +{ + return ZydisBaseSymbolResolver_CppPtr(ctx)->resolveSymbol( + *ZydisInstructionInfo_CppPtr(info), + address, + *offset); +} + +/* ExactSymbolResolver ======================================================================= */ + +ZydisBaseSymbolResolverContext* ZydisExactSymbolResolver_Create(void) +{ + return ZydisExactSymbolResolver_CPtr(new Zydis::ExactSymbolResolver); +} + +bool EZydisxactSymbolResolver_ContainsSymbol( + ZydisBaseSymbolResolverContext *ctx, + uint64_t address) +{ + return ZydisExactSymbolResolver_CppPtr(ctx)->containsSymbol(address); +} + +void ZydisExactSymbolResolverContext_SetSymbol( + ZydisBaseSymbolResolverContext *ctx, + uint64_t address, + const char* name) +{ + ZydisExactSymbolResolver_CppPtr(ctx)->setSymbol(address, name); +} + +void ZydisExactSymbolResolverContext_RemoveSymbol( + ZydisBaseSymbolResolverContext *ctx, + uint64_t address) +{ + ZydisExactSymbolResolver_CppPtr(ctx)->removeSymbol(address); +} + +void ZydisExactSymbolResolverContext_Clear( + ZydisBaseSymbolResolverContext *ctx) +{ + ZydisExactSymbolResolver_CppPtr(ctx)->clear(); +} + +/* BaseInstructionFormatter ================================================================== */ + +const char* ZydisBaseInstructionFormatter_FormatInstruction( + ZydisBaseInstructionFormatterContext *ctx, + const ZydisInstructionInfo *info) +{ + return ZydisBaseInstructionFormatter_CppPtr(ctx)->formatInstruction( + *ZydisInstructionInfo_CppPtr(info)); +} + +ZydisBaseSymbolResolverContext* ZydisBaseInstructionFormatter_GetSymbolResolver( + const ZydisBaseInstructionFormatterContext *ctx) +{ + return ZydisBaseSymbolResolver_CPtr( + ZydisBaseInstructionFormatter_CppPtr(ctx)->getSymbolResolver()); +} + +void ZydisBaseInstructionFormatter_SetSymbolResolver( + ZydisBaseInstructionFormatterContext *ctx, + ZydisBaseSymbolResolverContext *resolver) +{ + ZydisBaseInstructionFormatter_CppPtr(ctx)->setSymbolResolver( + ZydisBaseSymbolResolver_CppPtr(resolver)); +} + +void ZydisBaseInstructionFormatter_Release( + ZydisBaseInstructionFormatterContext *ctx) +{ + delete ZydisBaseInstructionFormatter_CppPtr(ctx); +} + +/* IntelInstructionFormatter ================================================================ */ + +ZydisBaseInstructionFormatterContext* ZydisIntelInstructionFormatter_Create(void) +{ + return ZydisIntelInstructionFormatter_CPtr(new Zydis::IntelInstructionFormatter); +} + +ZydisBaseInstructionFormatterContext* ZydisIntelInstructionFormatter_CreateEx( + ZydisBaseSymbolResolverContext *resolver) +{ + return ZydisIntelInstructionFormatter_CPtr(new Zydis::IntelInstructionFormatter( + ZydisBaseSymbolResolver_CppPtr(resolver))); +} + +/* ============================================================================================= */ \ No newline at end of file diff --git a/Bindings/C/ZydisInstructionFormatter.h b/Bindings/C/ZydisInstructionFormatter.h new file mode 100644 index 0000000..cc51b38 --- /dev/null +++ b/Bindings/C/ZydisInstructionFormatter.h @@ -0,0 +1,104 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#ifndef _ZYDIS_INSTRUCTIONFORMATTER_H_ +#define _ZYDIS_INSTRUCTIONFORMATTER_H_ + +#include "ZydisTypes.h" +#include "ZydisSymbolResolver.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* BaseInstructionFormatter ================================================================== */ + +typedef struct _ZydisBaseInstructionFormatterContext {int a;} ZydisBaseInstructionFormatterContext; + +/** + * @brief Formats a decoded instruction. + * @param ctx The instruction formatter context. + * @param info The instruction info. + * @return Pointer to the formatted instruction string. This pointer remains valid until + * this function is called again or the context is released. + */ +const char* ZydisBaseInstructionFormatter_FormatInstruction( + ZydisBaseInstructionFormatterContext *ctx, const ZydisInstructionInfo *info); + +/** + * @brief Returns a pointer to the current symbol resolver. + * @param ctx The instruction formatter context. + * @return Pointer to the current symbol resolver or @c NULL if no symbol resolver is used. + */ +ZydisBaseSymbolResolverContext* ZydisBaseInstructionFormatter_GetSymbolResolver( + const ZydisBaseInstructionFormatterContext *ctx); + +/** + * @brief Sets a new symbol resolver. + * @param ctx The instruction formatter context. + * @param symbolResolver Pointer to a symbol resolver instance or @c NULL, if no smybol + * resolver should be used. + */ +void ZydisBaseInstructionFormatter_SetSymbolResolver(ZydisBaseInstructionFormatterContext *ctx, + ZydisBaseSymbolResolverContext *resolver); + +/** + * @brief Releases an instruction formatter. + * @param ctx The context of the instruction formatter to release. + * The context may no longer used after it has been released. + */ +void ZydisBaseInstructionFormatter_Release(ZydisBaseInstructionFormatterContext *ctx); + +/* IntelInstructionFormatter ================================================================ */ + +/** + * @brief Creates an Intel-syntax instruction formatter. + * @return @c NULL if it fails, else an Intel instruction formatter context. + * @see BaseInstructionFormatter_Release + */ +ZydisBaseInstructionFormatterContext* ZydisIntelInstructionFormatter_Create(void); + +/** + * @brief Creates an Intel-syntax instruction formatter. + * @param resolver The symbol resolver consulted to resolve symbols on formatting. + * @return @c NULL if it fails, else an Intel instruction formatter context. + * @see BaseInstructionFormatter_Release + */ +ZydisBaseInstructionFormatterContext* ZydisIntelInstructionFormatter_CreateEx( + ZydisBaseSymbolResolverContext *resolver); + +/* ============================================================================================= */ + +#ifdef __cplusplus +} +#endif + +#endif /* _ZYDIS_INSTRUCTIONFORMATTER_H_ */ \ No newline at end of file diff --git a/Examples/CustomDataSource/Main.c b/Bindings/C/ZydisOpcodeTable.cpp similarity index 80% rename from Examples/CustomDataSource/Main.c rename to Bindings/C/ZydisOpcodeTable.cpp index 5fb82f9..6724ea4 100644 --- a/Examples/CustomDataSource/Main.c +++ b/Bindings/C/ZydisOpcodeTable.cpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : athre0z - - Last change : 19. March 2015 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,14 +26,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ +***************************************************************************************************/ -#include - -int main(int argc, char* argv[]) -{ - ZYDIS_UNUSED(argc); ZYDIS_UNUSED(argv); - - // TODO: - return 0; -} +#include "ZydisOpcodeTable.h" +#include "ZydisOpcodeTable.hpp" diff --git a/Bindings/C/ZydisOpcodeTable.h b/Bindings/C/ZydisOpcodeTable.h new file mode 100644 index 0000000..3f9ab5f --- /dev/null +++ b/Bindings/C/ZydisOpcodeTable.h @@ -0,0 +1,961 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#ifndef _ZYDIS_OPCODETABLE_H_ +#define _ZYDIS_OPCODETABLE_H_ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * @brief Values that represent an instruction mnemonic. + */ +typedef enum _ZydisInstructionMnemonic /* : uint16_t */ +{ + /* 000 */ ZYDIS_MNEM_INVALID, + /* 001 */ ZYDIS_MNEM_AAA, + /* 002 */ ZYDIS_MNEM_AAD, + /* 003 */ ZYDIS_MNEM_AAM, + /* 004 */ ZYDIS_MNEM_AAS, + /* 005 */ ZYDIS_MNEM_ADC, + /* 006 */ ZYDIS_MNEM_ADD, + /* 007 */ ZYDIS_MNEM_ADDPD, + /* 008 */ ZYDIS_MNEM_ADDPS, + /* 009 */ ZYDIS_MNEM_ADDSD, + /* 00A */ ZYDIS_MNEM_ADDSS, + /* 00B */ ZYDIS_MNEM_ADDSUBPD, + /* 00C */ ZYDIS_MNEM_ADDSUBPS, + /* 00D */ ZYDIS_MNEM_AESDEC, + /* 00E */ ZYDIS_MNEM_AESDECLAST, + /* 00F */ ZYDIS_MNEM_AESENC, + /* 010 */ ZYDIS_MNEM_AESENCLAST, + /* 011 */ ZYDIS_MNEM_AESIMC, + /* 012 */ ZYDIS_MNEM_AESKEYGENASSIST, + /* 013 */ ZYDIS_MNEM_AND, + /* 014 */ ZYDIS_MNEM_ANDNPD, + /* 015 */ ZYDIS_MNEM_ANDNPS, + /* 016 */ ZYDIS_MNEM_ANDPD, + /* 017 */ ZYDIS_MNEM_ANDPS, + /* 018 */ ZYDIS_MNEM_ARPL, + /* 019 */ ZYDIS_MNEM_BLENDPD, + /* 01A */ ZYDIS_MNEM_BLENDPS, + /* 01B */ ZYDIS_MNEM_BLENDVPD, + /* 01C */ ZYDIS_MNEM_BLENDVPS, + /* 01D */ ZYDIS_MNEM_BOUND, + /* 01E */ ZYDIS_MNEM_BSF, + /* 01F */ ZYDIS_MNEM_BSR, + /* 020 */ ZYDIS_MNEM_BSWAP, + /* 021 */ ZYDIS_MNEM_BT, + /* 022 */ ZYDIS_MNEM_BTC, + /* 023 */ ZYDIS_MNEM_BTR, + /* 024 */ ZYDIS_MNEM_BTS, + /* 025 */ ZYDIS_MNEM_CALL, + /* 026 */ ZYDIS_MNEM_CBW, + /* 027 */ ZYDIS_MNEM_CDQ, + /* 028 */ ZYDIS_MNEM_CDQE, + /* 029 */ ZYDIS_MNEM_CLC, + /* 02A */ ZYDIS_MNEM_CLD, + /* 02B */ ZYDIS_MNEM_CLFLUSH, + /* 02C */ ZYDIS_MNEM_CLGI, + /* 02D */ ZYDIS_MNEM_CLI, + /* 02E */ ZYDIS_MNEM_CLTS, + /* 02F */ ZYDIS_MNEM_CMC, + /* 030 */ ZYDIS_MNEM_CMOVA, + /* 031 */ ZYDIS_MNEM_CMOVAE, + /* 032 */ ZYDIS_MNEM_CMOVB, + /* 033 */ ZYDIS_MNEM_CMOVBE, + /* 034 */ ZYDIS_MNEM_CMOVE, + /* 035 */ ZYDIS_MNEM_CMOVG, + /* 036 */ ZYDIS_MNEM_CMOVGE, + /* 037 */ ZYDIS_MNEM_CMOVL, + /* 038 */ ZYDIS_MNEM_CMOVLE, + /* 039 */ ZYDIS_MNEM_CMOVNE, + /* 03A */ ZYDIS_MNEM_CMOVNO, + /* 03B */ ZYDIS_MNEM_CMOVNP, + /* 03C */ ZYDIS_MNEM_CMOVNS, + /* 03D */ ZYDIS_MNEM_CMOVO, + /* 03E */ ZYDIS_MNEM_CMOVP, + /* 03F */ ZYDIS_MNEM_CMOVS, + /* 040 */ ZYDIS_MNEM_CMP, + /* 041 */ ZYDIS_MNEM_CMPPD, + /* 042 */ ZYDIS_MNEM_CMPPS, + /* 043 */ ZYDIS_MNEM_CMPSB, + /* 044 */ ZYDIS_MNEM_CMPSD, + /* 045 */ ZYDIS_MNEM_CMPSQ, + /* 046 */ ZYDIS_MNEM_CMPSS, + /* 047 */ ZYDIS_MNEM_CMPSW, + /* 048 */ ZYDIS_MNEM_CMPXCHG, + /* 049 */ ZYDIS_MNEM_CMPXCHG16B, + /* 04A */ ZYDIS_MNEM_CMPXCHG8B, + /* 04B */ ZYDIS_MNEM_COMISD, + /* 04C */ ZYDIS_MNEM_COMISS, + /* 04D */ ZYDIS_MNEM_CPUID, + /* 04E */ ZYDIS_MNEM_CQO, + /* 04F */ ZYDIS_MNEM_CRC32, + /* 050 */ ZYDIS_MNEM_CVTDQ2PD, + /* 051 */ ZYDIS_MNEM_CVTDQ2PS, + /* 052 */ ZYDIS_MNEM_CVTPD2DQ, + /* 053 */ ZYDIS_MNEM_CVTPD2PI, + /* 054 */ ZYDIS_MNEM_CVTPD2PS, + /* 055 */ ZYDIS_MNEM_CVTPI2PD, + /* 056 */ ZYDIS_MNEM_CVTPI2PS, + /* 057 */ ZYDIS_MNEM_CVTPS2DQ, + /* 058 */ ZYDIS_MNEM_CVTPS2PD, + /* 059 */ ZYDIS_MNEM_CVTPS2PI, + /* 05A */ ZYDIS_MNEM_CVTSD2SI, + /* 05B */ ZYDIS_MNEM_CVTSD2SS, + /* 05C */ ZYDIS_MNEM_CVTSI2SD, + /* 05D */ ZYDIS_MNEM_CVTSI2SS, + /* 05E */ ZYDIS_MNEM_CVTSS2SD, + /* 05F */ ZYDIS_MNEM_CVTSS2SI, + /* 060 */ ZYDIS_MNEM_CVTTPD2DQ, + /* 061 */ ZYDIS_MNEM_CVTTPD2PI, + /* 062 */ ZYDIS_MNEM_CVTTPS2DQ, + /* 063 */ ZYDIS_MNEM_CVTTPS2PI, + /* 064 */ ZYDIS_MNEM_CVTTSD2SI, + /* 065 */ ZYDIS_MNEM_CVTTSS2SI, + /* 066 */ ZYDIS_MNEM_CWD, + /* 067 */ ZYDIS_MNEM_CWDE, + /* 068 */ ZYDIS_MNEM_DAA, + /* 069 */ ZYDIS_MNEM_DAS, + /* 06A */ ZYDIS_MNEM_DEC, + /* 06B */ ZYDIS_MNEM_DIV, + /* 06C */ ZYDIS_MNEM_DIVPD, + /* 06D */ ZYDIS_MNEM_DIVPS, + /* 06E */ ZYDIS_MNEM_DIVSD, + /* 06F */ ZYDIS_MNEM_DIVSS, + /* 070 */ ZYDIS_MNEM_DPPD, + /* 071 */ ZYDIS_MNEM_DPPS, + /* 072 */ ZYDIS_MNEM_EMMS, + /* 073 */ ZYDIS_MNEM_ENTER, + /* 074 */ ZYDIS_MNEM_EXTRACTPS, + /* 075 */ ZYDIS_MNEM_F2XM1, + /* 076 */ ZYDIS_MNEM_FABS, + /* 077 */ ZYDIS_MNEM_FADD, + /* 078 */ ZYDIS_MNEM_FADDP, + /* 079 */ ZYDIS_MNEM_FBLD, + /* 07A */ ZYDIS_MNEM_FBSTP, + /* 07B */ ZYDIS_MNEM_FCHS, + /* 07C */ ZYDIS_MNEM_FCLEX, + /* 07D */ ZYDIS_MNEM_FCMOVB, + /* 07E */ ZYDIS_MNEM_FCMOVBE, + /* 07F */ ZYDIS_MNEM_FCMOVE, + /* 080 */ ZYDIS_MNEM_FCMOVNB, + /* 081 */ ZYDIS_MNEM_FCMOVNBE, + /* 082 */ ZYDIS_MNEM_FCMOVNE, + /* 083 */ ZYDIS_MNEM_FCMOVNU, + /* 084 */ ZYDIS_MNEM_FCMOVU, + /* 085 */ ZYDIS_MNEM_FCOM, + /* 086 */ ZYDIS_MNEM_FCOM2, + /* 087 */ ZYDIS_MNEM_FCOMI, + /* 088 */ ZYDIS_MNEM_FCOMIP, + /* 089 */ ZYDIS_MNEM_FCOMP, + /* 08A */ ZYDIS_MNEM_FCOMP3, + /* 08B */ ZYDIS_MNEM_FCOMP5, + /* 08C */ ZYDIS_MNEM_FCOMPP, + /* 08D */ ZYDIS_MNEM_FCOS, + /* 08E */ ZYDIS_MNEM_FDECSTP, + /* 08F */ ZYDIS_MNEM_FDIV, + /* 090 */ ZYDIS_MNEM_FDIVP, + /* 091 */ ZYDIS_MNEM_FDIVR, + /* 092 */ ZYDIS_MNEM_FDIVRP, + /* 093 */ ZYDIS_MNEM_FEMMS, + /* 094 */ ZYDIS_MNEM_FFREE, + /* 095 */ ZYDIS_MNEM_FFREEP, + /* 096 */ ZYDIS_MNEM_FIADD, + /* 097 */ ZYDIS_MNEM_FICOM, + /* 098 */ ZYDIS_MNEM_FICOMP, + /* 099 */ ZYDIS_MNEM_FIDIV, + /* 09A */ ZYDIS_MNEM_FIDIVR, + /* 09B */ ZYDIS_MNEM_FILD, + /* 09C */ ZYDIS_MNEM_FIMUL, + /* 09D */ ZYDIS_MNEM_FINCSTP, + /* 09E */ ZYDIS_MNEM_FIST, + /* 09F */ ZYDIS_MNEM_FISTP, + /* 0A0 */ ZYDIS_MNEM_FISTTP, + /* 0A1 */ ZYDIS_MNEM_FISUB, + /* 0A2 */ ZYDIS_MNEM_FISUBR, + /* 0A3 */ ZYDIS_MNEM_FLD, + /* 0A4 */ ZYDIS_MNEM_FLD1, + /* 0A5 */ ZYDIS_MNEM_FLDCW, + /* 0A6 */ ZYDIS_MNEM_FLDENV, + /* 0A7 */ ZYDIS_MNEM_FLDL2E, + /* 0A8 */ ZYDIS_MNEM_FLDL2T, + /* 0A9 */ ZYDIS_MNEM_FLDLG2, + /* 0AA */ ZYDIS_MNEM_FLDLN2, + /* 0AB */ ZYDIS_MNEM_FLDPI, + /* 0AC */ ZYDIS_MNEM_FLDZ, + /* 0AD */ ZYDIS_MNEM_FMUL, + /* 0AE */ ZYDIS_MNEM_FMULP, + /* 0AF */ ZYDIS_MNEM_FNDISI, + /* 0B0 */ ZYDIS_MNEM_FNENI, + /* 0B1 */ ZYDIS_MNEM_FNINIT, + /* 0B2 */ ZYDIS_MNEM_FNOP, + /* 0B3 */ ZYDIS_MNEM_FNSAVE, + /* 0B4 */ ZYDIS_MNEM_FNSETPM, + /* 0B5 */ ZYDIS_MNEM_FNSTCW, + /* 0B6 */ ZYDIS_MNEM_FNSTENV, + /* 0B7 */ ZYDIS_MNEM_FNSTSW, + /* 0B8 */ ZYDIS_MNEM_FPATAN, + /* 0B9 */ ZYDIS_MNEM_FPREM, + /* 0BA */ ZYDIS_MNEM_FPREM1, + /* 0BB */ ZYDIS_MNEM_FPTAN, + /* 0BC */ ZYDIS_MNEM_FRNDINT, + /* 0BD */ ZYDIS_MNEM_FRSTOR, + /* 0BE */ ZYDIS_MNEM_FRSTPM, + /* 0BF */ ZYDIS_MNEM_FSCALE, + /* 0C0 */ ZYDIS_MNEM_FSIN, + /* 0C1 */ ZYDIS_MNEM_FSINCOS, + /* 0C2 */ ZYDIS_MNEM_FSQRT, + /* 0C3 */ ZYDIS_MNEM_FST, + /* 0C4 */ ZYDIS_MNEM_FSTP, + /* 0C5 */ ZYDIS_MNEM_FSTP1, + /* 0C6 */ ZYDIS_MNEM_FSTP8, + /* 0C7 */ ZYDIS_MNEM_FSTP9, + /* 0C8 */ ZYDIS_MNEM_FSUB, + /* 0C9 */ ZYDIS_MNEM_FSUBP, + /* 0CA */ ZYDIS_MNEM_FSUBR, + /* 0CB */ ZYDIS_MNEM_FSUBRP, + /* 0CC */ ZYDIS_MNEM_FTST, + /* 0CD */ ZYDIS_MNEM_FUCOM, + /* 0CE */ ZYDIS_MNEM_FUCOMI, + /* 0CF */ ZYDIS_MNEM_FUCOMIP, + /* 0D0 */ ZYDIS_MNEM_FUCOMP, + /* 0D1 */ ZYDIS_MNEM_FUCOMPP, + /* 0D2 */ ZYDIS_MNEM_FXAM, + /* 0D3 */ ZYDIS_MNEM_FXCH, + /* 0D4 */ ZYDIS_MNEM_FXCH4, + /* 0D5 */ ZYDIS_MNEM_FXCH7, + /* 0D6 */ ZYDIS_MNEM_FXRSTOR, + /* 0D7 */ ZYDIS_MNEM_FXSAVE, + /* 0D8 */ ZYDIS_MNEM_FXTRACT, + /* 0D9 */ ZYDIS_MNEM_FYL2X, + /* 0DA */ ZYDIS_MNEM_FYL2XP1, + /* 0DB */ ZYDIS_MNEM_GETSEC, + /* 0DC */ ZYDIS_MNEM_HADDPD, + /* 0DD */ ZYDIS_MNEM_HADDPS, + /* 0DE */ ZYDIS_MNEM_HLT, + /* 0DF */ ZYDIS_MNEM_HSUBPD, + /* 0E0 */ ZYDIS_MNEM_HSUBPS, + /* 0E1 */ ZYDIS_MNEM_IDIV, + /* 0E2 */ ZYDIS_MNEM_IMUL, + /* 0E3 */ ZYDIS_MNEM_IN, + /* 0E4 */ ZYDIS_MNEM_INC, + /* 0E5 */ ZYDIS_MNEM_INSB, + /* 0E6 */ ZYDIS_MNEM_INSD, + /* 0E7 */ ZYDIS_MNEM_INSERTPS, + /* 0E8 */ ZYDIS_MNEM_INSW, + /* 0E9 */ ZYDIS_MNEM_INT, + /* 0EA */ ZYDIS_MNEM_INT1, + /* 0EB */ ZYDIS_MNEM_INT3, + /* 0EC */ ZYDIS_MNEM_INTO, + /* 0ED */ ZYDIS_MNEM_INVD, + /* 0EE */ ZYDIS_MNEM_INVEPT, + /* 0EF */ ZYDIS_MNEM_INVLPG, + /* 0F0 */ ZYDIS_MNEM_INVLPGA, + /* 0F1 */ ZYDIS_MNEM_INVVPID, + /* 0F2 */ ZYDIS_MNEM_IRETD, + /* 0F3 */ ZYDIS_MNEM_IRETQ, + /* 0F4 */ ZYDIS_MNEM_IRETW, + /* 0F5 */ ZYDIS_MNEM_JA, + /* 0F6 */ ZYDIS_MNEM_JB, + /* 0F7 */ ZYDIS_MNEM_JBE, + /* 0F8 */ ZYDIS_MNEM_JCXZ, + /* 0F9 */ ZYDIS_MNEM_JE, + /* 0FA */ ZYDIS_MNEM_JECXZ, + /* 0FB */ ZYDIS_MNEM_JG, + /* 0FC */ ZYDIS_MNEM_JGE, + /* 0FD */ ZYDIS_MNEM_JL, + /* 0FE */ ZYDIS_MNEM_JLE, + /* 0FF */ ZYDIS_MNEM_JMP, + /* 100 */ ZYDIS_MNEM_JNB, + /* 101 */ ZYDIS_MNEM_JNE, + /* 102 */ ZYDIS_MNEM_JNO, + /* 103 */ ZYDIS_MNEM_JNP, + /* 104 */ ZYDIS_MNEM_JNS, + /* 105 */ ZYDIS_MNEM_JO, + /* 106 */ ZYDIS_MNEM_JP, + /* 107 */ ZYDIS_MNEM_JRCXZ, + /* 108 */ ZYDIS_MNEM_JS, + /* 109 */ ZYDIS_MNEM_LAHF, + /* 10A */ ZYDIS_MNEM_LAR, + /* 10B */ ZYDIS_MNEM_LDDQU, + /* 10C */ ZYDIS_MNEM_LDMXCSR, + /* 10D */ ZYDIS_MNEM_LDS, + /* 10E */ ZYDIS_MNEM_LEA, + /* 10F */ ZYDIS_MNEM_LEAVE, + /* 110 */ ZYDIS_MNEM_LES, + /* 111 */ ZYDIS_MNEM_LFENCE, + /* 112 */ ZYDIS_MNEM_LFS, + /* 113 */ ZYDIS_MNEM_LGDT, + /* 114 */ ZYDIS_MNEM_LGS, + /* 115 */ ZYDIS_MNEM_LIDT, + /* 116 */ ZYDIS_MNEM_LLDT, + /* 117 */ ZYDIS_MNEM_LMSW, + /* 118 */ ZYDIS_MNEM_LOCK, + /* 119 */ ZYDIS_MNEM_LODSB, + /* 11A */ ZYDIS_MNEM_LODSD, + /* 11B */ ZYDIS_MNEM_LODSQ, + /* 11C */ ZYDIS_MNEM_LODSW, + /* 11D */ ZYDIS_MNEM_LOOP, + /* 11E */ ZYDIS_MNEM_LOOPE, + /* 11F */ ZYDIS_MNEM_LOOPNE, + /* 120 */ ZYDIS_MNEM_LSL, + /* 121 */ ZYDIS_MNEM_LSS, + /* 122 */ ZYDIS_MNEM_LTR, + /* 123 */ ZYDIS_MNEM_MASKMOVDQU, + /* 124 */ ZYDIS_MNEM_MASKMOVQ, + /* 125 */ ZYDIS_MNEM_MAXPD, + /* 126 */ ZYDIS_MNEM_MAXPS, + /* 127 */ ZYDIS_MNEM_MAXSD, + /* 128 */ ZYDIS_MNEM_MAXSS, + /* 129 */ ZYDIS_MNEM_MFENCE, + /* 12A */ ZYDIS_MNEM_MINPD, + /* 12B */ ZYDIS_MNEM_MINPS, + /* 12C */ ZYDIS_MNEM_MINSD, + /* 12D */ ZYDIS_MNEM_MINSS, + /* 12E */ ZYDIS_MNEM_MONITOR, + /* 12F */ ZYDIS_MNEM_MONTMUL, + /* 130 */ ZYDIS_MNEM_MOV, + /* 131 */ ZYDIS_MNEM_MOVAPD, + /* 132 */ ZYDIS_MNEM_MOVAPS, + /* 133 */ ZYDIS_MNEM_MOVBE, + /* 134 */ ZYDIS_MNEM_MOVD, + /* 135 */ ZYDIS_MNEM_MOVDDUP, + /* 136 */ ZYDIS_MNEM_MOVDQ2Q, + /* 137 */ ZYDIS_MNEM_MOVDQA, + /* 138 */ ZYDIS_MNEM_MOVDQU, + /* 139 */ ZYDIS_MNEM_MOVHLPS, + /* 13A */ ZYDIS_MNEM_MOVHPD, + /* 13B */ ZYDIS_MNEM_MOVHPS, + /* 13C */ ZYDIS_MNEM_MOVLHPS, + /* 13D */ ZYDIS_MNEM_MOVLPD, + /* 13E */ ZYDIS_MNEM_MOVLPS, + /* 13F */ ZYDIS_MNEM_MOVMSKPD, + /* 140 */ ZYDIS_MNEM_MOVMSKPS, + /* 141 */ ZYDIS_MNEM_MOVNTDQ, + /* 142 */ ZYDIS_MNEM_MOVNTDQA, + /* 143 */ ZYDIS_MNEM_MOVNTI, + /* 144 */ ZYDIS_MNEM_MOVNTPD, + /* 145 */ ZYDIS_MNEM_MOVNTPS, + /* 146 */ ZYDIS_MNEM_MOVNTQ, + /* 147 */ ZYDIS_MNEM_MOVQ, + /* 148 */ ZYDIS_MNEM_MOVQ2DQ, + /* 149 */ ZYDIS_MNEM_MOVSB, + /* 14A */ ZYDIS_MNEM_MOVSD, + /* 14B */ ZYDIS_MNEM_MOVSHDUP, + /* 14C */ ZYDIS_MNEM_MOVSLDUP, + /* 14D */ ZYDIS_MNEM_MOVSQ, + /* 14E */ ZYDIS_MNEM_MOVSS, + /* 14F */ ZYDIS_MNEM_MOVSW, + /* 150 */ ZYDIS_MNEM_MOVSX, + /* 151 */ ZYDIS_MNEM_MOVSXD, + /* 152 */ ZYDIS_MNEM_MOVUPD, + /* 153 */ ZYDIS_MNEM_MOVUPS, + /* 154 */ ZYDIS_MNEM_MOVZX, + /* 155 */ ZYDIS_MNEM_MPSADBW, + /* 156 */ ZYDIS_MNEM_MUL, + /* 157 */ ZYDIS_MNEM_MULPD, + /* 158 */ ZYDIS_MNEM_MULPS, + /* 159 */ ZYDIS_MNEM_MULSD, + /* 15A */ ZYDIS_MNEM_MULSS, + /* 15B */ ZYDIS_MNEM_MWAIT, + /* 15C */ ZYDIS_MNEM_NEG, + /* 15D */ ZYDIS_MNEM_NOP, + /* 15E */ ZYDIS_MNEM_NOT, + /* 15F */ ZYDIS_MNEM_OR, + /* 160 */ ZYDIS_MNEM_ORPD, + /* 161 */ ZYDIS_MNEM_ORPS, + /* 162 */ ZYDIS_MNEM_OUT, + /* 163 */ ZYDIS_MNEM_OUTSB, + /* 164 */ ZYDIS_MNEM_OUTSD, + /* 165 */ ZYDIS_MNEM_OUTSW, + /* 166 */ ZYDIS_MNEM_PABSB, + /* 167 */ ZYDIS_MNEM_PABSD, + /* 168 */ ZYDIS_MNEM_PABSW, + /* 169 */ ZYDIS_MNEM_PACKSSDW, + /* 16A */ ZYDIS_MNEM_PACKSSWB, + /* 16B */ ZYDIS_MNEM_PACKUSDW, + /* 16C */ ZYDIS_MNEM_PACKUSWB, + /* 16D */ ZYDIS_MNEM_PADDB, + /* 16E */ ZYDIS_MNEM_PADDD, + /* 16F */ ZYDIS_MNEM_PADDQ, + /* 170 */ ZYDIS_MNEM_PADDSB, + /* 171 */ ZYDIS_MNEM_PADDSW, + /* 172 */ ZYDIS_MNEM_PADDUSB, + /* 173 */ ZYDIS_MNEM_PADDUSW, + /* 174 */ ZYDIS_MNEM_PADDW, + /* 175 */ ZYDIS_MNEM_PALIGNR, + /* 176 */ ZYDIS_MNEM_PAND, + /* 177 */ ZYDIS_MNEM_PANDN, + /* 178 */ ZYDIS_MNEM_PAUSE, + /* 179 */ ZYDIS_MNEM_PAVGB, + /* 17A */ ZYDIS_MNEM_PAVGUSB, + /* 17B */ ZYDIS_MNEM_PAVGW, + /* 17C */ ZYDIS_MNEM_PBLENDVB, + /* 17D */ ZYDIS_MNEM_PBLENDW, + /* 17E */ ZYDIS_MNEM_PCLMULQDQ, + /* 17F */ ZYDIS_MNEM_PCMPEQB, + /* 180 */ ZYDIS_MNEM_PCMPEQD, + /* 181 */ ZYDIS_MNEM_PCMPEQQ, + /* 182 */ ZYDIS_MNEM_PCMPEQW, + /* 183 */ ZYDIS_MNEM_PCMPESTRI, + /* 184 */ ZYDIS_MNEM_PCMPESTRM, + /* 185 */ ZYDIS_MNEM_PCMPGTB, + /* 186 */ ZYDIS_MNEM_PCMPGTD, + /* 187 */ ZYDIS_MNEM_PCMPGTQ, + /* 188 */ ZYDIS_MNEM_PCMPGTW, + /* 189 */ ZYDIS_MNEM_PCMPISTRI, + /* 18A */ ZYDIS_MNEM_PCMPISTRM, + /* 18B */ ZYDIS_MNEM_PEXTRB, + /* 18C */ ZYDIS_MNEM_PEXTRD, + /* 18D */ ZYDIS_MNEM_PEXTRQ, + /* 18E */ ZYDIS_MNEM_PEXTRW, + /* 18F */ ZYDIS_MNEM_PF2ID, + /* 190 */ ZYDIS_MNEM_PF2IW, + /* 191 */ ZYDIS_MNEM_PFACC, + /* 192 */ ZYDIS_MNEM_PFADD, + /* 193 */ ZYDIS_MNEM_PFCMPEQ, + /* 194 */ ZYDIS_MNEM_PFCMPGE, + /* 195 */ ZYDIS_MNEM_PFCMPGT, + /* 196 */ ZYDIS_MNEM_PFMAX, + /* 197 */ ZYDIS_MNEM_PFMIN, + /* 198 */ ZYDIS_MNEM_PFMUL, + /* 199 */ ZYDIS_MNEM_PFNACC, + /* 19A */ ZYDIS_MNEM_PFPNACC, + /* 19B */ ZYDIS_MNEM_PFRCP, + /* 19C */ ZYDIS_MNEM_PFRCPIT1, + /* 19D */ ZYDIS_MNEM_PFRCPIT2, + /* 19E */ ZYDIS_MNEM_PFRSQIT1, + /* 19F */ ZYDIS_MNEM_PFRSQRT, + /* 1A0 */ ZYDIS_MNEM_PFSUB, + /* 1A1 */ ZYDIS_MNEM_PFSUBR, + /* 1A2 */ ZYDIS_MNEM_PHADDD, + /* 1A3 */ ZYDIS_MNEM_PHADDSW, + /* 1A4 */ ZYDIS_MNEM_PHADDW, + /* 1A5 */ ZYDIS_MNEM_PHMINPOSUW, + /* 1A6 */ ZYDIS_MNEM_PHSUBD, + /* 1A7 */ ZYDIS_MNEM_PHSUBSW, + /* 1A8 */ ZYDIS_MNEM_PHSUBW, + /* 1A9 */ ZYDIS_MNEM_PI2FD, + /* 1AA */ ZYDIS_MNEM_PI2FW, + /* 1AB */ ZYDIS_MNEM_PINSRB, + /* 1AC */ ZYDIS_MNEM_PINSRD, + /* 1AD */ ZYDIS_MNEM_PINSRQ, + /* 1AE */ ZYDIS_MNEM_PINSRW, + /* 1AF */ ZYDIS_MNEM_PMADDUBSW, + /* 1B0 */ ZYDIS_MNEM_PMADDWD, + /* 1B1 */ ZYDIS_MNEM_PMAXSB, + /* 1B2 */ ZYDIS_MNEM_PMAXSD, + /* 1B3 */ ZYDIS_MNEM_PMAXSW, + /* 1B4 */ ZYDIS_MNEM_PMAXUB, + /* 1B5 */ ZYDIS_MNEM_PMAXUD, + /* 1B6 */ ZYDIS_MNEM_PMAXUW, + /* 1B7 */ ZYDIS_MNEM_PMINSB, + /* 1B8 */ ZYDIS_MNEM_PMINSD, + /* 1B9 */ ZYDIS_MNEM_PMINSW, + /* 1BA */ ZYDIS_MNEM_PMINUB, + /* 1BB */ ZYDIS_MNEM_PMINUD, + /* 1BC */ ZYDIS_MNEM_PMINUW, + /* 1BD */ ZYDIS_MNEM_PMOVMSKB, + /* 1BE */ ZYDIS_MNEM_PMOVSXBD, + /* 1BF */ ZYDIS_MNEM_PMOVSXBQ, + /* 1C0 */ ZYDIS_MNEM_PMOVSXBW, + /* 1C1 */ ZYDIS_MNEM_PMOVSXDQ, + /* 1C2 */ ZYDIS_MNEM_PMOVSXWD, + /* 1C3 */ ZYDIS_MNEM_PMOVSXWQ, + /* 1C4 */ ZYDIS_MNEM_PMOVZXBD, + /* 1C5 */ ZYDIS_MNEM_PMOVZXBQ, + /* 1C6 */ ZYDIS_MNEM_PMOVZXBW, + /* 1C7 */ ZYDIS_MNEM_PMOVZXDQ, + /* 1C8 */ ZYDIS_MNEM_PMOVZXWD, + /* 1C9 */ ZYDIS_MNEM_PMOVZXWQ, + /* 1CA */ ZYDIS_MNEM_PMULDQ, + /* 1CB */ ZYDIS_MNEM_PMULHRSW, + /* 1CC */ ZYDIS_MNEM_PMULHRW, + /* 1CD */ ZYDIS_MNEM_PMULHUW, + /* 1CE */ ZYDIS_MNEM_PMULHW, + /* 1CF */ ZYDIS_MNEM_PMULLD, + /* 1D0 */ ZYDIS_MNEM_PMULLW, + /* 1D1 */ ZYDIS_MNEM_PMULUDQ, + /* 1D2 */ ZYDIS_MNEM_POP, + /* 1D3 */ ZYDIS_MNEM_POPA, + /* 1D4 */ ZYDIS_MNEM_POPAD, + /* 1D5 */ ZYDIS_MNEM_POPCNT, + /* 1D6 */ ZYDIS_MNEM_POPFD, + /* 1D7 */ ZYDIS_MNEM_POPFQ, + /* 1D8 */ ZYDIS_MNEM_POPFW, + /* 1D9 */ ZYDIS_MNEM_POR, + /* 1DA */ ZYDIS_MNEM_PREFETCH, + /* 1DB */ ZYDIS_MNEM_PREFETCHNTA, + /* 1DC */ ZYDIS_MNEM_PREFETCHT0, + /* 1DD */ ZYDIS_MNEM_PREFETCHT1, + /* 1DE */ ZYDIS_MNEM_PREFETCHT2, + /* 1DF */ ZYDIS_MNEM_PSADBW, + /* 1E0 */ ZYDIS_MNEM_PSHUFB, + /* 1E1 */ ZYDIS_MNEM_PSHUFD, + /* 1E2 */ ZYDIS_MNEM_PSHUFHW, + /* 1E3 */ ZYDIS_MNEM_PSHUFLW, + /* 1E4 */ ZYDIS_MNEM_PSHUFW, + /* 1E5 */ ZYDIS_MNEM_PSIGNB, + /* 1E6 */ ZYDIS_MNEM_PSIGND, + /* 1E7 */ ZYDIS_MNEM_PSIGNW, + /* 1E8 */ ZYDIS_MNEM_PSLLD, + /* 1E9 */ ZYDIS_MNEM_PSLLDQ, + /* 1EA */ ZYDIS_MNEM_PSLLQ, + /* 1EB */ ZYDIS_MNEM_PSLLW, + /* 1EC */ ZYDIS_MNEM_PSRAD, + /* 1ED */ ZYDIS_MNEM_PSRAW, + /* 1EE */ ZYDIS_MNEM_PSRLD, + /* 1EF */ ZYDIS_MNEM_PSRLDQ, + /* 1F0 */ ZYDIS_MNEM_PSRLQ, + /* 1F1 */ ZYDIS_MNEM_PSRLW, + /* 1F2 */ ZYDIS_MNEM_PSUBB, + /* 1F3 */ ZYDIS_MNEM_PSUBD, + /* 1F4 */ ZYDIS_MNEM_PSUBQ, + /* 1F5 */ ZYDIS_MNEM_PSUBSB, + /* 1F6 */ ZYDIS_MNEM_PSUBSW, + /* 1F7 */ ZYDIS_MNEM_PSUBUSB, + /* 1F8 */ ZYDIS_MNEM_PSUBUSW, + /* 1F9 */ ZYDIS_MNEM_PSUBW, + /* 1FA */ ZYDIS_MNEM_PSWAPD, + /* 1FB */ ZYDIS_MNEM_PTEST, + /* 1FC */ ZYDIS_MNEM_PUNPCKHBW, + /* 1FD */ ZYDIS_MNEM_PUNPCKHDQ, + /* 1FE */ ZYDIS_MNEM_PUNPCKHQDQ, + /* 1FF */ ZYDIS_MNEM_PUNPCKHWD, + /* 200 */ ZYDIS_MNEM_PUNPCKLBW, + /* 201 */ ZYDIS_MNEM_PUNPCKLDQ, + /* 202 */ ZYDIS_MNEM_PUNPCKLQDQ, + /* 203 */ ZYDIS_MNEM_PUNPCKLWD, + /* 204 */ ZYDIS_MNEM_PUSH, + /* 205 */ ZYDIS_MNEM_PUSHA, + /* 206 */ ZYDIS_MNEM_PUSHAD, + /* 207 */ ZYDIS_MNEM_PUSHFD, + /* 208 */ ZYDIS_MNEM_PUSHFQ, + /* 209 */ ZYDIS_MNEM_PUSHFW, + /* 20A */ ZYDIS_MNEM_PXOR, + /* 20B */ ZYDIS_MNEM_RCL, + /* 20C */ ZYDIS_MNEM_RCPPS, + /* 20D */ ZYDIS_MNEM_RCPSS, + /* 20E */ ZYDIS_MNEM_RCR, + /* 20F */ ZYDIS_MNEM_RDMSR, + /* 210 */ ZYDIS_MNEM_RDPMC, + /* 211 */ ZYDIS_MNEM_RDRAND, + /* 212 */ ZYDIS_MNEM_RDTSC, + /* 213 */ ZYDIS_MNEM_RDTSCP, + /* 214 */ ZYDIS_MNEM_REP, + /* 215 */ ZYDIS_MNEM_REPNE, + /* 216 */ ZYDIS_MNEM_RET, + /* 217 */ ZYDIS_MNEM_RETF, + /* 218 */ ZYDIS_MNEM_ROL, + /* 219 */ ZYDIS_MNEM_ROR, + /* 21A */ ZYDIS_MNEM_ROUNDPD, + /* 21B */ ZYDIS_MNEM_ROUNDPS, + /* 21C */ ZYDIS_MNEM_ROUNDSD, + /* 21D */ ZYDIS_MNEM_ROUNDSS, + /* 21E */ ZYDIS_MNEM_RSM, + /* 21F */ ZYDIS_MNEM_RSQRTPS, + /* 220 */ ZYDIS_MNEM_RSQRTSS, + /* 221 */ ZYDIS_MNEM_SAHF, + /* 222 */ ZYDIS_MNEM_SALC, + /* 223 */ ZYDIS_MNEM_SAR, + /* 224 */ ZYDIS_MNEM_SBB, + /* 225 */ ZYDIS_MNEM_SCASB, + /* 226 */ ZYDIS_MNEM_SCASD, + /* 227 */ ZYDIS_MNEM_SCASQ, + /* 228 */ ZYDIS_MNEM_SCASW, + /* 229 */ ZYDIS_MNEM_SETA, + /* 22A */ ZYDIS_MNEM_SETAE, + /* 22B */ ZYDIS_MNEM_SETB, + /* 22C */ ZYDIS_MNEM_SETBE, + /* 22D */ ZYDIS_MNEM_SETE, + /* 22E */ ZYDIS_MNEM_SETG, + /* 22F */ ZYDIS_MNEM_SETGE, + /* 230 */ ZYDIS_MNEM_SETL, + /* 231 */ ZYDIS_MNEM_SETLE, + /* 232 */ ZYDIS_MNEM_SETNE, + /* 233 */ ZYDIS_MNEM_SETNO, + /* 234 */ ZYDIS_MNEM_SETNP, + /* 235 */ ZYDIS_MNEM_SETNS, + /* 236 */ ZYDIS_MNEM_SETO, + /* 237 */ ZYDIS_MNEM_SETP, + /* 238 */ ZYDIS_MNEM_SETS, + /* 239 */ ZYDIS_MNEM_SFENCE, + /* 23A */ ZYDIS_MNEM_SGDT, + /* 23B */ ZYDIS_MNEM_SHL, + /* 23C */ ZYDIS_MNEM_SHLD, + /* 23D */ ZYDIS_MNEM_SHR, + /* 23E */ ZYDIS_MNEM_SHRD, + /* 23F */ ZYDIS_MNEM_SHUFPD, + /* 240 */ ZYDIS_MNEM_SHUFPS, + /* 241 */ ZYDIS_MNEM_SIDT, + /* 242 */ ZYDIS_MNEM_SKINIT, + /* 243 */ ZYDIS_MNEM_SLDT, + /* 244 */ ZYDIS_MNEM_SMSW, + /* 245 */ ZYDIS_MNEM_SQRTPD, + /* 246 */ ZYDIS_MNEM_SQRTPS, + /* 247 */ ZYDIS_MNEM_SQRTSD, + /* 248 */ ZYDIS_MNEM_SQRTSS, + /* 249 */ ZYDIS_MNEM_STC, + /* 24A */ ZYDIS_MNEM_STD, + /* 24B */ ZYDIS_MNEM_STGI, + /* 24C */ ZYDIS_MNEM_STI, + /* 24D */ ZYDIS_MNEM_STMXCSR, + /* 24E */ ZYDIS_MNEM_STOSB, + /* 24F */ ZYDIS_MNEM_STOSD, + /* 250 */ ZYDIS_MNEM_STOSQ, + /* 251 */ ZYDIS_MNEM_STOSW, + /* 252 */ ZYDIS_MNEM_STR, + /* 253 */ ZYDIS_MNEM_SUB, + /* 254 */ ZYDIS_MNEM_SUBPD, + /* 255 */ ZYDIS_MNEM_SUBPS, + /* 256 */ ZYDIS_MNEM_SUBSD, + /* 257 */ ZYDIS_MNEM_SUBSS, + /* 258 */ ZYDIS_MNEM_SWAPGS, + /* 259 */ ZYDIS_MNEM_SYSCALL, + /* 25A */ ZYDIS_MNEM_SYSENTER, + /* 25B */ ZYDIS_MNEM_SYSEXIT, + /* 25C */ ZYDIS_MNEM_SYSRET, + /* 25D */ ZYDIS_MNEM_TEST, + /* 25E */ ZYDIS_MNEM_UCOMISD, + /* 25F */ ZYDIS_MNEM_UCOMISS, + /* 260 */ ZYDIS_MNEM_UD2, + /* 261 */ ZYDIS_MNEM_UNPCKHPD, + /* 262 */ ZYDIS_MNEM_UNPCKHPS, + /* 263 */ ZYDIS_MNEM_UNPCKLPD, + /* 264 */ ZYDIS_MNEM_UNPCKLPS, + /* 265 */ ZYDIS_MNEM_VADDPD, + /* 266 */ ZYDIS_MNEM_VADDPS, + /* 267 */ ZYDIS_MNEM_VADDSD, + /* 268 */ ZYDIS_MNEM_VADDSS, + /* 269 */ ZYDIS_MNEM_VADDSUBPD, + /* 26A */ ZYDIS_MNEM_VADDSUBPS, + /* 26B */ ZYDIS_MNEM_VAESDEC, + /* 26C */ ZYDIS_MNEM_VAESDECLAST, + /* 26D */ ZYDIS_MNEM_VAESENC, + /* 26E */ ZYDIS_MNEM_VAESENCLAST, + /* 26F */ ZYDIS_MNEM_VAESIMC, + /* 270 */ ZYDIS_MNEM_VAESKEYGENASSIST, + /* 271 */ ZYDIS_MNEM_VANDNPD, + /* 272 */ ZYDIS_MNEM_VANDNPS, + /* 273 */ ZYDIS_MNEM_VANDPD, + /* 274 */ ZYDIS_MNEM_VANDPS, + /* 275 */ ZYDIS_MNEM_VBLENDPD, + /* 276 */ ZYDIS_MNEM_VBLENDPS, + /* 277 */ ZYDIS_MNEM_VBLENDVPD, + /* 278 */ ZYDIS_MNEM_VBLENDVPS, + /* 279 */ ZYDIS_MNEM_VBROADCASTSD, + /* 27A */ ZYDIS_MNEM_VBROADCASTSS, + /* 27B */ ZYDIS_MNEM_VCMPPD, + /* 27C */ ZYDIS_MNEM_VCMPPS, + /* 27D */ ZYDIS_MNEM_VCMPSD, + /* 27E */ ZYDIS_MNEM_VCMPSS, + /* 27F */ ZYDIS_MNEM_VCOMISD, + /* 280 */ ZYDIS_MNEM_VCOMISS, + /* 281 */ ZYDIS_MNEM_VCVTDQ2PD, + /* 282 */ ZYDIS_MNEM_VCVTDQ2PS, + /* 283 */ ZYDIS_MNEM_VCVTPD2DQ, + /* 284 */ ZYDIS_MNEM_VCVTPD2PS, + /* 285 */ ZYDIS_MNEM_VCVTPS2DQ, + /* 286 */ ZYDIS_MNEM_VCVTPS2PD, + /* 287 */ ZYDIS_MNEM_VCVTSD2SI, + /* 288 */ ZYDIS_MNEM_VCVTSD2SS, + /* 289 */ ZYDIS_MNEM_VCVTSI2SD, + /* 28A */ ZYDIS_MNEM_VCVTSI2SS, + /* 28B */ ZYDIS_MNEM_VCVTSS2SD, + /* 28C */ ZYDIS_MNEM_VCVTSS2SI, + /* 28D */ ZYDIS_MNEM_VCVTTPD2DQ, + /* 28E */ ZYDIS_MNEM_VCVTTPS2DQ, + /* 28F */ ZYDIS_MNEM_VCVTTSD2SI, + /* 290 */ ZYDIS_MNEM_VCVTTSS2SI, + /* 291 */ ZYDIS_MNEM_VDIVPD, + /* 292 */ ZYDIS_MNEM_VDIVPS, + /* 293 */ ZYDIS_MNEM_VDIVSD, + /* 294 */ ZYDIS_MNEM_VDIVSS, + /* 295 */ ZYDIS_MNEM_VDPPD, + /* 296 */ ZYDIS_MNEM_VDPPS, + /* 297 */ ZYDIS_MNEM_VERR, + /* 298 */ ZYDIS_MNEM_VERW, + /* 299 */ ZYDIS_MNEM_VEXTRACTF128, + /* 29A */ ZYDIS_MNEM_VEXTRACTPS, + /* 29B */ ZYDIS_MNEM_VHADDPD, + /* 29C */ ZYDIS_MNEM_VHADDPS, + /* 29D */ ZYDIS_MNEM_VHSUBPD, + /* 29E */ ZYDIS_MNEM_VHSUBPS, + /* 29F */ ZYDIS_MNEM_VINSERTF128, + /* 2A0 */ ZYDIS_MNEM_VINSERTPS, + /* 2A1 */ ZYDIS_MNEM_VLDDQU, + /* 2A2 */ ZYDIS_MNEM_VMASKMOVDQU, + /* 2A3 */ ZYDIS_MNEM_VMASKMOVPD, + /* 2A4 */ ZYDIS_MNEM_VMASKMOVPS, + /* 2A5 */ ZYDIS_MNEM_VMAXPD, + /* 2A6 */ ZYDIS_MNEM_VMAXPS, + /* 2A7 */ ZYDIS_MNEM_VMAXSD, + /* 2A8 */ ZYDIS_MNEM_VMAXSS, + /* 2A9 */ ZYDIS_MNEM_VMCALL, + /* 2AA */ ZYDIS_MNEM_VMCLEAR, + /* 2AB */ ZYDIS_MNEM_VMINPD, + /* 2AC */ ZYDIS_MNEM_VMINPS, + /* 2AD */ ZYDIS_MNEM_VMINSD, + /* 2AE */ ZYDIS_MNEM_VMINSS, + /* 2AF */ ZYDIS_MNEM_VMLAUNCH, + /* 2B0 */ ZYDIS_MNEM_VMLOAD, + /* 2B1 */ ZYDIS_MNEM_VMMCALL, + /* 2B2 */ ZYDIS_MNEM_VMOVAPD, + /* 2B3 */ ZYDIS_MNEM_VMOVAPS, + /* 2B4 */ ZYDIS_MNEM_VMOVD, + /* 2B5 */ ZYDIS_MNEM_VMOVDDUP, + /* 2B6 */ ZYDIS_MNEM_VMOVDQA, + /* 2B7 */ ZYDIS_MNEM_VMOVDQU, + /* 2B8 */ ZYDIS_MNEM_VMOVHLPS, + /* 2B9 */ ZYDIS_MNEM_VMOVHPD, + /* 2BA */ ZYDIS_MNEM_VMOVHPS, + /* 2BB */ ZYDIS_MNEM_VMOVLHPS, + /* 2BC */ ZYDIS_MNEM_VMOVLPD, + /* 2BD */ ZYDIS_MNEM_VMOVLPS, + /* 2BE */ ZYDIS_MNEM_VMOVMSKPD, + /* 2BF */ ZYDIS_MNEM_VMOVMSKPS, + /* 2C0 */ ZYDIS_MNEM_VMOVNTDQ, + /* 2C1 */ ZYDIS_MNEM_VMOVNTDQA, + /* 2C2 */ ZYDIS_MNEM_VMOVNTPD, + /* 2C3 */ ZYDIS_MNEM_VMOVNTPS, + /* 2C4 */ ZYDIS_MNEM_VMOVQ, + /* 2C5 */ ZYDIS_MNEM_VMOVSD, + /* 2C6 */ ZYDIS_MNEM_VMOVSHDUP, + /* 2C7 */ ZYDIS_MNEM_VMOVSLDUP, + /* 2C8 */ ZYDIS_MNEM_VMOVSS, + /* 2C9 */ ZYDIS_MNEM_VMOVUPD, + /* 2CA */ ZYDIS_MNEM_VMOVUPS, + /* 2CB */ ZYDIS_MNEM_VMPSADBW, + /* 2CC */ ZYDIS_MNEM_VMPTRLD, + /* 2CD */ ZYDIS_MNEM_VMPTRST, + /* 2CE */ ZYDIS_MNEM_VMREAD, + /* 2CF */ ZYDIS_MNEM_VMRESUME, + /* 2D0 */ ZYDIS_MNEM_VMRUN, + /* 2D1 */ ZYDIS_MNEM_VMSAVE, + /* 2D2 */ ZYDIS_MNEM_VMULPD, + /* 2D3 */ ZYDIS_MNEM_VMULPS, + /* 2D4 */ ZYDIS_MNEM_VMULSD, + /* 2D5 */ ZYDIS_MNEM_VMULSS, + /* 2D6 */ ZYDIS_MNEM_VMWRITE, + /* 2D7 */ ZYDIS_MNEM_VMXOFF, + /* 2D8 */ ZYDIS_MNEM_VMXON, + /* 2D9 */ ZYDIS_MNEM_VORPD, + /* 2DA */ ZYDIS_MNEM_VORPS, + /* 2DB */ ZYDIS_MNEM_VPABSB, + /* 2DC */ ZYDIS_MNEM_VPABSD, + /* 2DD */ ZYDIS_MNEM_VPABSW, + /* 2DE */ ZYDIS_MNEM_VPACKSSDW, + /* 2DF */ ZYDIS_MNEM_VPACKSSWB, + /* 2E0 */ ZYDIS_MNEM_VPACKUSDW, + /* 2E1 */ ZYDIS_MNEM_VPACKUSWB, + /* 2E2 */ ZYDIS_MNEM_VPADDB, + /* 2E3 */ ZYDIS_MNEM_VPADDD, + /* 2E4 */ ZYDIS_MNEM_VPADDQ, + /* 2E5 */ ZYDIS_MNEM_VPADDSB, + /* 2E6 */ ZYDIS_MNEM_VPADDSW, + /* 2E7 */ ZYDIS_MNEM_VPADDUSB, + /* 2E8 */ ZYDIS_MNEM_VPADDUSW, + /* 2E9 */ ZYDIS_MNEM_VPADDW, + /* 2EA */ ZYDIS_MNEM_VPALIGNR, + /* 2EB */ ZYDIS_MNEM_VPAND, + /* 2EC */ ZYDIS_MNEM_VPANDN, + /* 2ED */ ZYDIS_MNEM_VPAVGB, + /* 2EE */ ZYDIS_MNEM_VPAVGW, + /* 2EF */ ZYDIS_MNEM_VPBLENDVB, + /* 2F0 */ ZYDIS_MNEM_VPBLENDW, + /* 2F1 */ ZYDIS_MNEM_VPCLMULQDQ, + /* 2F2 */ ZYDIS_MNEM_VPCMPEQB, + /* 2F3 */ ZYDIS_MNEM_VPCMPEQD, + /* 2F4 */ ZYDIS_MNEM_VPCMPEQQ, + /* 2F5 */ ZYDIS_MNEM_VPCMPEQW, + /* 2F6 */ ZYDIS_MNEM_VPCMPESTRI, + /* 2F7 */ ZYDIS_MNEM_VPCMPESTRM, + /* 2F8 */ ZYDIS_MNEM_VPCMPGTB, + /* 2F9 */ ZYDIS_MNEM_VPCMPGTD, + /* 2FA */ ZYDIS_MNEM_VPCMPGTQ, + /* 2FB */ ZYDIS_MNEM_VPCMPGTW, + /* 2FC */ ZYDIS_MNEM_VPCMPISTRI, + /* 2FD */ ZYDIS_MNEM_VPCMPISTRM, + /* 2FE */ ZYDIS_MNEM_VPERM2F128, + /* 2FF */ ZYDIS_MNEM_VPERMILPD, + /* 300 */ ZYDIS_MNEM_VPERMILPS, + /* 301 */ ZYDIS_MNEM_VPEXTRB, + /* 302 */ ZYDIS_MNEM_VPEXTRD, + /* 303 */ ZYDIS_MNEM_VPEXTRQ, + /* 304 */ ZYDIS_MNEM_VPEXTRW, + /* 305 */ ZYDIS_MNEM_VPHADDD, + /* 306 */ ZYDIS_MNEM_VPHADDSW, + /* 307 */ ZYDIS_MNEM_VPHADDW, + /* 308 */ ZYDIS_MNEM_VPHMINPOSUW, + /* 309 */ ZYDIS_MNEM_VPHSUBD, + /* 30A */ ZYDIS_MNEM_VPHSUBSW, + /* 30B */ ZYDIS_MNEM_VPHSUBW, + /* 30C */ ZYDIS_MNEM_VPINSRB, + /* 30D */ ZYDIS_MNEM_VPINSRD, + /* 30E */ ZYDIS_MNEM_VPINSRQ, + /* 30F */ ZYDIS_MNEM_VPINSRW, + /* 310 */ ZYDIS_MNEM_VPMADDUBSW, + /* 311 */ ZYDIS_MNEM_VPMADDWD, + /* 312 */ ZYDIS_MNEM_VPMAXSB, + /* 313 */ ZYDIS_MNEM_VPMAXSD, + /* 314 */ ZYDIS_MNEM_VPMAXSW, + /* 315 */ ZYDIS_MNEM_VPMAXUB, + /* 316 */ ZYDIS_MNEM_VPMAXUD, + /* 317 */ ZYDIS_MNEM_VPMAXUW, + /* 318 */ ZYDIS_MNEM_VPMINSB, + /* 319 */ ZYDIS_MNEM_VPMINSD, + /* 31A */ ZYDIS_MNEM_VPMINSW, + /* 31B */ ZYDIS_MNEM_VPMINUB, + /* 31C */ ZYDIS_MNEM_VPMINUD, + /* 31D */ ZYDIS_MNEM_VPMINUW, + /* 31E */ ZYDIS_MNEM_VPMOVMSKB, + /* 31F */ ZYDIS_MNEM_VPMOVSXBD, + /* 320 */ ZYDIS_MNEM_VPMOVSXBQ, + /* 321 */ ZYDIS_MNEM_VPMOVSXBW, + /* 322 */ ZYDIS_MNEM_VPMOVSXWD, + /* 323 */ ZYDIS_MNEM_VPMOVSXWQ, + /* 324 */ ZYDIS_MNEM_VPMOVZXBD, + /* 325 */ ZYDIS_MNEM_VPMOVZXBQ, + /* 326 */ ZYDIS_MNEM_VPMOVZXBW, + /* 327 */ ZYDIS_MNEM_VPMOVZXDQ, + /* 328 */ ZYDIS_MNEM_VPMOVZXWD, + /* 329 */ ZYDIS_MNEM_VPMOVZXWQ, + /* 32A */ ZYDIS_MNEM_VPMULDQ, + /* 32B */ ZYDIS_MNEM_VPMULHRSW, + /* 32C */ ZYDIS_MNEM_VPMULHUW, + /* 32D */ ZYDIS_MNEM_VPMULHW, + /* 32E */ ZYDIS_MNEM_VPMULLD, + /* 32F */ ZYDIS_MNEM_VPMULLW, + /* 330 */ ZYDIS_MNEM_VPOR, + /* 331 */ ZYDIS_MNEM_VPSADBW, + /* 332 */ ZYDIS_MNEM_VPSHUFB, + /* 333 */ ZYDIS_MNEM_VPSHUFD, + /* 334 */ ZYDIS_MNEM_VPSHUFHW, + /* 335 */ ZYDIS_MNEM_VPSHUFLW, + /* 336 */ ZYDIS_MNEM_VPSIGNB, + /* 337 */ ZYDIS_MNEM_VPSIGND, + /* 338 */ ZYDIS_MNEM_VPSIGNW, + /* 339 */ ZYDIS_MNEM_VPSLLD, + /* 33A */ ZYDIS_MNEM_VPSLLDQ, + /* 33B */ ZYDIS_MNEM_VPSLLQ, + /* 33C */ ZYDIS_MNEM_VPSLLW, + /* 33D */ ZYDIS_MNEM_VPSRAD, + /* 33E */ ZYDIS_MNEM_VPSRAW, + /* 33F */ ZYDIS_MNEM_VPSRLD, + /* 340 */ ZYDIS_MNEM_VPSRLDQ, + /* 341 */ ZYDIS_MNEM_VPSRLQ, + /* 342 */ ZYDIS_MNEM_VPSRLW, + /* 343 */ ZYDIS_MNEM_VPSUBB, + /* 344 */ ZYDIS_MNEM_VPSUBD, + /* 345 */ ZYDIS_MNEM_VPSUBQ, + /* 346 */ ZYDIS_MNEM_VPSUBSB, + /* 347 */ ZYDIS_MNEM_VPSUBSW, + /* 348 */ ZYDIS_MNEM_VPSUBUSB, + /* 349 */ ZYDIS_MNEM_VPSUBUSW, + /* 34A */ ZYDIS_MNEM_VPSUBW, + /* 34B */ ZYDIS_MNEM_VPTEST, + /* 34C */ ZYDIS_MNEM_VPUNPCKHBW, + /* 34D */ ZYDIS_MNEM_VPUNPCKHDQ, + /* 34E */ ZYDIS_MNEM_VPUNPCKHQDQ, + /* 34F */ ZYDIS_MNEM_VPUNPCKHWD, + /* 350 */ ZYDIS_MNEM_VPUNPCKLBW, + /* 351 */ ZYDIS_MNEM_VPUNPCKLDQ, + /* 352 */ ZYDIS_MNEM_VPUNPCKLQDQ, + /* 353 */ ZYDIS_MNEM_VPUNPCKLWD, + /* 354 */ ZYDIS_MNEM_VPXOR, + /* 355 */ ZYDIS_MNEM_VRCPPS, + /* 356 */ ZYDIS_MNEM_VRCPSS, + /* 357 */ ZYDIS_MNEM_VROUNDPD, + /* 358 */ ZYDIS_MNEM_VROUNDPS, + /* 359 */ ZYDIS_MNEM_VROUNDSD, + /* 35A */ ZYDIS_MNEM_VROUNDSS, + /* 35B */ ZYDIS_MNEM_VRSQRTPS, + /* 35C */ ZYDIS_MNEM_VRSQRTSS, + /* 35D */ ZYDIS_MNEM_VSHUFPD, + /* 35E */ ZYDIS_MNEM_VSHUFPS, + /* 35F */ ZYDIS_MNEM_VSQRTPD, + /* 360 */ ZYDIS_MNEM_VSQRTPS, + /* 361 */ ZYDIS_MNEM_VSQRTSD, + /* 362 */ ZYDIS_MNEM_VSQRTSS, + /* 363 */ ZYDIS_MNEM_VSTMXCSR, + /* 364 */ ZYDIS_MNEM_VSUBPD, + /* 365 */ ZYDIS_MNEM_VSUBPS, + /* 366 */ ZYDIS_MNEM_VSUBSD, + /* 367 */ ZYDIS_MNEM_VSUBSS, + /* 368 */ ZYDIS_MNEM_VTESTPD, + /* 369 */ ZYDIS_MNEM_VTESTPS, + /* 36A */ ZYDIS_MNEM_VUCOMISD, + /* 36B */ ZYDIS_MNEM_VUCOMISS, + /* 36C */ ZYDIS_MNEM_VUNPCKHPD, + /* 36D */ ZYDIS_MNEM_VUNPCKHPS, + /* 36E */ ZYDIS_MNEM_VUNPCKLPD, + /* 36F */ ZYDIS_MNEM_VUNPCKLPS, + /* 370 */ ZYDIS_MNEM_VXORPD, + /* 371 */ ZYDIS_MNEM_VXORPS, + /* 372 */ ZYDIS_MNEM_VZEROALL, + /* 373 */ ZYDIS_MNEM_VZEROUPPER, + /* 374 */ ZYDIS_MNEM_WAIT, + /* 375 */ ZYDIS_MNEM_WBINVD, + /* 376 */ ZYDIS_MNEM_WRMSR, + /* 377 */ ZYDIS_MNEM_XADD, + /* 378 */ ZYDIS_MNEM_XCHG, + /* 379 */ ZYDIS_MNEM_XCRYPTCBC, + /* 37A */ ZYDIS_MNEM_XCRYPTCFB, + /* 37B */ ZYDIS_MNEM_XCRYPTCTR, + /* 37C */ ZYDIS_MNEM_XCRYPTECB, + /* 37D */ ZYDIS_MNEM_XCRYPTOFB, + /* 37E */ ZYDIS_MNEM_XGETBV, + /* 37F */ ZYDIS_MNEM_XLATB, + /* 380 */ ZYDIS_MNEM_XOR, + /* 381 */ ZYDIS_MNEM_XORPD, + /* 382 */ ZYDIS_MNEM_XORPS, + /* 383 */ ZYDIS_MNEM_XRSTOR, + /* 384 */ ZYDIS_MNEM_XSAVE, + /* 385 */ ZYDIS_MNEM_XSETBV, + /* 386 */ ZYDIS_MNEM_XSHA1, + /* 387 */ ZYDIS_MNEM_XSHA256, + /* 388 */ ZYDIS_MNEM_XSTORE, + + ZYDIS_MNEM_FORCE_WORD = 0x7FFF +} ZydisInstructionMnemonic; + +/* TODO: Port instruction definition types */ + +#ifdef __cplusplus +} +#endif + +#endif // _ZYDIS_OPCODETABLE_H_ \ No newline at end of file diff --git a/Bindings/C/ZydisSymbolResolver.cpp b/Bindings/C/ZydisSymbolResolver.cpp new file mode 100644 index 0000000..6d8277a --- /dev/null +++ b/Bindings/C/ZydisSymbolResolver.cpp @@ -0,0 +1,144 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#include "ZydisSymbolResolver.h" +#include + +/* CustomSymbolResolver ========================================================================= */ + +inline Zydis::BaseSymbolResolver* ZydisBaseSymbolResolver_CppPtr( + ZydisBaseSymbolResolverContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline const Zydis::BaseSymbolResolver* ZydisBaseSymbolResolver_CppPtr( + const ZydisBaseSymbolResolverContext *ctx) +{ + return reinterpret_cast(ctx); +} + +inline ZydisBaseSymbolResolverContext* ZydisBaseSymbolResolver_CPtr( + Zydis::BaseSymbolResolver *ptr) +{ + return reinterpret_cast(ptr); +} + +inline const ZydisBaseSymbolResolverContext* ZydisBaseSymbolResolver_CPtr( + const Zydis::BaseSymbolResolver *ptr) +{ + return reinterpret_cast(ptr); +} + +inline Zydis::InstructionInfo* ZydisInstructionInfo_CppPtr( + ZydisInstructionInfo *ptr) +{ + static_assert(sizeof(*ptr) == sizeof(Zydis::InstructionInfo), "broken struct"); + return reinterpret_cast(ptr); +} + +inline const Zydis::InstructionInfo* ZydisInstructionInfo_CppPtr( + const ZydisInstructionInfo *ptr) +{ + static_assert(sizeof(*ptr) == sizeof(Zydis::InstructionInfo), "broken struct"); + return reinterpret_cast(ptr); +} + +inline ZydisInstructionInfo* ZydisInstructionInfo_CPtr( + Zydis::InstructionInfo *ptr) +{ + return reinterpret_cast(ptr); +} + +inline const ZydisInstructionInfo* ZydisInstructionInfo_CPtr( + const Zydis::InstructionInfo *ptr) +{ + return reinterpret_cast(ptr); +} + +/* Internal helper class ----------------------------------------------------------------------- */ + +namespace +{ + +class ZydisCustomSymbolResolver : public Zydis::BaseSymbolResolver +{ + ZydisResolveSymbol_t m_resolverCb; + void* m_userData; +public: + /** + * @brief Constructor. + * @param resolverCb The resolver callback. + * @param userData User provided pointer to arbitrary data passed to resolve callback. + */ + ZydisCustomSymbolResolver(ZydisResolveSymbol_t resolverCb, void *userData); + /** + * @brief Destructor. + */ + ~ZydisCustomSymbolResolver() override = default; +public: + /** + * @brief Resolves a symbol. + * @param info The instruction info. + * @param address The address. + * @param offset Reference to an unsigned 64 bit integer that receives an offset + * relative to the base address of the symbol. + * @return The name of the symbol, if the symbol was found, @c NULL if not. + */ + const char* resolveSymbol(const Zydis::InstructionInfo &info, uint64_t address, + uint64_t &offset) override; +}; + +ZydisCustomSymbolResolver::ZydisCustomSymbolResolver(ZydisResolveSymbol_t resolverCb, + void *userData) + : m_resolverCb(resolverCb) + , m_userData(userData) +{ + +} + +const char* ZydisCustomSymbolResolver::resolveSymbol( + const Zydis::InstructionInfo &info, uint64_t address, uint64_t &offset) +{ + return m_resolverCb(ZydisInstructionInfo_CPtr(&info), address, &offset, m_userData); +} + +} // anon namespace + +/* C API implementation ------------------------------------------------------------------------ */ + +ZydisBaseSymbolResolverContext* ZydisCustomSymbolResolver_Create( + ZydisResolveSymbol_t resolverCb, + void *userData) +{ + return ZydisBaseSymbolResolver_CPtr(new ZydisCustomSymbolResolver(resolverCb, userData)); +} + +/* ============================================================================================= */ \ No newline at end of file diff --git a/Bindings/C/ZydisSymbolResolver.h b/Bindings/C/ZydisSymbolResolver.h new file mode 100644 index 0000000..371a121 --- /dev/null +++ b/Bindings/C/ZydisSymbolResolver.h @@ -0,0 +1,126 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#ifndef _ZYDIS_SYMBOLRESOLVER_H_ +#define _ZYDIS_SYMBOLRESOLVER_H_ + +#include "ZydisTypes.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* BaseSymbolResolver ======================================================================== */ + +typedef struct _ZydisBaseSymbolResolverContext { int a; } ZydisBaseSymbolResolverContext; + +/** + * @brief Releases a symbol resolver. + * @param ctx The context of the symbol resolver to free. + * The context may no longer used after it was released. + */ +void ZydisBaseSymbolResolver_Release(ZydisBaseSymbolResolverContext *ctx); + +/** + * @brief Resolves a symbol. + * @param ctx The symbol resolver context. + * @param info The instruction info. + * @param address The address. + * @param offset Pointer to an unsigned 64 bit integer that receives an offset relative to + * the base address of the symbol. + * @return The name of the symbol if the symbol was found, else @c NULL. + */ +const char* ZydisBaseSymbolResolver_ResolveSymbol(ZydisBaseSymbolResolverContext *ctx, + const ZydisInstructionInfo *info, uint64_t address, uint64_t *offset); + +/* ExactSymbolResolver ======================================================================= */ + +/** + * @brief Creates an exact symbol resolver. + * @return @c NULL if it fails, else a symbol resolver context. + * @see BaseSymbolResolver_Release + * An exact resolver is a simple symbol resolver that only matches exact addresses. + */ +// TODO: verify return value +ZydisBaseSymbolResolverContext* ZydisExactSymbolResolver_Create(void); + +/** + * @brief Query if the given address is a known symbol. + * @param ctx The exact symbol resolver context. + * @param address The address. + * @return @c true if the address is known, @c false if not. + */ +bool ZydisExactSymbolResolver_ContainsSymbol(ZydisBaseSymbolResolverContext *ctx, uint64_t address); + +/** + * @brief Adds or changes a symbol. + * @param ctx The exact symbol resolver context. + * @param address The address. + * @param name The symbol name. + */ +void ZydisExactSymbolResolverContext_SetSymbol(ZydisBaseSymbolResolverContext *ctx, + uint64_t address, const char* name); + +/** + * @brief Removes the symbol described by address. + * @param ctx The exact symbol resolver context. + * @param address The address. + * This will invalidate all char-pointers to the affected symbol name. + */ +void ZydisExactSymbolResolverContext_RemoveSymbol(ZydisBaseSymbolResolverContext *ctx, + uint64_t address); + +/** + * @brief Clears the symbol tree. + * @param ctx The exact symbol resolver context. + */ +void ExactSymbolResolverContext_Clear(ZydisBaseSymbolResolverContext *ctx); + +/* CustomSymbolResolver ====================================================================== */ + +typedef const char* (*ZydisResolveSymbol_t)(const ZydisInstructionInfo *info, uint64_t address, + uint64_t *offset, void *userData); + +/** + * @brief Creates a custom symbol resolver. + * @param resolverCb The resolver callback consulted when symbols need to be resolved. + * @param userData A pointer to arbitrary data passed to the resolver callback. + * May also be @c NULL. + * @return @c NULL if it fails, else a symbol resolver context. + */ +ZydisBaseSymbolResolverContext* CustomSymbolResolver_Create(ZydisResolveSymbol_t resolverCb, + void *userData); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZYDIS_SYMBOLRESOLVER_H_ */ \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisDisassemblerTypes.h b/Bindings/C/ZydisTypes.h similarity index 70% rename from VerteronDisassemblerEngine/ZyDisDisassemblerTypes.h rename to Bindings/C/ZydisTypes.h index b80bd9a..5c9527c 100644 --- a/VerteronDisassemblerEngine/ZyDisDisassemblerTypes.h +++ b/Bindings/C/ZydisTypes.h @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : athre0z - - Last change : 04. February 2015 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,14 +26,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ +***************************************************************************************************/ -#ifndef _VDE_ZyDisDISASSEMBLERTYPESC_H_ -#define _VDE_ZyDisDISASSEMBLERTYPESC_H_ +#ifndef _ZYDIS_TYPES_H_ +#define _ZYDIS_TYPES_H_ #include #include -#include "ZyDisOpcodeTable.h" +#include "ZydisOpcodeTable.h" #ifdef __cplusplus extern "C" @@ -45,218 +43,218 @@ extern "C" /** * @brief Values that represent additional flags of a decoded instruction. */ -typedef enum _ZyDisInstructionFlags /* : uint32_t */ +typedef enum _ZydisInstructionFlags /* : uint32_t */ { - IF_NONE = 0x00000000, + ZYDIS_IF_NONE = 0x00000000, /** * @brief The instruction was decoded in 16 bit disassembler mode. */ - IF_DISASSEMBLER_MODE_16 = 0x00000001, + ZYDIS_IF_DISASSEMBLER_MODE_16 = 0x00000001, /** * @brief The instruction was decoded in 32 bit disassembler mode. */ - IF_DISASSEMBLER_MODE_32 = 0x00000002, + ZYDIS_IF_DISASSEMBLER_MODE_32 = 0x00000002, /** * @brief The instruction was decoded in 64 bit disassembler mode. */ - IF_DISASSEMBLER_MODE_64 = 0x00000004, + ZYDIS_IF_DISASSEMBLER_MODE_64 = 0x00000004, /** * @brief The instruction has a segment prefix (0x26, 0x2E, 0x36, 0x3E, 0x64, 0x65). */ - IF_PREFIX_SEGMENT = 0x00000008, + ZYDIS_IF_PREFIX_SEGMENT = 0x00000008, /** * @brief The instruction has a lock prefix (0xF0). */ - IF_PREFIX_LOCK = 0x00000010, + ZYDIS_IF_PREFIX_LOCK = 0x00000010, /** * @brief The instruction has a repne prefix (0xF2). */ - IF_PREFIX_REPNE = 0x00000020, + ZYDIS_IF_PREFIX_REPNE = 0x00000020, /** * @brief The instruction has a rep prefix (0xF3). */ - IF_PREFIX_REP = 0x00000040, + ZYDIS_IF_PREFIX_REP = 0x00000040, /** * @brief The instruction has an operand size prefix (0x66). */ - IF_PREFIX_OPERAND_SIZE = 0x00000080, + ZYDIS_IF_PREFIX_OPERAND_SIZE = 0x00000080, /** * @brief The instruction has an address size prefix (0x67). */ - IF_PREFIX_ADDRESS_SIZE = 0x00000100, + ZYDIS_IF_PREFIX_ADDRESS_SIZE = 0x00000100, /** * @brief The instruction has a rex prefix (0x40 - 0x4F). */ - IF_PREFIX_REX = 0x00000200, + ZYDIS_IF_PREFIX_REX = 0x00000200, /** * @brief The instruction has a vex prefix (0xC4 or 0xC5). */ - IF_PREFIX_VEX = 0x00000400, + ZYDIS_IF_PREFIX_VEX = 0x00000400, /** * @brief The instruction has a modrm byte. */ - IF_MODRM = 0x00000800, + ZYDIS_IF_MODRM = 0x00000800, /** * @brief The instruction has a sib byte. */ - IF_SIB = 0x00001000, + ZYDIS_IF_SIB = 0x00001000, /** * @brief The instruction has an operand with a relative address. */ - IF_RELATIVE = 0x00002000, + ZYDIS_IF_RELATIVE = 0x00002000, /** * @brief An error occured while decoding the instruction. */ - IF_ERROR_MASK = 0xFFF00000, + ZYDIS_IF_ERROR_MASK = 0xFFF00000, /** * @brief End of input reached while decoding the instruction. */ - IF_ERROR_END_OF_INPUT = 0x00100000, + ZYDIS_IF_ERROR_END_OF_INPUT = 0x00100000, /** * @brief The instruction length has exceeded the maximum of 15 bytes. */ - IF_ERROR_LENGTH = 0x00200000, + ZYDIS_IF_ERROR_LENGTH = 0x00200000, /** * @brief The instruction is invalid. */ - IF_ERROR_INVALID = 0x00400000, + ZYDIS_IF_ERROR_INVALID = 0x00400000, /** * @brief The instruction is invalid in 64 bit mode. */ - IF_ERROR_INVALID_64 = 0x00800000, + ZYDIS_IF_ERROR_INVALID_64 = 0x00800000, /** * @brief An error occured while decoding the instruction operands. */ - IF_ERROR_OPERAND = 0x01000000, + ZYDIS_IF_ERROR_OPERAND = 0x01000000, - IF_FORCE_DWORD = 0x7FFFFFFF -} ZyDisInstructionFlags; + ZYDIS_IF_FORCE_DWORD = 0x7FFFFFFF +} ZydisInstructionFlags; /** * @brief Values that represent a cpu register. */ -typedef enum _ZyDisRegister /* : uint16_t */ +typedef enum _ZydisRegister /* : uint16_t */ { - REG_NONE, + ZYDIS_REG_NONE, /* 8 bit general purpose registers */ - REG_AL, REG_CL, REG_DL, REG_BL, - REG_AH, REG_CH, REG_DH, REG_BH, - REG_SPL, REG_BPL, REG_SIL, REG_DIL, - REG_R8B, REG_R9B, REG_R10B, REG_R11B, - REG_R12B, REG_R13B, REG_R14B, REG_R15B, + ZYDIS_REG_AL, ZYDIS_REG_CL, ZYDIS_REG_DL, ZYDIS_REG_BL, + ZYDIS_REG_AH, ZYDIS_REG_CH, ZYDIS_REG_DH, ZYDIS_REG_BH, + ZYDIS_REG_SPL, ZYDIS_REG_BPL, ZYDIS_REG_SIL, ZYDIS_REG_DIL, + ZYDIS_REG_R8B, ZYDIS_REG_R9B, ZYDIS_REG_R10B, ZYDIS_REG_R11B, + ZYDIS_REG_R12B, ZYDIS_REG_R13B, ZYDIS_REG_R14B, ZYDIS_REG_R15B, /* 16 bit general purpose registers */ - REG_AX, REG_CX, REG_DX, REG_BX, - REG_SP, REG_BP, REG_SI, REG_DI, - REG_R8W, REG_R9W, REG_R10W, REG_R11W, - REG_R12W, REG_R13W, REG_R14W, REG_R15W, + ZYDIS_REG_AX, ZYDIS_REG_CX, ZYDIS_REG_DX, ZYDIS_REG_BX, + ZYDIS_REG_SP, ZYDIS_REG_BP, ZYDIS_REG_SI, ZYDIS_REG_DI, + ZYDIS_REG_R8W, ZYDIS_REG_R9W, ZYDIS_REG_R10W, ZYDIS_REG_R11W, + ZYDIS_REG_R12W, ZYDIS_REG_R13W, ZYDIS_REG_R14W, ZYDIS_REG_R15W, /* 32 bit general purpose registers */ - REG_EAX, REG_ECX, REG_EDX, REG_EBX, - REG_ESP, REG_EBP, REG_ESI, REG_EDI, - REG_R8D, REG_R9D, REG_R10D, REG_R11D, - REG_R12D, REG_R13D, REG_R14D, REG_R15D, + ZYDIS_REG_EAX, ZYDIS_REG_ECX, ZYDIS_REG_EDX, ZYDIS_REG_EBX, + ZYDIS_REG_ESP, ZYDIS_REG_EBP, ZYDIS_REG_ESI, ZYDIS_REG_EDI, + ZYDIS_REG_R8D, ZYDIS_REG_R9D, ZYDIS_REG_R10D, ZYDIS_REG_R11D, + ZYDIS_REG_R12D, ZYDIS_REG_R13D, ZYDIS_REG_R14D, ZYDIS_REG_R15D, /* 64 bit general purpose registers */ - REG_RAX, REG_RCX, REG_RDX, REG_RBX, - REG_RSP, REG_RBP, REG_RSI, REG_RDI, - REG_R8, REG_R9, REG_R10, REG_R11, - REG_R12, REG_R13, REG_R14, REG_R15, + ZYDIS_REG_RAX, ZYDIS_REG_RCX, ZYDIS_REG_RDX, ZYDIS_REG_RBX, + ZYDIS_REG_RSP, ZYDIS_REG_RBP, ZYDIS_REG_RSI, ZYDIS_REG_RDI, + ZYDIS_REG_R8, ZYDIS_REG_R9, ZYDIS_REG_R10, ZYDIS_REG_R11, + ZYDIS_REG_R12, ZYDIS_REG_R13, ZYDIS_REG_R14, ZYDIS_REG_R15, /* segment registers */ - REG_ES, REG_CS, REG_SS, - REG_DS, REG_FS, REG_GS, + ZYDIS_REG_ES, ZYDIS_REG_CS, ZYDIS_REG_SS, + ZYDIS_REG_DS, ZYDIS_REG_FS, ZYDIS_REG_GS, /* control registers */ - REG_CR0, REG_CR1, REG_CR2, REG_CR3, - REG_CR4, REG_CR5, REG_CR6, REG_CR7, - REG_CR8, REG_CR9, REG_CR10, REG_CR11, - REG_CR12, REG_CR13, REG_CR14, REG_CR15, + ZYDIS_REG_CR0, ZYDIS_REG_CR1, ZYDIS_REG_CR2, ZYDIS_REG_CR3, + ZYDIS_REG_CR4, ZYDIS_REG_CR5, ZYDIS_REG_CR6, ZYDIS_REG_CR7, + ZYDIS_REG_CR8, ZYDIS_REG_CR9, ZYDIS_REG_CR10, ZYDIS_REG_CR11, + ZYDIS_REG_CR12, ZYDIS_REG_CR13, ZYDIS_REG_CR14, ZYDIS_REG_CR15, /* debug registers */ - REG_DR0, REG_DR1, REG_DR2, REG_DR3, - REG_DR4, REG_DR5, REG_DR6, REG_DR7, - REG_DR8, REG_DR9, REG_DR10, REG_DR11, - REG_DR12, REG_DR13, REG_DR14, REG_DR15, + ZYDIS_REG_DR0, ZYDIS_REG_DR1, ZYDIS_REG_DR2, ZYDIS_REG_DR3, + ZYDIS_REG_DR4, ZYDIS_REG_DR5, ZYDIS_REG_DR6, ZYDIS_REG_DR7, + ZYDIS_REG_DR8, ZYDIS_REG_DR9, ZYDIS_REG_DR10, ZYDIS_REG_DR11, + ZYDIS_REG_DR12, ZYDIS_REG_DR13, ZYDIS_REG_DR14, ZYDIS_REG_DR15, /* mmx registers */ - REG_MM0, REG_MM1, REG_MM2, REG_MM3, - REG_MM4, REG_MM5, REG_MM6, REG_MM7, + ZYDIS_REG_MM0, ZYDIS_REG_MM1, ZYDIS_REG_MM2, ZYDIS_REG_MM3, + ZYDIS_REG_MM4, ZYDIS_REG_MM5, ZYDIS_REG_MM6, ZYDIS_REG_MM7, /* x87 registers */ - REG_ST0, REG_ST1, REG_ST2, REG_ST3, - REG_ST4, REG_ST5, REG_ST6, REG_ST7, + ZYDIS_REG_ST0, ZYDIS_REG_ST1, ZYDIS_REG_ST2, ZYDIS_REG_ST3, + ZYDIS_REG_ST4, ZYDIS_REG_ST5, ZYDIS_REG_ST6, ZYDIS_REG_ST7, /* extended multimedia registers */ - REG_XMM0, REG_XMM1, REG_XMM2, REG_XMM3, - REG_XMM4, REG_XMM5, REG_XMM6, REG_XMM7, - REG_XMM8, REG_XMM9, REG_XMM10, REG_XMM11, - REG_XMM12, REG_XMM13, REG_XMM14, REG_XMM15, + ZYDIS_REG_XMM0, ZYDIS_REG_XMM1, ZYDIS_REG_XMM2, ZYDIS_REG_XMM3, + ZYDIS_REG_XMM4, ZYDIS_REG_XMM5, ZYDIS_REG_XMM6, ZYDIS_REG_XMM7, + ZYDIS_REG_XMM8, ZYDIS_REG_XMM9, ZYDIS_REG_XMM10, ZYDIS_REG_XMM11, + ZYDIS_REG_XMM12, ZYDIS_REG_XMM13, ZYDIS_REG_XMM14, ZYDIS_REG_XMM15, /* 256 bit multimedia registers */ - REG_YMM0, REG_YMM1, REG_YMM2, REG_YMM3, - REG_YMM4, REG_YMM5, REG_YMM6, REG_YMM7, - REG_YMM8, REG_YMM9, REG_YMM10, REG_YMM11, - REG_YMM12, REG_YMM13, REG_YMM14, YMM15, + ZYDIS_REG_YMM0, ZYDIS_REG_YMM1, ZYDIS_REG_YMM2, ZYDIS_REG_YMM3, + ZYDIS_REG_YMM4, ZYDIS_REG_YMM5, ZYDIS_REG_YMM6, ZYDIS_REG_YMM7, + ZYDIS_REG_YMM8, ZYDIS_REG_YMM9, ZYDIS_REG_YMM10, ZYDIS_REG_YMM11, + ZYDIS_REG_YMM12, ZYDIS_REG_YMM13, ZYDIS_REG_YMM14, YMM15, /* instruction pointer register */ - REG_RIP, + ZYDIS_REG_RIP, - REG_FORCE_WORD = 0x7FFF -} ZyDisRegister; + ZYDIS_REG_FORCE_WORD = 0x7FFF +} ZydisRegister; /** * @brief Values that represent the type of a decoded operand. */ -typedef enum _ZyDisOperandType /*: uint8_t*/ +typedef enum _ZydisOperandType /*: uint8_t*/ { /** * @brief The operand is not used. */ - OPTYPE_NONE, + ZYDIS_OPTYPE_NONE, /** * @brief The operand is a register operand. */ - OPTYPE_REGISTER, + ZYDIS_OPTYPE_REGISTER, /** * @brief The operand is a memory operand. */ - OPTYPE_MEMORY, + ZYDIS_OPTYPE_MEMORY, /** * @brief The operand is a pointer operand. */ - OPTYPE_POINTER, + ZYDIS_OPTYPE_POINTER, /** * @brief The operand is an immediate operand. */ - OPTYPE_IMMEDIATE, + ZYDIS_OPTYPE_IMMEDIATE, /** * @brief The operand is a relative immediate operand. */ - OPTYPE_REL_IMMEDIATE, + ZYDIS_OPTYPE_REL_IMMEDIATE, /** * @brief The operand is a constant value. */ - OPTYPE_CONSTANT -} ZyDisOperandType; + ZYDIS_OPTYPE_CONSTANT +} ZydisOperandType; /** * @brief Values that represent the operand access mode. */ -typedef enum _ZyDisOperandAccessMode /* : uint8_t */ +typedef enum _ZydisOperandAccessMode /* : uint8_t */ { - OPACCESSMODE_NA, + ZYDIS_OPACCESSMODE_NA, /** * @brief The operand is accessed in read-only mode. */ - OPACCESSMODE_READ, + ZYDIS_OPACCESSMODE_READ, /** * @brief The operand is accessed in write mode. */ - OPACCESSMODE_WRITE, + ZYDIS_OPACCESSMODE_WRITE, /** * @brief The operand is accessed in read-write mode. */ - OPACCESSMODE_READWRITE -} ZyDisOperandAccessMode; + ZYDIS_OPACCESSMODE_READWRITE +} ZydisOperandAccessMode; /** * @brief This struct holds information about a decoded operand. */ -typedef struct _ZyDisOperandInfo +typedef struct _ZydisOperandInfo { /** * @brief The type of the operand. - * @see ZyDisOperandType + * @see ZydisOperandType */ uint8_t type; /** @@ -265,17 +263,17 @@ typedef struct _ZyDisOperandInfo uint16_t size; /** * @brief The operand access mode. - * @see ZyDisOperandAccessMode + * @see ZydisOperandAccessMode */ uint8_t access_mode; /** * @brief The base register. - * @see ZyDisRegister + * @see ZydisRegister */ uint16_t base; /** * @brief The index register. - * @see ZyDisRegister + * @see ZydisRegister */ uint16_t index; /** @@ -308,12 +306,12 @@ typedef struct _ZyDisOperandInfo uint32_t off; } ptr; } lval; -} ZyDisOperandInfo; +} ZydisOperandInfo; /** * @brief This struct holds information about a decoded instruction. */ -typedef struct _ZyDisInstructionInfo +typedef struct _ZydisInstructionInfo { /** * @brief The instruction flags. @@ -321,7 +319,7 @@ typedef struct _ZyDisInstructionInfo uint32_t flags; /** * @brief The instruction mnemonic. - * @see ZyDisInstructionMnemonic + * @see ZydisInstructionMnemonic */ uint16_t mnemonic; /** @@ -351,11 +349,11 @@ typedef struct _ZyDisInstructionInfo /** * @brief The decoded operands. */ - ZyDisOperandInfo operand[4]; + ZydisOperandInfo operand[4]; /** * @brief The segment register. This value will default to @c NONE, if no segment register * prefix is present. - * @see ZyDisRegister + * @see ZydisRegister */ uint16_t segment; /** @@ -527,7 +525,7 @@ typedef struct _ZyDisInstructionInfo /** * @brief The instruction definition. */ - const ZyDisInstructionDefinition *instrDefinition; + const void* instrDefinition; /* TODO: Port instruction definition types */ /** * @brief The instruction address points to the current instruction (relative to the * initial instruction pointer). @@ -539,10 +537,10 @@ typedef struct _ZyDisInstructionInfo * This field is used to properly format relative instructions. */ uint64_t instrPointer; -} ZyDisInstructionInfo; +} ZydisInstructionInfo; #ifdef __cplusplus } #endif -#endif /* _VDE_ZyDisDISASSEMBLERTYPESC_H_ */ \ No newline at end of file +#endif /* _ZYDIS_TYPES_H_ */ \ No newline at end of file diff --git a/Bindings/C/ZydisUtils.cpp b/Bindings/C/ZydisUtils.cpp new file mode 100644 index 0000000..70e40f8 --- /dev/null +++ b/Bindings/C/ZydisUtils.cpp @@ -0,0 +1,46 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#include "ZydisUtils.h" +#include "ZydisUtils.hpp" + +static_assert( + sizeof(ZydisInstructionInfo) == sizeof(Zydis::InstructionInfo), + "struct size mismatch"); +static_assert( + sizeof(ZydisOperandInfo) == sizeof(Zydis::OperandInfo), + "struct size mismatch"); + +uint64_t ZydisCalcAbsoluteTarget(const ZydisInstructionInfo *info, const ZydisOperandInfo *operand) +{ + return Zydis::CalcAbsoluteTarget( + *reinterpret_cast(info), + *reinterpret_cast(operand)); +} \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisDisassemblerUtils.h b/Bindings/C/ZydisUtils.h similarity index 72% rename from VerteronDisassemblerEngine/ZyDisDisassemblerUtils.h rename to Bindings/C/ZydisUtils.h index 1bbc807..8e29541 100644 --- a/VerteronDisassemblerEngine/ZyDisDisassemblerUtils.h +++ b/Bindings/C/ZydisUtils.h @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : athre0z - - Last change : 04. February 2015 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,40 +26,29 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ +***************************************************************************************************/ -#ifndef _VDE_ZyDisDISASSEMBLERUTILSC_H_ -#define _VDE_ZyDisDISASSEMBLERUTILSC_H_ - -#include "ZyDisDisassemblerTypes.h" -#include "ZyDisInternalConfig.h" +#ifndef _ZYDIS_UTILS_H_ +#define _ZYDIS_UTILS_H_ #include - +#include "ZydisTypes.h" #ifdef __cplusplus extern "C" { #endif -typedef struct _ZyDisContextDescriptor -{ - uint8_t type; - void *ptr; -} ZyDisContextDescriptor; - /** * @brief Calculates the absolute target address of a relative instruction operand. * @param info The instruction info. * @param operand The operand. * @return The absolute target address. */ -ZYDIS_EXPORT uint64_t ZyDisCalcAbsoluteTarget( - const ZyDisInstructionInfo *info, - const ZyDisOperandInfo *operand); +uint64_t ZydisCalcAbsoluteTarget(const ZydisInstructionInfo* info, const ZydisOperandInfo* operand); #ifdef __cplusplus } #endif -#endif /* _VDE_ZyDisDISASSEMBLERUTILSC_H_ */ \ No newline at end of file +#endif /* _ZYDIS_UTILS_H_ */ \ No newline at end of file diff --git a/Bindings/Cpp/ZyDisOpcodeTable.cpp b/Bindings/Cpp/ZyDisOpcodeTable.cpp deleted file mode 100644 index 38709b3..0000000 --- a/Bindings/Cpp/ZyDisOpcodeTable.cpp +++ /dev/null @@ -1,9655 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : - - Last change : 14. October 2014 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ -#include "ZyDisOpcodeTable.hpp" - -namespace Verteron -{ - -namespace Internal -{ - -#define ZYDIS_INVALID 0 -#define NODE(type, n) (static_cast(type) << 12 | (n)) - -const ZyDisOpcodeTreeNode optreeTable[][256] = -{ - { - /* 00 */ 0x0015, - /* 01 */ 0x0014, - /* 02 */ 0x0016, - /* 03 */ 0x0018, - /* 04 */ 0x0017, - /* 05 */ 0x0010, - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0000), - /* 07 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0001), - /* 08 */ 0x0394, - /* 09 */ 0x0393, - /* 0A */ 0x0396, - /* 0B */ 0x0395, - /* 0C */ 0x0390, - /* 0D */ 0x038F, - /* 0E */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0002), - /* 0F */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0001), - /* 10 */ 0x000B, - /* 11 */ 0x000A, - /* 12 */ 0x000C, - /* 13 */ 0x000E, - /* 14 */ 0x000D, - /* 15 */ 0x0006, - /* 16 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0007), - /* 17 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0008), - /* 18 */ 0x04FE, - /* 19 */ 0x04F7, - /* 1A */ 0x04F8, - /* 1B */ 0x04FB, - /* 1C */ 0x04FA, - /* 1D */ 0x04F9, - /* 1E */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0009), - /* 1F */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x000A), - /* 20 */ 0x0026, - /* 21 */ 0x0027, - /* 22 */ 0x0025, - /* 23 */ 0x002C, - /* 24 */ 0x002D, - /* 25 */ 0x002E, - /* 26 */ ZYDIS_INVALID, - /* 27 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x000B), - /* 28 */ 0x0542, - /* 29 */ 0x0549, - /* 2A */ 0x0548, - /* 2B */ 0x054B, - /* 2C */ 0x054A, - /* 2D */ 0x0547, - /* 2E */ ZYDIS_INVALID, - /* 2F */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x000C), - /* 30 */ 0x06B8, - /* 31 */ 0x06B9, - /* 32 */ 0x06B6, - /* 33 */ 0x06B7, - /* 34 */ 0x06BA, - /* 35 */ 0x06BB, - /* 36 */ ZYDIS_INVALID, - /* 37 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x000D), - /* 38 */ 0x006C, - /* 39 */ 0x006D, - /* 3A */ 0x006B, - /* 3B */ 0x006A, - /* 3C */ 0x0070, - /* 3D */ 0x006F, - /* 3E */ ZYDIS_INVALID, - /* 3F */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x000E), - /* 40 */ 0x02AB, - /* 41 */ 0x02AC, - /* 42 */ 0x02B2, - /* 43 */ 0x02B1, - /* 44 */ 0x02B3, - /* 45 */ 0x02B4, - /* 46 */ 0x02AE, - /* 47 */ 0x02AD, - /* 48 */ 0x00A7, - /* 49 */ 0x00A6, - /* 4A */ 0x00A8, - /* 4B */ 0x00AA, - /* 4C */ 0x00A9, - /* 4D */ 0x00A2, - /* 4E */ 0x00A1, - /* 4F */ 0x00A3, - /* 50 */ 0x04B4, - /* 51 */ 0x04B9, - /* 52 */ 0x04B3, - /* 53 */ 0x04AE, - /* 54 */ 0x04AF, - /* 55 */ 0x04B0, - /* 56 */ 0x04B1, - /* 57 */ 0x04B2, - /* 58 */ 0x0449, - /* 59 */ 0x0447, - /* 5A */ 0x0448, - /* 5B */ 0x0442, - /* 5C */ 0x043E, - /* 5D */ 0x043D, - /* 5E */ 0x043F, - /* 5F */ 0x0441, - /* 60 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0007), - /* 61 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0008), - /* 62 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0013), - /* 63 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0014), - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ 0x04B7, - /* 69 */ 0x02A4, - /* 6A */ 0x04AB, - /* 6B */ 0x02A6, - /* 6C */ 0x02B5, - /* 6D */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0009), - /* 6E */ 0x039F, - /* 6F */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x000A), - /* 70 */ 0x02E8, - /* 71 */ 0x02E2, - /* 72 */ 0x02CA, - /* 73 */ 0x02DE, - /* 74 */ 0x02CE, - /* 75 */ 0x02E1, - /* 76 */ 0x02CB, - /* 77 */ 0x02C7, - /* 78 */ 0x02ED, - /* 79 */ 0x02E6, - /* 7A */ 0x02EB, - /* 7B */ 0x02E5, - /* 7C */ 0x02D5, - /* 7D */ 0x02D3, - /* 7E */ 0x02D8, - /* 7F */ 0x02D1, - /* 80 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0013), - /* 81 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0014), - /* 82 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0015), - /* 83 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0016), - /* 84 */ 0x055C, - /* 85 */ 0x055D, - /* 86 */ 0x06A8, - /* 87 */ 0x06A7, - /* 88 */ 0x0334, - /* 89 */ 0x0336, - /* 8A */ 0x0335, - /* 8B */ 0x0331, - /* 8C */ 0x031D, - /* 8D */ 0x02F4, - /* 8E */ 0x031C, - /* 8F */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0017), - /* 90 */ 0x06A9, - /* 91 */ 0x06AB, - /* 92 */ 0x06AA, - /* 93 */ 0x06A3, - /* 94 */ 0x06A2, - /* 95 */ 0x06A4, - /* 96 */ 0x06A6, - /* 97 */ 0x06A5, - /* 98 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x000B), - /* 99 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x000C), - /* 9A */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x001D), - /* 9B */ 0x069D, - /* 9C */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x000D), - /* 9D */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x000E), - /* 9E */ 0x04EF, - /* 9F */ 0x02EF, - /* A0 */ 0x031B, - /* A1 */ 0x0320, - /* A2 */ 0x031F, - /* A3 */ 0x031E, - /* A4 */ 0x0367, - /* A5 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x000F), - /* A6 */ 0x0076, - /* A7 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0010), - /* A8 */ 0x055E, - /* A9 */ 0x055B, - /* AA */ 0x053D, - /* AB */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0011), - /* AC */ 0x0300, - /* AD */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0012), - /* AE */ 0x0501, - /* AF */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0013), - /* B0 */ 0x0317, - /* B1 */ 0x031A, - /* B2 */ 0x0318, - /* B3 */ 0x0319, - /* B4 */ 0x0321, - /* B5 */ 0x032C, - /* B6 */ 0x032B, - /* B7 */ 0x032A, - /* B8 */ 0x032D, - /* B9 */ 0x0330, - /* BA */ 0x032F, - /* BB */ 0x032E, - /* BC */ 0x0329, - /* BD */ 0x0324, - /* BE */ 0x0323, - /* BF */ 0x0322, - /* C0 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0018), - /* C1 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0019), - /* C2 */ 0x04D9, - /* C3 */ 0x04D8, - /* C4 */ NODE(ZyDisOpcodeTreeNodeType::VEX, 0x0000), - /* C5 */ NODE(ZyDisOpcodeTreeNodeType::VEX, 0x0001), - /* C6 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x001E), - /* C7 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x001F), - /* C8 */ 0x00B4, - /* C9 */ 0x02F5, - /* CA */ 0x04DA, - /* CB */ 0x04DB, - /* CC */ 0x02BB, - /* CD */ 0x02B9, - /* CE */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0027), - /* CF */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0017), - /* D0 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0020), - /* D1 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0021), - /* D2 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0022), - /* D3 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0023), - /* D4 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0028), - /* D5 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0029), - /* D6 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x002A), - /* D7 */ 0x06B2, - /* D8 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0015), - /* D9 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0016), - /* DA */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0017), - /* DB */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0018), - /* DC */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0019), - /* DD */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x001A), - /* DE */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x001B), - /* DF */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x001C), - /* E0 */ 0x0306, - /* E1 */ 0x0305, - /* E2 */ 0x0304, - /* E3 */ NODE(ZyDisOpcodeTreeNodeType::ADDRESS_SIZE, 0x0000), - /* E4 */ 0x02A9, - /* E5 */ 0x02AA, - /* E6 */ 0x039D, - /* E7 */ 0x039E, - /* E8 */ 0x004E, - /* E9 */ 0x02DB, - /* EA */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x002B), - /* EB */ 0x02DD, - /* EC */ 0x02A7, - /* ED */ 0x02A8, - /* EE */ 0x039B, - /* EF */ 0x039C, - /* F0 */ 0x02FF, - /* F1 */ 0x02BA, - /* F2 */ 0x04D7, - /* F3 */ 0x04D6, - /* F4 */ 0x029D, - /* F5 */ 0x0059, - /* F6 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x002C), - /* F7 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x002D), - /* F8 */ 0x0053, - /* F9 */ 0x0538, - /* FA */ 0x0057, - /* FB */ 0x053B, - /* FC */ 0x0054, - /* FD */ 0x0539, - /* FE */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x002E), - /* FF */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x002F), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0000), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0000), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0003), - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0004), - /* 04 */ ZYDIS_INVALID, - /* 05 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0005), - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0006), - /* 07 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0007), - /* 08 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0008), - /* 09 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0009), - /* 0A */ ZYDIS_INVALID, - /* 0B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x000A), - /* 0C */ ZYDIS_INVALID, - /* 0D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x000B), - /* 0E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x000C), - /* 0F */ NODE(ZyDisOpcodeTreeNodeType::AMD3DNOW, 0x0000), - /* 10 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x000D), - /* 11 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x000E), - /* 12 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0001), - /* 13 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0011), - /* 14 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0012), - /* 15 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0013), - /* 16 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0002), - /* 17 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0016), - /* 18 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0017), - /* 19 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0018), - /* 1A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0019), - /* 1B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x001A), - /* 1C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x001B), - /* 1D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x001C), - /* 1E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x001D), - /* 1F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x001E), - /* 20 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x001F), - /* 21 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0020), - /* 22 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0021), - /* 23 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0022), - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0023), - /* 29 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0024), - /* 2A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0025), - /* 2B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0026), - /* 2C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0027), - /* 2D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0028), - /* 2E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0029), - /* 2F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x002A), - /* 30 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x002B), - /* 31 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x002C), - /* 32 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x002D), - /* 33 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x002E), - /* 34 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x002F), - /* 35 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0030), - /* 36 */ ZYDIS_INVALID, - /* 37 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0031), - /* 38 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0002), - /* 39 */ ZYDIS_INVALID, - /* 3A */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0003), - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0081), - /* 41 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0082), - /* 42 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0083), - /* 43 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0084), - /* 44 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0085), - /* 45 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0086), - /* 46 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0087), - /* 47 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0088), - /* 48 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0089), - /* 49 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x008A), - /* 4A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x008B), - /* 4B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x008C), - /* 4C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x008D), - /* 4D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x008E), - /* 4E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x008F), - /* 4F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0090), - /* 50 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0091), - /* 51 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0092), - /* 52 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0093), - /* 53 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0094), - /* 54 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0095), - /* 55 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0096), - /* 56 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0097), - /* 57 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0098), - /* 58 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0099), - /* 59 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x009A), - /* 5A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x009B), - /* 5B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x009C), - /* 5C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x009D), - /* 5D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x009E), - /* 5E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x009F), - /* 5F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A0), - /* 60 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A1), - /* 61 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A2), - /* 62 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A3), - /* 63 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A4), - /* 64 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A5), - /* 65 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A6), - /* 66 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A7), - /* 67 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A8), - /* 68 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00A9), - /* 69 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00AA), - /* 6A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00AB), - /* 6B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00AC), - /* 6C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00AD), - /* 6D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00AE), - /* 6E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00AF), - /* 6F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B0), - /* 70 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B1), - /* 71 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B2), - /* 72 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B3), - /* 73 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B4), - /* 74 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B5), - /* 75 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B6), - /* 76 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B7), - /* 77 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B8), - /* 78 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00B9), - /* 79 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00BA), - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00BB), - /* 7D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00BC), - /* 7E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00BD), - /* 7F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00BE), - /* 80 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00BF), - /* 81 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C0), - /* 82 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C1), - /* 83 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C2), - /* 84 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C3), - /* 85 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C4), - /* 86 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C5), - /* 87 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C6), - /* 88 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C7), - /* 89 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C8), - /* 8A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00C9), - /* 8B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00CA), - /* 8C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00CB), - /* 8D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00CC), - /* 8E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00CD), - /* 8F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00CE), - /* 90 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00CF), - /* 91 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D0), - /* 92 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D1), - /* 93 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D2), - /* 94 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D3), - /* 95 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D4), - /* 96 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D5), - /* 97 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D6), - /* 98 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D7), - /* 99 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D8), - /* 9A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00D9), - /* 9B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00DA), - /* 9C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00DB), - /* 9D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00DC), - /* 9E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00DD), - /* 9F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00DE), - /* A0 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00DF), - /* A1 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E0), - /* A2 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E1), - /* A3 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E2), - /* A4 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E3), - /* A5 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E4), - /* A6 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0003), - /* A7 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0004), - /* A8 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E7), - /* A9 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E8), - /* AA */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E9), - /* AB */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00EA), - /* AC */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00EB), - /* AD */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00EC), - /* AE */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0005), - /* AF */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00EF), - /* B0 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F0), - /* B1 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F1), - /* B2 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F2), - /* B3 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F3), - /* B4 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F4), - /* B5 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F5), - /* B6 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F6), - /* B7 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F7), - /* B8 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F8), - /* B9 */ ZYDIS_INVALID, - /* BA */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00F9), - /* BB */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00FA), - /* BC */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00FB), - /* BD */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00FC), - /* BE */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00FD), - /* BF */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00FE), - /* C0 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00FF), - /* C1 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0100), - /* C2 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0101), - /* C3 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0102), - /* C4 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0103), - /* C5 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0104), - /* C6 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0105), - /* C7 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0006), - /* C8 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0108), - /* C9 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0109), - /* CA */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x010A), - /* CB */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x010B), - /* CC */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x010C), - /* CD */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x010D), - /* CE */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x010E), - /* CF */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x010F), - /* D0 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0110), - /* D1 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0111), - /* D2 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0112), - /* D3 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0113), - /* D4 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0114), - /* D5 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0115), - /* D6 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0116), - /* D7 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0117), - /* D8 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0118), - /* D9 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0119), - /* DA */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x011A), - /* DB */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x011B), - /* DC */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x011C), - /* DD */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x011D), - /* DE */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x011E), - /* DF */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x011F), - /* E0 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0120), - /* E1 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0121), - /* E2 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0122), - /* E3 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0123), - /* E4 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0124), - /* E5 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0125), - /* E6 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0126), - /* E7 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0127), - /* E8 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0128), - /* E9 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0129), - /* EA */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x012A), - /* EB */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x012B), - /* EC */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x012C), - /* ED */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x012D), - /* EE */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x012E), - /* EF */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x012F), - /* F0 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0130), - /* F1 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0131), - /* F2 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0132), - /* F3 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0133), - /* F4 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0134), - /* F5 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0135), - /* F6 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0136), - /* F7 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0007), - /* F8 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0138), - /* F9 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0139), - /* FA */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x013A), - /* FB */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x013B), - /* FC */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x013C), - /* FD */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x013D), - /* FE */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x013E), - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0032), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0033), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0034), - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0035), - /* 04 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0036), - /* 05 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0037), - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0038), - /* 07 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0039), - /* 08 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x003A), - /* 09 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x003B), - /* 0A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x003C), - /* 0B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x003D), - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x003E), - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x003F), - /* 15 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0040), - /* 16 */ ZYDIS_INVALID, - /* 17 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0041), - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0042), - /* 1D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0043), - /* 1E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0044), - /* 1F */ ZYDIS_INVALID, - /* 20 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0045), - /* 21 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0046), - /* 22 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0047), - /* 23 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0048), - /* 24 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0049), - /* 25 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x004A), - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x004B), - /* 29 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x004C), - /* 2A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x004D), - /* 2B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x004E), - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x004F), - /* 31 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0050), - /* 32 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0051), - /* 33 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0052), - /* 34 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0053), - /* 35 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0054), - /* 36 */ ZYDIS_INVALID, - /* 37 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0055), - /* 38 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0056), - /* 39 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0057), - /* 3A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0058), - /* 3B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0059), - /* 3C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x005A), - /* 3D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x005B), - /* 3E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x005C), - /* 3F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x005D), - /* 40 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x005E), - /* 41 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x005F), - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0060), - /* 81 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0061), - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0062), - /* DC */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0063), - /* DD */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0064), - /* DE */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0065), - /* DF */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0066), - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0067), - /* F1 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0068), - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0069), - /* 09 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x006A), - /* 0A */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x006B), - /* 0B */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x006C), - /* 0C */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x006D), - /* 0D */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x006E), - /* 0E */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x006F), - /* 0F */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0070), - /* 10 */ ZYDIS_INVALID, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0071), - /* 15 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0072), - /* 16 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0073), - /* 17 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0074), - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0075), - /* 21 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0076), - /* 22 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0077), - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ ZYDIS_INVALID, - /* 2B */ ZYDIS_INVALID, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0078), - /* 41 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0079), - /* 42 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x007A), - /* 43 */ ZYDIS_INVALID, - /* 44 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x007B), - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x007C), - /* 61 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x007D), - /* 62 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x007E), - /* 63 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x007F), - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0080), - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ 0x05E6, - /* 11 */ 0x05E5, - /* 12 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0008), - /* 13 */ 0x05CC, - /* 14 */ 0x0698, - /* 15 */ 0x0696, - /* 16 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0009), - /* 17 */ 0x05C7, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x05B8, - /* 29 */ 0x05B7, - /* 2A */ ZYDIS_INVALID, - /* 2B */ 0x05D2, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ 0x0694, - /* 2F */ 0x0581, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ 0x05CE, - /* 51 */ 0x0689, - /* 52 */ 0x0684, - /* 53 */ 0x067E, - /* 54 */ 0x0575, - /* 55 */ 0x0573, - /* 56 */ 0x05F6, - /* 57 */ 0x069A, - /* 58 */ 0x0567, - /* 59 */ 0x05EF, - /* 5A */ 0x0587, - /* 5B */ 0x0583, - /* 5C */ 0x068E, - /* 5D */ 0x05AF, - /* 5E */ 0x0593, - /* 5F */ 0x05A9, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0000), - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x000A), - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ 0x057D, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ 0x0687, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_INVALID, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ 0x05E4, - /* 11 */ 0x05E3, - /* 12 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x000B), - /* 13 */ 0x05CA, - /* 14 */ 0x0697, - /* 15 */ 0x0695, - /* 16 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x000C), - /* 17 */ 0x05C5, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x05B5, - /* 29 */ 0x05B6, - /* 2A */ ZYDIS_INVALID, - /* 2B */ 0x05D1, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ 0x0693, - /* 2F */ 0x0580, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ 0x05CD, - /* 51 */ 0x0688, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ 0x0574, - /* 55 */ 0x0572, - /* 56 */ 0x05F5, - /* 57 */ 0x0699, - /* 58 */ 0x0566, - /* 59 */ 0x05EE, - /* 5A */ 0x0585, - /* 5B */ 0x0586, - /* 5C */ 0x068D, - /* 5D */ 0x05AE, - /* 5E */ 0x0592, - /* 5F */ 0x05A8, - /* 60 */ 0x0679, - /* 61 */ 0x067C, - /* 62 */ 0x067A, - /* 63 */ 0x05FB, - /* 64 */ 0x0614, - /* 65 */ 0x0617, - /* 66 */ 0x0615, - /* 67 */ 0x05FD, - /* 68 */ 0x0675, - /* 69 */ 0x0678, - /* 6A */ 0x0676, - /* 6B */ 0x05FA, - /* 6C */ 0x067B, - /* 6D */ 0x0677, - /* 6E */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0014), - /* 6F */ 0x05BF, - /* 70 */ 0x0654, - /* 71 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x001B), - /* 72 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x001C), - /* 73 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x001D), - /* 74 */ 0x060E, - /* 75 */ 0x0611, - /* 76 */ 0x060F, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ 0x059C, - /* 7D */ 0x059E, - /* 7E */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0015), - /* 7F */ 0x05C0, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ 0x057C, - /* C3 */ ZYDIS_INVALID, - /* C4 */ 0x0630, - /* C5 */ 0x0623, - /* C6 */ 0x0686, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ 0x056A, - /* D1 */ 0x066B, - /* D2 */ 0x0665, - /* D3 */ 0x0669, - /* D4 */ 0x0600, - /* D5 */ 0x0650, - /* D6 */ 0x05D4, - /* D7 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0004), - /* D8 */ 0x0671, - /* D9 */ 0x0672, - /* DA */ 0x063C, - /* DB */ 0x0607, - /* DC */ 0x0603, - /* DD */ 0x0604, - /* DE */ 0x0636, - /* DF */ 0x0608, - /* E0 */ 0x0609, - /* E1 */ 0x0663, - /* E2 */ 0x0662, - /* E3 */ 0x060A, - /* E4 */ 0x064D, - /* E5 */ 0x064E, - /* E6 */ 0x058E, - /* E7 */ 0x05CF, - /* E8 */ 0x066F, - /* E9 */ 0x0670, - /* EA */ 0x063B, - /* EB */ 0x0651, - /* EC */ 0x0601, - /* ED */ 0x0602, - /* EE */ 0x0635, - /* EF */ 0x067D, - /* F0 */ ZYDIS_INVALID, - /* F1 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0005), - /* F2 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0006), - /* F3 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0007), - /* F4 */ ZYDIS_INVALID, - /* F5 */ 0x0632, - /* F6 */ 0x0652, - /* F7 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x000D), - /* F8 */ 0x066C, - /* F9 */ 0x0673, - /* FA */ 0x066D, - /* FB */ 0x066E, - /* FC */ 0x05FE, - /* FD */ 0x0605, - /* FE */ 0x05FF, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0653, - /* 01 */ 0x0627, - /* 02 */ 0x0625, - /* 03 */ 0x0626, - /* 04 */ 0x0631, - /* 05 */ 0x062B, - /* 06 */ 0x0629, - /* 07 */ 0x062A, - /* 08 */ 0x0657, - /* 09 */ 0x0659, - /* 0A */ 0x0658, - /* 0B */ 0x064C, - /* 0C */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0000), - /* 0D */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0001), - /* 0E */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0002), - /* 0F */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0003), - /* 10 */ ZYDIS_INVALID, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_INVALID, - /* 17 */ 0x0674, - /* 18 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0004), - /* 19 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0005), - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ 0x05F7, - /* 1D */ 0x05F9, - /* 1E */ 0x05F8, - /* 1F */ ZYDIS_INVALID, - /* 20 */ 0x0642, - /* 21 */ 0x0640, - /* 22 */ 0x0641, - /* 23 */ 0x0643, - /* 24 */ 0x0644, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x064B, - /* 29 */ 0x0610, - /* 2A */ 0x05D0, - /* 2B */ 0x05FC, - /* 2C */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0006), - /* 2D */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0007), - /* 2E */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0008), - /* 2F */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0009), - /* 30 */ 0x0647, - /* 31 */ 0x0645, - /* 32 */ 0x0646, - /* 33 */ 0x0649, - /* 34 */ 0x064A, - /* 35 */ 0x0648, - /* 36 */ ZYDIS_INVALID, - /* 37 */ 0x0616, - /* 38 */ 0x0639, - /* 39 */ 0x063A, - /* 3A */ 0x063E, - /* 3B */ 0x063D, - /* 3C */ 0x0633, - /* 3D */ 0x0634, - /* 3E */ 0x0638, - /* 3F */ 0x0637, - /* 40 */ 0x064F, - /* 41 */ 0x0628, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ 0x0570, - /* DC */ 0x056E, - /* DD */ 0x056F, - /* DE */ 0x056C, - /* DF */ 0x056D, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x000A), - /* 05 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x000B), - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x000C), - /* 07 */ ZYDIS_INVALID, - /* 08 */ 0x0681, - /* 09 */ 0x0680, - /* 0A */ 0x0683, - /* 0B */ 0x0682, - /* 0C */ 0x0577, - /* 0D */ 0x0576, - /* 0E */ 0x060C, - /* 0F */ 0x0606, - /* 10 */ ZYDIS_INVALID, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x000D), - /* 15 */ 0x0624, - /* 16 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0016), - /* 17 */ 0x059B, - /* 18 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0011), - /* 19 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0012), - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0013), - /* 21 */ 0x05A1, - /* 22 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0025), - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ ZYDIS_INVALID, - /* 2B */ ZYDIS_INVALID, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ 0x0597, - /* 41 */ 0x0596, - /* 42 */ 0x05E7, - /* 43 */ ZYDIS_INVALID, - /* 44 */ 0x060D, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0016), - /* 4B */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0017), - /* 4C */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0018), - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ 0x0613, - /* 61 */ 0x0612, - /* 62 */ 0x0619, - /* 63 */ 0x0618, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ 0x0571, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x000E), - /* 11 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x000F), - /* 12 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0010), - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0011), - /* 17 */ ZYDIS_INVALID, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ 0x058B, - /* 2B */ ZYDIS_INVALID, - /* 2C */ 0x0591, - /* 2D */ 0x058D, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ 0x068B, - /* 52 */ 0x0685, - /* 53 */ 0x067F, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ 0x0569, - /* 59 */ 0x05F1, - /* 5A */ 0x058C, - /* 5B */ 0x058F, - /* 5C */ 0x0690, - /* 5D */ 0x05B1, - /* 5E */ 0x0595, - /* 5F */ 0x05AB, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ 0x05C2, - /* 70 */ 0x0655, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ 0x05D3, - /* 7F */ 0x05C1, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ 0x057F, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_INVALID, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ 0x0582, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0012), - /* 11 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0013), - /* 12 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_MOD, 0x0014), - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_INVALID, - /* 17 */ ZYDIS_INVALID, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ 0x058A, - /* 2B */ ZYDIS_INVALID, - /* 2C */ 0x0590, - /* 2D */ 0x0588, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ 0x068A, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ 0x0568, - /* 59 */ 0x05F0, - /* 5A */ 0x0589, - /* 5B */ ZYDIS_INVALID, - /* 5C */ 0x068F, - /* 5D */ 0x05B0, - /* 5E */ 0x0594, - /* 5F */ 0x05AA, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ 0x0656, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ 0x059D, - /* 7D */ 0x059F, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ 0x057E, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ 0x056B, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_INVALID, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ 0x0584, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ 0x05A2, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode optreeModrmMod[][2] = -{ - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0001), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0002), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x000F), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0010), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0014), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0015), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E5), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00E6), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00ED), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x00EE), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0106), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0107), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MANDATORY, 0x0137), - }, - { - /* 00 */ 0x05CB, - /* 01 */ 0x05C3, - }, - { - /* 00 */ 0x05C6, - /* 01 */ 0x05C8, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x001A), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05C9, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05C4, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05A3, - }, - { - /* 00 */ 0x05E2, - /* 01 */ 0x05DF, - }, - { - /* 00 */ 0x05E0, - /* 01 */ 0x05E1, - }, - { - /* 00 */ 0x05DE, - /* 01 */ 0x05DD, - }, - { - /* 00 */ 0x05DB, - /* 01 */ 0x05DC, - }, - { - /* 00 */ 0x05DA, - /* 01 */ 0x05D9, - }, - { - /* 00 */ 0x05D8, - /* 01 */ 0x05D7, - }, - { - /* 00 */ 0x05BE, - /* 01 */ 0x05BD, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0024), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::X87, 0x0000), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0025), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::X87, 0x0001), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0026), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::X87, 0x0002), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0027), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::X87, 0x0003), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0028), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::X87, 0x0004), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0029), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::X87, 0x0005), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x002A), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::X87, 0x0006), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x002B), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::X87, 0x0007), - }, -}; - -const ZyDisOpcodeTreeNode optreeModrmReg[][8] = -{ - { - /* 00 */ 0x0531, - /* 01 */ 0x0541, - /* 02 */ 0x02FC, - /* 03 */ 0x0309, - /* 04 */ 0x0598, - /* 05 */ 0x0599, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0516, - /* 01 */ 0x052F, - /* 02 */ 0x02F9, - /* 03 */ 0x02FB, - /* 04 */ 0x0533, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x02FE, - /* 07 */ 0x02C0, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0000), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0001), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0002), - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0003), - /* 04 */ 0x0532, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x02FD, - /* 07 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0004), - }, - { - /* 00 */ 0x0455, - /* 01 */ 0x0456, - /* 02 */ 0x0457, - /* 03 */ 0x0458, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0486, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0479, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x0470, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0485, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0478, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x0473, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x047E, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0475, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x0468, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x047C, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0476, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x046A, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0482, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x046D, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0481, - /* 03 */ 0x0480, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x046C, - /* 07 */ 0x046B, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0005), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0006), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0007), - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0008), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x0009), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x000A), - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x000B), - /* 04 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x000C), - /* 05 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_RM, 0x000D), - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0296, - /* 01 */ 0x0295, - /* 02 */ 0x02F2, - /* 03 */ 0x053C, - /* 04 */ 0x06C0, - /* 05 */ 0x06BF, - /* 06 */ ZYDIS_INVALID, - /* 07 */ 0x0055, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ 0x02F7, - /* 06 */ 0x0310, - /* 07 */ 0x0515, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0043, - /* 05 */ 0x0049, - /* 06 */ 0x0047, - /* 07 */ 0x0045, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0006), - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0015), - /* 07 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0016), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0017), - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0018), - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x04D3, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x000F, - /* 01 */ 0x0392, - /* 02 */ 0x0005, - /* 03 */ 0x04FF, - /* 04 */ 0x0028, - /* 05 */ 0x0544, - /* 06 */ 0x06BC, - /* 07 */ 0x006E, - }, - { - /* 00 */ 0x0013, - /* 01 */ 0x0391, - /* 02 */ 0x0009, - /* 03 */ 0x0500, - /* 04 */ 0x0029, - /* 05 */ 0x0543, - /* 06 */ 0x06B5, - /* 07 */ 0x0072, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0015), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0016), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0017), - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0018), - /* 04 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0019), - /* 05 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x001A), - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x001B), - /* 07 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x001C), - }, - { - /* 00 */ 0x0012, - /* 01 */ 0x0397, - /* 02 */ 0x0008, - /* 03 */ 0x04FD, - /* 04 */ 0x002B, - /* 05 */ 0x0545, - /* 06 */ 0x06B4, - /* 07 */ 0x0071, - }, - { - /* 00 */ 0x0440, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04DE, - /* 01 */ 0x04E6, - /* 02 */ 0x04C6, - /* 03 */ 0x04D0, - /* 04 */ 0x0517, - /* 05 */ 0x0526, - /* 06 */ 0x051D, - /* 07 */ 0x04F3, - }, - { - /* 00 */ 0x04DF, - /* 01 */ 0x04E7, - /* 02 */ 0x04C7, - /* 03 */ 0x04CE, - /* 04 */ 0x051C, - /* 05 */ 0x0528, - /* 06 */ 0x051E, - /* 07 */ 0x04F6, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x068C, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x066A, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0664, - /* 05 */ ZYDIS_INVALID, - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0001), - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0666, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0661, - /* 05 */ ZYDIS_INVALID, - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0002), - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0668, - /* 03 */ 0x0667, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0003), - /* 07 */ 0x065C, - }, - { - /* 00 */ 0x0333, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0332, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04DD, - /* 01 */ 0x04E5, - /* 02 */ 0x04C8, - /* 03 */ 0x04CD, - /* 04 */ 0x0522, - /* 05 */ 0x0527, - /* 06 */ 0x051F, - /* 07 */ 0x04F1, - }, - { - /* 00 */ 0x04DC, - /* 01 */ 0x04E2, - /* 02 */ 0x04C5, - /* 03 */ 0x04CF, - /* 04 */ 0x0520, - /* 05 */ 0x052A, - /* 06 */ 0x0519, - /* 07 */ 0x04F4, - }, - { - /* 00 */ 0x04E1, - /* 01 */ 0x04E3, - /* 02 */ 0x04C3, - /* 03 */ 0x04CC, - /* 04 */ 0x0521, - /* 05 */ 0x0529, - /* 06 */ 0x051A, - /* 07 */ 0x04F2, - }, - { - /* 00 */ 0x04E0, - /* 01 */ 0x04E4, - /* 02 */ 0x04C4, - /* 03 */ 0x04CB, - /* 04 */ 0x0518, - /* 05 */ 0x0525, - /* 06 */ 0x051B, - /* 07 */ 0x04F5, - }, - { - /* 00 */ 0x00BB, - /* 01 */ 0x01CF, - /* 02 */ 0x0119, - /* 03 */ 0x013D, - /* 04 */ 0x022C, - /* 05 */ 0x0245, - /* 06 */ 0x0166, - /* 07 */ 0x0171, - }, - { - /* 00 */ 0x01BC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x01FF, - /* 03 */ 0x020B, - /* 04 */ 0x01C3, - /* 05 */ 0x01C2, - /* 06 */ 0x01EB, - /* 07 */ 0x01EA, - }, - { - /* 00 */ 0x019A, - /* 01 */ 0x01A8, - /* 02 */ 0x019C, - /* 03 */ 0x019F, - /* 04 */ 0x01B3, - /* 05 */ 0x01B5, - /* 06 */ 0x01A1, - /* 07 */ 0x01A3, - }, - { - /* 00 */ 0x01A4, - /* 01 */ 0x01B1, - /* 02 */ 0x01AB, - /* 03 */ 0x01AD, - /* 04 */ ZYDIS_INVALID, - /* 05 */ 0x01BA, - /* 06 */ ZYDIS_INVALID, - /* 07 */ 0x020A, - }, - { - /* 00 */ 0x00BA, - /* 01 */ 0x01D2, - /* 02 */ 0x0118, - /* 03 */ 0x013E, - /* 04 */ 0x022B, - /* 05 */ 0x0243, - /* 06 */ 0x0158, - /* 07 */ 0x017A, - }, - { - /* 00 */ 0x01BB, - /* 01 */ 0x01AF, - /* 02 */ 0x01FE, - /* 03 */ 0x0209, - /* 04 */ 0x01F3, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x01E8, - /* 07 */ 0x01ED, - }, - { - /* 00 */ 0x019B, - /* 01 */ 0x01A7, - /* 02 */ 0x019D, - /* 03 */ 0x019E, - /* 04 */ 0x01B2, - /* 05 */ 0x01B4, - /* 06 */ 0x01A0, - /* 07 */ 0x01A2, - }, - { - /* 00 */ 0x01A6, - /* 01 */ 0x01B0, - /* 02 */ 0x01AA, - /* 03 */ 0x01AE, - /* 04 */ 0x00D2, - /* 05 */ 0x01A5, - /* 06 */ 0x00D3, - /* 07 */ 0x01AC, - }, - { - /* 00 */ 0x0557, - /* 01 */ 0x0558, - /* 02 */ 0x038E, - /* 03 */ 0x0385, - /* 04 */ 0x037E, - /* 05 */ 0x02A5, - /* 06 */ 0x00AC, - /* 07 */ 0x02A0, - }, - { - /* 00 */ 0x0559, - /* 01 */ 0x055A, - /* 02 */ 0x038D, - /* 03 */ 0x0384, - /* 04 */ 0x037D, - /* 05 */ 0x02A3, - /* 06 */ 0x00AB, - /* 07 */ 0x02A1, - }, - { - /* 00 */ 0x02AF, - /* 01 */ 0x00A4, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02B0, - /* 01 */ 0x00A5, - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x002C), - /* 03 */ 0x004C, - /* 04 */ 0x02D9, - /* 05 */ 0x02DA, - /* 06 */ 0x04B8, - /* 07 */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode optreeModrmRm[][8] = -{ - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0000), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0001), - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0002), - /* 04 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0003), - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0315, - /* 01 */ 0x0383, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06B1, - /* 01 */ 0x06C1, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0004), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0005), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0006), - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0007), - /* 04 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0008), - /* 05 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0009), - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x000A), - /* 07 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x000B), - }, - { - /* 00 */ 0x0550, - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x000C), - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0316, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06C2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06C3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06C4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06AF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06AC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06AE, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06AD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06B0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode optreeMandatory[][4] = -{ - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0000), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0001), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0002), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02F0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0307, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0551, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0058, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0556, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02BD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x069E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0561, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0454, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0189, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0379, - /* 01 */ 0x0368, - /* 02 */ 0x0371, - /* 03 */ 0x0377, - }, - { - /* 00 */ 0x0378, - /* 01 */ 0x036A, - /* 02 */ 0x0370, - /* 03 */ 0x0376, - }, - { - /* 00 */ 0x0355, - /* 01 */ 0x0345, - /* 02 */ 0x036D, - /* 03 */ 0x0353, - }, - { - /* 00 */ 0x034C, - /* 01 */ 0x0346, - /* 02 */ 0x036E, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0354, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0352, - }, - { - /* 00 */ 0x0565, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0564, - }, - { - /* 00 */ 0x0563, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0562, - }, - { - /* 00 */ 0x0350, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x036B, - /* 03 */ 0x034E, - }, - { - /* 00 */ 0x0351, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x036C, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x034F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x034D, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0003), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x038A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x038B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x038C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0389, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0386, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0387, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0388, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0325, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0328, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0327, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0326, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x033A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0338, - }, - { - /* 00 */ 0x0339, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0337, - }, - { - /* 00 */ 0x008D, - /* 01 */ 0x0093, - /* 02 */ 0x0094, - /* 03 */ 0x008C, - }, - { - /* 00 */ 0x035C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x035B, - }, - { - /* 00 */ 0x009A, - /* 01 */ 0x009B, - /* 02 */ 0x009C, - /* 03 */ 0x0098, - }, - { - /* 00 */ 0x0090, - /* 01 */ 0x0091, - /* 02 */ 0x0096, - /* 03 */ 0x008A, - }, - { - /* 00 */ 0x0560, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x055F, - }, - { - /* 00 */ 0x0082, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0081, - }, - { - /* 00 */ 0x069F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04D4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04D1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04D2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0003), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0004), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x029A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x045B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x045C, - }, - { - /* 00 */ 0x03FD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03FE, - }, - { - /* 00 */ 0x03FA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03F9, - }, - { - /* 00 */ 0x03FB, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03FC, - }, - { - /* 00 */ 0x040E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x040F, - }, - { - /* 00 */ 0x0405, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0404, - }, - { - /* 00 */ 0x0400, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0401, - }, - { - /* 00 */ 0x0402, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0403, - }, - { - /* 00 */ 0x0461, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0462, - }, - { - /* 00 */ 0x0466, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0465, - }, - { - /* 00 */ 0x0464, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0463, - }, - { - /* 00 */ 0x0431, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0432, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CA, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0037, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0036, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x049A, - }, - { - /* 00 */ 0x03A3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03A2, - }, - { - /* 00 */ 0x03A6, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03A7, - }, - { - /* 00 */ 0x03A4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03A5, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0426, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0424, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0425, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0428, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0429, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0427, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0430, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D1, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0359, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03AC, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042C, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042B, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042E, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042F, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042D, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DA, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x041A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x041B, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0421, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0420, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0412, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0413, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0419, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0418, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0438, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03FF, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0005), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0006), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0023, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0021, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0022, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x001F, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0020, - }, - { - /* 00 */ 0x033B, - /* 01 */ 0x0086, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x033C, - /* 01 */ 0x0085, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04E9, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04E8, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04EB, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04EA, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0035, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0034, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CB, - }, - { - /* 00 */ 0x03BF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C0, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DF, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03E3, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0000), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x00B5, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0408, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x02B7, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0001), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x00B2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x00B1, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x037C, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CC, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D5, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D4, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DE, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DD, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0024, - }, - { - /* 00 */ 0x0067, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0064, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0063, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0069, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0066, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0068, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0065, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0061, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0060, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0062, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0357, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0356, - }, - { - /* 00 */ 0x0535, - /* 01 */ 0x0536, - /* 02 */ 0x0537, - /* 03 */ 0x0534, - }, - { - /* 00 */ 0x04ED, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x04EE, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04C9, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x04CA, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0032, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0031, - }, - { - /* 00 */ 0x0030, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x002F, - }, - { - /* 00 */ 0x039A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0399, - }, - { - /* 00 */ 0x06BE, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x06BD, - }, - { - /* 00 */ 0x001A, - /* 01 */ 0x001B, - /* 02 */ 0x001C, - /* 03 */ 0x0019, - }, - { - /* 00 */ 0x0380, - /* 01 */ 0x0381, - /* 02 */ 0x0382, - /* 03 */ 0x037F, - }, - { - /* 00 */ 0x008F, - /* 01 */ 0x0092, - /* 02 */ 0x0095, - /* 03 */ 0x008B, - }, - { - /* 00 */ 0x0088, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0099, - /* 03 */ 0x008E, - }, - { - /* 00 */ 0x054D, - /* 01 */ 0x054E, - /* 02 */ 0x054F, - /* 03 */ 0x054C, - }, - { - /* 00 */ 0x0312, - /* 01 */ 0x0313, - /* 02 */ 0x0314, - /* 03 */ 0x0311, - }, - { - /* 00 */ 0x00AE, - /* 01 */ 0x00AF, - /* 02 */ 0x00B0, - /* 03 */ 0x00AD, - }, - { - /* 00 */ 0x030D, - /* 01 */ 0x030E, - /* 02 */ 0x030F, - /* 03 */ 0x030C, - }, - { - /* 00 */ 0x04A2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A3, - }, - { - /* 00 */ 0x04A7, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A8, - }, - { - /* 00 */ 0x04A5, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A4, - }, - { - /* 00 */ 0x03AA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03AB, - }, - { - /* 00 */ 0x03D7, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D6, - }, - { - /* 00 */ 0x03DC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DB, - }, - { - /* 00 */ 0x03D8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D9, - }, - { - /* 00 */ 0x03AD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03AE, - }, - { - /* 00 */ 0x049B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x049C, - }, - { - /* 00 */ 0x04A1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A0, - }, - { - /* 00 */ 0x049E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x049D, - }, - { - /* 00 */ 0x03A8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03A9, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A6, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x049F, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0002), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0003), - }, - { - /* 00 */ 0x0363, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x034A, - /* 03 */ 0x0348, - }, - { - /* 00 */ 0x0460, - /* 01 */ 0x045F, - /* 02 */ 0x045E, - /* 03 */ 0x045D, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0004), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0005), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0006), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0007), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0008), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0009), - }, - { - /* 00 */ 0x03CD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CE, - }, - { - /* 00 */ 0x03D2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D3, - }, - { - /* 00 */ 0x03D0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CF, - }, - { - /* 00 */ 0x00B3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0013), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0014), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x029C, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x029B, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x029F, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x029E, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0004), - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x035F, - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::OPERAND_SIZE, 0x0005), - }, - { - /* 00 */ 0x0362, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x034B, - /* 03 */ 0x0349, - }, - { - /* 00 */ 0x02E9, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02E3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02C9, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02DF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02CF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02E0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02CC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02C8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02EE, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02E7, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02EA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02E4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02D6, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02D4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02D7, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02D2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0512, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0507, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0506, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0509, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0508, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0505, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0514, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0511, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0513, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0510, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04B5, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x044A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0083, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0044, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0524, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0523, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x000A), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x000B), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04B6, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0444, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04EC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x004A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x052C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x052B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x000C), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x000D), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02A2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x007C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x007D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0308, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0048, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02F8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02FA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x037B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x037A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x044D, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x000E), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0046, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0039, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0373, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0374, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06A1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06A0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0075, - /* 01 */ 0x0077, - /* 02 */ 0x007A, - /* 03 */ 0x0074, - }, - { - /* 00 */ 0x035A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x040D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x040C, - }, - { - /* 00 */ 0x03E4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03E5, - }, - { - /* 00 */ 0x052E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x052D, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x000F), - /* 01 */ ZYDIS_INVALID, - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0010), - /* 03 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0011), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODRM_REG, 0x0012), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0040, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0042, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0041, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x001E, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x001D, - }, - { - /* 00 */ 0x0487, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0488, - }, - { - /* 00 */ 0x047D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x047F, - }, - { - /* 00 */ 0x0483, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0484, - }, - { - /* 00 */ 0x03B3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B4, - }, - { - /* 00 */ 0x0439, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x043A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0347, - /* 02 */ 0x0366, - /* 03 */ 0x0361, - }, - { - /* 00 */ 0x0422, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0423, - }, - { - /* 00 */ 0x0494, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0493, - }, - { - /* 00 */ 0x0496, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0495, - }, - { - /* 00 */ 0x041E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x041F, - }, - { - /* 00 */ 0x03C1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C2, - }, - { - /* 00 */ 0x03BA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B9, - }, - { - /* 00 */ 0x03BB, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03BC, - }, - { - /* 00 */ 0x0417, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0416, - }, - { - /* 00 */ 0x03C3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C4, - }, - { - /* 00 */ 0x03C5, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C6, - }, - { - /* 00 */ 0x047A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x047B, - }, - { - /* 00 */ 0x0477, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0474, - }, - { - /* 00 */ 0x03C8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C9, - }, - { - /* 00 */ 0x0434, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0435, - }, - { - /* 00 */ 0x0436, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0437, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0089, - /* 02 */ 0x0087, - /* 03 */ 0x0097, - }, - { - /* 00 */ 0x035D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0358, - }, - { - /* 00 */ 0x048F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0490, - }, - { - /* 00 */ 0x0492, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0491, - }, - { - /* 00 */ 0x041C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x041D, - }, - { - /* 00 */ 0x0453, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0452, - }, - { - /* 00 */ 0x03B6, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B5, - }, - { - /* 00 */ 0x03B8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B7, - }, - { - /* 00 */ 0x0414, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0415, - }, - { - /* 00 */ 0x04C1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04C2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02F1, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0472, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0471, - }, - { - /* 00 */ 0x0469, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0467, - }, - { - /* 00 */ 0x046E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x046F, - }, - { - /* 00 */ 0x043B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x043C, - }, - { - /* 00 */ 0x0411, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0410, - }, - { - /* 00 */ 0x045A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0459, - }, - { - /* 00 */ 0x030B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x030A, - }, - { - /* 00 */ 0x0489, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x048A, - }, - { - /* 00 */ 0x0498, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0497, - }, - { - /* 00 */ 0x048B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x048C, - }, - { - /* 00 */ 0x048D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x048E, - }, - { - /* 00 */ 0x03AF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B0, - }, - { - /* 00 */ 0x03BE, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03BD, - }, - { - /* 00 */ 0x03B1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B2, - }, -}; - -const ZyDisOpcodeTreeNode optreeX87[][64] = -{ - { - /* 00 */ 0x00BC, - /* 01 */ 0x00BF, - /* 02 */ 0x00C2, - /* 03 */ 0x00C1, - /* 04 */ 0x00C0, - /* 05 */ 0x00C5, - /* 06 */ 0x00C3, - /* 07 */ 0x00C4, - /* 08 */ 0x01CE, - /* 09 */ 0x01CD, - /* 0A */ 0x01D9, - /* 0B */ 0x01DA, - /* 0C */ 0x01DB, - /* 0D */ 0x01D6, - /* 0E */ 0x01D7, - /* 0F */ 0x01D8, - /* 10 */ 0x011A, - /* 11 */ 0x011C, - /* 12 */ 0x011B, - /* 13 */ 0x0117, - /* 14 */ 0x0116, - /* 15 */ 0x011D, - /* 16 */ 0x011F, - /* 17 */ 0x011E, - /* 18 */ 0x013A, - /* 19 */ 0x0141, - /* 1A */ 0x013C, - /* 1B */ 0x0138, - /* 1C */ 0x013B, - /* 1D */ 0x0140, - /* 1E */ 0x013F, - /* 1F */ 0x0139, - /* 20 */ 0x022E, - /* 21 */ 0x0226, - /* 22 */ 0x0229, - /* 23 */ 0x0232, - /* 24 */ 0x0231, - /* 25 */ 0x022D, - /* 26 */ 0x022A, - /* 27 */ 0x0227, - /* 28 */ 0x0246, - /* 29 */ 0x024B, - /* 2A */ 0x024C, - /* 2B */ 0x024A, - /* 2C */ 0x0248, - /* 2D */ 0x0249, - /* 2E */ 0x0250, - /* 2F */ 0x0251, - /* 30 */ 0x0161, - /* 31 */ 0x0162, - /* 32 */ 0x0155, - /* 33 */ 0x015A, - /* 34 */ 0x0159, - /* 35 */ 0x0156, - /* 36 */ 0x0157, - /* 37 */ 0x0163, - /* 38 */ 0x0172, - /* 39 */ 0x016F, - /* 3A */ 0x0170, - /* 3B */ 0x0173, - /* 3C */ 0x0176, - /* 3D */ 0x0177, - /* 3E */ 0x0174, - /* 3F */ 0x0175, - }, - { - /* 00 */ 0x01BD, - /* 01 */ 0x01C0, - /* 02 */ 0x01BF, - /* 03 */ 0x01BE, - /* 04 */ 0x01B7, - /* 05 */ 0x01B6, - /* 06 */ 0x01B9, - /* 07 */ 0x01B8, - /* 08 */ 0x0281, - /* 09 */ 0x0282, - /* 0A */ 0x0283, - /* 0B */ 0x0280, - /* 0C */ 0x027D, - /* 0D */ 0x027E, - /* 0E */ 0x027F, - /* 0F */ 0x0284, - /* 10 */ 0x01E7, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_INVALID, - /* 17 */ ZYDIS_INVALID, - /* 18 */ 0x0213, - /* 19 */ 0x0212, - /* 1A */ 0x0215, - /* 1B */ 0x0214, - /* 1C */ 0x020F, - /* 1D */ 0x020E, - /* 1E */ 0x0211, - /* 1F */ 0x0210, - /* 20 */ 0x00D4, - /* 21 */ 0x00B7, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ 0x025A, - /* 25 */ 0x027C, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x01C1, - /* 29 */ 0x01C5, - /* 2A */ 0x01C4, - /* 2B */ 0x01C8, - /* 2C */ 0x01C6, - /* 2D */ 0x01C7, - /* 2E */ 0x01C9, - /* 2F */ ZYDIS_INVALID, - /* 30 */ 0x00B6, - /* 31 */ 0x0298, - /* 32 */ 0x01F1, - /* 33 */ 0x01EE, - /* 34 */ 0x0297, - /* 35 */ 0x01F0, - /* 36 */ 0x0154, - /* 37 */ 0x01A9, - /* 38 */ 0x01EF, - /* 39 */ 0x0299, - /* 3A */ 0x01F8, - /* 3B */ 0x01F7, - /* 3C */ 0x01F2, - /* 3D */ 0x01F5, - /* 3E */ 0x01F6, - /* 3F */ 0x0153, - }, - { - /* 00 */ 0x00D9, - /* 01 */ 0x00DA, - /* 02 */ 0x00DB, - /* 03 */ 0x00D6, - /* 04 */ 0x00D7, - /* 05 */ 0x00D8, - /* 06 */ 0x00DD, - /* 07 */ 0x00DC, - /* 08 */ 0x00E6, - /* 09 */ 0x00E7, - /* 0A */ 0x00E8, - /* 0B */ 0x00EC, - /* 0C */ 0x00ED, - /* 0D */ 0x00EB, - /* 0E */ 0x00E9, - /* 0F */ 0x00EA, - /* 10 */ 0x00E4, - /* 11 */ 0x00E5, - /* 12 */ 0x00E2, - /* 13 */ 0x00E3, - /* 14 */ 0x00DF, - /* 15 */ 0x00DE, - /* 16 */ 0x00E0, - /* 17 */ 0x00E1, - /* 18 */ 0x0113, - /* 19 */ 0x0114, - /* 1A */ 0x0115, - /* 1B */ 0x010F, - /* 1C */ 0x010E, - /* 1D */ 0x0110, - /* 1E */ 0x0111, - /* 1F */ 0x0112, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ 0x027B, - /* 2A */ ZYDIS_INVALID, - /* 2B */ ZYDIS_INVALID, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x00F0, - /* 01 */ 0x00F1, - /* 02 */ 0x00EE, - /* 03 */ 0x00EF, - /* 04 */ 0x00F4, - /* 05 */ 0x00F5, - /* 06 */ 0x00F2, - /* 07 */ 0x00F3, - /* 08 */ 0x0103, - /* 09 */ 0x0102, - /* 0A */ 0x0105, - /* 0B */ 0x0104, - /* 0C */ 0x00FF, - /* 0D */ 0x00FE, - /* 0E */ 0x0101, - /* 0F */ 0x0100, - /* 10 */ 0x00F8, - /* 11 */ 0x00F9, - /* 12 */ 0x00F6, - /* 13 */ 0x00F7, - /* 14 */ 0x00FC, - /* 15 */ 0x00FD, - /* 16 */ 0x00FA, - /* 17 */ 0x00FB, - /* 18 */ 0x010B, - /* 19 */ 0x010A, - /* 1A */ 0x010D, - /* 1B */ 0x010C, - /* 1C */ 0x0107, - /* 1D */ 0x0106, - /* 1E */ 0x0109, - /* 1F */ 0x0108, - /* 20 */ 0x01E5, - /* 21 */ 0x01E4, - /* 22 */ 0x00D5, - /* 23 */ 0x01E6, - /* 24 */ 0x01E9, - /* 25 */ 0x01F4, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x0269, - /* 29 */ 0x026A, - /* 2A */ 0x0265, - /* 2B */ 0x0264, - /* 2C */ 0x0263, - /* 2D */ 0x0268, - /* 2E */ 0x0267, - /* 2F */ 0x0266, - /* 30 */ 0x0129, - /* 31 */ 0x0128, - /* 32 */ 0x012B, - /* 33 */ 0x012A, - /* 34 */ 0x012F, - /* 35 */ 0x012E, - /* 36 */ 0x012D, - /* 37 */ 0x012C, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x00B9, - /* 01 */ 0x00B8, - /* 02 */ 0x00C6, - /* 03 */ 0x00C9, - /* 04 */ 0x00C8, - /* 05 */ 0x00C7, - /* 06 */ 0x00BE, - /* 07 */ 0x00BD, - /* 08 */ 0x01D1, - /* 09 */ 0x01D0, - /* 0A */ 0x01D5, - /* 0B */ 0x01D4, - /* 0C */ 0x01D3, - /* 0D */ 0x01CC, - /* 0E */ 0x01CB, - /* 0F */ 0x01CA, - /* 10 */ 0x0125, - /* 11 */ 0x0124, - /* 12 */ 0x0127, - /* 13 */ 0x0126, - /* 14 */ 0x0121, - /* 15 */ 0x0120, - /* 16 */ 0x0123, - /* 17 */ 0x0122, - /* 18 */ 0x0148, - /* 19 */ 0x0142, - /* 1A */ 0x0145, - /* 1B */ 0x0144, - /* 1C */ 0x0143, - /* 1D */ 0x0147, - /* 1E */ 0x0146, - /* 1F */ 0x0149, - /* 20 */ 0x024F, - /* 21 */ 0x0247, - /* 22 */ 0x0241, - /* 23 */ 0x0242, - /* 24 */ 0x0240, - /* 25 */ 0x024E, - /* 26 */ 0x024D, - /* 27 */ 0x0244, - /* 28 */ 0x0228, - /* 29 */ 0x0235, - /* 2A */ 0x0234, - /* 2B */ 0x0237, - /* 2C */ 0x0236, - /* 2D */ 0x0233, - /* 2E */ 0x0230, - /* 2F */ 0x022F, - /* 30 */ 0x017B, - /* 31 */ 0x0178, - /* 32 */ 0x0179, - /* 33 */ 0x017C, - /* 34 */ 0x017F, - /* 35 */ 0x0180, - /* 36 */ 0x017D, - /* 37 */ 0x017E, - /* 38 */ 0x015E, - /* 39 */ 0x015F, - /* 3A */ 0x0160, - /* 3B */ 0x015B, - /* 3C */ 0x015C, - /* 3D */ 0x015D, - /* 3E */ 0x0164, - /* 3F */ 0x0165, - }, - { - /* 00 */ 0x018F, - /* 01 */ 0x018E, - /* 02 */ 0x0191, - /* 03 */ 0x0190, - /* 04 */ 0x018B, - /* 05 */ 0x018A, - /* 06 */ 0x018D, - /* 07 */ 0x018C, - /* 08 */ 0x028A, - /* 09 */ 0x0289, - /* 0A */ 0x028C, - /* 0B */ 0x028B, - /* 0C */ 0x0286, - /* 0D */ 0x0285, - /* 0E */ 0x0288, - /* 0F */ 0x0287, - /* 10 */ 0x0200, - /* 11 */ 0x0202, - /* 12 */ 0x0201, - /* 13 */ 0x01FA, - /* 14 */ 0x01F9, - /* 15 */ 0x01FB, - /* 16 */ 0x01FD, - /* 17 */ 0x01FC, - /* 18 */ 0x020D, - /* 19 */ 0x020C, - /* 1A */ 0x0208, - /* 1B */ 0x0204, - /* 1C */ 0x0203, - /* 1D */ 0x0205, - /* 1E */ 0x0207, - /* 1F */ 0x0206, - /* 20 */ 0x025D, - /* 21 */ 0x025C, - /* 22 */ 0x025B, - /* 23 */ 0x025E, - /* 24 */ 0x0261, - /* 25 */ 0x0262, - /* 26 */ 0x025F, - /* 27 */ 0x0260, - /* 28 */ 0x0278, - /* 29 */ 0x0277, - /* 2A */ 0x027A, - /* 2B */ 0x0279, - /* 2C */ 0x0274, - /* 2D */ 0x0273, - /* 2E */ 0x0276, - /* 2F */ 0x0275, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x00CC, - /* 01 */ 0x00CD, - /* 02 */ 0x00CA, - /* 03 */ 0x00CB, - /* 04 */ 0x00D0, - /* 05 */ 0x00D1, - /* 06 */ 0x00CE, - /* 07 */ 0x00CF, - /* 08 */ 0x01E1, - /* 09 */ 0x01E0, - /* 0A */ 0x01E3, - /* 0B */ 0x01E2, - /* 0C */ 0x01DD, - /* 0D */ 0x01DC, - /* 0E */ 0x01DF, - /* 0F */ 0x01DE, - /* 10 */ 0x014F, - /* 11 */ 0x014E, - /* 12 */ 0x0151, - /* 13 */ 0x0150, - /* 14 */ 0x014B, - /* 15 */ 0x014A, - /* 16 */ 0x014D, - /* 17 */ 0x014C, - /* 18 */ ZYDIS_INVALID, - /* 19 */ 0x0152, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ 0x0258, - /* 21 */ 0x0259, - /* 22 */ 0x0256, - /* 23 */ 0x0257, - /* 24 */ 0x0253, - /* 25 */ 0x0252, - /* 26 */ 0x0255, - /* 27 */ 0x0254, - /* 28 */ 0x023B, - /* 29 */ 0x023D, - /* 2A */ 0x023C, - /* 2B */ 0x0239, - /* 2C */ 0x0238, - /* 2D */ 0x023A, - /* 2E */ 0x023E, - /* 2F */ 0x023F, - /* 30 */ 0x0186, - /* 31 */ 0x0185, - /* 32 */ 0x0188, - /* 33 */ 0x0187, - /* 34 */ 0x0182, - /* 35 */ 0x0181, - /* 36 */ 0x0184, - /* 37 */ 0x0183, - /* 38 */ 0x016C, - /* 39 */ 0x016B, - /* 3A */ 0x016E, - /* 3B */ 0x016D, - /* 3C */ 0x0168, - /* 3D */ 0x0167, - /* 3E */ 0x016A, - /* 3F */ 0x0169, - }, - { - /* 00 */ 0x0199, - /* 01 */ 0x0196, - /* 02 */ 0x0197, - /* 03 */ 0x0198, - /* 04 */ 0x0193, - /* 05 */ 0x0192, - /* 06 */ 0x0195, - /* 07 */ 0x0194, - /* 08 */ 0x028F, - /* 09 */ 0x0290, - /* 0A */ 0x028D, - /* 0B */ 0x028E, - /* 0C */ 0x0293, - /* 0D */ 0x0294, - /* 0E */ 0x0291, - /* 0F */ 0x0292, - /* 10 */ 0x021B, - /* 11 */ 0x021A, - /* 12 */ 0x021D, - /* 13 */ 0x021C, - /* 14 */ 0x0217, - /* 15 */ 0x0216, - /* 16 */ 0x0219, - /* 17 */ 0x0218, - /* 18 */ 0x0220, - /* 19 */ 0x0221, - /* 1A */ 0x021E, - /* 1B */ 0x021F, - /* 1C */ 0x0224, - /* 1D */ 0x0225, - /* 1E */ 0x0222, - /* 1F */ 0x0223, - /* 20 */ 0x01EC, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x0271, - /* 29 */ 0x0272, - /* 2A */ 0x026D, - /* 2B */ 0x026C, - /* 2C */ 0x026B, - /* 2D */ 0x0270, - /* 2E */ 0x026F, - /* 2F */ 0x026E, - /* 30 */ 0x0136, - /* 31 */ 0x0137, - /* 32 */ 0x0133, - /* 33 */ 0x0134, - /* 34 */ 0x0135, - /* 35 */ 0x0130, - /* 36 */ 0x0131, - /* 37 */ 0x0132, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode optreeAddressSize[][3] = -{ - { - /* 00 */ 0x02CD, - /* 01 */ 0x02D0, - /* 02 */ 0x02EC, - }, -}; - -const ZyDisOpcodeTreeNode optreeOperandSize[][3] = -{ - { - /* 00 */ 0x03E0, - /* 01 */ 0x03E1, - /* 02 */ 0x03E2, - }, - { - /* 00 */ 0x0409, - /* 01 */ 0x040A, - /* 02 */ 0x040B, - }, - { - /* 00 */ 0x033D, - /* 01 */ 0x0343, - /* 02 */ 0x035E, - }, - { - /* 00 */ 0x0341, - /* 01 */ 0x0342, - /* 02 */ 0x0364, - }, - { - /* 00 */ 0x0344, - /* 01 */ 0x033E, - /* 02 */ 0x0365, - }, - { - /* 00 */ 0x0340, - /* 01 */ 0x033F, - /* 02 */ 0x0360, - }, - { - /* 00 */ 0x007F, - /* 01 */ 0x0080, - /* 02 */ 0x007E, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x000F), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0010), - /* 02 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0011), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0012), - /* 02 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02B8, - /* 01 */ 0x02B6, - /* 02 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x03A1, - /* 01 */ 0x03A0, - /* 02 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0050, - /* 01 */ 0x009E, - /* 02 */ 0x0052, - }, - { - /* 00 */ 0x009D, - /* 01 */ 0x0051, - /* 02 */ 0x0084, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x001E), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x001F), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0020), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0021), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0022), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0023), - }, - { - /* 00 */ 0x0372, - /* 01 */ 0x0369, - /* 02 */ 0x036F, - }, - { - /* 00 */ 0x007B, - /* 01 */ 0x0078, - /* 02 */ 0x0079, - }, - { - /* 00 */ 0x0540, - /* 01 */ 0x053E, - /* 02 */ 0x053F, - }, - { - /* 00 */ 0x0303, - /* 01 */ 0x0301, - /* 02 */ 0x0302, - }, - { - /* 00 */ 0x0504, - /* 01 */ 0x0502, - /* 02 */ 0x0503, - }, - { - /* 00 */ 0x05BB, - /* 01 */ 0x05BA, - /* 02 */ 0x05D5, - }, - { - /* 00 */ 0x05B9, - /* 01 */ 0x05BC, - /* 02 */ 0x05D6, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x000E), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x000F), - /* 02 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0010), - }, - { - /* 00 */ 0x02C6, - /* 01 */ 0x02C4, - /* 02 */ 0x02C5, - }, -}; - -const ZyDisOpcodeTreeNode optreeMode[][2] = -{ - { - /* 00 */ 0x04AA, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0445, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04AD, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0553, - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x000D), - }, - { - /* 00 */ 0x0555, - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x000E), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x000F), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0010), - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0011), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VENDOR, 0x0012), - }, - { - /* 00 */ 0x04AC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0446, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04A9, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0443, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x009F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x00A0, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0001, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0004, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04BA, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04BB, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x044B, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x044C, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0038, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0033, - /* 01 */ 0x0375, - }, - { - /* 00 */ 0x0011, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0398, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0007, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04FC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x002A, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0546, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06B3, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0073, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x004F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04C0, - /* 01 */ 0x04BF, - }, - { - /* 00 */ 0x04BC, - /* 01 */ 0x04BE, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x04BD, - }, - { - /* 00 */ 0x0451, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x044E, - /* 01 */ 0x0450, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x044F, - }, - { - /* 00 */ 0x02F6, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0014), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VEXW, 0x0015), - }, - { - /* 00 */ 0x02F3, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02BC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0003, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0002, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04F0, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02DC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x004D, - /* 01 */ 0x004B, - }, -}; - -const ZyDisOpcodeTreeNode optreeVendor[][2] = -{ - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05AC, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05B2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05EB, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05F3, - }, - { - /* 00 */ 0x05EC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05B4, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05B3, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05ED, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x053A, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0056, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0530, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02C1, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04D5, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0552, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0554, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02BE, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02BF, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02C3, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02C2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05EA, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05F2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05E8, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05E9, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05F4, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05AD, - }, -}; - -const ZyDisOpcodeTreeNode optree3dnow[][256] = -{ - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ 0x0407, - /* 0D */ 0x0406, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ ZYDIS_INVALID, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_INVALID, - /* 17 */ ZYDIS_INVALID, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ 0x03E7, - /* 1D */ 0x03E6, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ ZYDIS_INVALID, - /* 2B */ ZYDIS_INVALID, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ 0x03F0, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ 0x03F1, - /* 8F */ ZYDIS_INVALID, - /* 90 */ 0x03EB, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ 0x03EE, - /* 95 */ ZYDIS_INVALID, - /* 96 */ 0x03F2, - /* 97 */ 0x03F6, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ 0x03F7, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ 0x03E9, - /* 9F */ ZYDIS_INVALID, - /* A0 */ 0x03EC, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ 0x03ED, - /* A5 */ ZYDIS_INVALID, - /* A6 */ 0x03F3, - /* A7 */ 0x03F5, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ 0x03F8, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ 0x03E8, - /* AF */ ZYDIS_INVALID, - /* B0 */ 0x03EA, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ 0x03EF, - /* B5 */ ZYDIS_INVALID, - /* B6 */ 0x03F4, - /* B7 */ 0x0433, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ 0x0499, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ 0x03C7, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_INVALID, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode optreeVex[][16] = -{ - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0024), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0004), - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0005), - /* 06 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0006), - /* 07 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0007), - /* 08 */ ZYDIS_INVALID, - /* 09 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0008), - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0009), - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::MODE, 0x0026), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0004), - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0005), - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0008), - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ NODE(ZyDisOpcodeTreeNodeType::TABLE, 0x0009), - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode optreeVexW[][2] = -{ - { - /* 00 */ 0x061D, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x061C, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0692, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0691, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x057B, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0008), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05A6, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05A5, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05A7, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05A4, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x061E, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x061B, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x0009), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x061F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0620, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0621, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0622, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x000A), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x000B), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x000C), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x000D), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x000E), - /* 01 */ NODE(ZyDisOpcodeTreeNodeType::VEXL, 0x000F), - }, - { - /* 00 */ 0x0579, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0578, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x060B, - /* 01 */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode optreeVexL[][2] = -{ - { - /* 00 */ 0x069C, - /* 01 */ 0x069B, - }, - { - /* 00 */ 0x0660, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065A, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065E, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x063F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065B, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065D, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x057A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x061A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05A0, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x059A, - }, - { - /* 00 */ 0x062C, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x062E, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x062D, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x062F, - /* 01 */ ZYDIS_INVALID, - }, -}; - -#undef ZYDIS_INVALID -#undef NODE - -#define OPI_NONE { ZyDisDefinedOperandType::NONE, ZyDisDefinedOperandSize::NA } -#define OPI_AL { ZyDisDefinedOperandType::AL, ZyDisDefinedOperandSize::B } -#define OPI_AX { ZyDisDefinedOperandType::AX, ZyDisDefinedOperandSize::W } -#define OPI_Av { ZyDisDefinedOperandType::A, ZyDisDefinedOperandSize::V } -#define OPI_C { ZyDisDefinedOperandType::C, ZyDisDefinedOperandSize::NA } -#define OPI_CL { ZyDisDefinedOperandType::CL, ZyDisDefinedOperandSize::B } -#define OPI_CS { ZyDisDefinedOperandType::CS, ZyDisDefinedOperandSize::NA } -#define OPI_CX { ZyDisDefinedOperandType::CX, ZyDisDefinedOperandSize::W } -#define OPI_D { ZyDisDefinedOperandType::D, ZyDisDefinedOperandSize::NA } -#define OPI_DL { ZyDisDefinedOperandType::DL, ZyDisDefinedOperandSize::B } -#define OPI_DS { ZyDisDefinedOperandType::DS, ZyDisDefinedOperandSize::NA } -#define OPI_DX { ZyDisDefinedOperandType::DX, ZyDisDefinedOperandSize::W } -#define OPI_E { ZyDisDefinedOperandType::E, ZyDisDefinedOperandSize::NA } -#define OPI_ES { ZyDisDefinedOperandType::ES, ZyDisDefinedOperandSize::NA } -#define OPI_Eb { ZyDisDefinedOperandType::E, ZyDisDefinedOperandSize::B } -#define OPI_Ed { ZyDisDefinedOperandType::E, ZyDisDefinedOperandSize::D } -#define OPI_Eq { ZyDisDefinedOperandType::E, ZyDisDefinedOperandSize::Q } -#define OPI_Ev { ZyDisDefinedOperandType::E, ZyDisDefinedOperandSize::V } -#define OPI_Ew { ZyDisDefinedOperandType::E, ZyDisDefinedOperandSize::W } -#define OPI_Ey { ZyDisDefinedOperandType::E, ZyDisDefinedOperandSize::Y } -#define OPI_Ez { ZyDisDefinedOperandType::E, ZyDisDefinedOperandSize::Z } -#define OPI_FS { ZyDisDefinedOperandType::FS, ZyDisDefinedOperandSize::NA } -#define OPI_Fv { ZyDisDefinedOperandType::F, ZyDisDefinedOperandSize::V } -#define OPI_G { ZyDisDefinedOperandType::G, ZyDisDefinedOperandSize::NA } -#define OPI_GS { ZyDisDefinedOperandType::GS, ZyDisDefinedOperandSize::NA } -#define OPI_Gb { ZyDisDefinedOperandType::G, ZyDisDefinedOperandSize::B } -#define OPI_Gd { ZyDisDefinedOperandType::G, ZyDisDefinedOperandSize::D } -#define OPI_Gq { ZyDisDefinedOperandType::G, ZyDisDefinedOperandSize::Q } -#define OPI_Gv { ZyDisDefinedOperandType::G, ZyDisDefinedOperandSize::V } -#define OPI_Gw { ZyDisDefinedOperandType::G, ZyDisDefinedOperandSize::W } -#define OPI_Gy { ZyDisDefinedOperandType::G, ZyDisDefinedOperandSize::Y } -#define OPI_Gz { ZyDisDefinedOperandType::G, ZyDisDefinedOperandSize::Z } -#define OPI_H { ZyDisDefinedOperandType::H, ZyDisDefinedOperandSize::X } -#define OPI_Hqq { ZyDisDefinedOperandType::H, ZyDisDefinedOperandSize::QQ } -#define OPI_Hx { ZyDisDefinedOperandType::H, ZyDisDefinedOperandSize::X } -#define OPI_I1 { ZyDisDefinedOperandType::I1, ZyDisDefinedOperandSize::NA } -#define OPI_Ib { ZyDisDefinedOperandType::I, ZyDisDefinedOperandSize::B } -#define OPI_Iv { ZyDisDefinedOperandType::I, ZyDisDefinedOperandSize::V } -#define OPI_Iw { ZyDisDefinedOperandType::I, ZyDisDefinedOperandSize::W } -#define OPI_Iz { ZyDisDefinedOperandType::I, ZyDisDefinedOperandSize::Z } -#define OPI_Jb { ZyDisDefinedOperandType::J, ZyDisDefinedOperandSize::B } -#define OPI_Jv { ZyDisDefinedOperandType::J, ZyDisDefinedOperandSize::V } -#define OPI_Jz { ZyDisDefinedOperandType::J, ZyDisDefinedOperandSize::Z } -#define OPI_L { ZyDisDefinedOperandType::L, ZyDisDefinedOperandSize::O } -#define OPI_Lx { ZyDisDefinedOperandType::L, ZyDisDefinedOperandSize::X } -#define OPI_M { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::NA } -#define OPI_Mb { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::B } -#define OPI_MbRd { ZyDisDefinedOperandType::MR, ZyDisDefinedOperandSize::BD } -#define OPI_MbRv { ZyDisDefinedOperandType::MR, ZyDisDefinedOperandSize::BV } -#define OPI_Md { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::D } -#define OPI_MdRy { ZyDisDefinedOperandType::MR, ZyDisDefinedOperandSize::DY } -#define OPI_MdU { ZyDisDefinedOperandType::MU, ZyDisDefinedOperandSize::DO } -#define OPI_Mdq { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::DQ } -#define OPI_Mo { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::O } -#define OPI_Mq { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::Q } -#define OPI_MqU { ZyDisDefinedOperandType::MU, ZyDisDefinedOperandSize::QO } -#define OPI_Ms { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::W } -#define OPI_Mt { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::T } -#define OPI_Mv { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::V } -#define OPI_Mw { ZyDisDefinedOperandType::M, ZyDisDefinedOperandSize::W } -#define OPI_MwRd { ZyDisDefinedOperandType::MR, ZyDisDefinedOperandSize::WD } -#define OPI_MwRv { ZyDisDefinedOperandType::MR, ZyDisDefinedOperandSize::WV } -#define OPI_MwRy { ZyDisDefinedOperandType::MR, ZyDisDefinedOperandSize::WY } -#define OPI_MwU { ZyDisDefinedOperandType::MU, ZyDisDefinedOperandSize::WO } -#define OPI_N { ZyDisDefinedOperandType::N, ZyDisDefinedOperandSize::Q } -#define OPI_Ob { ZyDisDefinedOperandType::O, ZyDisDefinedOperandSize::B } -#define OPI_Ov { ZyDisDefinedOperandType::O, ZyDisDefinedOperandSize::V } -#define OPI_Ow { ZyDisDefinedOperandType::O, ZyDisDefinedOperandSize::W } -#define OPI_P { ZyDisDefinedOperandType::P, ZyDisDefinedOperandSize::Q } -#define OPI_Q { ZyDisDefinedOperandType::Q, ZyDisDefinedOperandSize::Q } -#define OPI_R { ZyDisDefinedOperandType::R, ZyDisDefinedOperandSize::RDQ } -#define OPI_R0b { ZyDisDefinedOperandType::R0, ZyDisDefinedOperandSize::B } -#define OPI_R0v { ZyDisDefinedOperandType::R0, ZyDisDefinedOperandSize::V } -#define OPI_R0w { ZyDisDefinedOperandType::R0, ZyDisDefinedOperandSize::W } -#define OPI_R0y { ZyDisDefinedOperandType::R0, ZyDisDefinedOperandSize::Y } -#define OPI_R0z { ZyDisDefinedOperandType::R0, ZyDisDefinedOperandSize::Z } -#define OPI_R1b { ZyDisDefinedOperandType::R1, ZyDisDefinedOperandSize::B } -#define OPI_R1v { ZyDisDefinedOperandType::R1, ZyDisDefinedOperandSize::V } -#define OPI_R1w { ZyDisDefinedOperandType::R1, ZyDisDefinedOperandSize::W } -#define OPI_R1y { ZyDisDefinedOperandType::R1, ZyDisDefinedOperandSize::Y } -#define OPI_R1z { ZyDisDefinedOperandType::R1, ZyDisDefinedOperandSize::Z } -#define OPI_R2b { ZyDisDefinedOperandType::R2, ZyDisDefinedOperandSize::B } -#define OPI_R2v { ZyDisDefinedOperandType::R2, ZyDisDefinedOperandSize::V } -#define OPI_R2w { ZyDisDefinedOperandType::R2, ZyDisDefinedOperandSize::W } -#define OPI_R2y { ZyDisDefinedOperandType::R2, ZyDisDefinedOperandSize::Y } -#define OPI_R2z { ZyDisDefinedOperandType::R2, ZyDisDefinedOperandSize::Z } -#define OPI_R3b { ZyDisDefinedOperandType::R3, ZyDisDefinedOperandSize::B } -#define OPI_R3v { ZyDisDefinedOperandType::R3, ZyDisDefinedOperandSize::V } -#define OPI_R3w { ZyDisDefinedOperandType::R3, ZyDisDefinedOperandSize::W } -#define OPI_R3y { ZyDisDefinedOperandType::R3, ZyDisDefinedOperandSize::Y } -#define OPI_R3z { ZyDisDefinedOperandType::R3, ZyDisDefinedOperandSize::Z } -#define OPI_R4b { ZyDisDefinedOperandType::R4, ZyDisDefinedOperandSize::B } -#define OPI_R4v { ZyDisDefinedOperandType::R4, ZyDisDefinedOperandSize::V } -#define OPI_R4w { ZyDisDefinedOperandType::R4, ZyDisDefinedOperandSize::W } -#define OPI_R4y { ZyDisDefinedOperandType::R4, ZyDisDefinedOperandSize::Y } -#define OPI_R4z { ZyDisDefinedOperandType::R4, ZyDisDefinedOperandSize::Z } -#define OPI_R5b { ZyDisDefinedOperandType::R5, ZyDisDefinedOperandSize::B } -#define OPI_R5v { ZyDisDefinedOperandType::R5, ZyDisDefinedOperandSize::V } -#define OPI_R5w { ZyDisDefinedOperandType::R5, ZyDisDefinedOperandSize::W } -#define OPI_R5y { ZyDisDefinedOperandType::R5, ZyDisDefinedOperandSize::Y } -#define OPI_R5z { ZyDisDefinedOperandType::R5, ZyDisDefinedOperandSize::Z } -#define OPI_R6b { ZyDisDefinedOperandType::R6, ZyDisDefinedOperandSize::B } -#define OPI_R6v { ZyDisDefinedOperandType::R6, ZyDisDefinedOperandSize::V } -#define OPI_R6w { ZyDisDefinedOperandType::R6, ZyDisDefinedOperandSize::W } -#define OPI_R6y { ZyDisDefinedOperandType::R6, ZyDisDefinedOperandSize::Y } -#define OPI_R6z { ZyDisDefinedOperandType::R6, ZyDisDefinedOperandSize::Z } -#define OPI_R7b { ZyDisDefinedOperandType::R7, ZyDisDefinedOperandSize::B } -#define OPI_R7v { ZyDisDefinedOperandType::R7, ZyDisDefinedOperandSize::V } -#define OPI_R7w { ZyDisDefinedOperandType::R7, ZyDisDefinedOperandSize::W } -#define OPI_R7y { ZyDisDefinedOperandType::R7, ZyDisDefinedOperandSize::Y } -#define OPI_R7z { ZyDisDefinedOperandType::R7, ZyDisDefinedOperandSize::Z } -#define OPI_S { ZyDisDefinedOperandType::S, ZyDisDefinedOperandSize::W } -#define OPI_SS { ZyDisDefinedOperandType::SS, ZyDisDefinedOperandSize::NA } -#define OPI_ST0 { ZyDisDefinedOperandType::ST0, ZyDisDefinedOperandSize::NA } -#define OPI_ST1 { ZyDisDefinedOperandType::ST1, ZyDisDefinedOperandSize::NA } -#define OPI_ST2 { ZyDisDefinedOperandType::ST2, ZyDisDefinedOperandSize::NA } -#define OPI_ST3 { ZyDisDefinedOperandType::ST3, ZyDisDefinedOperandSize::NA } -#define OPI_ST4 { ZyDisDefinedOperandType::ST4, ZyDisDefinedOperandSize::NA } -#define OPI_ST5 { ZyDisDefinedOperandType::ST5, ZyDisDefinedOperandSize::NA } -#define OPI_ST6 { ZyDisDefinedOperandType::ST6, ZyDisDefinedOperandSize::NA } -#define OPI_ST7 { ZyDisDefinedOperandType::ST7, ZyDisDefinedOperandSize::NA } -#define OPI_U { ZyDisDefinedOperandType::U, ZyDisDefinedOperandSize::O } -#define OPI_Ux { ZyDisDefinedOperandType::U, ZyDisDefinedOperandSize::X } -#define OPI_V { ZyDisDefinedOperandType::V, ZyDisDefinedOperandSize::DQ } -#define OPI_Vdq { ZyDisDefinedOperandType::V, ZyDisDefinedOperandSize::DQ } -#define OPI_Vqq { ZyDisDefinedOperandType::V, ZyDisDefinedOperandSize::QQ } -#define OPI_Vsd { ZyDisDefinedOperandType::V, ZyDisDefinedOperandSize::Q } -#define OPI_Vx { ZyDisDefinedOperandType::V, ZyDisDefinedOperandSize::X } -#define OPI_W { ZyDisDefinedOperandType::W, ZyDisDefinedOperandSize::DQ } -#define OPI_Wdq { ZyDisDefinedOperandType::W, ZyDisDefinedOperandSize::DQ } -#define OPI_Wqq { ZyDisDefinedOperandType::W, ZyDisDefinedOperandSize::QQ } -#define OPI_Wsd { ZyDisDefinedOperandType::W, ZyDisDefinedOperandSize::Q } -#define OPI_Wx { ZyDisDefinedOperandType::W, ZyDisDefinedOperandSize::X } -#define OPI_eAX { ZyDisDefinedOperandType::EAX, ZyDisDefinedOperandSize::Z } -#define OPI_eCX { ZyDisDefinedOperandType::ECX, ZyDisDefinedOperandSize::Z } -#define OPI_eDX { ZyDisDefinedOperandType::EDX, ZyDisDefinedOperandSize::Z } -#define OPI_rAX { ZyDisDefinedOperandType::RAX, ZyDisDefinedOperandSize::V } -#define OPI_rCX { ZyDisDefinedOperandType::RCX, ZyDisDefinedOperandSize::V } -#define OPI_rDX { ZyDisDefinedOperandType::RDX, ZyDisDefinedOperandSize::V } -#define OPI_sIb { ZyDisDefinedOperandType::sI, ZyDisDefinedOperandSize::B } -#define OPI_sIz { ZyDisDefinedOperandType::sI, ZyDisDefinedOperandSize::Z } - -const ZyDisInstructionDefinition instrDefinitions[] = -{ - /* 000 */ { ZyDisInstructionMnemonic::INVALID, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 001 */ { ZyDisInstructionMnemonic::AAA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 002 */ { ZyDisInstructionMnemonic::AAD, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 003 */ { ZyDisInstructionMnemonic::AAM, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 004 */ { ZyDisInstructionMnemonic::AAS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 005 */ { ZyDisInstructionMnemonic::ADC, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 006 */ { ZyDisInstructionMnemonic::ADC, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 007 */ { ZyDisInstructionMnemonic::ADC, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 008 */ { ZyDisInstructionMnemonic::ADC, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 009 */ { ZyDisInstructionMnemonic::ADC, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00A */ { ZyDisInstructionMnemonic::ADC, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00B */ { ZyDisInstructionMnemonic::ADC, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00C */ { ZyDisInstructionMnemonic::ADC, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00D */ { ZyDisInstructionMnemonic::ADC, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 00E */ { ZyDisInstructionMnemonic::ADC, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00F */ { ZyDisInstructionMnemonic::ADD, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 010 */ { ZyDisInstructionMnemonic::ADD, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 011 */ { ZyDisInstructionMnemonic::ADD, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 012 */ { ZyDisInstructionMnemonic::ADD, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 013 */ { ZyDisInstructionMnemonic::ADD, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 014 */ { ZyDisInstructionMnemonic::ADD, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 015 */ { ZyDisInstructionMnemonic::ADD, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 016 */ { ZyDisInstructionMnemonic::ADD, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 017 */ { ZyDisInstructionMnemonic::ADD, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 018 */ { ZyDisInstructionMnemonic::ADD, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 019 */ { ZyDisInstructionMnemonic::ADDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01A */ { ZyDisInstructionMnemonic::ADDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01B */ { ZyDisInstructionMnemonic::ADDSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01C */ { ZyDisInstructionMnemonic::ADDSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01D */ { ZyDisInstructionMnemonic::ADDSUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01E */ { ZyDisInstructionMnemonic::ADDSUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01F */ { ZyDisInstructionMnemonic::AESDEC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 020 */ { ZyDisInstructionMnemonic::AESDECLAST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 021 */ { ZyDisInstructionMnemonic::AESENC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 022 */ { ZyDisInstructionMnemonic::AESENCLAST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 023 */ { ZyDisInstructionMnemonic::AESIMC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 024 */ { ZyDisInstructionMnemonic::AESKEYGENASSIST, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 025 */ { ZyDisInstructionMnemonic::AND, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 026 */ { ZyDisInstructionMnemonic::AND, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 027 */ { ZyDisInstructionMnemonic::AND, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 028 */ { ZyDisInstructionMnemonic::AND, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 029 */ { ZyDisInstructionMnemonic::AND, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 02A */ { ZyDisInstructionMnemonic::AND, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 02B */ { ZyDisInstructionMnemonic::AND, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 02C */ { ZyDisInstructionMnemonic::AND, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 02D */ { ZyDisInstructionMnemonic::AND, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 02E */ { ZyDisInstructionMnemonic::AND, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 02F */ { ZyDisInstructionMnemonic::ANDNPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 030 */ { ZyDisInstructionMnemonic::ANDNPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 031 */ { ZyDisInstructionMnemonic::ANDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 032 */ { ZyDisInstructionMnemonic::ANDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 033 */ { ZyDisInstructionMnemonic::ARPL, { OPI_Ew, OPI_Gw, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 034 */ { ZyDisInstructionMnemonic::BLENDPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 035 */ { ZyDisInstructionMnemonic::BLENDPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 036 */ { ZyDisInstructionMnemonic::BLENDVPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 037 */ { ZyDisInstructionMnemonic::BLENDVPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 038 */ { ZyDisInstructionMnemonic::BOUND, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 039 */ { ZyDisInstructionMnemonic::BSF, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 03A */ { ZyDisInstructionMnemonic::BSR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 03B */ { ZyDisInstructionMnemonic::BSWAP, { OPI_R5y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 03C */ { ZyDisInstructionMnemonic::BSWAP, { OPI_R3y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 03D */ { ZyDisInstructionMnemonic::BSWAP, { OPI_R1y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 03E */ { ZyDisInstructionMnemonic::BSWAP, { OPI_R4y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 03F */ { ZyDisInstructionMnemonic::BSWAP, { OPI_R0y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 040 */ { ZyDisInstructionMnemonic::BSWAP, { OPI_R2y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 041 */ { ZyDisInstructionMnemonic::BSWAP, { OPI_R7y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 042 */ { ZyDisInstructionMnemonic::BSWAP, { OPI_R6y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 043 */ { ZyDisInstructionMnemonic::BT, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 044 */ { ZyDisInstructionMnemonic::BT, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 045 */ { ZyDisInstructionMnemonic::BTC, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 046 */ { ZyDisInstructionMnemonic::BTC, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 047 */ { ZyDisInstructionMnemonic::BTR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 048 */ { ZyDisInstructionMnemonic::BTR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 049 */ { ZyDisInstructionMnemonic::BTS, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 04A */ { ZyDisInstructionMnemonic::BTS, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 04B */ { ZyDisInstructionMnemonic::CALL, { OPI_Eq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 04C */ { ZyDisInstructionMnemonic::CALL, { OPI_Fv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 04D */ { ZyDisInstructionMnemonic::CALL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 04E */ { ZyDisInstructionMnemonic::CALL, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 04F */ { ZyDisInstructionMnemonic::CALL, { OPI_Av, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 050 */ { ZyDisInstructionMnemonic::CBW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 051 */ { ZyDisInstructionMnemonic::CDQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 052 */ { ZyDisInstructionMnemonic::CDQE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 053 */ { ZyDisInstructionMnemonic::CLC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 054 */ { ZyDisInstructionMnemonic::CLD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 055 */ { ZyDisInstructionMnemonic::CLFLUSH, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 056 */ { ZyDisInstructionMnemonic::CLGI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 057 */ { ZyDisInstructionMnemonic::CLI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 058 */ { ZyDisInstructionMnemonic::CLTS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 059 */ { ZyDisInstructionMnemonic::CMC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 05A */ { ZyDisInstructionMnemonic::CMOVA, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05B */ { ZyDisInstructionMnemonic::CMOVAE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05C */ { ZyDisInstructionMnemonic::CMOVB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05D */ { ZyDisInstructionMnemonic::CMOVBE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05E */ { ZyDisInstructionMnemonic::CMOVE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05F */ { ZyDisInstructionMnemonic::CMOVG, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 060 */ { ZyDisInstructionMnemonic::CMOVGE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 061 */ { ZyDisInstructionMnemonic::CMOVL, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 062 */ { ZyDisInstructionMnemonic::CMOVLE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 063 */ { ZyDisInstructionMnemonic::CMOVNE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 064 */ { ZyDisInstructionMnemonic::CMOVNO, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 065 */ { ZyDisInstructionMnemonic::CMOVNP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 066 */ { ZyDisInstructionMnemonic::CMOVNS, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 067 */ { ZyDisInstructionMnemonic::CMOVO, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 068 */ { ZyDisInstructionMnemonic::CMOVP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 069 */ { ZyDisInstructionMnemonic::CMOVS, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 06A */ { ZyDisInstructionMnemonic::CMP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06B */ { ZyDisInstructionMnemonic::CMP, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06C */ { ZyDisInstructionMnemonic::CMP, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06D */ { ZyDisInstructionMnemonic::CMP, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06E */ { ZyDisInstructionMnemonic::CMP, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06F */ { ZyDisInstructionMnemonic::CMP, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 070 */ { ZyDisInstructionMnemonic::CMP, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, 0 }, - /* 071 */ { ZyDisInstructionMnemonic::CMP, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 072 */ { ZyDisInstructionMnemonic::CMP, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 073 */ { ZyDisInstructionMnemonic::CMP, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 }, - /* 074 */ { ZyDisInstructionMnemonic::CMPPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 075 */ { ZyDisInstructionMnemonic::CMPPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 076 */ { ZyDisInstructionMnemonic::CMPSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 077 */ { ZyDisInstructionMnemonic::CMPSD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 078 */ { ZyDisInstructionMnemonic::CMPSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 079 */ { ZyDisInstructionMnemonic::CMPSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 07A */ { ZyDisInstructionMnemonic::CMPSS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 07B */ { ZyDisInstructionMnemonic::CMPSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 07C */ { ZyDisInstructionMnemonic::CMPXCHG, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 07D */ { ZyDisInstructionMnemonic::CMPXCHG, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 07E */ { ZyDisInstructionMnemonic::CMPXCHG16B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 07F */ { ZyDisInstructionMnemonic::CMPXCHG8B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 080 */ { ZyDisInstructionMnemonic::CMPXCHG8B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 081 */ { ZyDisInstructionMnemonic::COMISD, { OPI_Vsd, OPI_Wsd, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 082 */ { ZyDisInstructionMnemonic::COMISS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 083 */ { ZyDisInstructionMnemonic::CPUID, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 084 */ { ZyDisInstructionMnemonic::CQO, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 085 */ { ZyDisInstructionMnemonic::CRC32, { OPI_Gy, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 086 */ { ZyDisInstructionMnemonic::CRC32, { OPI_Gy, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 087 */ { ZyDisInstructionMnemonic::CVTDQ2PD, { OPI_V, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 088 */ { ZyDisInstructionMnemonic::CVTDQ2PS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 089 */ { ZyDisInstructionMnemonic::CVTPD2DQ, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08A */ { ZyDisInstructionMnemonic::CVTPD2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08B */ { ZyDisInstructionMnemonic::CVTPD2PS, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08C */ { ZyDisInstructionMnemonic::CVTPI2PD, { OPI_V, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08D */ { ZyDisInstructionMnemonic::CVTPI2PS, { OPI_V, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08E */ { ZyDisInstructionMnemonic::CVTPS2DQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08F */ { ZyDisInstructionMnemonic::CVTPS2PD, { OPI_V, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 090 */ { ZyDisInstructionMnemonic::CVTPS2PI, { OPI_P, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 091 */ { ZyDisInstructionMnemonic::CVTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 092 */ { ZyDisInstructionMnemonic::CVTSD2SS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 093 */ { ZyDisInstructionMnemonic::CVTSI2SD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 094 */ { ZyDisInstructionMnemonic::CVTSI2SS, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 095 */ { ZyDisInstructionMnemonic::CVTSS2SD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 096 */ { ZyDisInstructionMnemonic::CVTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 097 */ { ZyDisInstructionMnemonic::CVTTPD2DQ, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 098 */ { ZyDisInstructionMnemonic::CVTTPD2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 099 */ { ZyDisInstructionMnemonic::CVTTPS2DQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 09A */ { ZyDisInstructionMnemonic::CVTTPS2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 09B */ { ZyDisInstructionMnemonic::CVTTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 09C */ { ZyDisInstructionMnemonic::CVTTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 09D */ { ZyDisInstructionMnemonic::CWD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 09E */ { ZyDisInstructionMnemonic::CWDE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 09F */ { ZyDisInstructionMnemonic::DAA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 0A0 */ { ZyDisInstructionMnemonic::DAS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 0A1 */ { ZyDisInstructionMnemonic::DEC, { OPI_R6z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A2 */ { ZyDisInstructionMnemonic::DEC, { OPI_R5z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A3 */ { ZyDisInstructionMnemonic::DEC, { OPI_R7z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A4 */ { ZyDisInstructionMnemonic::DEC, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0A5 */ { ZyDisInstructionMnemonic::DEC, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0A6 */ { ZyDisInstructionMnemonic::DEC, { OPI_R1z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A7 */ { ZyDisInstructionMnemonic::DEC, { OPI_R0z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A8 */ { ZyDisInstructionMnemonic::DEC, { OPI_R2z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A9 */ { ZyDisInstructionMnemonic::DEC, { OPI_R4z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0AA */ { ZyDisInstructionMnemonic::DEC, { OPI_R3z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0AB */ { ZyDisInstructionMnemonic::DIV, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 0AC */ { ZyDisInstructionMnemonic::DIV, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 0AD */ { ZyDisInstructionMnemonic::DIVPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0AE */ { ZyDisInstructionMnemonic::DIVPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0AF */ { ZyDisInstructionMnemonic::DIVSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0B0 */ { ZyDisInstructionMnemonic::DIVSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0B1 */ { ZyDisInstructionMnemonic::DPPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0B2 */ { ZyDisInstructionMnemonic::DPPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0B3 */ { ZyDisInstructionMnemonic::EMMS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0B4 */ { ZyDisInstructionMnemonic::ENTER, { OPI_Iw, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_DEFAULT_64 }, - /* 0B5 */ { ZyDisInstructionMnemonic::EXTRACTPS, { OPI_MdRy, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 0B6 */ { ZyDisInstructionMnemonic::F2XM1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0B7 */ { ZyDisInstructionMnemonic::FABS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0B8 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0B9 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0BA */ { ZyDisInstructionMnemonic::FADD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 0BB */ { ZyDisInstructionMnemonic::FADD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 0BC */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0BD */ { ZyDisInstructionMnemonic::FADD, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0BE */ { ZyDisInstructionMnemonic::FADD, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0BF */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0C0 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0C1 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0C2 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0C3 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0C4 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0C5 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0C6 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0C7 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0C8 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0C9 */ { ZyDisInstructionMnemonic::FADD, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CA */ { ZyDisInstructionMnemonic::FADDP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CB */ { ZyDisInstructionMnemonic::FADDP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CC */ { ZyDisInstructionMnemonic::FADDP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CD */ { ZyDisInstructionMnemonic::FADDP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CE */ { ZyDisInstructionMnemonic::FADDP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CF */ { ZyDisInstructionMnemonic::FADDP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0D0 */ { ZyDisInstructionMnemonic::FADDP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0D1 */ { ZyDisInstructionMnemonic::FADDP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0D2 */ { ZyDisInstructionMnemonic::FBLD, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 0D3 */ { ZyDisInstructionMnemonic::FBSTP, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 0D4 */ { ZyDisInstructionMnemonic::FCHS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0D5 */ { ZyDisInstructionMnemonic::FCLEX, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0D6 */ { ZyDisInstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0D7 */ { ZyDisInstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0D8 */ { ZyDisInstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0D9 */ { ZyDisInstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0DA */ { ZyDisInstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0DB */ { ZyDisInstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0DC */ { ZyDisInstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0DD */ { ZyDisInstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0DE */ { ZyDisInstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0DF */ { ZyDisInstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0E0 */ { ZyDisInstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0E1 */ { ZyDisInstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0E2 */ { ZyDisInstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0E3 */ { ZyDisInstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0E4 */ { ZyDisInstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0E5 */ { ZyDisInstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0E6 */ { ZyDisInstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0E7 */ { ZyDisInstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0E8 */ { ZyDisInstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0E9 */ { ZyDisInstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0EA */ { ZyDisInstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0EB */ { ZyDisInstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0EC */ { ZyDisInstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0ED */ { ZyDisInstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0EE */ { ZyDisInstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0EF */ { ZyDisInstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0F0 */ { ZyDisInstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0F1 */ { ZyDisInstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0F2 */ { ZyDisInstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0F3 */ { ZyDisInstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0F4 */ { ZyDisInstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0F5 */ { ZyDisInstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0F6 */ { ZyDisInstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0F7 */ { ZyDisInstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0F8 */ { ZyDisInstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0F9 */ { ZyDisInstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0FA */ { ZyDisInstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0FB */ { ZyDisInstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0FC */ { ZyDisInstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0FD */ { ZyDisInstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0FE */ { ZyDisInstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0FF */ { ZyDisInstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 100 */ { ZyDisInstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 101 */ { ZyDisInstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 102 */ { ZyDisInstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 103 */ { ZyDisInstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 104 */ { ZyDisInstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 105 */ { ZyDisInstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 106 */ { ZyDisInstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 107 */ { ZyDisInstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 108 */ { ZyDisInstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 109 */ { ZyDisInstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 10A */ { ZyDisInstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 10B */ { ZyDisInstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 10C */ { ZyDisInstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 10D */ { ZyDisInstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 10E */ { ZyDisInstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 10F */ { ZyDisInstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 110 */ { ZyDisInstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 111 */ { ZyDisInstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 112 */ { ZyDisInstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 113 */ { ZyDisInstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 114 */ { ZyDisInstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 115 */ { ZyDisInstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 116 */ { ZyDisInstructionMnemonic::FCOM, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 117 */ { ZyDisInstructionMnemonic::FCOM, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 118 */ { ZyDisInstructionMnemonic::FCOM, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 119 */ { ZyDisInstructionMnemonic::FCOM, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 11A */ { ZyDisInstructionMnemonic::FCOM, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 11B */ { ZyDisInstructionMnemonic::FCOM, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 11C */ { ZyDisInstructionMnemonic::FCOM, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 11D */ { ZyDisInstructionMnemonic::FCOM, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 11E */ { ZyDisInstructionMnemonic::FCOM, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 11F */ { ZyDisInstructionMnemonic::FCOM, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 120 */ { ZyDisInstructionMnemonic::FCOM2, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 121 */ { ZyDisInstructionMnemonic::FCOM2, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 122 */ { ZyDisInstructionMnemonic::FCOM2, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 123 */ { ZyDisInstructionMnemonic::FCOM2, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 124 */ { ZyDisInstructionMnemonic::FCOM2, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 125 */ { ZyDisInstructionMnemonic::FCOM2, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 126 */ { ZyDisInstructionMnemonic::FCOM2, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 127 */ { ZyDisInstructionMnemonic::FCOM2, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 128 */ { ZyDisInstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 129 */ { ZyDisInstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 12A */ { ZyDisInstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 12B */ { ZyDisInstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 12C */ { ZyDisInstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 12D */ { ZyDisInstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 12E */ { ZyDisInstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 12F */ { ZyDisInstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 130 */ { ZyDisInstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 131 */ { ZyDisInstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 132 */ { ZyDisInstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 133 */ { ZyDisInstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 134 */ { ZyDisInstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 135 */ { ZyDisInstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 136 */ { ZyDisInstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 137 */ { ZyDisInstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 138 */ { ZyDisInstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 139 */ { ZyDisInstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 13A */ { ZyDisInstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 13B */ { ZyDisInstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 13C */ { ZyDisInstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 13D */ { ZyDisInstructionMnemonic::FCOMP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 13E */ { ZyDisInstructionMnemonic::FCOMP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 13F */ { ZyDisInstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 140 */ { ZyDisInstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 141 */ { ZyDisInstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 142 */ { ZyDisInstructionMnemonic::FCOMP3, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 143 */ { ZyDisInstructionMnemonic::FCOMP3, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 144 */ { ZyDisInstructionMnemonic::FCOMP3, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 145 */ { ZyDisInstructionMnemonic::FCOMP3, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 146 */ { ZyDisInstructionMnemonic::FCOMP3, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 147 */ { ZyDisInstructionMnemonic::FCOMP3, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 148 */ { ZyDisInstructionMnemonic::FCOMP3, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 149 */ { ZyDisInstructionMnemonic::FCOMP3, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14A */ { ZyDisInstructionMnemonic::FCOMP5, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14B */ { ZyDisInstructionMnemonic::FCOMP5, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14C */ { ZyDisInstructionMnemonic::FCOMP5, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14D */ { ZyDisInstructionMnemonic::FCOMP5, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14E */ { ZyDisInstructionMnemonic::FCOMP5, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14F */ { ZyDisInstructionMnemonic::FCOMP5, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 150 */ { ZyDisInstructionMnemonic::FCOMP5, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 151 */ { ZyDisInstructionMnemonic::FCOMP5, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 152 */ { ZyDisInstructionMnemonic::FCOMPP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 153 */ { ZyDisInstructionMnemonic::FCOS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 154 */ { ZyDisInstructionMnemonic::FDECSTP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 155 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 156 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 157 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 158 */ { ZyDisInstructionMnemonic::FDIV, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 159 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 15A */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 15B */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 15C */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 15D */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 15E */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 15F */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 160 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 161 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 162 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 163 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 164 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 165 */ { ZyDisInstructionMnemonic::FDIV, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 166 */ { ZyDisInstructionMnemonic::FDIV, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 167 */ { ZyDisInstructionMnemonic::FDIVP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 168 */ { ZyDisInstructionMnemonic::FDIVP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 169 */ { ZyDisInstructionMnemonic::FDIVP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16A */ { ZyDisInstructionMnemonic::FDIVP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16B */ { ZyDisInstructionMnemonic::FDIVP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16C */ { ZyDisInstructionMnemonic::FDIVP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16D */ { ZyDisInstructionMnemonic::FDIVP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16E */ { ZyDisInstructionMnemonic::FDIVP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16F */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 170 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 171 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 172 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 173 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 174 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 175 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 176 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 177 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 178 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 179 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17A */ { ZyDisInstructionMnemonic::FDIVR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 17B */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17C */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17D */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17E */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17F */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 180 */ { ZyDisInstructionMnemonic::FDIVR, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 181 */ { ZyDisInstructionMnemonic::FDIVRP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 182 */ { ZyDisInstructionMnemonic::FDIVRP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 183 */ { ZyDisInstructionMnemonic::FDIVRP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 184 */ { ZyDisInstructionMnemonic::FDIVRP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 185 */ { ZyDisInstructionMnemonic::FDIVRP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 186 */ { ZyDisInstructionMnemonic::FDIVRP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 187 */ { ZyDisInstructionMnemonic::FDIVRP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 188 */ { ZyDisInstructionMnemonic::FDIVRP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 189 */ { ZyDisInstructionMnemonic::FEMMS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18A */ { ZyDisInstructionMnemonic::FFREE, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18B */ { ZyDisInstructionMnemonic::FFREE, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18C */ { ZyDisInstructionMnemonic::FFREE, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18D */ { ZyDisInstructionMnemonic::FFREE, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18E */ { ZyDisInstructionMnemonic::FFREE, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18F */ { ZyDisInstructionMnemonic::FFREE, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 190 */ { ZyDisInstructionMnemonic::FFREE, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 191 */ { ZyDisInstructionMnemonic::FFREE, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 192 */ { ZyDisInstructionMnemonic::FFREEP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 193 */ { ZyDisInstructionMnemonic::FFREEP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 194 */ { ZyDisInstructionMnemonic::FFREEP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 195 */ { ZyDisInstructionMnemonic::FFREEP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 196 */ { ZyDisInstructionMnemonic::FFREEP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 197 */ { ZyDisInstructionMnemonic::FFREEP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 198 */ { ZyDisInstructionMnemonic::FFREEP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 199 */ { ZyDisInstructionMnemonic::FFREEP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 19A */ { ZyDisInstructionMnemonic::FIADD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19B */ { ZyDisInstructionMnemonic::FIADD, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19C */ { ZyDisInstructionMnemonic::FICOM, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19D */ { ZyDisInstructionMnemonic::FICOM, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19E */ { ZyDisInstructionMnemonic::FICOMP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19F */ { ZyDisInstructionMnemonic::FICOMP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A0 */ { ZyDisInstructionMnemonic::FIDIV, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A1 */ { ZyDisInstructionMnemonic::FIDIV, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A2 */ { ZyDisInstructionMnemonic::FIDIVR, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A3 */ { ZyDisInstructionMnemonic::FIDIVR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A4 */ { ZyDisInstructionMnemonic::FILD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A5 */ { ZyDisInstructionMnemonic::FILD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A6 */ { ZyDisInstructionMnemonic::FILD, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A7 */ { ZyDisInstructionMnemonic::FIMUL, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A8 */ { ZyDisInstructionMnemonic::FIMUL, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A9 */ { ZyDisInstructionMnemonic::FINCSTP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1AA */ { ZyDisInstructionMnemonic::FIST, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AB */ { ZyDisInstructionMnemonic::FIST, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AC */ { ZyDisInstructionMnemonic::FISTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AD */ { ZyDisInstructionMnemonic::FISTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AE */ { ZyDisInstructionMnemonic::FISTP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AF */ { ZyDisInstructionMnemonic::FISTTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B0 */ { ZyDisInstructionMnemonic::FISTTP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B1 */ { ZyDisInstructionMnemonic::FISTTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B2 */ { ZyDisInstructionMnemonic::FISUB, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B3 */ { ZyDisInstructionMnemonic::FISUB, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B4 */ { ZyDisInstructionMnemonic::FISUBR, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B5 */ { ZyDisInstructionMnemonic::FISUBR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B6 */ { ZyDisInstructionMnemonic::FLD, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1B7 */ { ZyDisInstructionMnemonic::FLD, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1B8 */ { ZyDisInstructionMnemonic::FLD, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1B9 */ { ZyDisInstructionMnemonic::FLD, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1BA */ { ZyDisInstructionMnemonic::FLD, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1BB */ { ZyDisInstructionMnemonic::FLD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1BC */ { ZyDisInstructionMnemonic::FLD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1BD */ { ZyDisInstructionMnemonic::FLD, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1BE */ { ZyDisInstructionMnemonic::FLD, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1BF */ { ZyDisInstructionMnemonic::FLD, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C0 */ { ZyDisInstructionMnemonic::FLD, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C1 */ { ZyDisInstructionMnemonic::FLD1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C2 */ { ZyDisInstructionMnemonic::FLDCW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1C3 */ { ZyDisInstructionMnemonic::FLDENV, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1C4 */ { ZyDisInstructionMnemonic::FLDL2E, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C5 */ { ZyDisInstructionMnemonic::FLDL2T, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C6 */ { ZyDisInstructionMnemonic::FLDLG2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C7 */ { ZyDisInstructionMnemonic::FLDLN2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C8 */ { ZyDisInstructionMnemonic::FLDPI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C9 */ { ZyDisInstructionMnemonic::FLDZ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1CA */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1CB */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1CC */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1CD */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 1CE */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1CF */ { ZyDisInstructionMnemonic::FMUL, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1D0 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D1 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D2 */ { ZyDisInstructionMnemonic::FMUL, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1D3 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D4 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D5 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D6 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 1D7 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 1D8 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 1D9 */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 1DA */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 1DB */ { ZyDisInstructionMnemonic::FMUL, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 1DC */ { ZyDisInstructionMnemonic::FMULP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1DD */ { ZyDisInstructionMnemonic::FMULP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1DE */ { ZyDisInstructionMnemonic::FMULP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1DF */ { ZyDisInstructionMnemonic::FMULP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E0 */ { ZyDisInstructionMnemonic::FMULP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E1 */ { ZyDisInstructionMnemonic::FMULP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E2 */ { ZyDisInstructionMnemonic::FMULP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E3 */ { ZyDisInstructionMnemonic::FMULP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E4 */ { ZyDisInstructionMnemonic::FNDISI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1E5 */ { ZyDisInstructionMnemonic::FNENI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1E6 */ { ZyDisInstructionMnemonic::FNINIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1E7 */ { ZyDisInstructionMnemonic::FNOP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1E8 */ { ZyDisInstructionMnemonic::FNSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1E9 */ { ZyDisInstructionMnemonic::FNSETPM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1EA */ { ZyDisInstructionMnemonic::FNSTCW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1EB */ { ZyDisInstructionMnemonic::FNSTENV, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1EC */ { ZyDisInstructionMnemonic::FNSTSW, { OPI_AX, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1ED */ { ZyDisInstructionMnemonic::FNSTSW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1EE */ { ZyDisInstructionMnemonic::FPATAN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1EF */ { ZyDisInstructionMnemonic::FPREM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F0 */ { ZyDisInstructionMnemonic::FPREM1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F1 */ { ZyDisInstructionMnemonic::FPTAN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F2 */ { ZyDisInstructionMnemonic::FRNDINT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F3 */ { ZyDisInstructionMnemonic::FRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1F4 */ { ZyDisInstructionMnemonic::FRSTPM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F5 */ { ZyDisInstructionMnemonic::FSCALE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F6 */ { ZyDisInstructionMnemonic::FSIN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F7 */ { ZyDisInstructionMnemonic::FSINCOS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F8 */ { ZyDisInstructionMnemonic::FSQRT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F9 */ { ZyDisInstructionMnemonic::FST, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FA */ { ZyDisInstructionMnemonic::FST, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FB */ { ZyDisInstructionMnemonic::FST, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FC */ { ZyDisInstructionMnemonic::FST, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FD */ { ZyDisInstructionMnemonic::FST, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FE */ { ZyDisInstructionMnemonic::FST, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1FF */ { ZyDisInstructionMnemonic::FST, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 200 */ { ZyDisInstructionMnemonic::FST, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 201 */ { ZyDisInstructionMnemonic::FST, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 202 */ { ZyDisInstructionMnemonic::FST, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 203 */ { ZyDisInstructionMnemonic::FSTP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 204 */ { ZyDisInstructionMnemonic::FSTP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 205 */ { ZyDisInstructionMnemonic::FSTP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 206 */ { ZyDisInstructionMnemonic::FSTP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 207 */ { ZyDisInstructionMnemonic::FSTP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 208 */ { ZyDisInstructionMnemonic::FSTP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 209 */ { ZyDisInstructionMnemonic::FSTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 20A */ { ZyDisInstructionMnemonic::FSTP, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 20B */ { ZyDisInstructionMnemonic::FSTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 20C */ { ZyDisInstructionMnemonic::FSTP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 20D */ { ZyDisInstructionMnemonic::FSTP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 20E */ { ZyDisInstructionMnemonic::FSTP1, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 20F */ { ZyDisInstructionMnemonic::FSTP1, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 210 */ { ZyDisInstructionMnemonic::FSTP1, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 211 */ { ZyDisInstructionMnemonic::FSTP1, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 212 */ { ZyDisInstructionMnemonic::FSTP1, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 213 */ { ZyDisInstructionMnemonic::FSTP1, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 214 */ { ZyDisInstructionMnemonic::FSTP1, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 215 */ { ZyDisInstructionMnemonic::FSTP1, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 216 */ { ZyDisInstructionMnemonic::FSTP8, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 217 */ { ZyDisInstructionMnemonic::FSTP8, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 218 */ { ZyDisInstructionMnemonic::FSTP8, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 219 */ { ZyDisInstructionMnemonic::FSTP8, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21A */ { ZyDisInstructionMnemonic::FSTP8, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21B */ { ZyDisInstructionMnemonic::FSTP8, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21C */ { ZyDisInstructionMnemonic::FSTP8, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21D */ { ZyDisInstructionMnemonic::FSTP8, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21E */ { ZyDisInstructionMnemonic::FSTP9, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21F */ { ZyDisInstructionMnemonic::FSTP9, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 220 */ { ZyDisInstructionMnemonic::FSTP9, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 221 */ { ZyDisInstructionMnemonic::FSTP9, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 222 */ { ZyDisInstructionMnemonic::FSTP9, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 223 */ { ZyDisInstructionMnemonic::FSTP9, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 224 */ { ZyDisInstructionMnemonic::FSTP9, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 225 */ { ZyDisInstructionMnemonic::FSTP9, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 226 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 227 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 228 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 229 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 22A */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 22B */ { ZyDisInstructionMnemonic::FSUB, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 22C */ { ZyDisInstructionMnemonic::FSUB, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 22D */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 22E */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 22F */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 230 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 231 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 232 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 233 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 234 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 235 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 236 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 237 */ { ZyDisInstructionMnemonic::FSUB, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 238 */ { ZyDisInstructionMnemonic::FSUBP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 239 */ { ZyDisInstructionMnemonic::FSUBP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23A */ { ZyDisInstructionMnemonic::FSUBP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23B */ { ZyDisInstructionMnemonic::FSUBP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23C */ { ZyDisInstructionMnemonic::FSUBP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23D */ { ZyDisInstructionMnemonic::FSUBP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23E */ { ZyDisInstructionMnemonic::FSUBP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23F */ { ZyDisInstructionMnemonic::FSUBP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 240 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 241 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 242 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 243 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 244 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 245 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 246 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 247 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 248 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 249 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 24A */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 24B */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 24C */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 24D */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 24E */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 24F */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 250 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 251 */ { ZyDisInstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 252 */ { ZyDisInstructionMnemonic::FSUBRP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 253 */ { ZyDisInstructionMnemonic::FSUBRP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 254 */ { ZyDisInstructionMnemonic::FSUBRP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 255 */ { ZyDisInstructionMnemonic::FSUBRP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 256 */ { ZyDisInstructionMnemonic::FSUBRP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 257 */ { ZyDisInstructionMnemonic::FSUBRP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 258 */ { ZyDisInstructionMnemonic::FSUBRP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 259 */ { ZyDisInstructionMnemonic::FSUBRP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 25A */ { ZyDisInstructionMnemonic::FTST, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25B */ { ZyDisInstructionMnemonic::FUCOM, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25C */ { ZyDisInstructionMnemonic::FUCOM, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25D */ { ZyDisInstructionMnemonic::FUCOM, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25E */ { ZyDisInstructionMnemonic::FUCOM, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25F */ { ZyDisInstructionMnemonic::FUCOM, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 260 */ { ZyDisInstructionMnemonic::FUCOM, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 261 */ { ZyDisInstructionMnemonic::FUCOM, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 262 */ { ZyDisInstructionMnemonic::FUCOM, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 263 */ { ZyDisInstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 264 */ { ZyDisInstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 265 */ { ZyDisInstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 266 */ { ZyDisInstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 267 */ { ZyDisInstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 268 */ { ZyDisInstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 269 */ { ZyDisInstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 26A */ { ZyDisInstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 26B */ { ZyDisInstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 26C */ { ZyDisInstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 26D */ { ZyDisInstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 26E */ { ZyDisInstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 26F */ { ZyDisInstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 270 */ { ZyDisInstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 271 */ { ZyDisInstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 272 */ { ZyDisInstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 273 */ { ZyDisInstructionMnemonic::FUCOMP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 274 */ { ZyDisInstructionMnemonic::FUCOMP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 275 */ { ZyDisInstructionMnemonic::FUCOMP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 276 */ { ZyDisInstructionMnemonic::FUCOMP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 277 */ { ZyDisInstructionMnemonic::FUCOMP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 278 */ { ZyDisInstructionMnemonic::FUCOMP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 279 */ { ZyDisInstructionMnemonic::FUCOMP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 27A */ { ZyDisInstructionMnemonic::FUCOMP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 27B */ { ZyDisInstructionMnemonic::FUCOMPP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 27C */ { ZyDisInstructionMnemonic::FXAM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 27D */ { ZyDisInstructionMnemonic::FXCH, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 27E */ { ZyDisInstructionMnemonic::FXCH, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 27F */ { ZyDisInstructionMnemonic::FXCH, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 280 */ { ZyDisInstructionMnemonic::FXCH, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 281 */ { ZyDisInstructionMnemonic::FXCH, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 282 */ { ZyDisInstructionMnemonic::FXCH, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 283 */ { ZyDisInstructionMnemonic::FXCH, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 284 */ { ZyDisInstructionMnemonic::FXCH, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 285 */ { ZyDisInstructionMnemonic::FXCH4, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 286 */ { ZyDisInstructionMnemonic::FXCH4, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 287 */ { ZyDisInstructionMnemonic::FXCH4, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 288 */ { ZyDisInstructionMnemonic::FXCH4, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 289 */ { ZyDisInstructionMnemonic::FXCH4, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28A */ { ZyDisInstructionMnemonic::FXCH4, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28B */ { ZyDisInstructionMnemonic::FXCH4, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28C */ { ZyDisInstructionMnemonic::FXCH4, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28D */ { ZyDisInstructionMnemonic::FXCH7, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28E */ { ZyDisInstructionMnemonic::FXCH7, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28F */ { ZyDisInstructionMnemonic::FXCH7, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 290 */ { ZyDisInstructionMnemonic::FXCH7, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 291 */ { ZyDisInstructionMnemonic::FXCH7, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 292 */ { ZyDisInstructionMnemonic::FXCH7, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 293 */ { ZyDisInstructionMnemonic::FXCH7, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 294 */ { ZyDisInstructionMnemonic::FXCH7, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 295 */ { ZyDisInstructionMnemonic::FXRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 296 */ { ZyDisInstructionMnemonic::FXSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 297 */ { ZyDisInstructionMnemonic::FXTRACT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 298 */ { ZyDisInstructionMnemonic::FYL2X, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 299 */ { ZyDisInstructionMnemonic::FYL2XP1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 29A */ { ZyDisInstructionMnemonic::GETSEC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 29B */ { ZyDisInstructionMnemonic::HADDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 29C */ { ZyDisInstructionMnemonic::HADDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 29D */ { ZyDisInstructionMnemonic::HLT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 29E */ { ZyDisInstructionMnemonic::HSUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 29F */ { ZyDisInstructionMnemonic::HSUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A0 */ { ZyDisInstructionMnemonic::IDIV, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2A1 */ { ZyDisInstructionMnemonic::IDIV, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2A2 */ { ZyDisInstructionMnemonic::IMUL, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A3 */ { ZyDisInstructionMnemonic::IMUL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A4 */ { ZyDisInstructionMnemonic::IMUL, { OPI_Gv, OPI_Ev, OPI_Iz, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A5 */ { ZyDisInstructionMnemonic::IMUL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A6 */ { ZyDisInstructionMnemonic::IMUL, { OPI_Gv, OPI_Ev, OPI_sIb, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A7 */ { ZyDisInstructionMnemonic::IN, { OPI_AL, OPI_DX, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 2A8 */ { ZyDisInstructionMnemonic::IN, { OPI_eAX, OPI_DX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 2A9 */ { ZyDisInstructionMnemonic::IN, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 2AA */ { ZyDisInstructionMnemonic::IN, { OPI_eAX, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 2AB */ { ZyDisInstructionMnemonic::INC, { OPI_R0z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2AC */ { ZyDisInstructionMnemonic::INC, { OPI_R1z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2AD */ { ZyDisInstructionMnemonic::INC, { OPI_R7z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2AE */ { ZyDisInstructionMnemonic::INC, { OPI_R6z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2AF */ { ZyDisInstructionMnemonic::INC, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2B0 */ { ZyDisInstructionMnemonic::INC, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2B1 */ { ZyDisInstructionMnemonic::INC, { OPI_R3z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2B2 */ { ZyDisInstructionMnemonic::INC, { OPI_R2z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2B3 */ { ZyDisInstructionMnemonic::INC, { OPI_R4z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2B4 */ { ZyDisInstructionMnemonic::INC, { OPI_R5z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2B5 */ { ZyDisInstructionMnemonic::INSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 2B6 */ { ZyDisInstructionMnemonic::INSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 2B7 */ { ZyDisInstructionMnemonic::INSERTPS, { OPI_V, OPI_Md, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2B8 */ { ZyDisInstructionMnemonic::INSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 2B9 */ { ZyDisInstructionMnemonic::INT, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2BA */ { ZyDisInstructionMnemonic::INT1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2BB */ { ZyDisInstructionMnemonic::INT3, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2BC */ { ZyDisInstructionMnemonic::INTO, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 2BD */ { ZyDisInstructionMnemonic::INVD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2BE */ { ZyDisInstructionMnemonic::INVEPT, { OPI_Gd, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, - /* 2BF */ { ZyDisInstructionMnemonic::INVEPT, { OPI_Gq, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, - /* 2C0 */ { ZyDisInstructionMnemonic::INVLPG, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2C1 */ { ZyDisInstructionMnemonic::INVLPGA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2C2 */ { ZyDisInstructionMnemonic::INVVPID, { OPI_Gq, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, - /* 2C3 */ { ZyDisInstructionMnemonic::INVVPID, { OPI_Gd, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, - /* 2C4 */ { ZyDisInstructionMnemonic::IRETD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 2C5 */ { ZyDisInstructionMnemonic::IRETQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 2C6 */ { ZyDisInstructionMnemonic::IRETW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 2C7 */ { ZyDisInstructionMnemonic::JA, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2C8 */ { ZyDisInstructionMnemonic::JA, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2C9 */ { ZyDisInstructionMnemonic::JB, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2CA */ { ZyDisInstructionMnemonic::JB, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2CB */ { ZyDisInstructionMnemonic::JBE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2CC */ { ZyDisInstructionMnemonic::JBE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2CD */ { ZyDisInstructionMnemonic::JCXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, - /* 2CE */ { ZyDisInstructionMnemonic::JE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2CF */ { ZyDisInstructionMnemonic::JE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D0 */ { ZyDisInstructionMnemonic::JECXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, - /* 2D1 */ { ZyDisInstructionMnemonic::JG, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2D2 */ { ZyDisInstructionMnemonic::JG, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D3 */ { ZyDisInstructionMnemonic::JGE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2D4 */ { ZyDisInstructionMnemonic::JGE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D5 */ { ZyDisInstructionMnemonic::JL, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2D6 */ { ZyDisInstructionMnemonic::JL, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D7 */ { ZyDisInstructionMnemonic::JLE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D8 */ { ZyDisInstructionMnemonic::JLE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2D9 */ { ZyDisInstructionMnemonic::JMP, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 2DA */ { ZyDisInstructionMnemonic::JMP, { OPI_Fv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2DB */ { ZyDisInstructionMnemonic::JMP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 2DC */ { ZyDisInstructionMnemonic::JMP, { OPI_Av, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 2DD */ { ZyDisInstructionMnemonic::JMP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_DEFAULT_64 }, - /* 2DE */ { ZyDisInstructionMnemonic::JNB, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2DF */ { ZyDisInstructionMnemonic::JNB, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E0 */ { ZyDisInstructionMnemonic::JNE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E1 */ { ZyDisInstructionMnemonic::JNE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E2 */ { ZyDisInstructionMnemonic::JNO, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E3 */ { ZyDisInstructionMnemonic::JNO, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E4 */ { ZyDisInstructionMnemonic::JNP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E5 */ { ZyDisInstructionMnemonic::JNP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E6 */ { ZyDisInstructionMnemonic::JNS, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E7 */ { ZyDisInstructionMnemonic::JNS, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E8 */ { ZyDisInstructionMnemonic::JO, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E9 */ { ZyDisInstructionMnemonic::JO, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2EA */ { ZyDisInstructionMnemonic::JP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2EB */ { ZyDisInstructionMnemonic::JP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2EC */ { ZyDisInstructionMnemonic::JRCXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, - /* 2ED */ { ZyDisInstructionMnemonic::JS, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2EE */ { ZyDisInstructionMnemonic::JS, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2EF */ { ZyDisInstructionMnemonic::LAHF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2F0 */ { ZyDisInstructionMnemonic::LAR, { OPI_Gv, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2F1 */ { ZyDisInstructionMnemonic::LDDQU, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2F2 */ { ZyDisInstructionMnemonic::LDMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2F3 */ { ZyDisInstructionMnemonic::LDS, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 2F4 */ { ZyDisInstructionMnemonic::LEA, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2F5 */ { ZyDisInstructionMnemonic::LEAVE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2F6 */ { ZyDisInstructionMnemonic::LES, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 2F7 */ { ZyDisInstructionMnemonic::LFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2F8 */ { ZyDisInstructionMnemonic::LFS, { OPI_Gz, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2F9 */ { ZyDisInstructionMnemonic::LGDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FA */ { ZyDisInstructionMnemonic::LGS, { OPI_Gz, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2FB */ { ZyDisInstructionMnemonic::LIDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FC */ { ZyDisInstructionMnemonic::LLDT, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FD */ { ZyDisInstructionMnemonic::LMSW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FE */ { ZyDisInstructionMnemonic::LMSW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FF */ { ZyDisInstructionMnemonic::LOCK, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 300 */ { ZyDisInstructionMnemonic::LODSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 301 */ { ZyDisInstructionMnemonic::LODSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 302 */ { ZyDisInstructionMnemonic::LODSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 303 */ { ZyDisInstructionMnemonic::LODSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 304 */ { ZyDisInstructionMnemonic::LOOP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 305 */ { ZyDisInstructionMnemonic::LOOPE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 306 */ { ZyDisInstructionMnemonic::LOOPNE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 307 */ { ZyDisInstructionMnemonic::LSL, { OPI_Gv, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 308 */ { ZyDisInstructionMnemonic::LSS, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 309 */ { ZyDisInstructionMnemonic::LTR, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 30A */ { ZyDisInstructionMnemonic::MASKMOVDQU, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 30B */ { ZyDisInstructionMnemonic::MASKMOVQ, { OPI_P, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 30C */ { ZyDisInstructionMnemonic::MAXPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 30D */ { ZyDisInstructionMnemonic::MAXPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 30E */ { ZyDisInstructionMnemonic::MAXSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 30F */ { ZyDisInstructionMnemonic::MAXSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 310 */ { ZyDisInstructionMnemonic::MFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 311 */ { ZyDisInstructionMnemonic::MINPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 312 */ { ZyDisInstructionMnemonic::MINPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 313 */ { ZyDisInstructionMnemonic::MINSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 314 */ { ZyDisInstructionMnemonic::MINSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 315 */ { ZyDisInstructionMnemonic::MONITOR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 316 */ { ZyDisInstructionMnemonic::MONTMUL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 317 */ { ZyDisInstructionMnemonic::MOV, { OPI_R0b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 318 */ { ZyDisInstructionMnemonic::MOV, { OPI_R2b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 319 */ { ZyDisInstructionMnemonic::MOV, { OPI_R3b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 31A */ { ZyDisInstructionMnemonic::MOV, { OPI_R1b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 31B */ { ZyDisInstructionMnemonic::MOV, { OPI_AL, OPI_Ob, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 31C */ { ZyDisInstructionMnemonic::MOV, { OPI_S, OPI_MwRv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 31D */ { ZyDisInstructionMnemonic::MOV, { OPI_MwRv, OPI_S, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 31E */ { ZyDisInstructionMnemonic::MOV, { OPI_Ov, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 31F */ { ZyDisInstructionMnemonic::MOV, { OPI_Ob, OPI_AL, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 320 */ { ZyDisInstructionMnemonic::MOV, { OPI_rAX, OPI_Ov, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 321 */ { ZyDisInstructionMnemonic::MOV, { OPI_R4b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 322 */ { ZyDisInstructionMnemonic::MOV, { OPI_R7v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 323 */ { ZyDisInstructionMnemonic::MOV, { OPI_R6v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 324 */ { ZyDisInstructionMnemonic::MOV, { OPI_R5v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 325 */ { ZyDisInstructionMnemonic::MOV, { OPI_R, OPI_C, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 326 */ { ZyDisInstructionMnemonic::MOV, { OPI_D, OPI_R, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 327 */ { ZyDisInstructionMnemonic::MOV, { OPI_C, OPI_R, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 328 */ { ZyDisInstructionMnemonic::MOV, { OPI_R, OPI_D, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 329 */ { ZyDisInstructionMnemonic::MOV, { OPI_R4v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32A */ { ZyDisInstructionMnemonic::MOV, { OPI_R7b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32B */ { ZyDisInstructionMnemonic::MOV, { OPI_R6b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32C */ { ZyDisInstructionMnemonic::MOV, { OPI_R5b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32D */ { ZyDisInstructionMnemonic::MOV, { OPI_R0v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32E */ { ZyDisInstructionMnemonic::MOV, { OPI_R3v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32F */ { ZyDisInstructionMnemonic::MOV, { OPI_R2v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 330 */ { ZyDisInstructionMnemonic::MOV, { OPI_R1v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 331 */ { ZyDisInstructionMnemonic::MOV, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 332 */ { ZyDisInstructionMnemonic::MOV, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 333 */ { ZyDisInstructionMnemonic::MOV, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 334 */ { ZyDisInstructionMnemonic::MOV, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 335 */ { ZyDisInstructionMnemonic::MOV, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 336 */ { ZyDisInstructionMnemonic::MOV, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 337 */ { ZyDisInstructionMnemonic::MOVAPD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 338 */ { ZyDisInstructionMnemonic::MOVAPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 339 */ { ZyDisInstructionMnemonic::MOVAPS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33A */ { ZyDisInstructionMnemonic::MOVAPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33B */ { ZyDisInstructionMnemonic::MOVBE, { OPI_Gv, OPI_Mv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33C */ { ZyDisInstructionMnemonic::MOVBE, { OPI_Mv, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33D */ { ZyDisInstructionMnemonic::MOVD, { OPI_P, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33E */ { ZyDisInstructionMnemonic::MOVD, { OPI_Ey, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33F */ { ZyDisInstructionMnemonic::MOVD, { OPI_Ey, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 340 */ { ZyDisInstructionMnemonic::MOVD, { OPI_Ey, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 341 */ { ZyDisInstructionMnemonic::MOVD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 342 */ { ZyDisInstructionMnemonic::MOVD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 343 */ { ZyDisInstructionMnemonic::MOVD, { OPI_P, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 344 */ { ZyDisInstructionMnemonic::MOVD, { OPI_Ey, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 345 */ { ZyDisInstructionMnemonic::MOVDDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 346 */ { ZyDisInstructionMnemonic::MOVDDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 347 */ { ZyDisInstructionMnemonic::MOVDQ2Q, { OPI_P, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 348 */ { ZyDisInstructionMnemonic::MOVDQA, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 349 */ { ZyDisInstructionMnemonic::MOVDQA, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34A */ { ZyDisInstructionMnemonic::MOVDQU, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34B */ { ZyDisInstructionMnemonic::MOVDQU, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34C */ { ZyDisInstructionMnemonic::MOVHLPS, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34D */ { ZyDisInstructionMnemonic::MOVHPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34E */ { ZyDisInstructionMnemonic::MOVHPD, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34F */ { ZyDisInstructionMnemonic::MOVHPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 350 */ { ZyDisInstructionMnemonic::MOVHPS, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 351 */ { ZyDisInstructionMnemonic::MOVLHPS, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 352 */ { ZyDisInstructionMnemonic::MOVLPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 353 */ { ZyDisInstructionMnemonic::MOVLPD, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 354 */ { ZyDisInstructionMnemonic::MOVLPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 355 */ { ZyDisInstructionMnemonic::MOVLPS, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 356 */ { ZyDisInstructionMnemonic::MOVMSKPD, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 357 */ { ZyDisInstructionMnemonic::MOVMSKPS, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 358 */ { ZyDisInstructionMnemonic::MOVNTDQ, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 359 */ { ZyDisInstructionMnemonic::MOVNTDQA, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35A */ { ZyDisInstructionMnemonic::MOVNTI, { OPI_M, OPI_Gy, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35B */ { ZyDisInstructionMnemonic::MOVNTPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35C */ { ZyDisInstructionMnemonic::MOVNTPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35D */ { ZyDisInstructionMnemonic::MOVNTQ, { OPI_M, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35E */ { ZyDisInstructionMnemonic::MOVQ, { OPI_P, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35F */ { ZyDisInstructionMnemonic::MOVQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 360 */ { ZyDisInstructionMnemonic::MOVQ, { OPI_Eq, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 361 */ { ZyDisInstructionMnemonic::MOVQ, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 362 */ { ZyDisInstructionMnemonic::MOVQ, { OPI_Q, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 363 */ { ZyDisInstructionMnemonic::MOVQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 364 */ { ZyDisInstructionMnemonic::MOVQ, { OPI_V, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 365 */ { ZyDisInstructionMnemonic::MOVQ, { OPI_Eq, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 366 */ { ZyDisInstructionMnemonic::MOVQ2DQ, { OPI_V, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_OPERAND1_WRITE }, - /* 367 */ { ZyDisInstructionMnemonic::MOVSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_OPERAND1_WRITE }, - /* 368 */ { ZyDisInstructionMnemonic::MOVSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 369 */ { ZyDisInstructionMnemonic::MOVSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 36A */ { ZyDisInstructionMnemonic::MOVSD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36B */ { ZyDisInstructionMnemonic::MOVSHDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36C */ { ZyDisInstructionMnemonic::MOVSHDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36D */ { ZyDisInstructionMnemonic::MOVSLDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36E */ { ZyDisInstructionMnemonic::MOVSLDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36F */ { ZyDisInstructionMnemonic::MOVSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 370 */ { ZyDisInstructionMnemonic::MOVSS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 371 */ { ZyDisInstructionMnemonic::MOVSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 372 */ { ZyDisInstructionMnemonic::MOVSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 373 */ { ZyDisInstructionMnemonic::MOVSX, { OPI_Gv, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 374 */ { ZyDisInstructionMnemonic::MOVSX, { OPI_Gy, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 375 */ { ZyDisInstructionMnemonic::MOVSXD, { OPI_Gq, OPI_Ed, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 376 */ { ZyDisInstructionMnemonic::MOVUPD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 377 */ { ZyDisInstructionMnemonic::MOVUPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 378 */ { ZyDisInstructionMnemonic::MOVUPS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 379 */ { ZyDisInstructionMnemonic::MOVUPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 37A */ { ZyDisInstructionMnemonic::MOVZX, { OPI_Gy, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 37B */ { ZyDisInstructionMnemonic::MOVZX, { OPI_Gv, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 37C */ { ZyDisInstructionMnemonic::MPSADBW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 37D */ { ZyDisInstructionMnemonic::MUL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 37E */ { ZyDisInstructionMnemonic::MUL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 37F */ { ZyDisInstructionMnemonic::MULPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 380 */ { ZyDisInstructionMnemonic::MULPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 381 */ { ZyDisInstructionMnemonic::MULSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 382 */ { ZyDisInstructionMnemonic::MULSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 383 */ { ZyDisInstructionMnemonic::MWAIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 384 */ { ZyDisInstructionMnemonic::NEG, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 385 */ { ZyDisInstructionMnemonic::NEG, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 386 */ { ZyDisInstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 387 */ { ZyDisInstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 388 */ { ZyDisInstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 389 */ { ZyDisInstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 38A */ { ZyDisInstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 38B */ { ZyDisInstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 38C */ { ZyDisInstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 38D */ { ZyDisInstructionMnemonic::NOT, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 38E */ { ZyDisInstructionMnemonic::NOT, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 38F */ { ZyDisInstructionMnemonic::OR, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 390 */ { ZyDisInstructionMnemonic::OR, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 391 */ { ZyDisInstructionMnemonic::OR, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 392 */ { ZyDisInstructionMnemonic::OR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 393 */ { ZyDisInstructionMnemonic::OR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 394 */ { ZyDisInstructionMnemonic::OR, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 395 */ { ZyDisInstructionMnemonic::OR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 396 */ { ZyDisInstructionMnemonic::OR, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 397 */ { ZyDisInstructionMnemonic::OR, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 398 */ { ZyDisInstructionMnemonic::OR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 399 */ { ZyDisInstructionMnemonic::ORPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 39A */ { ZyDisInstructionMnemonic::ORPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 39B */ { ZyDisInstructionMnemonic::OUT, { OPI_DX, OPI_AL, OPI_NONE, OPI_NONE }, 0 }, - /* 39C */ { ZyDisInstructionMnemonic::OUT, { OPI_DX, OPI_eAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 39D */ { ZyDisInstructionMnemonic::OUT, { OPI_Ib, OPI_AL, OPI_NONE, OPI_NONE }, 0 }, - /* 39E */ { ZyDisInstructionMnemonic::OUT, { OPI_Ib, OPI_eAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 39F */ { ZyDisInstructionMnemonic::OUTSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 3A0 */ { ZyDisInstructionMnemonic::OUTSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 3A1 */ { ZyDisInstructionMnemonic::OUTSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 3A2 */ { ZyDisInstructionMnemonic::PABSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A3 */ { ZyDisInstructionMnemonic::PABSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A4 */ { ZyDisInstructionMnemonic::PABSD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A5 */ { ZyDisInstructionMnemonic::PABSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A6 */ { ZyDisInstructionMnemonic::PABSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A7 */ { ZyDisInstructionMnemonic::PABSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A8 */ { ZyDisInstructionMnemonic::PACKSSDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3A9 */ { ZyDisInstructionMnemonic::PACKSSDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AA */ { ZyDisInstructionMnemonic::PACKSSWB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AB */ { ZyDisInstructionMnemonic::PACKSSWB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AC */ { ZyDisInstructionMnemonic::PACKUSDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AD */ { ZyDisInstructionMnemonic::PACKUSWB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AE */ { ZyDisInstructionMnemonic::PACKUSWB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AF */ { ZyDisInstructionMnemonic::PADDB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B0 */ { ZyDisInstructionMnemonic::PADDB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B1 */ { ZyDisInstructionMnemonic::PADDD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B2 */ { ZyDisInstructionMnemonic::PADDD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B3 */ { ZyDisInstructionMnemonic::PADDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B4 */ { ZyDisInstructionMnemonic::PADDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B5 */ { ZyDisInstructionMnemonic::PADDSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B6 */ { ZyDisInstructionMnemonic::PADDSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B7 */ { ZyDisInstructionMnemonic::PADDSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B8 */ { ZyDisInstructionMnemonic::PADDSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B9 */ { ZyDisInstructionMnemonic::PADDUSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BA */ { ZyDisInstructionMnemonic::PADDUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BB */ { ZyDisInstructionMnemonic::PADDUSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BC */ { ZyDisInstructionMnemonic::PADDUSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BD */ { ZyDisInstructionMnemonic::PADDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BE */ { ZyDisInstructionMnemonic::PADDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BF */ { ZyDisInstructionMnemonic::PALIGNR, { OPI_P, OPI_Q, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C0 */ { ZyDisInstructionMnemonic::PALIGNR, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C1 */ { ZyDisInstructionMnemonic::PAND, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C2 */ { ZyDisInstructionMnemonic::PAND, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C3 */ { ZyDisInstructionMnemonic::PANDN, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C4 */ { ZyDisInstructionMnemonic::PANDN, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C5 */ { ZyDisInstructionMnemonic::PAVGB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C6 */ { ZyDisInstructionMnemonic::PAVGB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C7 */ { ZyDisInstructionMnemonic::PAVGUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C8 */ { ZyDisInstructionMnemonic::PAVGW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C9 */ { ZyDisInstructionMnemonic::PAVGW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CA */ { ZyDisInstructionMnemonic::PBLENDVB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CB */ { ZyDisInstructionMnemonic::PBLENDW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CC */ { ZyDisInstructionMnemonic::PCLMULQDQ, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CD */ { ZyDisInstructionMnemonic::PCMPEQB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CE */ { ZyDisInstructionMnemonic::PCMPEQB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CF */ { ZyDisInstructionMnemonic::PCMPEQD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D0 */ { ZyDisInstructionMnemonic::PCMPEQD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D1 */ { ZyDisInstructionMnemonic::PCMPEQQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3D2 */ { ZyDisInstructionMnemonic::PCMPEQW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D3 */ { ZyDisInstructionMnemonic::PCMPEQW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D4 */ { ZyDisInstructionMnemonic::PCMPESTRI, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3D5 */ { ZyDisInstructionMnemonic::PCMPESTRM, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3D6 */ { ZyDisInstructionMnemonic::PCMPGTB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D7 */ { ZyDisInstructionMnemonic::PCMPGTB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D8 */ { ZyDisInstructionMnemonic::PCMPGTD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D9 */ { ZyDisInstructionMnemonic::PCMPGTD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3DA */ { ZyDisInstructionMnemonic::PCMPGTQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3DB */ { ZyDisInstructionMnemonic::PCMPGTW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3DC */ { ZyDisInstructionMnemonic::PCMPGTW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3DD */ { ZyDisInstructionMnemonic::PCMPISTRI, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3DE */ { ZyDisInstructionMnemonic::PCMPISTRM, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3DF */ { ZyDisInstructionMnemonic::PEXTRB, { OPI_MbRv, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 3E0 */ { ZyDisInstructionMnemonic::PEXTRD, { OPI_Ed, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E1 */ { ZyDisInstructionMnemonic::PEXTRD, { OPI_Ed, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E2 */ { ZyDisInstructionMnemonic::PEXTRQ, { OPI_Eq, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 3E3 */ { ZyDisInstructionMnemonic::PEXTRW, { OPI_MwRd, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E4 */ { ZyDisInstructionMnemonic::PEXTRW, { OPI_Gd, OPI_N, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E5 */ { ZyDisInstructionMnemonic::PEXTRW, { OPI_Gd, OPI_U, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E6 */ { ZyDisInstructionMnemonic::PF2ID, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E7 */ { ZyDisInstructionMnemonic::PF2IW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E8 */ { ZyDisInstructionMnemonic::PFACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3E9 */ { ZyDisInstructionMnemonic::PFADD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EA */ { ZyDisInstructionMnemonic::PFCMPEQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EB */ { ZyDisInstructionMnemonic::PFCMPGE, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EC */ { ZyDisInstructionMnemonic::PFCMPGT, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3ED */ { ZyDisInstructionMnemonic::PFMAX, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EE */ { ZyDisInstructionMnemonic::PFMIN, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EF */ { ZyDisInstructionMnemonic::PFMUL, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F0 */ { ZyDisInstructionMnemonic::PFNACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F1 */ { ZyDisInstructionMnemonic::PFPNACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F2 */ { ZyDisInstructionMnemonic::PFRCP, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F3 */ { ZyDisInstructionMnemonic::PFRCPIT1, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F4 */ { ZyDisInstructionMnemonic::PFRCPIT2, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F5 */ { ZyDisInstructionMnemonic::PFRSQIT1, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F6 */ { ZyDisInstructionMnemonic::PFRSQRT, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F7 */ { ZyDisInstructionMnemonic::PFSUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F8 */ { ZyDisInstructionMnemonic::PFSUBR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F9 */ { ZyDisInstructionMnemonic::PHADDD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FA */ { ZyDisInstructionMnemonic::PHADDD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FB */ { ZyDisInstructionMnemonic::PHADDSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FC */ { ZyDisInstructionMnemonic::PHADDSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FD */ { ZyDisInstructionMnemonic::PHADDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FE */ { ZyDisInstructionMnemonic::PHADDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FF */ { ZyDisInstructionMnemonic::PHMINPOSUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 400 */ { ZyDisInstructionMnemonic::PHSUBD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 401 */ { ZyDisInstructionMnemonic::PHSUBD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 402 */ { ZyDisInstructionMnemonic::PHSUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 403 */ { ZyDisInstructionMnemonic::PHSUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 404 */ { ZyDisInstructionMnemonic::PHSUBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 405 */ { ZyDisInstructionMnemonic::PHSUBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 406 */ { ZyDisInstructionMnemonic::PI2FD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 407 */ { ZyDisInstructionMnemonic::PI2FW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 408 */ { ZyDisInstructionMnemonic::PINSRB, { OPI_V, OPI_MbRd, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 409 */ { ZyDisInstructionMnemonic::PINSRD, { OPI_V, OPI_Ed, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 40A */ { ZyDisInstructionMnemonic::PINSRD, { OPI_V, OPI_Ed, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 40B */ { ZyDisInstructionMnemonic::PINSRQ, { OPI_V, OPI_Eq, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 40C */ { ZyDisInstructionMnemonic::PINSRW, { OPI_V, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 40D */ { ZyDisInstructionMnemonic::PINSRW, { OPI_P, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 40E */ { ZyDisInstructionMnemonic::PMADDUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 40F */ { ZyDisInstructionMnemonic::PMADDUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 410 */ { ZyDisInstructionMnemonic::PMADDWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 411 */ { ZyDisInstructionMnemonic::PMADDWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 412 */ { ZyDisInstructionMnemonic::PMAXSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 413 */ { ZyDisInstructionMnemonic::PMAXSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 414 */ { ZyDisInstructionMnemonic::PMAXSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 415 */ { ZyDisInstructionMnemonic::PMAXSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 416 */ { ZyDisInstructionMnemonic::PMAXUB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 417 */ { ZyDisInstructionMnemonic::PMAXUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 418 */ { ZyDisInstructionMnemonic::PMAXUD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 419 */ { ZyDisInstructionMnemonic::PMAXUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41A */ { ZyDisInstructionMnemonic::PMINSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41B */ { ZyDisInstructionMnemonic::PMINSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41C */ { ZyDisInstructionMnemonic::PMINSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41D */ { ZyDisInstructionMnemonic::PMINSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41E */ { ZyDisInstructionMnemonic::PMINUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41F */ { ZyDisInstructionMnemonic::PMINUB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 420 */ { ZyDisInstructionMnemonic::PMINUD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 421 */ { ZyDisInstructionMnemonic::PMINUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 422 */ { ZyDisInstructionMnemonic::PMOVMSKB, { OPI_Gd, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 423 */ { ZyDisInstructionMnemonic::PMOVMSKB, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 424 */ { ZyDisInstructionMnemonic::PMOVSXBD, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 425 */ { ZyDisInstructionMnemonic::PMOVSXBQ, { OPI_V, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 426 */ { ZyDisInstructionMnemonic::PMOVSXBW, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 427 */ { ZyDisInstructionMnemonic::PMOVSXDQ, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 428 */ { ZyDisInstructionMnemonic::PMOVSXWD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 429 */ { ZyDisInstructionMnemonic::PMOVSXWQ, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42A */ { ZyDisInstructionMnemonic::PMOVZXBD, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42B */ { ZyDisInstructionMnemonic::PMOVZXBQ, { OPI_V, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42C */ { ZyDisInstructionMnemonic::PMOVZXBW, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42D */ { ZyDisInstructionMnemonic::PMOVZXDQ, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42E */ { ZyDisInstructionMnemonic::PMOVZXWD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42F */ { ZyDisInstructionMnemonic::PMOVZXWQ, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 430 */ { ZyDisInstructionMnemonic::PMULDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 431 */ { ZyDisInstructionMnemonic::PMULHRSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 432 */ { ZyDisInstructionMnemonic::PMULHRSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 433 */ { ZyDisInstructionMnemonic::PMULHRW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 434 */ { ZyDisInstructionMnemonic::PMULHUW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 435 */ { ZyDisInstructionMnemonic::PMULHUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 436 */ { ZyDisInstructionMnemonic::PMULHW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 437 */ { ZyDisInstructionMnemonic::PMULHW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 438 */ { ZyDisInstructionMnemonic::PMULLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 439 */ { ZyDisInstructionMnemonic::PMULLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 43A */ { ZyDisInstructionMnemonic::PMULLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 43B */ { ZyDisInstructionMnemonic::PMULUDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 43C */ { ZyDisInstructionMnemonic::PMULUDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 43D */ { ZyDisInstructionMnemonic::POP, { OPI_R5v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 43E */ { ZyDisInstructionMnemonic::POP, { OPI_R4v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 43F */ { ZyDisInstructionMnemonic::POP, { OPI_R6v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 440 */ { ZyDisInstructionMnemonic::POP, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 441 */ { ZyDisInstructionMnemonic::POP, { OPI_R7v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 442 */ { ZyDisInstructionMnemonic::POP, { OPI_R3v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 443 */ { ZyDisInstructionMnemonic::POP, { OPI_DS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, - /* 444 */ { ZyDisInstructionMnemonic::POP, { OPI_GS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 445 */ { ZyDisInstructionMnemonic::POP, { OPI_ES, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, - /* 446 */ { ZyDisInstructionMnemonic::POP, { OPI_SS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, - /* 447 */ { ZyDisInstructionMnemonic::POP, { OPI_R1v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 448 */ { ZyDisInstructionMnemonic::POP, { OPI_R2v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 449 */ { ZyDisInstructionMnemonic::POP, { OPI_R0v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 44A */ { ZyDisInstructionMnemonic::POP, { OPI_FS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 44B */ { ZyDisInstructionMnemonic::POPA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, - /* 44C */ { ZyDisInstructionMnemonic::POPAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, - /* 44D */ { ZyDisInstructionMnemonic::POPCNT, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 44E */ { ZyDisInstructionMnemonic::POPFD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 44F */ { ZyDisInstructionMnemonic::POPFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 450 */ { ZyDisInstructionMnemonic::POPFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 451 */ { ZyDisInstructionMnemonic::POPFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 452 */ { ZyDisInstructionMnemonic::POR, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 453 */ { ZyDisInstructionMnemonic::POR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 454 */ { ZyDisInstructionMnemonic::PREFETCH, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 455 */ { ZyDisInstructionMnemonic::PREFETCHNTA, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 456 */ { ZyDisInstructionMnemonic::PREFETCHT0, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 457 */ { ZyDisInstructionMnemonic::PREFETCHT1, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 458 */ { ZyDisInstructionMnemonic::PREFETCHT2, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 459 */ { ZyDisInstructionMnemonic::PSADBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 45A */ { ZyDisInstructionMnemonic::PSADBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 45B */ { ZyDisInstructionMnemonic::PSHUFB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 45C */ { ZyDisInstructionMnemonic::PSHUFB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 45D */ { ZyDisInstructionMnemonic::PSHUFD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 45E */ { ZyDisInstructionMnemonic::PSHUFHW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 45F */ { ZyDisInstructionMnemonic::PSHUFLW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 460 */ { ZyDisInstructionMnemonic::PSHUFW, { OPI_P, OPI_Q, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 461 */ { ZyDisInstructionMnemonic::PSIGNB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 462 */ { ZyDisInstructionMnemonic::PSIGNB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 463 */ { ZyDisInstructionMnemonic::PSIGND, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 464 */ { ZyDisInstructionMnemonic::PSIGND, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 465 */ { ZyDisInstructionMnemonic::PSIGNW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 466 */ { ZyDisInstructionMnemonic::PSIGNW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 467 */ { ZyDisInstructionMnemonic::PSLLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 468 */ { ZyDisInstructionMnemonic::PSLLD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 469 */ { ZyDisInstructionMnemonic::PSLLD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46A */ { ZyDisInstructionMnemonic::PSLLD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46B */ { ZyDisInstructionMnemonic::PSLLDQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46C */ { ZyDisInstructionMnemonic::PSLLQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46D */ { ZyDisInstructionMnemonic::PSLLQ, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 46E */ { ZyDisInstructionMnemonic::PSLLQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46F */ { ZyDisInstructionMnemonic::PSLLQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 470 */ { ZyDisInstructionMnemonic::PSLLW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 471 */ { ZyDisInstructionMnemonic::PSLLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 472 */ { ZyDisInstructionMnemonic::PSLLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 473 */ { ZyDisInstructionMnemonic::PSLLW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 474 */ { ZyDisInstructionMnemonic::PSRAD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 475 */ { ZyDisInstructionMnemonic::PSRAD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 476 */ { ZyDisInstructionMnemonic::PSRAD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 477 */ { ZyDisInstructionMnemonic::PSRAD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 478 */ { ZyDisInstructionMnemonic::PSRAW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 479 */ { ZyDisInstructionMnemonic::PSRAW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 47A */ { ZyDisInstructionMnemonic::PSRAW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 47B */ { ZyDisInstructionMnemonic::PSRAW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 47C */ { ZyDisInstructionMnemonic::PSRLD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 47D */ { ZyDisInstructionMnemonic::PSRLD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 47E */ { ZyDisInstructionMnemonic::PSRLD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 47F */ { ZyDisInstructionMnemonic::PSRLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 480 */ { ZyDisInstructionMnemonic::PSRLDQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 481 */ { ZyDisInstructionMnemonic::PSRLQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 482 */ { ZyDisInstructionMnemonic::PSRLQ, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 483 */ { ZyDisInstructionMnemonic::PSRLQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 484 */ { ZyDisInstructionMnemonic::PSRLQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 485 */ { ZyDisInstructionMnemonic::PSRLW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 486 */ { ZyDisInstructionMnemonic::PSRLW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 487 */ { ZyDisInstructionMnemonic::PSRLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 488 */ { ZyDisInstructionMnemonic::PSRLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 489 */ { ZyDisInstructionMnemonic::PSUBB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48A */ { ZyDisInstructionMnemonic::PSUBB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48B */ { ZyDisInstructionMnemonic::PSUBD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48C */ { ZyDisInstructionMnemonic::PSUBD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48D */ { ZyDisInstructionMnemonic::PSUBQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48E */ { ZyDisInstructionMnemonic::PSUBQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48F */ { ZyDisInstructionMnemonic::PSUBSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 490 */ { ZyDisInstructionMnemonic::PSUBSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 491 */ { ZyDisInstructionMnemonic::PSUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 492 */ { ZyDisInstructionMnemonic::PSUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 493 */ { ZyDisInstructionMnemonic::PSUBUSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 494 */ { ZyDisInstructionMnemonic::PSUBUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 495 */ { ZyDisInstructionMnemonic::PSUBUSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 496 */ { ZyDisInstructionMnemonic::PSUBUSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 497 */ { ZyDisInstructionMnemonic::PSUBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 498 */ { ZyDisInstructionMnemonic::PSUBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 499 */ { ZyDisInstructionMnemonic::PSWAPD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 49A */ { ZyDisInstructionMnemonic::PTEST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 49B */ { ZyDisInstructionMnemonic::PUNPCKHBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 49C */ { ZyDisInstructionMnemonic::PUNPCKHBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 49D */ { ZyDisInstructionMnemonic::PUNPCKHDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 49E */ { ZyDisInstructionMnemonic::PUNPCKHDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 49F */ { ZyDisInstructionMnemonic::PUNPCKHQDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A0 */ { ZyDisInstructionMnemonic::PUNPCKHWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A1 */ { ZyDisInstructionMnemonic::PUNPCKHWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A2 */ { ZyDisInstructionMnemonic::PUNPCKLBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A3 */ { ZyDisInstructionMnemonic::PUNPCKLBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A4 */ { ZyDisInstructionMnemonic::PUNPCKLDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A5 */ { ZyDisInstructionMnemonic::PUNPCKLDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A6 */ { ZyDisInstructionMnemonic::PUNPCKLQDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A7 */ { ZyDisInstructionMnemonic::PUNPCKLWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A8 */ { ZyDisInstructionMnemonic::PUNPCKLWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A9 */ { ZyDisInstructionMnemonic::PUSH, { OPI_DS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 4AA */ { ZyDisInstructionMnemonic::PUSH, { OPI_ES, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 4AB */ { ZyDisInstructionMnemonic::PUSH, { OPI_sIb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 4AC */ { ZyDisInstructionMnemonic::PUSH, { OPI_SS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 4AD */ { ZyDisInstructionMnemonic::PUSH, { OPI_CS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 4AE */ { ZyDisInstructionMnemonic::PUSH, { OPI_R3v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4AF */ { ZyDisInstructionMnemonic::PUSH, { OPI_R4v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B0 */ { ZyDisInstructionMnemonic::PUSH, { OPI_R5v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B1 */ { ZyDisInstructionMnemonic::PUSH, { OPI_R6v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B2 */ { ZyDisInstructionMnemonic::PUSH, { OPI_R7v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B3 */ { ZyDisInstructionMnemonic::PUSH, { OPI_R2v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B4 */ { ZyDisInstructionMnemonic::PUSH, { OPI_R0v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B5 */ { ZyDisInstructionMnemonic::PUSH, { OPI_FS, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4B6 */ { ZyDisInstructionMnemonic::PUSH, { OPI_GS, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4B7 */ { ZyDisInstructionMnemonic::PUSH, { OPI_sIz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 4B8 */ { ZyDisInstructionMnemonic::PUSH, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B9 */ { ZyDisInstructionMnemonic::PUSH, { OPI_R1v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4BA */ { ZyDisInstructionMnemonic::PUSHA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, - /* 4BB */ { ZyDisInstructionMnemonic::PUSHAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, - /* 4BC */ { ZyDisInstructionMnemonic::PUSHFD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 4BD */ { ZyDisInstructionMnemonic::PUSHFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 4BE */ { ZyDisInstructionMnemonic::PUSHFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 4BF */ { ZyDisInstructionMnemonic::PUSHFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 4C0 */ { ZyDisInstructionMnemonic::PUSHFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 4C1 */ { ZyDisInstructionMnemonic::PXOR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C2 */ { ZyDisInstructionMnemonic::PXOR, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C3 */ { ZyDisInstructionMnemonic::RCL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C4 */ { ZyDisInstructionMnemonic::RCL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C5 */ { ZyDisInstructionMnemonic::RCL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C6 */ { ZyDisInstructionMnemonic::RCL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C7 */ { ZyDisInstructionMnemonic::RCL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C8 */ { ZyDisInstructionMnemonic::RCL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C9 */ { ZyDisInstructionMnemonic::RCPPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4CA */ { ZyDisInstructionMnemonic::RCPSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4CB */ { ZyDisInstructionMnemonic::RCR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4CC */ { ZyDisInstructionMnemonic::RCR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4CD */ { ZyDisInstructionMnemonic::RCR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4CE */ { ZyDisInstructionMnemonic::RCR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4CF */ { ZyDisInstructionMnemonic::RCR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4D0 */ { ZyDisInstructionMnemonic::RCR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4D1 */ { ZyDisInstructionMnemonic::RDMSR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D2 */ { ZyDisInstructionMnemonic::RDPMC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D3 */ { ZyDisInstructionMnemonic::RDRAND, { OPI_R, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4D4 */ { ZyDisInstructionMnemonic::RDTSC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D5 */ { ZyDisInstructionMnemonic::RDTSCP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D6 */ { ZyDisInstructionMnemonic::REP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D7 */ { ZyDisInstructionMnemonic::REPNE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D8 */ { ZyDisInstructionMnemonic::RET, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D9 */ { ZyDisInstructionMnemonic::RET, { OPI_Iw, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4DA */ { ZyDisInstructionMnemonic::RETF, { OPI_Iw, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4DB */ { ZyDisInstructionMnemonic::RETF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4DC */ { ZyDisInstructionMnemonic::ROL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4DD */ { ZyDisInstructionMnemonic::ROL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4DE */ { ZyDisInstructionMnemonic::ROL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4DF */ { ZyDisInstructionMnemonic::ROL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E0 */ { ZyDisInstructionMnemonic::ROL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E1 */ { ZyDisInstructionMnemonic::ROL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E2 */ { ZyDisInstructionMnemonic::ROR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E3 */ { ZyDisInstructionMnemonic::ROR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E4 */ { ZyDisInstructionMnemonic::ROR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E5 */ { ZyDisInstructionMnemonic::ROR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E6 */ { ZyDisInstructionMnemonic::ROR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E7 */ { ZyDisInstructionMnemonic::ROR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E8 */ { ZyDisInstructionMnemonic::ROUNDPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4E9 */ { ZyDisInstructionMnemonic::ROUNDPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EA */ { ZyDisInstructionMnemonic::ROUNDSD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EB */ { ZyDisInstructionMnemonic::ROUNDSS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EC */ { ZyDisInstructionMnemonic::RSM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4ED */ { ZyDisInstructionMnemonic::RSQRTPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EE */ { ZyDisInstructionMnemonic::RSQRTSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EF */ { ZyDisInstructionMnemonic::SAHF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4F0 */ { ZyDisInstructionMnemonic::SALC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 4F1 */ { ZyDisInstructionMnemonic::SAR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F2 */ { ZyDisInstructionMnemonic::SAR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F3 */ { ZyDisInstructionMnemonic::SAR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F4 */ { ZyDisInstructionMnemonic::SAR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F5 */ { ZyDisInstructionMnemonic::SAR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F6 */ { ZyDisInstructionMnemonic::SAR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F7 */ { ZyDisInstructionMnemonic::SBB, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4F8 */ { ZyDisInstructionMnemonic::SBB, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4F9 */ { ZyDisInstructionMnemonic::SBB, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 4FA */ { ZyDisInstructionMnemonic::SBB, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 4FB */ { ZyDisInstructionMnemonic::SBB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4FC */ { ZyDisInstructionMnemonic::SBB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_WRITE }, - /* 4FD */ { ZyDisInstructionMnemonic::SBB, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4FE */ { ZyDisInstructionMnemonic::SBB, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4FF */ { ZyDisInstructionMnemonic::SBB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 500 */ { ZyDisInstructionMnemonic::SBB, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 501 */ { ZyDisInstructionMnemonic::SCASB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 502 */ { ZyDisInstructionMnemonic::SCASD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 503 */ { ZyDisInstructionMnemonic::SCASQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 504 */ { ZyDisInstructionMnemonic::SCASW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 505 */ { ZyDisInstructionMnemonic::SETA, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 506 */ { ZyDisInstructionMnemonic::SETAE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 507 */ { ZyDisInstructionMnemonic::SETB, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 508 */ { ZyDisInstructionMnemonic::SETBE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 509 */ { ZyDisInstructionMnemonic::SETE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50A */ { ZyDisInstructionMnemonic::SETG, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50B */ { ZyDisInstructionMnemonic::SETGE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50C */ { ZyDisInstructionMnemonic::SETL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50D */ { ZyDisInstructionMnemonic::SETLE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50E */ { ZyDisInstructionMnemonic::SETNE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50F */ { ZyDisInstructionMnemonic::SETNO, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 510 */ { ZyDisInstructionMnemonic::SETNP, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 511 */ { ZyDisInstructionMnemonic::SETNS, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 512 */ { ZyDisInstructionMnemonic::SETO, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 513 */ { ZyDisInstructionMnemonic::SETP, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 514 */ { ZyDisInstructionMnemonic::SETS, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 515 */ { ZyDisInstructionMnemonic::SFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 516 */ { ZyDisInstructionMnemonic::SGDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 517 */ { ZyDisInstructionMnemonic::SHL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 518 */ { ZyDisInstructionMnemonic::SHL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 519 */ { ZyDisInstructionMnemonic::SHL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51A */ { ZyDisInstructionMnemonic::SHL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51B */ { ZyDisInstructionMnemonic::SHL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51C */ { ZyDisInstructionMnemonic::SHL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51D */ { ZyDisInstructionMnemonic::SHL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51E */ { ZyDisInstructionMnemonic::SHL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51F */ { ZyDisInstructionMnemonic::SHL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 520 */ { ZyDisInstructionMnemonic::SHL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 521 */ { ZyDisInstructionMnemonic::SHL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 522 */ { ZyDisInstructionMnemonic::SHL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 523 */ { ZyDisInstructionMnemonic::SHLD, { OPI_Ev, OPI_Gv, OPI_CL, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 524 */ { ZyDisInstructionMnemonic::SHLD, { OPI_Ev, OPI_Gv, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 525 */ { ZyDisInstructionMnemonic::SHR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 526 */ { ZyDisInstructionMnemonic::SHR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 527 */ { ZyDisInstructionMnemonic::SHR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 528 */ { ZyDisInstructionMnemonic::SHR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 529 */ { ZyDisInstructionMnemonic::SHR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52A */ { ZyDisInstructionMnemonic::SHR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52B */ { ZyDisInstructionMnemonic::SHRD, { OPI_Ev, OPI_Gv, OPI_CL, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52C */ { ZyDisInstructionMnemonic::SHRD, { OPI_Ev, OPI_Gv, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52D */ { ZyDisInstructionMnemonic::SHUFPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52E */ { ZyDisInstructionMnemonic::SHUFPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52F */ { ZyDisInstructionMnemonic::SIDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 530 */ { ZyDisInstructionMnemonic::SKINIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 531 */ { ZyDisInstructionMnemonic::SLDT, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 532 */ { ZyDisInstructionMnemonic::SMSW, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 533 */ { ZyDisInstructionMnemonic::SMSW, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 534 */ { ZyDisInstructionMnemonic::SQRTPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 535 */ { ZyDisInstructionMnemonic::SQRTPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 536 */ { ZyDisInstructionMnemonic::SQRTSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 537 */ { ZyDisInstructionMnemonic::SQRTSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 538 */ { ZyDisInstructionMnemonic::STC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 539 */ { ZyDisInstructionMnemonic::STD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 53A */ { ZyDisInstructionMnemonic::STGI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 53B */ { ZyDisInstructionMnemonic::STI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 53C */ { ZyDisInstructionMnemonic::STMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 53D */ { ZyDisInstructionMnemonic::STOSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 53E */ { ZyDisInstructionMnemonic::STOSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 53F */ { ZyDisInstructionMnemonic::STOSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 540 */ { ZyDisInstructionMnemonic::STOSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 541 */ { ZyDisInstructionMnemonic::STR, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 542 */ { ZyDisInstructionMnemonic::SUB, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 543 */ { ZyDisInstructionMnemonic::SUB, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 544 */ { ZyDisInstructionMnemonic::SUB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 545 */ { ZyDisInstructionMnemonic::SUB, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 546 */ { ZyDisInstructionMnemonic::SUB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 547 */ { ZyDisInstructionMnemonic::SUB, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 548 */ { ZyDisInstructionMnemonic::SUB, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 549 */ { ZyDisInstructionMnemonic::SUB, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54A */ { ZyDisInstructionMnemonic::SUB, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 54B */ { ZyDisInstructionMnemonic::SUB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54C */ { ZyDisInstructionMnemonic::SUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54D */ { ZyDisInstructionMnemonic::SUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54E */ { ZyDisInstructionMnemonic::SUBSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54F */ { ZyDisInstructionMnemonic::SUBSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 550 */ { ZyDisInstructionMnemonic::SWAPGS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 551 */ { ZyDisInstructionMnemonic::SYSCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 552 */ { ZyDisInstructionMnemonic::SYSENTER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 553 */ { ZyDisInstructionMnemonic::SYSENTER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 554 */ { ZyDisInstructionMnemonic::SYSEXIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 555 */ { ZyDisInstructionMnemonic::SYSEXIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 556 */ { ZyDisInstructionMnemonic::SYSRET, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 557 */ { ZyDisInstructionMnemonic::TEST, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 558 */ { ZyDisInstructionMnemonic::TEST, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 559 */ { ZyDisInstructionMnemonic::TEST, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 55A */ { ZyDisInstructionMnemonic::TEST, { OPI_Ev, OPI_Iz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 55B */ { ZyDisInstructionMnemonic::TEST, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 55C */ { ZyDisInstructionMnemonic::TEST, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 55D */ { ZyDisInstructionMnemonic::TEST, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 55E */ { ZyDisInstructionMnemonic::TEST, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, 0 }, - /* 55F */ { ZyDisInstructionMnemonic::UCOMISD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 560 */ { ZyDisInstructionMnemonic::UCOMISS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 561 */ { ZyDisInstructionMnemonic::UD2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 562 */ { ZyDisInstructionMnemonic::UNPCKHPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 563 */ { ZyDisInstructionMnemonic::UNPCKHPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 564 */ { ZyDisInstructionMnemonic::UNPCKLPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 565 */ { ZyDisInstructionMnemonic::UNPCKLPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 566 */ { ZyDisInstructionMnemonic::VADDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 567 */ { ZyDisInstructionMnemonic::VADDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 568 */ { ZyDisInstructionMnemonic::VADDSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 569 */ { ZyDisInstructionMnemonic::VADDSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56A */ { ZyDisInstructionMnemonic::VADDSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56B */ { ZyDisInstructionMnemonic::VADDSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56C */ { ZyDisInstructionMnemonic::VAESDEC, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56D */ { ZyDisInstructionMnemonic::VAESDECLAST, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56E */ { ZyDisInstructionMnemonic::VAESENC, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56F */ { ZyDisInstructionMnemonic::VAESENCLAST, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 570 */ { ZyDisInstructionMnemonic::VAESIMC, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 571 */ { ZyDisInstructionMnemonic::VAESKEYGENASSIST, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 572 */ { ZyDisInstructionMnemonic::VANDNPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 573 */ { ZyDisInstructionMnemonic::VANDNPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 574 */ { ZyDisInstructionMnemonic::VANDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 575 */ { ZyDisInstructionMnemonic::VANDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 576 */ { ZyDisInstructionMnemonic::VBLENDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 577 */ { ZyDisInstructionMnemonic::VBLENDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 578 */ { ZyDisInstructionMnemonic::VBLENDVPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Lx }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 579 */ { ZyDisInstructionMnemonic::VBLENDVPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Lx }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 57A */ { ZyDisInstructionMnemonic::VBROADCASTSD, { OPI_Vqq, OPI_Mq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 57B */ { ZyDisInstructionMnemonic::VBROADCASTSS, { OPI_V, OPI_Md, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 57C */ { ZyDisInstructionMnemonic::VCMPPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 57D */ { ZyDisInstructionMnemonic::VCMPPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 57E */ { ZyDisInstructionMnemonic::VCMPSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 57F */ { ZyDisInstructionMnemonic::VCMPSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 580 */ { ZyDisInstructionMnemonic::VCOMISD, { OPI_Vsd, OPI_Wsd, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 581 */ { ZyDisInstructionMnemonic::VCOMISS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 582 */ { ZyDisInstructionMnemonic::VCVTDQ2PD, { OPI_Vx, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 583 */ { ZyDisInstructionMnemonic::VCVTDQ2PS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 584 */ { ZyDisInstructionMnemonic::VCVTPD2DQ, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 585 */ { ZyDisInstructionMnemonic::VCVTPD2PS, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 586 */ { ZyDisInstructionMnemonic::VCVTPS2DQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 587 */ { ZyDisInstructionMnemonic::VCVTPS2PD, { OPI_Vx, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 588 */ { ZyDisInstructionMnemonic::VCVTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 589 */ { ZyDisInstructionMnemonic::VCVTSD2SS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58A */ { ZyDisInstructionMnemonic::VCVTSI2SD, { OPI_Vx, OPI_Hx, OPI_Ey, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58B */ { ZyDisInstructionMnemonic::VCVTSI2SS, { OPI_Vx, OPI_Hx, OPI_Ey, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58C */ { ZyDisInstructionMnemonic::VCVTSS2SD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58D */ { ZyDisInstructionMnemonic::VCVTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58E */ { ZyDisInstructionMnemonic::VCVTTPD2DQ, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 58F */ { ZyDisInstructionMnemonic::VCVTTPS2DQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 590 */ { ZyDisInstructionMnemonic::VCVTTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 591 */ { ZyDisInstructionMnemonic::VCVTTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 592 */ { ZyDisInstructionMnemonic::VDIVPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 593 */ { ZyDisInstructionMnemonic::VDIVPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 594 */ { ZyDisInstructionMnemonic::VDIVSD, { OPI_Vx, OPI_Hx, OPI_MqU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 595 */ { ZyDisInstructionMnemonic::VDIVSS, { OPI_Vx, OPI_Hx, OPI_MdU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 596 */ { ZyDisInstructionMnemonic::VDPPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 597 */ { ZyDisInstructionMnemonic::VDPPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 598 */ { ZyDisInstructionMnemonic::VERR, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 599 */ { ZyDisInstructionMnemonic::VERW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 59A */ { ZyDisInstructionMnemonic::VEXTRACTF128, { OPI_Wdq, OPI_Vqq, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 59B */ { ZyDisInstructionMnemonic::VEXTRACTPS, { OPI_MdRy, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 59C */ { ZyDisInstructionMnemonic::VHADDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 59D */ { ZyDisInstructionMnemonic::VHADDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 59E */ { ZyDisInstructionMnemonic::VHSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 59F */ { ZyDisInstructionMnemonic::VHSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5A0 */ { ZyDisInstructionMnemonic::VINSERTF128, { OPI_Vqq, OPI_Hqq, OPI_Wdq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A1 */ { ZyDisInstructionMnemonic::VINSERTPS, { OPI_Vx, OPI_Hx, OPI_Md, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5A2 */ { ZyDisInstructionMnemonic::VLDDQU, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A3 */ { ZyDisInstructionMnemonic::VMASKMOVDQU, { OPI_Vx, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5A4 */ { ZyDisInstructionMnemonic::VMASKMOVPD, { OPI_M, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A5 */ { ZyDisInstructionMnemonic::VMASKMOVPD, { OPI_V, OPI_H, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A6 */ { ZyDisInstructionMnemonic::VMASKMOVPS, { OPI_V, OPI_H, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A7 */ { ZyDisInstructionMnemonic::VMASKMOVPS, { OPI_M, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A8 */ { ZyDisInstructionMnemonic::VMAXPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5A9 */ { ZyDisInstructionMnemonic::VMAXPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5AA */ { ZyDisInstructionMnemonic::VMAXSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5AB */ { ZyDisInstructionMnemonic::VMAXSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5AC */ { ZyDisInstructionMnemonic::VMCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5AD */ { ZyDisInstructionMnemonic::VMCLEAR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5AE */ { ZyDisInstructionMnemonic::VMINPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5AF */ { ZyDisInstructionMnemonic::VMINPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5B0 */ { ZyDisInstructionMnemonic::VMINSD, { OPI_Vx, OPI_Hx, OPI_MqU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5B1 */ { ZyDisInstructionMnemonic::VMINSS, { OPI_Vx, OPI_Hx, OPI_MdU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5B2 */ { ZyDisInstructionMnemonic::VMLAUNCH, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5B3 */ { ZyDisInstructionMnemonic::VMLOAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5B4 */ { ZyDisInstructionMnemonic::VMMCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5B5 */ { ZyDisInstructionMnemonic::VMOVAPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5B6 */ { ZyDisInstructionMnemonic::VMOVAPD, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5B7 */ { ZyDisInstructionMnemonic::VMOVAPS, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5B8 */ { ZyDisInstructionMnemonic::VMOVAPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5B9 */ { ZyDisInstructionMnemonic::VMOVD, { OPI_Ey, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BA */ { ZyDisInstructionMnemonic::VMOVD, { OPI_Vx, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BB */ { ZyDisInstructionMnemonic::VMOVD, { OPI_Vx, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BC */ { ZyDisInstructionMnemonic::VMOVD, { OPI_Ey, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BD */ { ZyDisInstructionMnemonic::VMOVDDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BE */ { ZyDisInstructionMnemonic::VMOVDDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BF */ { ZyDisInstructionMnemonic::VMOVDQA, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5C0 */ { ZyDisInstructionMnemonic::VMOVDQA, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5C1 */ { ZyDisInstructionMnemonic::VMOVDQU, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5C2 */ { ZyDisInstructionMnemonic::VMOVDQU, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5C3 */ { ZyDisInstructionMnemonic::VMOVHLPS, { OPI_Vx, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C4 */ { ZyDisInstructionMnemonic::VMOVHPD, { OPI_Vx, OPI_Hx, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C5 */ { ZyDisInstructionMnemonic::VMOVHPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C6 */ { ZyDisInstructionMnemonic::VMOVHPS, { OPI_Vx, OPI_Hx, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C7 */ { ZyDisInstructionMnemonic::VMOVHPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C8 */ { ZyDisInstructionMnemonic::VMOVLHPS, { OPI_Vx, OPI_Hx, OPI_Ux, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C9 */ { ZyDisInstructionMnemonic::VMOVLPD, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CA */ { ZyDisInstructionMnemonic::VMOVLPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CB */ { ZyDisInstructionMnemonic::VMOVLPS, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CC */ { ZyDisInstructionMnemonic::VMOVLPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CD */ { ZyDisInstructionMnemonic::VMOVMSKPD, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5CE */ { ZyDisInstructionMnemonic::VMOVMSKPS, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CF */ { ZyDisInstructionMnemonic::VMOVNTDQ, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5D0 */ { ZyDisInstructionMnemonic::VMOVNTDQA, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5D1 */ { ZyDisInstructionMnemonic::VMOVNTPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5D2 */ { ZyDisInstructionMnemonic::VMOVNTPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5D3 */ { ZyDisInstructionMnemonic::VMOVQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D4 */ { ZyDisInstructionMnemonic::VMOVQ, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D5 */ { ZyDisInstructionMnemonic::VMOVQ, { OPI_Vx, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D6 */ { ZyDisInstructionMnemonic::VMOVQ, { OPI_Eq, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D7 */ { ZyDisInstructionMnemonic::VMOVSD, { OPI_U, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D8 */ { ZyDisInstructionMnemonic::VMOVSD, { OPI_Mq, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D9 */ { ZyDisInstructionMnemonic::VMOVSD, { OPI_V, OPI_H, OPI_U, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5DA */ { ZyDisInstructionMnemonic::VMOVSD, { OPI_V, OPI_Mq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5DB */ { ZyDisInstructionMnemonic::VMOVSHDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5DC */ { ZyDisInstructionMnemonic::VMOVSHDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5DD */ { ZyDisInstructionMnemonic::VMOVSLDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5DE */ { ZyDisInstructionMnemonic::VMOVSLDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5DF */ { ZyDisInstructionMnemonic::VMOVSS, { OPI_V, OPI_H, OPI_U, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5E0 */ { ZyDisInstructionMnemonic::VMOVSS, { OPI_Md, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5E1 */ { ZyDisInstructionMnemonic::VMOVSS, { OPI_U, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5E2 */ { ZyDisInstructionMnemonic::VMOVSS, { OPI_V, OPI_Md, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5E3 */ { ZyDisInstructionMnemonic::VMOVUPD, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5E4 */ { ZyDisInstructionMnemonic::VMOVUPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5E5 */ { ZyDisInstructionMnemonic::VMOVUPS, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5E6 */ { ZyDisInstructionMnemonic::VMOVUPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5E7 */ { ZyDisInstructionMnemonic::VMPSADBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5E8 */ { ZyDisInstructionMnemonic::VMPTRLD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5E9 */ { ZyDisInstructionMnemonic::VMPTRST, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5EA */ { ZyDisInstructionMnemonic::VMREAD, { OPI_Ey, OPI_Gy, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 5EB */ { ZyDisInstructionMnemonic::VMRESUME, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5EC */ { ZyDisInstructionMnemonic::VMRUN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5ED */ { ZyDisInstructionMnemonic::VMSAVE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5EE */ { ZyDisInstructionMnemonic::VMULPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5EF */ { ZyDisInstructionMnemonic::VMULPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5F0 */ { ZyDisInstructionMnemonic::VMULSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5F1 */ { ZyDisInstructionMnemonic::VMULSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5F2 */ { ZyDisInstructionMnemonic::VMWRITE, { OPI_Gy, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 5F3 */ { ZyDisInstructionMnemonic::VMXOFF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5F4 */ { ZyDisInstructionMnemonic::VMXON, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5F5 */ { ZyDisInstructionMnemonic::VORPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5F6 */ { ZyDisInstructionMnemonic::VORPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, - /* 5F7 */ { ZyDisInstructionMnemonic::VPABSB, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5F8 */ { ZyDisInstructionMnemonic::VPABSD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5F9 */ { ZyDisInstructionMnemonic::VPABSW, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5FA */ { ZyDisInstructionMnemonic::VPACKSSDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FB */ { ZyDisInstructionMnemonic::VPACKSSWB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FC */ { ZyDisInstructionMnemonic::VPACKUSDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FD */ { ZyDisInstructionMnemonic::VPACKUSWB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FE */ { ZyDisInstructionMnemonic::VPADDB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FF */ { ZyDisInstructionMnemonic::VPADDD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 600 */ { ZyDisInstructionMnemonic::VPADDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 601 */ { ZyDisInstructionMnemonic::VPADDSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 602 */ { ZyDisInstructionMnemonic::VPADDSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 603 */ { ZyDisInstructionMnemonic::VPADDUSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 604 */ { ZyDisInstructionMnemonic::VPADDUSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 605 */ { ZyDisInstructionMnemonic::VPADDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 606 */ { ZyDisInstructionMnemonic::VPALIGNR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 607 */ { ZyDisInstructionMnemonic::VPAND, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 608 */ { ZyDisInstructionMnemonic::VPANDN, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 609 */ { ZyDisInstructionMnemonic::VPAVGB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60A */ { ZyDisInstructionMnemonic::VPAVGW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60B */ { ZyDisInstructionMnemonic::VPBLENDVB, { OPI_V, OPI_H, OPI_W, OPI_L }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 60C */ { ZyDisInstructionMnemonic::VPBLENDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60D */ { ZyDisInstructionMnemonic::VPCLMULQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60E */ { ZyDisInstructionMnemonic::VPCMPEQB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60F */ { ZyDisInstructionMnemonic::VPCMPEQD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 610 */ { ZyDisInstructionMnemonic::VPCMPEQQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 611 */ { ZyDisInstructionMnemonic::VPCMPEQW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 612 */ { ZyDisInstructionMnemonic::VPCMPESTRI, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 613 */ { ZyDisInstructionMnemonic::VPCMPESTRM, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 614 */ { ZyDisInstructionMnemonic::VPCMPGTB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 615 */ { ZyDisInstructionMnemonic::VPCMPGTD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 616 */ { ZyDisInstructionMnemonic::VPCMPGTQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 617 */ { ZyDisInstructionMnemonic::VPCMPGTW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 618 */ { ZyDisInstructionMnemonic::VPCMPISTRI, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 619 */ { ZyDisInstructionMnemonic::VPCMPISTRM, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 61A */ { ZyDisInstructionMnemonic::VPERM2F128, { OPI_Vqq, OPI_Hqq, OPI_Wqq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61B */ { ZyDisInstructionMnemonic::VPERMILPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61C */ { ZyDisInstructionMnemonic::VPERMILPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61D */ { ZyDisInstructionMnemonic::VPERMILPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61E */ { ZyDisInstructionMnemonic::VPERMILPS, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61F */ { ZyDisInstructionMnemonic::VPEXTRB, { OPI_MbRv, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 620 */ { ZyDisInstructionMnemonic::VPEXTRD, { OPI_Ed, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 621 */ { ZyDisInstructionMnemonic::VPEXTRD, { OPI_Ed, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 622 */ { ZyDisInstructionMnemonic::VPEXTRQ, { OPI_Eq, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 623 */ { ZyDisInstructionMnemonic::VPEXTRW, { OPI_Gd, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 624 */ { ZyDisInstructionMnemonic::VPEXTRW, { OPI_MwRd, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 625 */ { ZyDisInstructionMnemonic::VPHADDD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 626 */ { ZyDisInstructionMnemonic::VPHADDSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 627 */ { ZyDisInstructionMnemonic::VPHADDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 628 */ { ZyDisInstructionMnemonic::VPHMINPOSUW, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 629 */ { ZyDisInstructionMnemonic::VPHSUBD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 62A */ { ZyDisInstructionMnemonic::VPHSUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 62B */ { ZyDisInstructionMnemonic::VPHSUBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 62C */ { ZyDisInstructionMnemonic::VPINSRB, { OPI_V, OPI_H, OPI_MbRd, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 62D */ { ZyDisInstructionMnemonic::VPINSRD, { OPI_V, OPI_H, OPI_Ed, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 62E */ { ZyDisInstructionMnemonic::VPINSRD, { OPI_V, OPI_H, OPI_Ed, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 62F */ { ZyDisInstructionMnemonic::VPINSRQ, { OPI_V, OPI_H, OPI_Eq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 630 */ { ZyDisInstructionMnemonic::VPINSRW, { OPI_Vx, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 631 */ { ZyDisInstructionMnemonic::VPMADDUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 632 */ { ZyDisInstructionMnemonic::VPMADDWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 633 */ { ZyDisInstructionMnemonic::VPMAXSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 634 */ { ZyDisInstructionMnemonic::VPMAXSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 635 */ { ZyDisInstructionMnemonic::VPMAXSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 636 */ { ZyDisInstructionMnemonic::VPMAXUB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 637 */ { ZyDisInstructionMnemonic::VPMAXUD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 638 */ { ZyDisInstructionMnemonic::VPMAXUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 639 */ { ZyDisInstructionMnemonic::VPMINSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63A */ { ZyDisInstructionMnemonic::VPMINSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63B */ { ZyDisInstructionMnemonic::VPMINSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63C */ { ZyDisInstructionMnemonic::VPMINUB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63D */ { ZyDisInstructionMnemonic::VPMINUD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63E */ { ZyDisInstructionMnemonic::VPMINUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63F */ { ZyDisInstructionMnemonic::VPMOVMSKB, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 640 */ { ZyDisInstructionMnemonic::VPMOVSXBD, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 641 */ { ZyDisInstructionMnemonic::VPMOVSXBQ, { OPI_Vx, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 642 */ { ZyDisInstructionMnemonic::VPMOVSXBW, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 643 */ { ZyDisInstructionMnemonic::VPMOVSXWD, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 644 */ { ZyDisInstructionMnemonic::VPMOVSXWQ, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 645 */ { ZyDisInstructionMnemonic::VPMOVZXBD, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 646 */ { ZyDisInstructionMnemonic::VPMOVZXBQ, { OPI_Vx, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 647 */ { ZyDisInstructionMnemonic::VPMOVZXBW, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 648 */ { ZyDisInstructionMnemonic::VPMOVZXDQ, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 649 */ { ZyDisInstructionMnemonic::VPMOVZXWD, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 64A */ { ZyDisInstructionMnemonic::VPMOVZXWQ, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 64B */ { ZyDisInstructionMnemonic::VPMULDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 64C */ { ZyDisInstructionMnemonic::VPMULHRSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 64D */ { ZyDisInstructionMnemonic::VPMULHUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 64E */ { ZyDisInstructionMnemonic::VPMULHW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 64F */ { ZyDisInstructionMnemonic::VPMULLD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 650 */ { ZyDisInstructionMnemonic::VPMULLW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 651 */ { ZyDisInstructionMnemonic::VPOR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 652 */ { ZyDisInstructionMnemonic::VPSADBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 653 */ { ZyDisInstructionMnemonic::VPSHUFB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 654 */ { ZyDisInstructionMnemonic::VPSHUFD, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 655 */ { ZyDisInstructionMnemonic::VPSHUFHW, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 656 */ { ZyDisInstructionMnemonic::VPSHUFLW, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 657 */ { ZyDisInstructionMnemonic::VPSIGNB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 658 */ { ZyDisInstructionMnemonic::VPSIGND, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 659 */ { ZyDisInstructionMnemonic::VPSIGNW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 65A */ { ZyDisInstructionMnemonic::VPSLLD, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 65B */ { ZyDisInstructionMnemonic::VPSLLD, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 65C */ { ZyDisInstructionMnemonic::VPSLLDQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 65D */ { ZyDisInstructionMnemonic::VPSLLQ, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 65E */ { ZyDisInstructionMnemonic::VPSLLQ, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 65F */ { ZyDisInstructionMnemonic::VPSLLW, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 660 */ { ZyDisInstructionMnemonic::VPSLLW, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 661 */ { ZyDisInstructionMnemonic::VPSRAD, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 662 */ { ZyDisInstructionMnemonic::VPSRAD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 663 */ { ZyDisInstructionMnemonic::VPSRAW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 664 */ { ZyDisInstructionMnemonic::VPSRAW, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 665 */ { ZyDisInstructionMnemonic::VPSRLD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 666 */ { ZyDisInstructionMnemonic::VPSRLD, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 667 */ { ZyDisInstructionMnemonic::VPSRLDQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 668 */ { ZyDisInstructionMnemonic::VPSRLQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 669 */ { ZyDisInstructionMnemonic::VPSRLQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66A */ { ZyDisInstructionMnemonic::VPSRLW, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66B */ { ZyDisInstructionMnemonic::VPSRLW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66C */ { ZyDisInstructionMnemonic::VPSUBB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66D */ { ZyDisInstructionMnemonic::VPSUBD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66E */ { ZyDisInstructionMnemonic::VPSUBQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66F */ { ZyDisInstructionMnemonic::VPSUBSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 670 */ { ZyDisInstructionMnemonic::VPSUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 671 */ { ZyDisInstructionMnemonic::VPSUBUSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 672 */ { ZyDisInstructionMnemonic::VPSUBUSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 673 */ { ZyDisInstructionMnemonic::VPSUBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 674 */ { ZyDisInstructionMnemonic::VPTEST, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, - /* 675 */ { ZyDisInstructionMnemonic::VPUNPCKHBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 676 */ { ZyDisInstructionMnemonic::VPUNPCKHDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 677 */ { ZyDisInstructionMnemonic::VPUNPCKHQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 678 */ { ZyDisInstructionMnemonic::VPUNPCKHWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 679 */ { ZyDisInstructionMnemonic::VPUNPCKLBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67A */ { ZyDisInstructionMnemonic::VPUNPCKLDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67B */ { ZyDisInstructionMnemonic::VPUNPCKLQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67C */ { ZyDisInstructionMnemonic::VPUNPCKLWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67D */ { ZyDisInstructionMnemonic::VPXOR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67E */ { ZyDisInstructionMnemonic::VRCPPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 67F */ { ZyDisInstructionMnemonic::VRCPSS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 680 */ { ZyDisInstructionMnemonic::VROUNDPD, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 681 */ { ZyDisInstructionMnemonic::VROUNDPS, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 682 */ { ZyDisInstructionMnemonic::VROUNDSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 683 */ { ZyDisInstructionMnemonic::VROUNDSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 684 */ { ZyDisInstructionMnemonic::VRSQRTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 685 */ { ZyDisInstructionMnemonic::VRSQRTSS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 686 */ { ZyDisInstructionMnemonic::VSHUFPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 687 */ { ZyDisInstructionMnemonic::VSHUFPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 688 */ { ZyDisInstructionMnemonic::VSQRTPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 689 */ { ZyDisInstructionMnemonic::VSQRTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 68A */ { ZyDisInstructionMnemonic::VSQRTSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 68B */ { ZyDisInstructionMnemonic::VSQRTSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 68C */ { ZyDisInstructionMnemonic::VSTMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 68D */ { ZyDisInstructionMnemonic::VSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 68E */ { ZyDisInstructionMnemonic::VSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 68F */ { ZyDisInstructionMnemonic::VSUBSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 690 */ { ZyDisInstructionMnemonic::VSUBSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 691 */ { ZyDisInstructionMnemonic::VTESTPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, - /* 692 */ { ZyDisInstructionMnemonic::VTESTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, - /* 693 */ { ZyDisInstructionMnemonic::VUCOMISD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 694 */ { ZyDisInstructionMnemonic::VUCOMISS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 695 */ { ZyDisInstructionMnemonic::VUNPCKHPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 696 */ { ZyDisInstructionMnemonic::VUNPCKHPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 697 */ { ZyDisInstructionMnemonic::VUNPCKLPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 698 */ { ZyDisInstructionMnemonic::VUNPCKLPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 699 */ { ZyDisInstructionMnemonic::ZyDisORPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 69A */ { ZyDisInstructionMnemonic::ZyDisORPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 69B */ { ZyDisInstructionMnemonic::VZEROALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 69C */ { ZyDisInstructionMnemonic::VZEROUPPER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 69D */ { ZyDisInstructionMnemonic::WAIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 69E */ { ZyDisInstructionMnemonic::WBINVD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 69F */ { ZyDisInstructionMnemonic::WRMSR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6A0 */ { ZyDisInstructionMnemonic::XADD, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_WRITE }, - /* 6A1 */ { ZyDisInstructionMnemonic::XADD, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_WRITE }, - /* 6A2 */ { ZyDisInstructionMnemonic::XCHG, { OPI_R4v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A3 */ { ZyDisInstructionMnemonic::XCHG, { OPI_R3v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A4 */ { ZyDisInstructionMnemonic::XCHG, { OPI_R5v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A5 */ { ZyDisInstructionMnemonic::XCHG, { OPI_R7v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A6 */ { ZyDisInstructionMnemonic::XCHG, { OPI_R6v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A7 */ { ZyDisInstructionMnemonic::XCHG, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A8 */ { ZyDisInstructionMnemonic::XCHG, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A9 */ { ZyDisInstructionMnemonic::XCHG, { OPI_R0v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6AA */ { ZyDisInstructionMnemonic::XCHG, { OPI_R2v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6AB */ { ZyDisInstructionMnemonic::XCHG, { OPI_R1v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6AC */ { ZyDisInstructionMnemonic::XCRYPTCBC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6AD */ { ZyDisInstructionMnemonic::XCRYPTCFB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6AE */ { ZyDisInstructionMnemonic::XCRYPTCTR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6AF */ { ZyDisInstructionMnemonic::XCRYPTECB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6B0 */ { ZyDisInstructionMnemonic::XCRYPTOFB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6B1 */ { ZyDisInstructionMnemonic::XGETBV, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6B2 */ { ZyDisInstructionMnemonic::XLATB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 6B3 */ { ZyDisInstructionMnemonic::XOR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 6B4 */ { ZyDisInstructionMnemonic::XOR, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B5 */ { ZyDisInstructionMnemonic::XOR, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B6 */ { ZyDisInstructionMnemonic::XOR, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B7 */ { ZyDisInstructionMnemonic::XOR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B8 */ { ZyDisInstructionMnemonic::XOR, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B9 */ { ZyDisInstructionMnemonic::XOR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6BA */ { ZyDisInstructionMnemonic::XOR, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 6BB */ { ZyDisInstructionMnemonic::XOR, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 6BC */ { ZyDisInstructionMnemonic::XOR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6BD */ { ZyDisInstructionMnemonic::XORPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6BE */ { ZyDisInstructionMnemonic::XORPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6BF */ { ZyDisInstructionMnemonic::XRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 6C0 */ { ZyDisInstructionMnemonic::XSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 6C1 */ { ZyDisInstructionMnemonic::XSETBV, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6C2 */ { ZyDisInstructionMnemonic::XSHA1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6C3 */ { ZyDisInstructionMnemonic::XSHA256, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6C4 */ { ZyDisInstructionMnemonic::XSTORE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, -}; - -#undef OPI_NONE -#undef OPI_AL -#undef OPI_AX -#undef OPI_Av -#undef OPI_C -#undef OPI_CL -#undef OPI_CS -#undef OPI_CX -#undef OPI_D -#undef OPI_DL -#undef OPI_DS -#undef OPI_DX -#undef OPI_E -#undef OPI_ES -#undef OPI_Eb -#undef OPI_Ed -#undef OPI_Eq -#undef OPI_Ev -#undef OPI_Ew -#undef OPI_Ey -#undef OPI_Ez -#undef OPI_FS -#undef OPI_Fv -#undef OPI_G -#undef OPI_GS -#undef OPI_Gb -#undef OPI_Gd -#undef OPI_Gq -#undef OPI_Gv -#undef OPI_Gw -#undef OPI_Gy -#undef OPI_Gz -#undef OPI_H -#undef OPI_Hqq -#undef OPI_Hx -#undef OPI_I1 -#undef OPI_Ib -#undef OPI_Iv -#undef OPI_Iw -#undef OPI_Iz -#undef OPI_Jb -#undef OPI_Jv -#undef OPI_Jz -#undef OPI_L -#undef OPI_Lx -#undef OPI_M -#undef OPI_Mb -#undef OPI_MbRd -#undef OPI_MbRv -#undef OPI_Md -#undef OPI_MdRy -#undef OPI_MdU -#undef OPI_Mdq -#undef OPI_Mo -#undef OPI_Mq -#undef OPI_MqU -#undef OPI_Ms -#undef OPI_Mt -#undef OPI_Mv -#undef OPI_Mw -#undef OPI_MwRd -#undef OPI_MwRv -#undef OPI_MwRy -#undef OPI_MwU -#undef OPI_N -#undef OPI_Ob -#undef OPI_Ov -#undef OPI_Ow -#undef OPI_P -#undef OPI_Q -#undef OPI_R -#undef OPI_R0b -#undef OPI_R0v -#undef OPI_R0w -#undef OPI_R0y -#undef OPI_R0z -#undef OPI_R1b -#undef OPI_R1v -#undef OPI_R1w -#undef OPI_R1y -#undef OPI_R1z -#undef OPI_R2b -#undef OPI_R2v -#undef OPI_R2w -#undef OPI_R2y -#undef OPI_R2z -#undef OPI_R3b -#undef OPI_R3v -#undef OPI_R3w -#undef OPI_R3y -#undef OPI_R3z -#undef OPI_R4b -#undef OPI_R4v -#undef OPI_R4w -#undef OPI_R4y -#undef OPI_R4z -#undef OPI_R5b -#undef OPI_R5v -#undef OPI_R5w -#undef OPI_R5y -#undef OPI_R5z -#undef OPI_R6b -#undef OPI_R6v -#undef OPI_R6w -#undef OPI_R6y -#undef OPI_R6z -#undef OPI_R7b -#undef OPI_R7v -#undef OPI_R7w -#undef OPI_R7y -#undef OPI_R7z -#undef OPI_S -#undef OPI_SS -#undef OPI_ST0 -#undef OPI_ST1 -#undef OPI_ST2 -#undef OPI_ST3 -#undef OPI_ST4 -#undef OPI_ST5 -#undef OPI_ST6 -#undef OPI_ST7 -#undef OPI_U -#undef OPI_Ux -#undef OPI_V -#undef OPI_Vdq -#undef OPI_Vqq -#undef OPI_Vsd -#undef OPI_Vx -#undef OPI_W -#undef OPI_Wdq -#undef OPI_Wqq -#undef OPI_Wsd -#undef OPI_Wx -#undef OPI_eAX -#undef OPI_eCX -#undef OPI_eDX -#undef OPI_rAX -#undef OPI_rCX -#undef OPI_rDX -#undef OPI_sIb -#undef OPI_sIz - -const char* instrMnemonicStrings[] = -{ - /* 000 */ "invalid", - /* 001 */ "aaa", - /* 002 */ "aad", - /* 003 */ "aam", - /* 004 */ "aas", - /* 005 */ "adc", - /* 006 */ "add", - /* 007 */ "addpd", - /* 008 */ "addps", - /* 009 */ "addsd", - /* 00A */ "addss", - /* 00B */ "addsubpd", - /* 00C */ "addsubps", - /* 00D */ "aesdec", - /* 00E */ "aesdeclast", - /* 00F */ "aesenc", - /* 010 */ "aesenclast", - /* 011 */ "aesimc", - /* 012 */ "aeskeygenassist", - /* 013 */ "and", - /* 014 */ "andnpd", - /* 015 */ "andnps", - /* 016 */ "andpd", - /* 017 */ "andps", - /* 018 */ "arpl", - /* 019 */ "blendpd", - /* 01A */ "blendps", - /* 01B */ "blendvpd", - /* 01C */ "blendvps", - /* 01D */ "bound", - /* 01E */ "bsf", - /* 01F */ "bsr", - /* 020 */ "bswap", - /* 021 */ "bt", - /* 022 */ "btc", - /* 023 */ "btr", - /* 024 */ "bts", - /* 025 */ "call", - /* 026 */ "cbw", - /* 027 */ "cdq", - /* 028 */ "cdqe", - /* 029 */ "clc", - /* 02A */ "cld", - /* 02B */ "clflush", - /* 02C */ "clgi", - /* 02D */ "cli", - /* 02E */ "clts", - /* 02F */ "cmc", - /* 030 */ "cmova", - /* 031 */ "cmovae", - /* 032 */ "cmovb", - /* 033 */ "cmovbe", - /* 034 */ "cmove", - /* 035 */ "cmovg", - /* 036 */ "cmovge", - /* 037 */ "cmovl", - /* 038 */ "cmovle", - /* 039 */ "cmovne", - /* 03A */ "cmovno", - /* 03B */ "cmovnp", - /* 03C */ "cmovns", - /* 03D */ "cmovo", - /* 03E */ "cmovp", - /* 03F */ "cmovs", - /* 040 */ "cmp", - /* 041 */ "cmppd", - /* 042 */ "cmpps", - /* 043 */ "cmpsb", - /* 044 */ "cmpsd", - /* 045 */ "cmpsq", - /* 046 */ "cmpss", - /* 047 */ "cmpsw", - /* 048 */ "cmpxchg", - /* 049 */ "cmpxchg16b", - /* 04A */ "cmpxchg8b", - /* 04B */ "comisd", - /* 04C */ "comiss", - /* 04D */ "cpuid", - /* 04E */ "cqo", - /* 04F */ "crc32", - /* 050 */ "cvtdq2pd", - /* 051 */ "cvtdq2ps", - /* 052 */ "cvtpd2dq", - /* 053 */ "cvtpd2pi", - /* 054 */ "cvtpd2ps", - /* 055 */ "cvtpi2pd", - /* 056 */ "cvtpi2ps", - /* 057 */ "cvtps2dq", - /* 058 */ "cvtps2pd", - /* 059 */ "cvtps2pi", - /* 05A */ "cvtsd2si", - /* 05B */ "cvtsd2ss", - /* 05C */ "cvtsi2sd", - /* 05D */ "cvtsi2ss", - /* 05E */ "cvtss2sd", - /* 05F */ "cvtss2si", - /* 060 */ "cvttpd2dq", - /* 061 */ "cvttpd2pi", - /* 062 */ "cvttps2dq", - /* 063 */ "cvttps2pi", - /* 064 */ "cvttsd2si", - /* 065 */ "cvttss2si", - /* 066 */ "cwd", - /* 067 */ "cwde", - /* 068 */ "daa", - /* 069 */ "das", - /* 06A */ "dec", - /* 06B */ "div", - /* 06C */ "divpd", - /* 06D */ "divps", - /* 06E */ "divsd", - /* 06F */ "divss", - /* 070 */ "dppd", - /* 071 */ "dpps", - /* 072 */ "emms", - /* 073 */ "enter", - /* 074 */ "extractps", - /* 075 */ "f2xm1", - /* 076 */ "fabs", - /* 077 */ "fadd", - /* 078 */ "faddp", - /* 079 */ "fbld", - /* 07A */ "fbstp", - /* 07B */ "fchs", - /* 07C */ "fclex", - /* 07D */ "fcmovb", - /* 07E */ "fcmovbe", - /* 07F */ "fcmove", - /* 080 */ "fcmovnb", - /* 081 */ "fcmovnbe", - /* 082 */ "fcmovne", - /* 083 */ "fcmovnu", - /* 084 */ "fcmovu", - /* 085 */ "fcom", - /* 086 */ "fcom2", - /* 087 */ "fcomi", - /* 088 */ "fcomip", - /* 089 */ "fcomp", - /* 08A */ "fcomp3", - /* 08B */ "fcomp5", - /* 08C */ "fcompp", - /* 08D */ "fcos", - /* 08E */ "fdecstp", - /* 08F */ "fdiv", - /* 090 */ "fdivp", - /* 091 */ "fdivr", - /* 092 */ "fdivrp", - /* 093 */ "femms", - /* 094 */ "ffree", - /* 095 */ "ffreep", - /* 096 */ "fiadd", - /* 097 */ "ficom", - /* 098 */ "ficomp", - /* 099 */ "fidiv", - /* 09A */ "fidivr", - /* 09B */ "fild", - /* 09C */ "fimul", - /* 09D */ "fincstp", - /* 09E */ "fist", - /* 09F */ "fistp", - /* 0A0 */ "fisttp", - /* 0A1 */ "fisub", - /* 0A2 */ "fisubr", - /* 0A3 */ "fld", - /* 0A4 */ "fld1", - /* 0A5 */ "fldcw", - /* 0A6 */ "fldenv", - /* 0A7 */ "fldl2e", - /* 0A8 */ "fldl2t", - /* 0A9 */ "fldlg2", - /* 0AA */ "fldln2", - /* 0AB */ "fldpi", - /* 0AC */ "fldz", - /* 0AD */ "fmul", - /* 0AE */ "fmulp", - /* 0AF */ "fndisi", - /* 0B0 */ "fneni", - /* 0B1 */ "fninit", - /* 0B2 */ "fnop", - /* 0B3 */ "fnsave", - /* 0B4 */ "fnsetpm", - /* 0B5 */ "fnstcw", - /* 0B6 */ "fnstenv", - /* 0B7 */ "fnstsw", - /* 0B8 */ "fpatan", - /* 0B9 */ "fprem", - /* 0BA */ "fprem1", - /* 0BB */ "fptan", - /* 0BC */ "frndint", - /* 0BD */ "frstor", - /* 0BE */ "frstpm", - /* 0BF */ "fscale", - /* 0C0 */ "fsin", - /* 0C1 */ "fsincos", - /* 0C2 */ "fsqrt", - /* 0C3 */ "fst", - /* 0C4 */ "fstp", - /* 0C5 */ "fstp1", - /* 0C6 */ "fstp8", - /* 0C7 */ "fstp9", - /* 0C8 */ "fsub", - /* 0C9 */ "fsubp", - /* 0CA */ "fsubr", - /* 0CB */ "fsubrp", - /* 0CC */ "ftst", - /* 0CD */ "fucom", - /* 0CE */ "fucomi", - /* 0CF */ "fucomip", - /* 0D0 */ "fucomp", - /* 0D1 */ "fucompp", - /* 0D2 */ "fxam", - /* 0D3 */ "fxch", - /* 0D4 */ "fxch4", - /* 0D5 */ "fxch7", - /* 0D6 */ "fxrstor", - /* 0D7 */ "fxsave", - /* 0D8 */ "fxtract", - /* 0D9 */ "fyl2x", - /* 0DA */ "fyl2xp1", - /* 0DB */ "getsec", - /* 0DC */ "haddpd", - /* 0DD */ "haddps", - /* 0DE */ "hlt", - /* 0DF */ "hsubpd", - /* 0E0 */ "hsubps", - /* 0E1 */ "idiv", - /* 0E2 */ "imul", - /* 0E3 */ "in", - /* 0E4 */ "inc", - /* 0E5 */ "insb", - /* 0E6 */ "insd", - /* 0E7 */ "insertps", - /* 0E8 */ "insw", - /* 0E9 */ "int", - /* 0EA */ "int1", - /* 0EB */ "int3", - /* 0EC */ "into", - /* 0ED */ "invd", - /* 0EE */ "invept", - /* 0EF */ "invlpg", - /* 0F0 */ "invlpga", - /* 0F1 */ "invvpid", - /* 0F2 */ "iretd", - /* 0F3 */ "iretq", - /* 0F4 */ "iretw", - /* 0F5 */ "ja", - /* 0F6 */ "jb", - /* 0F7 */ "jbe", - /* 0F8 */ "jcxz", - /* 0F9 */ "je", - /* 0FA */ "jecxz", - /* 0FB */ "jg", - /* 0FC */ "jge", - /* 0FD */ "jl", - /* 0FE */ "jle", - /* 0FF */ "jmp", - /* 100 */ "jnb", - /* 101 */ "jne", - /* 102 */ "jno", - /* 103 */ "jnp", - /* 104 */ "jns", - /* 105 */ "jo", - /* 106 */ "jp", - /* 107 */ "jrcxz", - /* 108 */ "js", - /* 109 */ "lahf", - /* 10A */ "lar", - /* 10B */ "lddqu", - /* 10C */ "ldmxcsr", - /* 10D */ "lds", - /* 10E */ "lea", - /* 10F */ "leave", - /* 110 */ "les", - /* 111 */ "lfence", - /* 112 */ "lfs", - /* 113 */ "lgdt", - /* 114 */ "lgs", - /* 115 */ "lidt", - /* 116 */ "lldt", - /* 117 */ "lmsw", - /* 118 */ "lock", - /* 119 */ "lodsb", - /* 11A */ "lodsd", - /* 11B */ "lodsq", - /* 11C */ "lodsw", - /* 11D */ "loop", - /* 11E */ "loope", - /* 11F */ "loopne", - /* 120 */ "lsl", - /* 121 */ "lss", - /* 122 */ "ltr", - /* 123 */ "maskmovdqu", - /* 124 */ "maskmovq", - /* 125 */ "maxpd", - /* 126 */ "maxps", - /* 127 */ "maxsd", - /* 128 */ "maxss", - /* 129 */ "mfence", - /* 12A */ "minpd", - /* 12B */ "minps", - /* 12C */ "minsd", - /* 12D */ "minss", - /* 12E */ "monitor", - /* 12F */ "montmul", - /* 130 */ "mov", - /* 131 */ "movapd", - /* 132 */ "movaps", - /* 133 */ "movbe", - /* 134 */ "movd", - /* 135 */ "movddup", - /* 136 */ "movdq2q", - /* 137 */ "movdqa", - /* 138 */ "movdqu", - /* 139 */ "movhlps", - /* 13A */ "movhpd", - /* 13B */ "movhps", - /* 13C */ "movlhps", - /* 13D */ "movlpd", - /* 13E */ "movlps", - /* 13F */ "movmskpd", - /* 140 */ "movmskps", - /* 141 */ "movntdq", - /* 142 */ "movntdqa", - /* 143 */ "movnti", - /* 144 */ "movntpd", - /* 145 */ "movntps", - /* 146 */ "movntq", - /* 147 */ "movq", - /* 148 */ "movq2dq", - /* 149 */ "movsb", - /* 14A */ "movsd", - /* 14B */ "movshdup", - /* 14C */ "movsldup", - /* 14D */ "movsq", - /* 14E */ "movss", - /* 14F */ "movsw", - /* 150 */ "movsx", - /* 151 */ "movsxd", - /* 152 */ "movupd", - /* 153 */ "movups", - /* 154 */ "movzx", - /* 155 */ "mpsadbw", - /* 156 */ "mul", - /* 157 */ "mulpd", - /* 158 */ "mulps", - /* 159 */ "mulsd", - /* 15A */ "mulss", - /* 15B */ "mwait", - /* 15C */ "neg", - /* 15D */ "nop", - /* 15E */ "not", - /* 15F */ "or", - /* 160 */ "orpd", - /* 161 */ "orps", - /* 162 */ "out", - /* 163 */ "outsb", - /* 164 */ "outsd", - /* 165 */ "outsw", - /* 166 */ "pabsb", - /* 167 */ "pabsd", - /* 168 */ "pabsw", - /* 169 */ "packssdw", - /* 16A */ "packsswb", - /* 16B */ "packusdw", - /* 16C */ "packuswb", - /* 16D */ "paddb", - /* 16E */ "paddd", - /* 16F */ "paddq", - /* 170 */ "paddsb", - /* 171 */ "paddsw", - /* 172 */ "paddusb", - /* 173 */ "paddusw", - /* 174 */ "paddw", - /* 175 */ "palignr", - /* 176 */ "pand", - /* 177 */ "pandn", - /* 178 */ "pause", - /* 179 */ "pavgb", - /* 17A */ "pavgusb", - /* 17B */ "pavgw", - /* 17C */ "pblendvb", - /* 17D */ "pblendw", - /* 17E */ "pclmulqdq", - /* 17F */ "pcmpeqb", - /* 180 */ "pcmpeqd", - /* 181 */ "pcmpeqq", - /* 182 */ "pcmpeqw", - /* 183 */ "pcmpestri", - /* 184 */ "pcmpestrm", - /* 185 */ "pcmpgtb", - /* 186 */ "pcmpgtd", - /* 187 */ "pcmpgtq", - /* 188 */ "pcmpgtw", - /* 189 */ "pcmpistri", - /* 18A */ "pcmpistrm", - /* 18B */ "pextrb", - /* 18C */ "pextrd", - /* 18D */ "pextrq", - /* 18E */ "pextrw", - /* 18F */ "pf2id", - /* 190 */ "pf2iw", - /* 191 */ "pfacc", - /* 192 */ "pfadd", - /* 193 */ "pfcmpeq", - /* 194 */ "pfcmpge", - /* 195 */ "pfcmpgt", - /* 196 */ "pfmax", - /* 197 */ "pfmin", - /* 198 */ "pfmul", - /* 199 */ "pfnacc", - /* 19A */ "pfpnacc", - /* 19B */ "pfrcp", - /* 19C */ "pfrcpit1", - /* 19D */ "pfrcpit2", - /* 19E */ "pfrsqit1", - /* 19F */ "pfrsqrt", - /* 1A0 */ "pfsub", - /* 1A1 */ "pfsubr", - /* 1A2 */ "phaddd", - /* 1A3 */ "phaddsw", - /* 1A4 */ "phaddw", - /* 1A5 */ "phminposuw", - /* 1A6 */ "phsubd", - /* 1A7 */ "phsubsw", - /* 1A8 */ "phsubw", - /* 1A9 */ "pi2fd", - /* 1AA */ "pi2fw", - /* 1AB */ "pinsrb", - /* 1AC */ "pinsrd", - /* 1AD */ "pinsrq", - /* 1AE */ "pinsrw", - /* 1AF */ "pmaddubsw", - /* 1B0 */ "pmaddwd", - /* 1B1 */ "pmaxsb", - /* 1B2 */ "pmaxsd", - /* 1B3 */ "pmaxsw", - /* 1B4 */ "pmaxub", - /* 1B5 */ "pmaxud", - /* 1B6 */ "pmaxuw", - /* 1B7 */ "pminsb", - /* 1B8 */ "pminsd", - /* 1B9 */ "pminsw", - /* 1BA */ "pminub", - /* 1BB */ "pminud", - /* 1BC */ "pminuw", - /* 1BD */ "pmovmskb", - /* 1BE */ "pmovsxbd", - /* 1BF */ "pmovsxbq", - /* 1C0 */ "pmovsxbw", - /* 1C1 */ "pmovsxdq", - /* 1C2 */ "pmovsxwd", - /* 1C3 */ "pmovsxwq", - /* 1C4 */ "pmovzxbd", - /* 1C5 */ "pmovzxbq", - /* 1C6 */ "pmovzxbw", - /* 1C7 */ "pmovzxdq", - /* 1C8 */ "pmovzxwd", - /* 1C9 */ "pmovzxwq", - /* 1CA */ "pmuldq", - /* 1CB */ "pmulhrsw", - /* 1CC */ "pmulhrw", - /* 1CD */ "pmulhuw", - /* 1CE */ "pmulhw", - /* 1CF */ "pmulld", - /* 1D0 */ "pmullw", - /* 1D1 */ "pmuludq", - /* 1D2 */ "pop", - /* 1D3 */ "popa", - /* 1D4 */ "popad", - /* 1D5 */ "popcnt", - /* 1D6 */ "popfd", - /* 1D7 */ "popfq", - /* 1D8 */ "popfw", - /* 1D9 */ "por", - /* 1DA */ "prefetch", - /* 1DB */ "prefetchnta", - /* 1DC */ "prefetcht0", - /* 1DD */ "prefetcht1", - /* 1DE */ "prefetcht2", - /* 1DF */ "psadbw", - /* 1E0 */ "pshufb", - /* 1E1 */ "pshufd", - /* 1E2 */ "pshufhw", - /* 1E3 */ "pshuflw", - /* 1E4 */ "pshufw", - /* 1E5 */ "psignb", - /* 1E6 */ "psignd", - /* 1E7 */ "psignw", - /* 1E8 */ "pslld", - /* 1E9 */ "pslldq", - /* 1EA */ "psllq", - /* 1EB */ "psllw", - /* 1EC */ "psrad", - /* 1ED */ "psraw", - /* 1EE */ "psrld", - /* 1EF */ "psrldq", - /* 1F0 */ "psrlq", - /* 1F1 */ "psrlw", - /* 1F2 */ "psubb", - /* 1F3 */ "psubd", - /* 1F4 */ "psubq", - /* 1F5 */ "psubsb", - /* 1F6 */ "psubsw", - /* 1F7 */ "psubusb", - /* 1F8 */ "psubusw", - /* 1F9 */ "psubw", - /* 1FA */ "pswapd", - /* 1FB */ "ptest", - /* 1FC */ "punpckhbw", - /* 1FD */ "punpckhdq", - /* 1FE */ "punpckhqdq", - /* 1FF */ "punpckhwd", - /* 200 */ "punpcklbw", - /* 201 */ "punpckldq", - /* 202 */ "punpcklqdq", - /* 203 */ "punpcklwd", - /* 204 */ "push", - /* 205 */ "pusha", - /* 206 */ "pushad", - /* 207 */ "pushfd", - /* 208 */ "pushfq", - /* 209 */ "pushfw", - /* 20A */ "pxor", - /* 20B */ "rcl", - /* 20C */ "rcpps", - /* 20D */ "rcpss", - /* 20E */ "rcr", - /* 20F */ "rdmsr", - /* 210 */ "rdpmc", - /* 211 */ "rdrand", - /* 212 */ "rdtsc", - /* 213 */ "rdtscp", - /* 214 */ "rep", - /* 215 */ "repne", - /* 216 */ "ret", - /* 217 */ "retf", - /* 218 */ "rol", - /* 219 */ "ror", - /* 21A */ "roundpd", - /* 21B */ "roundps", - /* 21C */ "roundsd", - /* 21D */ "roundss", - /* 21E */ "rsm", - /* 21F */ "rsqrtps", - /* 220 */ "rsqrtss", - /* 221 */ "sahf", - /* 222 */ "salc", - /* 223 */ "sar", - /* 224 */ "sbb", - /* 225 */ "scasb", - /* 226 */ "scasd", - /* 227 */ "scasq", - /* 228 */ "scasw", - /* 229 */ "seta", - /* 22A */ "setae", - /* 22B */ "setb", - /* 22C */ "setbe", - /* 22D */ "sete", - /* 22E */ "setg", - /* 22F */ "setge", - /* 230 */ "setl", - /* 231 */ "setle", - /* 232 */ "setne", - /* 233 */ "setno", - /* 234 */ "setnp", - /* 235 */ "setns", - /* 236 */ "seto", - /* 237 */ "setp", - /* 238 */ "sets", - /* 239 */ "sfence", - /* 23A */ "sgdt", - /* 23B */ "shl", - /* 23C */ "shld", - /* 23D */ "shr", - /* 23E */ "shrd", - /* 23F */ "shufpd", - /* 240 */ "shufps", - /* 241 */ "sidt", - /* 242 */ "skinit", - /* 243 */ "sldt", - /* 244 */ "smsw", - /* 245 */ "sqrtpd", - /* 246 */ "sqrtps", - /* 247 */ "sqrtsd", - /* 248 */ "sqrtss", - /* 249 */ "stc", - /* 24A */ "std", - /* 24B */ "stgi", - /* 24C */ "sti", - /* 24D */ "stmxcsr", - /* 24E */ "stosb", - /* 24F */ "stosd", - /* 250 */ "stosq", - /* 251 */ "stosw", - /* 252 */ "str", - /* 253 */ "sub", - /* 254 */ "subpd", - /* 255 */ "subps", - /* 256 */ "subsd", - /* 257 */ "subss", - /* 258 */ "swapgs", - /* 259 */ "syscall", - /* 25A */ "sysenter", - /* 25B */ "sysexit", - /* 25C */ "sysret", - /* 25D */ "test", - /* 25E */ "ucomisd", - /* 25F */ "ucomiss", - /* 260 */ "ud2", - /* 261 */ "unpckhpd", - /* 262 */ "unpckhps", - /* 263 */ "unpcklpd", - /* 264 */ "unpcklps", - /* 265 */ "vaddpd", - /* 266 */ "vaddps", - /* 267 */ "vaddsd", - /* 268 */ "vaddss", - /* 269 */ "vaddsubpd", - /* 26A */ "vaddsubps", - /* 26B */ "vaesdec", - /* 26C */ "vaesdeclast", - /* 26D */ "vaesenc", - /* 26E */ "vaesenclast", - /* 26F */ "vaesimc", - /* 270 */ "vaeskeygenassist", - /* 271 */ "vandnpd", - /* 272 */ "vandnps", - /* 273 */ "vandpd", - /* 274 */ "vandps", - /* 275 */ "vblendpd", - /* 276 */ "vblendps", - /* 277 */ "vblendvpd", - /* 278 */ "vblendvps", - /* 279 */ "vbroadcastsd", - /* 27A */ "vbroadcastss", - /* 27B */ "vcmppd", - /* 27C */ "vcmpps", - /* 27D */ "vcmpsd", - /* 27E */ "vcmpss", - /* 27F */ "vcomisd", - /* 280 */ "vcomiss", - /* 281 */ "vcvtdq2pd", - /* 282 */ "vcvtdq2ps", - /* 283 */ "vcvtpd2dq", - /* 284 */ "vcvtpd2ps", - /* 285 */ "vcvtps2dq", - /* 286 */ "vcvtps2pd", - /* 287 */ "vcvtsd2si", - /* 288 */ "vcvtsd2ss", - /* 289 */ "vcvtsi2sd", - /* 28A */ "vcvtsi2ss", - /* 28B */ "vcvtss2sd", - /* 28C */ "vcvtss2si", - /* 28D */ "vcvttpd2dq", - /* 28E */ "vcvttps2dq", - /* 28F */ "vcvttsd2si", - /* 290 */ "vcvttss2si", - /* 291 */ "vdivpd", - /* 292 */ "vdivps", - /* 293 */ "vdivsd", - /* 294 */ "vdivss", - /* 295 */ "vdppd", - /* 296 */ "vdpps", - /* 297 */ "verr", - /* 298 */ "verw", - /* 299 */ "vextractf128", - /* 29A */ "vextractps", - /* 29B */ "vhaddpd", - /* 29C */ "vhaddps", - /* 29D */ "vhsubpd", - /* 29E */ "vhsubps", - /* 29F */ "vinsertf128", - /* 2A0 */ "vinsertps", - /* 2A1 */ "vlddqu", - /* 2A2 */ "vmaskmovdqu", - /* 2A3 */ "vmaskmovpd", - /* 2A4 */ "vmaskmovps", - /* 2A5 */ "vmaxpd", - /* 2A6 */ "vmaxps", - /* 2A7 */ "vmaxsd", - /* 2A8 */ "vmaxss", - /* 2A9 */ "vmcall", - /* 2AA */ "vmclear", - /* 2AB */ "vminpd", - /* 2AC */ "vminps", - /* 2AD */ "vminsd", - /* 2AE */ "vminss", - /* 2AF */ "vmlaunch", - /* 2B0 */ "vmload", - /* 2B1 */ "vmmcall", - /* 2B2 */ "vmovapd", - /* 2B3 */ "vmovaps", - /* 2B4 */ "vmovd", - /* 2B5 */ "vmovddup", - /* 2B6 */ "vmovdqa", - /* 2B7 */ "vmovdqu", - /* 2B8 */ "vmovhlps", - /* 2B9 */ "vmovhpd", - /* 2BA */ "vmovhps", - /* 2BB */ "vmovlhps", - /* 2BC */ "vmovlpd", - /* 2BD */ "vmovlps", - /* 2BE */ "vmovmskpd", - /* 2BF */ "vmovmskps", - /* 2C0 */ "vmovntdq", - /* 2C1 */ "vmovntdqa", - /* 2C2 */ "vmovntpd", - /* 2C3 */ "vmovntps", - /* 2C4 */ "vmovq", - /* 2C5 */ "vmovsd", - /* 2C6 */ "vmovshdup", - /* 2C7 */ "vmovsldup", - /* 2C8 */ "vmovss", - /* 2C9 */ "vmovupd", - /* 2CA */ "vmovups", - /* 2CB */ "vmpsadbw", - /* 2CC */ "vmptrld", - /* 2CD */ "vmptrst", - /* 2CE */ "vmread", - /* 2CF */ "vmresume", - /* 2D0 */ "vmrun", - /* 2D1 */ "vmsave", - /* 2D2 */ "vmulpd", - /* 2D3 */ "vmulps", - /* 2D4 */ "vmulsd", - /* 2D5 */ "vmulss", - /* 2D6 */ "vmwrite", - /* 2D7 */ "vmxoff", - /* 2D8 */ "vmxon", - /* 2D9 */ "vorpd", - /* 2DA */ "vorps", - /* 2DB */ "vpabsb", - /* 2DC */ "vpabsd", - /* 2DD */ "vpabsw", - /* 2DE */ "vpackssdw", - /* 2DF */ "vpacksswb", - /* 2E0 */ "vpackusdw", - /* 2E1 */ "vpackuswb", - /* 2E2 */ "vpaddb", - /* 2E3 */ "vpaddd", - /* 2E4 */ "vpaddq", - /* 2E5 */ "vpaddsb", - /* 2E6 */ "vpaddsw", - /* 2E7 */ "vpaddusb", - /* 2E8 */ "vpaddusw", - /* 2E9 */ "vpaddw", - /* 2EA */ "vpalignr", - /* 2EB */ "vpand", - /* 2EC */ "vpandn", - /* 2ED */ "vpavgb", - /* 2EE */ "vpavgw", - /* 2EF */ "vpblendvb", - /* 2F0 */ "vpblendw", - /* 2F1 */ "vpclmulqdq", - /* 2F2 */ "vpcmpeqb", - /* 2F3 */ "vpcmpeqd", - /* 2F4 */ "vpcmpeqq", - /* 2F5 */ "vpcmpeqw", - /* 2F6 */ "vpcmpestri", - /* 2F7 */ "vpcmpestrm", - /* 2F8 */ "vpcmpgtb", - /* 2F9 */ "vpcmpgtd", - /* 2FA */ "vpcmpgtq", - /* 2FB */ "vpcmpgtw", - /* 2FC */ "vpcmpistri", - /* 2FD */ "vpcmpistrm", - /* 2FE */ "vperm2f128", - /* 2FF */ "vpermilpd", - /* 300 */ "vpermilps", - /* 301 */ "vpextrb", - /* 302 */ "vpextrd", - /* 303 */ "vpextrq", - /* 304 */ "vpextrw", - /* 305 */ "vphaddd", - /* 306 */ "vphaddsw", - /* 307 */ "vphaddw", - /* 308 */ "vphminposuw", - /* 309 */ "vphsubd", - /* 30A */ "vphsubsw", - /* 30B */ "vphsubw", - /* 30C */ "vpinsrb", - /* 30D */ "vpinsrd", - /* 30E */ "vpinsrq", - /* 30F */ "vpinsrw", - /* 310 */ "vpmaddubsw", - /* 311 */ "vpmaddwd", - /* 312 */ "vpmaxsb", - /* 313 */ "vpmaxsd", - /* 314 */ "vpmaxsw", - /* 315 */ "vpmaxub", - /* 316 */ "vpmaxud", - /* 317 */ "vpmaxuw", - /* 318 */ "vpminsb", - /* 319 */ "vpminsd", - /* 31A */ "vpminsw", - /* 31B */ "vpminub", - /* 31C */ "vpminud", - /* 31D */ "vpminuw", - /* 31E */ "vpmovmskb", - /* 31F */ "vpmovsxbd", - /* 320 */ "vpmovsxbq", - /* 321 */ "vpmovsxbw", - /* 322 */ "vpmovsxwd", - /* 323 */ "vpmovsxwq", - /* 324 */ "vpmovzxbd", - /* 325 */ "vpmovzxbq", - /* 326 */ "vpmovzxbw", - /* 327 */ "vpmovzxdq", - /* 328 */ "vpmovzxwd", - /* 329 */ "vpmovzxwq", - /* 32A */ "vpmuldq", - /* 32B */ "vpmulhrsw", - /* 32C */ "vpmulhuw", - /* 32D */ "vpmulhw", - /* 32E */ "vpmulld", - /* 32F */ "vpmullw", - /* 330 */ "vpor", - /* 331 */ "vpsadbw", - /* 332 */ "vpshufb", - /* 333 */ "vpshufd", - /* 334 */ "vpshufhw", - /* 335 */ "vpshuflw", - /* 336 */ "vpsignb", - /* 337 */ "vpsignd", - /* 338 */ "vpsignw", - /* 339 */ "vpslld", - /* 33A */ "vpslldq", - /* 33B */ "vpsllq", - /* 33C */ "vpsllw", - /* 33D */ "vpsrad", - /* 33E */ "vpsraw", - /* 33F */ "vpsrld", - /* 340 */ "vpsrldq", - /* 341 */ "vpsrlq", - /* 342 */ "vpsrlw", - /* 343 */ "vpsubb", - /* 344 */ "vpsubd", - /* 345 */ "vpsubq", - /* 346 */ "vpsubsb", - /* 347 */ "vpsubsw", - /* 348 */ "vpsubusb", - /* 349 */ "vpsubusw", - /* 34A */ "vpsubw", - /* 34B */ "vptest", - /* 34C */ "vpunpckhbw", - /* 34D */ "vpunpckhdq", - /* 34E */ "vpunpckhqdq", - /* 34F */ "vpunpckhwd", - /* 350 */ "vpunpcklbw", - /* 351 */ "vpunpckldq", - /* 352 */ "vpunpcklqdq", - /* 353 */ "vpunpcklwd", - /* 354 */ "vpxor", - /* 355 */ "vrcpps", - /* 356 */ "vrcpss", - /* 357 */ "vroundpd", - /* 358 */ "vroundps", - /* 359 */ "vroundsd", - /* 35A */ "vroundss", - /* 35B */ "vrsqrtps", - /* 35C */ "vrsqrtss", - /* 35D */ "vshufpd", - /* 35E */ "vshufps", - /* 35F */ "vsqrtpd", - /* 360 */ "vsqrtps", - /* 361 */ "vsqrtsd", - /* 362 */ "vsqrtss", - /* 363 */ "vstmxcsr", - /* 364 */ "vsubpd", - /* 365 */ "vsubps", - /* 366 */ "vsubsd", - /* 367 */ "vsubss", - /* 368 */ "vtestpd", - /* 369 */ "vtestps", - /* 36A */ "vucomisd", - /* 36B */ "vucomiss", - /* 36C */ "vunpckhpd", - /* 36D */ "vunpckhps", - /* 36E */ "vunpcklpd", - /* 36F */ "vunpcklps", - /* 370 */ "vxorpd", - /* 371 */ "vxorps", - /* 372 */ "vzeroall", - /* 373 */ "vzeroupper", - /* 374 */ "wait", - /* 375 */ "wbinvd", - /* 376 */ "wrmsr", - /* 377 */ "xadd", - /* 378 */ "xchg", - /* 379 */ "xcryptcbc", - /* 37A */ "xcryptcfb", - /* 37B */ "xcryptctr", - /* 37C */ "xcryptecb", - /* 37D */ "xcryptofb", - /* 37E */ "xgetbv", - /* 37F */ "xlatb", - /* 380 */ "xor", - /* 381 */ "xorpd", - /* 382 */ "xorps", - /* 383 */ "xrstor", - /* 384 */ "xsave", - /* 385 */ "xsetbv", - /* 386 */ "xsha1", - /* 387 */ "xsha256", - /* 388 */ "xstore", -}; - -} - -} diff --git a/CMakeLists.txt b/CMakeLists.txt index 096388b..d2a104b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.8.12) include(GenerateExportHeader) -project(VerteronDisassemblerEngine) +project(ZyanDisassemblerEngine) option(BUILD_SHARED_LIBS "Build shared libraries rather than static ones" FALSE) option(FORCE_SHARED_CRT diff --git a/Examples/C/SimpleDemo/SimpleDemo.c b/Examples/C/SimpleDemo/SimpleDemo.c new file mode 100644 index 0000000..94949b9 --- /dev/null +++ b/Examples/C/SimpleDemo/SimpleDemo.c @@ -0,0 +1,86 @@ +#include + +#include +#include + +int main() +{ + uint8_t data32[] = + { + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x6A, 0xFE, 0x68, 0xD8, 0x18, 0x09, 0x77, 0x68, 0x85, 0xD2, + 0x09, 0x77, 0x64, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x50, 0x83, 0xEC, 0x14, 0x53, 0x56, 0x57, + 0xA1, 0x68, 0xEE, 0x13, 0x77, 0x31, 0x45, 0xF8, 0x33, 0xC5, 0x50, 0x8D, 0x45, 0xF0, 0x64, + 0xA3, 0x00, 0x00, 0x00, 0x00, 0x89, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0x00, 0x00, 0x00, 0x00, + 0x8B, 0x5D, 0x08, 0xF6, 0xC3, 0x04, 0x0F, 0x85, 0x57, 0x74, 0x00, 0x00, 0x53, 0x6A, 0x00, + 0xFF, 0x35, 0xA0, 0xE3, 0x13, 0x77, 0xFF, 0x15, 0x00, 0x10, 0x14, 0x77, 0x85, 0xC0, 0x0F, + 0x84, 0xC6, 0x48, 0x04, 0x00, 0xC7, 0x45, 0x08, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x45, 0xFC, + 0xFE, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x8B, 0x4D, 0xF0, 0x64, 0x89, 0x0D, 0x00, 0x00, 0x00, + 0x00, 0x59, 0x5F, 0x5E, 0x5B, 0x8B, 0xE5, 0x5D, 0xC2, 0x04, 0x00 + }; + uint8_t data64[] = + { + 0x48, 0x89, 0x5C, 0x24, 0x10, 0x48, 0x89, 0x74, 0x24, 0x18, 0x89, 0x4C, 0x24, 0x08, 0x57, + 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x4C, 0x8B, 0xF2, + 0x8B, 0xD9, 0x48, 0xC7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x33, 0xF6, 0x48, 0x89, + 0x74, 0x24, 0x30, 0x45, 0x33, 0xFF, 0xF7, 0xC1, 0x8D, 0xF0, 0xFF, 0xFF, 0x0F, 0x85, 0xAA, + 0x53, 0x08, 0x00, 0xF6, 0xC1, 0x40, 0x8B, 0xFE, 0x41, 0xBD, 0x08, 0x00, 0x00, 0x00, 0x41, + 0x0F, 0x45, 0xFD, 0xF6, 0xC1, 0x02, 0x48, 0x8B, 0x0D, 0x10, 0xD4, 0x0E, 0x00, 0x0F, 0x85, + 0x40, 0xE1, 0x01, 0x00, 0x8B, 0x15, 0x4C, 0xD5, 0x0E, 0x00, 0x81, 0xC2, 0x00, 0x00, 0x14, + 0x00, 0x0B, 0xD7, 0x4D, 0x8B, 0xC6, 0xFF, 0x15, 0x3B, 0x2F, 0x10, 0x00, 0x48, 0x8B, 0xD8, + 0x48, 0x85, 0xC0, 0x0F, 0x84, 0x93, 0x78, 0x0A, 0x00, 0x48, 0x8B, 0xC3, 0x48, 0x8B, 0x5C, + 0x24, 0x78, 0x48, 0x8B, 0xB4, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC4, 0x40, 0x41, + 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0x41, 0x5C, 0x5F, 0xC3 + }; + + ZydisInstructionInfo info; + ZydisInstructionDecoderContext* decoder = NULL; + ZydisBaseInstructionFormatterContext* formatter = NULL; + ZydisBaseInputContext* input32 = NULL; + ZydisBaseInputContext* input64 = NULL; + + decoder = ZydisInstructionDecoder_Create(); + formatter = ZydisIntelInstructionFormatter_Create(); + + input32 = ZydisMemoryInput_Create(&data32[0], sizeof(data32)); + input64 = ZydisMemoryInput_Create(&data64[0], sizeof(data64)); + + ZydisInstructionDecoder_SetDisassemblerMode(decoder, DM_M32BIT); + ZydisInstructionDecoder_SetDataSource(decoder, input32); + ZydisInstructionDecoder_SetInstructionPointer(decoder, 0x77091852); + + puts("32 bit test ...\n\n"); + while (ZydisInstructionDecoder_DecodeInstruction(decoder, &info)) + { + printf("%08X ", (uint32_t)(info.instrAddress & 0xFFFFFFFF)); + if (info.flags & ZYDIS_IF_ERROR_MASK) + { + printf("db %02X\n", info.data[0]); + } + else + { + printf("%s\n", ZydisBaseInstructionFormatter_FormatInstruction(formatter, &info)); + } + } + + puts("\n"); + + ZydisInstructionDecoder_SetDisassemblerMode(decoder, DM_M64BIT); + ZydisInstructionDecoder_SetDataSource(decoder, input64); + ZydisInstructionDecoder_SetInstructionPointer(decoder, 0x00007FFA39A81930ull); + puts("64 bit test ...\n\n"); + while (ZydisInstructionDecoder_DecodeInstruction(decoder, &info)) + { + printf("%016llX ", info.instrAddress); + if (info.flags & ZYDIS_IF_ERROR_MASK) + { + printf("db %02X", info.data[0]); + } + else + { + printf("%s\n", ZydisBaseInstructionFormatter_FormatInstruction(formatter, &info)); + } + } + + getchar(); + return 0; +} \ No newline at end of file diff --git a/Examples/CppBindings/Main.cpp b/Examples/CppBindings/Main.cpp deleted file mode 100644 index aab004c..0000000 --- a/Examples/CppBindings/Main.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : - - Last change : 29. October 2014 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ -#include -#include -#include - -#include - -using namespace Verteron; - -int main(int argc, char* argv[]) -{ - (void)argc; (void)argv; - - uint8_t data32[] = - { - 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x6A, 0xFE, 0x68, 0xD8, 0x18, 0x09, 0x77, 0x68, 0x85, 0xD2, - 0x09, 0x77, 0x64, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x50, 0x83, 0xEC, 0x14, 0x53, 0x56, 0x57, - 0xA1, 0x68, 0xEE, 0x13, 0x77, 0x31, 0x45, 0xF8, 0x33, 0xC5, 0x50, 0x8D, 0x45, 0xF0, 0x64, - 0xA3, 0x00, 0x00, 0x00, 0x00, 0x89, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0x00, 0x00, 0x00, 0x00, - 0x8B, 0x5D, 0x08, 0xF6, 0xC3, 0x04, 0x0F, 0x85, 0x57, 0x74, 0x00, 0x00, 0x53, 0x6A, 0x00, - 0xFF, 0x35, 0xA0, 0xE3, 0x13, 0x77, 0xFF, 0x15, 0x00, 0x10, 0x14, 0x77, 0x85, 0xC0, 0x0F, - 0x84, 0xC6, 0x48, 0x04, 0x00, 0xC7, 0x45, 0x08, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x45, 0xFC, - 0xFE, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x8B, 0x4D, 0xF0, 0x64, 0x89, 0x0D, 0x00, 0x00, 0x00, - 0x00, 0x59, 0x5F, 0x5E, 0x5B, 0x8B, 0xE5, 0x5D, 0xC2, 0x04, 0x00 - }; - uint8_t data64[] = - { - 0x48, 0x89, 0x5C, 0x24, 0x10, 0x48, 0x89, 0x74, 0x24, 0x18, 0x89, 0x4C, 0x24, 0x08, 0x57, - 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x4C, 0x8B, 0xF2, - 0x8B, 0xD9, 0x48, 0xC7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x33, 0xF6, 0x48, 0x89, - 0x74, 0x24, 0x30, 0x45, 0x33, 0xFF, 0xF7, 0xC1, 0x8D, 0xF0, 0xFF, 0xFF, 0x0F, 0x85, 0xAA, - 0x53, 0x08, 0x00, 0xF6, 0xC1, 0x40, 0x8B, 0xFE, 0x41, 0xBD, 0x08, 0x00, 0x00, 0x00, 0x41, - 0x0F, 0x45, 0xFD, 0xF6, 0xC1, 0x02, 0x48, 0x8B, 0x0D, 0x10, 0xD4, 0x0E, 0x00, 0x0F, 0x85, - 0x40, 0xE1, 0x01, 0x00, 0x8B, 0x15, 0x4C, 0xD5, 0x0E, 0x00, 0x81, 0xC2, 0x00, 0x00, 0x14, - 0x00, 0x0B, 0xD7, 0x4D, 0x8B, 0xC6, 0xFF, 0x15, 0x3B, 0x2F, 0x10, 0x00, 0x48, 0x8B, 0xD8, - 0x48, 0x85, 0xC0, 0x0F, 0x84, 0x93, 0x78, 0x0A, 0x00, 0x48, 0x8B, 0xC3, 0x48, 0x8B, 0x5C, - 0x24, 0x78, 0x48, 0x8B, 0xB4, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC4, 0x40, 0x41, - 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0x41, 0x5C, 0x5F, 0xC3 - }; - - VXInstructionInfo info; - VXInstructionDecoder decoder; - VXIntelInstructionFormatter formatter; - VXMemoryDataSource input32(&data32[0], sizeof(data32)); - VXMemoryDataSource input64(&data64[0], sizeof(data64)); - - decoder.setDisassemblerMode(VXDisassemblerMode::M32BIT); - decoder.setDataSource(&input32); - decoder.setInstructionPointer(0x77091852); - std::cout << "32 bit test ..." << std::endl << std::endl; - while (decoder.decodeInstruction(info)) - { - std::cout << std::hex << std::setw(8) << std::setfill('0') << std::uppercase - << info.instrAddress << " "; - if (info.flags & IF_ERROR_MASK) - { - std::cout << "db " << std::setw(2) << info.data[0]; - } else - { - std::cout << formatter.formatInstruction(info) << std::endl; - } - } - - std::cout << std::endl; - - decoder.setDisassemblerMode(VXDisassemblerMode::M64BIT); - decoder.setDataSource(&input64); - decoder.setInstructionPointer(0x00007FFA39A81930ull); - std::cout << "64 bit test ..." << std::endl << std::endl; - while (decoder.decodeInstruction(info)) - { - std::cout << std::hex << std::setw(16) << std::setfill('0') << std::uppercase - << info.instrAddress << " "; - if (info.flags & IF_ERROR_MASK) - { - std::cout << "db " << std::setw(2) << info.data[0]; - } else - { - std::cout << formatter.formatInstruction(info) << std::endl; - } - } - - std::cin.get(); - return 0; -} diff --git a/Examples/SimpleDemo/Main.c b/Examples/SimpleDemo/Main.c deleted file mode 100644 index 6196634..0000000 --- a/Examples/SimpleDemo/Main.c +++ /dev/null @@ -1,123 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 04. February 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#include - -#include -#include - -int main() -{ - uint8_t data32[] = - { - 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x6A, 0xFE, 0x68, 0xD8, 0x18, 0x09, 0x77, 0x68, 0x85, 0xD2, - 0x09, 0x77, 0x64, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x50, 0x83, 0xEC, 0x14, 0x53, 0x56, 0x57, - 0xA1, 0x68, 0xEE, 0x13, 0x77, 0x31, 0x45, 0xF8, 0x33, 0xC5, 0x50, 0x8D, 0x45, 0xF0, 0x64, - 0xA3, 0x00, 0x00, 0x00, 0x00, 0x89, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0x00, 0x00, 0x00, 0x00, - 0x8B, 0x5D, 0x08, 0xF6, 0xC3, 0x04, 0x0F, 0x85, 0x57, 0x74, 0x00, 0x00, 0x53, 0x6A, 0x00, - 0xFF, 0x35, 0xA0, 0xE3, 0x13, 0x77, 0xFF, 0x15, 0x00, 0x10, 0x14, 0x77, 0x85, 0xC0, 0x0F, - 0x84, 0xC6, 0x48, 0x04, 0x00, 0xC7, 0x45, 0x08, 0x00, 0x00, 0x00, 0x00, 0xC7, 0x45, 0xFC, - 0xFE, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x8B, 0x4D, 0xF0, 0x64, 0x89, 0x0D, 0x00, 0x00, 0x00, - 0x00, 0x59, 0x5F, 0x5E, 0x5B, 0x8B, 0xE5, 0x5D, 0xC2, 0x04, 0x00 - }; - uint8_t data64[] = - { - 0x48, 0x89, 0x5C, 0x24, 0x10, 0x48, 0x89, 0x74, 0x24, 0x18, 0x89, 0x4C, 0x24, 0x08, 0x57, - 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x4C, 0x8B, 0xF2, - 0x8B, 0xD9, 0x48, 0xC7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0x33, 0xF6, 0x48, 0x89, - 0x74, 0x24, 0x30, 0x45, 0x33, 0xFF, 0xF7, 0xC1, 0x8D, 0xF0, 0xFF, 0xFF, 0x0F, 0x85, 0xAA, - 0x53, 0x08, 0x00, 0xF6, 0xC1, 0x40, 0x8B, 0xFE, 0x41, 0xBD, 0x08, 0x00, 0x00, 0x00, 0x41, - 0x0F, 0x45, 0xFD, 0xF6, 0xC1, 0x02, 0x48, 0x8B, 0x0D, 0x10, 0xD4, 0x0E, 0x00, 0x0F, 0x85, - 0x40, 0xE1, 0x01, 0x00, 0x8B, 0x15, 0x4C, 0xD5, 0x0E, 0x00, 0x81, 0xC2, 0x00, 0x00, 0x14, - 0x00, 0x0B, 0xD7, 0x4D, 0x8B, 0xC6, 0xFF, 0x15, 0x3B, 0x2F, 0x10, 0x00, 0x48, 0x8B, 0xD8, - 0x48, 0x85, 0xC0, 0x0F, 0x84, 0x93, 0x78, 0x0A, 0x00, 0x48, 0x8B, 0xC3, 0x48, 0x8B, 0x5C, - 0x24, 0x78, 0x48, 0x8B, 0xB4, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x83, 0xC4, 0x40, 0x41, - 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0x41, 0x5C, 0x5F, 0xC3 - }; - - ZyDisInstructionInfo info; - ZyDisInstructionDecoderContext* decoder = NULL; - ZyDisBaseInstructionFormatterContext* formatter = NULL; - ZyDisBaseDataSourceContext* input32 = NULL; - ZyDisBaseDataSourceContext* input64 = NULL; - - decoder = ZyDisInstructionDecoder_Create(); - formatter = ZyDisIntelInstructionFormatter_Create(); - - input32 = ZyDisMemoryDataSource_Create(&data32[0], sizeof(data32)); - input64 = ZyDisMemoryDataSource_Create(&data64[0], sizeof(data64)); - - ZyDisInstructionDecoder_SetDisassemblerMode(decoder, DM_M32BIT); - ZyDisInstructionDecoder_SetDataSource(decoder, input32); - ZyDisInstructionDecoder_SetInstructionPointer(decoder, 0x77091852); - - puts("32 bit test ...\n\n"); - while (ZyDisInstructionDecoder_DecodeInstruction(decoder, &info)) - { - printf("%08X ", (uint32_t)(info.instrAddress & 0xFFFFFFFF)); - if (info.flags & IF_ERROR_MASK) - { - printf("db %02X\n", info.data[0]); - } - else - { - printf("%s\n", ZyDisBaseInstructionFormatter_FormatInstruction(formatter, &info)); - } - } - - puts("\n"); - - ZyDisInstructionDecoder_SetDisassemblerMode(decoder, DM_M64BIT); - ZyDisInstructionDecoder_SetDataSource(decoder, input64); - ZyDisInstructionDecoder_SetInstructionPointer(decoder, 0x00007FFA39A81930ull); - puts("64 bit test ...\n\n"); - while (ZyDisInstructionDecoder_DecodeInstruction(decoder, &info)) - { - printf("%016llX ", info.instrAddress); - if (info.flags & IF_ERROR_MASK) - { - printf("db %02X", info.data[0]); - } - else - { - printf("%s\n", ZyDisBaseInstructionFormatter_FormatInstruction(formatter, &info)); - } - } - - ZyDisBaseDataSource_Release(input32); - ZyDisBaseDataSource_Release(input64); - ZyDisBaseInstructionFormatter_Release(formatter); - ZyDisInstructionDecoder_Release(decoder); - - getchar(); - return 0; -} \ No newline at end of file diff --git a/Examples/SymbolResolver/Main.c b/Examples/SymbolResolver/Main.c deleted file mode 100644 index 763e5ad..0000000 --- a/Examples/SymbolResolver/Main.c +++ /dev/null @@ -1,195 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 19. March 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#include -#include - -int main(int argc, char* argv[]) -{ - ZYDIS_UNUSED(argc); ZYDIS_UNUSED(argv); - - // TODO: port to C - /* - - // Find module base in memory - void *moduleBase = GetModuleHandle("kernel32.dll"); - uintptr_t baseAddress = (uintptr_t)moduleBase; - - // Parse PE headers - PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)moduleBase; - if (dosHeader->e_magic != IMAGE_DOS_SIGNATURE) - { - return 1; - } - - PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)(baseAddress + dosHeader->e_lfanew); - if (ntHeaders->Signature != IMAGE_NT_SIGNATURE) - { - return 1; - } - // Initialize disassembler - ZyDisInstructionInfo info; - ZyDisInstructionDecoder decoder; - ZyDisExactSymbolResolver resolver; - ZyDisIntelInstructionFormatter formatter; -#ifdef _M_X64 - decoder.setDisassemblerMode(ZyDisDisassemblerMode::M64BIT); -#else - decoder.setDisassemblerMode(ZyDisDisassemblerMode::M32BIT); -#endif - formatter.setSymbolResolver(&resolver); - // Initialize output stream - std::ofstream out; - out.open(".\\output.txt"); - // Find all call and jump targets - uint64_t subCount = 0; - uint64_t locCount = 0; - PIMAGE_SECTION_HEADER sectionHeader = - reinterpret_cast( - reinterpret_cast(ntHeaders) + sizeof(IMAGE_NT_HEADERS) - + ntHeaders->FileHeader.SizeOfOptionalHeader - sizeof(IMAGE_OPTIONAL_HEADER)); - for (unsigned int i = 0; i < ntHeaders->FileHeader.NumberOfSections; ++i) - { - if (sectionHeader->Characteristics & IMAGE_SCN_CNT_CODE) - { - ZyDisMemoryDataSource input(reinterpret_cast( - baseAddress + sectionHeader->VirtualAddress), sectionHeader->SizeOfRawData); - decoder.setDataSource(&input); - decoder.setInstructionPointer(baseAddress + sectionHeader->VirtualAddress); - while (decoder.decodeInstruction(info)) - { - // Skip invalid and non-relative instructions - if ((info.flags & IF_ERROR_MASK) || !(info.flags & IF_RELATIVE)) - { - continue; - } - switch (info.mnemonic) - { - case ZyDisInstructionMnemonic::CALL: - resolver.setSymbol(VDECalcAbsoluteTarget(info, info.operand[0]), - std::string("sub_" + std::to_string(subCount)).c_str()); - subCount++; - break; - case ZyDisInstructionMnemonic::JMP: - case ZyDisInstructionMnemonic::JO: - case ZyDisInstructionMnemonic::JNO: - case ZyDisInstructionMnemonic::JB: - case ZyDisInstructionMnemonic::JNB: - case ZyDisInstructionMnemonic::JE: - case ZyDisInstructionMnemonic::JNE: - case ZyDisInstructionMnemonic::JBE: - case ZyDisInstructionMnemonic::JA: - case ZyDisInstructionMnemonic::JS: - case ZyDisInstructionMnemonic::JNS: - case ZyDisInstructionMnemonic::JP: - case ZyDisInstructionMnemonic::JNP: - case ZyDisInstructionMnemonic::JL: - case ZyDisInstructionMnemonic::JGE: - case ZyDisInstructionMnemonic::JLE: - case ZyDisInstructionMnemonic::JG: - case ZyDisInstructionMnemonic::JCXZ: - case ZyDisInstructionMnemonic::JECXZ: - case ZyDisInstructionMnemonic::JRCXZ: - resolver.setSymbol(VDECalcAbsoluteTarget(info, info.operand[0]), - std::string("loc_" + std::to_string(locCount)).c_str()); - locCount++; - break; - default: - break; - } - } - } - sectionHeader++; - } - // Add entry point symbol - resolver.setSymbol(baseAddress + ntHeaders->OptionalHeader.AddressOfEntryPoint, "EntryPoint"); - // Add exported symbols - if (ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress > 0) - { - PIMAGE_EXPORT_DIRECTORY exports = - reinterpret_cast(reinterpret_cast(baseAddress) + - ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress); - PDWORD address = - reinterpret_cast(reinterpret_cast(baseAddress) + - exports->AddressOfFunctions); - PDWORD name = - reinterpret_cast(reinterpret_cast(baseAddress) + - exports->AddressOfNames); - PWORD ordinal = - reinterpret_cast(reinterpret_cast(baseAddress) + - exports->AddressOfNameOrdinals); - for(unsigned int i = 0; i < exports->NumberOfNames; ++i) - { - resolver.setSymbol(baseAddress + address[ordinal[i]], - reinterpret_cast(baseAddress) + name[i]); - } - } - // Disassemble - sectionHeader = - reinterpret_cast( - reinterpret_cast(ntHeaders) + sizeof(IMAGE_NT_HEADERS) - + ntHeaders->FileHeader.SizeOfOptionalHeader - sizeof(IMAGE_OPTIONAL_HEADER)); - for (unsigned int i = 0; i < ntHeaders->FileHeader.NumberOfSections; ++i) - { - if (sectionHeader->Characteristics & IMAGE_SCN_CNT_CODE) - { - ZyDisMemoryDataSource input(reinterpret_cast( - baseAddress + sectionHeader->VirtualAddress), sectionHeader->SizeOfRawData); - decoder.setDataSource(&input); - decoder.setInstructionPointer(baseAddress + sectionHeader->VirtualAddress); - while (decoder.decodeInstruction(info)) - { - uint64_t offset; - const char *symbol = resolver.resolveSymbol(info, info.instrAddress, offset); - if (symbol) - { - out << symbol << ": " << std::endl; - } - out << " " << std::hex << std::setw(16) << std::setfill('0') - << info.instrAddress << " "; - if (info.flags & IF_ERROR_MASK) - { - out << "db " << std::hex << std::setw(2) << std::setfill('0') - << static_cast(info.data[0]) << std::endl; - } else - { - out << formatter.formatInstruction(info) << std::endl; - } - } - } - sectionHeader++; - } - out.close(); - */ - - return 0; -} diff --git a/README.md b/README.md index 1d0c629..724620a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Verteron Disassembler Engine (VDE) +Zyan Disassembler Engine (Zydis) ================================== Fast and lightweight x86/x86-64 disassembler library. @@ -18,15 +18,15 @@ Fast and lightweight x86/x86-64 disassembler library. ## Quick Example ## -The following example program uses VDE to disassemble a given memory buffer and prints the output to the console. +The following example program uses Zydis to disassemble a given memory buffer and prints the output to the console. ```C++ #include #include #include -#include "VXDisassembler.h" +#include "Zydis.hpp" -using namespace Verteron; +using namespace Zydis; int _tmain(int argc, _TCHAR* argv[]) { @@ -34,13 +34,13 @@ int _tmain(int argc, _TCHAR* argv[]) { 0x90, 0xE9, 0x00, 0x00, 0x00, 0x00, 0xC3 }; - VXMemoryDataSource input(&data[0], sizeof(data)); - VXInstructionInfo info; - VXInstructionDecoder decoder; - decoder.setDisassemblerMode(VXDisassemblerMode::M32BIT); + MemoryInput input(&data[0], sizeof(data)); + InstructionInfo info; + InstructionDecoder decoder; + decoder.setDisassemblerMode(ZydisMode::M32BIT); decoder.setDataSource(&input); decoder.setInstructionPointer(0); - VXIntelInstructionFormatter formatter; + IntelInstructionFormatter formatter; while (decoder.decodeInstruction(info)) { std::cout << formatter.formatInstruction(info) << std::endl; @@ -50,8 +50,8 @@ int _tmain(int argc, _TCHAR* argv[]) ## Compilation ## -- While VDE supports other compilers in theory, compilation has not been tested with any compiler other than MSVC12 (Visual Studio 2013) +- While Zydis supports other compilers in theory, compilation has not been tested with any compiler other than MSVC12 (Visual Studio 2013) - Multi-compiler support might be added in the future ## License ## -Verteron Disassembler Engine is licensed under the MIT License. Dependencies are under their respective licenses. +Zyan Disassembler Engine is licensed under the MIT License. Dependencies are under their respective licenses. diff --git a/VerteronDisassemblerEngine/ZyDisDisassembler.h b/VerteronDisassemblerEngine/ZyDisDisassembler.h deleted file mode 100644 index 3e4bb81..0000000 --- a/VerteronDisassemblerEngine/ZyDisDisassembler.h +++ /dev/null @@ -1,41 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 04. February 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - - **************************************************************************************************/ - -#ifndef _VDE_ZyDisDISASSEMBLERC_H_ -#define _VDE_ZyDisDISASSEMBLERC_H_ - -#include "ZyDisDisassemblerTypes.h" -#include "ZyDisInstructionDecoder.h" -#include "ZyDisInstructionFormatter.h" -#include "ZyDisDisassemblerUtils.h" - -#endif /* _VDE_ZyDisDISASSEMBLERC_H_ */ \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisDisassemblerUtils.c b/VerteronDisassemblerEngine/ZyDisDisassemblerUtils.c deleted file mode 100644 index 5b9534f..0000000 --- a/VerteronDisassemblerEngine/ZyDisDisassemblerUtils.c +++ /dev/null @@ -1,74 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 13. March 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#include "ZyDisDisassemblerUtils.h" - -#include - -uint64_t ZyDisCalcAbsoluteTarget(const ZyDisInstructionInfo *info, const ZyDisOperandInfo *operand) -{ - assert((operand->type == OPTYPE_REL_IMMEDIATE) || - ((operand->type == OPTYPE_MEMORY) && (operand->base == REG_RIP))); - - uint64_t truncMask = 0xFFFFFFFFFFFFFFFFull; - if (!(info->flags & IF_DISASSEMBLER_MODE_64)) - { - truncMask >>= (64 - info->operand_mode); - } - - uint16_t size = operand->size; - if ((operand->type == OPTYPE_MEMORY) && (operand->base == REG_RIP)) - { - size = operand->offset; - } - - switch (size) - { - case 8: - return (info->instrPointer + operand->lval.sbyte) & truncMask; - case 16: - { - uint32_t delta = operand->lval.sword & truncMask; - if ((info->instrPointer + delta) > 0xFFFF) - { - return (info->instrPointer & 0xF0000) + ((info->instrPointer + delta) & 0xFFFF); - } - return info->instrPointer + delta; - } - case 32: - return (info->instrPointer + operand->lval.sdword) & truncMask; - default: - assert(0); - } - - return 0; -} \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisInstructionDecoder.c b/VerteronDisassemblerEngine/ZyDisInstructionDecoder.c deleted file mode 100644 index 0e24db0..0000000 --- a/VerteronDisassemblerEngine/ZyDisInstructionDecoder.c +++ /dev/null @@ -1,2122 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 19. March 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#include "ZyDisInstructionDecoder.h" -#include "ZyDisInternalHelpers.h" -#include "ZyDisOpcodeTableInternal.h" - -#include -#include -#include - -/* Internal interface ========================================================================== */ - -/* ZyDisBaseDataSource ---------------------------------------------------------------------------- */ - -typedef struct _ZyDisBaseDataSource -{ - uint8_t currentInput; - ZyDisBaseDataSource_DestructionCallback destruct; // may be NULL - ZyDisBaseDataSource_InputCallback internalInputPeek; - ZyDisBaseDataSource_InputCallback internalInputNext; - ZyDisBaseDataSource_IsEndOfInputCallback isEndOfInput; - ZyDisBaseDataSource_GetPositionCallback getPosition; - ZyDisBaseDataSource_SetPositionCallback setPosition; -} ZyDisBaseDataSource; - -/** - * @brief Constructor. - * @param ctx The context. - */ -static void ZyDisBaseDataSource_Construct(ZyDisBaseDataSourceContext *ctx); - -/** - * @brief Destructor. - * @param ctx The context. - */ -static void ZyDisBaseDataSource_Destruct(ZyDisBaseDataSourceContext *ctx); - -/* ZyDisMemoryDataSource -------------------------------------------------------------------------- */ - -typedef struct _ZyDisMemoryDataSource -{ - ZyDisBaseDataSource super; - const void *inputBuffer; - uint64_t inputBufferLen; - uint64_t inputBufferPos; -} ZyDisMemoryDataSource; - -/** - * @brief Constructor. - * @param ctx The context. - * @param buffer The buffer. - * @param bufferLen Length of the buffer. - */ -static void ZyDisMemoryDataSource_Construct(ZyDisBaseDataSourceContext *ctx, const void* buffer, - size_t bufferLen); - -/** - * @brief Destructor. - * @param ctx The context. - */ -static void ZyDisMemoryDataSource_Destruct(ZyDisBaseDataSourceContext *ctx); - -/** - * @brief Reads the next byte from the data source. - * @param ctx The context. - * @return The current input byte. - * This method increases the current input position by one. - */ -static uint8_t ZyDisMemoryDataSource_InternalInputPeek(ZyDisBaseDataSourceContext *ctx); - -/** - * @brief Reads the next byte from the data source. - * @param ctx The context. - * @return The current input byte. - * This method does NOT increase the current input position. - */ -static uint8_t ZyDisMemoryDataSource_InternalInputNext(ZyDisBaseDataSourceContext *ctx); - -/** - * @copydoc ZyDisBaseDataSource_IsEndOfInput - */ -static bool ZyDisMemoryDataSource_IsEndOfInput(const ZyDisBaseDataSourceContext *ctx); - -/** - * @copydoc ZyDisBaseDataSource_GetPosition - */ -static uint64_t ZyDisMemoryDataSource_GetPosition(const ZyDisBaseDataSourceContext *ctx); - -/** - * @copydoc ZyDisBaseDataSource_SetPosition - */ -static bool ZyDisMemoryDataSource_SetPosition(ZyDisBaseDataSourceContext *ctx, uint64_t position); - -/* ZyDisCustomDataSource -------------------------------------------------------------------------- */ - -typedef struct _ZyDisCustomDataSource -{ - ZyDisBaseDataSource super; - ZyDisBaseDataSource_DestructionCallback userDestruct; // may be NULL -} ZyDisCustomDataSource; - -/** - * @brief Constructor. - * @param ctx The context. - * @param inputPeekCb The callback peeking the next input byte. - * @param inputNextCb The callback consuming the next input byte. - * @param isEndOfInputCb The callback determining if the end of input was reached. - * @param getPositionCb The callback obtaining the current input position. - * @param setPositionCb The callback setting the current input position. - * @param destructionCb The destruction callback. May be @c NULL. - */ -static void ZyDisCustomDataSource_Construct(ZyDisBaseDataSourceContext *ctx, - ZyDisBaseDataSource_InputCallback inputPeekCb, - ZyDisBaseDataSource_InputCallback inputNextCb, - ZyDisBaseDataSource_IsEndOfInputCallback isEndOfInputCb, - ZyDisBaseDataSource_GetPositionCallback getPositionCb, - ZyDisBaseDataSource_SetPositionCallback setPositionCb, - ZyDisBaseDataSource_DestructionCallback destructionCb); - -/** - * @brief Destructor. - * @param The context. - */ -static void ZyDisCustomDataSource_Destruct(ZyDisBaseDataSourceContext *ctx); - -/* ZyDisInstructionDecoder ------------------------------------------------------------------------ */ - -typedef struct _ZyDisInstructionDecoder -{ - ZyDisBaseDataSourceContext *dataSource; - ZyDisDisassemblerMode disassemblerMode; - ZyDisInstructionSetVendor preferredVendor; - uint64_t instructionPointer; -} ZyDisInstructionDecoder; - -typedef enum _ZyDisRegisterClass /* : uint8_t */ -{ - RC_GENERAL_PURPOSE, - RC_MMX, - RC_CONTROL, - RC_DEBUG, - RC_SEGMENT, - RC_XMM -} ZyDisRegisterClass; - -/** - * @brief Reads the next byte from the data source. - * @param ctx The context. - * @param info The instruction info. - * @return The current input byte. If the result is zero, you should always check the - * @c flags field of the @c info parameter for error flags. - * Possible error values are @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. - * This method does NOT increase the current input position or the @c length field of the - * @c info parameter. - */ -static uint8_t ZyDisInstructionDecoder_InputPeek(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @brief Reads the next byte(s) from the data source. - * @param ctx The context. - * @param info The instruction info. - * @return The current input data. If the result is zero, you should always check the - * @c flags field of the @c info parameter for error flags. - * Possible error values are @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. - * This method increases the current input position and the @c length field of the @info - * parameter. This method also appends the new byte(s) to to @c data field of the @c info - * parameter. - */ -static uint8_t ZyDisInstructionDecoder_InputNext8(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @copydoc ZyDisInstructionDecoder_InputNext8 - */ -static uint16_t ZyDisInstructionDecoder_InputNext16(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @copydoc ZyDisInstructionDecoder_InputNext8 - */ -static uint32_t ZyDisInstructionDecoder_InputNext32(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @copydoc ZyDisInstructionDecoder_InputNext8 - */ -static uint64_t ZyDisInstructionDecoder_InputNext64(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @brief Returns the current input byte. - * @param ctx The context. - * @return The current input byte. - * The current input byte is set everytime the @c ZyDisInstructionDecoder_InputPeek or - * @c ZyDisInstructionDecoder_InputNextXX function is called. - */ -static uint8_t ZyDisInstructionDecoder_InputCurrent(const ZyDisInstructionDecoderContext *ctx); - -/** - * @brief Decodes a register operand. - * @param ctx The context. - * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. - * @param registerClass The register class to use. - * @param registerId The register id. - * @param operandSize The defined size of the operand. - * @return @c true if it succeeds, @c false if it fails. - */ -static bool ZyDisInstructionDecoder_DecodeRegisterOperand(const ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, ZyDisRegisterClass registerClass, - uint8_t registerId, ZyDisDefinedOperandSize operandSize); - -/** - * @brief Decodes a register/memory operand. - * @param ctx The context. - * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. - * @param registerClass The register class to use. - * @param operandSize The defined size of the operand. - * @return @c true if it succeeds, @c false if it fails. - */ -static bool ZyDisInstructionDecoder_DecodeRegisterMemoryOperand(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, ZyDisRegisterClass registerClass, - ZyDisDefinedOperandSize operandSize); - -/** - * @brief Decodes an immediate operand. - * @param ctx The context. - * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. - * @param operandSize The defined size of the operand. - * @return @c true if it succeeds, @c false if it fails. - */ -static bool ZyDisInstructionDecoder_DecodeImmediate(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, ZyDisDefinedOperandSize operandSize); - -/** - * @brief Decodes a displacement operand. - * @param ctx The context. - * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. - * @param size The size of the displacement data. - * @return @c true if it succeeds, @c false if it fails. - */ -static bool ZyDisInstructionDecoder_DecodeDisplacement(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, uint8_t size); - -/** - * @brief Decodes the ModRM field of the instruction. - * @param ctx The context. - * @param The @c ZyDisInstructionInfo struct that receives the decoded data. - * @return @c true if it succeeds, @c false if it fails. - * This method reads an additional input byte. - */ -static bool ZyDisInstructionDecoder_DecodeModrm(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @brief Decodes the SIB field of the instruction. - * @param ctx The context. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. - * @return @c true if it succeeds, @c false if it fails.1 - * This method reads an additional input byte. - */ -static bool ZyDisInstructionDecoder_DecodeSIB(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @brief Decodes VEX prefix of the instruction. - * @param ctx The context. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. - * @return @c true if it succeeds, @c false if it fails. - * This method takes the current input byte to determine the vex prefix type and reads one or - * two additional input bytes on demand. - */ -static bool ZyDisInstructionDecoder_DecodeVex(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @brief Returns the effective operand size. - * @param ctx The context. - * @param info The instruction info. - * @param operandSize The defined operand size. - * @return The effective operand size. - */ -static uint16_t ZyDisInstructionDecoder_GetEffectiveOperandSize( - const ZyDisInstructionDecoderContext *ctx, const ZyDisInstructionInfo *info, - ZyDisDefinedOperandSize operandSize); - -/** - * @brief Decodes all instruction operands. - * @param ctx The context. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. - * @return @c true if it succeeds, @c false if it fails. - */ -static bool ZyDisInstructionDecoder_DecodeOperands(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @brief Decodes the specified instruction operand. - * @param ctx The context. - * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. - * @param operandType The defined type of the operand. - * @param operandSize The defined size of the operand. - * @return @c true if it succeeds, @c false if it fails. - */ -static bool ZyDisInstructionDecoder_DecodeOperand(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, ZyDisDefinedOperandType operandType, - ZyDisDefinedOperandSize operandSize); - -/** - * @brief Resolves the effective operand and address mode of the instruction. - * @param ctx The context. - * @param info The @c ZyDisInstructionInfo struct that receives the effective operand and - * address mode. - * @remarks This function requires a non-null value in the @c instrDefinition field of the - * @c info struct. - */ -static void ZyDisInstructionDecoder_ResolveOperandAndAddressMode( - const ZyDisInstructionDecoderContext *ctx, ZyDisInstructionInfo *info); - -/** - * @brief Calculates the effective REX/VEX.w, r, x, b, l values. - * @param ctx The context. - * @param info The @c ZyDisInstructionInfo struct that receives the effective operand and - * address mode. - * @remarks This method requires a non-null value in the @c instrDefinition field of the - * @c info struct. - */ -static void ZyDisInstructionDecoder_CalculateEffectiveRexVexValues( - const ZyDisInstructionDecoderContext *ctx, ZyDisInstructionInfo *info); - -/** - * @brief Collects and decodes optional instruction prefixes. - * @param ctx The context. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. - * @return @c true if it succeeds, @c false if it fails. - */ -static bool ZyDisInstructionDecoder_DecodePrefixes(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/** - * @brief Collects and decodes the instruction opcodes using the opcode tree. - * @param ctx The context. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. - * @return @c true if it succeeds, @c false if it fails. - */ -static bool ZyDisInstructionDecoder_DecodeOpcode(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info); - -/* Implementation ============================================================================== */ - -/* ZyDisBaseDataSource ---------------------------------------------------------------------------- */ - -static void ZyDisBaseDataSource_Construct(ZyDisBaseDataSourceContext *ctx) -{ - ZyDisBaseDataSource *thiz = ZyDisBaseDataSource_thiz(ctx); - memset(thiz, 0, sizeof(*thiz)); -} - -static void ZyDisBaseDataSource_Destruct(ZyDisBaseDataSourceContext *ctx) -{ - ZYDIS_UNUSED(ctx); -} - -void ZyDisBaseDataSource_Release(ZyDisBaseDataSourceContext *ctx) -{ - ZyDisBaseDataSource *thiz = ZyDisBaseDataSource_thiz(ctx); - - if (thiz->destruct) - { - thiz->destruct(ctx); - } - - free(thiz); - free(ctx); -} - -uint8_t ZyDisBaseDataSource_InputPeek(ZyDisBaseDataSourceContext *ctx, ZyDisInstructionInfo *info) -{ - ZyDisBaseDataSource *thiz = ZyDisBaseDataSource_thiz(ctx); - - if (info->length == 15) - { - info->flags |= IF_ERROR_LENGTH; - return 0; - } - if (ZyDisBaseDataSource_IsEndOfInput(ctx)) - { - info->flags |= IF_ERROR_END_OF_INPUT; - return 0; - } - - thiz->currentInput = thiz->internalInputPeek(ctx); - return thiz->currentInput; -} - -uint8_t ZyDisBaseDataSource_InputNext8(ZyDisBaseDataSourceContext *ctx, ZyDisInstructionInfo *info) -{ - ZyDisBaseDataSource *thiz = ZyDisBaseDataSource_thiz(ctx); - - if (info->length == 15) - { - info->flags |= IF_ERROR_LENGTH; - return 0; - } - if (ZyDisBaseDataSource_IsEndOfInput(ctx)) - { - info->flags |= IF_ERROR_END_OF_INPUT; - return 0; - } - thiz->currentInput = thiz->internalInputNext(ctx); - info->data[info->length] = thiz->currentInput; - info->length++; - return thiz->currentInput; -} - -#define ZyDisBASEDATASOURCE_INPUTNEXT_N(n) \ - uint##n##_t ZyDisBaseDataSource_InputNext##n( \ - ZyDisBaseDataSourceContext *ctx, ZyDisInstructionInfo *info) \ - { \ - uint##n##_t result = 0; \ - for (unsigned i = 0; i < (sizeof(uint##n##_t) / sizeof(uint8_t)); ++i) \ - { \ - uint##n##_t b = ZyDisBaseDataSource_InputNext8(ctx, info); \ - if (!b && (info->flags & IF_ERROR_MASK)) \ - { \ - return 0; \ - } \ - result |= (b << (i * 8)); \ - } \ - return result; \ - } - -ZyDisBASEDATASOURCE_INPUTNEXT_N(16) -ZyDisBASEDATASOURCE_INPUTNEXT_N(32) -ZyDisBASEDATASOURCE_INPUTNEXT_N(64) -#undef ZyDisBASEDATASOURCE_INPUTNEXT_N - -uint8_t ZyDisBaseDataSource_InputCurrent(const ZyDisBaseDataSourceContext *ctx) -{ - return ZyDisBaseDataSource_cthiz(ctx)->currentInput; -} - -bool ZyDisBaseDataSource_IsEndOfInput(const ZyDisBaseDataSourceContext *ctx) -{ - assert(ZyDisBaseDataSource_cthiz(ctx)->isEndOfInput); - return ZyDisBaseDataSource_cthiz(ctx)->isEndOfInput(ctx); -} - -uint64_t ZyDisBaseDataSource_GetPosition(const ZyDisBaseDataSourceContext *ctx) -{ - assert(ZyDisBaseDataSource_cthiz(ctx)->getPosition); - return ZyDisBaseDataSource_cthiz(ctx)->getPosition(ctx); -} - -bool ZyDisBaseDataSource_SetPosition(ZyDisBaseDataSourceContext *ctx, uint64_t position) -{ - assert(ZyDisBaseDataSource_thiz(ctx)->setPosition); - return ZyDisBaseDataSource_thiz(ctx)->setPosition(ctx, position); -} - -/* ZyDisMemoryDataSource -------------------------------------------------------------------------- */ - -void ZyDisMemoryDataSource_Construct( - ZyDisBaseDataSourceContext *ctx, const void* buffer, size_t bufferLen) -{ - ZyDisBaseDataSource_Construct(ctx); - ZyDisMemoryDataSource *thiz = ZyDisMemoryDataSource_thiz(ctx); - - thiz->super.destruct = &ZyDisMemoryDataSource_Destruct; - thiz->super.internalInputPeek = &ZyDisMemoryDataSource_InternalInputPeek; - thiz->super.internalInputNext = &ZyDisMemoryDataSource_InternalInputNext; - thiz->super.isEndOfInput = &ZyDisMemoryDataSource_IsEndOfInput; - thiz->super.getPosition = &ZyDisMemoryDataSource_GetPosition; - thiz->super.setPosition = &ZyDisMemoryDataSource_SetPosition; - - thiz->inputBuffer = buffer; - thiz->inputBufferLen = bufferLen; - thiz->inputBufferPos = 0; -} - -void ZyDisMemoryDataSource_Destruct(ZyDisBaseDataSourceContext *ctx) -{ - // Nothing to destruct ourselfes, just call parent destructor - ZyDisBaseDataSource_Destruct(ctx); -} - -ZyDisBaseDataSourceContext* ZyDisMemoryDataSource_Create( - const void* buffer, size_t bufferLen) -{ - ZyDisMemoryDataSource *thiz = malloc(sizeof(ZyDisMemoryDataSource)); - ZyDisBaseDataSourceContext *ctx = malloc(sizeof(ZyDisBaseDataSourceContext)); - - if (!thiz || !ctx) - { - if (thiz) - { - free(thiz); - } - if (ctx) - { - free(ctx); - } - - return NULL; - } - - ctx->d.type = TYPE_MEMORYDATASOURCE; - ctx->d.ptr = thiz; - - ZyDisMemoryDataSource_Construct(ctx, buffer, bufferLen); - - return ctx; -} - -static uint8_t ZyDisMemoryDataSource_InternalInputPeek(ZyDisBaseDataSourceContext *ctx) -{ - ZyDisMemoryDataSource *thiz = ZyDisMemoryDataSource_thiz(ctx); - return *((const uint8_t*)thiz->inputBuffer + thiz->inputBufferPos); -} - -static uint8_t ZyDisMemoryDataSource_InternalInputNext(ZyDisBaseDataSourceContext *ctx) -{ - ZyDisMemoryDataSource *thiz = ZyDisMemoryDataSource_thiz(ctx); - ++thiz->inputBufferPos; - return *((const uint8_t*)thiz->inputBuffer + thiz->inputBufferPos - 1); -} - -static bool ZyDisMemoryDataSource_IsEndOfInput(const ZyDisBaseDataSourceContext *ctx) -{ - const ZyDisMemoryDataSource *thiz = ZyDisMemoryDataSource_cthiz(ctx); - return (thiz->inputBufferPos >= thiz->inputBufferLen); -} - -static uint64_t ZyDisMemoryDataSource_GetPosition(const ZyDisBaseDataSourceContext *ctx) -{ - return ZyDisMemoryDataSource_cthiz(ctx)->inputBufferPos; -} - -static bool ZyDisMemoryDataSource_SetPosition(ZyDisBaseDataSourceContext *ctx, uint64_t position) -{ - ZyDisMemoryDataSource *thiz = ZyDisMemoryDataSource_thiz(ctx); - thiz->inputBufferPos = position; - return thiz->super.isEndOfInput(ctx); -} - -/* ZyDisCustomDataSource -------------------------------------------------------------------------- */ - -static void ZyDisCustomDataSource_Construct(ZyDisBaseDataSourceContext *ctx, - ZyDisBaseDataSource_InputCallback inputPeekCb, - ZyDisBaseDataSource_InputCallback inputNextCb, - ZyDisBaseDataSource_IsEndOfInputCallback isEndOfInputCb, - ZyDisBaseDataSource_GetPositionCallback getPositionCb, - ZyDisBaseDataSource_SetPositionCallback setPositionCb, - ZyDisBaseDataSource_DestructionCallback destructionCb) -{ - ZyDisBaseDataSource_Construct(ctx); - - ZyDisCustomDataSource *thiz = ZyDisCustomDataSource_thiz(ctx); - thiz->super.destruct = &ZyDisCustomDataSource_Destruct; - thiz->super.internalInputPeek = inputPeekCb; - thiz->super.internalInputNext = inputNextCb; - thiz->super.isEndOfInput = isEndOfInputCb; - thiz->super.getPosition = getPositionCb; - thiz->super.setPosition = setPositionCb; - - thiz->userDestruct = destructionCb; -} - -static void ZyDisCustomDataSource_Destruct(ZyDisBaseDataSourceContext *ctx) -{ - ZyDisCustomDataSource *thiz = ZyDisCustomDataSource_thiz(ctx); - - if (thiz->userDestruct) - { - thiz->userDestruct(ctx); - } - - ZyDisBaseDataSource_Destruct(ctx); -} - -ZyDisBaseDataSourceContext* ZyDisCustomDataSource_Create( - ZyDisBaseDataSource_InputCallback inputPeekCb, - ZyDisBaseDataSource_InputCallback inputNextCb, - ZyDisBaseDataSource_IsEndOfInputCallback isEndOfInputCb, - ZyDisBaseDataSource_GetPositionCallback getPositionCb, - ZyDisBaseDataSource_SetPositionCallback setPositionCb, - ZyDisBaseDataSource_DestructionCallback destructionCb) -{ - ZyDisCustomDataSource *thiz = malloc(sizeof(ZyDisCustomDataSource)); - ZyDisBaseDataSourceContext *ctx = malloc(sizeof(ZyDisBaseDataSourceContext)); - - if (!thiz || !ctx) - { - if (thiz) - { - free(thiz); - } - if (ctx) - { - free(ctx); - } - - return NULL; - } - - ctx->d.type = TYPE_CUSTOMDATASOURCE; - ctx->d.ptr = thiz; - - ZyDisCustomDataSource_Construct(ctx, inputPeekCb, inputNextCb, isEndOfInputCb, getPositionCb, - setPositionCb, destructionCb); - - return ctx; -} - -/* ZyDisInstructionDecoder ------------------------------------------------------------------------ */ - -void ZyDisInstructionDecoder_Construct(ZyDisInstructionDecoderContext *ctx, - ZyDisBaseDataSourceContext *input, ZyDisDisassemblerMode disassemblerMode, - ZyDisInstructionSetVendor preferredVendor, uint64_t instructionPointer) -{ - ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_thiz(ctx); - - thiz->dataSource = input; - thiz->disassemblerMode = disassemblerMode; - thiz->preferredVendor = preferredVendor; - thiz->instructionPointer = instructionPointer; -} - -void ZyDisInstructionDecoder_Destruct(ZyDisInstructionDecoderContext *ctx) -{ - ZYDIS_UNUSED(ctx); -} - -ZyDisInstructionDecoderContext* ZyDisInstructionDecoder_Create(void) -{ - return ZyDisInstructionDecoder_CreateEx(NULL, DM_M32BIT, ISV_ANY, 0); -} - -ZyDisInstructionDecoderContext* ZyDisInstructionDecoder_CreateEx(ZyDisBaseDataSourceContext *input, - ZyDisDisassemblerMode disassemblerMode, ZyDisInstructionSetVendor preferredVendor, - uint64_t instructionPointer) -{ - ZyDisInstructionDecoder *thiz = malloc(sizeof(ZyDisInstructionDecoder)); - ZyDisInstructionDecoderContext *ctx = malloc(sizeof(ZyDisInstructionDecoderContext)); - - if (!thiz || !ctx) - { - if (thiz) - { - free(thiz); - } - if (ctx) - { - free(ctx); - } - - return NULL; - } - - ctx->d.ptr = thiz; - ctx->d.type = TYPE_INSTRUCTIONDECODER; - - ZyDisInstructionDecoder_Construct(ctx, input, disassemblerMode, - preferredVendor, instructionPointer); - - return ctx; -} - -void ZyDisInstructionDecoder_Release(ZyDisInstructionDecoderContext *ctx) -{ - ZyDisInstructionDecoder_Destruct(ctx); - - free(ctx->d.ptr); - free(ctx); -} - -static uint8_t ZyDisInstructionDecoder_InputPeek( - ZyDisInstructionDecoderContext *ctx, ZyDisInstructionInfo *info) -{ - ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_thiz(ctx); - - if (!thiz->dataSource) - { - info->flags |= IF_ERROR_END_OF_INPUT; - return 0; - } - - return ZyDisBaseDataSource_InputPeek(thiz->dataSource, info); -} - -#define ZyDisINSTRUCTIONDECODER_INPUTNEXT_N(n) \ - static uint##n##_t ZyDisInstructionDecoder_InputNext##n( \ - ZyDisInstructionDecoderContext *ctx, ZyDisInstructionInfo *info) \ - { \ - ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_thiz(ctx); \ - \ - if (!thiz->dataSource) \ - { \ - info->flags |= IF_ERROR_END_OF_INPUT; \ - return 0; \ - } \ - \ - return ZyDisBaseDataSource_InputNext##n(thiz->dataSource, info); \ - } - -ZyDisINSTRUCTIONDECODER_INPUTNEXT_N(8) -ZyDisINSTRUCTIONDECODER_INPUTNEXT_N(16) -ZyDisINSTRUCTIONDECODER_INPUTNEXT_N(32) -ZyDisINSTRUCTIONDECODER_INPUTNEXT_N(64) -#undef ZyDisINSTRUCTIONDECODER_INPUTNEXT_N - -static uint8_t ZyDisInstructionDecoder_InputCurrent(const ZyDisInstructionDecoderContext *ctx) -{ - const ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_cthiz(ctx); - - if (!thiz->dataSource) - { - return 0; - } - - return ZyDisBaseDataSource_InputCurrent(thiz->dataSource); -} - -ZyDisBaseDataSourceContext* ZyDisInstructionDecoder_GetDataSource( - const ZyDisInstructionDecoderContext *ctx) -{ - return ZyDisInstructionDecoder_cthiz(ctx)->dataSource; -} - -void ZyDisInstructionDecoder_SetDataSource( - ZyDisInstructionDecoderContext *ctx, ZyDisBaseDataSourceContext *input) -{ - ZyDisInstructionDecoder_thiz(ctx)->dataSource = input; -} - -ZyDisDisassemblerMode ZyDisInstructionDecoder_GetDisassemblerMode( - const ZyDisInstructionDecoderContext *ctx) -{ - return ZyDisInstructionDecoder_cthiz(ctx)->disassemblerMode; -} - -void ZyDisInstructionDecoder_SetDisassemblerMode(ZyDisInstructionDecoderContext *ctx, - ZyDisDisassemblerMode disassemblerMode) -{ - ZyDisInstructionDecoder_thiz(ctx)->disassemblerMode = disassemblerMode; -} - -ZyDisInstructionSetVendor ZyDisInstructionDecoder_GetPreferredVendor( - const ZyDisInstructionDecoderContext *ctx) -{ - return ZyDisInstructionDecoder_cthiz(ctx)->preferredVendor; -} - -void ZyDisInstructionDecoder_SetPreferredVendor(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionSetVendor preferredVendor) -{ - ZyDisInstructionDecoder_thiz(ctx)->preferredVendor = preferredVendor; -} - -uint64_t ZyDisInstructionDecoder_GetInstructionPointer( - const ZyDisInstructionDecoderContext *ctx) -{ - return ZyDisInstructionDecoder_cthiz(ctx)->instructionPointer; -} - -void ZyDisInstructionDecoder_SetInstructionPointer(ZyDisInstructionDecoderContext *ctx, - uint64_t instructionPointer) -{ - ZyDisInstructionDecoder_thiz(ctx)->instructionPointer = instructionPointer; -} - -static bool ZyDisInstructionDecoder_DecodeRegisterOperand( - const ZyDisInstructionDecoderContext *ctx, ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, - ZyDisRegisterClass registerClass, uint8_t registerId, ZyDisDefinedOperandSize operandSize) -{ - ZyDisRegister reg = REG_NONE; - uint16_t size = ZyDisInstructionDecoder_GetEffectiveOperandSize(ctx, info, operandSize); - const ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_cthiz(ctx); - - switch (registerClass) - { - case RC_GENERAL_PURPOSE: - switch (size) - { - case 64: - reg = REG_RAX + registerId; - break; - case 32: - reg = REG_EAX + registerId; - break; - case 16: - reg = REG_AX + registerId; - break; - case 8: - // TODO: Only REX? Or VEX too? - if (thiz->disassemblerMode == DM_M64BIT && (info->flags & IF_PREFIX_REX)) - { - if (registerId >= 4) - { - reg = REG_SPL + (registerId - 4); - } - else - { - reg = REG_AL + registerId; - } - } - else - { - reg = REG_AL + registerId; - } - break; - case 0: - // TODO: Error? - reg = REG_NONE; - break; - default: - assert(0); - } - break; - case RC_MMX: - reg = REG_MM0 + (registerId & 0x07); - break; - case RC_CONTROL: - reg = REG_CR0 + registerId; - break; - case RC_DEBUG: - reg = REG_DR0 + registerId; - break; - case RC_SEGMENT: - if ((registerId & 7) > 5) - { - info->flags |= IF_ERROR_OPERAND; - return false; - } - reg = REG_ES + (registerId & 0x07); - break; - case RC_XMM: - reg = registerId + ((size == 256) ? REG_YMM0 : REG_XMM0); - break; - default: - assert(0); - } - - operand->type = OPTYPE_REGISTER; - operand->base = reg; - operand->size = size; - - return true; -} - -static bool ZyDisInstructionDecoder_DecodeRegisterMemoryOperand(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, ZyDisRegisterClass registerClass, - ZyDisDefinedOperandSize operandSize) -{ - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - assert(info->flags & IF_MODRM); - // Decode register operand - if (info->modrm_mod == 3) - { - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, registerClass, - info->modrm_rm_ext, operandSize); - } - // Decode memory operand - uint8_t offset = 0; - operand->type = OPTYPE_MEMORY; - operand->size = ZyDisInstructionDecoder_GetEffectiveOperandSize(ctx, info, operandSize); - switch (info->address_mode) - { - case 16: - { - static const ZyDisRegister bases[] = { - REG_BX, REG_BX, REG_BP, REG_BP, - REG_SI, REG_DI, REG_BP, REG_BX }; - static const ZyDisRegister indices[] = { - REG_SI, REG_DI, REG_SI, REG_DI, - REG_NONE, REG_NONE, REG_NONE, REG_NONE }; - operand->base = bases[info->modrm_rm_ext & 0x07]; - operand->index = indices[info->modrm_rm_ext & 0x07]; - operand->scale = 0; - if (info->modrm_mod == 0 && info->modrm_rm_ext == 6) { - offset = 16; - operand->base = REG_NONE; - } else if (info->modrm_mod == 1) { - offset = 8; - } else if (info->modrm_mod == 2) { - offset = 16; - } - } - break; - case 32: - operand->base = REG_EAX + info->modrm_rm_ext; - switch (info->modrm_mod) - { - case 0: - if (info->modrm_rm_ext == 5) - { - operand->base = REG_NONE; - offset = 32; - } - break; - case 1: - offset = 8; - break; - case 2: - offset = 32; - break; - default: - assert(0); - } - if ((info->modrm_rm_ext & 0x07) == 4) - { - if (!ZyDisInstructionDecoder_DecodeSIB(ctx, info)) - { - return false; - } - operand->base = REG_EAX + info->sib_base_ext; - operand->index = REG_EAX + info->sib_index_ext; - operand->scale = (1 << info->sib_scale) & ~1; - if (operand->index == REG_ESP) - { - operand->index = REG_NONE; - operand->scale = 0; - } - if (operand->base == REG_EBP) - { - if (info->modrm_mod == 0) - { - operand->base = REG_NONE; - } - - if (info->modrm_mod == 1) - { - offset = 8; - } - else - { - offset = 32; - } - } - } - else - { - operand->index = REG_NONE; - operand->scale = 0; - } - break; - case 64: - operand->base = REG_RAX + info->modrm_rm_ext; - switch (info->modrm_mod) - { - case 0: - if ((info->modrm_rm_ext & 0x07) == 5) - { - info->flags |= IF_RELATIVE; - operand->base = REG_RIP; - offset = 32; - } - break; - case 1: - offset = 8; - break; - case 2: - offset = 32; - break; - default: - assert(0); - } - if ((info->modrm_rm_ext & 0x07) == 4) - { - if (!ZyDisInstructionDecoder_DecodeSIB(ctx, info)) - { - return false; - } - - operand->base = REG_RAX + info->sib_base_ext; - operand->index = REG_RAX + info->sib_index_ext; - if (operand->index == REG_RSP) - { - operand->index = REG_NONE; - operand->scale = 0; - } - else - { - operand->scale = (1 << info->sib_scale) & ~1; - } - - if ((operand->base == REG_RBP) || (operand->base == REG_R13)) - { - if (info->modrm_mod == 0) - { - operand->base = REG_NONE; - } - - if (info->modrm_mod == 1) - { - offset = 8; - } - else - { - offset = 32; - } - } - } else - { - operand->index = REG_NONE; - operand->scale = 0; - } - break; - } - if (offset) - { - if (!ZyDisInstructionDecoder_DecodeDisplacement(ctx, info, operand, offset)) - { - return false; - } - } else - { - operand->offset = 0; - } - return true; -} - -static bool ZyDisInstructionDecoder_DecodeImmediate(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, ZyDisDefinedOperandSize operandSize) -{ - operand->type = OPTYPE_IMMEDIATE; - operand->size = ZyDisInstructionDecoder_GetEffectiveOperandSize(ctx, info, operandSize); - switch (operand->size) - { - case 8: - operand->lval.ubyte = ZyDisInstructionDecoder_InputNext8(ctx, info); - break; - case 16: - operand->lval.uword = ZyDisInstructionDecoder_InputNext16(ctx, info); - break; - case 32: - operand->lval.udword = ZyDisInstructionDecoder_InputNext32(ctx, info); - break; - case 64: - operand->lval.uqword = ZyDisInstructionDecoder_InputNext64(ctx, info); - break; - default: - // TODO: Maybe return false instead of assert - assert(0); - } - if (!operand->lval.uqword && (info->flags & IF_ERROR_MASK)) - { - return false; - } - return true; -} - -static bool ZyDisInstructionDecoder_DecodeDisplacement(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, uint8_t size) -{ - switch (size) - { - case 8: - operand->offset = 8; - operand->lval.ubyte = ZyDisInstructionDecoder_InputNext8(ctx, info); - break; - case 16: - operand->offset = 16; - operand->lval.uword = ZyDisInstructionDecoder_InputNext16(ctx, info); - break; - case 32: - operand->offset = 32; - operand->lval.udword = ZyDisInstructionDecoder_InputNext32(ctx, info); - break; - case 64: - operand->offset = 64; - operand->lval.uqword = ZyDisInstructionDecoder_InputNext64(ctx, info); - break; - default: - // TODO: Maybe return false instead of assert - assert(0); - } - if (!operand->lval.uqword && (info->flags & IF_ERROR_MASK)) - { - return false; - } - return true; -} - -static bool ZyDisInstructionDecoder_DecodeModrm(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info) -{ - if (!(info->flags & IF_MODRM)) - { - info->modrm = ZyDisInstructionDecoder_InputNext8(ctx, info); - if (!info->modrm && (info->flags & IF_ERROR_MASK)) - { - return false; - } - info->flags |= IF_MODRM; - info->modrm_mod = (info->modrm >> 6) & 0x03; - info->modrm_reg = (info->modrm >> 3) & 0x07; - info->modrm_rm = (info->modrm >> 0) & 0x07; - } - - // This function might get called multiple times during the opcode- and the operand decoding, - // but the effective REX/VEX fields are not initialized before the end of the opcode - // decoding process-> As the extended values are only used for the operand decoding, we - // should have no problems-> - info->modrm_reg_ext = (info->eff_rexvex_r << 3) | info->modrm_reg; - info->modrm_rm_ext = (info->eff_rexvex_b << 3) | info->modrm_rm; - return true; -} - -static bool ZyDisInstructionDecoder_DecodeSIB(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info) -{ - assert(info->flags & IF_MODRM); - assert((info->modrm_rm & 0x7) == 4); - - if (!(info->flags & IF_SIB)) - { - info->sib = ZyDisInstructionDecoder_InputNext8(ctx, info); - if (!info->sib && (info->flags & IF_ERROR_MASK)) - { - return false; - } - info->flags |= IF_SIB; - info->sib_scale = (info->sib >> 6) & 0x03; - info->sib_index = (info->sib >> 3) & 0x07; - info->sib_base = (info->sib >> 0) & 0x07; - // The @c decodeSib method is only called during the operand decoding, so updating the - // extended values at this point should be safe-> - info->sib_index_ext = (info->eff_rexvex_x << 3) | info->sib_index; - info->sib_base_ext = (info->eff_rexvex_b << 3) | info->sib_base; - } - - return true; -} - -static bool ZyDisInstructionDecoder_DecodeVex(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info) -{ - if (!(info->flags & IF_PREFIX_VEX)) - { - info->vex_op = ZyDisInstructionDecoder_InputCurrent(ctx); - switch (info->vex_op) - { - case 0xC4: - info->vex_b1 = ZyDisInstructionDecoder_InputNext8(ctx, info); - if (!info->vex_b1 || (info->flags & IF_ERROR_MASK)) - { - return false; - } - - info->vex_b2 = ZyDisInstructionDecoder_InputNext8(ctx, info); - if (!info->vex_b2 || (info->flags & IF_ERROR_MASK)) - { - return false; - } - - info->vex_r = (info->vex_b1 >> 7) & 0x01; - info->vex_x = (info->vex_b1 >> 6) & 0x01; - info->vex_b = (info->vex_b1 >> 5) & 0x01; - info->vex_m_mmmm = (info->vex_b1 >> 0) & 0x1F; - info->vex_w = (info->vex_b2 >> 7) & 0x01; - info->vex_vvvv = (info->vex_b2 >> 3) & 0x0F; - info->vex_l = (info->vex_b2 >> 2) & 0x01; - info->vex_pp = (info->vex_b2 >> 0) & 0x03; - break; - case 0xC5: - info->vex_b1 = ZyDisInstructionDecoder_InputNext8(ctx, info); - if (!info->vex_b1 || (info->flags & IF_ERROR_MASK)) - { - return false; - } - - info->vex_r = (info->vex_b1 >> 7) & 0x01; - info->vex_x = 1; - info->vex_b = 1; - info->vex_m_mmmm = 1; - info->vex_w = 0; - info->vex_vvvv = (info->vex_b1 >> 3) & 0x0F; - info->vex_l = (info->vex_b1 >> 2) & 0x01; - info->vex_pp = (info->vex_b1 >> 0) & 0x03; - break; - default: - assert(0); - } - - if (info->vex_m_mmmm > 3) - { - // TODO: Add proper error flag - info->flags |= IF_ERROR_MASK; - return false; - } - info->flags |= IF_PREFIX_VEX; - } - return true; -} - -static uint16_t ZyDisInstructionDecoder_GetEffectiveOperandSize( - const ZyDisInstructionDecoderContext *ctx, const ZyDisInstructionInfo *info, - ZyDisDefinedOperandSize operandSize) -{ - const ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_cthiz(ctx); - - switch (operandSize) - { - case DOS_NA: - return 0; - case DOS_Z: - return (info->operand_mode == 16) ? 16 : 32; - case DOS_V: - return info->operand_mode; - case DOS_Y: - return (info->operand_mode == 16) ? 32 : info->operand_mode; - case DOS_X: - assert(info->vex_op != 0); - return (info->eff_vex_l) ? - ZyDisInstructionDecoder_GetEffectiveOperandSize(ctx, info, DOS_QQ) : - ZyDisInstructionDecoder_GetEffectiveOperandSize(ctx, info, DOS_DQ); - case DOS_RDQ: - return (thiz->disassemblerMode == DM_M64BIT) ? 64 : 32; - default: - return ZyDisGetSimpleOperandSize(operandSize); - } -} - -static bool ZyDisInstructionDecoder_DecodeOperands(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info) -{ - assert(info->instrDefinition); - // Always try to decode the first operand - if (!ZyDisInstructionDecoder_DecodeOperand(ctx, info, &info->operand[0], - info->instrDefinition->operand[0].type, info->instrDefinition->operand[0].size)) - { - return false; - } - - // Decode other operands on demand - for (unsigned int i = 1; i < 4; ++i) - { - if (info->operand[i - 1].type != OPTYPE_NONE) - { - if (!ZyDisInstructionDecoder_DecodeOperand(ctx, info, &info->operand[i], - info->instrDefinition->operand[i].type, info->instrDefinition->operand[i].size)) - { - return false; - } - } - } - - // Update operand access modes - for (unsigned int i = 0; i < 4; ++i) - { - if (info->operand[i].type != OPTYPE_NONE) - { - info->operand[i].access_mode = OPACCESSMODE_READ; - if (i == 0) - { - if (info->instrDefinition->flags & IDF_OPERAND1_WRITE) - { - info->operand[0].access_mode = OPACCESSMODE_WRITE; - } - else if (info->instrDefinition->flags & IDF_OPERAND1_READWRITE) - { - info->operand[0].access_mode = OPACCESSMODE_READWRITE; - } - } - else if (i == 1) - { - if (info->instrDefinition->flags & IDF_OPERAND2_WRITE) - { - info->operand[1].access_mode = OPACCESSMODE_WRITE; - } - else if (info->instrDefinition->flags & IDF_OPERAND2_READWRITE) - { - info->operand[1].access_mode = OPACCESSMODE_READWRITE; - } - } - } - } - - return true; -} - -static bool ZyDisInstructionDecoder_DecodeOperand(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info, ZyDisOperandInfo *operand, ZyDisDefinedOperandType operandType, - ZyDisDefinedOperandSize operandSize) -{ - const ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_thiz(ctx); - - operand->type = OPTYPE_NONE; - switch (operandType) - { - case DOT_NONE: - break; - case DOT_A: - operand->type = OPTYPE_POINTER; - if (info->operand_mode == 16) - { - operand->size = 32; - operand->lval.ptr.off = ZyDisInstructionDecoder_InputNext16(ctx, info); - operand->lval.ptr.seg = ZyDisInstructionDecoder_InputNext16(ctx, info); - } - else - { - operand->size = 48; - operand->lval.ptr.off = ZyDisInstructionDecoder_InputNext32(ctx, info); - operand->lval.ptr.seg = ZyDisInstructionDecoder_InputNext16(ctx, info); - } - - if ((!operand->lval.ptr.off || !operand->lval.ptr.seg) && (info->flags & IF_ERROR_MASK)) - { - return false; - } - - break; - case DOT_C: - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_CONTROL, - info->modrm_reg_ext, operandSize); - case DOT_D: - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_DEBUG, - info->modrm_reg_ext, operandSize); - case DOT_F: - // TODO: FAR flag - case DOT_M: - // ModR/M byte may refer only to a register - if (info->modrm_mod == 3) - { - info->flags |= IF_ERROR_OPERAND; - return false; - } - case DOT_E: - return ZyDisInstructionDecoder_DecodeRegisterMemoryOperand(ctx, info, operand, - RC_GENERAL_PURPOSE, operandSize); - case DOT_G: - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_GENERAL_PURPOSE, - info->modrm_reg_ext, operandSize); - case DOT_H: - assert(info->vex_op != 0); - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_XMM, - (0xF & ~info->vex_vvvv), operandSize); - case DOT_sI: - operand->signed_lval = true; - case DOT_I: - return ZyDisInstructionDecoder_DecodeImmediate(ctx, info, operand, operandSize); - case DOT_I1: - operand->type = OPTYPE_CONSTANT; - operand->lval.udword = 1; - break; - case DOT_J: - if (!ZyDisInstructionDecoder_DecodeImmediate(ctx, info, operand, operandSize)) - { - return false; - } - operand->type = OPTYPE_REL_IMMEDIATE; - operand->signed_lval = true; - info->flags |= IF_RELATIVE; - break; - case DOT_L: - { - assert(info->vex_op != 0); - uint8_t imm = ZyDisInstructionDecoder_InputNext8(ctx, info); - if (!imm && (info->flags & IF_ERROR_MASK)) - { - return false; - } - uint8_t mask = (thiz->disassemblerMode == DM_M64BIT) ? 0xF : 0x7; - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_XMM, - mask & (imm >> 4), operandSize); - } - case DOT_MR: - return ZyDisInstructionDecoder_DecodeRegisterMemoryOperand(ctx, info, operand, - RC_GENERAL_PURPOSE, info->modrm_mod == 3 ? - ZyDisGetComplexOperandRegSize(operandSize) : ZyDisGetComplexOperandMemSize(operandSize)); - case DOT_MU: - return ZyDisInstructionDecoder_DecodeRegisterMemoryOperand(ctx, info, operand, RC_XMM, - info->modrm_mod == 3 ? - ZyDisGetComplexOperandRegSize(operandSize) : ZyDisGetComplexOperandMemSize(operandSize)); - case DOT_N: - // ModR/M byte may refer only to memory - if (info->modrm_mod != 3) - { - info->flags |= IF_ERROR_OPERAND; - return false; - } - case DOT_Q: - return ZyDisInstructionDecoder_DecodeRegisterMemoryOperand(ctx, info, operand, RC_MMX, - operandSize); - case DOT_O: - operand->type = OPTYPE_MEMORY; - operand->base = REG_NONE; - operand->index = REG_NONE; - operand->scale = 0; - operand->size = ZyDisInstructionDecoder_GetEffectiveOperandSize(ctx, info, operandSize); - return ZyDisInstructionDecoder_DecodeDisplacement(ctx, info, operand, info->address_mode); - case DOT_P: - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_MMX, - info->modrm_reg_ext, operandSize); - case DOT_R: - // ModR/M byte may refer only to memory - if (info->modrm_mod != 3) - { - info->flags |= IF_ERROR_OPERAND; - return false; - } - return ZyDisInstructionDecoder_DecodeRegisterMemoryOperand(ctx, info, operand, - RC_GENERAL_PURPOSE, operandSize); - case DOT_S: - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_SEGMENT, - info->modrm_reg_ext, operandSize); - case DOT_U: - // ModR/M byte may refer only to memory - if (info->modrm_mod != 3) - { - info->flags |= IF_ERROR_OPERAND; - return false; - } - case DOT_W: - return ZyDisInstructionDecoder_DecodeRegisterMemoryOperand(ctx, info, operand, RC_XMM, - operandSize); - case DOT_V: - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_XMM, - info->modrm_reg_ext, operandSize); - case DOT_R0: - case DOT_R1: - case DOT_R2: - case DOT_R3: - case DOT_R4: - case DOT_R5: - case DOT_R6: - case DOT_R7: - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_GENERAL_PURPOSE, - (uint8_t)((info->eff_rexvex_b << 3) | operandType - DOT_R0), operandSize); - case DOT_AL: - case DOT_AX: - case DOT_EAX: - case DOT_RAX: - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_GENERAL_PURPOSE, - 0, operandSize); - case DOT_CL: - case DOT_CX: - case DOT_ECX: - case DOT_RCX: - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_GENERAL_PURPOSE, - 1, operandSize); - case DOT_DL: - case DOT_DX: - case DOT_EDX: - case DOT_RDX: - return ZyDisInstructionDecoder_DecodeRegisterOperand(ctx, info, operand, RC_GENERAL_PURPOSE, - 2, operandSize); - case DOT_ES: - case DOT_CS: - case DOT_SS: - case DOT_DS: - case DOT_FS: - case DOT_GS: - if (thiz->disassemblerMode == DM_M64BIT) - { - if ((operandType != DOT_FS) && (operandType != DOT_GS)) - { - info->flags |= IF_ERROR_OPERAND; - return false; - } - } - operand->type = OPTYPE_REGISTER; - operand->base = (uint16_t)(operandType - DOT_ES + REG_ES); - operand->size = 16; - break; - case DOT_ST0: - case DOT_ST1: - case DOT_ST2: - case DOT_ST3: - case DOT_ST4: - case DOT_ST5: - case DOT_ST6: - case DOT_ST7: - operand->type = OPTYPE_REGISTER; - operand->base = (uint16_t)(operandType - DOT_ST0 + REG_ST0); - operand->size = 80; - break; - default: - assert(0); - } - return true; -} - -static void ZyDisInstructionDecoder_ResolveOperandAndAddressMode( - const ZyDisInstructionDecoderContext *ctx, ZyDisInstructionInfo *info) -{ - const ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_cthiz(ctx); - - assert(info->instrDefinition); - switch (thiz->disassemblerMode) - { - case DM_M16BIT: - info->operand_mode = (info->flags & IF_PREFIX_OPERAND_SIZE) ? 32 : 16; - info->address_mode = (info->flags & IF_PREFIX_ADDRESS_SIZE) ? 32 : 16; - break; - case DM_M32BIT: - info->operand_mode = (info->flags & IF_PREFIX_OPERAND_SIZE) ? 16 : 32; - info->address_mode = (info->flags & IF_PREFIX_ADDRESS_SIZE) ? 16 : 32; - break; - case DM_M64BIT: - if (info->eff_rexvex_w) - { - info->operand_mode = 64; - } - else if ((info->flags & IF_PREFIX_OPERAND_SIZE)) - { - info->operand_mode = 16; - } - else - { - info->operand_mode = (info->instrDefinition->flags & IDF_DEFAULT_64) ? 64 : 32; - } - - info->address_mode = (info->flags & IF_PREFIX_ADDRESS_SIZE) ? 32 : 64; - break; - default: - assert(0); - } -} - -static void ZyDisInstructionDecoder_CalculateEffectiveRexVexValues( - const ZyDisInstructionDecoderContext *ctx, ZyDisInstructionInfo *info) -{ - ZYDIS_UNUSED(ctx); - - assert(info->instrDefinition); - uint8_t rex = info->rex; - if (info->flags & IF_PREFIX_VEX) - { - switch (info->vex_op) - { - case 0xC4: - rex = ((~(info->vex_b1 >> 5) & 0x07) | ((info->vex_b2 >> 4) & 0x08)); - break; - case 0xC5: - rex = (~(info->vex_b1 >> 5)) & 4; - break; - default: - assert(0); - } - } - rex &= (info->instrDefinition->flags & 0x000F); - info->eff_rexvex_w = (rex >> 3) & 0x01; - info->eff_rexvex_r = (rex >> 2) & 0x01; - info->eff_rexvex_x = (rex >> 1) & 0x01; - info->eff_rexvex_b = (rex >> 0) & 0x01; - info->eff_vex_l = info->vex_l && (info->instrDefinition->flags & IDF_ACCEPTS_VEXL); -} - -static bool ZyDisInstructionDecoder_DecodePrefixes(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info) -{ - ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_thiz(ctx); - - bool done = false; - do - { - switch (ZyDisInstructionDecoder_InputPeek(ctx, info)) - { - case 0xF0: - info->flags |= IF_PREFIX_LOCK; - break; - case 0xF2: - // REPNZ and REPZ are mutally exclusive. The one that comes later has precedence. - info->flags |= IF_PREFIX_REP; - info->flags &= ~IF_PREFIX_REPNE; - break; - case 0xF3: - // REPNZ and REPZ are mutally exclusive. The one that comes later has precedence. - info->flags |= IF_PREFIX_REP; - info->flags &= ~IF_PREFIX_REPNE; - break; - case 0x2E: - info->flags |= IF_PREFIX_SEGMENT; - info->segment = REG_CS; - break; - case 0x36: - info->flags |= IF_PREFIX_SEGMENT; - info->segment = REG_SS; - break; - case 0x3E: - info->flags |= IF_PREFIX_SEGMENT; - info->segment = REG_DS; - break; - case 0x26: - info->flags |= IF_PREFIX_SEGMENT; - info->segment = REG_ES; - break; - case 0x64: - info->flags |= IF_PREFIX_SEGMENT; - info->segment = REG_FS; - break; - case 0x65: - info->flags |= IF_PREFIX_SEGMENT; - info->segment = REG_GS; - break; - case 0x66: - info->flags |= IF_PREFIX_OPERAND_SIZE; - break; - case 0x67: - info->flags |= IF_PREFIX_ADDRESS_SIZE; - break; - default: - if ((thiz->disassemblerMode == DM_M64BIT) && - (ZyDisInstructionDecoder_InputCurrent(ctx) & 0xF0) == 0x40) - { - info->flags |= IF_PREFIX_REX; - info->rex = ZyDisInstructionDecoder_InputCurrent(ctx); - } - else - { - done = true; - } - break; - } - // Increase the input offset, if a prefix was found - if (!done) - { - if (!ZyDisInstructionDecoder_InputNext8(ctx, info) && (info->flags & IF_ERROR_MASK)) - { - return false; - } - } - } while (!done); - // TODO: Check for multiple prefixes of the same group - // Parse REX Prefix - if (info->flags & IF_PREFIX_REX) - { - info->rex_w = (info->rex >> 3) & 0x01; - info->rex_r = (info->rex >> 2) & 0x01; - info->rex_x = (info->rex >> 1) & 0x01; - info->rex_b = (info->rex >> 0) & 0x01; - } - return true; -} - -static bool ZyDisInstructionDecoder_DecodeOpcode(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info) -{ - ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_thiz(ctx); - - // Read first opcode byte - if (!ZyDisInstructionDecoder_InputNext8(ctx, info) && (info->flags & IF_ERROR_MASK)) - { - return false; - } - - // Update instruction info - info->opcode[0] = ZyDisInstructionDecoder_InputCurrent(ctx); - info->opcode_length = 1; - - // Iterate through opcode tree - ZyDisOpcodeTreeNode node = ZyDisGetOpcodeTreeChild(ZyDisGetOpcodeTreeRoot(), - ZyDisInstructionDecoder_InputCurrent(ctx)); - ZyDisOpcodeTreeNodeType nodeType; - - do - { - uint16_t index = 0; - nodeType = ZyDisGetOpcodeNodeType(node); - switch (nodeType) - { - case OTNT_INSTRUCTION_DEFINITION: - { - // Check for invalid instruction - if (ZyDisGetOpcodeNodeValue(node) == 0) - { - info->flags |= IF_ERROR_INVALID; - return false; - } - // Get instruction definition - const ZyDisInstructionDefinition *instrDefinition = ZyDisGetInstructionDefinition(node); - // Check for invalid 64 bit instruction - if ((thiz->disassemblerMode == DM_M64BIT) && - (instrDefinition->flags & IDF_INVALID_64)) - { - info->flags |= IF_ERROR_INVALID_64; - return false; - } - // Update instruction info - info->instrDefinition = instrDefinition; - info->mnemonic = instrDefinition->mnemonic; - // Update effective REX/VEX values - ZyDisInstructionDecoder_CalculateEffectiveRexVexValues(ctx, info); - // Resolve operand and address mode - ZyDisInstructionDecoder_ResolveOperandAndAddressMode(ctx, info); - // Decode operands - if (!ZyDisInstructionDecoder_DecodeOperands(ctx, info)) - { - return false; - } - } - return true; - case OTNT_TABLE: - // Read next opcode byte - if (!ZyDisInstructionDecoder_InputNext8(ctx, info) && (info->flags & IF_ERROR_MASK)) - { - return false; - } - // Update instruction info - assert((info->opcode_length > 0) && (info->opcode_length < 3)); - info->opcode[info->opcode_length] = ZyDisInstructionDecoder_InputCurrent(ctx); - info->opcode_length++; - // Set child node index for next iteration - index = ZyDisInstructionDecoder_InputCurrent(ctx); - break; - case OTNT_MODRM_MOD: - // Decode modrm byte - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - index = (info->modrm_mod == 0x3) ? 1 : 0; - break; - case OTNT_MODRM_REG: - // Decode modrm byte - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - index = info->modrm_reg; - break; - case OTNT_MODRM_RM: - // Decode modrm byte - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - index = info->modrm_rm; - break; - case OTNT_MANDATORY: - // Check if there are any prefixes present - if (info->flags & IF_PREFIX_REP) - { - index = 1; // F2 - } - else if (info->flags & IF_PREFIX_REPNE) - { - index = 2; // F3 - } - else if (info->flags & IF_PREFIX_OPERAND_SIZE) - { - index = 3; // 66 - } - - if (ZyDisGetOpcodeTreeChild(node, index) == 0) - { - index = 0; - } - - if (index && (ZyDisGetOpcodeTreeChild(node, index) != 0)) - { - // Remove REP and REPNE prefix - info->flags &= ~IF_PREFIX_REP; - info->flags &= ~IF_PREFIX_REPNE; - // Remove OPERAND_SIZE prefix, if it was used as mandatory prefix for the - // instruction - if (index == 3) - { - info->flags &= ~IF_PREFIX_OPERAND_SIZE; - } - } - break; - case OTNT_X87: - // Decode modrm byte - if (!ZyDisInstructionDecoder_DecodeModrm(ctx, info)) - { - return false; - } - index = info->modrm - 0xC0; - break; - case OTNT_ADDRESS_SIZE: - switch (thiz->disassemblerMode) - { - case DM_M16BIT: - index = (info->flags & IF_PREFIX_ADDRESS_SIZE) ? 1 : 0; - break; - case DM_M32BIT: - index = (info->flags & IF_PREFIX_ADDRESS_SIZE) ? 0 : 1; - break; - case DM_M64BIT: - index = (info->flags & IF_PREFIX_ADDRESS_SIZE) ? 1 : 2; - break; - default: - assert(0); - } - break; - case OTNT_OPERAND_SIZE: - switch (thiz->disassemblerMode) - { - case DM_M16BIT: - index = (info->flags & IF_PREFIX_OPERAND_SIZE) ? 1 : 0; - break; - case DM_M32BIT: - index = (info->flags & IF_PREFIX_OPERAND_SIZE) ? 0 : 1; - break; - case DM_M64BIT: - index = (info->rex_w) ? 2 : ((info->flags & IF_PREFIX_OPERAND_SIZE) ? 0 : 1); - break; - default: - assert(0); - } - break; - case OTNT_MODE: - index = (thiz->disassemblerMode != DM_M64BIT) ? 0 : 1; - break; - case OTNT_VENDOR: - switch (thiz->preferredVendor) - { - case ISV_ANY: - index = (ZyDisGetOpcodeTreeChild(node, 0) != 0) ? 0 : 1; - break; - case ISV_INTEL: - index = 1; - break; - case ISV_AMD: - index = 0; - break; - default: - assert(0); - } - break; - case OTNT_AMD3DNOW: - { - // As all 3dnow instructions got the same operands and flag definitions, we just - // decode a random instruction and determine the specific opcode later-> - assert(ZyDisGetOpcodeTreeChild(node, 0x0C) != 0); - const ZyDisInstructionDefinition *instrDefinition = - ZyDisGetInstructionDefinition(ZyDisGetOpcodeTreeChild(node, 0x0C)); - // Update instruction info - info->instrDefinition = instrDefinition; - info->mnemonic = instrDefinition->mnemonic; - // Update effective REX/VEX values - ZyDisInstructionDecoder_CalculateEffectiveRexVexValues(ctx, info); - // Resolve operand and address mode - ZyDisInstructionDecoder_ResolveOperandAndAddressMode(ctx, info); - // Decode operands - if (!ZyDisInstructionDecoder_DecodeOperands(ctx, info)) - { - return false; - } - // Read the actual 3dnow opcode - info->opcode[2] = ZyDisInstructionDecoder_InputNext8(ctx, info); - if (!info->opcode[2] && (info->flags & IF_ERROR_MASK)) - { - return false; - } - // Update instruction info - instrDefinition = - ZyDisGetInstructionDefinition(ZyDisGetOpcodeTreeChild(node, info->opcode[2])); - if (!instrDefinition || - (instrDefinition->mnemonic == MNEM_INVALID)) - { - info->flags |= IF_ERROR_INVALID; - return false; - } - info->instrDefinition = instrDefinition; - info->mnemonic = instrDefinition->mnemonic; - // Update operand access modes - for (unsigned int i = 0; i < 4; ++i) - { - if (info->operand[i].type != OPTYPE_NONE) - { - info->operand[i].access_mode = OPACCESSMODE_READ; - } - } - if (info->operand[0].type != OPTYPE_NONE) - { - if (info->instrDefinition->flags & IDF_OPERAND1_WRITE) - { - info->operand[0].access_mode = OPACCESSMODE_WRITE; - } - else if (info->instrDefinition->flags & IDF_OPERAND1_READWRITE) - { - info->operand[0].access_mode = OPACCESSMODE_READWRITE; - } - } - if (info->operand[1].type != OPTYPE_NONE) - { - if (info->instrDefinition->flags & IDF_OPERAND2_WRITE) - { - info->operand[1].access_mode = OPACCESSMODE_WRITE; - } - else if (info->instrDefinition->flags & IDF_OPERAND2_READWRITE) - { - info->operand[1].access_mode = OPACCESSMODE_READWRITE; - } - } - // Terminate loop - return true; - } - case OTNT_VEX: - if ((thiz->disassemblerMode == DM_M64BIT) - || (((ZyDisInstructionDecoder_InputCurrent(ctx) >> 6) & 0x03) == 0x03)) - { - // Decode vex prefix - if (!ZyDisInstructionDecoder_DecodeVex(ctx, info)) - { - return false; - } - - // Update instruction info (error cases are checked by the @c decodeVex method) - switch (info->vex_m_mmmm) - { - case 1: - info->opcode_length = 1; - info->opcode[0] = 0x0F; - break; - case 2: - info->opcode_length = 2; - info->opcode[0] = 0x0F; - info->opcode[1] = 0x38; - break; - case 3: - info->opcode_length = 2; - info->opcode[0] = 0x0F; - info->opcode[1] = 0x3A; - break; - } - - // Set child node index for next iteration - index = info->vex_m_mmmm + (info->vex_pp << 2); - } - else - { - index = 0; - } - break; - case OTNT_VEXW: - assert(info->flags & IF_PREFIX_VEX); - index = info->vex_w; - break; - case OTNT_VEXL: - assert(info->flags & IF_PREFIX_VEX); - index = info->vex_l; - break; - default: - assert(0); - } - node = ZyDisGetOpcodeTreeChild(node, index); - } while (nodeType != OTNT_INSTRUCTION_DEFINITION); - - return false; -} - -bool ZyDisInstructionDecoder_DecodeInstruction(ZyDisInstructionDecoderContext *ctx, - ZyDisInstructionInfo *info) -{ - ZyDisInstructionDecoder *thiz = ZyDisInstructionDecoder_thiz(ctx); - - // Clear instruction info - memset(info, 0, sizeof(*info)); - - // Set disassembler mode flags - switch (thiz->disassemblerMode) - { - case DM_M16BIT: - info->flags |= IF_DISASSEMBLER_MODE_16; - break; - case DM_M32BIT: - info->flags |= IF_DISASSEMBLER_MODE_32; - break; - case DM_M64BIT: - info->flags |= IF_DISASSEMBLER_MODE_64; - break; - default: - assert(0); - } - - // Set instruction address - info->instrAddress = thiz->instructionPointer; - - // Decode - if (!ZyDisInstructionDecoder_DecodePrefixes(ctx, info) - || !ZyDisInstructionDecoder_DecodeOpcode(ctx, info)) - { - goto DecodeError; - } - - // SWAPGS is only valid in 64 bit mode - if ((info->mnemonic == MNEM_SWAPGS) && - (thiz->disassemblerMode != DM_M64BIT)) - { - info->flags &= IF_ERROR_INVALID; - goto DecodeError; - } - - // Handle aliases - if (info->mnemonic == MNEM_XCHG) - { - if ((info->operand[0].type == OPTYPE_REGISTER && - info->operand[0].base == REG_AX && - info->operand[1].type == OPTYPE_REGISTER && - info->operand[1].base == REG_AX) || - (info->operand[0].type == OPTYPE_REGISTER && - info->operand[0].base == REG_EAX && - info->operand[1].type == OPTYPE_REGISTER && - info->operand[1].base == REG_EAX)) - { - info->mnemonic = MNEM_NOP; - info->operand[0].type = OPTYPE_NONE; - info->operand[1].type = OPTYPE_NONE; - info->operand[0].access_mode = OPACCESSMODE_NA; - info->operand[1].access_mode = OPACCESSMODE_NA; - } - } - - if ((info->mnemonic == MNEM_NOP) && (info->flags & IF_PREFIX_REP)) - { - info->mnemonic = MNEM_PAUSE; - info->flags &= ~IF_PREFIX_REP; - } - - // Increment instruction pointer - thiz->instructionPointer += info->length; - // Set instruction pointer - info->instrPointer = thiz->instructionPointer; - return true; - -DecodeError: - ++thiz->instructionPointer; - - // Backup all error flags, the instruction length and the instruction address - uint32_t flags = info->flags & (IF_ERROR_MASK | 0x00000007); - uint8_t length = info->length; - uint8_t firstByte = info->data[0]; - uint64_t instrAddress = info->instrAddress; - - // Clear instruction info - memset(info, 0, sizeof(*info)); - - // Restore saved values - info->flags = flags; - info->length = length; - info->data[0] = firstByte; - info->instrAddress = instrAddress; - info->instrDefinition = ZyDisGetInstructionDefinition(0); - - // Decrement the input position, if more than one byte was read from the input data - // source while decoding the invalid instruction - if (info->length != 1) - { - ZyDisBaseDataSource_SetPosition(thiz->dataSource, - ZyDisBaseDataSource_GetPosition(thiz->dataSource) - info->length + 1); - info->length = 1; - } - - // Return with error, if the end of the input source was reached while decoding the - // invalid instruction - if (info->flags & IF_ERROR_END_OF_INPUT) - { - info->length = 0; - return false; - } - - return true; -} - -/* ============================================================================================= */ \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisInstructionFormatter.c b/VerteronDisassemblerEngine/ZyDisInstructionFormatter.c deleted file mode 100644 index a95c2c7..0000000 --- a/VerteronDisassemblerEngine/ZyDisInstructionFormatter.c +++ /dev/null @@ -1,1136 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 19. March 2014 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#include "ZyDisInstructionFormatter.h" -#include "ZyDisDisassemblerUtils.h" -#include "ZyDisInternalHelpers.h" -#include "ZyDisOpcodeTableInternal.h" - -#include -#include -#include -#include -#include - -/* Interface =================================================================================== */ - -/* ZyDisBaseSymbolResolver ------------------------------------------------------------------------ */ - -typedef void (*ZyDisBaseSymbolResolver_DestructionCallback)( - ZyDisBaseSymbolResolverContext *ctx); -typedef const char* (*ZyDisBaseSymbolResolver_ResolveSymbolCallback)( - ZyDisBaseSymbolResolverContext *ctx, - const ZyDisInstructionInfo *info, - uint64_t address, - uint64_t *offset); - -typedef struct _ZyDisBaseSymbolResolver -{ - ZyDisBaseSymbolResolver_DestructionCallback destruct; // may be NULL - ZyDisBaseSymbolResolver_ResolveSymbolCallback resolveCallback; -} ZyDisBaseSymbolResolver; - -/** - * @brief Constructor. - * @param ctx The context. - */ -static void ZyDisBaseSymbolResolver_Construct(ZyDisBaseSymbolResolverContext *ctx); - -/** - * @brief Destructor. - * @param ctx The context. - */ -static void ZyDisBaseSymbolResolver_Destruct(ZyDisBaseSymbolResolverContext *ctx); - -/* ZyDisBaseInstructionFormatter ------------------------------------------------------------------ */ - -typedef void(*ZyDisBaseInstructionFormatter_DestructionCallback)( - ZyDisBaseInstructionFormatterContext *ctx); - -typedef struct _ZyDisBaseInstructionFormatter -{ - ZyDisBaseInstructionFormatter_DestructionCallback destruct; // may be NULL - ZyDisBaseInstructionFormatter_InternalFormatInstructionCallback internalFormat; - ZyDisBaseSymbolResolverContext *symbolResolver; - char *outputBuffer; - size_t outputBufferCapacity; - size_t outputStringLen; - bool outputUppercase; -} ZyDisBaseInstructionFormatter; - -/** - * @brief Constructor. - * @param ctx The context. - * @param symbolResolver The symbol resolver to use when formatting addresses. - */ -static void ZyDisBaseInstructionFormatter_Construct(ZyDisBaseInstructionFormatterContext *ctx, - ZyDisBaseSymbolResolverContext *symbolResolver); - -/** - * @brief Destructor. - * @param ctx The context. - */ -static void ZyDisBaseInstructionFormatter_Destruct(ZyDisBaseInstructionFormatterContext *ctx); - -/*static void ZyDisBaseInstructionFormatter_OutputSetUppercase( - ZyDisBaseInstructionFormatterContext *ctx, bool uppercase);*/ - -/** - * @brief Returns the string representation of a given register. - * @param ctx The context. - * @param reg The register. - * @return The string representation of the given register. - */ -static char const* ZyDisBaseInstructionFormatter_RegisterToString( - const ZyDisBaseInstructionFormatterContext *ctx, ZyDisRegister reg); - -/** - * @brief Resolves a symbol. - * @param ctx The context. - * @param info The instruction info. - * @param address The address. - * @param offset Reference to an unsigned 64 bit integer that receives an offset relative - * to the base address of the symbol. - * @return The name of the symbol, if the symbol was found, @c NULL if not. - */ -static char const* ZyDisBaseInstructionFormatter_ResolveSymbol( - const ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info, uint64_t address, - uint64_t *offset); - -/** - * @brief Clears the output string buffer. - * @param ctx The context. - */ -static void ZyDisBaseInstructionFormatter_OutputClear(ZyDisBaseInstructionFormatterContext *ctx); - -/** - * @brief Returns the content of the output string buffer. - * @param ctx The context. - * @return Pointer to the content of the ouput string buffer. - */ -static char const* ZyDisBaseInstructionFormatter_OutputString(ZyDisBaseInstructionFormatterContext *ctx); - -/** - * @brief Appends text to the ouput string buffer. - * @param ctx The context. - * @param text The text. - */ -static void ZyDisBaseInstructionFormatter_OutputAppend(ZyDisBaseInstructionFormatterContext *ctx, - char const *text); - -/** - * @brief Appends formatted text to the output string buffer. - * @param ctx The context. - * @param format The format string. - */ -static void ZyDisBaseInstructionFormatter_OutputAppendFormatted( - ZyDisBaseInstructionFormatterContext *ctx, char const *format, ...); - -/** - * @brief Appends a formatted address to the output string buffer. - * @param ctx The context. - * @param info The instruction info. - * @param address The address. - * @param resolveSymbols If this parameter is true, the function will try to display a - * smybol name instead of the numeric value. - */ -static void ZyDisBaseInstructionFormatter_OutputAppendAddress(ZyDisBaseInstructionFormatterContext *ctx, - const ZyDisInstructionInfo *info, uint64_t address, bool resolveSymbols); - -/** - * @brief Appends a formatted immediate value to the output string buffer. - * @param ctx The context. - * @param info The instruction info. - * @param operand The immediate operand. - * @param resolveSymbols If this parameter is true, the function will try to display a - * smybol name instead of the numeric value. - */ -static void ZyDisBaseInstructionFormatter_OutputAppendImmediate( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info, - const ZyDisOperandInfo *operand, bool resolveSymbols); - -/** - * @brief Appends a formatted memory displacement value to the output string buffer. - * @param ctx The context. - * @param operand The memory operand. - */ -static void ZyDisBaseInstructionFormatter_OutputAppendDisplacement( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisOperandInfo *operand); - -/* ZyDisCustomSymbolResolver ---------------------------------------------------------------------- */ - -typedef struct _ZyDisCustomSymbolResolver -{ - ZyDisBaseSymbolResolver super; - ZyDisCustomSymbolResolver_ResolveSymbolCallback resolve; - void *userData; -} ZyDisCustomSymbolResolver; - -/** - * @brief Constructor. - * @param ctx The context. - * @param resolverCb The resolver callback. - * @param userData User defined data passed to the resolver callback. - */ -static void ZyDisCustomSymbolResolver_Construct(ZyDisBaseSymbolResolverContext *ctx, - ZyDisCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData); - -/** - * @brief Destructor. - * @param ctx The context. - */ -static void ZyDisCustomSymbolResolver_Destruct(ZyDisBaseSymbolResolverContext *ctx); - -/** - * @copydoc ZyDisBaseSymbolResolver_Resolve - */ -static const char* ZyDisCustomSymbolResolver_Resolve(ZyDisBaseSymbolResolverContext *ctx, - const ZyDisInstructionInfo *info, uint64_t address, uint64_t *offset); - -/* ZyDisIntelInstructionFormatter ----------------------------------------------------------------- */ - -typedef struct _ZyDisIntelInstructionFormatter -{ - ZyDisBaseInstructionFormatter super; -} ZyDisIntelInstructionFormatter; - -/** - * @brief Constructor. - * @param ctx The context. - * @param symbolResolver The symbol resolver used to resolve addresses. - * @param userData User defined data passed to the resolver callback. - */ -static void ZyDisIntelInstructionFormatter_Construct(ZyDisBaseInstructionFormatterContext *ctx, - ZyDisBaseSymbolResolverContext *symbolResolver); - -/** - * @brief Destructor. - * @param ctx The context. - */ -static void ZyDisIntelInstructionFormatter_Destruct(ZyDisBaseInstructionFormatterContext *ctx); - -/** - * @brief Appends an operand cast to the output string buffer. - * @param ctx The context. - * @param operand The operand. - */ -static void ZyDisIntelInstructionFormatter_OutputAppendOperandCast( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisOperandInfo *operand); - -/** - * @brief Formats the specified operand and appends it to the output buffer. - * @param ctx The context. - * @param info The instruction info. - * @param operand The operand. - */ -static void ZyDisIntelInstructionFormatter_FormatOperand(ZyDisBaseInstructionFormatterContext *ctx, - const ZyDisInstructionInfo *info, const ZyDisOperandInfo *operand); - -/** - * @coypdoc ZyDisBaseInstructionFormatter_InternalFormatInstruction - */ -static void ZyDisIntelInstructionFormatter_InternalFormatInstruction( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info); - -/* ZyDisCustomInstructionFormatter ---------------------------------------------------------------- */ - -typedef struct _ZyDisCustomInstructionFormatter -{ - ZyDisBaseInstructionFormatter super; -} ZyDisCustomInstructionFormatter; - -/** - * @brief Contructor. - * @param ctx The context. - * @param formatInsnCb The callback formatting the instruction. - */ -static void ZyDisCustomInstructionFormatter_Construct(ZyDisBaseInstructionFormatterContext *ctx, - ZyDisBaseInstructionFormatter_InternalFormatInstructionCallback formatInsnCb); - -/** - * @brief Destructor. - * @param ctx The context. - */ -static void ZyDisCustomInstructionFormatter_Destruct(ZyDisBaseInstructionFormatterContext *ctx); - -/* Implementation ============================================================================== */ - -/* ZyDisBaseSymbolResolver ------------------------------------------------------------------------ */ - -void ZyDisBaseSymbolResolver_Construct(ZyDisBaseSymbolResolverContext *ctx) -{ - memset(ZyDisBaseSymbolResolver_thiz(ctx), 0, sizeof(ZyDisBaseSymbolResolver)); -} - -void ZyDisBaseSymbolResolver_Destruct(ZyDisBaseSymbolResolverContext *ctx) -{ - ZYDIS_UNUSED(ctx); -} - -void ZyDisBaseSymbolResolver_Release(ZyDisBaseSymbolResolverContext *ctx) -{ - ZyDisBaseSymbolResolver *thiz = ZyDisBaseSymbolResolver_thiz(ctx); - - if (thiz->destruct) - { - thiz->destruct(ctx); - } - - free(thiz); - free(ctx); -} - -const char* ZyDisBaseSymbolResolver_ResolveSymbol(ZyDisBaseSymbolResolverContext *ctx, - const ZyDisInstructionInfo *info, uint64_t address, uint64_t *offset) -{ - assert(ZyDisBaseSymbolResolver_thiz(ctx)->resolveCallback); - return ZyDisBaseSymbolResolver_thiz(ctx)->resolveCallback(ctx, info, address, offset); -} - -/* ZyDisCustomSymbolResolver ---------------------------------------------------------------------- */ - -static void ZyDisCustomSymbolResolver_Construct(ZyDisBaseSymbolResolverContext *ctx, - ZyDisCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData) -{ - ZyDisBaseSymbolResolver_Construct(ctx); - ZyDisCustomSymbolResolver *thiz = ZyDisCustomSymbolResolver_thiz(ctx); - - thiz->super.destruct = &ZyDisCustomSymbolResolver_Destruct; - thiz->super.resolveCallback = &ZyDisCustomSymbolResolver_Resolve; - - thiz->resolve = resolverCb; - thiz->userData = userData; -} - -static void ZyDisCustomSymbolResolver_Destruct(ZyDisBaseSymbolResolverContext *ctx) -{ - ZyDisBaseSymbolResolver_Destruct(ctx); -} - -ZyDisBaseSymbolResolverContext* ZyDisCustomSymbolResolver_Create( - ZyDisCustomSymbolResolver_ResolveSymbolCallback resolverCb, void *userData) -{ - ZyDisCustomSymbolResolver *thiz = malloc(sizeof(ZyDisCustomSymbolResolver)); - ZyDisBaseSymbolResolverContext *ctx = malloc(sizeof(ZyDisBaseSymbolResolverContext)); - - if (!thiz || !ctx) - { - if (thiz) - { - free(thiz); - } - if (ctx) - { - free(ctx); - } - - return NULL; - } - - ctx->d.type = TYPE_CUSTOMSYMBOLRESOLVER; - ctx->d.ptr = thiz; - - ZyDisCustomSymbolResolver_Construct(ctx, resolverCb, userData); - - return ctx; -} - -static const char* ZyDisCustomSymbolResolver_Resolve(ZyDisBaseSymbolResolverContext *ctx, - const ZyDisInstructionInfo *info, uint64_t address, uint64_t *offset) -{ - ZyDisCustomSymbolResolver *thiz = ZyDisCustomSymbolResolver_thiz(ctx); - return thiz->resolve(info, address, offset, thiz->userData); -} - -/* ZyDisBaseInstructionFormatter ------------------------------------------------------------------ */ - -static const char* ZyDisBaseInstructionFormatter_registerStrings[] = -{ - /* 8 bit general purpose registers */ - "al", "cl", "dl", "bl", - "ah", "ch", "dh", "bh", - "spl", "bpl", "sil", "dil", - "r8b", "r9b", "r10b", "r11b", - "r12b", "r13b", "r14b", "r15b", - /* 16 bit general purpose registers */ - "ax", "cx", "dx", "bx", - "sp", "bp", "si", "di", - "r8w", "r9w", "r10w", "r11w", - "r12w", "r13w", "r14w", "r15w", - /* 32 bit general purpose registers */ - "eax", "ecx", "edx", "ebx", - "esp", "ebp", "esi", "edi", - "r8d", "r9d", "r10d", "r11d", - "r12d", "r13d", "r14d", "r15d", - /* 64 bit general purpose registers */ - "rax", "rcx", "rdx", "rbx", - "rsp", "rbp", "rsi", "rdi", - "r8", "r9", "r10", "r11", - "r12", "r13", "r14", "r15", - /* segment registers */ - "es", "cs", "ss", - "ds", "fs", "gs", - /* control registers */ - "cr0", "cr1", "cr2", "cr3", - "cr4", "cr5", "cr6", "cr7", - "cr8", "cr9", "cr10", "cr11", - "cr12", "cr13", "cr14", "cr15", - /* debug registers */ - "dr0", "dr1", "dr2", "dr3", - "dr4", "dr5", "dr6", "dr7", - "dr8", "dr9", "dr10", "dr11", - "dr12", "dr13", "dr14", "dr15", - /* mmx registers */ - "mm0", "mm1", "mm2", "mm3", - "mm4", "mm5", "mm6", "mm7", - /* x87 registers */ - "st0", "st1", "st2", "st3", - "st4", "st5", "st6", "st7", - /* extended multimedia registers */ - "xmm0", "xmm1", "xmm2", "xmm3", - "xmm4", "xmm5", "xmm6", "xmm7", - "xmm8", "xmm9", "xmm10", "xmm11", - "xmm12", "xmm13", "xmm14", "xmm15", - /* 256 bit multimedia registers */ - "ymm0", "ymm1", "ymm2", "ymm3", - "ymm4", "ymm5", "ymm6", "ymm7", - "ymm8", "ymm9", "ymm10", "ymm11", - "ymm12", "ymm13", "ymm14", "ymm15", - /* instruction pointer register */ - "rip" -}; - -static void ZyDisBaseInstructionFormatter_Construct(ZyDisBaseInstructionFormatterContext *ctx, - ZyDisBaseSymbolResolverContext *symbolResolver) -{ - ZyDisBaseInstructionFormatter *thiz = ZyDisBaseInstructionFormatter_thiz(ctx); - - thiz->destruct = &ZyDisBaseInstructionFormatter_Destruct; - thiz->internalFormat = NULL; - thiz->symbolResolver = symbolResolver; - thiz->outputStringLen = 0; - thiz->outputUppercase = false; - thiz->outputBufferCapacity = 256; - thiz->outputBuffer = malloc(thiz->outputBufferCapacity); -} - -static void ZyDisBaseInstructionFormatter_Destruct(ZyDisBaseInstructionFormatterContext *ctx) -{ - ZyDisBaseInstructionFormatter *thiz = ZyDisBaseInstructionFormatter_thiz(ctx); - - if (thiz->outputBuffer) - { - free(thiz->outputBuffer); - thiz->outputBuffer = NULL; - } -} - -void ZyDisBaseInstructionFormatter_Release(ZyDisBaseInstructionFormatterContext *ctx) -{ - ZyDisBaseInstructionFormatter *thiz = ZyDisBaseInstructionFormatter_thiz(ctx); - - if (thiz->destruct) - { - thiz->destruct(ctx); - } - - free(thiz); - free(ctx); -} - -/* -static void ZyDisBaseInstructionFormatter_OutputSetUppercase(ZyDisBaseInstructionFormatterContext *ctx, - bool uppercase) -{ - ZyDisBaseInstructionFormatter_thiz(ctx)->outputUppercase = uppercase; -} -*/ - -static char const* ZyDisBaseInstructionFormatter_RegisterToString( - const ZyDisBaseInstructionFormatterContext *ctx, ZyDisRegister reg) -{ - ZYDIS_UNUSED(ctx); - - if (reg == REG_NONE) - { - return "error"; - } - return ZyDisBaseInstructionFormatter_registerStrings[reg - 1]; -} - -static char const* ZyDisBaseInstructionFormatter_ResolveSymbol( - const ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info, - uint64_t address, uint64_t *offset) -{ - const ZyDisBaseInstructionFormatter *thiz = ZyDisBaseInstructionFormatter_cthiz(ctx); - - if (thiz->symbolResolver) - { - return ZyDisBaseSymbolResolver_ResolveSymbol( - thiz->symbolResolver, info, address, offset); - } - - return NULL; -} - -ZyDisBaseSymbolResolverContext* ZyDisBaseInstructionFormatter_GetSymbolResolver( - const ZyDisBaseInstructionFormatterContext *ctx) -{ - return ZyDisBaseInstructionFormatter_cthiz(ctx)->symbolResolver; -} - -void ZyDisBaseInstructionFormatter_SetSymbolResolver( - ZyDisBaseInstructionFormatterContext *ctx, ZyDisBaseSymbolResolverContext *symbolResolver) -{ - ZyDisBaseInstructionFormatter_thiz(ctx)->symbolResolver = symbolResolver; -} - -const char* ZyDisBaseInstructionFormatter_FormatInstruction( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info) -{ - ZyDisBaseInstructionFormatter *thiz = ZyDisBaseInstructionFormatter_thiz(ctx); - - // Clears the internal string buffer - ZyDisBaseInstructionFormatter_OutputClear(ctx); - - // Calls the virtual format method that actually formats the instruction - thiz->internalFormat(ctx, info); - - if (thiz->outputBufferCapacity == 0) - { - // The basic instruction formatter only returns the instruction menmonic. - return ZyDisGetInstructionMnemonicString(info->mnemonic); - } - - // Return the formatted instruction string - return ZyDisBaseInstructionFormatter_OutputString(ctx); -} - -static void ZyDisBaseInstructionFormatter_OutputClear(ZyDisBaseInstructionFormatterContext *ctx) -{ - ZyDisBaseInstructionFormatter_thiz(ctx)->outputStringLen = 0; -} - -static char const* ZyDisBaseInstructionFormatter_OutputString(ZyDisBaseInstructionFormatterContext *ctx) -{ - return &ZyDisBaseInstructionFormatter_thiz(ctx)->outputBuffer[0]; -} - -static void ZyDisBaseInstructionFormatter_OutputAppend( - ZyDisBaseInstructionFormatterContext *ctx, char const *text) -{ - ZyDisBaseInstructionFormatter *thiz = ZyDisBaseInstructionFormatter_thiz(ctx); - - // Get the string length including the null-terminator char - size_t strLen = strlen(text) + 1; - - // Get the buffer size - size_t bufLen = thiz->outputBufferCapacity; - - // Decrease the offset by one, to exclude already existing null-terminator chars in the - // output buffer - size_t offset = (thiz->outputStringLen) ? thiz->outputStringLen - 1 : 0; - - // Resize capacity of the output buffer on demand and add some extra space to improve the - // performance - if (bufLen <= (thiz->outputStringLen + strLen)) - { - thiz->outputBufferCapacity = bufLen + strLen + 512; - thiz->outputBuffer = realloc(thiz->outputBuffer, thiz->outputBufferCapacity); - } - - // Write the text to the output buffer - memcpy(&thiz->outputBuffer[offset], text, strLen); - - // Increase the string length - thiz->outputStringLen = offset + strLen; - - // Convert to uppercase - if (thiz->outputUppercase) - { - for (size_t i = offset; i < thiz->outputStringLen - 1; ++i) - { - thiz->outputBuffer[i] = (char)toupper(thiz->outputBuffer[i]); - } - } -} - -static void ZyDisBaseInstructionFormatter_OutputAppendFormatted( - ZyDisBaseInstructionFormatterContext *ctx, char const *format, ...) -{ - ZyDisBaseInstructionFormatter *thiz = ZyDisBaseInstructionFormatter_thiz(ctx); - - va_list arguments; - va_start(arguments, format); - - // Get the buffer size - size_t bufLen = thiz->outputBufferCapacity; - - // Decrease the offset by one, to exclude already existing null-terminator chars in the - // output buffer - size_t offset = (thiz->outputStringLen) ? thiz->outputStringLen - 1 : 0; - - // Resize the output buffer on demand and add some extra space to improve the performance - if ((bufLen - thiz->outputStringLen) < 256) - { - bufLen = bufLen + 512; - thiz->outputBuffer = realloc(thiz->outputBuffer, bufLen); - thiz->outputBufferCapacity = bufLen; - } - - int strLen = 0; - do - { - // If the formatted text did not fit in the output buffer, resize it, and try again - if (strLen < 0) - { - thiz->outputBufferCapacity = bufLen + 512; - thiz->outputBuffer = realloc(thiz->outputBuffer, thiz->outputBufferCapacity); - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, format, arguments); - return; - } - // Write the formatted text to the output buffer - assert((bufLen - offset) > 0); - strLen = vsnprintf(&thiz->outputBuffer[offset], bufLen - offset, format, arguments); - } while (strLen < 0); - - // Increase the string length - thiz->outputStringLen = offset + strLen + 1; - - // Convert to uppercase - if (thiz->outputUppercase) - { - for (size_t i = offset; i < thiz->outputStringLen - 1; ++i) - { - thiz->outputBuffer[i] = (char)toupper(thiz->outputBuffer[i]); - } - } - - va_end(arguments); -} - -static void ZyDisBaseInstructionFormatter_OutputAppendAddress( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info, uint64_t address, - bool resolveSymbols) -{ - uint64_t offset = 0; - const char* name = NULL; - - if (resolveSymbols) - { - name = ZyDisBaseInstructionFormatter_ResolveSymbol(ctx, info, address, &offset); - } - - if (name) - { - if (offset) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%s+%.2llX", name, offset); - } - else - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, name); - } - } - else - { - if (info->flags & IF_DISASSEMBLER_MODE_16) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%.4X", address); - } - else if (info->flags & IF_DISASSEMBLER_MODE_32) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%.8lX", address); - } - else if (info->flags & IF_DISASSEMBLER_MODE_64) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%.16llX", address); - } - else - { - assert(0); - } - } -} - -static void ZyDisBaseInstructionFormatter_OutputAppendImmediate( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info, - const ZyDisOperandInfo *operand, bool resolveSymbols) -{ - assert(operand->type == OPTYPE_IMMEDIATE); - uint64_t value = 0; - if (operand->signed_lval && (operand->size != info->operand_mode)) - { - if (operand->size == 8) - { - value = (int64_t)operand->lval.sbyte; - } - else - { - assert(operand->size == 32); - value = (int64_t)operand->lval.sdword; - } - - if (info->operand_mode < 64) - { - value = value & ((1ull << info->operand_mode) - 1ull); - } - } - else - { - switch (operand->size) - { - case 8: - value = operand->lval.ubyte; - break; - case 16: - value = operand->lval.uword; - break; - case 32: - value = operand->lval.udword; - break; - case 64: - value = operand->lval.uqword; - break; - default: - assert(0); - } - } - - uint64_t offset = 0; - const char* name = NULL; - if (resolveSymbols) - { - name = ZyDisBaseInstructionFormatter_ResolveSymbol(ctx, info, value, &offset); - } - - if (name) - { - if (offset) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%s+%.2llX", name, offset); - } - else - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, name); - } - } - else - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%.2llX", value); - } -} - -static void ZyDisBaseInstructionFormatter_OutputAppendDisplacement( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisOperandInfo *operand) -{ - assert(operand->offset > 0); - if ((operand->base == REG_NONE) && (operand->index == REG_NONE)) - { - // Assume the displacement value is unsigned - assert(operand->scale == 0); - assert(operand->offset != 8); - uint64_t value = 0; - switch (operand->offset) - { - case 16: - value = operand->lval.uword; - break; - case 32: - value = operand->lval.udword; - break; - case 64: - value = operand->lval.uqword; - break; - default: - assert(0); - } - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%.2llX", value); - } - else - { - // The displacement value might be negative - assert(operand->offset != 64); - int64_t value = 0; - switch (operand->offset) - { - case 8: - value = operand->lval.sbyte; - break; - case 16: - value = operand->lval.sword; - break; - case 32: - value = operand->lval.sdword; - break; - default: - assert(0); - } - if (value < 0) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "-%.2lX", -value); - } else - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%s%.2lX", - (operand->base != REG_NONE || operand->index != REG_NONE) ? "+" : "", value); - } - } -} - -/* ZyDisIntelInstructionFormatter ----------------------------------------------------------------- */ - -static void ZyDisIntelInstructionFormatter_Construct(ZyDisBaseInstructionFormatterContext *ctx, - ZyDisBaseSymbolResolverContext* symbolResolver) -{ - ZyDisBaseInstructionFormatter_Construct(ctx, symbolResolver); - ZyDisIntelInstructionFormatter *thiz = ZyDisIntelInstructionFormatter_thiz(ctx); - - thiz->super.destruct = &ZyDisIntelInstructionFormatter_Destruct; - thiz->super.internalFormat = &ZyDisIntelInstructionFormatter_InternalFormatInstruction; -} - -static void ZyDisIntelInstructionFormatter_Destruct(ZyDisBaseInstructionFormatterContext *ctx) -{ - ZyDisBaseInstructionFormatter_Destruct(ctx); -} - -ZyDisBaseInstructionFormatterContext* ZyDisIntelInstructionFormatter_Create(void) -{ - return ZyDisIntelInstructionFormatter_CreateEx(NULL); -} - -ZyDisBaseInstructionFormatterContext* ZyDisIntelInstructionFormatter_CreateEx( - ZyDisBaseSymbolResolverContext *resolver) -{ - ZyDisIntelInstructionFormatter *thiz = malloc(sizeof(ZyDisIntelInstructionFormatter)); - ZyDisBaseInstructionFormatterContext *ctx = malloc(sizeof(ZyDisBaseInstructionFormatterContext)); - - if (!thiz || !ctx) - { - if (thiz) - { - free(thiz); - } - if (ctx) - { - free(ctx); - } - - return NULL; - } - - ctx->d.type = TYPE_INTELINSTRUCTIONFORMATTER; - ctx->d.ptr = thiz; - - ZyDisIntelInstructionFormatter_Construct(ctx, resolver); - - return ctx; -} - -static void ZyDisIntelInstructionFormatter_OutputAppendOperandCast( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisOperandInfo *operand) -{ - switch(operand->size) - { - case 8: - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "byte ptr " ); - break; - case 16: - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "word ptr " ); - break; - case 32: - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "dword ptr "); - break; - case 64: - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "qword ptr "); - break; - case 80: - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "tword ptr "); - break; - case 128: - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "oword ptr "); - break; - case 256: - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "yword ptr "); - break; - default: - break; - } -} - -static void ZyDisIntelInstructionFormatter_FormatOperand(ZyDisBaseInstructionFormatterContext *ctx, - const ZyDisInstructionInfo *info, const ZyDisOperandInfo *operand) -{ - switch (operand->type) - { - case OPTYPE_REGISTER: - ZyDisBaseInstructionFormatter_OutputAppend(ctx, - ZyDisBaseInstructionFormatter_RegisterToString(ctx, operand->base)); - break; - case OPTYPE_MEMORY: - if (info->flags & IF_PREFIX_SEGMENT) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, - "%s:", ZyDisBaseInstructionFormatter_RegisterToString(ctx, info->segment)); - } - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "["); - if (operand->base == REG_RIP) - { - // TODO: Add option - ZyDisBaseInstructionFormatter_OutputAppendAddress( - ctx, info, ZyDisCalcAbsoluteTarget(info, operand), true); - } - else - { - if (operand->base != REG_NONE) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, - ZyDisBaseInstructionFormatter_RegisterToString(ctx, operand->base)); - } - - if (operand->index != REG_NONE) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%s%s", - operand->base != REG_NONE ? "+" : "", - ZyDisBaseInstructionFormatter_RegisterToString(ctx, operand->index)); - if (operand->scale) - { - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "*%d", operand->scale); - } - } - - if (operand->offset) - { - ZyDisBaseInstructionFormatter_OutputAppendDisplacement(ctx, operand); - } - } - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "]"); - break; - case OPTYPE_POINTER: - // TODO: resolve symbols - switch (operand->size) - { - case 32: - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "word %.4X:%.4X", - operand->lval.ptr.seg, operand->lval.ptr.off & 0xFFFF); - break; - case 48: - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "dword %.4X:%.8lX", - operand->lval.ptr.seg, operand->lval.ptr.off); - break; - default: - assert(0); - } - break; - case OPTYPE_IMMEDIATE: - { - ZyDisBaseInstructionFormatter_OutputAppendImmediate(ctx, info, operand, true); - } - break; - case OPTYPE_REL_IMMEDIATE: - { - if (operand->size == 8) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "short "); - } - ZyDisBaseInstructionFormatter_OutputAppendAddress(ctx, info, - ZyDisCalcAbsoluteTarget(info, operand), true); - } - break; - case OPTYPE_CONSTANT: - ZyDisBaseInstructionFormatter_OutputAppendFormatted(ctx, "%.2X", operand->lval.udword); - break; - default: - assert(0); - break; - } -} - -static void ZyDisIntelInstructionFormatter_InternalFormatInstruction( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info) -{ - // Append string prefixes - if (info->flags & IF_PREFIX_LOCK) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "lock "); - } - - if (info->flags & IF_PREFIX_REP) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "rep "); - } - else if (info->flags & IF_PREFIX_REPNE) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, "repne "); - } - - // Append the instruction mnemonic - ZyDisBaseInstructionFormatter_OutputAppend(ctx, ZyDisGetInstructionMnemonicString(info->mnemonic)); - - // Append the first operand - if (info->operand[0].type != OPTYPE_NONE) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, " "); - bool cast = false; - if (info->operand[0].type == OPTYPE_MEMORY) - { - if (info->operand[1].type == OPTYPE_IMMEDIATE || - info->operand[1].type == OPTYPE_CONSTANT || - info->operand[1].type == OPTYPE_NONE || - (info->operand[0].size != info->operand[1].size)) - { - cast = true; - } - else if (info->operand[1].type == OPTYPE_REGISTER && info->operand[1].base == REG_CL) - { - switch (info->mnemonic) - { - case MNEM_RCL: - case MNEM_ROL: - case MNEM_ROR: - case MNEM_RCR: - case MNEM_SHL: - case MNEM_SHR: - case MNEM_SAR: - cast = true; - break; - default: - break; - } - } - } - - if (cast) - { - ZyDisIntelInstructionFormatter_OutputAppendOperandCast(ctx, &info->operand[0]); - } - ZyDisIntelInstructionFormatter_FormatOperand(ctx, info, &info->operand[0]); - } - - // Append the second operand - if (info->operand[1].type != OPTYPE_NONE) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, ", "); - bool cast = false; - if (info->operand[1].type == OPTYPE_MEMORY && - info->operand[0].size != info->operand[1].size && - ((info->operand[0].type != OPTYPE_REGISTER) || - ((info->operand[0].base != REG_ES) && - (info->operand[0].base != REG_CS) && - (info->operand[0].base != REG_SS) && - (info->operand[0].base != REG_DS) && - (info->operand[0].base != REG_FS) && - (info->operand[0].base != REG_GS)))) - { - cast = true; - } - - if (cast) - { - ZyDisIntelInstructionFormatter_OutputAppendOperandCast(ctx, &info->operand[1]); - } - ZyDisIntelInstructionFormatter_FormatOperand(ctx, info, &info->operand[1]); - } - - // Append the third operand - if (info->operand[2].type != OPTYPE_NONE) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, ", "); - bool cast = false; - if (info->operand[2].type == OPTYPE_MEMORY && - (info->operand[2].size != info->operand[1].size)) - { - cast = true; - } - - if (cast) - { - ZyDisIntelInstructionFormatter_OutputAppendOperandCast(ctx, &info->operand[2]); - } - - ZyDisIntelInstructionFormatter_FormatOperand(ctx, info, &info->operand[2]); - } - - // Append the fourth operand - if (info->operand[3].type != OPTYPE_NONE) - { - ZyDisBaseInstructionFormatter_OutputAppend(ctx, ", "); - ZyDisIntelInstructionFormatter_FormatOperand(ctx, info, &info->operand[3]); - } -} - -/* ZyDisCustomInstructionFormatter ---------------------------------------------------------------- */ - -static void ZyDisCustomInstructionFormatter_Construct(ZyDisBaseInstructionFormatterContext *ctx, - ZyDisBaseInstructionFormatter_InternalFormatInstructionCallback formatInsnCb) -{ - ZyDisBaseInstructionFormatter_Construct(ctx, NULL); - - ZyDisCustomInstructionFormatter *thiz = ZyDisCustomInstructionFormatter_thiz(ctx); - thiz->super.internalFormat = formatInsnCb; -} - -static void ZyDisCustomInstructionFormatter_Destruct(ZyDisBaseInstructionFormatterContext *ctx) -{ - ZyDisBaseInstructionFormatter_Destruct(ctx); -} - -ZYDIS_EXPORT ZyDisBaseInstructionFormatterContext* ZyDisCustomInstructionFormatter_Create( - ZyDisBaseInstructionFormatter_InternalFormatInstructionCallback formatInsnCb) -{ - ZyDisCustomInstructionFormatter *thiz = malloc(sizeof(ZyDisCustomInstructionFormatter)); - ZyDisBaseInstructionFormatterContext *ctx = malloc(sizeof(ZyDisBaseInstructionFormatterContext)); - - if (!thiz || !ctx) - { - if (thiz) - { - free(thiz); - } - if (ctx) - { - free(ctx); - } - - return NULL; - } - - ctx->d.type = TYPE_CUSTOMINSTRUCTIONFORMATTER; - ctx->d.ptr = thiz; - - ZyDisCustomInstructionFormatter_Construct(ctx, formatInsnCb); - return ctx; -} - -/* --------------------------------------------------------------------------------------------- */ - -/* ============================================================================================= */ diff --git a/VerteronDisassemblerEngine/ZyDisInstructionFormatter.h b/VerteronDisassemblerEngine/ZyDisInstructionFormatter.h deleted file mode 100644 index 5d70cae..0000000 --- a/VerteronDisassemblerEngine/ZyDisInstructionFormatter.h +++ /dev/null @@ -1,174 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 14. March 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#ifndef _VDE_ZyDisINSTRUCTIONFORMATTERC_H_ -#define _VDE_ZyDisINSTRUCTIONFORMATTERC_H_ - -#include "ZyDisDisassemblerTypes.h" -#include "ZyDisDisassemblerUtils.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* ZyDisBaseSymbolResolver ======================================================================== */ - -typedef struct _ZyDisBaseSymbolResolverContext -{ - ZyDisContextDescriptor d; -} ZyDisBaseSymbolResolverContext; - -/** - * @brief Releases a symbol resolver. - * @param ctx The context of the symbol resolver to free. - * The context may no longer used after it was released. - */ -ZYDIS_EXPORT void ZyDisBaseSymbolResolver_Release( - ZyDisBaseSymbolResolverContext *ctx); - -/** - * @brief Resolves a symbol. - * @param ctx The symbol resolver context. - * @param info The instruction info. - * @param address The address. - * @param offset Pointer to an unsigned 64 bit integer that receives an offset relative to - * the base address of the symbol. - * @return The name of the symbol if the symbol was found, else @c NULL. - */ -ZYDIS_EXPORT const char* ZyDisBaseSymbolResolver_ResolveSymbol( - ZyDisBaseSymbolResolverContext *ctx, - const ZyDisInstructionInfo *info, - uint64_t address, - uint64_t *offset); - -/* ZyDisCustomSymbolResolver ====================================================================== */ - -typedef const char* (*ZyDisCustomSymbolResolver_ResolveSymbolCallback)( - const ZyDisInstructionInfo *info, - uint64_t address, - uint64_t *offset, - void *userData); - -/** - * @brief Creates a custom symbol resolver. - * @param resolverCb The resolver callback consulted when symbols need to be resolved. - * @param userData A pointer to arbitrary data passed to the resolver callback. - * May also be @c NULL. - * @return @c NULL if it fails, else a symbol resolver context. - */ -ZYDIS_EXPORT ZyDisBaseSymbolResolverContext* ZyDisCustomSymbolResolver_Create( - ZyDisCustomSymbolResolver_ResolveSymbolCallback resolverCb, - void *userData); - -/* ZyDisBaseInstructionFormatter ================================================================== */ - -typedef struct _ZyDisBaseInstructionFormatterContext -{ - ZyDisContextDescriptor d; -} ZyDisBaseInstructionFormatterContext; - -typedef void(*ZyDisBaseInstructionFormatter_InternalFormatInstructionCallback)( - ZyDisBaseInstructionFormatterContext *ctx, const ZyDisInstructionInfo *info); - -/** - * @brief Formats a decoded instruction. - * @param ctx The instruction formatter context. - * @param info The instruction info. - * @return Pointer to the formatted instruction string. This pointer remains valid until - * this function is called again or the context is released. - */ -ZYDIS_EXPORT const char* ZyDisBaseInstructionFormatter_FormatInstruction( - ZyDisBaseInstructionFormatterContext *ctx, - const ZyDisInstructionInfo *info); - -/** - * @brief Returns a pointer to the current symbol resolver. - * @param ctx The instruction formatter context. - * @return Pointer to the current symbol resolver or @c NULL if no symbol resolver is used. - */ -ZYDIS_EXPORT ZyDisBaseSymbolResolverContext* ZyDisBaseInstructionFormatter_GetSymbolResolver( - const ZyDisBaseInstructionFormatterContext *ctx); - -/** - * @brief Sets a new symbol resolver. - * @param ctx The instruction formatter context. - * @param symbolResolver Pointer to a symbol resolver instance or @c NULL, if no smybol - * resolver should be used. - */ -ZYDIS_EXPORT void ZyDisBaseInstructionFormatter_SetSymbolResolver( - ZyDisBaseInstructionFormatterContext *ctx, - ZyDisBaseSymbolResolverContext *resolver); - -/** - * @brief Releases an instruction formatter. - * @param ctx The context of the instruction formatter to release. - * The context may no longer used after it has been released. - */ -ZYDIS_EXPORT void ZyDisBaseInstructionFormatter_Release( - ZyDisBaseInstructionFormatterContext *ctx); - -/* ZyDisIntelInstructionFormatter ================================================================= */ - -/** - * @brief Creates an Intel-syntax instruction formatter. - * @return @c NULL if it fails, else an Intel instruction formatter context. - * @see ZyDisBaseInstructionFormatter_Release - */ -ZYDIS_EXPORT ZyDisBaseInstructionFormatterContext* ZyDisIntelInstructionFormatter_Create(void); - -/** - * @brief Creates an Intel-syntax instruction formatter. - * @param resolver The symbol resolver consulted to resolve symbols on formatting. - * @return @c NULL if it fails, else an Intel instruction formatter context. - * @see ZyDisBaseInstructionFormatter_Release - */ -ZYDIS_EXPORT ZyDisBaseInstructionFormatterContext* ZyDisIntelInstructionFormatter_CreateEx( - ZyDisBaseSymbolResolverContext *resolver); - -/* ZyDisCustomInstructionFormatter ================================================================ */ - -/** - * @brief Creats a custom instruction formatter. - * @param formatInsnCb The callback formatting the instruction. - * @return @c NULL if it fails, else a custom instruction formatter context. - */ -ZYDIS_EXPORT ZyDisBaseInstructionFormatterContext* ZyDisCustomInstructionFormatter_Create( - ZyDisBaseInstructionFormatter_InternalFormatInstructionCallback formatInsnCb); - -/* ============================================================================================= */ - -#ifdef __cplusplus -} -#endif - -#endif /* _VDE_ZyDisINSTRUCTIONFORMATTERC_H_ */ \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisInternalConfig.h b/VerteronDisassemblerEngine/ZyDisInternalConfig.h deleted file mode 100644 index f44a19f..0000000 --- a/VerteronDisassemblerEngine/ZyDisInternalConfig.h +++ /dev/null @@ -1,50 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : athre0z - Modifications : - - Last change : 16. March 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -/* - * Include CMake generated header defining macros im-/exporting functions statically or - * dynamically depending what the user requested from CMake. - */ -#include "ZyDisExportConfig.h" - -#ifndef _VDE_ZyDisINTERNALCONFIG_H_ -#define _VDE_ZyDisINTERNALCONFIG_H_ - -#ifdef _MSC_VER -# define ZYDIS_INLINE __inline -#else -# define ZYDIS_INLINE static inline -#endif - -#define ZYDIS_UNUSED(x) ((void)x) - -#endif /* _VDE_ZyDisINTERNALCONFIG_H_ */ diff --git a/VerteronDisassemblerEngine/ZyDisInternalHelpers.h b/VerteronDisassemblerEngine/ZyDisInternalHelpers.h deleted file mode 100644 index 7094c92..0000000 --- a/VerteronDisassemblerEngine/ZyDisInternalHelpers.h +++ /dev/null @@ -1,197 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : athre0z - Modifications : - - Last change : 19. March 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#ifndef _VDE_ZyDisINTERNALHELPERS_H_ -#define _VDE_ZyDisINTERNALHELPERS_H_ - -#include "ZyDisInstructionDecoder.h" -#include "ZyDisInstructionFormatter.h" -#include "ZyDisInternalConfig.h" - -#include - -/* Types IDs =================================================================================== */ - -typedef enum _ZyDisTypeId -{ - TYPE_BASEDATASOURCE, - TYPE_MEMORYDATASOURCE, - TYPE_CUSTOMDATASOURCE, - TYPE_INSTRUCTIONDECODER, - TYPE_BASESYMBOLRESOLVER, - TYPE_CUSTOMSYMBOLRESOLVER, - TYPE_BASEINSTRUCTIONFORMATTER, - TYPE_INTELINSTRUCTIONFORMATTER, - TYPE_CUSTOMINSTRUCTIONFORMATTER, -} ZyDisTypeId; - -/* Context conversion helpers ================================================================== */ - -ZYDIS_INLINE struct _ZyDisBaseDataSource* ZyDisBaseDataSource_thiz( - ZyDisBaseDataSourceContext *ctx) -{ - assert(ctx->d.type == TYPE_BASEDATASOURCE - || ctx->d.type == TYPE_MEMORYDATASOURCE - || ctx->d.type == TYPE_CUSTOMDATASOURCE); - return (struct _ZyDisBaseDataSource*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisBaseDataSource* ZyDisBaseDataSource_cthiz( - const ZyDisBaseDataSourceContext *ctx) -{ - assert(ctx->d.type == TYPE_BASEDATASOURCE - || ctx->d.type == TYPE_MEMORYDATASOURCE - || ctx->d.type == TYPE_CUSTOMDATASOURCE); - return (const struct _ZyDisBaseDataSource*)ctx->d.ptr; -} - -ZYDIS_INLINE struct _ZyDisMemoryDataSource* ZyDisMemoryDataSource_thiz( - ZyDisBaseDataSourceContext *ctx) -{ - assert(ctx->d.type == TYPE_MEMORYDATASOURCE); - return (struct _ZyDisMemoryDataSource*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisMemoryDataSource* ZyDisMemoryDataSource_cthiz( - const ZyDisBaseDataSourceContext *ctx) -{ - assert(ctx->d.type == TYPE_MEMORYDATASOURCE); - return (const struct _ZyDisMemoryDataSource*)ctx->d.ptr; -} - -ZYDIS_INLINE struct _ZyDisCustomDataSource* ZyDisCustomDataSource_thiz( - ZyDisBaseDataSourceContext *ctx) -{ - assert(ctx->d.type == TYPE_CUSTOMDATASOURCE); - return (struct _ZyDisCustomDataSource*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisCustomDataSource* ZyDisCustomDataSource_cthiz( - const ZyDisBaseDataSourceContext *ctx) -{ - assert(ctx->d.type == TYPE_CUSTOMDATASOURCE); - return (const struct _ZyDisCustomDataSource*)ctx->d.ptr; -} - -ZYDIS_INLINE struct _ZyDisInstructionDecoder* ZyDisInstructionDecoder_thiz( - ZyDisInstructionDecoderContext *ctx) -{ - assert(ctx->d.type == TYPE_INSTRUCTIONDECODER); - return (struct _ZyDisInstructionDecoder*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisInstructionDecoder* ZyDisInstructionDecoder_cthiz( - const ZyDisInstructionDecoderContext *ctx) -{ - assert(ctx->d.type == TYPE_INSTRUCTIONDECODER); - return (const struct _ZyDisInstructionDecoder*)ctx->d.ptr; -} - -ZYDIS_INLINE struct _ZyDisBaseSymbolResolver* ZyDisBaseSymbolResolver_thiz( - ZyDisBaseSymbolResolverContext *ctx) -{ - assert(ctx->d.type == TYPE_BASESYMBOLRESOLVER - || ctx->d.type == TYPE_CUSTOMSYMBOLRESOLVER); - return (struct _ZyDisBaseSymbolResolver*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisBaseSymbolResolver* ZyDisBaseSymbolResolver_cthiz( - const ZyDisBaseSymbolResolverContext *ctx) -{ - assert(ctx->d.type == TYPE_BASESYMBOLRESOLVER - || ctx->d.type == TYPE_CUSTOMSYMBOLRESOLVER); - return (const struct _ZyDisBaseSymbolResolver*)ctx->d.ptr; -} - -ZYDIS_INLINE struct _ZyDisCustomSymbolResolver* ZyDisCustomSymbolResolver_thiz( - ZyDisBaseSymbolResolverContext *ctx) -{ - assert(ctx->d.type == TYPE_CUSTOMSYMBOLRESOLVER); - return (struct _ZyDisCustomSymbolResolver*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisCustomSymbolResolver* ZyDisCustomSymbolResolver_cthiz( - const ZyDisBaseSymbolResolverContext *ctx) -{ - assert(ctx->d.type == TYPE_CUSTOMSYMBOLRESOLVER); - return (const struct _ZyDisCustomSymbolResolver*)ctx->d.ptr; -} - -ZYDIS_INLINE struct _ZyDisBaseInstructionFormatter* ZyDisBaseInstructionFormatter_thiz( - ZyDisBaseInstructionFormatterContext *ctx) -{ - assert(ctx->d.type == TYPE_BASEINSTRUCTIONFORMATTER - || ctx->d.type == TYPE_INTELINSTRUCTIONFORMATTER - || ctx->d.type == TYPE_CUSTOMINSTRUCTIONFORMATTER); - return (struct _ZyDisBaseInstructionFormatter*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisBaseInstructionFormatter* ZyDisBaseInstructionFormatter_cthiz( - const ZyDisBaseInstructionFormatterContext *ctx) -{ - assert(ctx->d.type == TYPE_BASEINSTRUCTIONFORMATTER - || ctx->d.type == TYPE_INTELINSTRUCTIONFORMATTER - || ctx->d.type == TYPE_CUSTOMINSTRUCTIONFORMATTER); - return (const struct _ZyDisBaseInstructionFormatter*)ctx->d.ptr; -} - -ZYDIS_INLINE struct _ZyDisIntelInstructionFormatter* ZyDisIntelInstructionFormatter_thiz( - ZyDisBaseInstructionFormatterContext *ctx) -{ - assert(ctx->d.type == TYPE_INTELINSTRUCTIONFORMATTER); - return (struct _ZyDisIntelInstructionFormatter*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisIntelInstructionFormatter* ZyDisIntelInstructionFormatter_cthiz( - const ZyDisBaseInstructionFormatterContext *ctx) -{ - assert(ctx->d.type == TYPE_INTELINSTRUCTIONFORMATTER); - return (const struct _ZyDisIntelInstructionFormatter*)ctx->d.ptr; -} - -ZYDIS_INLINE struct _ZyDisCustomInstructionFormatter* ZyDisCustomInstructionFormatter_thiz( - ZyDisBaseInstructionFormatterContext *ctx) -{ - assert(ctx->d.type == TYPE_CUSTOMINSTRUCTIONFORMATTER); - return (struct _ZyDisCustomInstructionFormatter*)ctx->d.ptr; -} - -ZYDIS_INLINE const struct _ZyDisCustomInstructionFormatter* ZyDisCustomInstructionFormatter_cthiz( - const ZyDisBaseInstructionFormatterContext *ctx) -{ - assert(ctx->d.type == TYPE_CUSTOMINSTRUCTIONFORMATTER); - return (struct _ZyDisCustomInstructionFormatter*)ctx->d.ptr; -} - -/* ============================================================================================= */ - -#endif /* _VDE_ZyDisINTERNALHELPERS_H_ */ \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisOpcodeTable.c b/VerteronDisassemblerEngine/ZyDisOpcodeTable.c deleted file mode 100644 index 762ccf7..0000000 --- a/VerteronDisassemblerEngine/ZyDisOpcodeTable.c +++ /dev/null @@ -1,9649 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 14. March 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#include "ZyDisOpcodeTable.h" - -#define ZYDIS_INVALID 0 -#define ZYDIS_NODE(type, n) ((ZyDisOpcodeTreeNode)type << 12 | (n)) - -const ZyDisOpcodeTreeNode vxOptreeTable[][256] = -{ - { - /* 00 */ 0x0015, - /* 01 */ 0x0014, - /* 02 */ 0x0016, - /* 03 */ 0x0018, - /* 04 */ 0x0017, - /* 05 */ 0x0010, - /* 06 */ ZYDIS_NODE(OTNT_MODE, 0x0000), - /* 07 */ ZYDIS_NODE(OTNT_MODE, 0x0001), - /* 08 */ 0x0394, - /* 09 */ 0x0393, - /* 0A */ 0x0396, - /* 0B */ 0x0395, - /* 0C */ 0x0390, - /* 0D */ 0x038F, - /* 0E */ ZYDIS_NODE(OTNT_MODE, 0x0002), - /* 0F */ ZYDIS_NODE(OTNT_TABLE, 0x0001), - /* 10 */ 0x000B, - /* 11 */ 0x000A, - /* 12 */ 0x000C, - /* 13 */ 0x000E, - /* 14 */ 0x000D, - /* 15 */ 0x0006, - /* 16 */ ZYDIS_NODE(OTNT_MODE, 0x0007), - /* 17 */ ZYDIS_NODE(OTNT_MODE, 0x0008), - /* 18 */ 0x04FE, - /* 19 */ 0x04F7, - /* 1A */ 0x04F8, - /* 1B */ 0x04FB, - /* 1C */ 0x04FA, - /* 1D */ 0x04F9, - /* 1E */ ZYDIS_NODE(OTNT_MODE, 0x0009), - /* 1F */ ZYDIS_NODE(OTNT_MODE, 0x000A), - /* 20 */ 0x0026, - /* 21 */ 0x0027, - /* 22 */ 0x0025, - /* 23 */ 0x002C, - /* 24 */ 0x002D, - /* 25 */ 0x002E, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_NODE(OTNT_MODE, 0x000B), - /* 28 */ 0x0542, - /* 29 */ 0x0549, - /* 2A */ 0x0548, - /* 2B */ 0x054B, - /* 2C */ 0x054A, - /* 2D */ 0x0547, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_NODE(OTNT_MODE, 0x000C), - /* 30 */ 0x06B8, - /* 31 */ 0x06B9, - /* 32 */ 0x06B6, - /* 33 */ 0x06B7, - /* 34 */ 0x06BA, - /* 35 */ 0x06BB, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_NODE(OTNT_MODE, 0x000D), - /* 38 */ 0x006C, - /* 39 */ 0x006D, - /* 3A */ 0x006B, - /* 3B */ 0x006A, - /* 3C */ 0x0070, - /* 3D */ 0x006F, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_NODE(OTNT_MODE, 0x000E), - /* 40 */ 0x02AB, - /* 41 */ 0x02AC, - /* 42 */ 0x02B2, - /* 43 */ 0x02B1, - /* 44 */ 0x02B3, - /* 45 */ 0x02B4, - /* 46 */ 0x02AE, - /* 47 */ 0x02AD, - /* 48 */ 0x00A7, - /* 49 */ 0x00A6, - /* 4A */ 0x00A8, - /* 4B */ 0x00AA, - /* 4C */ 0x00A9, - /* 4D */ 0x00A2, - /* 4E */ 0x00A1, - /* 4F */ 0x00A3, - /* 50 */ 0x04B4, - /* 51 */ 0x04B9, - /* 52 */ 0x04B3, - /* 53 */ 0x04AE, - /* 54 */ 0x04AF, - /* 55 */ 0x04B0, - /* 56 */ 0x04B1, - /* 57 */ 0x04B2, - /* 58 */ 0x0449, - /* 59 */ 0x0447, - /* 5A */ 0x0448, - /* 5B */ 0x0442, - /* 5C */ 0x043E, - /* 5D */ 0x043D, - /* 5E */ 0x043F, - /* 5F */ 0x0441, - /* 60 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0007), - /* 61 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0008), - /* 62 */ ZYDIS_NODE(OTNT_MODE, 0x0013), - /* 63 */ ZYDIS_NODE(OTNT_MODE, 0x0014), - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ 0x04B7, - /* 69 */ 0x02A4, - /* 6A */ 0x04AB, - /* 6B */ 0x02A6, - /* 6C */ 0x02B5, - /* 6D */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0009), - /* 6E */ 0x039F, - /* 6F */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x000A), - /* 70 */ 0x02E8, - /* 71 */ 0x02E2, - /* 72 */ 0x02CA, - /* 73 */ 0x02DE, - /* 74 */ 0x02CE, - /* 75 */ 0x02E1, - /* 76 */ 0x02CB, - /* 77 */ 0x02C7, - /* 78 */ 0x02ED, - /* 79 */ 0x02E6, - /* 7A */ 0x02EB, - /* 7B */ 0x02E5, - /* 7C */ 0x02D5, - /* 7D */ 0x02D3, - /* 7E */ 0x02D8, - /* 7F */ 0x02D1, - /* 80 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0013), - /* 81 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0014), - /* 82 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0015), - /* 83 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0016), - /* 84 */ 0x055C, - /* 85 */ 0x055D, - /* 86 */ 0x06A8, - /* 87 */ 0x06A7, - /* 88 */ 0x0334, - /* 89 */ 0x0336, - /* 8A */ 0x0335, - /* 8B */ 0x0331, - /* 8C */ 0x031D, - /* 8D */ 0x02F4, - /* 8E */ 0x031C, - /* 8F */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0017), - /* 90 */ 0x06A9, - /* 91 */ 0x06AB, - /* 92 */ 0x06AA, - /* 93 */ 0x06A3, - /* 94 */ 0x06A2, - /* 95 */ 0x06A4, - /* 96 */ 0x06A6, - /* 97 */ 0x06A5, - /* 98 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x000B), - /* 99 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x000C), - /* 9A */ ZYDIS_NODE(OTNT_MODE, 0x001D), - /* 9B */ 0x069D, - /* 9C */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x000D), - /* 9D */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x000E), - /* 9E */ 0x04EF, - /* 9F */ 0x02EF, - /* A0 */ 0x031B, - /* A1 */ 0x0320, - /* A2 */ 0x031F, - /* A3 */ 0x031E, - /* A4 */ 0x0367, - /* A5 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x000F), - /* A6 */ 0x0076, - /* A7 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0010), - /* A8 */ 0x055E, - /* A9 */ 0x055B, - /* AA */ 0x053D, - /* AB */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0011), - /* AC */ 0x0300, - /* AD */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0012), - /* AE */ 0x0501, - /* AF */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0013), - /* B0 */ 0x0317, - /* B1 */ 0x031A, - /* B2 */ 0x0318, - /* B3 */ 0x0319, - /* B4 */ 0x0321, - /* B5 */ 0x032C, - /* B6 */ 0x032B, - /* B7 */ 0x032A, - /* B8 */ 0x032D, - /* B9 */ 0x0330, - /* BA */ 0x032F, - /* BB */ 0x032E, - /* BC */ 0x0329, - /* BD */ 0x0324, - /* BE */ 0x0323, - /* BF */ 0x0322, - /* C0 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0018), - /* C1 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0019), - /* C2 */ 0x04D9, - /* C3 */ 0x04D8, - /* C4 */ ZYDIS_NODE(OTNT_VEX, 0x0000), - /* C5 */ ZYDIS_NODE(OTNT_VEX, 0x0001), - /* C6 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x001E), - /* C7 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x001F), - /* C8 */ 0x00B4, - /* C9 */ 0x02F5, - /* CA */ 0x04DA, - /* CB */ 0x04DB, - /* CC */ 0x02BB, - /* CD */ 0x02B9, - /* CE */ ZYDIS_NODE(OTNT_MODE, 0x0027), - /* CF */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0017), - /* D0 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0020), - /* D1 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0021), - /* D2 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0022), - /* D3 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0023), - /* D4 */ ZYDIS_NODE(OTNT_MODE, 0x0028), - /* D5 */ ZYDIS_NODE(OTNT_MODE, 0x0029), - /* D6 */ ZYDIS_NODE(OTNT_MODE, 0x002A), - /* D7 */ 0x06B2, - /* D8 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0015), - /* D9 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0016), - /* DA */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0017), - /* DB */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0018), - /* DC */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0019), - /* DD */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x001A), - /* DE */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x001B), - /* DF */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x001C), - /* E0 */ 0x0306, - /* E1 */ 0x0305, - /* E2 */ 0x0304, - /* E3 */ ZYDIS_NODE(OTNT_ADDRESS_SIZE, 0x0000), - /* E4 */ 0x02A9, - /* E5 */ 0x02AA, - /* E6 */ 0x039D, - /* E7 */ 0x039E, - /* E8 */ 0x004E, - /* E9 */ 0x02DB, - /* EA */ ZYDIS_NODE(OTNT_MODE, 0x002B), - /* EB */ 0x02DD, - /* EC */ 0x02A7, - /* ED */ 0x02A8, - /* EE */ 0x039B, - /* EF */ 0x039C, - /* F0 */ 0x02FF, - /* F1 */ 0x02BA, - /* F2 */ 0x04D7, - /* F3 */ 0x04D6, - /* F4 */ 0x029D, - /* F5 */ 0x0059, - /* F6 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x002C), - /* F7 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x002D), - /* F8 */ 0x0053, - /* F9 */ 0x0538, - /* FA */ 0x0057, - /* FB */ 0x053B, - /* FC */ 0x0054, - /* FD */ 0x0539, - /* FE */ ZYDIS_NODE(OTNT_MODRM_REG, 0x002E), - /* FF */ ZYDIS_NODE(OTNT_MODRM_REG, 0x002F), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0000), - /* 01 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0000), - /* 02 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0003), - /* 03 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0004), - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0005), - /* 06 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0006), - /* 07 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0007), - /* 08 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0008), - /* 09 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0009), - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_NODE(OTNT_MANDATORY, 0x000A), - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_NODE(OTNT_MANDATORY, 0x000B), - /* 0E */ ZYDIS_NODE(OTNT_MANDATORY, 0x000C), - /* 0F */ ZYDIS_NODE(OTNT_AMD3DNOW, 0x0000), - /* 10 */ ZYDIS_NODE(OTNT_MANDATORY, 0x000D), - /* 11 */ ZYDIS_NODE(OTNT_MANDATORY, 0x000E), - /* 12 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0001), - /* 13 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0011), - /* 14 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0012), - /* 15 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0013), - /* 16 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0002), - /* 17 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0016), - /* 18 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0017), - /* 19 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0018), - /* 1A */ ZYDIS_NODE(OTNT_MANDATORY, 0x0019), - /* 1B */ ZYDIS_NODE(OTNT_MANDATORY, 0x001A), - /* 1C */ ZYDIS_NODE(OTNT_MANDATORY, 0x001B), - /* 1D */ ZYDIS_NODE(OTNT_MANDATORY, 0x001C), - /* 1E */ ZYDIS_NODE(OTNT_MANDATORY, 0x001D), - /* 1F */ ZYDIS_NODE(OTNT_MANDATORY, 0x001E), - /* 20 */ ZYDIS_NODE(OTNT_MANDATORY, 0x001F), - /* 21 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0020), - /* 22 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0021), - /* 23 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0022), - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0023), - /* 29 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0024), - /* 2A */ ZYDIS_NODE(OTNT_MANDATORY, 0x0025), - /* 2B */ ZYDIS_NODE(OTNT_MANDATORY, 0x0026), - /* 2C */ ZYDIS_NODE(OTNT_MANDATORY, 0x0027), - /* 2D */ ZYDIS_NODE(OTNT_MANDATORY, 0x0028), - /* 2E */ ZYDIS_NODE(OTNT_MANDATORY, 0x0029), - /* 2F */ ZYDIS_NODE(OTNT_MANDATORY, 0x002A), - /* 30 */ ZYDIS_NODE(OTNT_MANDATORY, 0x002B), - /* 31 */ ZYDIS_NODE(OTNT_MANDATORY, 0x002C), - /* 32 */ ZYDIS_NODE(OTNT_MANDATORY, 0x002D), - /* 33 */ ZYDIS_NODE(OTNT_MANDATORY, 0x002E), - /* 34 */ ZYDIS_NODE(OTNT_MANDATORY, 0x002F), - /* 35 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0030), - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0031), - /* 38 */ ZYDIS_NODE(OTNT_TABLE, 0x0002), - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_NODE(OTNT_TABLE, 0x0003), - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0081), - /* 41 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0082), - /* 42 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0083), - /* 43 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0084), - /* 44 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0085), - /* 45 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0086), - /* 46 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0087), - /* 47 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0088), - /* 48 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0089), - /* 49 */ ZYDIS_NODE(OTNT_MANDATORY, 0x008A), - /* 4A */ ZYDIS_NODE(OTNT_MANDATORY, 0x008B), - /* 4B */ ZYDIS_NODE(OTNT_MANDATORY, 0x008C), - /* 4C */ ZYDIS_NODE(OTNT_MANDATORY, 0x008D), - /* 4D */ ZYDIS_NODE(OTNT_MANDATORY, 0x008E), - /* 4E */ ZYDIS_NODE(OTNT_MANDATORY, 0x008F), - /* 4F */ ZYDIS_NODE(OTNT_MANDATORY, 0x0090), - /* 50 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0091), - /* 51 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0092), - /* 52 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0093), - /* 53 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0094), - /* 54 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0095), - /* 55 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0096), - /* 56 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0097), - /* 57 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0098), - /* 58 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0099), - /* 59 */ ZYDIS_NODE(OTNT_MANDATORY, 0x009A), - /* 5A */ ZYDIS_NODE(OTNT_MANDATORY, 0x009B), - /* 5B */ ZYDIS_NODE(OTNT_MANDATORY, 0x009C), - /* 5C */ ZYDIS_NODE(OTNT_MANDATORY, 0x009D), - /* 5D */ ZYDIS_NODE(OTNT_MANDATORY, 0x009E), - /* 5E */ ZYDIS_NODE(OTNT_MANDATORY, 0x009F), - /* 5F */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A0), - /* 60 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A1), - /* 61 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A2), - /* 62 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A3), - /* 63 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A4), - /* 64 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A5), - /* 65 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A6), - /* 66 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A7), - /* 67 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A8), - /* 68 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00A9), - /* 69 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00AA), - /* 6A */ ZYDIS_NODE(OTNT_MANDATORY, 0x00AB), - /* 6B */ ZYDIS_NODE(OTNT_MANDATORY, 0x00AC), - /* 6C */ ZYDIS_NODE(OTNT_MANDATORY, 0x00AD), - /* 6D */ ZYDIS_NODE(OTNT_MANDATORY, 0x00AE), - /* 6E */ ZYDIS_NODE(OTNT_MANDATORY, 0x00AF), - /* 6F */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B0), - /* 70 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B1), - /* 71 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B2), - /* 72 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B3), - /* 73 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B4), - /* 74 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B5), - /* 75 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B6), - /* 76 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B7), - /* 77 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B8), - /* 78 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00B9), - /* 79 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00BA), - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_NODE(OTNT_MANDATORY, 0x00BB), - /* 7D */ ZYDIS_NODE(OTNT_MANDATORY, 0x00BC), - /* 7E */ ZYDIS_NODE(OTNT_MANDATORY, 0x00BD), - /* 7F */ ZYDIS_NODE(OTNT_MANDATORY, 0x00BE), - /* 80 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00BF), - /* 81 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C0), - /* 82 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C1), - /* 83 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C2), - /* 84 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C3), - /* 85 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C4), - /* 86 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C5), - /* 87 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C6), - /* 88 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C7), - /* 89 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C8), - /* 8A */ ZYDIS_NODE(OTNT_MANDATORY, 0x00C9), - /* 8B */ ZYDIS_NODE(OTNT_MANDATORY, 0x00CA), - /* 8C */ ZYDIS_NODE(OTNT_MANDATORY, 0x00CB), - /* 8D */ ZYDIS_NODE(OTNT_MANDATORY, 0x00CC), - /* 8E */ ZYDIS_NODE(OTNT_MANDATORY, 0x00CD), - /* 8F */ ZYDIS_NODE(OTNT_MANDATORY, 0x00CE), - /* 90 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00CF), - /* 91 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D0), - /* 92 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D1), - /* 93 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D2), - /* 94 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D3), - /* 95 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D4), - /* 96 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D5), - /* 97 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D6), - /* 98 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D7), - /* 99 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D8), - /* 9A */ ZYDIS_NODE(OTNT_MANDATORY, 0x00D9), - /* 9B */ ZYDIS_NODE(OTNT_MANDATORY, 0x00DA), - /* 9C */ ZYDIS_NODE(OTNT_MANDATORY, 0x00DB), - /* 9D */ ZYDIS_NODE(OTNT_MANDATORY, 0x00DC), - /* 9E */ ZYDIS_NODE(OTNT_MANDATORY, 0x00DD), - /* 9F */ ZYDIS_NODE(OTNT_MANDATORY, 0x00DE), - /* A0 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00DF), - /* A1 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E0), - /* A2 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E1), - /* A3 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E2), - /* A4 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E3), - /* A5 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E4), - /* A6 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0003), - /* A7 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0004), - /* A8 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E7), - /* A9 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E8), - /* AA */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E9), - /* AB */ ZYDIS_NODE(OTNT_MANDATORY, 0x00EA), - /* AC */ ZYDIS_NODE(OTNT_MANDATORY, 0x00EB), - /* AD */ ZYDIS_NODE(OTNT_MANDATORY, 0x00EC), - /* AE */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0005), - /* AF */ ZYDIS_NODE(OTNT_MANDATORY, 0x00EF), - /* B0 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F0), - /* B1 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F1), - /* B2 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F2), - /* B3 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F3), - /* B4 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F4), - /* B5 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F5), - /* B6 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F6), - /* B7 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F7), - /* B8 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F8), - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_NODE(OTNT_MANDATORY, 0x00F9), - /* BB */ ZYDIS_NODE(OTNT_MANDATORY, 0x00FA), - /* BC */ ZYDIS_NODE(OTNT_MANDATORY, 0x00FB), - /* BD */ ZYDIS_NODE(OTNT_MANDATORY, 0x00FC), - /* BE */ ZYDIS_NODE(OTNT_MANDATORY, 0x00FD), - /* BF */ ZYDIS_NODE(OTNT_MANDATORY, 0x00FE), - /* C0 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00FF), - /* C1 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0100), - /* C2 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0101), - /* C3 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0102), - /* C4 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0103), - /* C5 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0104), - /* C6 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0105), - /* C7 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0006), - /* C8 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0108), - /* C9 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0109), - /* CA */ ZYDIS_NODE(OTNT_MANDATORY, 0x010A), - /* CB */ ZYDIS_NODE(OTNT_MANDATORY, 0x010B), - /* CC */ ZYDIS_NODE(OTNT_MANDATORY, 0x010C), - /* CD */ ZYDIS_NODE(OTNT_MANDATORY, 0x010D), - /* CE */ ZYDIS_NODE(OTNT_MANDATORY, 0x010E), - /* CF */ ZYDIS_NODE(OTNT_MANDATORY, 0x010F), - /* D0 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0110), - /* D1 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0111), - /* D2 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0112), - /* D3 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0113), - /* D4 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0114), - /* D5 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0115), - /* D6 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0116), - /* D7 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0117), - /* D8 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0118), - /* D9 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0119), - /* DA */ ZYDIS_NODE(OTNT_MANDATORY, 0x011A), - /* DB */ ZYDIS_NODE(OTNT_MANDATORY, 0x011B), - /* DC */ ZYDIS_NODE(OTNT_MANDATORY, 0x011C), - /* DD */ ZYDIS_NODE(OTNT_MANDATORY, 0x011D), - /* DE */ ZYDIS_NODE(OTNT_MANDATORY, 0x011E), - /* DF */ ZYDIS_NODE(OTNT_MANDATORY, 0x011F), - /* E0 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0120), - /* E1 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0121), - /* E2 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0122), - /* E3 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0123), - /* E4 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0124), - /* E5 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0125), - /* E6 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0126), - /* E7 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0127), - /* E8 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0128), - /* E9 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0129), - /* EA */ ZYDIS_NODE(OTNT_MANDATORY, 0x012A), - /* EB */ ZYDIS_NODE(OTNT_MANDATORY, 0x012B), - /* EC */ ZYDIS_NODE(OTNT_MANDATORY, 0x012C), - /* ED */ ZYDIS_NODE(OTNT_MANDATORY, 0x012D), - /* EE */ ZYDIS_NODE(OTNT_MANDATORY, 0x012E), - /* EF */ ZYDIS_NODE(OTNT_MANDATORY, 0x012F), - /* F0 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0130), - /* F1 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0131), - /* F2 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0132), - /* F3 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0133), - /* F4 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0134), - /* F5 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0135), - /* F6 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0136), - /* F7 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0007), - /* F8 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0138), - /* F9 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0139), - /* FA */ ZYDIS_NODE(OTNT_MANDATORY, 0x013A), - /* FB */ ZYDIS_NODE(OTNT_MANDATORY, 0x013B), - /* FC */ ZYDIS_NODE(OTNT_MANDATORY, 0x013C), - /* FD */ ZYDIS_NODE(OTNT_MANDATORY, 0x013D), - /* FE */ ZYDIS_NODE(OTNT_MANDATORY, 0x013E), - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0032), - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0033), - /* 02 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0034), - /* 03 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0035), - /* 04 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0036), - /* 05 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0037), - /* 06 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0038), - /* 07 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0039), - /* 08 */ ZYDIS_NODE(OTNT_MANDATORY, 0x003A), - /* 09 */ ZYDIS_NODE(OTNT_MANDATORY, 0x003B), - /* 0A */ ZYDIS_NODE(OTNT_MANDATORY, 0x003C), - /* 0B */ ZYDIS_NODE(OTNT_MANDATORY, 0x003D), - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ ZYDIS_NODE(OTNT_MANDATORY, 0x003E), - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_NODE(OTNT_MANDATORY, 0x003F), - /* 15 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0040), - /* 16 */ ZYDIS_INVALID, - /* 17 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0041), - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_NODE(OTNT_MANDATORY, 0x0042), - /* 1D */ ZYDIS_NODE(OTNT_MANDATORY, 0x0043), - /* 1E */ ZYDIS_NODE(OTNT_MANDATORY, 0x0044), - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0045), - /* 21 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0046), - /* 22 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0047), - /* 23 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0048), - /* 24 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0049), - /* 25 */ ZYDIS_NODE(OTNT_MANDATORY, 0x004A), - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_NODE(OTNT_MANDATORY, 0x004B), - /* 29 */ ZYDIS_NODE(OTNT_MANDATORY, 0x004C), - /* 2A */ ZYDIS_NODE(OTNT_MANDATORY, 0x004D), - /* 2B */ ZYDIS_NODE(OTNT_MANDATORY, 0x004E), - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_NODE(OTNT_MANDATORY, 0x004F), - /* 31 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0050), - /* 32 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0051), - /* 33 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0052), - /* 34 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0053), - /* 35 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0054), - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0055), - /* 38 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0056), - /* 39 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0057), - /* 3A */ ZYDIS_NODE(OTNT_MANDATORY, 0x0058), - /* 3B */ ZYDIS_NODE(OTNT_MANDATORY, 0x0059), - /* 3C */ ZYDIS_NODE(OTNT_MANDATORY, 0x005A), - /* 3D */ ZYDIS_NODE(OTNT_MANDATORY, 0x005B), - /* 3E */ ZYDIS_NODE(OTNT_MANDATORY, 0x005C), - /* 3F */ ZYDIS_NODE(OTNT_MANDATORY, 0x005D), - /* 40 */ ZYDIS_NODE(OTNT_MANDATORY, 0x005E), - /* 41 */ ZYDIS_NODE(OTNT_MANDATORY, 0x005F), - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0060), - /* 81 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0061), - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_NODE(OTNT_MANDATORY, 0x0062), - /* DC */ ZYDIS_NODE(OTNT_MANDATORY, 0x0063), - /* DD */ ZYDIS_NODE(OTNT_MANDATORY, 0x0064), - /* DE */ ZYDIS_NODE(OTNT_MANDATORY, 0x0065), - /* DF */ ZYDIS_NODE(OTNT_MANDATORY, 0x0066), - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0067), - /* F1 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0068), - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0069), - /* 09 */ ZYDIS_NODE(OTNT_MANDATORY, 0x006A), - /* 0A */ ZYDIS_NODE(OTNT_MANDATORY, 0x006B), - /* 0B */ ZYDIS_NODE(OTNT_MANDATORY, 0x006C), - /* 0C */ ZYDIS_NODE(OTNT_MANDATORY, 0x006D), - /* 0D */ ZYDIS_NODE(OTNT_MANDATORY, 0x006E), - /* 0E */ ZYDIS_NODE(OTNT_MANDATORY, 0x006F), - /* 0F */ ZYDIS_NODE(OTNT_MANDATORY, 0x0070), - /* 10 */ ZYDIS_INVALID, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0071), - /* 15 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0072), - /* 16 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0073), - /* 17 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0074), - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0075), - /* 21 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0076), - /* 22 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0077), - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ ZYDIS_INVALID, - /* 2B */ ZYDIS_INVALID, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0078), - /* 41 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0079), - /* 42 */ ZYDIS_NODE(OTNT_MANDATORY, 0x007A), - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_NODE(OTNT_MANDATORY, 0x007B), - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ ZYDIS_NODE(OTNT_MANDATORY, 0x007C), - /* 61 */ ZYDIS_NODE(OTNT_MANDATORY, 0x007D), - /* 62 */ ZYDIS_NODE(OTNT_MANDATORY, 0x007E), - /* 63 */ ZYDIS_NODE(OTNT_MANDATORY, 0x007F), - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_NODE(OTNT_MANDATORY, 0x0080), - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ 0x05E6, - /* 11 */ 0x05E5, - /* 12 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0008), - /* 13 */ 0x05CC, - /* 14 */ 0x0698, - /* 15 */ 0x0696, - /* 16 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0009), - /* 17 */ 0x05C7, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x05B8, - /* 29 */ 0x05B7, - /* 2A */ ZYDIS_INVALID, - /* 2B */ 0x05D2, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ 0x0694, - /* 2F */ 0x0581, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ 0x05CE, - /* 51 */ 0x0689, - /* 52 */ 0x0684, - /* 53 */ 0x067E, - /* 54 */ 0x0575, - /* 55 */ 0x0573, - /* 56 */ 0x05F6, - /* 57 */ 0x069A, - /* 58 */ 0x0567, - /* 59 */ 0x05EF, - /* 5A */ 0x0587, - /* 5B */ 0x0583, - /* 5C */ 0x068E, - /* 5D */ 0x05AF, - /* 5E */ 0x0593, - /* 5F */ 0x05A9, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_NODE(OTNT_VEXL, 0x0000), - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x000A), - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ 0x057D, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ 0x0687, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_INVALID, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ 0x05E4, - /* 11 */ 0x05E3, - /* 12 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x000B), - /* 13 */ 0x05CA, - /* 14 */ 0x0697, - /* 15 */ 0x0695, - /* 16 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x000C), - /* 17 */ 0x05C5, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x05B5, - /* 29 */ 0x05B6, - /* 2A */ ZYDIS_INVALID, - /* 2B */ 0x05D1, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ 0x0693, - /* 2F */ 0x0580, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ 0x05CD, - /* 51 */ 0x0688, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ 0x0574, - /* 55 */ 0x0572, - /* 56 */ 0x05F5, - /* 57 */ 0x0699, - /* 58 */ 0x0566, - /* 59 */ 0x05EE, - /* 5A */ 0x0585, - /* 5B */ 0x0586, - /* 5C */ 0x068D, - /* 5D */ 0x05AE, - /* 5E */ 0x0592, - /* 5F */ 0x05A8, - /* 60 */ 0x0679, - /* 61 */ 0x067C, - /* 62 */ 0x067A, - /* 63 */ 0x05FB, - /* 64 */ 0x0614, - /* 65 */ 0x0617, - /* 66 */ 0x0615, - /* 67 */ 0x05FD, - /* 68 */ 0x0675, - /* 69 */ 0x0678, - /* 6A */ 0x0676, - /* 6B */ 0x05FA, - /* 6C */ 0x067B, - /* 6D */ 0x0677, - /* 6E */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0014), - /* 6F */ 0x05BF, - /* 70 */ 0x0654, - /* 71 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x001B), - /* 72 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x001C), - /* 73 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x001D), - /* 74 */ 0x060E, - /* 75 */ 0x0611, - /* 76 */ 0x060F, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ 0x059C, - /* 7D */ 0x059E, - /* 7E */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0015), - /* 7F */ 0x05C0, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ 0x057C, - /* C3 */ ZYDIS_INVALID, - /* C4 */ 0x0630, - /* C5 */ 0x0623, - /* C6 */ 0x0686, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ 0x056A, - /* D1 */ 0x066B, - /* D2 */ 0x0665, - /* D3 */ 0x0669, - /* D4 */ 0x0600, - /* D5 */ 0x0650, - /* D6 */ 0x05D4, - /* D7 */ ZYDIS_NODE(OTNT_VEXL, 0x0004), - /* D8 */ 0x0671, - /* D9 */ 0x0672, - /* DA */ 0x063C, - /* DB */ 0x0607, - /* DC */ 0x0603, - /* DD */ 0x0604, - /* DE */ 0x0636, - /* DF */ 0x0608, - /* E0 */ 0x0609, - /* E1 */ 0x0663, - /* E2 */ 0x0662, - /* E3 */ 0x060A, - /* E4 */ 0x064D, - /* E5 */ 0x064E, - /* E6 */ 0x058E, - /* E7 */ 0x05CF, - /* E8 */ 0x066F, - /* E9 */ 0x0670, - /* EA */ 0x063B, - /* EB */ 0x0651, - /* EC */ 0x0601, - /* ED */ 0x0602, - /* EE */ 0x0635, - /* EF */ 0x067D, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_NODE(OTNT_VEXL, 0x0005), - /* F2 */ ZYDIS_NODE(OTNT_VEXL, 0x0006), - /* F3 */ ZYDIS_NODE(OTNT_VEXL, 0x0007), - /* F4 */ ZYDIS_INVALID, - /* F5 */ 0x0632, - /* F6 */ 0x0652, - /* F7 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x000D), - /* F8 */ 0x066C, - /* F9 */ 0x0673, - /* FA */ 0x066D, - /* FB */ 0x066E, - /* FC */ 0x05FE, - /* FD */ 0x0605, - /* FE */ 0x05FF, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0653, - /* 01 */ 0x0627, - /* 02 */ 0x0625, - /* 03 */ 0x0626, - /* 04 */ 0x0631, - /* 05 */ 0x062B, - /* 06 */ 0x0629, - /* 07 */ 0x062A, - /* 08 */ 0x0657, - /* 09 */ 0x0659, - /* 0A */ 0x0658, - /* 0B */ 0x064C, - /* 0C */ ZYDIS_NODE(OTNT_VEXW, 0x0000), - /* 0D */ ZYDIS_NODE(OTNT_VEXW, 0x0001), - /* 0E */ ZYDIS_NODE(OTNT_VEXW, 0x0002), - /* 0F */ ZYDIS_NODE(OTNT_VEXW, 0x0003), - /* 10 */ ZYDIS_INVALID, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_INVALID, - /* 17 */ 0x0674, - /* 18 */ ZYDIS_NODE(OTNT_VEXW, 0x0004), - /* 19 */ ZYDIS_NODE(OTNT_VEXW, 0x0005), - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ 0x05F7, - /* 1D */ 0x05F9, - /* 1E */ 0x05F8, - /* 1F */ ZYDIS_INVALID, - /* 20 */ 0x0642, - /* 21 */ 0x0640, - /* 22 */ 0x0641, - /* 23 */ 0x0643, - /* 24 */ 0x0644, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x064B, - /* 29 */ 0x0610, - /* 2A */ 0x05D0, - /* 2B */ 0x05FC, - /* 2C */ ZYDIS_NODE(OTNT_VEXW, 0x0006), - /* 2D */ ZYDIS_NODE(OTNT_VEXW, 0x0007), - /* 2E */ ZYDIS_NODE(OTNT_VEXW, 0x0008), - /* 2F */ ZYDIS_NODE(OTNT_VEXW, 0x0009), - /* 30 */ 0x0647, - /* 31 */ 0x0645, - /* 32 */ 0x0646, - /* 33 */ 0x0649, - /* 34 */ 0x064A, - /* 35 */ 0x0648, - /* 36 */ ZYDIS_INVALID, - /* 37 */ 0x0616, - /* 38 */ 0x0639, - /* 39 */ 0x063A, - /* 3A */ 0x063E, - /* 3B */ 0x063D, - /* 3C */ 0x0633, - /* 3D */ 0x0634, - /* 3E */ 0x0638, - /* 3F */ 0x0637, - /* 40 */ 0x064F, - /* 41 */ 0x0628, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ 0x0570, - /* DC */ 0x056E, - /* DD */ 0x056F, - /* DE */ 0x056C, - /* DF */ 0x056D, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_NODE(OTNT_VEXW, 0x000A), - /* 05 */ ZYDIS_NODE(OTNT_VEXW, 0x000B), - /* 06 */ ZYDIS_NODE(OTNT_VEXW, 0x000C), - /* 07 */ ZYDIS_INVALID, - /* 08 */ 0x0681, - /* 09 */ 0x0680, - /* 0A */ 0x0683, - /* 0B */ 0x0682, - /* 0C */ 0x0577, - /* 0D */ 0x0576, - /* 0E */ 0x060C, - /* 0F */ 0x0606, - /* 10 */ ZYDIS_INVALID, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_NODE(OTNT_VEXW, 0x000D), - /* 15 */ 0x0624, - /* 16 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0016), - /* 17 */ 0x059B, - /* 18 */ ZYDIS_NODE(OTNT_VEXW, 0x0011), - /* 19 */ ZYDIS_NODE(OTNT_VEXW, 0x0012), - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_NODE(OTNT_VEXW, 0x0013), - /* 21 */ 0x05A1, - /* 22 */ ZYDIS_NODE(OTNT_MODE, 0x0025), - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ ZYDIS_INVALID, - /* 2B */ ZYDIS_INVALID, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ 0x0597, - /* 41 */ 0x0596, - /* 42 */ 0x05E7, - /* 43 */ ZYDIS_INVALID, - /* 44 */ 0x060D, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_NODE(OTNT_VEXW, 0x0016), - /* 4B */ ZYDIS_NODE(OTNT_VEXW, 0x0017), - /* 4C */ ZYDIS_NODE(OTNT_VEXW, 0x0018), - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ 0x0613, - /* 61 */ 0x0612, - /* 62 */ 0x0619, - /* 63 */ 0x0618, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ 0x0571, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x000E), - /* 11 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x000F), - /* 12 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0010), - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0011), - /* 17 */ ZYDIS_INVALID, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ 0x058B, - /* 2B */ ZYDIS_INVALID, - /* 2C */ 0x0591, - /* 2D */ 0x058D, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ 0x068B, - /* 52 */ 0x0685, - /* 53 */ 0x067F, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ 0x0569, - /* 59 */ 0x05F1, - /* 5A */ 0x058C, - /* 5B */ 0x058F, - /* 5C */ 0x0690, - /* 5D */ 0x05B1, - /* 5E */ 0x0595, - /* 5F */ 0x05AB, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ 0x05C2, - /* 70 */ 0x0655, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ 0x05D3, - /* 7F */ 0x05C1, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ 0x057F, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_INVALID, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ 0x0582, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_INVALID, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0012), - /* 11 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0013), - /* 12 */ ZYDIS_NODE(OTNT_MODRM_MOD, 0x0014), - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_INVALID, - /* 17 */ ZYDIS_INVALID, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ 0x058A, - /* 2B */ ZYDIS_INVALID, - /* 2C */ 0x0590, - /* 2D */ 0x0588, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ 0x068A, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ 0x0568, - /* 59 */ 0x05F0, - /* 5A */ 0x0589, - /* 5B */ ZYDIS_INVALID, - /* 5C */ 0x068F, - /* 5D */ 0x05B0, - /* 5E */ 0x0594, - /* 5F */ 0x05AA, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ 0x0656, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ 0x059D, - /* 7D */ 0x059F, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ ZYDIS_INVALID, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ ZYDIS_INVALID, - /* 8F */ ZYDIS_INVALID, - /* 90 */ ZYDIS_INVALID, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ ZYDIS_INVALID, - /* 95 */ ZYDIS_INVALID, - /* 96 */ ZYDIS_INVALID, - /* 97 */ ZYDIS_INVALID, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ ZYDIS_INVALID, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ ZYDIS_INVALID, - /* 9F */ ZYDIS_INVALID, - /* A0 */ ZYDIS_INVALID, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ ZYDIS_INVALID, - /* A5 */ ZYDIS_INVALID, - /* A6 */ ZYDIS_INVALID, - /* A7 */ ZYDIS_INVALID, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ ZYDIS_INVALID, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ ZYDIS_INVALID, - /* AF */ ZYDIS_INVALID, - /* B0 */ ZYDIS_INVALID, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ ZYDIS_INVALID, - /* B5 */ ZYDIS_INVALID, - /* B6 */ ZYDIS_INVALID, - /* B7 */ ZYDIS_INVALID, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ ZYDIS_INVALID, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ ZYDIS_INVALID, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ 0x057E, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ 0x056B, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_INVALID, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ 0x0584, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ 0x05A2, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeModrmMod[][2] = -{ - { - /* 00 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0001), - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0002), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MANDATORY, 0x000F), - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0010), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0014), - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0015), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E5), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00E6), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00ED), - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x00EE), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0106), - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0107), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_NODE(OTNT_MANDATORY, 0x0137), - }, - { - /* 00 */ 0x05CB, - /* 01 */ 0x05C3, - }, - { - /* 00 */ 0x05C6, - /* 01 */ 0x05C8, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x001A), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05C9, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05C4, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05A3, - }, - { - /* 00 */ 0x05E2, - /* 01 */ 0x05DF, - }, - { - /* 00 */ 0x05E0, - /* 01 */ 0x05E1, - }, - { - /* 00 */ 0x05DE, - /* 01 */ 0x05DD, - }, - { - /* 00 */ 0x05DB, - /* 01 */ 0x05DC, - }, - { - /* 00 */ 0x05DA, - /* 01 */ 0x05D9, - }, - { - /* 00 */ 0x05D8, - /* 01 */ 0x05D7, - }, - { - /* 00 */ 0x05BE, - /* 01 */ 0x05BD, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0024), - /* 01 */ ZYDIS_NODE(OTNT_X87, 0x0000), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0025), - /* 01 */ ZYDIS_NODE(OTNT_X87, 0x0001), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0026), - /* 01 */ ZYDIS_NODE(OTNT_X87, 0x0002), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0027), - /* 01 */ ZYDIS_NODE(OTNT_X87, 0x0003), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0028), - /* 01 */ ZYDIS_NODE(OTNT_X87, 0x0004), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0029), - /* 01 */ ZYDIS_NODE(OTNT_X87, 0x0005), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x002A), - /* 01 */ ZYDIS_NODE(OTNT_X87, 0x0006), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x002B), - /* 01 */ ZYDIS_NODE(OTNT_X87, 0x0007), - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeModrmReg[][8] = -{ - { - /* 00 */ 0x0531, - /* 01 */ 0x0541, - /* 02 */ 0x02FC, - /* 03 */ 0x0309, - /* 04 */ 0x0598, - /* 05 */ 0x0599, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0516, - /* 01 */ 0x052F, - /* 02 */ 0x02F9, - /* 03 */ 0x02FB, - /* 04 */ 0x0533, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x02FE, - /* 07 */ 0x02C0, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0000), - /* 01 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0001), - /* 02 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0002), - /* 03 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0003), - /* 04 */ 0x0532, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x02FD, - /* 07 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0004), - }, - { - /* 00 */ 0x0455, - /* 01 */ 0x0456, - /* 02 */ 0x0457, - /* 03 */ 0x0458, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0486, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0479, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x0470, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0485, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0478, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x0473, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x047E, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0475, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x0468, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x047C, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0476, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x046A, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0482, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x046D, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0481, - /* 03 */ 0x0480, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x046C, - /* 07 */ 0x046B, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0005), - /* 01 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0006), - /* 02 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0007), - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0008), - /* 01 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x0009), - /* 02 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x000A), - /* 03 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x000B), - /* 04 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x000C), - /* 05 */ ZYDIS_NODE(OTNT_MODRM_RM, 0x000D), - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0296, - /* 01 */ 0x0295, - /* 02 */ 0x02F2, - /* 03 */ 0x053C, - /* 04 */ 0x06C0, - /* 05 */ 0x06BF, - /* 06 */ ZYDIS_INVALID, - /* 07 */ 0x0055, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ 0x02F7, - /* 06 */ 0x0310, - /* 07 */ 0x0515, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0043, - /* 05 */ 0x0049, - /* 06 */ 0x0047, - /* 07 */ 0x0045, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0006), - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_NODE(OTNT_VENDOR, 0x0015), - /* 07 */ ZYDIS_NODE(OTNT_VENDOR, 0x0016), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_NODE(OTNT_VENDOR, 0x0017), - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_NODE(OTNT_VENDOR, 0x0018), - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x04D3, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x000F, - /* 01 */ 0x0392, - /* 02 */ 0x0005, - /* 03 */ 0x04FF, - /* 04 */ 0x0028, - /* 05 */ 0x0544, - /* 06 */ 0x06BC, - /* 07 */ 0x006E, - }, - { - /* 00 */ 0x0013, - /* 01 */ 0x0391, - /* 02 */ 0x0009, - /* 03 */ 0x0500, - /* 04 */ 0x0029, - /* 05 */ 0x0543, - /* 06 */ 0x06B5, - /* 07 */ 0x0072, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x0015), - /* 01 */ ZYDIS_NODE(OTNT_MODE, 0x0016), - /* 02 */ ZYDIS_NODE(OTNT_MODE, 0x0017), - /* 03 */ ZYDIS_NODE(OTNT_MODE, 0x0018), - /* 04 */ ZYDIS_NODE(OTNT_MODE, 0x0019), - /* 05 */ ZYDIS_NODE(OTNT_MODE, 0x001A), - /* 06 */ ZYDIS_NODE(OTNT_MODE, 0x001B), - /* 07 */ ZYDIS_NODE(OTNT_MODE, 0x001C), - }, - { - /* 00 */ 0x0012, - /* 01 */ 0x0397, - /* 02 */ 0x0008, - /* 03 */ 0x04FD, - /* 04 */ 0x002B, - /* 05 */ 0x0545, - /* 06 */ 0x06B4, - /* 07 */ 0x0071, - }, - { - /* 00 */ 0x0440, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04DE, - /* 01 */ 0x04E6, - /* 02 */ 0x04C6, - /* 03 */ 0x04D0, - /* 04 */ 0x0517, - /* 05 */ 0x0526, - /* 06 */ 0x051D, - /* 07 */ 0x04F3, - }, - { - /* 00 */ 0x04DF, - /* 01 */ 0x04E7, - /* 02 */ 0x04C7, - /* 03 */ 0x04CE, - /* 04 */ 0x051C, - /* 05 */ 0x0528, - /* 06 */ 0x051E, - /* 07 */ 0x04F6, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x068C, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x066A, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0664, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_NODE(OTNT_VEXL, 0x0001), - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0666, - /* 03 */ ZYDIS_INVALID, - /* 04 */ 0x0661, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_NODE(OTNT_VEXL, 0x0002), - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0668, - /* 03 */ 0x0667, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_NODE(OTNT_VEXL, 0x0003), - /* 07 */ 0x065C, - }, - { - /* 00 */ 0x0333, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0332, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04DD, - /* 01 */ 0x04E5, - /* 02 */ 0x04C8, - /* 03 */ 0x04CD, - /* 04 */ 0x0522, - /* 05 */ 0x0527, - /* 06 */ 0x051F, - /* 07 */ 0x04F1, - }, - { - /* 00 */ 0x04DC, - /* 01 */ 0x04E2, - /* 02 */ 0x04C5, - /* 03 */ 0x04CF, - /* 04 */ 0x0520, - /* 05 */ 0x052A, - /* 06 */ 0x0519, - /* 07 */ 0x04F4, - }, - { - /* 00 */ 0x04E1, - /* 01 */ 0x04E3, - /* 02 */ 0x04C3, - /* 03 */ 0x04CC, - /* 04 */ 0x0521, - /* 05 */ 0x0529, - /* 06 */ 0x051A, - /* 07 */ 0x04F2, - }, - { - /* 00 */ 0x04E0, - /* 01 */ 0x04E4, - /* 02 */ 0x04C4, - /* 03 */ 0x04CB, - /* 04 */ 0x0518, - /* 05 */ 0x0525, - /* 06 */ 0x051B, - /* 07 */ 0x04F5, - }, - { - /* 00 */ 0x00BB, - /* 01 */ 0x01CF, - /* 02 */ 0x0119, - /* 03 */ 0x013D, - /* 04 */ 0x022C, - /* 05 */ 0x0245, - /* 06 */ 0x0166, - /* 07 */ 0x0171, - }, - { - /* 00 */ 0x01BC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x01FF, - /* 03 */ 0x020B, - /* 04 */ 0x01C3, - /* 05 */ 0x01C2, - /* 06 */ 0x01EB, - /* 07 */ 0x01EA, - }, - { - /* 00 */ 0x019A, - /* 01 */ 0x01A8, - /* 02 */ 0x019C, - /* 03 */ 0x019F, - /* 04 */ 0x01B3, - /* 05 */ 0x01B5, - /* 06 */ 0x01A1, - /* 07 */ 0x01A3, - }, - { - /* 00 */ 0x01A4, - /* 01 */ 0x01B1, - /* 02 */ 0x01AB, - /* 03 */ 0x01AD, - /* 04 */ ZYDIS_INVALID, - /* 05 */ 0x01BA, - /* 06 */ ZYDIS_INVALID, - /* 07 */ 0x020A, - }, - { - /* 00 */ 0x00BA, - /* 01 */ 0x01D2, - /* 02 */ 0x0118, - /* 03 */ 0x013E, - /* 04 */ 0x022B, - /* 05 */ 0x0243, - /* 06 */ 0x0158, - /* 07 */ 0x017A, - }, - { - /* 00 */ 0x01BB, - /* 01 */ 0x01AF, - /* 02 */ 0x01FE, - /* 03 */ 0x0209, - /* 04 */ 0x01F3, - /* 05 */ ZYDIS_INVALID, - /* 06 */ 0x01E8, - /* 07 */ 0x01ED, - }, - { - /* 00 */ 0x019B, - /* 01 */ 0x01A7, - /* 02 */ 0x019D, - /* 03 */ 0x019E, - /* 04 */ 0x01B2, - /* 05 */ 0x01B4, - /* 06 */ 0x01A0, - /* 07 */ 0x01A2, - }, - { - /* 00 */ 0x01A6, - /* 01 */ 0x01B0, - /* 02 */ 0x01AA, - /* 03 */ 0x01AE, - /* 04 */ 0x00D2, - /* 05 */ 0x01A5, - /* 06 */ 0x00D3, - /* 07 */ 0x01AC, - }, - { - /* 00 */ 0x0557, - /* 01 */ 0x0558, - /* 02 */ 0x038E, - /* 03 */ 0x0385, - /* 04 */ 0x037E, - /* 05 */ 0x02A5, - /* 06 */ 0x00AC, - /* 07 */ 0x02A0, - }, - { - /* 00 */ 0x0559, - /* 01 */ 0x055A, - /* 02 */ 0x038D, - /* 03 */ 0x0384, - /* 04 */ 0x037D, - /* 05 */ 0x02A3, - /* 06 */ 0x00AB, - /* 07 */ 0x02A1, - }, - { - /* 00 */ 0x02AF, - /* 01 */ 0x00A4, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02B0, - /* 01 */ 0x00A5, - /* 02 */ ZYDIS_NODE(OTNT_MODE, 0x002C), - /* 03 */ 0x004C, - /* 04 */ 0x02D9, - /* 05 */ 0x02DA, - /* 06 */ 0x04B8, - /* 07 */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeModrmRm[][8] = -{ - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_NODE(OTNT_VENDOR, 0x0000), - /* 02 */ ZYDIS_NODE(OTNT_VENDOR, 0x0001), - /* 03 */ ZYDIS_NODE(OTNT_VENDOR, 0x0002), - /* 04 */ ZYDIS_NODE(OTNT_VENDOR, 0x0003), - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0315, - /* 01 */ 0x0383, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06B1, - /* 01 */ 0x06C1, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VENDOR, 0x0004), - /* 01 */ ZYDIS_NODE(OTNT_VENDOR, 0x0005), - /* 02 */ ZYDIS_NODE(OTNT_VENDOR, 0x0006), - /* 03 */ ZYDIS_NODE(OTNT_VENDOR, 0x0007), - /* 04 */ ZYDIS_NODE(OTNT_VENDOR, 0x0008), - /* 05 */ ZYDIS_NODE(OTNT_VENDOR, 0x0009), - /* 06 */ ZYDIS_NODE(OTNT_VENDOR, 0x000A), - /* 07 */ ZYDIS_NODE(OTNT_VENDOR, 0x000B), - }, - { - /* 00 */ 0x0550, - /* 01 */ ZYDIS_NODE(OTNT_VENDOR, 0x000C), - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0316, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06C2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06C3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06C4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06AF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06AC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06AE, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06AD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06B0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeMandatory[][4] = -{ - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0000), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0001), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0002), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02F0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0307, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0551, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0058, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0556, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02BD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x069E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0561, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0454, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0189, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0379, - /* 01 */ 0x0368, - /* 02 */ 0x0371, - /* 03 */ 0x0377, - }, - { - /* 00 */ 0x0378, - /* 01 */ 0x036A, - /* 02 */ 0x0370, - /* 03 */ 0x0376, - }, - { - /* 00 */ 0x0355, - /* 01 */ 0x0345, - /* 02 */ 0x036D, - /* 03 */ 0x0353, - }, - { - /* 00 */ 0x034C, - /* 01 */ 0x0346, - /* 02 */ 0x036E, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0354, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0352, - }, - { - /* 00 */ 0x0565, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0564, - }, - { - /* 00 */ 0x0563, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0562, - }, - { - /* 00 */ 0x0350, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x036B, - /* 03 */ 0x034E, - }, - { - /* 00 */ 0x0351, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x036C, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x034F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x034D, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0003), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x038A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x038B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x038C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0389, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0386, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0387, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0388, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0325, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0328, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0327, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0326, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x033A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0338, - }, - { - /* 00 */ 0x0339, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0337, - }, - { - /* 00 */ 0x008D, - /* 01 */ 0x0093, - /* 02 */ 0x0094, - /* 03 */ 0x008C, - }, - { - /* 00 */ 0x035C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x035B, - }, - { - /* 00 */ 0x009A, - /* 01 */ 0x009B, - /* 02 */ 0x009C, - /* 03 */ 0x0098, - }, - { - /* 00 */ 0x0090, - /* 01 */ 0x0091, - /* 02 */ 0x0096, - /* 03 */ 0x008A, - }, - { - /* 00 */ 0x0560, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x055F, - }, - { - /* 00 */ 0x0082, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0081, - }, - { - /* 00 */ 0x069F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04D4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04D1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04D2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x0003), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x0004), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x029A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x045B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x045C, - }, - { - /* 00 */ 0x03FD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03FE, - }, - { - /* 00 */ 0x03FA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03F9, - }, - { - /* 00 */ 0x03FB, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03FC, - }, - { - /* 00 */ 0x040E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x040F, - }, - { - /* 00 */ 0x0405, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0404, - }, - { - /* 00 */ 0x0400, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0401, - }, - { - /* 00 */ 0x0402, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0403, - }, - { - /* 00 */ 0x0461, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0462, - }, - { - /* 00 */ 0x0466, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0465, - }, - { - /* 00 */ 0x0464, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0463, - }, - { - /* 00 */ 0x0431, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0432, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CA, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0037, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0036, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x049A, - }, - { - /* 00 */ 0x03A3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03A2, - }, - { - /* 00 */ 0x03A6, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03A7, - }, - { - /* 00 */ 0x03A4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03A5, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0426, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0424, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0425, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0428, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0429, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0427, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0430, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D1, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0359, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03AC, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042C, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042B, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042E, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042F, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x042D, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DA, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x041A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x041B, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0421, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0420, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0412, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0413, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0419, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0418, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0438, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03FF, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_NODE(OTNT_MODE, 0x0005), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_NODE(OTNT_MODE, 0x0006), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0023, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0021, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0022, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x001F, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0020, - }, - { - /* 00 */ 0x033B, - /* 01 */ 0x0086, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x033C, - /* 01 */ 0x0085, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04E9, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04E8, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04EB, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04EA, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0035, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0034, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CB, - }, - { - /* 00 */ 0x03BF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C0, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DF, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03E3, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0000), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x00B5, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0408, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x02B7, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0001), - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x00B2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x00B1, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x037C, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CC, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D5, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D4, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DE, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DD, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0024, - }, - { - /* 00 */ 0x0067, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0064, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0063, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0069, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0066, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0068, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0065, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0061, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0060, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0062, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x005F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0357, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0356, - }, - { - /* 00 */ 0x0535, - /* 01 */ 0x0536, - /* 02 */ 0x0537, - /* 03 */ 0x0534, - }, - { - /* 00 */ 0x04ED, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x04EE, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04C9, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x04CA, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0032, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0031, - }, - { - /* 00 */ 0x0030, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x002F, - }, - { - /* 00 */ 0x039A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0399, - }, - { - /* 00 */ 0x06BE, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x06BD, - }, - { - /* 00 */ 0x001A, - /* 01 */ 0x001B, - /* 02 */ 0x001C, - /* 03 */ 0x0019, - }, - { - /* 00 */ 0x0380, - /* 01 */ 0x0381, - /* 02 */ 0x0382, - /* 03 */ 0x037F, - }, - { - /* 00 */ 0x008F, - /* 01 */ 0x0092, - /* 02 */ 0x0095, - /* 03 */ 0x008B, - }, - { - /* 00 */ 0x0088, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x0099, - /* 03 */ 0x008E, - }, - { - /* 00 */ 0x054D, - /* 01 */ 0x054E, - /* 02 */ 0x054F, - /* 03 */ 0x054C, - }, - { - /* 00 */ 0x0312, - /* 01 */ 0x0313, - /* 02 */ 0x0314, - /* 03 */ 0x0311, - }, - { - /* 00 */ 0x00AE, - /* 01 */ 0x00AF, - /* 02 */ 0x00B0, - /* 03 */ 0x00AD, - }, - { - /* 00 */ 0x030D, - /* 01 */ 0x030E, - /* 02 */ 0x030F, - /* 03 */ 0x030C, - }, - { - /* 00 */ 0x04A2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A3, - }, - { - /* 00 */ 0x04A7, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A8, - }, - { - /* 00 */ 0x04A5, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A4, - }, - { - /* 00 */ 0x03AA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03AB, - }, - { - /* 00 */ 0x03D7, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D6, - }, - { - /* 00 */ 0x03DC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03DB, - }, - { - /* 00 */ 0x03D8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D9, - }, - { - /* 00 */ 0x03AD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03AE, - }, - { - /* 00 */ 0x049B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x049C, - }, - { - /* 00 */ 0x04A1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A0, - }, - { - /* 00 */ 0x049E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x049D, - }, - { - /* 00 */ 0x03A8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03A9, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04A6, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x049F, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0002), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0003), - }, - { - /* 00 */ 0x0363, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x034A, - /* 03 */ 0x0348, - }, - { - /* 00 */ 0x0460, - /* 01 */ 0x045F, - /* 02 */ 0x045E, - /* 03 */ 0x045D, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0004), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0005), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0006), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0007), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0008), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0009), - }, - { - /* 00 */ 0x03CD, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CE, - }, - { - /* 00 */ 0x03D2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03D3, - }, - { - /* 00 */ 0x03D0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03CF, - }, - { - /* 00 */ 0x00B3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VENDOR, 0x0013), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VENDOR, 0x0014), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x029C, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x029B, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x029F, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x029E, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0004), - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x035F, - /* 03 */ ZYDIS_NODE(OTNT_OPERAND_SIZE, 0x0005), - }, - { - /* 00 */ 0x0362, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x034B, - /* 03 */ 0x0349, - }, - { - /* 00 */ 0x02E9, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02E3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02C9, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02DF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02CF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02E0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02CC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02C8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02EE, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02E7, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02EA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02E4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02D6, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02D4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02D7, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02D2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0512, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0507, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0506, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0509, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0508, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0505, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0514, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0511, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0513, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0510, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x050A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04B5, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x044A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0083, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0044, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0524, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0523, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x000A), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x000B), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04B6, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0444, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04EC, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x004A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x052C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x052B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x000C), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x000D), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02A2, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x007C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x007D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0308, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0048, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02F8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02FA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x037B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x037A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ 0x044D, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x000E), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0046, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0039, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0373, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0374, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06A1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06A0, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0075, - /* 01 */ 0x0077, - /* 02 */ 0x007A, - /* 03 */ 0x0074, - }, - { - /* 00 */ 0x035A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x040D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x040C, - }, - { - /* 00 */ 0x03E4, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03E5, - }, - { - /* 00 */ 0x052E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x052D, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x000F), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0010), - /* 03 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0011), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODRM_REG, 0x0012), - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0040, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x003B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0042, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0041, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x001E, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x001D, - }, - { - /* 00 */ 0x0487, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0488, - }, - { - /* 00 */ 0x047D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x047F, - }, - { - /* 00 */ 0x0483, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0484, - }, - { - /* 00 */ 0x03B3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B4, - }, - { - /* 00 */ 0x0439, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x043A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0347, - /* 02 */ 0x0366, - /* 03 */ 0x0361, - }, - { - /* 00 */ 0x0422, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0423, - }, - { - /* 00 */ 0x0494, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0493, - }, - { - /* 00 */ 0x0496, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0495, - }, - { - /* 00 */ 0x041E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x041F, - }, - { - /* 00 */ 0x03C1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C2, - }, - { - /* 00 */ 0x03BA, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B9, - }, - { - /* 00 */ 0x03BB, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03BC, - }, - { - /* 00 */ 0x0417, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0416, - }, - { - /* 00 */ 0x03C3, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C4, - }, - { - /* 00 */ 0x03C5, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C6, - }, - { - /* 00 */ 0x047A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x047B, - }, - { - /* 00 */ 0x0477, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0474, - }, - { - /* 00 */ 0x03C8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03C9, - }, - { - /* 00 */ 0x0434, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0435, - }, - { - /* 00 */ 0x0436, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0437, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0089, - /* 02 */ 0x0087, - /* 03 */ 0x0097, - }, - { - /* 00 */ 0x035D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0358, - }, - { - /* 00 */ 0x048F, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0490, - }, - { - /* 00 */ 0x0492, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0491, - }, - { - /* 00 */ 0x041C, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x041D, - }, - { - /* 00 */ 0x0453, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0452, - }, - { - /* 00 */ 0x03B6, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B5, - }, - { - /* 00 */ 0x03B8, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B7, - }, - { - /* 00 */ 0x0414, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0415, - }, - { - /* 00 */ 0x04C1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x04C2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02F1, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0472, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0471, - }, - { - /* 00 */ 0x0469, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0467, - }, - { - /* 00 */ 0x046E, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x046F, - }, - { - /* 00 */ 0x043B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x043C, - }, - { - /* 00 */ 0x0411, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0410, - }, - { - /* 00 */ 0x045A, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0459, - }, - { - /* 00 */ 0x030B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x030A, - }, - { - /* 00 */ 0x0489, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x048A, - }, - { - /* 00 */ 0x0498, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x0497, - }, - { - /* 00 */ 0x048B, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x048C, - }, - { - /* 00 */ 0x048D, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x048E, - }, - { - /* 00 */ 0x03AF, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B0, - }, - { - /* 00 */ 0x03BE, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03BD, - }, - { - /* 00 */ 0x03B1, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ 0x03B2, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeX87[][64] = -{ - { - /* 00 */ 0x00BC, - /* 01 */ 0x00BF, - /* 02 */ 0x00C2, - /* 03 */ 0x00C1, - /* 04 */ 0x00C0, - /* 05 */ 0x00C5, - /* 06 */ 0x00C3, - /* 07 */ 0x00C4, - /* 08 */ 0x01CE, - /* 09 */ 0x01CD, - /* 0A */ 0x01D9, - /* 0B */ 0x01DA, - /* 0C */ 0x01DB, - /* 0D */ 0x01D6, - /* 0E */ 0x01D7, - /* 0F */ 0x01D8, - /* 10 */ 0x011A, - /* 11 */ 0x011C, - /* 12 */ 0x011B, - /* 13 */ 0x0117, - /* 14 */ 0x0116, - /* 15 */ 0x011D, - /* 16 */ 0x011F, - /* 17 */ 0x011E, - /* 18 */ 0x013A, - /* 19 */ 0x0141, - /* 1A */ 0x013C, - /* 1B */ 0x0138, - /* 1C */ 0x013B, - /* 1D */ 0x0140, - /* 1E */ 0x013F, - /* 1F */ 0x0139, - /* 20 */ 0x022E, - /* 21 */ 0x0226, - /* 22 */ 0x0229, - /* 23 */ 0x0232, - /* 24 */ 0x0231, - /* 25 */ 0x022D, - /* 26 */ 0x022A, - /* 27 */ 0x0227, - /* 28 */ 0x0246, - /* 29 */ 0x024B, - /* 2A */ 0x024C, - /* 2B */ 0x024A, - /* 2C */ 0x0248, - /* 2D */ 0x0249, - /* 2E */ 0x0250, - /* 2F */ 0x0251, - /* 30 */ 0x0161, - /* 31 */ 0x0162, - /* 32 */ 0x0155, - /* 33 */ 0x015A, - /* 34 */ 0x0159, - /* 35 */ 0x0156, - /* 36 */ 0x0157, - /* 37 */ 0x0163, - /* 38 */ 0x0172, - /* 39 */ 0x016F, - /* 3A */ 0x0170, - /* 3B */ 0x0173, - /* 3C */ 0x0176, - /* 3D */ 0x0177, - /* 3E */ 0x0174, - /* 3F */ 0x0175, - }, - { - /* 00 */ 0x01BD, - /* 01 */ 0x01C0, - /* 02 */ 0x01BF, - /* 03 */ 0x01BE, - /* 04 */ 0x01B7, - /* 05 */ 0x01B6, - /* 06 */ 0x01B9, - /* 07 */ 0x01B8, - /* 08 */ 0x0281, - /* 09 */ 0x0282, - /* 0A */ 0x0283, - /* 0B */ 0x0280, - /* 0C */ 0x027D, - /* 0D */ 0x027E, - /* 0E */ 0x027F, - /* 0F */ 0x0284, - /* 10 */ 0x01E7, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_INVALID, - /* 17 */ ZYDIS_INVALID, - /* 18 */ 0x0213, - /* 19 */ 0x0212, - /* 1A */ 0x0215, - /* 1B */ 0x0214, - /* 1C */ 0x020F, - /* 1D */ 0x020E, - /* 1E */ 0x0211, - /* 1F */ 0x0210, - /* 20 */ 0x00D4, - /* 21 */ 0x00B7, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ 0x025A, - /* 25 */ 0x027C, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x01C1, - /* 29 */ 0x01C5, - /* 2A */ 0x01C4, - /* 2B */ 0x01C8, - /* 2C */ 0x01C6, - /* 2D */ 0x01C7, - /* 2E */ 0x01C9, - /* 2F */ ZYDIS_INVALID, - /* 30 */ 0x00B6, - /* 31 */ 0x0298, - /* 32 */ 0x01F1, - /* 33 */ 0x01EE, - /* 34 */ 0x0297, - /* 35 */ 0x01F0, - /* 36 */ 0x0154, - /* 37 */ 0x01A9, - /* 38 */ 0x01EF, - /* 39 */ 0x0299, - /* 3A */ 0x01F8, - /* 3B */ 0x01F7, - /* 3C */ 0x01F2, - /* 3D */ 0x01F5, - /* 3E */ 0x01F6, - /* 3F */ 0x0153, - }, - { - /* 00 */ 0x00D9, - /* 01 */ 0x00DA, - /* 02 */ 0x00DB, - /* 03 */ 0x00D6, - /* 04 */ 0x00D7, - /* 05 */ 0x00D8, - /* 06 */ 0x00DD, - /* 07 */ 0x00DC, - /* 08 */ 0x00E6, - /* 09 */ 0x00E7, - /* 0A */ 0x00E8, - /* 0B */ 0x00EC, - /* 0C */ 0x00ED, - /* 0D */ 0x00EB, - /* 0E */ 0x00E9, - /* 0F */ 0x00EA, - /* 10 */ 0x00E4, - /* 11 */ 0x00E5, - /* 12 */ 0x00E2, - /* 13 */ 0x00E3, - /* 14 */ 0x00DF, - /* 15 */ 0x00DE, - /* 16 */ 0x00E0, - /* 17 */ 0x00E1, - /* 18 */ 0x0113, - /* 19 */ 0x0114, - /* 1A */ 0x0115, - /* 1B */ 0x010F, - /* 1C */ 0x010E, - /* 1D */ 0x0110, - /* 1E */ 0x0111, - /* 1F */ 0x0112, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ 0x027B, - /* 2A */ ZYDIS_INVALID, - /* 2B */ ZYDIS_INVALID, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x00F0, - /* 01 */ 0x00F1, - /* 02 */ 0x00EE, - /* 03 */ 0x00EF, - /* 04 */ 0x00F4, - /* 05 */ 0x00F5, - /* 06 */ 0x00F2, - /* 07 */ 0x00F3, - /* 08 */ 0x0103, - /* 09 */ 0x0102, - /* 0A */ 0x0105, - /* 0B */ 0x0104, - /* 0C */ 0x00FF, - /* 0D */ 0x00FE, - /* 0E */ 0x0101, - /* 0F */ 0x0100, - /* 10 */ 0x00F8, - /* 11 */ 0x00F9, - /* 12 */ 0x00F6, - /* 13 */ 0x00F7, - /* 14 */ 0x00FC, - /* 15 */ 0x00FD, - /* 16 */ 0x00FA, - /* 17 */ 0x00FB, - /* 18 */ 0x010B, - /* 19 */ 0x010A, - /* 1A */ 0x010D, - /* 1B */ 0x010C, - /* 1C */ 0x0107, - /* 1D */ 0x0106, - /* 1E */ 0x0109, - /* 1F */ 0x0108, - /* 20 */ 0x01E5, - /* 21 */ 0x01E4, - /* 22 */ 0x00D5, - /* 23 */ 0x01E6, - /* 24 */ 0x01E9, - /* 25 */ 0x01F4, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x0269, - /* 29 */ 0x026A, - /* 2A */ 0x0265, - /* 2B */ 0x0264, - /* 2C */ 0x0263, - /* 2D */ 0x0268, - /* 2E */ 0x0267, - /* 2F */ 0x0266, - /* 30 */ 0x0129, - /* 31 */ 0x0128, - /* 32 */ 0x012B, - /* 33 */ 0x012A, - /* 34 */ 0x012F, - /* 35 */ 0x012E, - /* 36 */ 0x012D, - /* 37 */ 0x012C, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x00B9, - /* 01 */ 0x00B8, - /* 02 */ 0x00C6, - /* 03 */ 0x00C9, - /* 04 */ 0x00C8, - /* 05 */ 0x00C7, - /* 06 */ 0x00BE, - /* 07 */ 0x00BD, - /* 08 */ 0x01D1, - /* 09 */ 0x01D0, - /* 0A */ 0x01D5, - /* 0B */ 0x01D4, - /* 0C */ 0x01D3, - /* 0D */ 0x01CC, - /* 0E */ 0x01CB, - /* 0F */ 0x01CA, - /* 10 */ 0x0125, - /* 11 */ 0x0124, - /* 12 */ 0x0127, - /* 13 */ 0x0126, - /* 14 */ 0x0121, - /* 15 */ 0x0120, - /* 16 */ 0x0123, - /* 17 */ 0x0122, - /* 18 */ 0x0148, - /* 19 */ 0x0142, - /* 1A */ 0x0145, - /* 1B */ 0x0144, - /* 1C */ 0x0143, - /* 1D */ 0x0147, - /* 1E */ 0x0146, - /* 1F */ 0x0149, - /* 20 */ 0x024F, - /* 21 */ 0x0247, - /* 22 */ 0x0241, - /* 23 */ 0x0242, - /* 24 */ 0x0240, - /* 25 */ 0x024E, - /* 26 */ 0x024D, - /* 27 */ 0x0244, - /* 28 */ 0x0228, - /* 29 */ 0x0235, - /* 2A */ 0x0234, - /* 2B */ 0x0237, - /* 2C */ 0x0236, - /* 2D */ 0x0233, - /* 2E */ 0x0230, - /* 2F */ 0x022F, - /* 30 */ 0x017B, - /* 31 */ 0x0178, - /* 32 */ 0x0179, - /* 33 */ 0x017C, - /* 34 */ 0x017F, - /* 35 */ 0x0180, - /* 36 */ 0x017D, - /* 37 */ 0x017E, - /* 38 */ 0x015E, - /* 39 */ 0x015F, - /* 3A */ 0x0160, - /* 3B */ 0x015B, - /* 3C */ 0x015C, - /* 3D */ 0x015D, - /* 3E */ 0x0164, - /* 3F */ 0x0165, - }, - { - /* 00 */ 0x018F, - /* 01 */ 0x018E, - /* 02 */ 0x0191, - /* 03 */ 0x0190, - /* 04 */ 0x018B, - /* 05 */ 0x018A, - /* 06 */ 0x018D, - /* 07 */ 0x018C, - /* 08 */ 0x028A, - /* 09 */ 0x0289, - /* 0A */ 0x028C, - /* 0B */ 0x028B, - /* 0C */ 0x0286, - /* 0D */ 0x0285, - /* 0E */ 0x0288, - /* 0F */ 0x0287, - /* 10 */ 0x0200, - /* 11 */ 0x0202, - /* 12 */ 0x0201, - /* 13 */ 0x01FA, - /* 14 */ 0x01F9, - /* 15 */ 0x01FB, - /* 16 */ 0x01FD, - /* 17 */ 0x01FC, - /* 18 */ 0x020D, - /* 19 */ 0x020C, - /* 1A */ 0x0208, - /* 1B */ 0x0204, - /* 1C */ 0x0203, - /* 1D */ 0x0205, - /* 1E */ 0x0207, - /* 1F */ 0x0206, - /* 20 */ 0x025D, - /* 21 */ 0x025C, - /* 22 */ 0x025B, - /* 23 */ 0x025E, - /* 24 */ 0x0261, - /* 25 */ 0x0262, - /* 26 */ 0x025F, - /* 27 */ 0x0260, - /* 28 */ 0x0278, - /* 29 */ 0x0277, - /* 2A */ 0x027A, - /* 2B */ 0x0279, - /* 2C */ 0x0274, - /* 2D */ 0x0273, - /* 2E */ 0x0276, - /* 2F */ 0x0275, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x00CC, - /* 01 */ 0x00CD, - /* 02 */ 0x00CA, - /* 03 */ 0x00CB, - /* 04 */ 0x00D0, - /* 05 */ 0x00D1, - /* 06 */ 0x00CE, - /* 07 */ 0x00CF, - /* 08 */ 0x01E1, - /* 09 */ 0x01E0, - /* 0A */ 0x01E3, - /* 0B */ 0x01E2, - /* 0C */ 0x01DD, - /* 0D */ 0x01DC, - /* 0E */ 0x01DF, - /* 0F */ 0x01DE, - /* 10 */ 0x014F, - /* 11 */ 0x014E, - /* 12 */ 0x0151, - /* 13 */ 0x0150, - /* 14 */ 0x014B, - /* 15 */ 0x014A, - /* 16 */ 0x014D, - /* 17 */ 0x014C, - /* 18 */ ZYDIS_INVALID, - /* 19 */ 0x0152, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ ZYDIS_INVALID, - /* 1D */ ZYDIS_INVALID, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ 0x0258, - /* 21 */ 0x0259, - /* 22 */ 0x0256, - /* 23 */ 0x0257, - /* 24 */ 0x0253, - /* 25 */ 0x0252, - /* 26 */ 0x0255, - /* 27 */ 0x0254, - /* 28 */ 0x023B, - /* 29 */ 0x023D, - /* 2A */ 0x023C, - /* 2B */ 0x0239, - /* 2C */ 0x0238, - /* 2D */ 0x023A, - /* 2E */ 0x023E, - /* 2F */ 0x023F, - /* 30 */ 0x0186, - /* 31 */ 0x0185, - /* 32 */ 0x0188, - /* 33 */ 0x0187, - /* 34 */ 0x0182, - /* 35 */ 0x0181, - /* 36 */ 0x0184, - /* 37 */ 0x0183, - /* 38 */ 0x016C, - /* 39 */ 0x016B, - /* 3A */ 0x016E, - /* 3B */ 0x016D, - /* 3C */ 0x0168, - /* 3D */ 0x0167, - /* 3E */ 0x016A, - /* 3F */ 0x0169, - }, - { - /* 00 */ 0x0199, - /* 01 */ 0x0196, - /* 02 */ 0x0197, - /* 03 */ 0x0198, - /* 04 */ 0x0193, - /* 05 */ 0x0192, - /* 06 */ 0x0195, - /* 07 */ 0x0194, - /* 08 */ 0x028F, - /* 09 */ 0x0290, - /* 0A */ 0x028D, - /* 0B */ 0x028E, - /* 0C */ 0x0293, - /* 0D */ 0x0294, - /* 0E */ 0x0291, - /* 0F */ 0x0292, - /* 10 */ 0x021B, - /* 11 */ 0x021A, - /* 12 */ 0x021D, - /* 13 */ 0x021C, - /* 14 */ 0x0217, - /* 15 */ 0x0216, - /* 16 */ 0x0219, - /* 17 */ 0x0218, - /* 18 */ 0x0220, - /* 19 */ 0x0221, - /* 1A */ 0x021E, - /* 1B */ 0x021F, - /* 1C */ 0x0224, - /* 1D */ 0x0225, - /* 1E */ 0x0222, - /* 1F */ 0x0223, - /* 20 */ 0x01EC, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ 0x0271, - /* 29 */ 0x0272, - /* 2A */ 0x026D, - /* 2B */ 0x026C, - /* 2C */ 0x026B, - /* 2D */ 0x0270, - /* 2E */ 0x026F, - /* 2F */ 0x026E, - /* 30 */ 0x0136, - /* 31 */ 0x0137, - /* 32 */ 0x0133, - /* 33 */ 0x0134, - /* 34 */ 0x0135, - /* 35 */ 0x0130, - /* 36 */ 0x0131, - /* 37 */ 0x0132, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeAddressSize[][3] = -{ - { - /* 00 */ 0x02CD, - /* 01 */ 0x02D0, - /* 02 */ 0x02EC, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeOperandSize[][3] = -{ - { - /* 00 */ 0x03E0, - /* 01 */ 0x03E1, - /* 02 */ 0x03E2, - }, - { - /* 00 */ 0x0409, - /* 01 */ 0x040A, - /* 02 */ 0x040B, - }, - { - /* 00 */ 0x033D, - /* 01 */ 0x0343, - /* 02 */ 0x035E, - }, - { - /* 00 */ 0x0341, - /* 01 */ 0x0342, - /* 02 */ 0x0364, - }, - { - /* 00 */ 0x0344, - /* 01 */ 0x033E, - /* 02 */ 0x0365, - }, - { - /* 00 */ 0x0340, - /* 01 */ 0x033F, - /* 02 */ 0x0360, - }, - { - /* 00 */ 0x007F, - /* 01 */ 0x0080, - /* 02 */ 0x007E, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x000F), - /* 01 */ ZYDIS_NODE(OTNT_MODE, 0x0010), - /* 02 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x0011), - /* 01 */ ZYDIS_NODE(OTNT_MODE, 0x0012), - /* 02 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02B8, - /* 01 */ 0x02B6, - /* 02 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x03A1, - /* 01 */ 0x03A0, - /* 02 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0050, - /* 01 */ 0x009E, - /* 02 */ 0x0052, - }, - { - /* 00 */ 0x009D, - /* 01 */ 0x0051, - /* 02 */ 0x0084, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x001E), - /* 01 */ ZYDIS_NODE(OTNT_MODE, 0x001F), - /* 02 */ ZYDIS_NODE(OTNT_MODE, 0x0020), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x0021), - /* 01 */ ZYDIS_NODE(OTNT_MODE, 0x0022), - /* 02 */ ZYDIS_NODE(OTNT_MODE, 0x0023), - }, - { - /* 00 */ 0x0372, - /* 01 */ 0x0369, - /* 02 */ 0x036F, - }, - { - /* 00 */ 0x007B, - /* 01 */ 0x0078, - /* 02 */ 0x0079, - }, - { - /* 00 */ 0x0540, - /* 01 */ 0x053E, - /* 02 */ 0x053F, - }, - { - /* 00 */ 0x0303, - /* 01 */ 0x0301, - /* 02 */ 0x0302, - }, - { - /* 00 */ 0x0504, - /* 01 */ 0x0502, - /* 02 */ 0x0503, - }, - { - /* 00 */ 0x05BB, - /* 01 */ 0x05BA, - /* 02 */ 0x05D5, - }, - { - /* 00 */ 0x05B9, - /* 01 */ 0x05BC, - /* 02 */ 0x05D6, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXW, 0x000E), - /* 01 */ ZYDIS_NODE(OTNT_VEXW, 0x000F), - /* 02 */ ZYDIS_NODE(OTNT_VEXW, 0x0010), - }, - { - /* 00 */ 0x02C6, - /* 01 */ 0x02C4, - /* 02 */ 0x02C5, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeMode[][2] = -{ - { - /* 00 */ 0x04AA, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0445, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04AD, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0553, - /* 01 */ ZYDIS_NODE(OTNT_VENDOR, 0x000D), - }, - { - /* 00 */ 0x0555, - /* 01 */ ZYDIS_NODE(OTNT_VENDOR, 0x000E), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VENDOR, 0x000F), - /* 01 */ ZYDIS_NODE(OTNT_VENDOR, 0x0010), - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VENDOR, 0x0011), - /* 01 */ ZYDIS_NODE(OTNT_VENDOR, 0x0012), - }, - { - /* 00 */ 0x04AC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0446, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04A9, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0443, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x009F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x00A0, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0001, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0004, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04BA, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04BB, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x044B, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x044C, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0038, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0033, - /* 01 */ 0x0375, - }, - { - /* 00 */ 0x0011, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0398, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0007, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04FC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x002A, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0546, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x06B3, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0073, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x004F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04C0, - /* 01 */ 0x04BF, - }, - { - /* 00 */ 0x04BC, - /* 01 */ 0x04BE, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x04BD, - }, - { - /* 00 */ 0x0451, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x044E, - /* 01 */ 0x0450, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x044F, - }, - { - /* 00 */ 0x02F6, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXW, 0x0014), - /* 01 */ ZYDIS_NODE(OTNT_VEXW, 0x0015), - }, - { - /* 00 */ 0x02F3, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02BC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0003, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0002, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04F0, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02DC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x004D, - /* 01 */ 0x004B, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeVendor[][2] = -{ - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05AC, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05B2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05EB, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05F3, - }, - { - /* 00 */ 0x05EC, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05B4, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05B3, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05ED, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x053A, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0056, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0530, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x02C1, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x04D5, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0552, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0554, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02BE, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02BF, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02C3, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x02C2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05EA, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05F2, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05E8, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05E9, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05F4, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05AD, - }, -}; - -const ZyDisOpcodeTreeNode vxOptree3dnow[][256] = -{ - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ ZYDIS_INVALID, - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_INVALID, - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_INVALID, - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ 0x0407, - /* 0D */ 0x0406, - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - /* 10 */ ZYDIS_INVALID, - /* 11 */ ZYDIS_INVALID, - /* 12 */ ZYDIS_INVALID, - /* 13 */ ZYDIS_INVALID, - /* 14 */ ZYDIS_INVALID, - /* 15 */ ZYDIS_INVALID, - /* 16 */ ZYDIS_INVALID, - /* 17 */ ZYDIS_INVALID, - /* 18 */ ZYDIS_INVALID, - /* 19 */ ZYDIS_INVALID, - /* 1A */ ZYDIS_INVALID, - /* 1B */ ZYDIS_INVALID, - /* 1C */ 0x03E7, - /* 1D */ 0x03E6, - /* 1E */ ZYDIS_INVALID, - /* 1F */ ZYDIS_INVALID, - /* 20 */ ZYDIS_INVALID, - /* 21 */ ZYDIS_INVALID, - /* 22 */ ZYDIS_INVALID, - /* 23 */ ZYDIS_INVALID, - /* 24 */ ZYDIS_INVALID, - /* 25 */ ZYDIS_INVALID, - /* 26 */ ZYDIS_INVALID, - /* 27 */ ZYDIS_INVALID, - /* 28 */ ZYDIS_INVALID, - /* 29 */ ZYDIS_INVALID, - /* 2A */ ZYDIS_INVALID, - /* 2B */ ZYDIS_INVALID, - /* 2C */ ZYDIS_INVALID, - /* 2D */ ZYDIS_INVALID, - /* 2E */ ZYDIS_INVALID, - /* 2F */ ZYDIS_INVALID, - /* 30 */ ZYDIS_INVALID, - /* 31 */ ZYDIS_INVALID, - /* 32 */ ZYDIS_INVALID, - /* 33 */ ZYDIS_INVALID, - /* 34 */ ZYDIS_INVALID, - /* 35 */ ZYDIS_INVALID, - /* 36 */ ZYDIS_INVALID, - /* 37 */ ZYDIS_INVALID, - /* 38 */ ZYDIS_INVALID, - /* 39 */ ZYDIS_INVALID, - /* 3A */ ZYDIS_INVALID, - /* 3B */ ZYDIS_INVALID, - /* 3C */ ZYDIS_INVALID, - /* 3D */ ZYDIS_INVALID, - /* 3E */ ZYDIS_INVALID, - /* 3F */ ZYDIS_INVALID, - /* 40 */ ZYDIS_INVALID, - /* 41 */ ZYDIS_INVALID, - /* 42 */ ZYDIS_INVALID, - /* 43 */ ZYDIS_INVALID, - /* 44 */ ZYDIS_INVALID, - /* 45 */ ZYDIS_INVALID, - /* 46 */ ZYDIS_INVALID, - /* 47 */ ZYDIS_INVALID, - /* 48 */ ZYDIS_INVALID, - /* 49 */ ZYDIS_INVALID, - /* 4A */ ZYDIS_INVALID, - /* 4B */ ZYDIS_INVALID, - /* 4C */ ZYDIS_INVALID, - /* 4D */ ZYDIS_INVALID, - /* 4E */ ZYDIS_INVALID, - /* 4F */ ZYDIS_INVALID, - /* 50 */ ZYDIS_INVALID, - /* 51 */ ZYDIS_INVALID, - /* 52 */ ZYDIS_INVALID, - /* 53 */ ZYDIS_INVALID, - /* 54 */ ZYDIS_INVALID, - /* 55 */ ZYDIS_INVALID, - /* 56 */ ZYDIS_INVALID, - /* 57 */ ZYDIS_INVALID, - /* 58 */ ZYDIS_INVALID, - /* 59 */ ZYDIS_INVALID, - /* 5A */ ZYDIS_INVALID, - /* 5B */ ZYDIS_INVALID, - /* 5C */ ZYDIS_INVALID, - /* 5D */ ZYDIS_INVALID, - /* 5E */ ZYDIS_INVALID, - /* 5F */ ZYDIS_INVALID, - /* 60 */ ZYDIS_INVALID, - /* 61 */ ZYDIS_INVALID, - /* 62 */ ZYDIS_INVALID, - /* 63 */ ZYDIS_INVALID, - /* 64 */ ZYDIS_INVALID, - /* 65 */ ZYDIS_INVALID, - /* 66 */ ZYDIS_INVALID, - /* 67 */ ZYDIS_INVALID, - /* 68 */ ZYDIS_INVALID, - /* 69 */ ZYDIS_INVALID, - /* 6A */ ZYDIS_INVALID, - /* 6B */ ZYDIS_INVALID, - /* 6C */ ZYDIS_INVALID, - /* 6D */ ZYDIS_INVALID, - /* 6E */ ZYDIS_INVALID, - /* 6F */ ZYDIS_INVALID, - /* 70 */ ZYDIS_INVALID, - /* 71 */ ZYDIS_INVALID, - /* 72 */ ZYDIS_INVALID, - /* 73 */ ZYDIS_INVALID, - /* 74 */ ZYDIS_INVALID, - /* 75 */ ZYDIS_INVALID, - /* 76 */ ZYDIS_INVALID, - /* 77 */ ZYDIS_INVALID, - /* 78 */ ZYDIS_INVALID, - /* 79 */ ZYDIS_INVALID, - /* 7A */ ZYDIS_INVALID, - /* 7B */ ZYDIS_INVALID, - /* 7C */ ZYDIS_INVALID, - /* 7D */ ZYDIS_INVALID, - /* 7E */ ZYDIS_INVALID, - /* 7F */ ZYDIS_INVALID, - /* 80 */ ZYDIS_INVALID, - /* 81 */ ZYDIS_INVALID, - /* 82 */ ZYDIS_INVALID, - /* 83 */ ZYDIS_INVALID, - /* 84 */ ZYDIS_INVALID, - /* 85 */ ZYDIS_INVALID, - /* 86 */ ZYDIS_INVALID, - /* 87 */ ZYDIS_INVALID, - /* 88 */ ZYDIS_INVALID, - /* 89 */ ZYDIS_INVALID, - /* 8A */ 0x03F0, - /* 8B */ ZYDIS_INVALID, - /* 8C */ ZYDIS_INVALID, - /* 8D */ ZYDIS_INVALID, - /* 8E */ 0x03F1, - /* 8F */ ZYDIS_INVALID, - /* 90 */ 0x03EB, - /* 91 */ ZYDIS_INVALID, - /* 92 */ ZYDIS_INVALID, - /* 93 */ ZYDIS_INVALID, - /* 94 */ 0x03EE, - /* 95 */ ZYDIS_INVALID, - /* 96 */ 0x03F2, - /* 97 */ 0x03F6, - /* 98 */ ZYDIS_INVALID, - /* 99 */ ZYDIS_INVALID, - /* 9A */ 0x03F7, - /* 9B */ ZYDIS_INVALID, - /* 9C */ ZYDIS_INVALID, - /* 9D */ ZYDIS_INVALID, - /* 9E */ 0x03E9, - /* 9F */ ZYDIS_INVALID, - /* A0 */ 0x03EC, - /* A1 */ ZYDIS_INVALID, - /* A2 */ ZYDIS_INVALID, - /* A3 */ ZYDIS_INVALID, - /* A4 */ 0x03ED, - /* A5 */ ZYDIS_INVALID, - /* A6 */ 0x03F3, - /* A7 */ 0x03F5, - /* A8 */ ZYDIS_INVALID, - /* A9 */ ZYDIS_INVALID, - /* AA */ 0x03F8, - /* AB */ ZYDIS_INVALID, - /* AC */ ZYDIS_INVALID, - /* AD */ ZYDIS_INVALID, - /* AE */ 0x03E8, - /* AF */ ZYDIS_INVALID, - /* B0 */ 0x03EA, - /* B1 */ ZYDIS_INVALID, - /* B2 */ ZYDIS_INVALID, - /* B3 */ ZYDIS_INVALID, - /* B4 */ 0x03EF, - /* B5 */ ZYDIS_INVALID, - /* B6 */ 0x03F4, - /* B7 */ 0x0433, - /* B8 */ ZYDIS_INVALID, - /* B9 */ ZYDIS_INVALID, - /* BA */ ZYDIS_INVALID, - /* BB */ 0x0499, - /* BC */ ZYDIS_INVALID, - /* BD */ ZYDIS_INVALID, - /* BE */ ZYDIS_INVALID, - /* BF */ 0x03C7, - /* C0 */ ZYDIS_INVALID, - /* C1 */ ZYDIS_INVALID, - /* C2 */ ZYDIS_INVALID, - /* C3 */ ZYDIS_INVALID, - /* C4 */ ZYDIS_INVALID, - /* C5 */ ZYDIS_INVALID, - /* C6 */ ZYDIS_INVALID, - /* C7 */ ZYDIS_INVALID, - /* C8 */ ZYDIS_INVALID, - /* C9 */ ZYDIS_INVALID, - /* CA */ ZYDIS_INVALID, - /* CB */ ZYDIS_INVALID, - /* CC */ ZYDIS_INVALID, - /* CD */ ZYDIS_INVALID, - /* CE */ ZYDIS_INVALID, - /* CF */ ZYDIS_INVALID, - /* D0 */ ZYDIS_INVALID, - /* D1 */ ZYDIS_INVALID, - /* D2 */ ZYDIS_INVALID, - /* D3 */ ZYDIS_INVALID, - /* D4 */ ZYDIS_INVALID, - /* D5 */ ZYDIS_INVALID, - /* D6 */ ZYDIS_INVALID, - /* D7 */ ZYDIS_INVALID, - /* D8 */ ZYDIS_INVALID, - /* D9 */ ZYDIS_INVALID, - /* DA */ ZYDIS_INVALID, - /* DB */ ZYDIS_INVALID, - /* DC */ ZYDIS_INVALID, - /* DD */ ZYDIS_INVALID, - /* DE */ ZYDIS_INVALID, - /* DF */ ZYDIS_INVALID, - /* E0 */ ZYDIS_INVALID, - /* E1 */ ZYDIS_INVALID, - /* E2 */ ZYDIS_INVALID, - /* E3 */ ZYDIS_INVALID, - /* E4 */ ZYDIS_INVALID, - /* E5 */ ZYDIS_INVALID, - /* E6 */ ZYDIS_INVALID, - /* E7 */ ZYDIS_INVALID, - /* E8 */ ZYDIS_INVALID, - /* E9 */ ZYDIS_INVALID, - /* EA */ ZYDIS_INVALID, - /* EB */ ZYDIS_INVALID, - /* EC */ ZYDIS_INVALID, - /* ED */ ZYDIS_INVALID, - /* EE */ ZYDIS_INVALID, - /* EF */ ZYDIS_INVALID, - /* F0 */ ZYDIS_INVALID, - /* F1 */ ZYDIS_INVALID, - /* F2 */ ZYDIS_INVALID, - /* F3 */ ZYDIS_INVALID, - /* F4 */ ZYDIS_INVALID, - /* F5 */ ZYDIS_INVALID, - /* F6 */ ZYDIS_INVALID, - /* F7 */ ZYDIS_INVALID, - /* F8 */ ZYDIS_INVALID, - /* F9 */ ZYDIS_INVALID, - /* FA */ ZYDIS_INVALID, - /* FB */ ZYDIS_INVALID, - /* FC */ ZYDIS_INVALID, - /* FD */ ZYDIS_INVALID, - /* FE */ ZYDIS_INVALID, - /* FF */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeVex[][16] = -{ - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x0024), - /* 01 */ ZYDIS_NODE(OTNT_TABLE, 0x0004), - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_NODE(OTNT_TABLE, 0x0005), - /* 06 */ ZYDIS_NODE(OTNT_TABLE, 0x0006), - /* 07 */ ZYDIS_NODE(OTNT_TABLE, 0x0007), - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_NODE(OTNT_TABLE, 0x0008), - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_NODE(OTNT_TABLE, 0x0009), - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_MODE, 0x0026), - /* 01 */ ZYDIS_NODE(OTNT_TABLE, 0x0004), - /* 02 */ ZYDIS_INVALID, - /* 03 */ ZYDIS_INVALID, - /* 04 */ ZYDIS_INVALID, - /* 05 */ ZYDIS_NODE(OTNT_TABLE, 0x0005), - /* 06 */ ZYDIS_INVALID, - /* 07 */ ZYDIS_INVALID, - /* 08 */ ZYDIS_INVALID, - /* 09 */ ZYDIS_NODE(OTNT_TABLE, 0x0008), - /* 0A */ ZYDIS_INVALID, - /* 0B */ ZYDIS_INVALID, - /* 0C */ ZYDIS_INVALID, - /* 0D */ ZYDIS_NODE(OTNT_TABLE, 0x0009), - /* 0E */ ZYDIS_INVALID, - /* 0F */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeVexW[][2] = -{ - { - /* 00 */ 0x061D, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x061C, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0692, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0691, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x057B, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXL, 0x0008), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05A6, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05A5, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05A7, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x05A4, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x061E, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x061B, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXL, 0x0009), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x061F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0620, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0621, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x0622, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXL, 0x000A), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXL, 0x000B), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXL, 0x000C), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXL, 0x000D), - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_NODE(OTNT_VEXL, 0x000E), - /* 01 */ ZYDIS_NODE(OTNT_VEXL, 0x000F), - }, - { - /* 00 */ 0x0579, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x0578, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x060B, - /* 01 */ ZYDIS_INVALID, - }, -}; - -const ZyDisOpcodeTreeNode vxOptreeVexL[][2] = -{ - { - /* 00 */ 0x069C, - /* 01 */ 0x069B, - }, - { - /* 00 */ 0x0660, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065A, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065E, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x063F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065F, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065B, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x065D, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x057A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x061A, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x05A0, - }, - { - /* 00 */ ZYDIS_INVALID, - /* 01 */ 0x059A, - }, - { - /* 00 */ 0x062C, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x062E, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x062D, - /* 01 */ ZYDIS_INVALID, - }, - { - /* 00 */ 0x062F, - /* 01 */ ZYDIS_INVALID, - }, -}; - -#undef ZYDIS_INVALID -#undef ZYDIS_NODE - -#define OPI_NONE { DOT_NONE, DOS_NA } -#define OPI_AL { DOT_AL, DOS_B } -#define OPI_AX { DOT_AX, DOS_W } -#define OPI_Av { DOT_A, DOS_V } -#define OPI_C { DOT_C, DOS_NA } -#define OPI_CL { DOT_CL, DOS_B } -#define OPI_CS { DOT_CS, DOS_NA } -#define OPI_CX { DOT_CX, DOS_W } -#define OPI_D { DOT_D, DOS_NA } -#define OPI_DL { DOT_DL, DOS_B } -#define OPI_DS { DOT_DS, DOS_NA } -#define OPI_DX { DOT_DX, DOS_W } -#define OPI_E { DOT_E, DOS_NA } -#define OPI_ES { DOT_ES, DOS_NA } -#define OPI_Eb { DOT_E, DOS_B } -#define OPI_Ed { DOT_E, DOS_D } -#define OPI_Eq { DOT_E, DOS_Q } -#define OPI_Ev { DOT_E, DOS_V } -#define OPI_Ew { DOT_E, DOS_W } -#define OPI_Ey { DOT_E, DOS_Y } -#define OPI_Ez { DOT_E, DOS_Z } -#define OPI_FS { DOT_FS, DOS_NA } -#define OPI_Fv { DOT_F, DOS_V } -#define OPI_G { DOT_G, DOS_NA } -#define OPI_GS { DOT_GS, DOS_NA } -#define OPI_Gb { DOT_G, DOS_B } -#define OPI_Gd { DOT_G, DOS_D } -#define OPI_Gq { DOT_G, DOS_Q } -#define OPI_Gv { DOT_G, DOS_V } -#define OPI_Gw { DOT_G, DOS_W } -#define OPI_Gy { DOT_G, DOS_Y } -#define OPI_Gz { DOT_G, DOS_Z } -#define OPI_H { DOT_H, DOS_X } -#define OPI_Hqq { DOT_H, DOS_QQ } -#define OPI_Hx { DOT_H, DOS_X } -#define OPI_I1 { DOT_I1, DOS_NA } -#define OPI_Ib { DOT_I, DOS_B } -#define OPI_Iv { DOT_I, DOS_V } -#define OPI_Iw { DOT_I, DOS_W } -#define OPI_Iz { DOT_I, DOS_Z } -#define OPI_Jb { DOT_J, DOS_B } -#define OPI_Jv { DOT_J, DOS_V } -#define OPI_Jz { DOT_J, DOS_Z } -#define OPI_L { DOT_L, DOS_O } -#define OPI_Lx { DOT_L, DOS_X } -#define OPI_M { DOT_M, DOS_NA } -#define OPI_Mb { DOT_M, DOS_B } -#define OPI_MbRd { DOT_MR, DOS_BD } -#define OPI_MbRv { DOT_MR, DOS_BV } -#define OPI_Md { DOT_M, DOS_D } -#define OPI_MdRy { DOT_MR, DOS_DY } -#define OPI_MdU { DOT_MU, DOS_DO } -#define OPI_Mdq { DOT_M, DOS_DQ } -#define OPI_Mo { DOT_M, DOS_O } -#define OPI_Mq { DOT_M, DOS_Q } -#define OPI_MqU { DOT_MU, DOS_QO } -#define OPI_Ms { DOT_M, DOS_W } -#define OPI_Mt { DOT_M, DOS_T } -#define OPI_Mv { DOT_M, DOS_V } -#define OPI_Mw { DOT_M, DOS_W } -#define OPI_MwRd { DOT_MR, DOS_WD } -#define OPI_MwRv { DOT_MR, DOS_WV } -#define OPI_MwRy { DOT_MR, DOS_WY } -#define OPI_MwU { DOT_MU, DOS_WO } -#define OPI_N { DOT_N, DOS_Q } -#define OPI_Ob { DOT_O, DOS_B } -#define OPI_Ov { DOT_O, DOS_V } -#define OPI_Ow { DOT_O, DOS_W } -#define OPI_P { DOT_P, DOS_Q } -#define OPI_Q { DOT_Q, DOS_Q } -#define OPI_R { DOT_R, DOS_RDQ } -#define OPI_R0b { DOT_R0, DOS_B } -#define OPI_R0v { DOT_R0, DOS_V } -#define OPI_R0w { DOT_R0, DOS_W } -#define OPI_R0y { DOT_R0, DOS_Y } -#define OPI_R0z { DOT_R0, DOS_Z } -#define OPI_R1b { DOT_R1, DOS_B } -#define OPI_R1v { DOT_R1, DOS_V } -#define OPI_R1w { DOT_R1, DOS_W } -#define OPI_R1y { DOT_R1, DOS_Y } -#define OPI_R1z { DOT_R1, DOS_Z } -#define OPI_R2b { DOT_R2, DOS_B } -#define OPI_R2v { DOT_R2, DOS_V } -#define OPI_R2w { DOT_R2, DOS_W } -#define OPI_R2y { DOT_R2, DOS_Y } -#define OPI_R2z { DOT_R2, DOS_Z } -#define OPI_R3b { DOT_R3, DOS_B } -#define OPI_R3v { DOT_R3, DOS_V } -#define OPI_R3w { DOT_R3, DOS_W } -#define OPI_R3y { DOT_R3, DOS_Y } -#define OPI_R3z { DOT_R3, DOS_Z } -#define OPI_R4b { DOT_R4, DOS_B } -#define OPI_R4v { DOT_R4, DOS_V } -#define OPI_R4w { DOT_R4, DOS_W } -#define OPI_R4y { DOT_R4, DOS_Y } -#define OPI_R4z { DOT_R4, DOS_Z } -#define OPI_R5b { DOT_R5, DOS_B } -#define OPI_R5v { DOT_R5, DOS_V } -#define OPI_R5w { DOT_R5, DOS_W } -#define OPI_R5y { DOT_R5, DOS_Y } -#define OPI_R5z { DOT_R5, DOS_Z } -#define OPI_R6b { DOT_R6, DOS_B } -#define OPI_R6v { DOT_R6, DOS_V } -#define OPI_R6w { DOT_R6, DOS_W } -#define OPI_R6y { DOT_R6, DOS_Y } -#define OPI_R6z { DOT_R6, DOS_Z } -#define OPI_R7b { DOT_R7, DOS_B } -#define OPI_R7v { DOT_R7, DOS_V } -#define OPI_R7w { DOT_R7, DOS_W } -#define OPI_R7y { DOT_R7, DOS_Y } -#define OPI_R7z { DOT_R7, DOS_Z } -#define OPI_S { DOT_S, DOS_W } -#define OPI_SS { DOT_SS, DOS_NA } -#define OPI_ST0 { DOT_ST0, DOS_NA } -#define OPI_ST1 { DOT_ST1, DOS_NA } -#define OPI_ST2 { DOT_ST2, DOS_NA } -#define OPI_ST3 { DOT_ST3, DOS_NA } -#define OPI_ST4 { DOT_ST4, DOS_NA } -#define OPI_ST5 { DOT_ST5, DOS_NA } -#define OPI_ST6 { DOT_ST6, DOS_NA } -#define OPI_ST7 { DOT_ST7, DOS_NA } -#define OPI_U { DOT_U, DOS_O } -#define OPI_Ux { DOT_U, DOS_X } -#define OPI_V { DOT_V, DOS_DQ } -#define OPI_Vdq { DOT_V, DOS_DQ } -#define OPI_Vqq { DOT_V, DOS_QQ } -#define OPI_Vsd { DOT_V, DOS_Q } -#define OPI_Vx { DOT_V, DOS_X } -#define OPI_W { DOT_W, DOS_DQ } -#define OPI_Wdq { DOT_W, DOS_DQ } -#define OPI_Wqq { DOT_W, DOS_QQ } -#define OPI_Wsd { DOT_W, DOS_Q } -#define OPI_Wx { DOT_W, DOS_X } -#define OPI_eAX { DOT_EAX, DOS_Z } -#define OPI_eCX { DOT_ECX, DOS_Z } -#define OPI_eDX { DOT_EDX, DOS_Z } -#define OPI_rAX { DOT_RAX, DOS_V } -#define OPI_rCX { DOT_RCX, DOS_V } -#define OPI_rDX { DOT_RDX, DOS_V } -#define OPI_sIb { DOT_sI, DOS_B } -#define OPI_sIz { DOT_sI, DOS_Z } - -const ZyDisInstructionDefinition vxInstrDefinitions[] = -{ - /* 000 */ { MNEM_INVALID, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 001 */ { MNEM_AAA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 002 */ { MNEM_AAD, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 003 */ { MNEM_AAM, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 004 */ { MNEM_AAS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 005 */ { MNEM_ADC, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 006 */ { MNEM_ADC, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 007 */ { MNEM_ADC, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 008 */ { MNEM_ADC, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 009 */ { MNEM_ADC, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00A */ { MNEM_ADC, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00B */ { MNEM_ADC, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00C */ { MNEM_ADC, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00D */ { MNEM_ADC, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 00E */ { MNEM_ADC, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 00F */ { MNEM_ADD, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 010 */ { MNEM_ADD, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 011 */ { MNEM_ADD, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 012 */ { MNEM_ADD, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 013 */ { MNEM_ADD, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 014 */ { MNEM_ADD, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 015 */ { MNEM_ADD, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 016 */ { MNEM_ADD, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 017 */ { MNEM_ADD, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 018 */ { MNEM_ADD, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 019 */ { MNEM_ADDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01A */ { MNEM_ADDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01B */ { MNEM_ADDSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01C */ { MNEM_ADDSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01D */ { MNEM_ADDSUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01E */ { MNEM_ADDSUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 01F */ { MNEM_AESDEC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 020 */ { MNEM_AESDECLAST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 021 */ { MNEM_AESENC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 022 */ { MNEM_AESENCLAST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 023 */ { MNEM_AESIMC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 024 */ { MNEM_AESKEYGENASSIST, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 025 */ { MNEM_AND, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 026 */ { MNEM_AND, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 027 */ { MNEM_AND, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 028 */ { MNEM_AND, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 029 */ { MNEM_AND, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 02A */ { MNEM_AND, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 02B */ { MNEM_AND, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 02C */ { MNEM_AND, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 02D */ { MNEM_AND, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 02E */ { MNEM_AND, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 02F */ { MNEM_ANDNPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 030 */ { MNEM_ANDNPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 031 */ { MNEM_ANDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 032 */ { MNEM_ANDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 033 */ { MNEM_ARPL, { OPI_Ew, OPI_Gw, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 034 */ { MNEM_BLENDPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 035 */ { MNEM_BLENDPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 036 */ { MNEM_BLENDVPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 037 */ { MNEM_BLENDVPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 038 */ { MNEM_BOUND, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 039 */ { MNEM_BSF, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 03A */ { MNEM_BSR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 03B */ { MNEM_BSWAP, { OPI_R5y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 03C */ { MNEM_BSWAP, { OPI_R3y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 03D */ { MNEM_BSWAP, { OPI_R1y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 03E */ { MNEM_BSWAP, { OPI_R4y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 03F */ { MNEM_BSWAP, { OPI_R0y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 040 */ { MNEM_BSWAP, { OPI_R2y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 041 */ { MNEM_BSWAP, { OPI_R7y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 042 */ { MNEM_BSWAP, { OPI_R6y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 043 */ { MNEM_BT, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 044 */ { MNEM_BT, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 045 */ { MNEM_BTC, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 046 */ { MNEM_BTC, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 047 */ { MNEM_BTR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 048 */ { MNEM_BTR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 049 */ { MNEM_BTS, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 04A */ { MNEM_BTS, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 04B */ { MNEM_CALL, { OPI_Eq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 04C */ { MNEM_CALL, { OPI_Fv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 04D */ { MNEM_CALL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 04E */ { MNEM_CALL, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 04F */ { MNEM_CALL, { OPI_Av, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 050 */ { MNEM_CBW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 051 */ { MNEM_CDQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 052 */ { MNEM_CDQE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 053 */ { MNEM_CLC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 054 */ { MNEM_CLD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 055 */ { MNEM_CLFLUSH, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 056 */ { MNEM_CLGI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 057 */ { MNEM_CLI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 058 */ { MNEM_CLTS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 059 */ { MNEM_CMC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 05A */ { MNEM_CMOVA, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05B */ { MNEM_CMOVAE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05C */ { MNEM_CMOVB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05D */ { MNEM_CMOVBE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05E */ { MNEM_CMOVE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 05F */ { MNEM_CMOVG, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 060 */ { MNEM_CMOVGE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 061 */ { MNEM_CMOVL, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 062 */ { MNEM_CMOVLE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 063 */ { MNEM_CMOVNE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 064 */ { MNEM_CMOVNO, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 065 */ { MNEM_CMOVNP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 066 */ { MNEM_CMOVNS, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 067 */ { MNEM_CMOVO, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 068 */ { MNEM_CMOVP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 069 */ { MNEM_CMOVS, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 06A */ { MNEM_CMP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06B */ { MNEM_CMP, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06C */ { MNEM_CMP, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06D */ { MNEM_CMP, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06E */ { MNEM_CMP, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 06F */ { MNEM_CMP, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 070 */ { MNEM_CMP, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, 0 }, - /* 071 */ { MNEM_CMP, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 072 */ { MNEM_CMP, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 073 */ { MNEM_CMP, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 }, - /* 074 */ { MNEM_CMPPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 075 */ { MNEM_CMPPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 076 */ { MNEM_CMPSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 077 */ { MNEM_CMPSD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 078 */ { MNEM_CMPSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 079 */ { MNEM_CMPSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 07A */ { MNEM_CMPSS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 07B */ { MNEM_CMPSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 07C */ { MNEM_CMPXCHG, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 07D */ { MNEM_CMPXCHG, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 07E */ { MNEM_CMPXCHG16B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 07F */ { MNEM_CMPXCHG8B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 080 */ { MNEM_CMPXCHG8B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 081 */ { MNEM_COMISD, { OPI_Vsd, OPI_Wsd, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 082 */ { MNEM_COMISS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 083 */ { MNEM_CPUID, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 084 */ { MNEM_CQO, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 085 */ { MNEM_CRC32, { OPI_Gy, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 086 */ { MNEM_CRC32, { OPI_Gy, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 087 */ { MNEM_CVTDQ2PD, { OPI_V, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 088 */ { MNEM_CVTDQ2PS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 089 */ { MNEM_CVTPD2DQ, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08A */ { MNEM_CVTPD2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08B */ { MNEM_CVTPD2PS, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08C */ { MNEM_CVTPI2PD, { OPI_V, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08D */ { MNEM_CVTPI2PS, { OPI_V, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08E */ { MNEM_CVTPS2DQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 08F */ { MNEM_CVTPS2PD, { OPI_V, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 090 */ { MNEM_CVTPS2PI, { OPI_P, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 091 */ { MNEM_CVTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 092 */ { MNEM_CVTSD2SS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 093 */ { MNEM_CVTSI2SD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 094 */ { MNEM_CVTSI2SS, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 095 */ { MNEM_CVTSS2SD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 096 */ { MNEM_CVTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 097 */ { MNEM_CVTTPD2DQ, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 098 */ { MNEM_CVTTPD2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 099 */ { MNEM_CVTTPS2DQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 09A */ { MNEM_CVTTPS2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 09B */ { MNEM_CVTTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 09C */ { MNEM_CVTTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 09D */ { MNEM_CWD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 09E */ { MNEM_CWDE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 09F */ { MNEM_DAA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 0A0 */ { MNEM_DAS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 0A1 */ { MNEM_DEC, { OPI_R6z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A2 */ { MNEM_DEC, { OPI_R5z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A3 */ { MNEM_DEC, { OPI_R7z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A4 */ { MNEM_DEC, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0A5 */ { MNEM_DEC, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0A6 */ { MNEM_DEC, { OPI_R1z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A7 */ { MNEM_DEC, { OPI_R0z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A8 */ { MNEM_DEC, { OPI_R2z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0A9 */ { MNEM_DEC, { OPI_R4z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0AA */ { MNEM_DEC, { OPI_R3z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 0AB */ { MNEM_DIV, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 0AC */ { MNEM_DIV, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 0AD */ { MNEM_DIVPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0AE */ { MNEM_DIVPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0AF */ { MNEM_DIVSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0B0 */ { MNEM_DIVSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0B1 */ { MNEM_DPPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0B2 */ { MNEM_DPPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 0B3 */ { MNEM_EMMS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0B4 */ { MNEM_ENTER, { OPI_Iw, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_DEFAULT_64 }, - /* 0B5 */ { MNEM_EXTRACTPS, { OPI_MdRy, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 0B6 */ { MNEM_F2XM1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0B7 */ { MNEM_FABS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0B8 */ { MNEM_FADD, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0B9 */ { MNEM_FADD, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0BA */ { MNEM_FADD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 0BB */ { MNEM_FADD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 0BC */ { MNEM_FADD, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0BD */ { MNEM_FADD, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0BE */ { MNEM_FADD, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0BF */ { MNEM_FADD, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0C0 */ { MNEM_FADD, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0C1 */ { MNEM_FADD, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0C2 */ { MNEM_FADD, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0C3 */ { MNEM_FADD, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0C4 */ { MNEM_FADD, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0C5 */ { MNEM_FADD, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0C6 */ { MNEM_FADD, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0C7 */ { MNEM_FADD, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0C8 */ { MNEM_FADD, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0C9 */ { MNEM_FADD, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CA */ { MNEM_FADDP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CB */ { MNEM_FADDP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CC */ { MNEM_FADDP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CD */ { MNEM_FADDP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CE */ { MNEM_FADDP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0CF */ { MNEM_FADDP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0D0 */ { MNEM_FADDP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0D1 */ { MNEM_FADDP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0D2 */ { MNEM_FBLD, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 0D3 */ { MNEM_FBSTP, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 0D4 */ { MNEM_FCHS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0D5 */ { MNEM_FCLEX, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 0D6 */ { MNEM_FCMOVB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0D7 */ { MNEM_FCMOVB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0D8 */ { MNEM_FCMOVB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0D9 */ { MNEM_FCMOVB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0DA */ { MNEM_FCMOVB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0DB */ { MNEM_FCMOVB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0DC */ { MNEM_FCMOVB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0DD */ { MNEM_FCMOVB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0DE */ { MNEM_FCMOVBE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0DF */ { MNEM_FCMOVBE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0E0 */ { MNEM_FCMOVBE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0E1 */ { MNEM_FCMOVBE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0E2 */ { MNEM_FCMOVBE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0E3 */ { MNEM_FCMOVBE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0E4 */ { MNEM_FCMOVBE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0E5 */ { MNEM_FCMOVBE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0E6 */ { MNEM_FCMOVE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0E7 */ { MNEM_FCMOVE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0E8 */ { MNEM_FCMOVE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0E9 */ { MNEM_FCMOVE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0EA */ { MNEM_FCMOVE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0EB */ { MNEM_FCMOVE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0EC */ { MNEM_FCMOVE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0ED */ { MNEM_FCMOVE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0EE */ { MNEM_FCMOVNB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0EF */ { MNEM_FCMOVNB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0F0 */ { MNEM_FCMOVNB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0F1 */ { MNEM_FCMOVNB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0F2 */ { MNEM_FCMOVNB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0F3 */ { MNEM_FCMOVNB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0F4 */ { MNEM_FCMOVNB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0F5 */ { MNEM_FCMOVNB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0F6 */ { MNEM_FCMOVNBE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 0F7 */ { MNEM_FCMOVNBE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 0F8 */ { MNEM_FCMOVNBE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 0F9 */ { MNEM_FCMOVNBE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 0FA */ { MNEM_FCMOVNBE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 0FB */ { MNEM_FCMOVNBE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 0FC */ { MNEM_FCMOVNBE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 0FD */ { MNEM_FCMOVNBE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0FE */ { MNEM_FCMOVNE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 0FF */ { MNEM_FCMOVNE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 100 */ { MNEM_FCMOVNE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 101 */ { MNEM_FCMOVNE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 102 */ { MNEM_FCMOVNE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 103 */ { MNEM_FCMOVNE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 104 */ { MNEM_FCMOVNE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 105 */ { MNEM_FCMOVNE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 106 */ { MNEM_FCMOVNU, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 107 */ { MNEM_FCMOVNU, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 108 */ { MNEM_FCMOVNU, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 109 */ { MNEM_FCMOVNU, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 10A */ { MNEM_FCMOVNU, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 10B */ { MNEM_FCMOVNU, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 10C */ { MNEM_FCMOVNU, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 10D */ { MNEM_FCMOVNU, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 10E */ { MNEM_FCMOVU, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 10F */ { MNEM_FCMOVU, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 110 */ { MNEM_FCMOVU, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 111 */ { MNEM_FCMOVU, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 112 */ { MNEM_FCMOVU, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 113 */ { MNEM_FCMOVU, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 114 */ { MNEM_FCMOVU, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 115 */ { MNEM_FCMOVU, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 116 */ { MNEM_FCOM, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 117 */ { MNEM_FCOM, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 118 */ { MNEM_FCOM, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 119 */ { MNEM_FCOM, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 11A */ { MNEM_FCOM, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 11B */ { MNEM_FCOM, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 11C */ { MNEM_FCOM, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 11D */ { MNEM_FCOM, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 11E */ { MNEM_FCOM, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 11F */ { MNEM_FCOM, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 120 */ { MNEM_FCOM2, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 121 */ { MNEM_FCOM2, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 122 */ { MNEM_FCOM2, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 123 */ { MNEM_FCOM2, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 124 */ { MNEM_FCOM2, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 125 */ { MNEM_FCOM2, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 126 */ { MNEM_FCOM2, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 127 */ { MNEM_FCOM2, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 128 */ { MNEM_FCOMI, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 129 */ { MNEM_FCOMI, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 12A */ { MNEM_FCOMI, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 12B */ { MNEM_FCOMI, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 12C */ { MNEM_FCOMI, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 12D */ { MNEM_FCOMI, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 12E */ { MNEM_FCOMI, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 12F */ { MNEM_FCOMI, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 130 */ { MNEM_FCOMIP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 131 */ { MNEM_FCOMIP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 132 */ { MNEM_FCOMIP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 133 */ { MNEM_FCOMIP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 134 */ { MNEM_FCOMIP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 135 */ { MNEM_FCOMIP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 136 */ { MNEM_FCOMIP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 137 */ { MNEM_FCOMIP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 138 */ { MNEM_FCOMP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 139 */ { MNEM_FCOMP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 13A */ { MNEM_FCOMP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 13B */ { MNEM_FCOMP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 13C */ { MNEM_FCOMP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 13D */ { MNEM_FCOMP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 13E */ { MNEM_FCOMP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 13F */ { MNEM_FCOMP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 140 */ { MNEM_FCOMP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 141 */ { MNEM_FCOMP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 142 */ { MNEM_FCOMP3, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 143 */ { MNEM_FCOMP3, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 144 */ { MNEM_FCOMP3, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 145 */ { MNEM_FCOMP3, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 146 */ { MNEM_FCOMP3, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 147 */ { MNEM_FCOMP3, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 148 */ { MNEM_FCOMP3, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 149 */ { MNEM_FCOMP3, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14A */ { MNEM_FCOMP5, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14B */ { MNEM_FCOMP5, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14C */ { MNEM_FCOMP5, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14D */ { MNEM_FCOMP5, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14E */ { MNEM_FCOMP5, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 14F */ { MNEM_FCOMP5, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 150 */ { MNEM_FCOMP5, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 151 */ { MNEM_FCOMP5, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 152 */ { MNEM_FCOMPP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 153 */ { MNEM_FCOS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 154 */ { MNEM_FDECSTP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 155 */ { MNEM_FDIV, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 156 */ { MNEM_FDIV, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 157 */ { MNEM_FDIV, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 158 */ { MNEM_FDIV, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 159 */ { MNEM_FDIV, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 15A */ { MNEM_FDIV, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 15B */ { MNEM_FDIV, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 15C */ { MNEM_FDIV, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 15D */ { MNEM_FDIV, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 15E */ { MNEM_FDIV, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 15F */ { MNEM_FDIV, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 160 */ { MNEM_FDIV, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 161 */ { MNEM_FDIV, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 162 */ { MNEM_FDIV, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 163 */ { MNEM_FDIV, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 164 */ { MNEM_FDIV, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 165 */ { MNEM_FDIV, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 166 */ { MNEM_FDIV, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 167 */ { MNEM_FDIVP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 168 */ { MNEM_FDIVP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 169 */ { MNEM_FDIVP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16A */ { MNEM_FDIVP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16B */ { MNEM_FDIVP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16C */ { MNEM_FDIVP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16D */ { MNEM_FDIVP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16E */ { MNEM_FDIVP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 16F */ { MNEM_FDIVR, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 170 */ { MNEM_FDIVR, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 171 */ { MNEM_FDIVR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 172 */ { MNEM_FDIVR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 173 */ { MNEM_FDIVR, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 174 */ { MNEM_FDIVR, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 175 */ { MNEM_FDIVR, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 176 */ { MNEM_FDIVR, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 177 */ { MNEM_FDIVR, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 178 */ { MNEM_FDIVR, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 179 */ { MNEM_FDIVR, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17A */ { MNEM_FDIVR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 17B */ { MNEM_FDIVR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17C */ { MNEM_FDIVR, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17D */ { MNEM_FDIVR, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17E */ { MNEM_FDIVR, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 17F */ { MNEM_FDIVR, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 180 */ { MNEM_FDIVR, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 181 */ { MNEM_FDIVRP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 182 */ { MNEM_FDIVRP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 183 */ { MNEM_FDIVRP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 184 */ { MNEM_FDIVRP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 185 */ { MNEM_FDIVRP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 186 */ { MNEM_FDIVRP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 187 */ { MNEM_FDIVRP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 188 */ { MNEM_FDIVRP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 189 */ { MNEM_FEMMS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18A */ { MNEM_FFREE, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18B */ { MNEM_FFREE, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18C */ { MNEM_FFREE, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18D */ { MNEM_FFREE, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18E */ { MNEM_FFREE, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 18F */ { MNEM_FFREE, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 190 */ { MNEM_FFREE, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 191 */ { MNEM_FFREE, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 192 */ { MNEM_FFREEP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 193 */ { MNEM_FFREEP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 194 */ { MNEM_FFREEP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 195 */ { MNEM_FFREEP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 196 */ { MNEM_FFREEP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 197 */ { MNEM_FFREEP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 198 */ { MNEM_FFREEP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 199 */ { MNEM_FFREEP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 19A */ { MNEM_FIADD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19B */ { MNEM_FIADD, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19C */ { MNEM_FICOM, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19D */ { MNEM_FICOM, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19E */ { MNEM_FICOMP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 19F */ { MNEM_FICOMP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A0 */ { MNEM_FIDIV, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A1 */ { MNEM_FIDIV, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A2 */ { MNEM_FIDIVR, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A3 */ { MNEM_FIDIVR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A4 */ { MNEM_FILD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A5 */ { MNEM_FILD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A6 */ { MNEM_FILD, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A7 */ { MNEM_FIMUL, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A8 */ { MNEM_FIMUL, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1A9 */ { MNEM_FINCSTP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1AA */ { MNEM_FIST, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AB */ { MNEM_FIST, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AC */ { MNEM_FISTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AD */ { MNEM_FISTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AE */ { MNEM_FISTP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1AF */ { MNEM_FISTTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B0 */ { MNEM_FISTTP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B1 */ { MNEM_FISTTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B2 */ { MNEM_FISUB, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B3 */ { MNEM_FISUB, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B4 */ { MNEM_FISUBR, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B5 */ { MNEM_FISUBR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1B6 */ { MNEM_FLD, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1B7 */ { MNEM_FLD, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1B8 */ { MNEM_FLD, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1B9 */ { MNEM_FLD, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1BA */ { MNEM_FLD, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1BB */ { MNEM_FLD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1BC */ { MNEM_FLD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1BD */ { MNEM_FLD, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1BE */ { MNEM_FLD, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1BF */ { MNEM_FLD, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C0 */ { MNEM_FLD, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C1 */ { MNEM_FLD1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C2 */ { MNEM_FLDCW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1C3 */ { MNEM_FLDENV, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1C4 */ { MNEM_FLDL2E, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C5 */ { MNEM_FLDL2T, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C6 */ { MNEM_FLDLG2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C7 */ { MNEM_FLDLN2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C8 */ { MNEM_FLDPI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1C9 */ { MNEM_FLDZ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1CA */ { MNEM_FMUL, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1CB */ { MNEM_FMUL, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1CC */ { MNEM_FMUL, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1CD */ { MNEM_FMUL, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 1CE */ { MNEM_FMUL, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1CF */ { MNEM_FMUL, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1D0 */ { MNEM_FMUL, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D1 */ { MNEM_FMUL, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D2 */ { MNEM_FMUL, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1D3 */ { MNEM_FMUL, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D4 */ { MNEM_FMUL, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D5 */ { MNEM_FMUL, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1D6 */ { MNEM_FMUL, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 1D7 */ { MNEM_FMUL, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 1D8 */ { MNEM_FMUL, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 1D9 */ { MNEM_FMUL, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 1DA */ { MNEM_FMUL, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 1DB */ { MNEM_FMUL, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 1DC */ { MNEM_FMULP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1DD */ { MNEM_FMULP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1DE */ { MNEM_FMULP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1DF */ { MNEM_FMULP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E0 */ { MNEM_FMULP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E1 */ { MNEM_FMULP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E2 */ { MNEM_FMULP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E3 */ { MNEM_FMULP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 1E4 */ { MNEM_FNDISI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1E5 */ { MNEM_FNENI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1E6 */ { MNEM_FNINIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1E7 */ { MNEM_FNOP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1E8 */ { MNEM_FNSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1E9 */ { MNEM_FNSETPM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1EA */ { MNEM_FNSTCW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1EB */ { MNEM_FNSTENV, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1EC */ { MNEM_FNSTSW, { OPI_AX, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1ED */ { MNEM_FNSTSW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1EE */ { MNEM_FPATAN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1EF */ { MNEM_FPREM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F0 */ { MNEM_FPREM1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F1 */ { MNEM_FPTAN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F2 */ { MNEM_FRNDINT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F3 */ { MNEM_FRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1F4 */ { MNEM_FRSTPM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F5 */ { MNEM_FSCALE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F6 */ { MNEM_FSIN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F7 */ { MNEM_FSINCOS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F8 */ { MNEM_FSQRT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1F9 */ { MNEM_FST, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FA */ { MNEM_FST, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FB */ { MNEM_FST, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FC */ { MNEM_FST, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FD */ { MNEM_FST, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 1FE */ { MNEM_FST, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 1FF */ { MNEM_FST, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 200 */ { MNEM_FST, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 201 */ { MNEM_FST, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 202 */ { MNEM_FST, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 203 */ { MNEM_FSTP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 204 */ { MNEM_FSTP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 205 */ { MNEM_FSTP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 206 */ { MNEM_FSTP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 207 */ { MNEM_FSTP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 208 */ { MNEM_FSTP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 209 */ { MNEM_FSTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 20A */ { MNEM_FSTP, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 20B */ { MNEM_FSTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 20C */ { MNEM_FSTP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 20D */ { MNEM_FSTP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 20E */ { MNEM_FSTP1, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 20F */ { MNEM_FSTP1, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 210 */ { MNEM_FSTP1, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 211 */ { MNEM_FSTP1, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 212 */ { MNEM_FSTP1, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 213 */ { MNEM_FSTP1, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 214 */ { MNEM_FSTP1, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 215 */ { MNEM_FSTP1, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 216 */ { MNEM_FSTP8, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 217 */ { MNEM_FSTP8, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 218 */ { MNEM_FSTP8, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 219 */ { MNEM_FSTP8, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21A */ { MNEM_FSTP8, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21B */ { MNEM_FSTP8, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21C */ { MNEM_FSTP8, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21D */ { MNEM_FSTP8, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21E */ { MNEM_FSTP9, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 21F */ { MNEM_FSTP9, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 220 */ { MNEM_FSTP9, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 221 */ { MNEM_FSTP9, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 222 */ { MNEM_FSTP9, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 223 */ { MNEM_FSTP9, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 224 */ { MNEM_FSTP9, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 225 */ { MNEM_FSTP9, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 226 */ { MNEM_FSUB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 227 */ { MNEM_FSUB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 228 */ { MNEM_FSUB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 229 */ { MNEM_FSUB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 22A */ { MNEM_FSUB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 22B */ { MNEM_FSUB, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 22C */ { MNEM_FSUB, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 22D */ { MNEM_FSUB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 22E */ { MNEM_FSUB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 22F */ { MNEM_FSUB, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 230 */ { MNEM_FSUB, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 231 */ { MNEM_FSUB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 232 */ { MNEM_FSUB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 233 */ { MNEM_FSUB, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 234 */ { MNEM_FSUB, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 235 */ { MNEM_FSUB, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 236 */ { MNEM_FSUB, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 237 */ { MNEM_FSUB, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 238 */ { MNEM_FSUBP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 239 */ { MNEM_FSUBP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23A */ { MNEM_FSUBP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23B */ { MNEM_FSUBP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23C */ { MNEM_FSUBP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23D */ { MNEM_FSUBP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23E */ { MNEM_FSUBP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 23F */ { MNEM_FSUBP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 240 */ { MNEM_FSUBR, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 241 */ { MNEM_FSUBR, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 242 */ { MNEM_FSUBR, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 243 */ { MNEM_FSUBR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 244 */ { MNEM_FSUBR, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 245 */ { MNEM_FSUBR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 246 */ { MNEM_FSUBR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 247 */ { MNEM_FSUBR, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 248 */ { MNEM_FSUBR, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 249 */ { MNEM_FSUBR, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 24A */ { MNEM_FSUBR, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 24B */ { MNEM_FSUBR, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 24C */ { MNEM_FSUBR, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 24D */ { MNEM_FSUBR, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 24E */ { MNEM_FSUBR, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 24F */ { MNEM_FSUBR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 250 */ { MNEM_FSUBR, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 251 */ { MNEM_FSUBR, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 252 */ { MNEM_FSUBRP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 253 */ { MNEM_FSUBRP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 254 */ { MNEM_FSUBRP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 255 */ { MNEM_FSUBRP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 256 */ { MNEM_FSUBRP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 257 */ { MNEM_FSUBRP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 258 */ { MNEM_FSUBRP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 259 */ { MNEM_FSUBRP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 25A */ { MNEM_FTST, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25B */ { MNEM_FUCOM, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25C */ { MNEM_FUCOM, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25D */ { MNEM_FUCOM, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25E */ { MNEM_FUCOM, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 25F */ { MNEM_FUCOM, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 260 */ { MNEM_FUCOM, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 261 */ { MNEM_FUCOM, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 262 */ { MNEM_FUCOM, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 263 */ { MNEM_FUCOMI, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 264 */ { MNEM_FUCOMI, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 265 */ { MNEM_FUCOMI, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 266 */ { MNEM_FUCOMI, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 267 */ { MNEM_FUCOMI, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 268 */ { MNEM_FUCOMI, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 269 */ { MNEM_FUCOMI, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 26A */ { MNEM_FUCOMI, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 26B */ { MNEM_FUCOMIP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 26C */ { MNEM_FUCOMIP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 26D */ { MNEM_FUCOMIP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 26E */ { MNEM_FUCOMIP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 26F */ { MNEM_FUCOMIP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 270 */ { MNEM_FUCOMIP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 271 */ { MNEM_FUCOMIP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 272 */ { MNEM_FUCOMIP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 273 */ { MNEM_FUCOMP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 274 */ { MNEM_FUCOMP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 275 */ { MNEM_FUCOMP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 276 */ { MNEM_FUCOMP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 277 */ { MNEM_FUCOMP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 278 */ { MNEM_FUCOMP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 279 */ { MNEM_FUCOMP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 27A */ { MNEM_FUCOMP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 27B */ { MNEM_FUCOMPP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 27C */ { MNEM_FXAM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 27D */ { MNEM_FXCH, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, - /* 27E */ { MNEM_FXCH, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, - /* 27F */ { MNEM_FXCH, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, - /* 280 */ { MNEM_FXCH, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, - /* 281 */ { MNEM_FXCH, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, - /* 282 */ { MNEM_FXCH, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, - /* 283 */ { MNEM_FXCH, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, - /* 284 */ { MNEM_FXCH, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, - /* 285 */ { MNEM_FXCH4, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 286 */ { MNEM_FXCH4, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 287 */ { MNEM_FXCH4, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 288 */ { MNEM_FXCH4, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 289 */ { MNEM_FXCH4, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28A */ { MNEM_FXCH4, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28B */ { MNEM_FXCH4, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28C */ { MNEM_FXCH4, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28D */ { MNEM_FXCH7, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28E */ { MNEM_FXCH7, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 28F */ { MNEM_FXCH7, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 290 */ { MNEM_FXCH7, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 291 */ { MNEM_FXCH7, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 292 */ { MNEM_FXCH7, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 293 */ { MNEM_FXCH7, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 294 */ { MNEM_FXCH7, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 295 */ { MNEM_FXRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 296 */ { MNEM_FXSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 297 */ { MNEM_FXTRACT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 298 */ { MNEM_FYL2X, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 299 */ { MNEM_FYL2XP1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 29A */ { MNEM_GETSEC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 29B */ { MNEM_HADDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 29C */ { MNEM_HADDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 29D */ { MNEM_HLT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 29E */ { MNEM_HSUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 29F */ { MNEM_HSUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A0 */ { MNEM_IDIV, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2A1 */ { MNEM_IDIV, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2A2 */ { MNEM_IMUL, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A3 */ { MNEM_IMUL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A4 */ { MNEM_IMUL, { OPI_Gv, OPI_Ev, OPI_Iz, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A5 */ { MNEM_IMUL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A6 */ { MNEM_IMUL, { OPI_Gv, OPI_Ev, OPI_sIb, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2A7 */ { MNEM_IN, { OPI_AL, OPI_DX, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 2A8 */ { MNEM_IN, { OPI_eAX, OPI_DX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 2A9 */ { MNEM_IN, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 2AA */ { MNEM_IN, { OPI_eAX, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 2AB */ { MNEM_INC, { OPI_R0z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2AC */ { MNEM_INC, { OPI_R1z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2AD */ { MNEM_INC, { OPI_R7z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2AE */ { MNEM_INC, { OPI_R6z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2AF */ { MNEM_INC, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2B0 */ { MNEM_INC, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 2B1 */ { MNEM_INC, { OPI_R3z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2B2 */ { MNEM_INC, { OPI_R2z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2B3 */ { MNEM_INC, { OPI_R4z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2B4 */ { MNEM_INC, { OPI_R5z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, - /* 2B5 */ { MNEM_INSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 2B6 */ { MNEM_INSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 2B7 */ { MNEM_INSERTPS, { OPI_V, OPI_Md, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2B8 */ { MNEM_INSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 2B9 */ { MNEM_INT, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2BA */ { MNEM_INT1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2BB */ { MNEM_INT3, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2BC */ { MNEM_INTO, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 2BD */ { MNEM_INVD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2BE */ { MNEM_INVEPT, { OPI_Gd, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, - /* 2BF */ { MNEM_INVEPT, { OPI_Gq, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, - /* 2C0 */ { MNEM_INVLPG, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2C1 */ { MNEM_INVLPGA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2C2 */ { MNEM_INVVPID, { OPI_Gq, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, - /* 2C3 */ { MNEM_INVVPID, { OPI_Gd, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, - /* 2C4 */ { MNEM_IRETD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 2C5 */ { MNEM_IRETQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 2C6 */ { MNEM_IRETW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 2C7 */ { MNEM_JA, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2C8 */ { MNEM_JA, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2C9 */ { MNEM_JB, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2CA */ { MNEM_JB, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2CB */ { MNEM_JBE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2CC */ { MNEM_JBE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2CD */ { MNEM_JCXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, - /* 2CE */ { MNEM_JE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2CF */ { MNEM_JE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D0 */ { MNEM_JECXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, - /* 2D1 */ { MNEM_JG, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2D2 */ { MNEM_JG, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D3 */ { MNEM_JGE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2D4 */ { MNEM_JGE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D5 */ { MNEM_JL, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2D6 */ { MNEM_JL, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D7 */ { MNEM_JLE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2D8 */ { MNEM_JLE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2D9 */ { MNEM_JMP, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 2DA */ { MNEM_JMP, { OPI_Fv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2DB */ { MNEM_JMP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 2DC */ { MNEM_JMP, { OPI_Av, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 2DD */ { MNEM_JMP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_DEFAULT_64 }, - /* 2DE */ { MNEM_JNB, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2DF */ { MNEM_JNB, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E0 */ { MNEM_JNE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E1 */ { MNEM_JNE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E2 */ { MNEM_JNO, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E3 */ { MNEM_JNO, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E4 */ { MNEM_JNP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E5 */ { MNEM_JNP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E6 */ { MNEM_JNS, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E7 */ { MNEM_JNS, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2E8 */ { MNEM_JO, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2E9 */ { MNEM_JO, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2EA */ { MNEM_JP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2EB */ { MNEM_JP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2EC */ { MNEM_JRCXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, - /* 2ED */ { MNEM_JS, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2EE */ { MNEM_JS, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 2EF */ { MNEM_LAHF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2F0 */ { MNEM_LAR, { OPI_Gv, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2F1 */ { MNEM_LDDQU, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2F2 */ { MNEM_LDMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2F3 */ { MNEM_LDS, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 2F4 */ { MNEM_LEA, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2F5 */ { MNEM_LEAVE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2F6 */ { MNEM_LES, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, - /* 2F7 */ { MNEM_LFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 2F8 */ { MNEM_LFS, { OPI_Gz, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2F9 */ { MNEM_LGDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FA */ { MNEM_LGS, { OPI_Gz, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 2FB */ { MNEM_LIDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FC */ { MNEM_LLDT, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FD */ { MNEM_LMSW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FE */ { MNEM_LMSW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 2FF */ { MNEM_LOCK, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 300 */ { MNEM_LODSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 301 */ { MNEM_LODSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 302 */ { MNEM_LODSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 303 */ { MNEM_LODSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 304 */ { MNEM_LOOP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 305 */ { MNEM_LOOPE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 306 */ { MNEM_LOOPNE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 307 */ { MNEM_LSL, { OPI_Gv, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 308 */ { MNEM_LSS, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 309 */ { MNEM_LTR, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 30A */ { MNEM_MASKMOVDQU, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 30B */ { MNEM_MASKMOVQ, { OPI_P, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 30C */ { MNEM_MAXPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 30D */ { MNEM_MAXPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 30E */ { MNEM_MAXSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 30F */ { MNEM_MAXSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 310 */ { MNEM_MFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 311 */ { MNEM_MINPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 312 */ { MNEM_MINPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 313 */ { MNEM_MINSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 314 */ { MNEM_MINSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 315 */ { MNEM_MONITOR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 316 */ { MNEM_MONTMUL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 317 */ { MNEM_MOV, { OPI_R0b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 318 */ { MNEM_MOV, { OPI_R2b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 319 */ { MNEM_MOV, { OPI_R3b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 31A */ { MNEM_MOV, { OPI_R1b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 31B */ { MNEM_MOV, { OPI_AL, OPI_Ob, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 31C */ { MNEM_MOV, { OPI_S, OPI_MwRv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 31D */ { MNEM_MOV, { OPI_MwRv, OPI_S, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 31E */ { MNEM_MOV, { OPI_Ov, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 31F */ { MNEM_MOV, { OPI_Ob, OPI_AL, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 320 */ { MNEM_MOV, { OPI_rAX, OPI_Ov, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 321 */ { MNEM_MOV, { OPI_R4b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 322 */ { MNEM_MOV, { OPI_R7v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 323 */ { MNEM_MOV, { OPI_R6v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 324 */ { MNEM_MOV, { OPI_R5v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 325 */ { MNEM_MOV, { OPI_R, OPI_C, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 326 */ { MNEM_MOV, { OPI_D, OPI_R, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 327 */ { MNEM_MOV, { OPI_C, OPI_R, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 328 */ { MNEM_MOV, { OPI_R, OPI_D, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 329 */ { MNEM_MOV, { OPI_R4v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32A */ { MNEM_MOV, { OPI_R7b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32B */ { MNEM_MOV, { OPI_R6b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32C */ { MNEM_MOV, { OPI_R5b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32D */ { MNEM_MOV, { OPI_R0v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32E */ { MNEM_MOV, { OPI_R3v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 32F */ { MNEM_MOV, { OPI_R2v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 330 */ { MNEM_MOV, { OPI_R1v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 331 */ { MNEM_MOV, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 332 */ { MNEM_MOV, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 333 */ { MNEM_MOV, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 334 */ { MNEM_MOV, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 335 */ { MNEM_MOV, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 336 */ { MNEM_MOV, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 337 */ { MNEM_MOVAPD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 338 */ { MNEM_MOVAPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 339 */ { MNEM_MOVAPS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33A */ { MNEM_MOVAPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33B */ { MNEM_MOVBE, { OPI_Gv, OPI_Mv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33C */ { MNEM_MOVBE, { OPI_Mv, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33D */ { MNEM_MOVD, { OPI_P, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33E */ { MNEM_MOVD, { OPI_Ey, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 33F */ { MNEM_MOVD, { OPI_Ey, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 340 */ { MNEM_MOVD, { OPI_Ey, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 341 */ { MNEM_MOVD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 342 */ { MNEM_MOVD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 343 */ { MNEM_MOVD, { OPI_P, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 344 */ { MNEM_MOVD, { OPI_Ey, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 345 */ { MNEM_MOVDDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 346 */ { MNEM_MOVDDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 347 */ { MNEM_MOVDQ2Q, { OPI_P, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 348 */ { MNEM_MOVDQA, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 349 */ { MNEM_MOVDQA, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34A */ { MNEM_MOVDQU, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34B */ { MNEM_MOVDQU, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34C */ { MNEM_MOVHLPS, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34D */ { MNEM_MOVHPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34E */ { MNEM_MOVHPD, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 34F */ { MNEM_MOVHPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 350 */ { MNEM_MOVHPS, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 351 */ { MNEM_MOVLHPS, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 352 */ { MNEM_MOVLPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 353 */ { MNEM_MOVLPD, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 354 */ { MNEM_MOVLPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 355 */ { MNEM_MOVLPS, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 356 */ { MNEM_MOVMSKPD, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 357 */ { MNEM_MOVMSKPS, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 358 */ { MNEM_MOVNTDQ, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 359 */ { MNEM_MOVNTDQA, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35A */ { MNEM_MOVNTI, { OPI_M, OPI_Gy, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35B */ { MNEM_MOVNTPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35C */ { MNEM_MOVNTPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35D */ { MNEM_MOVNTQ, { OPI_M, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35E */ { MNEM_MOVQ, { OPI_P, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 35F */ { MNEM_MOVQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 360 */ { MNEM_MOVQ, { OPI_Eq, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 361 */ { MNEM_MOVQ, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 362 */ { MNEM_MOVQ, { OPI_Q, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 363 */ { MNEM_MOVQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 364 */ { MNEM_MOVQ, { OPI_V, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 365 */ { MNEM_MOVQ, { OPI_Eq, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 366 */ { MNEM_MOVQ2DQ, { OPI_V, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_OPERAND1_WRITE }, - /* 367 */ { MNEM_MOVSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_OPERAND1_WRITE }, - /* 368 */ { MNEM_MOVSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 369 */ { MNEM_MOVSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 36A */ { MNEM_MOVSD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36B */ { MNEM_MOVSHDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36C */ { MNEM_MOVSHDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36D */ { MNEM_MOVSLDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36E */ { MNEM_MOVSLDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 36F */ { MNEM_MOVSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 370 */ { MNEM_MOVSS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 371 */ { MNEM_MOVSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 372 */ { MNEM_MOVSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 373 */ { MNEM_MOVSX, { OPI_Gv, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 374 */ { MNEM_MOVSX, { OPI_Gy, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 375 */ { MNEM_MOVSXD, { OPI_Gq, OPI_Ed, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 376 */ { MNEM_MOVUPD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 377 */ { MNEM_MOVUPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 378 */ { MNEM_MOVUPS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 379 */ { MNEM_MOVUPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 37A */ { MNEM_MOVZX, { OPI_Gy, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 37B */ { MNEM_MOVZX, { OPI_Gv, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 37C */ { MNEM_MPSADBW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 37D */ { MNEM_MUL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 37E */ { MNEM_MUL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 37F */ { MNEM_MULPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 380 */ { MNEM_MULPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 381 */ { MNEM_MULSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 382 */ { MNEM_MULSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 383 */ { MNEM_MWAIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 384 */ { MNEM_NEG, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 385 */ { MNEM_NEG, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 386 */ { MNEM_NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 387 */ { MNEM_NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 388 */ { MNEM_NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 389 */ { MNEM_NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 38A */ { MNEM_NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 38B */ { MNEM_NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 38C */ { MNEM_NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 38D */ { MNEM_NOT, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 38E */ { MNEM_NOT, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 38F */ { MNEM_OR, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 390 */ { MNEM_OR, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 391 */ { MNEM_OR, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 392 */ { MNEM_OR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 393 */ { MNEM_OR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 394 */ { MNEM_OR, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 395 */ { MNEM_OR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 396 */ { MNEM_OR, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 397 */ { MNEM_OR, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 398 */ { MNEM_OR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 399 */ { MNEM_ORPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 39A */ { MNEM_ORPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 39B */ { MNEM_OUT, { OPI_DX, OPI_AL, OPI_NONE, OPI_NONE }, 0 }, - /* 39C */ { MNEM_OUT, { OPI_DX, OPI_eAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 39D */ { MNEM_OUT, { OPI_Ib, OPI_AL, OPI_NONE, OPI_NONE }, 0 }, - /* 39E */ { MNEM_OUT, { OPI_Ib, OPI_eAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 39F */ { MNEM_OUTSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 3A0 */ { MNEM_OUTSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 3A1 */ { MNEM_OUTSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 3A2 */ { MNEM_PABSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A3 */ { MNEM_PABSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A4 */ { MNEM_PABSD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A5 */ { MNEM_PABSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A6 */ { MNEM_PABSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A7 */ { MNEM_PABSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3A8 */ { MNEM_PACKSSDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3A9 */ { MNEM_PACKSSDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AA */ { MNEM_PACKSSWB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AB */ { MNEM_PACKSSWB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AC */ { MNEM_PACKUSDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AD */ { MNEM_PACKUSWB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AE */ { MNEM_PACKUSWB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3AF */ { MNEM_PADDB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B0 */ { MNEM_PADDB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B1 */ { MNEM_PADDD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B2 */ { MNEM_PADDD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B3 */ { MNEM_PADDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B4 */ { MNEM_PADDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B5 */ { MNEM_PADDSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B6 */ { MNEM_PADDSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B7 */ { MNEM_PADDSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B8 */ { MNEM_PADDSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3B9 */ { MNEM_PADDUSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BA */ { MNEM_PADDUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BB */ { MNEM_PADDUSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BC */ { MNEM_PADDUSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BD */ { MNEM_PADDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BE */ { MNEM_PADDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3BF */ { MNEM_PALIGNR, { OPI_P, OPI_Q, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C0 */ { MNEM_PALIGNR, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C1 */ { MNEM_PAND, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C2 */ { MNEM_PAND, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C3 */ { MNEM_PANDN, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C4 */ { MNEM_PANDN, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C5 */ { MNEM_PAVGB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C6 */ { MNEM_PAVGB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C7 */ { MNEM_PAVGUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C8 */ { MNEM_PAVGW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3C9 */ { MNEM_PAVGW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CA */ { MNEM_PBLENDVB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CB */ { MNEM_PBLENDW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CC */ { MNEM_PCLMULQDQ, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CD */ { MNEM_PCMPEQB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CE */ { MNEM_PCMPEQB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3CF */ { MNEM_PCMPEQD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D0 */ { MNEM_PCMPEQD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D1 */ { MNEM_PCMPEQQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3D2 */ { MNEM_PCMPEQW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D3 */ { MNEM_PCMPEQW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D4 */ { MNEM_PCMPESTRI, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3D5 */ { MNEM_PCMPESTRM, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3D6 */ { MNEM_PCMPGTB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D7 */ { MNEM_PCMPGTB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D8 */ { MNEM_PCMPGTD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3D9 */ { MNEM_PCMPGTD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3DA */ { MNEM_PCMPGTQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3DB */ { MNEM_PCMPGTW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3DC */ { MNEM_PCMPGTW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3DD */ { MNEM_PCMPISTRI, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3DE */ { MNEM_PCMPISTRM, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 3DF */ { MNEM_PEXTRB, { OPI_MbRv, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 3E0 */ { MNEM_PEXTRD, { OPI_Ed, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E1 */ { MNEM_PEXTRD, { OPI_Ed, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E2 */ { MNEM_PEXTRQ, { OPI_Eq, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 3E3 */ { MNEM_PEXTRW, { OPI_MwRd, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E4 */ { MNEM_PEXTRW, { OPI_Gd, OPI_N, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E5 */ { MNEM_PEXTRW, { OPI_Gd, OPI_U, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E6 */ { MNEM_PF2ID, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E7 */ { MNEM_PF2IW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3E8 */ { MNEM_PFACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3E9 */ { MNEM_PFADD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EA */ { MNEM_PFCMPEQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EB */ { MNEM_PFCMPGE, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EC */ { MNEM_PFCMPGT, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3ED */ { MNEM_PFMAX, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EE */ { MNEM_PFMIN, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3EF */ { MNEM_PFMUL, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F0 */ { MNEM_PFNACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F1 */ { MNEM_PFPNACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F2 */ { MNEM_PFRCP, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F3 */ { MNEM_PFRCPIT1, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F4 */ { MNEM_PFRCPIT2, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F5 */ { MNEM_PFRSQIT1, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F6 */ { MNEM_PFRSQRT, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 3F7 */ { MNEM_PFSUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F8 */ { MNEM_PFSUBR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3F9 */ { MNEM_PHADDD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FA */ { MNEM_PHADDD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FB */ { MNEM_PHADDSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FC */ { MNEM_PHADDSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FD */ { MNEM_PHADDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FE */ { MNEM_PHADDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 3FF */ { MNEM_PHMINPOSUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 400 */ { MNEM_PHSUBD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 401 */ { MNEM_PHSUBD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 402 */ { MNEM_PHSUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 403 */ { MNEM_PHSUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 404 */ { MNEM_PHSUBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 405 */ { MNEM_PHSUBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 406 */ { MNEM_PI2FD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 407 */ { MNEM_PI2FW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 408 */ { MNEM_PINSRB, { OPI_V, OPI_MbRd, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 409 */ { MNEM_PINSRD, { OPI_V, OPI_Ed, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 40A */ { MNEM_PINSRD, { OPI_V, OPI_Ed, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 40B */ { MNEM_PINSRQ, { OPI_V, OPI_Eq, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 40C */ { MNEM_PINSRW, { OPI_V, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 40D */ { MNEM_PINSRW, { OPI_P, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 40E */ { MNEM_PMADDUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 40F */ { MNEM_PMADDUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 410 */ { MNEM_PMADDWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 411 */ { MNEM_PMADDWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 412 */ { MNEM_PMAXSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 413 */ { MNEM_PMAXSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 414 */ { MNEM_PMAXSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 415 */ { MNEM_PMAXSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 416 */ { MNEM_PMAXUB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 417 */ { MNEM_PMAXUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 418 */ { MNEM_PMAXUD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 419 */ { MNEM_PMAXUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41A */ { MNEM_PMINSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41B */ { MNEM_PMINSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41C */ { MNEM_PMINSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41D */ { MNEM_PMINSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41E */ { MNEM_PMINUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 41F */ { MNEM_PMINUB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 420 */ { MNEM_PMINUD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 421 */ { MNEM_PMINUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 422 */ { MNEM_PMOVMSKB, { OPI_Gd, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 423 */ { MNEM_PMOVMSKB, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 424 */ { MNEM_PMOVSXBD, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 425 */ { MNEM_PMOVSXBQ, { OPI_V, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 426 */ { MNEM_PMOVSXBW, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 427 */ { MNEM_PMOVSXDQ, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 428 */ { MNEM_PMOVSXWD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 429 */ { MNEM_PMOVSXWQ, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42A */ { MNEM_PMOVZXBD, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42B */ { MNEM_PMOVZXBQ, { OPI_V, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42C */ { MNEM_PMOVZXBW, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42D */ { MNEM_PMOVZXDQ, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42E */ { MNEM_PMOVZXWD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 42F */ { MNEM_PMOVZXWQ, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 430 */ { MNEM_PMULDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 431 */ { MNEM_PMULHRSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 432 */ { MNEM_PMULHRSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 433 */ { MNEM_PMULHRW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 434 */ { MNEM_PMULHUW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 435 */ { MNEM_PMULHUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 436 */ { MNEM_PMULHW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 437 */ { MNEM_PMULHW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 438 */ { MNEM_PMULLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 439 */ { MNEM_PMULLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 43A */ { MNEM_PMULLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 43B */ { MNEM_PMULUDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 43C */ { MNEM_PMULUDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 43D */ { MNEM_POP, { OPI_R5v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 43E */ { MNEM_POP, { OPI_R4v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 43F */ { MNEM_POP, { OPI_R6v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 440 */ { MNEM_POP, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 441 */ { MNEM_POP, { OPI_R7v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 442 */ { MNEM_POP, { OPI_R3v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 443 */ { MNEM_POP, { OPI_DS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, - /* 444 */ { MNEM_POP, { OPI_GS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 445 */ { MNEM_POP, { OPI_ES, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, - /* 446 */ { MNEM_POP, { OPI_SS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, - /* 447 */ { MNEM_POP, { OPI_R1v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 448 */ { MNEM_POP, { OPI_R2v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 449 */ { MNEM_POP, { OPI_R0v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 44A */ { MNEM_POP, { OPI_FS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 44B */ { MNEM_POPA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, - /* 44C */ { MNEM_POPAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, - /* 44D */ { MNEM_POPCNT, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 44E */ { MNEM_POPFD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 44F */ { MNEM_POPFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 450 */ { MNEM_POPFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 451 */ { MNEM_POPFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 452 */ { MNEM_POR, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 453 */ { MNEM_POR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 454 */ { MNEM_PREFETCH, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 455 */ { MNEM_PREFETCHNTA, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 456 */ { MNEM_PREFETCHT0, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 457 */ { MNEM_PREFETCHT1, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 458 */ { MNEM_PREFETCHT2, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 459 */ { MNEM_PSADBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 45A */ { MNEM_PSADBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 45B */ { MNEM_PSHUFB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 45C */ { MNEM_PSHUFB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 45D */ { MNEM_PSHUFD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 45E */ { MNEM_PSHUFHW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 45F */ { MNEM_PSHUFLW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 460 */ { MNEM_PSHUFW, { OPI_P, OPI_Q, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 461 */ { MNEM_PSIGNB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 462 */ { MNEM_PSIGNB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 463 */ { MNEM_PSIGND, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 464 */ { MNEM_PSIGND, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 465 */ { MNEM_PSIGNW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 466 */ { MNEM_PSIGNW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 467 */ { MNEM_PSLLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 468 */ { MNEM_PSLLD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 469 */ { MNEM_PSLLD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46A */ { MNEM_PSLLD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46B */ { MNEM_PSLLDQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46C */ { MNEM_PSLLQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46D */ { MNEM_PSLLQ, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 46E */ { MNEM_PSLLQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 46F */ { MNEM_PSLLQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 470 */ { MNEM_PSLLW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 471 */ { MNEM_PSLLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 472 */ { MNEM_PSLLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 473 */ { MNEM_PSLLW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 474 */ { MNEM_PSRAD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 475 */ { MNEM_PSRAD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 476 */ { MNEM_PSRAD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 477 */ { MNEM_PSRAD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 478 */ { MNEM_PSRAW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 479 */ { MNEM_PSRAW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 47A */ { MNEM_PSRAW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 47B */ { MNEM_PSRAW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 47C */ { MNEM_PSRLD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 47D */ { MNEM_PSRLD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 47E */ { MNEM_PSRLD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 47F */ { MNEM_PSRLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 480 */ { MNEM_PSRLDQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 481 */ { MNEM_PSRLQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 482 */ { MNEM_PSRLQ, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 483 */ { MNEM_PSRLQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 484 */ { MNEM_PSRLQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 485 */ { MNEM_PSRLW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 486 */ { MNEM_PSRLW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 487 */ { MNEM_PSRLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 488 */ { MNEM_PSRLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 489 */ { MNEM_PSUBB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48A */ { MNEM_PSUBB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48B */ { MNEM_PSUBD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48C */ { MNEM_PSUBD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48D */ { MNEM_PSUBQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48E */ { MNEM_PSUBQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 48F */ { MNEM_PSUBSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 490 */ { MNEM_PSUBSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 491 */ { MNEM_PSUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 492 */ { MNEM_PSUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 493 */ { MNEM_PSUBUSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 494 */ { MNEM_PSUBUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 495 */ { MNEM_PSUBUSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 496 */ { MNEM_PSUBUSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 497 */ { MNEM_PSUBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 498 */ { MNEM_PSUBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 499 */ { MNEM_PSWAPD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 49A */ { MNEM_PTEST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 49B */ { MNEM_PUNPCKHBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 49C */ { MNEM_PUNPCKHBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 49D */ { MNEM_PUNPCKHDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 49E */ { MNEM_PUNPCKHDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 49F */ { MNEM_PUNPCKHQDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A0 */ { MNEM_PUNPCKHWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A1 */ { MNEM_PUNPCKHWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A2 */ { MNEM_PUNPCKLBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A3 */ { MNEM_PUNPCKLBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A4 */ { MNEM_PUNPCKLDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A5 */ { MNEM_PUNPCKLDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A6 */ { MNEM_PUNPCKLQDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A7 */ { MNEM_PUNPCKLWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A8 */ { MNEM_PUNPCKLWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4A9 */ { MNEM_PUSH, { OPI_DS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 4AA */ { MNEM_PUSH, { OPI_ES, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 4AB */ { MNEM_PUSH, { OPI_sIb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, - /* 4AC */ { MNEM_PUSH, { OPI_SS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 4AD */ { MNEM_PUSH, { OPI_CS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, - /* 4AE */ { MNEM_PUSH, { OPI_R3v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4AF */ { MNEM_PUSH, { OPI_R4v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B0 */ { MNEM_PUSH, { OPI_R5v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B1 */ { MNEM_PUSH, { OPI_R6v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B2 */ { MNEM_PUSH, { OPI_R7v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B3 */ { MNEM_PUSH, { OPI_R2v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B4 */ { MNEM_PUSH, { OPI_R0v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B5 */ { MNEM_PUSH, { OPI_FS, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4B6 */ { MNEM_PUSH, { OPI_GS, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4B7 */ { MNEM_PUSH, { OPI_sIz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 4B8 */ { MNEM_PUSH, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4B9 */ { MNEM_PUSH, { OPI_R1v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 4BA */ { MNEM_PUSHA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, - /* 4BB */ { MNEM_PUSHAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, - /* 4BC */ { MNEM_PUSHFD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 4BD */ { MNEM_PUSHFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 4BE */ { MNEM_PUSHFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 4BF */ { MNEM_PUSHFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, - /* 4C0 */ { MNEM_PUSHFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, - /* 4C1 */ { MNEM_PXOR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C2 */ { MNEM_PXOR, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C3 */ { MNEM_RCL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C4 */ { MNEM_RCL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C5 */ { MNEM_RCL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C6 */ { MNEM_RCL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C7 */ { MNEM_RCL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C8 */ { MNEM_RCL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4C9 */ { MNEM_RCPPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4CA */ { MNEM_RCPSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4CB */ { MNEM_RCR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4CC */ { MNEM_RCR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4CD */ { MNEM_RCR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4CE */ { MNEM_RCR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4CF */ { MNEM_RCR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4D0 */ { MNEM_RCR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4D1 */ { MNEM_RDMSR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D2 */ { MNEM_RDPMC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D3 */ { MNEM_RDRAND, { OPI_R, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4D4 */ { MNEM_RDTSC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D5 */ { MNEM_RDTSCP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D6 */ { MNEM_REP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D7 */ { MNEM_REPNE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D8 */ { MNEM_RET, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4D9 */ { MNEM_RET, { OPI_Iw, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4DA */ { MNEM_RETF, { OPI_Iw, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4DB */ { MNEM_RETF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4DC */ { MNEM_ROL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4DD */ { MNEM_ROL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4DE */ { MNEM_ROL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4DF */ { MNEM_ROL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E0 */ { MNEM_ROL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E1 */ { MNEM_ROL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E2 */ { MNEM_ROR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E3 */ { MNEM_ROR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E4 */ { MNEM_ROR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E5 */ { MNEM_ROR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E6 */ { MNEM_ROR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E7 */ { MNEM_ROR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4E8 */ { MNEM_ROUNDPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4E9 */ { MNEM_ROUNDPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EA */ { MNEM_ROUNDSD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EB */ { MNEM_ROUNDSS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EC */ { MNEM_RSM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4ED */ { MNEM_RSQRTPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EE */ { MNEM_RSQRTSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4EF */ { MNEM_SAHF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 4F0 */ { MNEM_SALC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 4F1 */ { MNEM_SAR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F2 */ { MNEM_SAR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F3 */ { MNEM_SAR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F4 */ { MNEM_SAR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F5 */ { MNEM_SAR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F6 */ { MNEM_SAR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 4F7 */ { MNEM_SBB, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4F8 */ { MNEM_SBB, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4F9 */ { MNEM_SBB, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, - /* 4FA */ { MNEM_SBB, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, - /* 4FB */ { MNEM_SBB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4FC */ { MNEM_SBB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_WRITE }, - /* 4FD */ { MNEM_SBB, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4FE */ { MNEM_SBB, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 4FF */ { MNEM_SBB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 500 */ { MNEM_SBB, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 501 */ { MNEM_SCASB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 502 */ { MNEM_SCASD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 503 */ { MNEM_SCASQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 504 */ { MNEM_SCASW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 505 */ { MNEM_SETA, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 506 */ { MNEM_SETAE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 507 */ { MNEM_SETB, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 508 */ { MNEM_SETBE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 509 */ { MNEM_SETE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50A */ { MNEM_SETG, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50B */ { MNEM_SETGE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50C */ { MNEM_SETL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50D */ { MNEM_SETLE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50E */ { MNEM_SETNE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 50F */ { MNEM_SETNO, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 510 */ { MNEM_SETNP, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 511 */ { MNEM_SETNS, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 512 */ { MNEM_SETO, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 513 */ { MNEM_SETP, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 514 */ { MNEM_SETS, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 515 */ { MNEM_SFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 516 */ { MNEM_SGDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 517 */ { MNEM_SHL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 518 */ { MNEM_SHL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 519 */ { MNEM_SHL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51A */ { MNEM_SHL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51B */ { MNEM_SHL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51C */ { MNEM_SHL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51D */ { MNEM_SHL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51E */ { MNEM_SHL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 51F */ { MNEM_SHL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 520 */ { MNEM_SHL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 521 */ { MNEM_SHL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 522 */ { MNEM_SHL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 523 */ { MNEM_SHLD, { OPI_Ev, OPI_Gv, OPI_CL, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 524 */ { MNEM_SHLD, { OPI_Ev, OPI_Gv, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 525 */ { MNEM_SHR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 526 */ { MNEM_SHR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 527 */ { MNEM_SHR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 528 */ { MNEM_SHR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 529 */ { MNEM_SHR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52A */ { MNEM_SHR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52B */ { MNEM_SHRD, { OPI_Ev, OPI_Gv, OPI_CL, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52C */ { MNEM_SHRD, { OPI_Ev, OPI_Gv, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52D */ { MNEM_SHUFPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52E */ { MNEM_SHUFPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 52F */ { MNEM_SIDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 530 */ { MNEM_SKINIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 531 */ { MNEM_SLDT, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 532 */ { MNEM_SMSW, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 533 */ { MNEM_SMSW, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 534 */ { MNEM_SQRTPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 535 */ { MNEM_SQRTPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 536 */ { MNEM_SQRTSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 537 */ { MNEM_SQRTSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 538 */ { MNEM_STC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 539 */ { MNEM_STD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 53A */ { MNEM_STGI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 53B */ { MNEM_STI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 53C */ { MNEM_STMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 53D */ { MNEM_STOSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 53E */ { MNEM_STOSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 53F */ { MNEM_STOSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 540 */ { MNEM_STOSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 541 */ { MNEM_STR, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 542 */ { MNEM_SUB, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 543 */ { MNEM_SUB, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 544 */ { MNEM_SUB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 545 */ { MNEM_SUB, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 546 */ { MNEM_SUB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 547 */ { MNEM_SUB, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 548 */ { MNEM_SUB, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 549 */ { MNEM_SUB, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54A */ { MNEM_SUB, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 54B */ { MNEM_SUB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54C */ { MNEM_SUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54D */ { MNEM_SUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54E */ { MNEM_SUBSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 54F */ { MNEM_SUBSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 550 */ { MNEM_SWAPGS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 551 */ { MNEM_SYSCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 552 */ { MNEM_SYSENTER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 553 */ { MNEM_SYSENTER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 554 */ { MNEM_SYSEXIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 555 */ { MNEM_SYSEXIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 556 */ { MNEM_SYSRET, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 557 */ { MNEM_TEST, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 558 */ { MNEM_TEST, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 559 */ { MNEM_TEST, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 55A */ { MNEM_TEST, { OPI_Ev, OPI_Iz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 55B */ { MNEM_TEST, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, - /* 55C */ { MNEM_TEST, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 55D */ { MNEM_TEST, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 55E */ { MNEM_TEST, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, 0 }, - /* 55F */ { MNEM_UCOMISD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 560 */ { MNEM_UCOMISS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 561 */ { MNEM_UD2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 562 */ { MNEM_UNPCKHPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 563 */ { MNEM_UNPCKHPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 564 */ { MNEM_UNPCKLPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 565 */ { MNEM_UNPCKLPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 566 */ { MNEM_VADDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 567 */ { MNEM_VADDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 568 */ { MNEM_VADDSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 569 */ { MNEM_VADDSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56A */ { MNEM_VADDSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56B */ { MNEM_VADDSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56C */ { MNEM_VAESDEC, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56D */ { MNEM_VAESDECLAST, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56E */ { MNEM_VAESENC, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 56F */ { MNEM_VAESENCLAST, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 570 */ { MNEM_VAESIMC, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 571 */ { MNEM_VAESKEYGENASSIST, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 572 */ { MNEM_VANDNPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 573 */ { MNEM_VANDNPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 574 */ { MNEM_VANDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 575 */ { MNEM_VANDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 576 */ { MNEM_VBLENDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 577 */ { MNEM_VBLENDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 578 */ { MNEM_VBLENDVPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Lx }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 579 */ { MNEM_VBLENDVPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Lx }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 57A */ { MNEM_VBROADCASTSD, { OPI_Vqq, OPI_Mq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 57B */ { MNEM_VBROADCASTSS, { OPI_V, OPI_Md, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 57C */ { MNEM_VCMPPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 57D */ { MNEM_VCMPPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 57E */ { MNEM_VCMPSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 57F */ { MNEM_VCMPSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 580 */ { MNEM_VCOMISD, { OPI_Vsd, OPI_Wsd, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 581 */ { MNEM_VCOMISS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 582 */ { MNEM_VCVTDQ2PD, { OPI_Vx, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 583 */ { MNEM_VCVTDQ2PS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 584 */ { MNEM_VCVTPD2DQ, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 585 */ { MNEM_VCVTPD2PS, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 586 */ { MNEM_VCVTPS2DQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 587 */ { MNEM_VCVTPS2PD, { OPI_Vx, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 588 */ { MNEM_VCVTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 589 */ { MNEM_VCVTSD2SS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58A */ { MNEM_VCVTSI2SD, { OPI_Vx, OPI_Hx, OPI_Ey, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58B */ { MNEM_VCVTSI2SS, { OPI_Vx, OPI_Hx, OPI_Ey, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58C */ { MNEM_VCVTSS2SD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58D */ { MNEM_VCVTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 58E */ { MNEM_VCVTTPD2DQ, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 58F */ { MNEM_VCVTTPS2DQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 590 */ { MNEM_VCVTTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 591 */ { MNEM_VCVTTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 592 */ { MNEM_VDIVPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 593 */ { MNEM_VDIVPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 594 */ { MNEM_VDIVSD, { OPI_Vx, OPI_Hx, OPI_MqU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 595 */ { MNEM_VDIVSS, { OPI_Vx, OPI_Hx, OPI_MdU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 596 */ { MNEM_VDPPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 597 */ { MNEM_VDPPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 598 */ { MNEM_VERR, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 599 */ { MNEM_VERW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 59A */ { MNEM_VEXTRACTF128, { OPI_Wdq, OPI_Vqq, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 59B */ { MNEM_VEXTRACTPS, { OPI_MdRy, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 59C */ { MNEM_VHADDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 59D */ { MNEM_VHADDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 59E */ { MNEM_VHSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 59F */ { MNEM_VHSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5A0 */ { MNEM_VINSERTF128, { OPI_Vqq, OPI_Hqq, OPI_Wdq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A1 */ { MNEM_VINSERTPS, { OPI_Vx, OPI_Hx, OPI_Md, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5A2 */ { MNEM_VLDDQU, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A3 */ { MNEM_VMASKMOVDQU, { OPI_Vx, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5A4 */ { MNEM_VMASKMOVPD, { OPI_M, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A5 */ { MNEM_VMASKMOVPD, { OPI_V, OPI_H, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A6 */ { MNEM_VMASKMOVPS, { OPI_V, OPI_H, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A7 */ { MNEM_VMASKMOVPS, { OPI_M, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5A8 */ { MNEM_VMAXPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5A9 */ { MNEM_VMAXPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5AA */ { MNEM_VMAXSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5AB */ { MNEM_VMAXSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5AC */ { MNEM_VMCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5AD */ { MNEM_VMCLEAR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5AE */ { MNEM_VMINPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5AF */ { MNEM_VMINPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5B0 */ { MNEM_VMINSD, { OPI_Vx, OPI_Hx, OPI_MqU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5B1 */ { MNEM_VMINSS, { OPI_Vx, OPI_Hx, OPI_MdU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5B2 */ { MNEM_VMLAUNCH, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5B3 */ { MNEM_VMLOAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5B4 */ { MNEM_VMMCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5B5 */ { MNEM_VMOVAPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5B6 */ { MNEM_VMOVAPD, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5B7 */ { MNEM_VMOVAPS, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5B8 */ { MNEM_VMOVAPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5B9 */ { MNEM_VMOVD, { OPI_Ey, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BA */ { MNEM_VMOVD, { OPI_Vx, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BB */ { MNEM_VMOVD, { OPI_Vx, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BC */ { MNEM_VMOVD, { OPI_Ey, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BD */ { MNEM_VMOVDDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BE */ { MNEM_VMOVDDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5BF */ { MNEM_VMOVDQA, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5C0 */ { MNEM_VMOVDQA, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5C1 */ { MNEM_VMOVDQU, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5C2 */ { MNEM_VMOVDQU, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5C3 */ { MNEM_VMOVHLPS, { OPI_Vx, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C4 */ { MNEM_VMOVHPD, { OPI_Vx, OPI_Hx, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C5 */ { MNEM_VMOVHPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C6 */ { MNEM_VMOVHPS, { OPI_Vx, OPI_Hx, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C7 */ { MNEM_VMOVHPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C8 */ { MNEM_VMOVLHPS, { OPI_Vx, OPI_Hx, OPI_Ux, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5C9 */ { MNEM_VMOVLPD, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CA */ { MNEM_VMOVLPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CB */ { MNEM_VMOVLPS, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CC */ { MNEM_VMOVLPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CD */ { MNEM_VMOVMSKPD, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5CE */ { MNEM_VMOVMSKPS, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5CF */ { MNEM_VMOVNTDQ, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5D0 */ { MNEM_VMOVNTDQA, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5D1 */ { MNEM_VMOVNTPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5D2 */ { MNEM_VMOVNTPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5D3 */ { MNEM_VMOVQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D4 */ { MNEM_VMOVQ, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D5 */ { MNEM_VMOVQ, { OPI_Vx, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D6 */ { MNEM_VMOVQ, { OPI_Eq, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D7 */ { MNEM_VMOVSD, { OPI_U, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D8 */ { MNEM_VMOVSD, { OPI_Mq, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5D9 */ { MNEM_VMOVSD, { OPI_V, OPI_H, OPI_U, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5DA */ { MNEM_VMOVSD, { OPI_V, OPI_Mq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5DB */ { MNEM_VMOVSHDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5DC */ { MNEM_VMOVSHDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5DD */ { MNEM_VMOVSLDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5DE */ { MNEM_VMOVSLDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5DF */ { MNEM_VMOVSS, { OPI_V, OPI_H, OPI_U, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5E0 */ { MNEM_VMOVSS, { OPI_Md, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5E1 */ { MNEM_VMOVSS, { OPI_U, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5E2 */ { MNEM_VMOVSS, { OPI_V, OPI_Md, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 5E3 */ { MNEM_VMOVUPD, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5E4 */ { MNEM_VMOVUPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5E5 */ { MNEM_VMOVUPS, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5E6 */ { MNEM_VMOVUPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5E7 */ { MNEM_VMPSADBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5E8 */ { MNEM_VMPTRLD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5E9 */ { MNEM_VMPTRST, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5EA */ { MNEM_VMREAD, { OPI_Ey, OPI_Gy, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 5EB */ { MNEM_VMRESUME, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5EC */ { MNEM_VMRUN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5ED */ { MNEM_VMSAVE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5EE */ { MNEM_VMULPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5EF */ { MNEM_VMULPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5F0 */ { MNEM_VMULSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5F1 */ { MNEM_VMULSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 5F2 */ { MNEM_VMWRITE, { OPI_Gy, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, - /* 5F3 */ { MNEM_VMXOFF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 5F4 */ { MNEM_VMXON, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 5F5 */ { MNEM_VORPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5F6 */ { MNEM_VORPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, - /* 5F7 */ { MNEM_VPABSB, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5F8 */ { MNEM_VPABSD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5F9 */ { MNEM_VPABSW, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 5FA */ { MNEM_VPACKSSDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FB */ { MNEM_VPACKSSWB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FC */ { MNEM_VPACKUSDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FD */ { MNEM_VPACKUSWB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FE */ { MNEM_VPADDB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 5FF */ { MNEM_VPADDD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 600 */ { MNEM_VPADDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 601 */ { MNEM_VPADDSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 602 */ { MNEM_VPADDSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 603 */ { MNEM_VPADDUSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 604 */ { MNEM_VPADDUSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 605 */ { MNEM_VPADDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 606 */ { MNEM_VPALIGNR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 607 */ { MNEM_VPAND, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 608 */ { MNEM_VPANDN, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 609 */ { MNEM_VPAVGB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60A */ { MNEM_VPAVGW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60B */ { MNEM_VPBLENDVB, { OPI_V, OPI_H, OPI_W, OPI_L }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 60C */ { MNEM_VPBLENDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60D */ { MNEM_VPCLMULQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60E */ { MNEM_VPCMPEQB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 60F */ { MNEM_VPCMPEQD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 610 */ { MNEM_VPCMPEQQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 611 */ { MNEM_VPCMPEQW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 612 */ { MNEM_VPCMPESTRI, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 613 */ { MNEM_VPCMPESTRM, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 614 */ { MNEM_VPCMPGTB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 615 */ { MNEM_VPCMPGTD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 616 */ { MNEM_VPCMPGTQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 617 */ { MNEM_VPCMPGTW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 618 */ { MNEM_VPCMPISTRI, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 619 */ { MNEM_VPCMPISTRM, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 61A */ { MNEM_VPERM2F128, { OPI_Vqq, OPI_Hqq, OPI_Wqq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61B */ { MNEM_VPERMILPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61C */ { MNEM_VPERMILPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61D */ { MNEM_VPERMILPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61E */ { MNEM_VPERMILPS, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 61F */ { MNEM_VPEXTRB, { OPI_MbRv, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 620 */ { MNEM_VPEXTRD, { OPI_Ed, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 621 */ { MNEM_VPEXTRD, { OPI_Ed, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 622 */ { MNEM_VPEXTRQ, { OPI_Eq, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 623 */ { MNEM_VPEXTRW, { OPI_Gd, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 624 */ { MNEM_VPEXTRW, { OPI_MwRd, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 625 */ { MNEM_VPHADDD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 626 */ { MNEM_VPHADDSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 627 */ { MNEM_VPHADDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 628 */ { MNEM_VPHMINPOSUW, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 629 */ { MNEM_VPHSUBD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 62A */ { MNEM_VPHSUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 62B */ { MNEM_VPHSUBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 62C */ { MNEM_VPINSRB, { OPI_V, OPI_H, OPI_MbRd, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 62D */ { MNEM_VPINSRD, { OPI_V, OPI_H, OPI_Ed, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 62E */ { MNEM_VPINSRD, { OPI_V, OPI_H, OPI_Ed, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 62F */ { MNEM_VPINSRQ, { OPI_V, OPI_H, OPI_Eq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 630 */ { MNEM_VPINSRW, { OPI_Vx, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, - /* 631 */ { MNEM_VPMADDUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 632 */ { MNEM_VPMADDWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 633 */ { MNEM_VPMAXSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 634 */ { MNEM_VPMAXSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 635 */ { MNEM_VPMAXSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 636 */ { MNEM_VPMAXUB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 637 */ { MNEM_VPMAXUD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 638 */ { MNEM_VPMAXUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 639 */ { MNEM_VPMINSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63A */ { MNEM_VPMINSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63B */ { MNEM_VPMINSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63C */ { MNEM_VPMINUB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63D */ { MNEM_VPMINUD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63E */ { MNEM_VPMINUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 63F */ { MNEM_VPMOVMSKB, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 640 */ { MNEM_VPMOVSXBD, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 641 */ { MNEM_VPMOVSXBQ, { OPI_Vx, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 642 */ { MNEM_VPMOVSXBW, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 643 */ { MNEM_VPMOVSXWD, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 644 */ { MNEM_VPMOVSXWQ, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 645 */ { MNEM_VPMOVZXBD, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 646 */ { MNEM_VPMOVZXBQ, { OPI_Vx, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 647 */ { MNEM_VPMOVZXBW, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 648 */ { MNEM_VPMOVZXDQ, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 649 */ { MNEM_VPMOVZXWD, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 64A */ { MNEM_VPMOVZXWQ, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 64B */ { MNEM_VPMULDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 64C */ { MNEM_VPMULHRSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 64D */ { MNEM_VPMULHUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 64E */ { MNEM_VPMULHW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 64F */ { MNEM_VPMULLD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 650 */ { MNEM_VPMULLW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 651 */ { MNEM_VPOR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 652 */ { MNEM_VPSADBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 653 */ { MNEM_VPSHUFB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 654 */ { MNEM_VPSHUFD, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 655 */ { MNEM_VPSHUFHW, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 656 */ { MNEM_VPSHUFLW, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 657 */ { MNEM_VPSIGNB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 658 */ { MNEM_VPSIGND, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 659 */ { MNEM_VPSIGNW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 65A */ { MNEM_VPSLLD, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 65B */ { MNEM_VPSLLD, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 65C */ { MNEM_VPSLLDQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 65D */ { MNEM_VPSLLQ, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 65E */ { MNEM_VPSLLQ, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 65F */ { MNEM_VPSLLW, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 660 */ { MNEM_VPSLLW, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 661 */ { MNEM_VPSRAD, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 662 */ { MNEM_VPSRAD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 663 */ { MNEM_VPSRAW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 664 */ { MNEM_VPSRAW, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 665 */ { MNEM_VPSRLD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 666 */ { MNEM_VPSRLD, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 667 */ { MNEM_VPSRLDQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 668 */ { MNEM_VPSRLQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 669 */ { MNEM_VPSRLQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66A */ { MNEM_VPSRLW, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66B */ { MNEM_VPSRLW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66C */ { MNEM_VPSUBB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66D */ { MNEM_VPSUBD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66E */ { MNEM_VPSUBQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 66F */ { MNEM_VPSUBSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 670 */ { MNEM_VPSUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 671 */ { MNEM_VPSUBUSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 672 */ { MNEM_VPSUBUSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 673 */ { MNEM_VPSUBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 674 */ { MNEM_VPTEST, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, - /* 675 */ { MNEM_VPUNPCKHBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 676 */ { MNEM_VPUNPCKHDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 677 */ { MNEM_VPUNPCKHQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 678 */ { MNEM_VPUNPCKHWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 679 */ { MNEM_VPUNPCKLBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67A */ { MNEM_VPUNPCKLDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67B */ { MNEM_VPUNPCKLQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67C */ { MNEM_VPUNPCKLWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67D */ { MNEM_VPXOR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 67E */ { MNEM_VRCPPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 67F */ { MNEM_VRCPSS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 680 */ { MNEM_VROUNDPD, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 681 */ { MNEM_VROUNDPS, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 682 */ { MNEM_VROUNDSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 683 */ { MNEM_VROUNDSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 684 */ { MNEM_VRSQRTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 685 */ { MNEM_VRSQRTSS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 686 */ { MNEM_VSHUFPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 687 */ { MNEM_VSHUFPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 688 */ { MNEM_VSQRTPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 689 */ { MNEM_VSQRTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, - /* 68A */ { MNEM_VSQRTSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 68B */ { MNEM_VSQRTSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 68C */ { MNEM_VSTMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, - /* 68D */ { MNEM_VSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 68E */ { MNEM_VSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 68F */ { MNEM_VSUBSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 690 */ { MNEM_VSUBSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 691 */ { MNEM_VTESTPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, - /* 692 */ { MNEM_VTESTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, - /* 693 */ { MNEM_VUCOMISD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 694 */ { MNEM_VUCOMISS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 695 */ { MNEM_VUNPCKHPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 696 */ { MNEM_VUNPCKHPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 697 */ { MNEM_VUNPCKLPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 698 */ { MNEM_VUNPCKLPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 699 */ { MNEM_ZyDisORPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, - /* 69A */ { MNEM_ZyDisORPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 69B */ { MNEM_VZEROALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 69C */ { MNEM_VZEROUPPER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 69D */ { MNEM_WAIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 69E */ { MNEM_WBINVD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 69F */ { MNEM_WRMSR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6A0 */ { MNEM_XADD, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_WRITE }, - /* 6A1 */ { MNEM_XADD, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_WRITE }, - /* 6A2 */ { MNEM_XCHG, { OPI_R4v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A3 */ { MNEM_XCHG, { OPI_R3v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A4 */ { MNEM_XCHG, { OPI_R5v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A5 */ { MNEM_XCHG, { OPI_R7v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A6 */ { MNEM_XCHG, { OPI_R6v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A7 */ { MNEM_XCHG, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A8 */ { MNEM_XCHG, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6A9 */ { MNEM_XCHG, { OPI_R0v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6AA */ { MNEM_XCHG, { OPI_R2v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6AB */ { MNEM_XCHG, { OPI_R1v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, - /* 6AC */ { MNEM_XCRYPTCBC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6AD */ { MNEM_XCRYPTCFB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6AE */ { MNEM_XCRYPTCTR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6AF */ { MNEM_XCRYPTECB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6B0 */ { MNEM_XCRYPTOFB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6B1 */ { MNEM_XGETBV, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6B2 */ { MNEM_XLATB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, - /* 6B3 */ { MNEM_XOR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, - /* 6B4 */ { MNEM_XOR, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B5 */ { MNEM_XOR, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B6 */ { MNEM_XOR, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B7 */ { MNEM_XOR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B8 */ { MNEM_XOR, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6B9 */ { MNEM_XOR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6BA */ { MNEM_XOR, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, - /* 6BB */ { MNEM_XOR, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, - /* 6BC */ { MNEM_XOR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6BD */ { MNEM_XORPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6BE */ { MNEM_XORPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, - /* 6BF */ { MNEM_XRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 6C0 */ { MNEM_XSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, - /* 6C1 */ { MNEM_XSETBV, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6C2 */ { MNEM_XSHA1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6C3 */ { MNEM_XSHA256, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, - /* 6C4 */ { MNEM_XSTORE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, -}; - -#undef OPI_NONE -#undef OPI_AL -#undef OPI_AX -#undef OPI_Av -#undef OPI_C -#undef OPI_CL -#undef OPI_CS -#undef OPI_CX -#undef OPI_D -#undef OPI_DL -#undef OPI_DS -#undef OPI_DX -#undef OPI_E -#undef OPI_ES -#undef OPI_Eb -#undef OPI_Ed -#undef OPI_Eq -#undef OPI_Ev -#undef OPI_Ew -#undef OPI_Ey -#undef OPI_Ez -#undef OPI_FS -#undef OPI_Fv -#undef OPI_G -#undef OPI_GS -#undef OPI_Gb -#undef OPI_Gd -#undef OPI_Gq -#undef OPI_Gv -#undef OPI_Gw -#undef OPI_Gy -#undef OPI_Gz -#undef OPI_H -#undef OPI_Hqq -#undef OPI_Hx -#undef OPI_I1 -#undef OPI_Ib -#undef OPI_Iv -#undef OPI_Iw -#undef OPI_Iz -#undef OPI_Jb -#undef OPI_Jv -#undef OPI_Jz -#undef OPI_L -#undef OPI_Lx -#undef OPI_M -#undef OPI_Mb -#undef OPI_MbRd -#undef OPI_MbRv -#undef OPI_Md -#undef OPI_MdRy -#undef OPI_MdU -#undef OPI_Mdq -#undef OPI_Mo -#undef OPI_Mq -#undef OPI_MqU -#undef OPI_Ms -#undef OPI_Mt -#undef OPI_Mv -#undef OPI_Mw -#undef OPI_MwRd -#undef OPI_MwRv -#undef OPI_MwRy -#undef OPI_MwU -#undef OPI_N -#undef OPI_Ob -#undef OPI_Ov -#undef OPI_Ow -#undef OPI_P -#undef OPI_Q -#undef OPI_R -#undef OPI_R0b -#undef OPI_R0v -#undef OPI_R0w -#undef OPI_R0y -#undef OPI_R0z -#undef OPI_R1b -#undef OPI_R1v -#undef OPI_R1w -#undef OPI_R1y -#undef OPI_R1z -#undef OPI_R2b -#undef OPI_R2v -#undef OPI_R2w -#undef OPI_R2y -#undef OPI_R2z -#undef OPI_R3b -#undef OPI_R3v -#undef OPI_R3w -#undef OPI_R3y -#undef OPI_R3z -#undef OPI_R4b -#undef OPI_R4v -#undef OPI_R4w -#undef OPI_R4y -#undef OPI_R4z -#undef OPI_R5b -#undef OPI_R5v -#undef OPI_R5w -#undef OPI_R5y -#undef OPI_R5z -#undef OPI_R6b -#undef OPI_R6v -#undef OPI_R6w -#undef OPI_R6y -#undef OPI_R6z -#undef OPI_R7b -#undef OPI_R7v -#undef OPI_R7w -#undef OPI_R7y -#undef OPI_R7z -#undef OPI_S -#undef OPI_SS -#undef OPI_ST0 -#undef OPI_ST1 -#undef OPI_ST2 -#undef OPI_ST3 -#undef OPI_ST4 -#undef OPI_ST5 -#undef OPI_ST6 -#undef OPI_ST7 -#undef OPI_U -#undef OPI_Ux -#undef OPI_V -#undef OPI_Vdq -#undef OPI_Vqq -#undef OPI_Vsd -#undef OPI_Vx -#undef OPI_W -#undef OPI_Wdq -#undef OPI_Wqq -#undef OPI_Wsd -#undef OPI_Wx -#undef OPI_eAX -#undef OPI_eCX -#undef OPI_eDX -#undef OPI_rAX -#undef OPI_rCX -#undef OPI_rDX -#undef OPI_sIb -#undef OPI_sIz - -const char* vxInstrMnemonicStrings[] = -{ - /* 000 */ "invalid", - /* 001 */ "aaa", - /* 002 */ "aad", - /* 003 */ "aam", - /* 004 */ "aas", - /* 005 */ "adc", - /* 006 */ "add", - /* 007 */ "addpd", - /* 008 */ "addps", - /* 009 */ "addsd", - /* 00A */ "addss", - /* 00B */ "addsubpd", - /* 00C */ "addsubps", - /* 00D */ "aesdec", - /* 00E */ "aesdeclast", - /* 00F */ "aesenc", - /* 010 */ "aesenclast", - /* 011 */ "aesimc", - /* 012 */ "aeskeygenassist", - /* 013 */ "and", - /* 014 */ "andnpd", - /* 015 */ "andnps", - /* 016 */ "andpd", - /* 017 */ "andps", - /* 018 */ "arpl", - /* 019 */ "blendpd", - /* 01A */ "blendps", - /* 01B */ "blendvpd", - /* 01C */ "blendvps", - /* 01D */ "bound", - /* 01E */ "bsf", - /* 01F */ "bsr", - /* 020 */ "bswap", - /* 021 */ "bt", - /* 022 */ "btc", - /* 023 */ "btr", - /* 024 */ "bts", - /* 025 */ "call", - /* 026 */ "cbw", - /* 027 */ "cdq", - /* 028 */ "cdqe", - /* 029 */ "clc", - /* 02A */ "cld", - /* 02B */ "clflush", - /* 02C */ "clgi", - /* 02D */ "cli", - /* 02E */ "clts", - /* 02F */ "cmc", - /* 030 */ "cmova", - /* 031 */ "cmovae", - /* 032 */ "cmovb", - /* 033 */ "cmovbe", - /* 034 */ "cmove", - /* 035 */ "cmovg", - /* 036 */ "cmovge", - /* 037 */ "cmovl", - /* 038 */ "cmovle", - /* 039 */ "cmovne", - /* 03A */ "cmovno", - /* 03B */ "cmovnp", - /* 03C */ "cmovns", - /* 03D */ "cmovo", - /* 03E */ "cmovp", - /* 03F */ "cmovs", - /* 040 */ "cmp", - /* 041 */ "cmppd", - /* 042 */ "cmpps", - /* 043 */ "cmpsb", - /* 044 */ "cmpsd", - /* 045 */ "cmpsq", - /* 046 */ "cmpss", - /* 047 */ "cmpsw", - /* 048 */ "cmpxchg", - /* 049 */ "cmpxchg16b", - /* 04A */ "cmpxchg8b", - /* 04B */ "comisd", - /* 04C */ "comiss", - /* 04D */ "cpuid", - /* 04E */ "cqo", - /* 04F */ "crc32", - /* 050 */ "cvtdq2pd", - /* 051 */ "cvtdq2ps", - /* 052 */ "cvtpd2dq", - /* 053 */ "cvtpd2pi", - /* 054 */ "cvtpd2ps", - /* 055 */ "cvtpi2pd", - /* 056 */ "cvtpi2ps", - /* 057 */ "cvtps2dq", - /* 058 */ "cvtps2pd", - /* 059 */ "cvtps2pi", - /* 05A */ "cvtsd2si", - /* 05B */ "cvtsd2ss", - /* 05C */ "cvtsi2sd", - /* 05D */ "cvtsi2ss", - /* 05E */ "cvtss2sd", - /* 05F */ "cvtss2si", - /* 060 */ "cvttpd2dq", - /* 061 */ "cvttpd2pi", - /* 062 */ "cvttps2dq", - /* 063 */ "cvttps2pi", - /* 064 */ "cvttsd2si", - /* 065 */ "cvttss2si", - /* 066 */ "cwd", - /* 067 */ "cwde", - /* 068 */ "daa", - /* 069 */ "das", - /* 06A */ "dec", - /* 06B */ "div", - /* 06C */ "divpd", - /* 06D */ "divps", - /* 06E */ "divsd", - /* 06F */ "divss", - /* 070 */ "dppd", - /* 071 */ "dpps", - /* 072 */ "emms", - /* 073 */ "enter", - /* 074 */ "extractps", - /* 075 */ "f2xm1", - /* 076 */ "fabs", - /* 077 */ "fadd", - /* 078 */ "faddp", - /* 079 */ "fbld", - /* 07A */ "fbstp", - /* 07B */ "fchs", - /* 07C */ "fclex", - /* 07D */ "fcmovb", - /* 07E */ "fcmovbe", - /* 07F */ "fcmove", - /* 080 */ "fcmovnb", - /* 081 */ "fcmovnbe", - /* 082 */ "fcmovne", - /* 083 */ "fcmovnu", - /* 084 */ "fcmovu", - /* 085 */ "fcom", - /* 086 */ "fcom2", - /* 087 */ "fcomi", - /* 088 */ "fcomip", - /* 089 */ "fcomp", - /* 08A */ "fcomp3", - /* 08B */ "fcomp5", - /* 08C */ "fcompp", - /* 08D */ "fcos", - /* 08E */ "fdecstp", - /* 08F */ "fdiv", - /* 090 */ "fdivp", - /* 091 */ "fdivr", - /* 092 */ "fdivrp", - /* 093 */ "femms", - /* 094 */ "ffree", - /* 095 */ "ffreep", - /* 096 */ "fiadd", - /* 097 */ "ficom", - /* 098 */ "ficomp", - /* 099 */ "fidiv", - /* 09A */ "fidivr", - /* 09B */ "fild", - /* 09C */ "fimul", - /* 09D */ "fincstp", - /* 09E */ "fist", - /* 09F */ "fistp", - /* 0A0 */ "fisttp", - /* 0A1 */ "fisub", - /* 0A2 */ "fisubr", - /* 0A3 */ "fld", - /* 0A4 */ "fld1", - /* 0A5 */ "fldcw", - /* 0A6 */ "fldenv", - /* 0A7 */ "fldl2e", - /* 0A8 */ "fldl2t", - /* 0A9 */ "fldlg2", - /* 0AA */ "fldln2", - /* 0AB */ "fldpi", - /* 0AC */ "fldz", - /* 0AD */ "fmul", - /* 0AE */ "fmulp", - /* 0AF */ "fndisi", - /* 0B0 */ "fneni", - /* 0B1 */ "fninit", - /* 0B2 */ "fnop", - /* 0B3 */ "fnsave", - /* 0B4 */ "fnsetpm", - /* 0B5 */ "fnstcw", - /* 0B6 */ "fnstenv", - /* 0B7 */ "fnstsw", - /* 0B8 */ "fpatan", - /* 0B9 */ "fprem", - /* 0BA */ "fprem1", - /* 0BB */ "fptan", - /* 0BC */ "frndint", - /* 0BD */ "frstor", - /* 0BE */ "frstpm", - /* 0BF */ "fscale", - /* 0C0 */ "fsin", - /* 0C1 */ "fsincos", - /* 0C2 */ "fsqrt", - /* 0C3 */ "fst", - /* 0C4 */ "fstp", - /* 0C5 */ "fstp1", - /* 0C6 */ "fstp8", - /* 0C7 */ "fstp9", - /* 0C8 */ "fsub", - /* 0C9 */ "fsubp", - /* 0CA */ "fsubr", - /* 0CB */ "fsubrp", - /* 0CC */ "ftst", - /* 0CD */ "fucom", - /* 0CE */ "fucomi", - /* 0CF */ "fucomip", - /* 0D0 */ "fucomp", - /* 0D1 */ "fucompp", - /* 0D2 */ "fxam", - /* 0D3 */ "fxch", - /* 0D4 */ "fxch4", - /* 0D5 */ "fxch7", - /* 0D6 */ "fxrstor", - /* 0D7 */ "fxsave", - /* 0D8 */ "fxtract", - /* 0D9 */ "fyl2x", - /* 0DA */ "fyl2xp1", - /* 0DB */ "getsec", - /* 0DC */ "haddpd", - /* 0DD */ "haddps", - /* 0DE */ "hlt", - /* 0DF */ "hsubpd", - /* 0E0 */ "hsubps", - /* 0E1 */ "idiv", - /* 0E2 */ "imul", - /* 0E3 */ "in", - /* 0E4 */ "inc", - /* 0E5 */ "insb", - /* 0E6 */ "insd", - /* 0E7 */ "insertps", - /* 0E8 */ "insw", - /* 0E9 */ "int", - /* 0EA */ "int1", - /* 0EB */ "int3", - /* 0EC */ "into", - /* 0ED */ "invd", - /* 0EE */ "invept", - /* 0EF */ "invlpg", - /* 0F0 */ "invlpga", - /* 0F1 */ "invvpid", - /* 0F2 */ "iretd", - /* 0F3 */ "iretq", - /* 0F4 */ "iretw", - /* 0F5 */ "ja", - /* 0F6 */ "jb", - /* 0F7 */ "jbe", - /* 0F8 */ "jcxz", - /* 0F9 */ "je", - /* 0FA */ "jecxz", - /* 0FB */ "jg", - /* 0FC */ "jge", - /* 0FD */ "jl", - /* 0FE */ "jle", - /* 0FF */ "jmp", - /* 100 */ "jnb", - /* 101 */ "jne", - /* 102 */ "jno", - /* 103 */ "jnp", - /* 104 */ "jns", - /* 105 */ "jo", - /* 106 */ "jp", - /* 107 */ "jrcxz", - /* 108 */ "js", - /* 109 */ "lahf", - /* 10A */ "lar", - /* 10B */ "lddqu", - /* 10C */ "ldmxcsr", - /* 10D */ "lds", - /* 10E */ "lea", - /* 10F */ "leave", - /* 110 */ "les", - /* 111 */ "lfence", - /* 112 */ "lfs", - /* 113 */ "lgdt", - /* 114 */ "lgs", - /* 115 */ "lidt", - /* 116 */ "lldt", - /* 117 */ "lmsw", - /* 118 */ "lock", - /* 119 */ "lodsb", - /* 11A */ "lodsd", - /* 11B */ "lodsq", - /* 11C */ "lodsw", - /* 11D */ "loop", - /* 11E */ "loope", - /* 11F */ "loopne", - /* 120 */ "lsl", - /* 121 */ "lss", - /* 122 */ "ltr", - /* 123 */ "maskmovdqu", - /* 124 */ "maskmovq", - /* 125 */ "maxpd", - /* 126 */ "maxps", - /* 127 */ "maxsd", - /* 128 */ "maxss", - /* 129 */ "mfence", - /* 12A */ "minpd", - /* 12B */ "minps", - /* 12C */ "minsd", - /* 12D */ "minss", - /* 12E */ "monitor", - /* 12F */ "montmul", - /* 130 */ "mov", - /* 131 */ "movapd", - /* 132 */ "movaps", - /* 133 */ "movbe", - /* 134 */ "movd", - /* 135 */ "movddup", - /* 136 */ "movdq2q", - /* 137 */ "movdqa", - /* 138 */ "movdqu", - /* 139 */ "movhlps", - /* 13A */ "movhpd", - /* 13B */ "movhps", - /* 13C */ "movlhps", - /* 13D */ "movlpd", - /* 13E */ "movlps", - /* 13F */ "movmskpd", - /* 140 */ "movmskps", - /* 141 */ "movntdq", - /* 142 */ "movntdqa", - /* 143 */ "movnti", - /* 144 */ "movntpd", - /* 145 */ "movntps", - /* 146 */ "movntq", - /* 147 */ "movq", - /* 148 */ "movq2dq", - /* 149 */ "movsb", - /* 14A */ "movsd", - /* 14B */ "movshdup", - /* 14C */ "movsldup", - /* 14D */ "movsq", - /* 14E */ "movss", - /* 14F */ "movsw", - /* 150 */ "movsx", - /* 151 */ "movsxd", - /* 152 */ "movupd", - /* 153 */ "movups", - /* 154 */ "movzx", - /* 155 */ "mpsadbw", - /* 156 */ "mul", - /* 157 */ "mulpd", - /* 158 */ "mulps", - /* 159 */ "mulsd", - /* 15A */ "mulss", - /* 15B */ "mwait", - /* 15C */ "neg", - /* 15D */ "nop", - /* 15E */ "not", - /* 15F */ "or", - /* 160 */ "orpd", - /* 161 */ "orps", - /* 162 */ "out", - /* 163 */ "outsb", - /* 164 */ "outsd", - /* 165 */ "outsw", - /* 166 */ "pabsb", - /* 167 */ "pabsd", - /* 168 */ "pabsw", - /* 169 */ "packssdw", - /* 16A */ "packsswb", - /* 16B */ "packusdw", - /* 16C */ "packuswb", - /* 16D */ "paddb", - /* 16E */ "paddd", - /* 16F */ "paddq", - /* 170 */ "paddsb", - /* 171 */ "paddsw", - /* 172 */ "paddusb", - /* 173 */ "paddusw", - /* 174 */ "paddw", - /* 175 */ "palignr", - /* 176 */ "pand", - /* 177 */ "pandn", - /* 178 */ "pause", - /* 179 */ "pavgb", - /* 17A */ "pavgusb", - /* 17B */ "pavgw", - /* 17C */ "pblendvb", - /* 17D */ "pblendw", - /* 17E */ "pclmulqdq", - /* 17F */ "pcmpeqb", - /* 180 */ "pcmpeqd", - /* 181 */ "pcmpeqq", - /* 182 */ "pcmpeqw", - /* 183 */ "pcmpestri", - /* 184 */ "pcmpestrm", - /* 185 */ "pcmpgtb", - /* 186 */ "pcmpgtd", - /* 187 */ "pcmpgtq", - /* 188 */ "pcmpgtw", - /* 189 */ "pcmpistri", - /* 18A */ "pcmpistrm", - /* 18B */ "pextrb", - /* 18C */ "pextrd", - /* 18D */ "pextrq", - /* 18E */ "pextrw", - /* 18F */ "pf2id", - /* 190 */ "pf2iw", - /* 191 */ "pfacc", - /* 192 */ "pfadd", - /* 193 */ "pfcmpeq", - /* 194 */ "pfcmpge", - /* 195 */ "pfcmpgt", - /* 196 */ "pfmax", - /* 197 */ "pfmin", - /* 198 */ "pfmul", - /* 199 */ "pfnacc", - /* 19A */ "pfpnacc", - /* 19B */ "pfrcp", - /* 19C */ "pfrcpit1", - /* 19D */ "pfrcpit2", - /* 19E */ "pfrsqit1", - /* 19F */ "pfrsqrt", - /* 1A0 */ "pfsub", - /* 1A1 */ "pfsubr", - /* 1A2 */ "phaddd", - /* 1A3 */ "phaddsw", - /* 1A4 */ "phaddw", - /* 1A5 */ "phminposuw", - /* 1A6 */ "phsubd", - /* 1A7 */ "phsubsw", - /* 1A8 */ "phsubw", - /* 1A9 */ "pi2fd", - /* 1AA */ "pi2fw", - /* 1AB */ "pinsrb", - /* 1AC */ "pinsrd", - /* 1AD */ "pinsrq", - /* 1AE */ "pinsrw", - /* 1AF */ "pmaddubsw", - /* 1B0 */ "pmaddwd", - /* 1B1 */ "pmaxsb", - /* 1B2 */ "pmaxsd", - /* 1B3 */ "pmaxsw", - /* 1B4 */ "pmaxub", - /* 1B5 */ "pmaxud", - /* 1B6 */ "pmaxuw", - /* 1B7 */ "pminsb", - /* 1B8 */ "pminsd", - /* 1B9 */ "pminsw", - /* 1BA */ "pminub", - /* 1BB */ "pminud", - /* 1BC */ "pminuw", - /* 1BD */ "pmovmskb", - /* 1BE */ "pmovsxbd", - /* 1BF */ "pmovsxbq", - /* 1C0 */ "pmovsxbw", - /* 1C1 */ "pmovsxdq", - /* 1C2 */ "pmovsxwd", - /* 1C3 */ "pmovsxwq", - /* 1C4 */ "pmovzxbd", - /* 1C5 */ "pmovzxbq", - /* 1C6 */ "pmovzxbw", - /* 1C7 */ "pmovzxdq", - /* 1C8 */ "pmovzxwd", - /* 1C9 */ "pmovzxwq", - /* 1CA */ "pmuldq", - /* 1CB */ "pmulhrsw", - /* 1CC */ "pmulhrw", - /* 1CD */ "pmulhuw", - /* 1CE */ "pmulhw", - /* 1CF */ "pmulld", - /* 1D0 */ "pmullw", - /* 1D1 */ "pmuludq", - /* 1D2 */ "pop", - /* 1D3 */ "popa", - /* 1D4 */ "popad", - /* 1D5 */ "popcnt", - /* 1D6 */ "popfd", - /* 1D7 */ "popfq", - /* 1D8 */ "popfw", - /* 1D9 */ "por", - /* 1DA */ "prefetch", - /* 1DB */ "prefetchnta", - /* 1DC */ "prefetcht0", - /* 1DD */ "prefetcht1", - /* 1DE */ "prefetcht2", - /* 1DF */ "psadbw", - /* 1E0 */ "pshufb", - /* 1E1 */ "pshufd", - /* 1E2 */ "pshufhw", - /* 1E3 */ "pshuflw", - /* 1E4 */ "pshufw", - /* 1E5 */ "psignb", - /* 1E6 */ "psignd", - /* 1E7 */ "psignw", - /* 1E8 */ "pslld", - /* 1E9 */ "pslldq", - /* 1EA */ "psllq", - /* 1EB */ "psllw", - /* 1EC */ "psrad", - /* 1ED */ "psraw", - /* 1EE */ "psrld", - /* 1EF */ "psrldq", - /* 1F0 */ "psrlq", - /* 1F1 */ "psrlw", - /* 1F2 */ "psubb", - /* 1F3 */ "psubd", - /* 1F4 */ "psubq", - /* 1F5 */ "psubsb", - /* 1F6 */ "psubsw", - /* 1F7 */ "psubusb", - /* 1F8 */ "psubusw", - /* 1F9 */ "psubw", - /* 1FA */ "pswapd", - /* 1FB */ "ptest", - /* 1FC */ "punpckhbw", - /* 1FD */ "punpckhdq", - /* 1FE */ "punpckhqdq", - /* 1FF */ "punpckhwd", - /* 200 */ "punpcklbw", - /* 201 */ "punpckldq", - /* 202 */ "punpcklqdq", - /* 203 */ "punpcklwd", - /* 204 */ "push", - /* 205 */ "pusha", - /* 206 */ "pushad", - /* 207 */ "pushfd", - /* 208 */ "pushfq", - /* 209 */ "pushfw", - /* 20A */ "pxor", - /* 20B */ "rcl", - /* 20C */ "rcpps", - /* 20D */ "rcpss", - /* 20E */ "rcr", - /* 20F */ "rdmsr", - /* 210 */ "rdpmc", - /* 211 */ "rdrand", - /* 212 */ "rdtsc", - /* 213 */ "rdtscp", - /* 214 */ "rep", - /* 215 */ "repne", - /* 216 */ "ret", - /* 217 */ "retf", - /* 218 */ "rol", - /* 219 */ "ror", - /* 21A */ "roundpd", - /* 21B */ "roundps", - /* 21C */ "roundsd", - /* 21D */ "roundss", - /* 21E */ "rsm", - /* 21F */ "rsqrtps", - /* 220 */ "rsqrtss", - /* 221 */ "sahf", - /* 222 */ "salc", - /* 223 */ "sar", - /* 224 */ "sbb", - /* 225 */ "scasb", - /* 226 */ "scasd", - /* 227 */ "scasq", - /* 228 */ "scasw", - /* 229 */ "seta", - /* 22A */ "setae", - /* 22B */ "setb", - /* 22C */ "setbe", - /* 22D */ "sete", - /* 22E */ "setg", - /* 22F */ "setge", - /* 230 */ "setl", - /* 231 */ "setle", - /* 232 */ "setne", - /* 233 */ "setno", - /* 234 */ "setnp", - /* 235 */ "setns", - /* 236 */ "seto", - /* 237 */ "setp", - /* 238 */ "sets", - /* 239 */ "sfence", - /* 23A */ "sgdt", - /* 23B */ "shl", - /* 23C */ "shld", - /* 23D */ "shr", - /* 23E */ "shrd", - /* 23F */ "shufpd", - /* 240 */ "shufps", - /* 241 */ "sidt", - /* 242 */ "skinit", - /* 243 */ "sldt", - /* 244 */ "smsw", - /* 245 */ "sqrtpd", - /* 246 */ "sqrtps", - /* 247 */ "sqrtsd", - /* 248 */ "sqrtss", - /* 249 */ "stc", - /* 24A */ "std", - /* 24B */ "stgi", - /* 24C */ "sti", - /* 24D */ "stmxcsr", - /* 24E */ "stosb", - /* 24F */ "stosd", - /* 250 */ "stosq", - /* 251 */ "stosw", - /* 252 */ "str", - /* 253 */ "sub", - /* 254 */ "subpd", - /* 255 */ "subps", - /* 256 */ "subsd", - /* 257 */ "subss", - /* 258 */ "swapgs", - /* 259 */ "syscall", - /* 25A */ "sysenter", - /* 25B */ "sysexit", - /* 25C */ "sysret", - /* 25D */ "test", - /* 25E */ "ucomisd", - /* 25F */ "ucomiss", - /* 260 */ "ud2", - /* 261 */ "unpckhpd", - /* 262 */ "unpckhps", - /* 263 */ "unpcklpd", - /* 264 */ "unpcklps", - /* 265 */ "vaddpd", - /* 266 */ "vaddps", - /* 267 */ "vaddsd", - /* 268 */ "vaddss", - /* 269 */ "vaddsubpd", - /* 26A */ "vaddsubps", - /* 26B */ "vaesdec", - /* 26C */ "vaesdeclast", - /* 26D */ "vaesenc", - /* 26E */ "vaesenclast", - /* 26F */ "vaesimc", - /* 270 */ "vaeskeygenassist", - /* 271 */ "vandnpd", - /* 272 */ "vandnps", - /* 273 */ "vandpd", - /* 274 */ "vandps", - /* 275 */ "vblendpd", - /* 276 */ "vblendps", - /* 277 */ "vblendvpd", - /* 278 */ "vblendvps", - /* 279 */ "vbroadcastsd", - /* 27A */ "vbroadcastss", - /* 27B */ "vcmppd", - /* 27C */ "vcmpps", - /* 27D */ "vcmpsd", - /* 27E */ "vcmpss", - /* 27F */ "vcomisd", - /* 280 */ "vcomiss", - /* 281 */ "vcvtdq2pd", - /* 282 */ "vcvtdq2ps", - /* 283 */ "vcvtpd2dq", - /* 284 */ "vcvtpd2ps", - /* 285 */ "vcvtps2dq", - /* 286 */ "vcvtps2pd", - /* 287 */ "vcvtsd2si", - /* 288 */ "vcvtsd2ss", - /* 289 */ "vcvtsi2sd", - /* 28A */ "vcvtsi2ss", - /* 28B */ "vcvtss2sd", - /* 28C */ "vcvtss2si", - /* 28D */ "vcvttpd2dq", - /* 28E */ "vcvttps2dq", - /* 28F */ "vcvttsd2si", - /* 290 */ "vcvttss2si", - /* 291 */ "vdivpd", - /* 292 */ "vdivps", - /* 293 */ "vdivsd", - /* 294 */ "vdivss", - /* 295 */ "vdppd", - /* 296 */ "vdpps", - /* 297 */ "verr", - /* 298 */ "verw", - /* 299 */ "vextractf128", - /* 29A */ "vextractps", - /* 29B */ "vhaddpd", - /* 29C */ "vhaddps", - /* 29D */ "vhsubpd", - /* 29E */ "vhsubps", - /* 29F */ "vinsertf128", - /* 2A0 */ "vinsertps", - /* 2A1 */ "vlddqu", - /* 2A2 */ "vmaskmovdqu", - /* 2A3 */ "vmaskmovpd", - /* 2A4 */ "vmaskmovps", - /* 2A5 */ "vmaxpd", - /* 2A6 */ "vmaxps", - /* 2A7 */ "vmaxsd", - /* 2A8 */ "vmaxss", - /* 2A9 */ "vmcall", - /* 2AA */ "vmclear", - /* 2AB */ "vminpd", - /* 2AC */ "vminps", - /* 2AD */ "vminsd", - /* 2AE */ "vminss", - /* 2AF */ "vmlaunch", - /* 2B0 */ "vmload", - /* 2B1 */ "vmmcall", - /* 2B2 */ "vmovapd", - /* 2B3 */ "vmovaps", - /* 2B4 */ "vmovd", - /* 2B5 */ "vmovddup", - /* 2B6 */ "vmovdqa", - /* 2B7 */ "vmovdqu", - /* 2B8 */ "vmovhlps", - /* 2B9 */ "vmovhpd", - /* 2BA */ "vmovhps", - /* 2BB */ "vmovlhps", - /* 2BC */ "vmovlpd", - /* 2BD */ "vmovlps", - /* 2BE */ "vmovmskpd", - /* 2BF */ "vmovmskps", - /* 2C0 */ "vmovntdq", - /* 2C1 */ "vmovntdqa", - /* 2C2 */ "vmovntpd", - /* 2C3 */ "vmovntps", - /* 2C4 */ "vmovq", - /* 2C5 */ "vmovsd", - /* 2C6 */ "vmovshdup", - /* 2C7 */ "vmovsldup", - /* 2C8 */ "vmovss", - /* 2C9 */ "vmovupd", - /* 2CA */ "vmovups", - /* 2CB */ "vmpsadbw", - /* 2CC */ "vmptrld", - /* 2CD */ "vmptrst", - /* 2CE */ "vmread", - /* 2CF */ "vmresume", - /* 2D0 */ "vmrun", - /* 2D1 */ "vmsave", - /* 2D2 */ "vmulpd", - /* 2D3 */ "vmulps", - /* 2D4 */ "vmulsd", - /* 2D5 */ "vmulss", - /* 2D6 */ "vmwrite", - /* 2D7 */ "vmxoff", - /* 2D8 */ "vmxon", - /* 2D9 */ "vorpd", - /* 2DA */ "vorps", - /* 2DB */ "vpabsb", - /* 2DC */ "vpabsd", - /* 2DD */ "vpabsw", - /* 2DE */ "vpackssdw", - /* 2DF */ "vpacksswb", - /* 2E0 */ "vpackusdw", - /* 2E1 */ "vpackuswb", - /* 2E2 */ "vpaddb", - /* 2E3 */ "vpaddd", - /* 2E4 */ "vpaddq", - /* 2E5 */ "vpaddsb", - /* 2E6 */ "vpaddsw", - /* 2E7 */ "vpaddusb", - /* 2E8 */ "vpaddusw", - /* 2E9 */ "vpaddw", - /* 2EA */ "vpalignr", - /* 2EB */ "vpand", - /* 2EC */ "vpandn", - /* 2ED */ "vpavgb", - /* 2EE */ "vpavgw", - /* 2EF */ "vpblendvb", - /* 2F0 */ "vpblendw", - /* 2F1 */ "vpclmulqdq", - /* 2F2 */ "vpcmpeqb", - /* 2F3 */ "vpcmpeqd", - /* 2F4 */ "vpcmpeqq", - /* 2F5 */ "vpcmpeqw", - /* 2F6 */ "vpcmpestri", - /* 2F7 */ "vpcmpestrm", - /* 2F8 */ "vpcmpgtb", - /* 2F9 */ "vpcmpgtd", - /* 2FA */ "vpcmpgtq", - /* 2FB */ "vpcmpgtw", - /* 2FC */ "vpcmpistri", - /* 2FD */ "vpcmpistrm", - /* 2FE */ "vperm2f128", - /* 2FF */ "vpermilpd", - /* 300 */ "vpermilps", - /* 301 */ "vpextrb", - /* 302 */ "vpextrd", - /* 303 */ "vpextrq", - /* 304 */ "vpextrw", - /* 305 */ "vphaddd", - /* 306 */ "vphaddsw", - /* 307 */ "vphaddw", - /* 308 */ "vphminposuw", - /* 309 */ "vphsubd", - /* 30A */ "vphsubsw", - /* 30B */ "vphsubw", - /* 30C */ "vpinsrb", - /* 30D */ "vpinsrd", - /* 30E */ "vpinsrq", - /* 30F */ "vpinsrw", - /* 310 */ "vpmaddubsw", - /* 311 */ "vpmaddwd", - /* 312 */ "vpmaxsb", - /* 313 */ "vpmaxsd", - /* 314 */ "vpmaxsw", - /* 315 */ "vpmaxub", - /* 316 */ "vpmaxud", - /* 317 */ "vpmaxuw", - /* 318 */ "vpminsb", - /* 319 */ "vpminsd", - /* 31A */ "vpminsw", - /* 31B */ "vpminub", - /* 31C */ "vpminud", - /* 31D */ "vpminuw", - /* 31E */ "vpmovmskb", - /* 31F */ "vpmovsxbd", - /* 320 */ "vpmovsxbq", - /* 321 */ "vpmovsxbw", - /* 322 */ "vpmovsxwd", - /* 323 */ "vpmovsxwq", - /* 324 */ "vpmovzxbd", - /* 325 */ "vpmovzxbq", - /* 326 */ "vpmovzxbw", - /* 327 */ "vpmovzxdq", - /* 328 */ "vpmovzxwd", - /* 329 */ "vpmovzxwq", - /* 32A */ "vpmuldq", - /* 32B */ "vpmulhrsw", - /* 32C */ "vpmulhuw", - /* 32D */ "vpmulhw", - /* 32E */ "vpmulld", - /* 32F */ "vpmullw", - /* 330 */ "vpor", - /* 331 */ "vpsadbw", - /* 332 */ "vpshufb", - /* 333 */ "vpshufd", - /* 334 */ "vpshufhw", - /* 335 */ "vpshuflw", - /* 336 */ "vpsignb", - /* 337 */ "vpsignd", - /* 338 */ "vpsignw", - /* 339 */ "vpslld", - /* 33A */ "vpslldq", - /* 33B */ "vpsllq", - /* 33C */ "vpsllw", - /* 33D */ "vpsrad", - /* 33E */ "vpsraw", - /* 33F */ "vpsrld", - /* 340 */ "vpsrldq", - /* 341 */ "vpsrlq", - /* 342 */ "vpsrlw", - /* 343 */ "vpsubb", - /* 344 */ "vpsubd", - /* 345 */ "vpsubq", - /* 346 */ "vpsubsb", - /* 347 */ "vpsubsw", - /* 348 */ "vpsubusb", - /* 349 */ "vpsubusw", - /* 34A */ "vpsubw", - /* 34B */ "vptest", - /* 34C */ "vpunpckhbw", - /* 34D */ "vpunpckhdq", - /* 34E */ "vpunpckhqdq", - /* 34F */ "vpunpckhwd", - /* 350 */ "vpunpcklbw", - /* 351 */ "vpunpckldq", - /* 352 */ "vpunpcklqdq", - /* 353 */ "vpunpcklwd", - /* 354 */ "vpxor", - /* 355 */ "vrcpps", - /* 356 */ "vrcpss", - /* 357 */ "vroundpd", - /* 358 */ "vroundps", - /* 359 */ "vroundsd", - /* 35A */ "vroundss", - /* 35B */ "vrsqrtps", - /* 35C */ "vrsqrtss", - /* 35D */ "vshufpd", - /* 35E */ "vshufps", - /* 35F */ "vsqrtpd", - /* 360 */ "vsqrtps", - /* 361 */ "vsqrtsd", - /* 362 */ "vsqrtss", - /* 363 */ "vstmxcsr", - /* 364 */ "vsubpd", - /* 365 */ "vsubps", - /* 366 */ "vsubsd", - /* 367 */ "vsubss", - /* 368 */ "vtestpd", - /* 369 */ "vtestps", - /* 36A */ "vucomisd", - /* 36B */ "vucomiss", - /* 36C */ "vunpckhpd", - /* 36D */ "vunpckhps", - /* 36E */ "vunpcklpd", - /* 36F */ "vunpcklps", - /* 370 */ "vxorpd", - /* 371 */ "vxorps", - /* 372 */ "vzeroall", - /* 373 */ "vzeroupper", - /* 374 */ "wait", - /* 375 */ "wbinvd", - /* 376 */ "wrmsr", - /* 377 */ "xadd", - /* 378 */ "xchg", - /* 379 */ "xcryptcbc", - /* 37A */ "xcryptcfb", - /* 37B */ "xcryptctr", - /* 37C */ "xcryptecb", - /* 37D */ "xcryptofb", - /* 37E */ "xgetbv", - /* 37F */ "xlatb", - /* 380 */ "xor", - /* 381 */ "xorpd", - /* 382 */ "xorps", - /* 383 */ "xrstor", - /* 384 */ "xsave", - /* 385 */ "xsetbv", - /* 386 */ "xsha1", - /* 387 */ "xsha256", - /* 388 */ "xstore", -}; - -#undef ZYDIS_NODE -#undef ZYDIS_INVALID \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisOpcodeTable.h b/VerteronDisassemblerEngine/ZyDisOpcodeTable.h deleted file mode 100644 index 472ee34..0000000 --- a/VerteronDisassemblerEngine/ZyDisOpcodeTable.h +++ /dev/null @@ -1,1504 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 04. February 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#ifndef _VDE_ZyDisOPCODETABLEC_H_ -#define _VDE_ZyDisOPCODETABLEC_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** - * @brief Values that represent an instruction mnemonic. - */ -typedef enum _ZyDisInstructionMnemonic /* : uint16_t */ -{ - /* 000 */ MNEM_INVALID, - /* 001 */ MNEM_AAA, - /* 002 */ MNEM_AAD, - /* 003 */ MNEM_AAM, - /* 004 */ MNEM_AAS, - /* 005 */ MNEM_ADC, - /* 006 */ MNEM_ADD, - /* 007 */ MNEM_ADDPD, - /* 008 */ MNEM_ADDPS, - /* 009 */ MNEM_ADDSD, - /* 00A */ MNEM_ADDSS, - /* 00B */ MNEM_ADDSUBPD, - /* 00C */ MNEM_ADDSUBPS, - /* 00D */ MNEM_AESDEC, - /* 00E */ MNEM_AESDECLAST, - /* 00F */ MNEM_AESENC, - /* 010 */ MNEM_AESENCLAST, - /* 011 */ MNEM_AESIMC, - /* 012 */ MNEM_AESKEYGENASSIST, - /* 013 */ MNEM_AND, - /* 014 */ MNEM_ANDNPD, - /* 015 */ MNEM_ANDNPS, - /* 016 */ MNEM_ANDPD, - /* 017 */ MNEM_ANDPS, - /* 018 */ MNEM_ARPL, - /* 019 */ MNEM_BLENDPD, - /* 01A */ MNEM_BLENDPS, - /* 01B */ MNEM_BLENDVPD, - /* 01C */ MNEM_BLENDVPS, - /* 01D */ MNEM_BOUND, - /* 01E */ MNEM_BSF, - /* 01F */ MNEM_BSR, - /* 020 */ MNEM_BSWAP, - /* 021 */ MNEM_BT, - /* 022 */ MNEM_BTC, - /* 023 */ MNEM_BTR, - /* 024 */ MNEM_BTS, - /* 025 */ MNEM_CALL, - /* 026 */ MNEM_CBW, - /* 027 */ MNEM_CDQ, - /* 028 */ MNEM_CDQE, - /* 029 */ MNEM_CLC, - /* 02A */ MNEM_CLD, - /* 02B */ MNEM_CLFLUSH, - /* 02C */ MNEM_CLGI, - /* 02D */ MNEM_CLI, - /* 02E */ MNEM_CLTS, - /* 02F */ MNEM_CMC, - /* 030 */ MNEM_CMOVA, - /* 031 */ MNEM_CMOVAE, - /* 032 */ MNEM_CMOVB, - /* 033 */ MNEM_CMOVBE, - /* 034 */ MNEM_CMOVE, - /* 035 */ MNEM_CMOVG, - /* 036 */ MNEM_CMOVGE, - /* 037 */ MNEM_CMOVL, - /* 038 */ MNEM_CMOVLE, - /* 039 */ MNEM_CMOVNE, - /* 03A */ MNEM_CMOVNO, - /* 03B */ MNEM_CMOVNP, - /* 03C */ MNEM_CMOVNS, - /* 03D */ MNEM_CMOVO, - /* 03E */ MNEM_CMOVP, - /* 03F */ MNEM_CMOVS, - /* 040 */ MNEM_CMP, - /* 041 */ MNEM_CMPPD, - /* 042 */ MNEM_CMPPS, - /* 043 */ MNEM_CMPSB, - /* 044 */ MNEM_CMPSD, - /* 045 */ MNEM_CMPSQ, - /* 046 */ MNEM_CMPSS, - /* 047 */ MNEM_CMPSW, - /* 048 */ MNEM_CMPXCHG, - /* 049 */ MNEM_CMPXCHG16B, - /* 04A */ MNEM_CMPXCHG8B, - /* 04B */ MNEM_COMISD, - /* 04C */ MNEM_COMISS, - /* 04D */ MNEM_CPUID, - /* 04E */ MNEM_CQO, - /* 04F */ MNEM_CRC32, - /* 050 */ MNEM_CVTDQ2PD, - /* 051 */ MNEM_CVTDQ2PS, - /* 052 */ MNEM_CVTPD2DQ, - /* 053 */ MNEM_CVTPD2PI, - /* 054 */ MNEM_CVTPD2PS, - /* 055 */ MNEM_CVTPI2PD, - /* 056 */ MNEM_CVTPI2PS, - /* 057 */ MNEM_CVTPS2DQ, - /* 058 */ MNEM_CVTPS2PD, - /* 059 */ MNEM_CVTPS2PI, - /* 05A */ MNEM_CVTSD2SI, - /* 05B */ MNEM_CVTSD2SS, - /* 05C */ MNEM_CVTSI2SD, - /* 05D */ MNEM_CVTSI2SS, - /* 05E */ MNEM_CVTSS2SD, - /* 05F */ MNEM_CVTSS2SI, - /* 060 */ MNEM_CVTTPD2DQ, - /* 061 */ MNEM_CVTTPD2PI, - /* 062 */ MNEM_CVTTPS2DQ, - /* 063 */ MNEM_CVTTPS2PI, - /* 064 */ MNEM_CVTTSD2SI, - /* 065 */ MNEM_CVTTSS2SI, - /* 066 */ MNEM_CWD, - /* 067 */ MNEM_CWDE, - /* 068 */ MNEM_DAA, - /* 069 */ MNEM_DAS, - /* 06A */ MNEM_DEC, - /* 06B */ MNEM_DIV, - /* 06C */ MNEM_DIVPD, - /* 06D */ MNEM_DIVPS, - /* 06E */ MNEM_DIVSD, - /* 06F */ MNEM_DIVSS, - /* 070 */ MNEM_DPPD, - /* 071 */ MNEM_DPPS, - /* 072 */ MNEM_EMMS, - /* 073 */ MNEM_ENTER, - /* 074 */ MNEM_EXTRACTPS, - /* 075 */ MNEM_F2XM1, - /* 076 */ MNEM_FABS, - /* 077 */ MNEM_FADD, - /* 078 */ MNEM_FADDP, - /* 079 */ MNEM_FBLD, - /* 07A */ MNEM_FBSTP, - /* 07B */ MNEM_FCHS, - /* 07C */ MNEM_FCLEX, - /* 07D */ MNEM_FCMOVB, - /* 07E */ MNEM_FCMOVBE, - /* 07F */ MNEM_FCMOVE, - /* 080 */ MNEM_FCMOVNB, - /* 081 */ MNEM_FCMOVNBE, - /* 082 */ MNEM_FCMOVNE, - /* 083 */ MNEM_FCMOVNU, - /* 084 */ MNEM_FCMOVU, - /* 085 */ MNEM_FCOM, - /* 086 */ MNEM_FCOM2, - /* 087 */ MNEM_FCOMI, - /* 088 */ MNEM_FCOMIP, - /* 089 */ MNEM_FCOMP, - /* 08A */ MNEM_FCOMP3, - /* 08B */ MNEM_FCOMP5, - /* 08C */ MNEM_FCOMPP, - /* 08D */ MNEM_FCOS, - /* 08E */ MNEM_FDECSTP, - /* 08F */ MNEM_FDIV, - /* 090 */ MNEM_FDIVP, - /* 091 */ MNEM_FDIVR, - /* 092 */ MNEM_FDIVRP, - /* 093 */ MNEM_FEMMS, - /* 094 */ MNEM_FFREE, - /* 095 */ MNEM_FFREEP, - /* 096 */ MNEM_FIADD, - /* 097 */ MNEM_FICOM, - /* 098 */ MNEM_FICOMP, - /* 099 */ MNEM_FIDIV, - /* 09A */ MNEM_FIDIVR, - /* 09B */ MNEM_FILD, - /* 09C */ MNEM_FIMUL, - /* 09D */ MNEM_FINCSTP, - /* 09E */ MNEM_FIST, - /* 09F */ MNEM_FISTP, - /* 0A0 */ MNEM_FISTTP, - /* 0A1 */ MNEM_FISUB, - /* 0A2 */ MNEM_FISUBR, - /* 0A3 */ MNEM_FLD, - /* 0A4 */ MNEM_FLD1, - /* 0A5 */ MNEM_FLDCW, - /* 0A6 */ MNEM_FLDENV, - /* 0A7 */ MNEM_FLDL2E, - /* 0A8 */ MNEM_FLDL2T, - /* 0A9 */ MNEM_FLDLG2, - /* 0AA */ MNEM_FLDLN2, - /* 0AB */ MNEM_FLDPI, - /* 0AC */ MNEM_FLDZ, - /* 0AD */ MNEM_FMUL, - /* 0AE */ MNEM_FMULP, - /* 0AF */ MNEM_FNDISI, - /* 0B0 */ MNEM_FNENI, - /* 0B1 */ MNEM_FNINIT, - /* 0B2 */ MNEM_FNOP, - /* 0B3 */ MNEM_FNSAVE, - /* 0B4 */ MNEM_FNSETPM, - /* 0B5 */ MNEM_FNSTCW, - /* 0B6 */ MNEM_FNSTENV, - /* 0B7 */ MNEM_FNSTSW, - /* 0B8 */ MNEM_FPATAN, - /* 0B9 */ MNEM_FPREM, - /* 0BA */ MNEM_FPREM1, - /* 0BB */ MNEM_FPTAN, - /* 0BC */ MNEM_FRNDINT, - /* 0BD */ MNEM_FRSTOR, - /* 0BE */ MNEM_FRSTPM, - /* 0BF */ MNEM_FSCALE, - /* 0C0 */ MNEM_FSIN, - /* 0C1 */ MNEM_FSINCOS, - /* 0C2 */ MNEM_FSQRT, - /* 0C3 */ MNEM_FST, - /* 0C4 */ MNEM_FSTP, - /* 0C5 */ MNEM_FSTP1, - /* 0C6 */ MNEM_FSTP8, - /* 0C7 */ MNEM_FSTP9, - /* 0C8 */ MNEM_FSUB, - /* 0C9 */ MNEM_FSUBP, - /* 0CA */ MNEM_FSUBR, - /* 0CB */ MNEM_FSUBRP, - /* 0CC */ MNEM_FTST, - /* 0CD */ MNEM_FUCOM, - /* 0CE */ MNEM_FUCOMI, - /* 0CF */ MNEM_FUCOMIP, - /* 0D0 */ MNEM_FUCOMP, - /* 0D1 */ MNEM_FUCOMPP, - /* 0D2 */ MNEM_FXAM, - /* 0D3 */ MNEM_FXCH, - /* 0D4 */ MNEM_FXCH4, - /* 0D5 */ MNEM_FXCH7, - /* 0D6 */ MNEM_FXRSTOR, - /* 0D7 */ MNEM_FXSAVE, - /* 0D8 */ MNEM_FXTRACT, - /* 0D9 */ MNEM_FYL2X, - /* 0DA */ MNEM_FYL2XP1, - /* 0DB */ MNEM_GETSEC, - /* 0DC */ MNEM_HADDPD, - /* 0DD */ MNEM_HADDPS, - /* 0DE */ MNEM_HLT, - /* 0DF */ MNEM_HSUBPD, - /* 0E0 */ MNEM_HSUBPS, - /* 0E1 */ MNEM_IDIV, - /* 0E2 */ MNEM_IMUL, - /* 0E3 */ MNEM_IN, - /* 0E4 */ MNEM_INC, - /* 0E5 */ MNEM_INSB, - /* 0E6 */ MNEM_INSD, - /* 0E7 */ MNEM_INSERTPS, - /* 0E8 */ MNEM_INSW, - /* 0E9 */ MNEM_INT, - /* 0EA */ MNEM_INT1, - /* 0EB */ MNEM_INT3, - /* 0EC */ MNEM_INTO, - /* 0ED */ MNEM_INVD, - /* 0EE */ MNEM_INVEPT, - /* 0EF */ MNEM_INVLPG, - /* 0F0 */ MNEM_INVLPGA, - /* 0F1 */ MNEM_INVVPID, - /* 0F2 */ MNEM_IRETD, - /* 0F3 */ MNEM_IRETQ, - /* 0F4 */ MNEM_IRETW, - /* 0F5 */ MNEM_JA, - /* 0F6 */ MNEM_JB, - /* 0F7 */ MNEM_JBE, - /* 0F8 */ MNEM_JCXZ, - /* 0F9 */ MNEM_JE, - /* 0FA */ MNEM_JECXZ, - /* 0FB */ MNEM_JG, - /* 0FC */ MNEM_JGE, - /* 0FD */ MNEM_JL, - /* 0FE */ MNEM_JLE, - /* 0FF */ MNEM_JMP, - /* 100 */ MNEM_JNB, - /* 101 */ MNEM_JNE, - /* 102 */ MNEM_JNO, - /* 103 */ MNEM_JNP, - /* 104 */ MNEM_JNS, - /* 105 */ MNEM_JO, - /* 106 */ MNEM_JP, - /* 107 */ MNEM_JRCXZ, - /* 108 */ MNEM_JS, - /* 109 */ MNEM_LAHF, - /* 10A */ MNEM_LAR, - /* 10B */ MNEM_LDDQU, - /* 10C */ MNEM_LDMXCSR, - /* 10D */ MNEM_LDS, - /* 10E */ MNEM_LEA, - /* 10F */ MNEM_LEAVE, - /* 110 */ MNEM_LES, - /* 111 */ MNEM_LFENCE, - /* 112 */ MNEM_LFS, - /* 113 */ MNEM_LGDT, - /* 114 */ MNEM_LGS, - /* 115 */ MNEM_LIDT, - /* 116 */ MNEM_LLDT, - /* 117 */ MNEM_LMSW, - /* 118 */ MNEM_LOCK, - /* 119 */ MNEM_LODSB, - /* 11A */ MNEM_LODSD, - /* 11B */ MNEM_LODSQ, - /* 11C */ MNEM_LODSW, - /* 11D */ MNEM_LOOP, - /* 11E */ MNEM_LOOPE, - /* 11F */ MNEM_LOOPNE, - /* 120 */ MNEM_LSL, - /* 121 */ MNEM_LSS, - /* 122 */ MNEM_LTR, - /* 123 */ MNEM_MASKMOVDQU, - /* 124 */ MNEM_MASKMOVQ, - /* 125 */ MNEM_MAXPD, - /* 126 */ MNEM_MAXPS, - /* 127 */ MNEM_MAXSD, - /* 128 */ MNEM_MAXSS, - /* 129 */ MNEM_MFENCE, - /* 12A */ MNEM_MINPD, - /* 12B */ MNEM_MINPS, - /* 12C */ MNEM_MINSD, - /* 12D */ MNEM_MINSS, - /* 12E */ MNEM_MONITOR, - /* 12F */ MNEM_MONTMUL, - /* 130 */ MNEM_MOV, - /* 131 */ MNEM_MOVAPD, - /* 132 */ MNEM_MOVAPS, - /* 133 */ MNEM_MOVBE, - /* 134 */ MNEM_MOVD, - /* 135 */ MNEM_MOVDDUP, - /* 136 */ MNEM_MOVDQ2Q, - /* 137 */ MNEM_MOVDQA, - /* 138 */ MNEM_MOVDQU, - /* 139 */ MNEM_MOVHLPS, - /* 13A */ MNEM_MOVHPD, - /* 13B */ MNEM_MOVHPS, - /* 13C */ MNEM_MOVLHPS, - /* 13D */ MNEM_MOVLPD, - /* 13E */ MNEM_MOVLPS, - /* 13F */ MNEM_MOVMSKPD, - /* 140 */ MNEM_MOVMSKPS, - /* 141 */ MNEM_MOVNTDQ, - /* 142 */ MNEM_MOVNTDQA, - /* 143 */ MNEM_MOVNTI, - /* 144 */ MNEM_MOVNTPD, - /* 145 */ MNEM_MOVNTPS, - /* 146 */ MNEM_MOVNTQ, - /* 147 */ MNEM_MOVQ, - /* 148 */ MNEM_MOVQ2DQ, - /* 149 */ MNEM_MOVSB, - /* 14A */ MNEM_MOVSD, - /* 14B */ MNEM_MOVSHDUP, - /* 14C */ MNEM_MOVSLDUP, - /* 14D */ MNEM_MOVSQ, - /* 14E */ MNEM_MOVSS, - /* 14F */ MNEM_MOVSW, - /* 150 */ MNEM_MOVSX, - /* 151 */ MNEM_MOVSXD, - /* 152 */ MNEM_MOVUPD, - /* 153 */ MNEM_MOVUPS, - /* 154 */ MNEM_MOVZX, - /* 155 */ MNEM_MPSADBW, - /* 156 */ MNEM_MUL, - /* 157 */ MNEM_MULPD, - /* 158 */ MNEM_MULPS, - /* 159 */ MNEM_MULSD, - /* 15A */ MNEM_MULSS, - /* 15B */ MNEM_MWAIT, - /* 15C */ MNEM_NEG, - /* 15D */ MNEM_NOP, - /* 15E */ MNEM_NOT, - /* 15F */ MNEM_OR, - /* 160 */ MNEM_ORPD, - /* 161 */ MNEM_ORPS, - /* 162 */ MNEM_OUT, - /* 163 */ MNEM_OUTSB, - /* 164 */ MNEM_OUTSD, - /* 165 */ MNEM_OUTSW, - /* 166 */ MNEM_PABSB, - /* 167 */ MNEM_PABSD, - /* 168 */ MNEM_PABSW, - /* 169 */ MNEM_PACKSSDW, - /* 16A */ MNEM_PACKSSWB, - /* 16B */ MNEM_PACKUSDW, - /* 16C */ MNEM_PACKUSWB, - /* 16D */ MNEM_PADDB, - /* 16E */ MNEM_PADDD, - /* 16F */ MNEM_PADDQ, - /* 170 */ MNEM_PADDSB, - /* 171 */ MNEM_PADDSW, - /* 172 */ MNEM_PADDUSB, - /* 173 */ MNEM_PADDUSW, - /* 174 */ MNEM_PADDW, - /* 175 */ MNEM_PALIGNR, - /* 176 */ MNEM_PAND, - /* 177 */ MNEM_PANDN, - /* 178 */ MNEM_PAUSE, - /* 179 */ MNEM_PAVGB, - /* 17A */ MNEM_PAVGUSB, - /* 17B */ MNEM_PAVGW, - /* 17C */ MNEM_PBLENDVB, - /* 17D */ MNEM_PBLENDW, - /* 17E */ MNEM_PCLMULQDQ, - /* 17F */ MNEM_PCMPEQB, - /* 180 */ MNEM_PCMPEQD, - /* 181 */ MNEM_PCMPEQQ, - /* 182 */ MNEM_PCMPEQW, - /* 183 */ MNEM_PCMPESTRI, - /* 184 */ MNEM_PCMPESTRM, - /* 185 */ MNEM_PCMPGTB, - /* 186 */ MNEM_PCMPGTD, - /* 187 */ MNEM_PCMPGTQ, - /* 188 */ MNEM_PCMPGTW, - /* 189 */ MNEM_PCMPISTRI, - /* 18A */ MNEM_PCMPISTRM, - /* 18B */ MNEM_PEXTRB, - /* 18C */ MNEM_PEXTRD, - /* 18D */ MNEM_PEXTRQ, - /* 18E */ MNEM_PEXTRW, - /* 18F */ MNEM_PF2ID, - /* 190 */ MNEM_PF2IW, - /* 191 */ MNEM_PFACC, - /* 192 */ MNEM_PFADD, - /* 193 */ MNEM_PFCMPEQ, - /* 194 */ MNEM_PFCMPGE, - /* 195 */ MNEM_PFCMPGT, - /* 196 */ MNEM_PFMAX, - /* 197 */ MNEM_PFMIN, - /* 198 */ MNEM_PFMUL, - /* 199 */ MNEM_PFNACC, - /* 19A */ MNEM_PFPNACC, - /* 19B */ MNEM_PFRCP, - /* 19C */ MNEM_PFRCPIT1, - /* 19D */ MNEM_PFRCPIT2, - /* 19E */ MNEM_PFRSQIT1, - /* 19F */ MNEM_PFRSQRT, - /* 1A0 */ MNEM_PFSUB, - /* 1A1 */ MNEM_PFSUBR, - /* 1A2 */ MNEM_PHADDD, - /* 1A3 */ MNEM_PHADDSW, - /* 1A4 */ MNEM_PHADDW, - /* 1A5 */ MNEM_PHMINPOSUW, - /* 1A6 */ MNEM_PHSUBD, - /* 1A7 */ MNEM_PHSUBSW, - /* 1A8 */ MNEM_PHSUBW, - /* 1A9 */ MNEM_PI2FD, - /* 1AA */ MNEM_PI2FW, - /* 1AB */ MNEM_PINSRB, - /* 1AC */ MNEM_PINSRD, - /* 1AD */ MNEM_PINSRQ, - /* 1AE */ MNEM_PINSRW, - /* 1AF */ MNEM_PMADDUBSW, - /* 1B0 */ MNEM_PMADDWD, - /* 1B1 */ MNEM_PMAXSB, - /* 1B2 */ MNEM_PMAXSD, - /* 1B3 */ MNEM_PMAXSW, - /* 1B4 */ MNEM_PMAXUB, - /* 1B5 */ MNEM_PMAXUD, - /* 1B6 */ MNEM_PMAXUW, - /* 1B7 */ MNEM_PMINSB, - /* 1B8 */ MNEM_PMINSD, - /* 1B9 */ MNEM_PMINSW, - /* 1BA */ MNEM_PMINUB, - /* 1BB */ MNEM_PMINUD, - /* 1BC */ MNEM_PMINUW, - /* 1BD */ MNEM_PMOVMSKB, - /* 1BE */ MNEM_PMOVSXBD, - /* 1BF */ MNEM_PMOVSXBQ, - /* 1C0 */ MNEM_PMOVSXBW, - /* 1C1 */ MNEM_PMOVSXDQ, - /* 1C2 */ MNEM_PMOVSXWD, - /* 1C3 */ MNEM_PMOVSXWQ, - /* 1C4 */ MNEM_PMOVZXBD, - /* 1C5 */ MNEM_PMOVZXBQ, - /* 1C6 */ MNEM_PMOVZXBW, - /* 1C7 */ MNEM_PMOVZXDQ, - /* 1C8 */ MNEM_PMOVZXWD, - /* 1C9 */ MNEM_PMOVZXWQ, - /* 1CA */ MNEM_PMULDQ, - /* 1CB */ MNEM_PMULHRSW, - /* 1CC */ MNEM_PMULHRW, - /* 1CD */ MNEM_PMULHUW, - /* 1CE */ MNEM_PMULHW, - /* 1CF */ MNEM_PMULLD, - /* 1D0 */ MNEM_PMULLW, - /* 1D1 */ MNEM_PMULUDQ, - /* 1D2 */ MNEM_POP, - /* 1D3 */ MNEM_POPA, - /* 1D4 */ MNEM_POPAD, - /* 1D5 */ MNEM_POPCNT, - /* 1D6 */ MNEM_POPFD, - /* 1D7 */ MNEM_POPFQ, - /* 1D8 */ MNEM_POPFW, - /* 1D9 */ MNEM_POR, - /* 1DA */ MNEM_PREFETCH, - /* 1DB */ MNEM_PREFETCHNTA, - /* 1DC */ MNEM_PREFETCHT0, - /* 1DD */ MNEM_PREFETCHT1, - /* 1DE */ MNEM_PREFETCHT2, - /* 1DF */ MNEM_PSADBW, - /* 1E0 */ MNEM_PSHUFB, - /* 1E1 */ MNEM_PSHUFD, - /* 1E2 */ MNEM_PSHUFHW, - /* 1E3 */ MNEM_PSHUFLW, - /* 1E4 */ MNEM_PSHUFW, - /* 1E5 */ MNEM_PSIGNB, - /* 1E6 */ MNEM_PSIGND, - /* 1E7 */ MNEM_PSIGNW, - /* 1E8 */ MNEM_PSLLD, - /* 1E9 */ MNEM_PSLLDQ, - /* 1EA */ MNEM_PSLLQ, - /* 1EB */ MNEM_PSLLW, - /* 1EC */ MNEM_PSRAD, - /* 1ED */ MNEM_PSRAW, - /* 1EE */ MNEM_PSRLD, - /* 1EF */ MNEM_PSRLDQ, - /* 1F0 */ MNEM_PSRLQ, - /* 1F1 */ MNEM_PSRLW, - /* 1F2 */ MNEM_PSUBB, - /* 1F3 */ MNEM_PSUBD, - /* 1F4 */ MNEM_PSUBQ, - /* 1F5 */ MNEM_PSUBSB, - /* 1F6 */ MNEM_PSUBSW, - /* 1F7 */ MNEM_PSUBUSB, - /* 1F8 */ MNEM_PSUBUSW, - /* 1F9 */ MNEM_PSUBW, - /* 1FA */ MNEM_PSWAPD, - /* 1FB */ MNEM_PTEST, - /* 1FC */ MNEM_PUNPCKHBW, - /* 1FD */ MNEM_PUNPCKHDQ, - /* 1FE */ MNEM_PUNPCKHQDQ, - /* 1FF */ MNEM_PUNPCKHWD, - /* 200 */ MNEM_PUNPCKLBW, - /* 201 */ MNEM_PUNPCKLDQ, - /* 202 */ MNEM_PUNPCKLQDQ, - /* 203 */ MNEM_PUNPCKLWD, - /* 204 */ MNEM_PUSH, - /* 205 */ MNEM_PUSHA, - /* 206 */ MNEM_PUSHAD, - /* 207 */ MNEM_PUSHFD, - /* 208 */ MNEM_PUSHFQ, - /* 209 */ MNEM_PUSHFW, - /* 20A */ MNEM_PXOR, - /* 20B */ MNEM_RCL, - /* 20C */ MNEM_RCPPS, - /* 20D */ MNEM_RCPSS, - /* 20E */ MNEM_RCR, - /* 20F */ MNEM_RDMSR, - /* 210 */ MNEM_RDPMC, - /* 211 */ MNEM_RDRAND, - /* 212 */ MNEM_RDTSC, - /* 213 */ MNEM_RDTSCP, - /* 214 */ MNEM_REP, - /* 215 */ MNEM_REPNE, - /* 216 */ MNEM_RET, - /* 217 */ MNEM_RETF, - /* 218 */ MNEM_ROL, - /* 219 */ MNEM_ROR, - /* 21A */ MNEM_ROUNDPD, - /* 21B */ MNEM_ROUNDPS, - /* 21C */ MNEM_ROUNDSD, - /* 21D */ MNEM_ROUNDSS, - /* 21E */ MNEM_RSM, - /* 21F */ MNEM_RSQRTPS, - /* 220 */ MNEM_RSQRTSS, - /* 221 */ MNEM_SAHF, - /* 222 */ MNEM_SALC, - /* 223 */ MNEM_SAR, - /* 224 */ MNEM_SBB, - /* 225 */ MNEM_SCASB, - /* 226 */ MNEM_SCASD, - /* 227 */ MNEM_SCASQ, - /* 228 */ MNEM_SCASW, - /* 229 */ MNEM_SETA, - /* 22A */ MNEM_SETAE, - /* 22B */ MNEM_SETB, - /* 22C */ MNEM_SETBE, - /* 22D */ MNEM_SETE, - /* 22E */ MNEM_SETG, - /* 22F */ MNEM_SETGE, - /* 230 */ MNEM_SETL, - /* 231 */ MNEM_SETLE, - /* 232 */ MNEM_SETNE, - /* 233 */ MNEM_SETNO, - /* 234 */ MNEM_SETNP, - /* 235 */ MNEM_SETNS, - /* 236 */ MNEM_SETO, - /* 237 */ MNEM_SETP, - /* 238 */ MNEM_SETS, - /* 239 */ MNEM_SFENCE, - /* 23A */ MNEM_SGDT, - /* 23B */ MNEM_SHL, - /* 23C */ MNEM_SHLD, - /* 23D */ MNEM_SHR, - /* 23E */ MNEM_SHRD, - /* 23F */ MNEM_SHUFPD, - /* 240 */ MNEM_SHUFPS, - /* 241 */ MNEM_SIDT, - /* 242 */ MNEM_SKINIT, - /* 243 */ MNEM_SLDT, - /* 244 */ MNEM_SMSW, - /* 245 */ MNEM_SQRTPD, - /* 246 */ MNEM_SQRTPS, - /* 247 */ MNEM_SQRTSD, - /* 248 */ MNEM_SQRTSS, - /* 249 */ MNEM_STC, - /* 24A */ MNEM_STD, - /* 24B */ MNEM_STGI, - /* 24C */ MNEM_STI, - /* 24D */ MNEM_STMXCSR, - /* 24E */ MNEM_STOSB, - /* 24F */ MNEM_STOSD, - /* 250 */ MNEM_STOSQ, - /* 251 */ MNEM_STOSW, - /* 252 */ MNEM_STR, - /* 253 */ MNEM_SUB, - /* 254 */ MNEM_SUBPD, - /* 255 */ MNEM_SUBPS, - /* 256 */ MNEM_SUBSD, - /* 257 */ MNEM_SUBSS, - /* 258 */ MNEM_SWAPGS, - /* 259 */ MNEM_SYSCALL, - /* 25A */ MNEM_SYSENTER, - /* 25B */ MNEM_SYSEXIT, - /* 25C */ MNEM_SYSRET, - /* 25D */ MNEM_TEST, - /* 25E */ MNEM_UCOMISD, - /* 25F */ MNEM_UCOMISS, - /* 260 */ MNEM_UD2, - /* 261 */ MNEM_UNPCKHPD, - /* 262 */ MNEM_UNPCKHPS, - /* 263 */ MNEM_UNPCKLPD, - /* 264 */ MNEM_UNPCKLPS, - /* 265 */ MNEM_VADDPD, - /* 266 */ MNEM_VADDPS, - /* 267 */ MNEM_VADDSD, - /* 268 */ MNEM_VADDSS, - /* 269 */ MNEM_VADDSUBPD, - /* 26A */ MNEM_VADDSUBPS, - /* 26B */ MNEM_VAESDEC, - /* 26C */ MNEM_VAESDECLAST, - /* 26D */ MNEM_VAESENC, - /* 26E */ MNEM_VAESENCLAST, - /* 26F */ MNEM_VAESIMC, - /* 270 */ MNEM_VAESKEYGENASSIST, - /* 271 */ MNEM_VANDNPD, - /* 272 */ MNEM_VANDNPS, - /* 273 */ MNEM_VANDPD, - /* 274 */ MNEM_VANDPS, - /* 275 */ MNEM_VBLENDPD, - /* 276 */ MNEM_VBLENDPS, - /* 277 */ MNEM_VBLENDVPD, - /* 278 */ MNEM_VBLENDVPS, - /* 279 */ MNEM_VBROADCASTSD, - /* 27A */ MNEM_VBROADCASTSS, - /* 27B */ MNEM_VCMPPD, - /* 27C */ MNEM_VCMPPS, - /* 27D */ MNEM_VCMPSD, - /* 27E */ MNEM_VCMPSS, - /* 27F */ MNEM_VCOMISD, - /* 280 */ MNEM_VCOMISS, - /* 281 */ MNEM_VCVTDQ2PD, - /* 282 */ MNEM_VCVTDQ2PS, - /* 283 */ MNEM_VCVTPD2DQ, - /* 284 */ MNEM_VCVTPD2PS, - /* 285 */ MNEM_VCVTPS2DQ, - /* 286 */ MNEM_VCVTPS2PD, - /* 287 */ MNEM_VCVTSD2SI, - /* 288 */ MNEM_VCVTSD2SS, - /* 289 */ MNEM_VCVTSI2SD, - /* 28A */ MNEM_VCVTSI2SS, - /* 28B */ MNEM_VCVTSS2SD, - /* 28C */ MNEM_VCVTSS2SI, - /* 28D */ MNEM_VCVTTPD2DQ, - /* 28E */ MNEM_VCVTTPS2DQ, - /* 28F */ MNEM_VCVTTSD2SI, - /* 290 */ MNEM_VCVTTSS2SI, - /* 291 */ MNEM_VDIVPD, - /* 292 */ MNEM_VDIVPS, - /* 293 */ MNEM_VDIVSD, - /* 294 */ MNEM_VDIVSS, - /* 295 */ MNEM_VDPPD, - /* 296 */ MNEM_VDPPS, - /* 297 */ MNEM_VERR, - /* 298 */ MNEM_VERW, - /* 299 */ MNEM_VEXTRACTF128, - /* 29A */ MNEM_VEXTRACTPS, - /* 29B */ MNEM_VHADDPD, - /* 29C */ MNEM_VHADDPS, - /* 29D */ MNEM_VHSUBPD, - /* 29E */ MNEM_VHSUBPS, - /* 29F */ MNEM_VINSERTF128, - /* 2A0 */ MNEM_VINSERTPS, - /* 2A1 */ MNEM_VLDDQU, - /* 2A2 */ MNEM_VMASKMOVDQU, - /* 2A3 */ MNEM_VMASKMOVPD, - /* 2A4 */ MNEM_VMASKMOVPS, - /* 2A5 */ MNEM_VMAXPD, - /* 2A6 */ MNEM_VMAXPS, - /* 2A7 */ MNEM_VMAXSD, - /* 2A8 */ MNEM_VMAXSS, - /* 2A9 */ MNEM_VMCALL, - /* 2AA */ MNEM_VMCLEAR, - /* 2AB */ MNEM_VMINPD, - /* 2AC */ MNEM_VMINPS, - /* 2AD */ MNEM_VMINSD, - /* 2AE */ MNEM_VMINSS, - /* 2AF */ MNEM_VMLAUNCH, - /* 2B0 */ MNEM_VMLOAD, - /* 2B1 */ MNEM_VMMCALL, - /* 2B2 */ MNEM_VMOVAPD, - /* 2B3 */ MNEM_VMOVAPS, - /* 2B4 */ MNEM_VMOVD, - /* 2B5 */ MNEM_VMOVDDUP, - /* 2B6 */ MNEM_VMOVDQA, - /* 2B7 */ MNEM_VMOVDQU, - /* 2B8 */ MNEM_VMOVHLPS, - /* 2B9 */ MNEM_VMOVHPD, - /* 2BA */ MNEM_VMOVHPS, - /* 2BB */ MNEM_VMOVLHPS, - /* 2BC */ MNEM_VMOVLPD, - /* 2BD */ MNEM_VMOVLPS, - /* 2BE */ MNEM_VMOVMSKPD, - /* 2BF */ MNEM_VMOVMSKPS, - /* 2C0 */ MNEM_VMOVNTDQ, - /* 2C1 */ MNEM_VMOVNTDQA, - /* 2C2 */ MNEM_VMOVNTPD, - /* 2C3 */ MNEM_VMOVNTPS, - /* 2C4 */ MNEM_VMOVQ, - /* 2C5 */ MNEM_VMOVSD, - /* 2C6 */ MNEM_VMOVSHDUP, - /* 2C7 */ MNEM_VMOVSLDUP, - /* 2C8 */ MNEM_VMOVSS, - /* 2C9 */ MNEM_VMOVUPD, - /* 2CA */ MNEM_VMOVUPS, - /* 2CB */ MNEM_VMPSADBW, - /* 2CC */ MNEM_VMPTRLD, - /* 2CD */ MNEM_VMPTRST, - /* 2CE */ MNEM_VMREAD, - /* 2CF */ MNEM_VMRESUME, - /* 2D0 */ MNEM_VMRUN, - /* 2D1 */ MNEM_VMSAVE, - /* 2D2 */ MNEM_VMULPD, - /* 2D3 */ MNEM_VMULPS, - /* 2D4 */ MNEM_VMULSD, - /* 2D5 */ MNEM_VMULSS, - /* 2D6 */ MNEM_VMWRITE, - /* 2D7 */ MNEM_VMXOFF, - /* 2D8 */ MNEM_VMXON, - /* 2D9 */ MNEM_VORPD, - /* 2DA */ MNEM_VORPS, - /* 2DB */ MNEM_VPABSB, - /* 2DC */ MNEM_VPABSD, - /* 2DD */ MNEM_VPABSW, - /* 2DE */ MNEM_VPACKSSDW, - /* 2DF */ MNEM_VPACKSSWB, - /* 2E0 */ MNEM_VPACKUSDW, - /* 2E1 */ MNEM_VPACKUSWB, - /* 2E2 */ MNEM_VPADDB, - /* 2E3 */ MNEM_VPADDD, - /* 2E4 */ MNEM_VPADDQ, - /* 2E5 */ MNEM_VPADDSB, - /* 2E6 */ MNEM_VPADDSW, - /* 2E7 */ MNEM_VPADDUSB, - /* 2E8 */ MNEM_VPADDUSW, - /* 2E9 */ MNEM_VPADDW, - /* 2EA */ MNEM_VPALIGNR, - /* 2EB */ MNEM_VPAND, - /* 2EC */ MNEM_VPANDN, - /* 2ED */ MNEM_VPAVGB, - /* 2EE */ MNEM_VPAVGW, - /* 2EF */ MNEM_VPBLENDVB, - /* 2F0 */ MNEM_VPBLENDW, - /* 2F1 */ MNEM_VPCLMULQDQ, - /* 2F2 */ MNEM_VPCMPEQB, - /* 2F3 */ MNEM_VPCMPEQD, - /* 2F4 */ MNEM_VPCMPEQQ, - /* 2F5 */ MNEM_VPCMPEQW, - /* 2F6 */ MNEM_VPCMPESTRI, - /* 2F7 */ MNEM_VPCMPESTRM, - /* 2F8 */ MNEM_VPCMPGTB, - /* 2F9 */ MNEM_VPCMPGTD, - /* 2FA */ MNEM_VPCMPGTQ, - /* 2FB */ MNEM_VPCMPGTW, - /* 2FC */ MNEM_VPCMPISTRI, - /* 2FD */ MNEM_VPCMPISTRM, - /* 2FE */ MNEM_VPERM2F128, - /* 2FF */ MNEM_VPERMILPD, - /* 300 */ MNEM_VPERMILPS, - /* 301 */ MNEM_VPEXTRB, - /* 302 */ MNEM_VPEXTRD, - /* 303 */ MNEM_VPEXTRQ, - /* 304 */ MNEM_VPEXTRW, - /* 305 */ MNEM_VPHADDD, - /* 306 */ MNEM_VPHADDSW, - /* 307 */ MNEM_VPHADDW, - /* 308 */ MNEM_VPHMINPOSUW, - /* 309 */ MNEM_VPHSUBD, - /* 30A */ MNEM_VPHSUBSW, - /* 30B */ MNEM_VPHSUBW, - /* 30C */ MNEM_VPINSRB, - /* 30D */ MNEM_VPINSRD, - /* 30E */ MNEM_VPINSRQ, - /* 30F */ MNEM_VPINSRW, - /* 310 */ MNEM_VPMADDUBSW, - /* 311 */ MNEM_VPMADDWD, - /* 312 */ MNEM_VPMAXSB, - /* 313 */ MNEM_VPMAXSD, - /* 314 */ MNEM_VPMAXSW, - /* 315 */ MNEM_VPMAXUB, - /* 316 */ MNEM_VPMAXUD, - /* 317 */ MNEM_VPMAXUW, - /* 318 */ MNEM_VPMINSB, - /* 319 */ MNEM_VPMINSD, - /* 31A */ MNEM_VPMINSW, - /* 31B */ MNEM_VPMINUB, - /* 31C */ MNEM_VPMINUD, - /* 31D */ MNEM_VPMINUW, - /* 31E */ MNEM_VPMOVMSKB, - /* 31F */ MNEM_VPMOVSXBD, - /* 320 */ MNEM_VPMOVSXBQ, - /* 321 */ MNEM_VPMOVSXBW, - /* 322 */ MNEM_VPMOVSXWD, - /* 323 */ MNEM_VPMOVSXWQ, - /* 324 */ MNEM_VPMOVZXBD, - /* 325 */ MNEM_VPMOVZXBQ, - /* 326 */ MNEM_VPMOVZXBW, - /* 327 */ MNEM_VPMOVZXDQ, - /* 328 */ MNEM_VPMOVZXWD, - /* 329 */ MNEM_VPMOVZXWQ, - /* 32A */ MNEM_VPMULDQ, - /* 32B */ MNEM_VPMULHRSW, - /* 32C */ MNEM_VPMULHUW, - /* 32D */ MNEM_VPMULHW, - /* 32E */ MNEM_VPMULLD, - /* 32F */ MNEM_VPMULLW, - /* 330 */ MNEM_VPOR, - /* 331 */ MNEM_VPSADBW, - /* 332 */ MNEM_VPSHUFB, - /* 333 */ MNEM_VPSHUFD, - /* 334 */ MNEM_VPSHUFHW, - /* 335 */ MNEM_VPSHUFLW, - /* 336 */ MNEM_VPSIGNB, - /* 337 */ MNEM_VPSIGND, - /* 338 */ MNEM_VPSIGNW, - /* 339 */ MNEM_VPSLLD, - /* 33A */ MNEM_VPSLLDQ, - /* 33B */ MNEM_VPSLLQ, - /* 33C */ MNEM_VPSLLW, - /* 33D */ MNEM_VPSRAD, - /* 33E */ MNEM_VPSRAW, - /* 33F */ MNEM_VPSRLD, - /* 340 */ MNEM_VPSRLDQ, - /* 341 */ MNEM_VPSRLQ, - /* 342 */ MNEM_VPSRLW, - /* 343 */ MNEM_VPSUBB, - /* 344 */ MNEM_VPSUBD, - /* 345 */ MNEM_VPSUBQ, - /* 346 */ MNEM_VPSUBSB, - /* 347 */ MNEM_VPSUBSW, - /* 348 */ MNEM_VPSUBUSB, - /* 349 */ MNEM_VPSUBUSW, - /* 34A */ MNEM_VPSUBW, - /* 34B */ MNEM_VPTEST, - /* 34C */ MNEM_VPUNPCKHBW, - /* 34D */ MNEM_VPUNPCKHDQ, - /* 34E */ MNEM_VPUNPCKHQDQ, - /* 34F */ MNEM_VPUNPCKHWD, - /* 350 */ MNEM_VPUNPCKLBW, - /* 351 */ MNEM_VPUNPCKLDQ, - /* 352 */ MNEM_VPUNPCKLQDQ, - /* 353 */ MNEM_VPUNPCKLWD, - /* 354 */ MNEM_VPXOR, - /* 355 */ MNEM_VRCPPS, - /* 356 */ MNEM_VRCPSS, - /* 357 */ MNEM_VROUNDPD, - /* 358 */ MNEM_VROUNDPS, - /* 359 */ MNEM_VROUNDSD, - /* 35A */ MNEM_VROUNDSS, - /* 35B */ MNEM_VRSQRTPS, - /* 35C */ MNEM_VRSQRTSS, - /* 35D */ MNEM_VSHUFPD, - /* 35E */ MNEM_VSHUFPS, - /* 35F */ MNEM_VSQRTPD, - /* 360 */ MNEM_VSQRTPS, - /* 361 */ MNEM_VSQRTSD, - /* 362 */ MNEM_VSQRTSS, - /* 363 */ MNEM_VSTMXCSR, - /* 364 */ MNEM_VSUBPD, - /* 365 */ MNEM_VSUBPS, - /* 366 */ MNEM_VSUBSD, - /* 367 */ MNEM_VSUBSS, - /* 368 */ MNEM_VTESTPD, - /* 369 */ MNEM_VTESTPS, - /* 36A */ MNEM_VUCOMISD, - /* 36B */ MNEM_VUCOMISS, - /* 36C */ MNEM_VUNPCKHPD, - /* 36D */ MNEM_VUNPCKHPS, - /* 36E */ MNEM_VUNPCKLPD, - /* 36F */ MNEM_VUNPCKLPS, - /* 370 */ MNEM_ZyDisORPD, - /* 371 */ MNEM_ZyDisORPS, - /* 372 */ MNEM_VZEROALL, - /* 373 */ MNEM_VZEROUPPER, - /* 374 */ MNEM_WAIT, - /* 375 */ MNEM_WBINVD, - /* 376 */ MNEM_WRMSR, - /* 377 */ MNEM_XADD, - /* 378 */ MNEM_XCHG, - /* 379 */ MNEM_XCRYPTCBC, - /* 37A */ MNEM_XCRYPTCFB, - /* 37B */ MNEM_XCRYPTCTR, - /* 37C */ MNEM_XCRYPTECB, - /* 37D */ MNEM_XCRYPTOFB, - /* 37E */ MNEM_XGETBV, - /* 37F */ MNEM_XLATB, - /* 380 */ MNEM_XOR, - /* 381 */ MNEM_XORPD, - /* 382 */ MNEM_XORPS, - /* 383 */ MNEM_XRSTOR, - /* 384 */ MNEM_XSAVE, - /* 385 */ MNEM_XSETBV, - /* 386 */ MNEM_XSHA1, - /* 387 */ MNEM_XSHA256, - /* 388 */ MNEM_XSTORE, - - MNEM_FORCE_WORD = 0x7FFF -} ZyDisInstructionMnemonic; - -/** - * @brief Defines an alias representing an opcode tree node. An opcode tree node is a 16 bit - * unsigned integer value with its first 4 bits reserved for the node type. - */ -typedef uint16_t ZyDisOpcodeTreeNode; - -/** - * @brief Values that represent the type of an opcode tree node. - */ -typedef enum _ZyDisOpcodeTreeNodeType /* : uint8_t */ -{ - /** - * @brief Reference to a concrete instruction definition. - */ - OTNT_INSTRUCTION_DEFINITION = 0, - /** - * @brief Reference to an opcode table. - */ - OTNT_TABLE = 1, - /** - * @brief Reference to a modrm_mod switch table. - */ - OTNT_MODRM_MOD = 2, - /** - * @brief Reference to a modrm_reg switch table. - */ - OTNT_MODRM_REG = 3, - /** - * @brief Reference to a modrm_rm switch table. - */ - OTNT_MODRM_RM = 4, - /** - * @brief Reference to a mandatory-prefix switch table. - */ - OTNT_MANDATORY = 5, - /** - * @brief Reference to a x87 opcode table. - */ - OTNT_X87 = 6, - /** - * @brief Reference to an address-size switch table. - */ - OTNT_ADDRESS_SIZE = 7, - /** - * @brief Reference to an operand-size switch table. - */ - OTNT_OPERAND_SIZE = 8, - /** - * @brief Reference to a cpu-mode switch table. - */ - OTNT_MODE = 9, - /** - * @brief Reference to a vendor switch table. - */ - OTNT_VENDOR = 10, - /** - * @brief Reference to a 3dnow! opcode table. - */ - OTNT_AMD3DNOW = 11, - /** - * @brief Reference to a vex-prefix switch table. - */ - OTNT_VEX = 12, - /** - * @brief Reference to a vex_w switch table. - */ - OTNT_VEXW = 13, - /** - * @brief Reference to a vex_l switch table. - */ - OTNT_VEXL = 14 -} ZyDisOpcodeTreeNodeType; - -/** - * @brief Values that represent the type of an operand in the instruction definition. - */ -typedef enum _ZyDisDefinedOperandType /* : uint8_t */ -{ - /* - * @brief No operand. - */ - DOT_NONE, - /* - * @brief Direct address. The instruction has no ModR/M byte; the address of the operand is - * encoded in the instruction; no base register, index register, or scaling factor - * can be applied. - */ - DOT_A, - /* - * @brief The reg field of the ModR/M byte selects a control register. - */ - DOT_C, - /* - * @brief The reg field of the ModR/M byte selects a debug register. - */ - DOT_D, - /* - * @brief A ModR/M byte follows the opcode and specifies the operand. The operand is either - * a general-purpose register or a memory address. If it is a memory address, the - * address is computed from a segment register and any of the following values: - * a base register, an index register, a scaling factor, or a displacement. - */ - DOT_E, - /* - * @brief rFLAGS register. - */ - DOT_F, - /* - * @brief The reg field of the ModR/M byte selects a general register. - */ - DOT_G, - /* - * @brief The r/m field of the ModR/M byte always selects a general register, regardless of - * the mod field. - */ - DOT_H, - /* - * @brief Immediate data. The operand value is encoded in subsequent bytes of the - * instruction. - */ - DOT_I, - /* - * @brief Signed immediate data. The operand value is encoded in subsequent bytes of the - * instruction. - */ - DOT_sI, - /* - * @brief Constant immediate data value of 1. - */ - DOT_I1, - /* - * @brief The instruction contains a relative offset to be added to the instruction pointer - * register. - */ - DOT_J, - /* - * @brief Source operand is encoded in immediate byte (VEX only). - */ - DOT_L, - /* - * @brief The ModR/M byte may refer only to memory: mod != 11bin. - */ - DOT_M, - /* - * @brief Combination of M and R. - */ - DOT_MR, - /* - * @brief Combination of M and U. - */ - DOT_MU, - /* - * @brief The R/M field of the ModR/M byte selects a packed quadword MMX technology register. - */ - DOT_N, - /* - * @brief The instruction has no ModR/M byte; the offset of the operand is coded as a word, - * double word or quad word (depending on address size attribute) in the instruction. - * No base register, index register, or scaling factor can be applied. - */ - DOT_O, - /* - * @brief The reg field of the ModR/M byte selects a packed quadword MMX technology register. - */ - DOT_P, - /* - * @brief A ModR/M byte follows the opcode and specifies the operand. The operand is either - * an MMX technology register or a memory address. If it is a memory address, the - * address is computed from a segment register and any of the following values: - * a base register, an index register, a scaling factor, and a displacement. - */ - DOT_Q, - /* - * @brief The mod field of the ModR/M byte may refer only to a general register. - */ - DOT_R, - /* - * @brief The reg field of the ModR/M byte selects a segment register. - */ - DOT_S, - /* - * @brief The R/M field of the ModR/M byte selects a 128-bit XMM register. - */ - DOT_U, - /* - * @brief The reg field of the ModR/M byte selects a 128-bit XMM register. - */ - DOT_V, - /* - * @brief A ModR/M byte follows the opcode and specifies the operand. The operand is either - * a 128-bit XMM register or a memory address. If it is a memory address, the address - * is computed from a segment register and any of the following values: - * a base register, an index register, a scaling factor, and a displacement. - */ - DOT_W, - /** - * @brief Register 0. - */ - DOT_R0, - /** - * @brief Register 1. - */ - DOT_R1, - /** - * @brief Register 2. - */ - DOT_R2, - /** - * @brief Register 3. - */ - DOT_R3, - /** - * @brief Register 4. - */ - DOT_R4, - /** - * @brief Register 5. - */ - DOT_R5, - /** - * @brief Register 6. - */ - DOT_R6, - /** - * @brief Register 7. - */ - DOT_R7, - /** - * @brief AL register. - */ - DOT_AL, - /** - * @brief CL register. - */ - DOT_CL, - /** - * @brief DL register. - */ - DOT_DL, - /** - * @brief AX register. - */ - DOT_AX, - /** - * @brief CX register. - */ - DOT_CX, - /** - * @brief DX register. - */ - DOT_DX, - /** - * @brief EAX register. - */ - DOT_EAX, - /** - * @brief ECX register. - */ - DOT_ECX, - /** - * @brief EDX register. - */ - DOT_EDX, - /** - * @brief RAX register. - */ - DOT_RAX, - /** - * @brief RCX register. - */ - DOT_RCX, - /** - * @brief RDX register. - */ - DOT_RDX, - /** - * @brief ES segment register. - */ - DOT_ES, - /** - * @brief CS segment register. - */ - DOT_CS, - /** - * @brief SS segment register. - */ - DOT_SS, - /** - * @brief DS segment register. - */ - DOT_DS, - /** - * @brief FS segment register. - */ - DOT_FS, - /** - * @brief GS segment register. - */ - DOT_GS, - /** - * @brief Floating point register 0. - */ - DOT_ST0, - /** - * @brief Floating point register 1. - */ - DOT_ST1, - /** - * @brief Floating point register 2. - */ - DOT_ST2, - /** - * @brief Floating point register 3. - */ - DOT_ST3, - /** - * @brief Floating point register 4. - */ - DOT_ST4, - /** - * @brief Floating point register 5. - */ - DOT_ST5, - /** - * @brief Floating point register 6. - */ - DOT_ST6, - /** - * @brief Floating point register 7. - */ - DOT_ST7 -} ZyDisDefinedOperandType; - -/** - * @brief Values that represent the size of an operand in the instruction definition. - * Do not change the order or the values of this enum! - */ -typedef enum _ZyDisDefinedOperandSize /* : uint8_t */ -{ - /** - * @brief No operand. - */ - DOS_NA = 0, - /** - * @brief Word, dword or qword. - */ - DOS_Z, - /** - * @brief Word, dword or qword. - */ - DOS_V, - /** - * @brief Dword or qword. - */ - DOS_Y, - /** - * @brief Oword or yword. - */ - DOS_X, - /** - * @brief Dword or qword, depending on the disassembler mode. - */ - DOS_RDQ, - /* - * @brief Byte, regardless of operand-size attribute. - */ - DOS_B, - /* - * @brief Word, regardless of operand-size attribute. - */ - DOS_W, - /* - * @brief Doubleword, regardless of operand-size attribute. - */ - DOS_D, - /* - * @brief Quadword, regardless of operand-size attribute. - */ - DOS_Q, - /* - * @brief 10-byte far pointer. - */ - DOS_T, - /** - * @brief TODO: - */ - DOS_O, - /* - * @brief Double-quadword, regardless of operand-size attribute. - */ - DOS_DQ, - /* - * @brief Quad-quadword, regardless of operand-size attribute. - */ - DOS_QQ, - /** - * @brief B sized register or D sized memory operand. - */ - DOS_BD = (DOS_B << 4) | DOS_D, - /** - * @brief B sized register or V sized memory operand. - */ - DOS_BV = (DOS_B << 4) | DOS_V, - /** - * @brief W sized register or D sized memory operand. - */ - DOS_WD = (DOS_W << 4) | DOS_D, - /** - * @brief W sized register or V sized memory operand. - */ - DOS_WV = (DOS_W << 4) | DOS_V, - /** - * @brief W sized register or Y sized memory operand. - */ - DOS_WY = (DOS_W << 4) | DOS_Y, - /** - * @brief D sized register or Y sized memory operand. - */ - DOS_DY = (DOS_D << 4) | DOS_Y, - /** - * @brief W sized register or O sized memory operand. - */ - DOS_WO = (DOS_W << 4) | DOS_O, - /** - * @brief D sized register or O sized memory operand. - */ - DOS_DO = (DOS_D << 4) | DOS_O, - /** - * @brief Q sized register or O sized memory operand. - */ - DOS_QO = (DOS_Q << 4) | DOS_O, -} ZyDisDefinedOperandSize; - -/** - * @brief Values that represent optional flags in the instruction definition. - * Do not change the order or the values of this enum! - */ -typedef enum _ZyDisInstructionDefinitionFlags /* : uint16_t */ -{ - /** - * @brief The instruction accepts the rex.b prefix value. - */ - IDF_ACCEPTS_REXB = 0x0001, - /** - * @brief The instruction accepts the rex.x prefix value. - */ - IDF_ACCEPTS_REXX = 0x0002, - /** - * @brief The instruction accepts the rex.r prefix value. - */ - IDF_ACCEPTS_REXR = 0x0004, - /** - * @brief The instruction accepts the rex.w prefix value. - */ - IDF_ACCEPTS_REXW = 0x0008, - /** - * @brief The instruction accepts the address size override prefix (0x67). - */ - IDF_ACCEPTS_ADDRESS_SIZE_PREFIX = 0x0010, - /** - * @brief The instruction accepts the operand size override prefix (0x66). - */ - IDF_ACCEPTS_OPERAND_SIZE_PREFIX = 0x0020, - /** - * @brief The instruction accepts the segment override prefix. - */ - IDF_ACCEPTS_SEGMENT_PREFIX = 0x0040, - /** - * @brief The instruction accepts the REP prefix. - */ - IDF_ACCEPTS_REP_PREFIX = 0x0080, - /** - * @brief The instruction accepts the vex.l prefix value. - */ - IDF_ACCEPTS_VEXL = 0x0100, - /** - * @brief The instruction is invalid in 64 bit mode. - */ - IDF_INVALID_64 = 0x0200, - /** - * @brief The instructions operand size defaults to quadword in 64 bit mode. - */ - IDF_DEFAULT_64 = 0x0400, - /** - * @brief The first operand of the instruction is accessed in write mode. - */ - IDF_OPERAND1_WRITE = 0x0800, - /** - * @brief The first operand of the instruction is accessed in read-write mode. - */ - IDF_OPERAND1_READWRITE = 0x1000, - /** - * @brief The second operand of the instruction is accessed in write mode. - */ - IDF_OPERAND2_WRITE = 0x2000, - /** - * @brief The second operand of the instruction is accessed in read-write mode. - */ - IDF_OPERAND2_READWRITE = 0x4000, - - IDF_FORCE_WORD = 0x7FFF -} ZyDisInstructionDefinitionFlags; - -#pragma pack (push, 1) -/** - * @brief An operand definition. - */ -typedef struct _ZyDisOperandDefinition -{ - /** - * @brief The defined operand type. - * @see ZyDisDefinedOperandType - */ - uint8_t type; - /** - * @brief The defined operand size. - * @see ZyDisDefinedOperandType - */ - uint8_t size; -} ZyDisOperandDefinition; - -/** - * @brief An instruction definition. - */ -typedef struct _ZyDisInstructionDefinition -{ - /** - * @brief The instruction mnemonic. - * @see ZyDisInstructionMnemonic - */ - uint16_t mnemonic; - /** - * @brief The operand definitions for all four possible operands. - */ - ZyDisOperandDefinition operand[4]; - /** - * @brief Additional flags for the instruction definition. - */ - uint16_t flags; -} ZyDisInstructionDefinition; -#pragma pack (pop) - -#ifdef __cplusplus -} -#endif - -#endif // _VDE_ZyDisOPCODETABLEC_H_ \ No newline at end of file diff --git a/VerteronDisassemblerEngine/ZyDisOpcodeTableInternal.h b/VerteronDisassemblerEngine/ZyDisOpcodeTableInternal.h deleted file mode 100644 index 5b55354..0000000 --- a/VerteronDisassemblerEngine/ZyDisOpcodeTableInternal.h +++ /dev/null @@ -1,313 +0,0 @@ -/************************************************************************************************** - - Verteron Disassembler Engine - Version 1.0 - - Remarks : Freeware, Copyright must be included - - Original Author : Florian Bernd - Modifications : athre0z - - Last change : 19. March 2015 - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - -**************************************************************************************************/ - -#ifndef _VDE_ZyDisOPCODETABLEINTERNAL_H_ -#define _VDE_ZyDisOPCODETABLEINTERNAL_H_ - -#include -#include "ZyDisOpcodeTable.h" - -/** - * @brief Contains all opcode tables. - * Indexed by the numeric value of the opcode. - */ -extern const ZyDisOpcodeTreeNode vxOptreeTable[][256]; - -/** - * @brief Contains all modrm_mod switch tables. - * Index values: - * 0 = [modrm_mod == !11] - * 1 = [modrm_mod == 11] - */ -extern const ZyDisOpcodeTreeNode vxOptreeModrmMod[][2]; - -/** - * @brief Contains all modrm_reg switch tables. - * Indexed by the numeric value of the modrm_reg field. - */ -extern const ZyDisOpcodeTreeNode vxOptreeModrmReg[][8]; - -/** - * @brief Contains all modrm_rm switch tables. - * Indexed by the numeric value of the modrm_rm field. - */ -extern const ZyDisOpcodeTreeNode vxOptreeModrmRm[][8]; - -/** - * @brief Contains all mandatory-prefix switch tables. - * Index values: - * 0 = none - * 1 = F2 - * 2 = F3 - * 3 = 66 - */ -extern const ZyDisOpcodeTreeNode vxOptreeMandatory[][4]; - -/** - * @brief Contains all x87 opcode tables. - * Indexed by the numeric value of the 6 lowest bits of the modrm byte (modrm_mod should - * always be 11). - */ -extern const ZyDisOpcodeTreeNode vxOptreeX87[][64]; - -/** - * @brief Contains all address-size switch tables. - * Index values: - * 0 = 16 - * 1 = 32 - * 2 = 64 - */ -extern const ZyDisOpcodeTreeNode vxOptreeAddressSize[][3]; - -/** - * @brief Contains all operand-size switch tables. - * Index values: - * 0 = 16 - * 1 = 32 - * 2 = 64 - */ -extern const ZyDisOpcodeTreeNode vxOptreeOperandSize[][3]; - -/** - * @brief Contains all cpu-mode switch tables. - * Index values: - * 0 = [!= 64] - * 1 = 64 - */ -extern const ZyDisOpcodeTreeNode vxOptreeMode[][2]; - -/** - * @brief Contains all vendor switch tables. - * Index values: - * 0 = AMD - * 1 = Intel - */ -extern const ZyDisOpcodeTreeNode vxOptreeVendor[][2]; - -/** - * @brief Contains all 3DNow! switch tables. - * Indexed by the numeric value of the 3DNow! opcode. - */ -extern const ZyDisOpcodeTreeNode vxOptree3dnow[][256]; - -/** - * @brief Contains all vex switch tables. - * Index values: - * 0 = none - * 1 = 0F - * 2 = 0F38 - * 3 = 0F3A - * 4 = 66 - * 5 = 66_0F - * 6 = 66_0F38 - * 7 = 66_0F3A - * 8 = F3 - * 9 = F3_0F - * A = F3_0F38 - * B = F3_0F3A - * C = F2 - * D = F2_0F - * E = F2_0F38 - * F = F2_0F3A - */ -extern const ZyDisOpcodeTreeNode vxOptreeVex[][16]; - -/** - * @brief Contains all vex_w switch tables. - * Indexed by the numeric value of the vex_w field. - */ -extern const ZyDisOpcodeTreeNode vxOptreeVexW[][2]; - -/** - * @brief Contains all vex_l switch tables. - * Indexed by the numeric value of the vex_l field. - */ -extern const ZyDisOpcodeTreeNode vxOptreeVexL[][2]; - -/** - * @brief Contains all instruction definitions. - */ -extern const ZyDisInstructionDefinition vxInstrDefinitions[]; - -/** - * @brief Contains all instruction mnemonic strings. - */ -extern const char* vxInstrMnemonicStrings[]; - -/** - * @brief Returns the type of the specified opcode tree node. - * @param node The node. - * @return The type of the specified opcode tree node. - */ -ZYDIS_INLINE ZyDisOpcodeTreeNodeType ZyDisGetOpcodeNodeType(ZyDisOpcodeTreeNode node) -{ - return (ZyDisOpcodeTreeNodeType)((node >> 12) & 0x0F); -} - -/** - * @brief Returns the value of the specified opcode tree node. - * @param node The node. - * @return The value of the specified opcode tree node. - */ -ZYDIS_INLINE uint16_t ZyDisGetOpcodeNodeValue(ZyDisOpcodeTreeNode node) -{ - return (node & 0x0FFF); -} - -/** - * @brief Returns the root node of the opcode tree. - * @return The root node of the opcode tree. - */ -ZYDIS_INLINE ZyDisOpcodeTreeNode ZyDisGetOpcodeTreeRoot() -{ - return 0x1000; -} - -/** - * @brief Returns a child node of @c parent specified by @c index. - * @param parent The parent node. - * @param index The index of the child node to retrieve. - * @return The specified child node. - */ -ZYDIS_INLINE ZyDisOpcodeTreeNode ZyDisGetOpcodeTreeChild(ZyDisOpcodeTreeNode parent, uint16_t index) -{ - ZyDisOpcodeTreeNodeType nodeType = ZyDisGetOpcodeNodeType(parent); - uint16_t tableIndex = ZyDisGetOpcodeNodeValue(parent); - switch (nodeType) - { - case OTNT_TABLE: - assert(index < 256); - return vxOptreeTable[tableIndex][index]; - case OTNT_MODRM_MOD: - assert(index < 2); - return vxOptreeModrmMod[tableIndex][index]; - case OTNT_MODRM_REG: - assert(index < 8); - return vxOptreeModrmReg[tableIndex][index]; - case OTNT_MODRM_RM: - assert(index < 8); - return vxOptreeModrmRm[tableIndex][index]; - case OTNT_MANDATORY: - assert(index < 4); - return vxOptreeMandatory[tableIndex][index]; - case OTNT_X87: - assert(index < 64); - return vxOptreeX87[tableIndex][index]; - case OTNT_ADDRESS_SIZE: - assert(index < 3); - return vxOptreeAddressSize[tableIndex][index]; - case OTNT_OPERAND_SIZE: - assert(index < 3); - return vxOptreeOperandSize[tableIndex][index]; - case OTNT_MODE: - assert(index < 2); - return vxOptreeMode[tableIndex][index]; - case OTNT_VENDOR: - assert(index < 3); - return vxOptreeVendor[tableIndex][index]; - case OTNT_AMD3DNOW: - assert(index < 256); - return vxOptree3dnow[tableIndex][index]; - case OTNT_VEX: - assert(index < 16); - return vxOptreeVex[tableIndex][index]; - case OTNT_VEXW: - assert(index < 2); - return vxOptreeVexW[tableIndex][index]; - case OTNT_VEXL: - assert(index < 2); - return vxOptreeVexL[tableIndex][index]; - default: - assert(0); - } - return 0xFFFF; -} - -/** - * @brief Returns the instruction definition that is linked to the given @c node. - * @param node The instruction definition node. - * @return Pointer to the instruction definition. - */ -ZYDIS_INLINE const ZyDisInstructionDefinition* ZyDisGetInstructionDefinition(ZyDisOpcodeTreeNode node) -{ - assert(ZyDisGetOpcodeNodeType(node) == OTNT_INSTRUCTION_DEFINITION); - return &vxInstrDefinitions[node & 0x0FFF]; -} - -/** - * @brief Returns the specified instruction mnemonic string. - * @param mnemonic The mnemonic. - * @return The instruction mnemonic string. - */ -ZYDIS_INLINE const char* ZyDisGetInstructionMnemonicString(ZyDisInstructionMnemonic mnemonic) -{ - return vxInstrMnemonicStrings[(uint16_t)mnemonic]; -} - -/** - * @brief Returns the numeric value for a simple operand size definition. - * @param operandSize The defined operand size. - * @return The the numeric value for the simple operand size definition. - */ -ZYDIS_INLINE uint16_t ZyDisGetSimpleOperandSize(ZyDisDefinedOperandSize operandSize) -{ - static const uint16_t operandSizes[8] = - { - 8, 16, 32, 64, 80, 12, 128, 256 - }; - - uint16_t index = (uint16_t)(operandSize - DOS_B); - assert(index < 8); - return operandSizes[index]; -} - -/** - * @brief Returns the memory-size part of a complex operand size definition. - * @param operandSize The defined operand size. - * @return The memory-size part of the operand size definition. - */ -ZYDIS_INLINE ZyDisDefinedOperandSize ZyDisGetComplexOperandMemSize(ZyDisDefinedOperandSize operandSize) -{ - return (ZyDisDefinedOperandSize)(operandSize & 0x0F); -} - -/** - * @brief Returns the register-size part of a complex operand size definition. - * @param operandSize The defined operand size. - * @return The register-size part of the operand size definition. - */ -ZYDIS_INLINE ZyDisDefinedOperandSize ZyDisGetComplexOperandRegSize(ZyDisDefinedOperandSize operandSize) -{ - return (ZyDisDefinedOperandSize)((operandSize >> 4) & 0x0F); -} - -#endif // _VDE_ZyDisOPCODETABLEINTERNAL_H_ \ No newline at end of file diff --git a/Bindings/Cpp/ZyDisDisassembler.hpp b/Zydis/Zydis.hpp similarity index 77% rename from Bindings/Cpp/ZyDisDisassembler.hpp rename to Zydis/Zydis.hpp index 705e21a..4c77299 100644 --- a/Bindings/Cpp/ZyDisDisassembler.hpp +++ b/Zydis/Zydis.hpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 29. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,11 +26,14 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ +***************************************************************************************************/ -#pragma once +#ifndef _ZYDIS_DISASSEMBLER_HPP_ +#define _ZYDIS_DISASSEMBLER_HPP_ -#include "ZyDisDisassemblerTypes.hpp" -#include "ZyDisInstructionDecoder.hpp" -#include "ZyDisInstructionFormatter.hpp" -#include "ZyDisDisassemblerUtils.hpp" +#include "ZydisInstructionDecoder.hpp" +#include "ZydisInstructionFormatter.hpp" +#include "ZydisSymbolResolver.hpp" +#include "ZydisUtils.hpp" + +#endif /*_ZYDIS_DISASSEMBLER_HPP_ */ \ No newline at end of file diff --git a/Bindings/Cpp/ZyDisInstructionDecoder.cpp b/Zydis/ZydisInstructionDecoder.cpp similarity index 55% rename from Bindings/Cpp/ZyDisInstructionDecoder.cpp rename to Zydis/ZydisInstructionDecoder.cpp index 6672c6c..0a1f34d 100644 --- a/Bindings/Cpp/ZyDisInstructionDecoder.cpp +++ b/Zydis/ZydisInstructionDecoder.cpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 29. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,17 +26,21 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ -#include "ZyDisInstructionDecoder.hpp" +***************************************************************************************************/ + +#include "ZydisInstructionDecoder.hpp" #include -namespace Verteron +namespace Zydis { -bool ZyDisInstructionDecoder::decodeRegisterOperand(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, - RegisterClass registerClass, uint8_t registerId, ZyDisDefinedOperandSize operandSize) const +/* InstructionDecoder ====================================================================== */ + +bool InstructionDecoder::decodeRegisterOperand(InstructionInfo& info, + OperandInfo& operand, RegisterClass registerClass, uint8_t registerId, + DefinedOperandSize operandSize) const { - ZyDisRegister reg = ZyDisRegister::NONE; + Register reg = Register::NONE; uint16_t size = getEffectiveOperandSize(info, operandSize); switch (registerClass) { @@ -46,79 +48,84 @@ bool ZyDisInstructionDecoder::decodeRegisterOperand(ZyDisInstructionInfo &info, switch (size) { case 64: - reg = static_cast(static_cast(ZyDisRegister::RAX) + registerId); + reg = static_cast( + static_cast(Register::RAX) + registerId); break; case 32: - reg = static_cast(static_cast(ZyDisRegister::EAX) + registerId); + reg = static_cast( + static_cast(Register::EAX) + registerId); break; case 16: - reg = static_cast(static_cast(ZyDisRegister::AX) + registerId); + reg = static_cast( + static_cast(Register::AX) + registerId); break; case 8: // TODO: Only REX? Or VEX too? - if (m_disassemblerMode == ZyDisDisassemblerMode::M64BIT && (info.flags & IF_PREFIX_REX)) + if (m_disassemblerMode == DisassemblerMode::M64BIT&& (info.flags& IF_PREFIX_REX)) { if (registerId >= 4) { - reg = static_cast( - static_cast(ZyDisRegister::SPL) + (registerId - 4)); + reg = static_cast( + static_cast(Register::SPL) + (registerId - 4)); } else { - reg = static_cast( - static_cast(ZyDisRegister::AL) + registerId); + reg = static_cast( + static_cast(Register::AL) + registerId); } } else { - reg = static_cast(static_cast(ZyDisRegister::AL) + registerId); + reg = static_cast( + static_cast(Register::AL) + registerId); } break; case 0: // TODO: Error? - reg = ZyDisRegister::NONE; + reg = Register::NONE; break; default: assert(0); } break; case RegisterClass::MMX: - reg = - static_cast(static_cast(ZyDisRegister::MM0) + (registerId & 0x07)); + reg = static_cast( + static_cast(Register::MM0) + (registerId& 0x07)); break; case RegisterClass::CONTROL: - reg = static_cast(static_cast(ZyDisRegister::CR0) + registerId); + reg = static_cast(static_cast(Register::CR0) + registerId); break; case RegisterClass::DEBUG: - reg = static_cast(static_cast(ZyDisRegister::DR0) + registerId); + reg = static_cast(static_cast(Register::DR0) + registerId); break; case RegisterClass::SEGMENT: - if ((registerId & 7) > 5) + if ((registerId& 7) > 5) { info.flags |= IF_ERROR_OPERAND; return false; } - reg = static_cast(static_cast(ZyDisRegister::ES) + (registerId & 0x07)); + reg = static_cast( + static_cast(Register::ES) + (registerId& 0x07)); break; case RegisterClass::XMM: - reg = static_cast(registerId + static_cast( - ((size == 256) ? ZyDisRegister::YMM0 : ZyDisRegister::XMM0))); + reg = static_cast(registerId + static_cast( + ((size == 256) ? Register::YMM0 : Register::XMM0))); break; default: assert(0); } - operand.type = ZyDisOperandType::REGISTER; - operand.base = static_cast(reg); + operand.type = OperandType::REGISTER; + operand.base = static_cast(reg); operand.size = size; return true; } -bool ZyDisInstructionDecoder::decodeRegisterMemoryOperand(ZyDisInstructionInfo &info, - ZyDisOperandInfo &operand, RegisterClass registerClass, ZyDisDefinedOperandSize operandSize) +bool InstructionDecoder::decodeRegisterMemoryOperand(InstructionInfo& info, + OperandInfo& operand, RegisterClass registerClass, DefinedOperandSize operandSize) { if (!decodeModrm(info)) { return false; } - assert(info.flags & IF_MODRM); + assert(info.flags& IF_MODRM); // Decode register operand if (info.modrm_mod == 3) { @@ -127,24 +134,25 @@ bool ZyDisInstructionDecoder::decodeRegisterMemoryOperand(ZyDisInstructionInfo & } // Decode memory operand uint8_t offset = 0; - operand.type = ZyDisOperandType::MEMORY; + operand.type = OperandType::MEMORY; operand.size = getEffectiveOperandSize(info, operandSize); switch (info.address_mode) { case 16: { - static const ZyDisRegister bases[] = { - ZyDisRegister::BX, ZyDisRegister::BX, ZyDisRegister::BP, ZyDisRegister::BP, - ZyDisRegister::SI, ZyDisRegister::DI, ZyDisRegister::BP, ZyDisRegister::BX }; - static const ZyDisRegister indices[] = { - ZyDisRegister::SI, ZyDisRegister::DI, ZyDisRegister::SI, ZyDisRegister::DI, - ZyDisRegister::NONE, ZyDisRegister::NONE, ZyDisRegister::NONE, ZyDisRegister::NONE }; - operand.base = static_cast(bases[info.modrm_rm_ext & 0x07]); - operand.index = static_cast(indices[info.modrm_rm_ext & 0x07]); + static const Register bases[] = { + Register::BX, Register::BX, Register::BP, Register::BP, + Register::SI, Register::DI, Register::BP, Register::BX }; + static const Register indices[] = { + Register::SI, Register::DI, Register::SI, Register::DI, + Register::NONE, Register::NONE, Register::NONE, + Register::NONE }; + operand.base = static_cast(bases[info.modrm_rm_ext& 0x07]); + operand.index = static_cast(indices[info.modrm_rm_ext& 0x07]); operand.scale = 0; - if (info.modrm_mod == 0 && info.modrm_rm_ext == 6) { + if (info.modrm_mod == 0&& info.modrm_rm_ext == 6) { offset = 16; - operand.base = ZyDisRegister::NONE; + operand.base = Register::NONE; } else if (info.modrm_mod == 1) { offset = 8; } else if (info.modrm_mod == 2) { @@ -153,14 +161,14 @@ bool ZyDisInstructionDecoder::decodeRegisterMemoryOperand(ZyDisInstructionInfo & } break; case 32: - operand.base = - static_cast(static_cast(ZyDisRegister::EAX) + info.modrm_rm_ext); + operand.base = static_cast( + static_cast(Register::EAX) + info.modrm_rm_ext); switch (info.modrm_mod) { case 0: if (info.modrm_rm_ext == 5) { - operand.base = ZyDisRegister::NONE; + operand.base = Register::NONE; offset = 32; } break; @@ -173,29 +181,29 @@ bool ZyDisInstructionDecoder::decodeRegisterMemoryOperand(ZyDisInstructionInfo & default: assert(0); } - if ((info.modrm_rm_ext & 0x07) == 4) + if ((info.modrm_rm_ext& 0x07) == 4) { if (!decodeSIB(info)) { return false; } operand.base = - static_cast(static_cast(ZyDisRegister::EAX) + + static_cast(static_cast(Register::EAX) + info.sib_base_ext); operand.index = - static_cast(static_cast(ZyDisRegister::EAX) + + static_cast(static_cast(Register::EAX) + info.sib_index_ext); - operand.scale = (1 << info.sib_scale) & ~1; - if (operand.index == ZyDisRegister::ESP) + operand.scale = (1 << info.sib_scale)& ~1; + if (operand.index == Register::ESP) { - operand.index = ZyDisRegister::NONE; + operand.index = Register::NONE; operand.scale = 0; } - if (operand.base == ZyDisRegister::EBP) + if (operand.base == Register::EBP) { if (info.modrm_mod == 0) { - operand.base = ZyDisRegister::NONE; + operand.base = Register::NONE; } if (info.modrm_mod == 1) { @@ -207,20 +215,20 @@ bool ZyDisInstructionDecoder::decodeRegisterMemoryOperand(ZyDisInstructionInfo & } } else { - operand.index = ZyDisRegister::NONE; + operand.index = Register::NONE; operand.scale = 0; } break; case 64: - operand.base = - static_cast(static_cast(ZyDisRegister::RAX) + info.modrm_rm_ext); + operand.base = static_cast( + static_cast(Register::RAX) + info.modrm_rm_ext); switch (info.modrm_mod) { case 0: - if ((info.modrm_rm_ext & 0x07) == 5) + if ((info.modrm_rm_ext& 0x07) == 5) { info.flags |= IF_RELATIVE; - operand.base = ZyDisRegister::RIP; + operand.base = Register::RIP; offset = 32; } break; @@ -233,31 +241,31 @@ bool ZyDisInstructionDecoder::decodeRegisterMemoryOperand(ZyDisInstructionInfo & default: assert(0); } - if ((info.modrm_rm_ext & 0x07) == 4) + if ((info.modrm_rm_ext& 0x07) == 4) { if (!decodeSIB(info)) { return false; } operand.base = - static_cast(static_cast(ZyDisRegister::RAX) + + static_cast(static_cast(Register::RAX) + info.sib_base_ext); operand.index = - static_cast(static_cast(ZyDisRegister::RAX) + + static_cast(static_cast(Register::RAX) + info.sib_index_ext); - if (operand.index == ZyDisRegister::RSP) + if (operand.index == Register::RSP) { - operand.index = ZyDisRegister::NONE; + operand.index = Register::NONE; operand.scale = 0; } else { - operand.scale = (1 << info.sib_scale) & ~1; + operand.scale = (1 << info.sib_scale)& ~1; } - if ((operand.base == ZyDisRegister::RBP) || (operand.base == ZyDisRegister::R13)) + if ((operand.base == Register::RBP) || (operand.base == Register::R13)) { if (info.modrm_mod == 0) { - operand.base = ZyDisRegister::NONE; + operand.base = Register::NONE; } if (info.modrm_mod == 1) { @@ -269,7 +277,7 @@ bool ZyDisInstructionDecoder::decodeRegisterMemoryOperand(ZyDisInstructionInfo & } } else { - operand.index = ZyDisRegister::NONE; + operand.index = Register::NONE; operand.scale = 0; } break; @@ -287,10 +295,10 @@ bool ZyDisInstructionDecoder::decodeRegisterMemoryOperand(ZyDisInstructionInfo & return true; } -bool ZyDisInstructionDecoder::decodeImmediate(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, - ZyDisDefinedOperandSize operandSize) +bool InstructionDecoder::decodeImmediate(InstructionInfo& info, OperandInfo& operand, + DefinedOperandSize operandSize) { - operand.type = ZyDisOperandType::IMMEDIATE; + operand.type = OperandType::IMMEDIATE; operand.size = getEffectiveOperandSize(info, operandSize); switch (operand.size) { @@ -310,15 +318,15 @@ bool ZyDisInstructionDecoder::decodeImmediate(ZyDisInstructionInfo &info, ZyDisO // TODO: Maybe return false instead of assert assert(0); } - if (!operand.lval.uqword && (info.flags & IF_ERROR_MASK)) + if (!operand.lval.uqword&& (info.flags& IF_ERROR_MASK)) { return false; } return true; } -bool ZyDisInstructionDecoder::decodeDisplacement(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, - uint8_t size) +bool InstructionDecoder::decodeDisplacement(InstructionInfo& info, + OperandInfo& operand, uint8_t size) { switch (size) { @@ -342,26 +350,26 @@ bool ZyDisInstructionDecoder::decodeDisplacement(ZyDisInstructionInfo &info, ZyD // TODO: Maybe return false instead of assert assert(0); } - if (!operand.lval.uqword && (info.flags & IF_ERROR_MASK)) + if (!operand.lval.uqword&& (info.flags& IF_ERROR_MASK)) { return false; } return true; } -bool ZyDisInstructionDecoder::decodeModrm(ZyDisInstructionInfo &info) +bool InstructionDecoder::decodeModrm(InstructionInfo& info) { - if (!(info.flags & IF_MODRM)) + if (!(info.flags& IF_MODRM)) { info.modrm = inputNext(info); - if (!info.modrm && (info.flags & IF_ERROR_MASK)) + if (!info.modrm&& (info.flags& IF_ERROR_MASK)) { return false; } info.flags |= IF_MODRM; - info.modrm_mod = (info.modrm >> 6) & 0x03; - info.modrm_reg = (info.modrm >> 3) & 0x07; - info.modrm_rm = (info.modrm >> 0) & 0x07; + info.modrm_mod = (info.modrm >> 6)& 0x03; + info.modrm_reg = (info.modrm >> 3)& 0x07; + info.modrm_rm = (info.modrm >> 0)& 0x07; } // The @c decodeModrm method might get called multiple times during the opcode- and the // operand decoding, but the effective REX/VEX fields are not initialized before the end of @@ -372,21 +380,21 @@ bool ZyDisInstructionDecoder::decodeModrm(ZyDisInstructionInfo &info) return true; } -bool ZyDisInstructionDecoder::decodeSIB(ZyDisInstructionInfo &info) +bool InstructionDecoder::decodeSIB(InstructionInfo& info) { - assert(info.flags & IF_MODRM); - assert((info.modrm_rm & 0x7) == 4); - if (!(info.flags & IF_SIB)) + assert(info.flags& IF_MODRM); + assert((info.modrm_rm& 0x7) == 4); + if (!(info.flags& IF_SIB)) { info.sib = inputNext(info); - if (!info.sib && (info.flags & IF_ERROR_MASK)) + if (!info.sib&& (info.flags& IF_ERROR_MASK)) { return false; } info.flags |= IF_SIB; - info.sib_scale = (info.sib >> 6) & 0x03; - info.sib_index = (info.sib >> 3) & 0x07; - info.sib_base = (info.sib >> 0) & 0x07; + info.sib_scale = (info.sib >> 6)& 0x03; + info.sib_index = (info.sib >> 3)& 0x07; + info.sib_base = (info.sib >> 0)& 0x07; // The @c decodeSib method is only called during the operand decoding, so updating the // extended values at this point should be safe. info.sib_index_ext = (info.eff_rexvex_x << 3) | info.sib_index; @@ -395,47 +403,47 @@ bool ZyDisInstructionDecoder::decodeSIB(ZyDisInstructionInfo &info) return true; } -bool ZyDisInstructionDecoder::decodeVex(ZyDisInstructionInfo &info) +bool InstructionDecoder::decodeVex(InstructionInfo& info) { - if (!(info.flags & IF_PREFIX_VEX)) + if (!(info.flags& IF_PREFIX_VEX)) { info.vex_op = inputCurrent(); switch (info.vex_op) { case 0xC4: info.vex_b1 = inputNext(info); - if (!info.vex_b1 || (info.flags & IF_ERROR_MASK)) + if (!info.vex_b1 || (info.flags& IF_ERROR_MASK)) { return false; } info.vex_b2 = inputNext(info); - if (!info.vex_b2 || (info.flags & IF_ERROR_MASK)) + if (!info.vex_b2 || (info.flags& IF_ERROR_MASK)) { return false; } - info.vex_r = (info.vex_b1 >> 7) & 0x01; - info.vex_x = (info.vex_b1 >> 6) & 0x01; - info.vex_b = (info.vex_b1 >> 5) & 0x01; - info.vex_m_mmmm = (info.vex_b1 >> 0) & 0x1F; - info.vex_w = (info.vex_b2 >> 7) & 0x01; - info.vex_vvvv = (info.vex_b2 >> 3) & 0x0F; - info.vex_l = (info.vex_b2 >> 2) & 0x01; - info.vex_pp = (info.vex_b2 >> 0) & 0x03; + info.vex_r = (info.vex_b1 >> 7)& 0x01; + info.vex_x = (info.vex_b1 >> 6)& 0x01; + info.vex_b = (info.vex_b1 >> 5)& 0x01; + info.vex_m_mmmm = (info.vex_b1 >> 0)& 0x1F; + info.vex_w = (info.vex_b2 >> 7)& 0x01; + info.vex_vvvv = (info.vex_b2 >> 3)& 0x0F; + info.vex_l = (info.vex_b2 >> 2)& 0x01; + info.vex_pp = (info.vex_b2 >> 0)& 0x03; break; case 0xC5: info.vex_b1 = inputNext(info); - if (!info.vex_b1 || (info.flags & IF_ERROR_MASK)) + if (!info.vex_b1 || (info.flags& IF_ERROR_MASK)) { return false; } - info.vex_r = (info.vex_b1 >> 7) & 0x01; + info.vex_r = (info.vex_b1 >> 7)& 0x01; info.vex_x = 1; info.vex_b = 1; info.vex_m_mmmm = 1; info.vex_w = 0; - info.vex_vvvv = (info.vex_b1 >> 3) & 0x0F; - info.vex_l = (info.vex_b1 >> 2) & 0x01; - info.vex_pp = (info.vex_b1 >> 0) & 0x03; + info.vex_vvvv = (info.vex_b1 >> 3)& 0x0F; + info.vex_l = (info.vex_b1 >> 2)& 0x01; + info.vex_pp = (info.vex_b1 >> 0)& 0x03; break; default: assert(0); @@ -451,32 +459,32 @@ bool ZyDisInstructionDecoder::decodeVex(ZyDisInstructionInfo &info) return true; } -uint16_t ZyDisInstructionDecoder::getEffectiveOperandSize(const ZyDisInstructionInfo &info, - ZyDisDefinedOperandSize operandSize) const +uint16_t InstructionDecoder::getEffectiveOperandSize(const InstructionInfo& info, + DefinedOperandSize operandSize) const { switch (operandSize) { - case ZyDisDefinedOperandSize::NA: + case DefinedOperandSize::NA: return 0; - case ZyDisDefinedOperandSize::Z: + case DefinedOperandSize::Z: return (info.operand_mode == 16) ? 16 : 32; - case ZyDisDefinedOperandSize::V: + case DefinedOperandSize::V: return info.operand_mode; - case ZyDisDefinedOperandSize::Y: + case DefinedOperandSize::Y: return (info.operand_mode == 16) ? 32 : info.operand_mode; - case ZyDisDefinedOperandSize::X: + case DefinedOperandSize::X: assert(info.vex_op != 0); return (info.eff_vex_l) ? - getEffectiveOperandSize(info, ZyDisDefinedOperandSize::QQ) : - getEffectiveOperandSize(info, ZyDisDefinedOperandSize::DQ); - case ZyDisDefinedOperandSize::RDQ: - return (m_disassemblerMode == ZyDisDisassemblerMode::M64BIT) ? 64 : 32; + getEffectiveOperandSize(info, DefinedOperandSize::QQ) : + getEffectiveOperandSize(info, DefinedOperandSize::DQ); + case DefinedOperandSize::RDQ: + return (m_disassemblerMode == DisassemblerMode::M64BIT) ? 64 : 32; default: - return Internal::VDEGetSimpleOperandSize(operandSize); + return Internal::GetSimpleOperandSize(operandSize); } } -bool ZyDisInstructionDecoder::decodeOperands(ZyDisInstructionInfo &info) +bool InstructionDecoder::decodeOperands(InstructionInfo& info) { assert(info.instrDefinition); // Always try to decode the first operand @@ -488,7 +496,7 @@ bool ZyDisInstructionDecoder::decodeOperands(ZyDisInstructionInfo &info) // Decode other operands on demand for (unsigned int i = 1; i < 4; ++i) { - if (info.operand[i - 1].type != ZyDisOperandType::NONE) + if (info.operand[i - 1].type != OperandType::NONE) { if (!decodeOperand(info, info.operand[i], info.instrDefinition->operand[i].type, info.instrDefinition->operand[i].size)) @@ -500,26 +508,26 @@ bool ZyDisInstructionDecoder::decodeOperands(ZyDisInstructionInfo &info) // Update operand access modes for (unsigned int i = 0; i < 4; ++i) { - if (info.operand[i].type != ZyDisOperandType::NONE) + if (info.operand[i].type != OperandType::NONE) { - info.operand[i].access_mode = ZyDisOperandAccessMode::READ; + info.operand[i].access_mode = OperandAccessMode::READ; if (i == 0) { - if (info.instrDefinition->flags & IDF_OPERAND1_WRITE) + if (info.instrDefinition->flags& IDF_OPERAND1_WRITE) { - info.operand[0].access_mode = ZyDisOperandAccessMode::WRITE; - } else if (info.instrDefinition->flags & IDF_OPERAND1_READWRITE) + info.operand[0].access_mode = OperandAccessMode::WRITE; + } else if (info.instrDefinition->flags& IDF_OPERAND1_READWRITE) { - info.operand[0].access_mode = ZyDisOperandAccessMode::READWRITE; + info.operand[0].access_mode = OperandAccessMode::READWRITE; } } else if (i == 1) { - if (info.instrDefinition->flags & IDF_OPERAND2_WRITE) + if (info.instrDefinition->flags& IDF_OPERAND2_WRITE) { - info.operand[1].access_mode = ZyDisOperandAccessMode::WRITE; - } else if (info.instrDefinition->flags & IDF_OPERAND2_READWRITE) + info.operand[1].access_mode = OperandAccessMode::WRITE; + } else if (info.instrDefinition->flags& IDF_OPERAND2_READWRITE) { - info.operand[1].access_mode = ZyDisOperandAccessMode::READWRITE; + info.operand[1].access_mode = OperandAccessMode::READWRITE; } } } @@ -527,17 +535,17 @@ bool ZyDisInstructionDecoder::decodeOperands(ZyDisInstructionInfo &info) return true; } -bool ZyDisInstructionDecoder::decodeOperand(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, - ZyDisDefinedOperandType operandType, ZyDisDefinedOperandSize operandSize) +bool InstructionDecoder::decodeOperand(InstructionInfo& info, OperandInfo& operand, + DefinedOperandType operandType, DefinedOperandSize operandSize) { using namespace Internal; - operand.type = ZyDisOperandType::NONE; + operand.type = OperandType::NONE; switch (operandType) { - case ZyDisDefinedOperandType::NONE: + case DefinedOperandType::NONE: break; - case ZyDisDefinedOperandType::A: - operand.type = ZyDisOperandType::POINTER; + case DefinedOperandType::A: + operand.type = OperandType::POINTER; if (info.operand_mode == 16) { operand.size = 32; @@ -548,109 +556,111 @@ bool ZyDisInstructionDecoder::decodeOperand(ZyDisInstructionInfo &info, ZyDisOpe operand.lval.ptr.off = inputNext(info); operand.lval.ptr.seg = inputNext(info); } - if ((!operand.lval.ptr.off || !operand.lval.ptr.seg) && (info.flags & IF_ERROR_MASK)) + if ((!operand.lval.ptr.off || !operand.lval.ptr.seg)&& (info.flags& IF_ERROR_MASK)) { return false; } break; - case ZyDisDefinedOperandType::C: + case DefinedOperandType::C: if (!decodeModrm(info)) { return false; } return decodeRegisterOperand(info, operand, RegisterClass::CONTROL, info.modrm_reg_ext, operandSize); - case ZyDisDefinedOperandType::D: + case DefinedOperandType::D: if (!decodeModrm(info)) { return false; } return decodeRegisterOperand(info, operand, RegisterClass::DEBUG, info.modrm_reg_ext, operandSize); - case ZyDisDefinedOperandType::F: + case DefinedOperandType::F: // TODO: FAR flag - case ZyDisDefinedOperandType::M: + case DefinedOperandType::M: // ModR/M byte may refer only to a register if (info.modrm_mod == 3) { info.flags |= IF_ERROR_OPERAND; return false; } - case ZyDisDefinedOperandType::E: + case DefinedOperandType::E: return decodeRegisterMemoryOperand(info, operand, RegisterClass::GENERAL_PURPOSE, operandSize); - case ZyDisDefinedOperandType::G: + case DefinedOperandType::G: if (!decodeModrm(info)) { return false; } return decodeRegisterOperand(info, operand, RegisterClass::GENERAL_PURPOSE, info.modrm_reg_ext, operandSize); - case ZyDisDefinedOperandType::H: + case DefinedOperandType::H: assert(info.vex_op != 0); - return decodeRegisterOperand(info, operand, RegisterClass::XMM, (0xF & ~info.vex_vvvv), + return decodeRegisterOperand(info, operand, RegisterClass::XMM, (0xF& ~info.vex_vvvv), operandSize); - case ZyDisDefinedOperandType::sI: + case DefinedOperandType::sI: operand.signed_lval = true; - case ZyDisDefinedOperandType::I: + case DefinedOperandType::I: return decodeImmediate(info, operand, operandSize); - case ZyDisDefinedOperandType::I1: - operand.type = ZyDisOperandType::CONSTANT; + case DefinedOperandType::I1: + operand.type = OperandType::CONSTANT; operand.lval.udword = 1; break; - case ZyDisDefinedOperandType::J: + case DefinedOperandType::J: if (!decodeImmediate(info, operand, operandSize)) { return false; } - operand.type = ZyDisOperandType::REL_IMMEDIATE; + operand.type = OperandType::REL_IMMEDIATE; operand.signed_lval = true; info.flags |= IF_RELATIVE; break; - case ZyDisDefinedOperandType::L: + case DefinedOperandType::L: { assert(info.vex_op != 0); uint8_t imm = inputNext(info); - if (!imm && (info.flags & IF_ERROR_MASK)) + if (!imm&& (info.flags& IF_ERROR_MASK)) { return false; } - uint8_t mask = (m_disassemblerMode == ZyDisDisassemblerMode::M64BIT) ? 0xF : 0x7; - return decodeRegisterOperand(info, operand, RegisterClass::XMM, mask & (imm >> 4), + uint8_t mask = (m_disassemblerMode == DisassemblerMode::M64BIT) ? 0xF : 0x7; + return decodeRegisterOperand(info, operand, RegisterClass::XMM, mask& (imm >> 4), operandSize); } - case ZyDisDefinedOperandType::MR: + case DefinedOperandType::MR: return decodeRegisterMemoryOperand(info, operand, RegisterClass::GENERAL_PURPOSE, info.modrm_mod == 3 ? - VDEGetComplexOperandRegSize(operandSize) : VDEGetComplexOperandMemSize(operandSize)); - case ZyDisDefinedOperandType::MU: + GetComplexOperandRegSize(operandSize) : + GetComplexOperandMemSize(operandSize)); + case DefinedOperandType::MU: return decodeRegisterMemoryOperand(info, operand, RegisterClass::XMM, info.modrm_mod == 3 ? - VDEGetComplexOperandRegSize(operandSize) : VDEGetComplexOperandMemSize(operandSize)); - case ZyDisDefinedOperandType::N: + GetComplexOperandRegSize(operandSize) : + GetComplexOperandMemSize(operandSize)); + case DefinedOperandType::N: // ModR/M byte may refer only to memory if (info.modrm_mod != 3) { info.flags |= IF_ERROR_OPERAND; return false; } - case ZyDisDefinedOperandType::Q: + case DefinedOperandType::Q: return decodeRegisterMemoryOperand(info, operand, RegisterClass::MMX, operandSize); - case ZyDisDefinedOperandType::O: - operand.type = ZyDisOperandType::MEMORY; - operand.base = ZyDisRegister::NONE; - operand.index = ZyDisRegister::NONE; + case DefinedOperandType::O: + operand.type = OperandType::MEMORY; + operand.base = Register::NONE; + operand.index = Register::NONE; operand.scale = 0; operand.size = getEffectiveOperandSize(info, operandSize); return decodeDisplacement(info, operand, info.address_mode); - case ZyDisDefinedOperandType::P: + case DefinedOperandType::P: if (!decodeModrm(info)) { return false; } return decodeRegisterOperand(info, operand, RegisterClass::MMX, info.modrm_reg_ext, operandSize); - case ZyDisDefinedOperandType::R: + case DefinedOperandType::R: // ModR/M byte may refer only to memory if (info.modrm_mod != 3) { @@ -659,91 +669,91 @@ bool ZyDisInstructionDecoder::decodeOperand(ZyDisInstructionInfo &info, ZyDisOpe } return decodeRegisterMemoryOperand(info, operand, RegisterClass::GENERAL_PURPOSE, operandSize); - case ZyDisDefinedOperandType::S: + case DefinedOperandType::S: if (!decodeModrm(info)) { return false; } return decodeRegisterOperand(info, operand, RegisterClass::SEGMENT, info.modrm_reg_ext, operandSize); - case ZyDisDefinedOperandType::U: + case DefinedOperandType::U: // ModR/M byte may refer only to memory if (info.modrm_mod != 3) { info.flags |= IF_ERROR_OPERAND; return false; } - case ZyDisDefinedOperandType::W: + case DefinedOperandType::W: return decodeRegisterMemoryOperand(info, operand, RegisterClass::XMM, operandSize); - case ZyDisDefinedOperandType::V: + case DefinedOperandType::V: if (!decodeModrm(info)) { return false; } return decodeRegisterOperand(info, operand, RegisterClass::XMM, info.modrm_reg_ext, operandSize); - case ZyDisDefinedOperandType::R0: - case ZyDisDefinedOperandType::R1: - case ZyDisDefinedOperandType::R2: - case ZyDisDefinedOperandType::R3: - case ZyDisDefinedOperandType::R4: - case ZyDisDefinedOperandType::R5: - case ZyDisDefinedOperandType::R6: - case ZyDisDefinedOperandType::R7: + case DefinedOperandType::R0: + case DefinedOperandType::R1: + case DefinedOperandType::R2: + case DefinedOperandType::R3: + case DefinedOperandType::R4: + case DefinedOperandType::R5: + case DefinedOperandType::R6: + case DefinedOperandType::R7: return decodeRegisterOperand(info, operand, RegisterClass::GENERAL_PURPOSE, ((info.eff_rexvex_b << 3) | (static_cast(operandType) - - static_cast(ZyDisDefinedOperandType::R0))), operandSize); - case ZyDisDefinedOperandType::AL: - case ZyDisDefinedOperandType::AX: - case ZyDisDefinedOperandType::EAX: - case ZyDisDefinedOperandType::RAX: + static_cast(DefinedOperandType::R0))), operandSize); + case DefinedOperandType::AL: + case DefinedOperandType::AX: + case DefinedOperandType::EAX: + case DefinedOperandType::RAX: return decodeRegisterOperand(info, operand, RegisterClass::GENERAL_PURPOSE, 0, operandSize); - case ZyDisDefinedOperandType::CL: - case ZyDisDefinedOperandType::CX: - case ZyDisDefinedOperandType::ECX: - case ZyDisDefinedOperandType::RCX: + case DefinedOperandType::CL: + case DefinedOperandType::CX: + case DefinedOperandType::ECX: + case DefinedOperandType::RCX: return decodeRegisterOperand(info, operand, RegisterClass::GENERAL_PURPOSE, 1, operandSize); - case ZyDisDefinedOperandType::DL: - case ZyDisDefinedOperandType::DX: - case ZyDisDefinedOperandType::EDX: - case ZyDisDefinedOperandType::RDX: + case DefinedOperandType::DL: + case DefinedOperandType::DX: + case DefinedOperandType::EDX: + case DefinedOperandType::RDX: return decodeRegisterOperand(info, operand, RegisterClass::GENERAL_PURPOSE, 2, operandSize); - case ZyDisDefinedOperandType::ES: - case ZyDisDefinedOperandType::CS: - case ZyDisDefinedOperandType::SS: - case ZyDisDefinedOperandType::DS: - case ZyDisDefinedOperandType::FS: - case ZyDisDefinedOperandType::GS: - if (m_disassemblerMode == ZyDisDisassemblerMode::M64BIT) + case DefinedOperandType::ES: + case DefinedOperandType::CS: + case DefinedOperandType::SS: + case DefinedOperandType::DS: + case DefinedOperandType::FS: + case DefinedOperandType::GS: + if (m_disassemblerMode == DisassemblerMode::M64BIT) { - if ((operandType != ZyDisDefinedOperandType::FS) && - (operandType != ZyDisDefinedOperandType::GS)) + if ((operandType != DefinedOperandType::FS)&& + (operandType != DefinedOperandType::GS)) { info.flags |= IF_ERROR_OPERAND; return false; } } - operand.type = ZyDisOperandType::REGISTER; - operand.base = static_cast((static_cast(operandType) - - static_cast(ZyDisDefinedOperandType::ES)) + - static_cast(ZyDisRegister::ES)); + operand.type = OperandType::REGISTER; + operand.base = static_cast((static_cast(operandType) - + static_cast(DefinedOperandType::ES)) + + static_cast(Register::ES)); operand.size = 16; break; - case ZyDisDefinedOperandType::ST0: - case ZyDisDefinedOperandType::ST1: - case ZyDisDefinedOperandType::ST2: - case ZyDisDefinedOperandType::ST3: - case ZyDisDefinedOperandType::ST4: - case ZyDisDefinedOperandType::ST5: - case ZyDisDefinedOperandType::ST6: - case ZyDisDefinedOperandType::ST7: - operand.type = ZyDisOperandType::REGISTER; - operand.base = static_cast((static_cast(operandType) - - static_cast(ZyDisDefinedOperandType::ST0)) + - static_cast(ZyDisRegister::ST0)); + case DefinedOperandType::ST0: + case DefinedOperandType::ST1: + case DefinedOperandType::ST2: + case DefinedOperandType::ST3: + case DefinedOperandType::ST4: + case DefinedOperandType::ST5: + case DefinedOperandType::ST6: + case DefinedOperandType::ST7: + operand.type = OperandType::REGISTER; + operand.base = static_cast((static_cast(operandType) - + static_cast(DefinedOperandType::ST0)) + + static_cast(Register::ST0)); operand.size = 80; break; default: @@ -752,64 +762,64 @@ bool ZyDisInstructionDecoder::decodeOperand(ZyDisInstructionInfo &info, ZyDisOpe return true; } -void ZyDisInstructionDecoder::resolveOperandAndAddressMode(ZyDisInstructionInfo &info) const +void InstructionDecoder::resolveOperandAndAddressMode(InstructionInfo& info) const { assert(info.instrDefinition); switch (m_disassemblerMode) { - case ZyDisDisassemblerMode::M16BIT: - info.operand_mode = (info.flags & IF_PREFIX_OPERAND_SIZE) ? 32 : 16; - info.address_mode = (info.flags & IF_PREFIX_ADDRESS_SIZE) ? 32 : 16; + case DisassemblerMode::M16BIT: + info.operand_mode = (info.flags& IF_PREFIX_OPERAND_SIZE) ? 32 : 16; + info.address_mode = (info.flags& IF_PREFIX_ADDRESS_SIZE) ? 32 : 16; break; - case ZyDisDisassemblerMode::M32BIT: - info.operand_mode = (info.flags & IF_PREFIX_OPERAND_SIZE) ? 16 : 32; - info.address_mode = (info.flags & IF_PREFIX_ADDRESS_SIZE) ? 16 : 32; + case DisassemblerMode::M32BIT: + info.operand_mode = (info.flags& IF_PREFIX_OPERAND_SIZE) ? 16 : 32; + info.address_mode = (info.flags& IF_PREFIX_ADDRESS_SIZE) ? 16 : 32; break; - case ZyDisDisassemblerMode::M64BIT: + case DisassemblerMode::M64BIT: if (info.eff_rexvex_w) { info.operand_mode = 64; - } else if ((info.flags & IF_PREFIX_OPERAND_SIZE)) + } else if ((info.flags& IF_PREFIX_OPERAND_SIZE)) { info.operand_mode = 16; } else { - info.operand_mode = (info.instrDefinition->flags & IDF_DEFAULT_64) ? 64 : 32; + info.operand_mode = (info.instrDefinition->flags& IDF_DEFAULT_64) ? 64 : 32; } - info.address_mode = (info.flags & IF_PREFIX_ADDRESS_SIZE) ? 32 : 64; + info.address_mode = (info.flags& IF_PREFIX_ADDRESS_SIZE) ? 32 : 64; break; default: assert(0); } } -void ZyDisInstructionDecoder::calculateEffectiveRexVexValues(ZyDisInstructionInfo &info) const +void InstructionDecoder::calculateEffectiveRexVexValues(InstructionInfo& info) const { assert(info.instrDefinition); uint8_t rex = info.rex; - if (info.flags & IF_PREFIX_VEX) + if (info.flags& IF_PREFIX_VEX) { switch (info.vex_op) { case 0xC4: - rex = ((~(info.vex_b1 >> 5) & 0x07) | ((info.vex_b2 >> 4) & 0x08)); + rex = ((~(info.vex_b1 >> 5)& 0x07) | ((info.vex_b2 >> 4)& 0x08)); break; case 0xC5: - rex = (~(info.vex_b1 >> 5)) & 4; + rex = (~(info.vex_b1 >> 5))& 4; break; default: assert(0); } } - rex &= (info.instrDefinition->flags & 0x000F); - info.eff_rexvex_w = (rex >> 3) & 0x01; - info.eff_rexvex_r = (rex >> 2) & 0x01; - info.eff_rexvex_x = (rex >> 1) & 0x01; - info.eff_rexvex_b = (rex >> 0) & 0x01; - info.eff_vex_l = info.vex_l && (info.instrDefinition->flags & IDF_ACCEPTS_VEXL); + rex &= (info.instrDefinition->flags& 0x000F); + info.eff_rexvex_w = (rex >> 3)& 0x01; + info.eff_rexvex_r = (rex >> 2)& 0x01; + info.eff_rexvex_x = (rex >> 1)& 0x01; + info.eff_rexvex_b = (rex >> 0)& 0x01; + info.eff_vex_l = info.vex_l&& (info.instrDefinition->flags& IDF_ACCEPTS_VEXL); } -bool ZyDisInstructionDecoder::decodePrefixes(ZyDisInstructionInfo &info) +bool InstructionDecoder::decodePrefixes(InstructionInfo& info) { bool done = false; do @@ -831,27 +841,27 @@ bool ZyDisInstructionDecoder::decodePrefixes(ZyDisInstructionInfo &info) break; case 0x2E: info.flags |= IF_PREFIX_SEGMENT; - info.segment = ZyDisRegister::CS; + info.segment = Register::CS; break; case 0x36: info.flags |= IF_PREFIX_SEGMENT; - info.segment = ZyDisRegister::SS; + info.segment = Register::SS; break; case 0x3E: info.flags |= IF_PREFIX_SEGMENT; - info.segment = ZyDisRegister::DS; + info.segment = Register::DS; break; case 0x26: info.flags |= IF_PREFIX_SEGMENT; - info.segment = ZyDisRegister::ES; + info.segment = Register::ES; break; case 0x64: info.flags |= IF_PREFIX_SEGMENT; - info.segment = ZyDisRegister::FS; + info.segment = Register::FS; break; case 0x65: info.flags |= IF_PREFIX_SEGMENT; - info.segment = ZyDisRegister::GS; + info.segment = Register::GS; break; case 0x66: info.flags |= IF_PREFIX_OPERAND_SIZE; @@ -860,8 +870,8 @@ bool ZyDisInstructionDecoder::decodePrefixes(ZyDisInstructionInfo &info) info.flags |= IF_PREFIX_ADDRESS_SIZE; break; default: - if ((m_disassemblerMode == ZyDisDisassemblerMode::M64BIT) && - (inputCurrent() & 0xF0) == 0x40) + if ((m_disassemblerMode == DisassemblerMode::M64BIT)&& + (inputCurrent()& 0xF0) == 0x40) { info.flags |= IF_PREFIX_REX; info.rex = inputCurrent(); @@ -874,7 +884,7 @@ bool ZyDisInstructionDecoder::decodePrefixes(ZyDisInstructionInfo &info) // Increase the input offset, if a prefix was found if (!done) { - if (!inputNext(info) && (info.flags & IF_ERROR_MASK)) + if (!inputNext(info)&& (info.flags& IF_ERROR_MASK)) { return false; } @@ -882,21 +892,21 @@ bool ZyDisInstructionDecoder::decodePrefixes(ZyDisInstructionInfo &info) } while (!done); // TODO: Check for multiple prefixes of the same group // Parse REX Prefix - if (info.flags & IF_PREFIX_REX) + if (info.flags& IF_PREFIX_REX) { - info.rex_w = (info.rex >> 3) & 0x01; - info.rex_r = (info.rex >> 2) & 0x01; - info.rex_x = (info.rex >> 1) & 0x01; - info.rex_b = (info.rex >> 0) & 0x01; + info.rex_w = (info.rex >> 3)& 0x01; + info.rex_r = (info.rex >> 2)& 0x01; + info.rex_x = (info.rex >> 1)& 0x01; + info.rex_b = (info.rex >> 0)& 0x01; } return true; } -bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) +bool InstructionDecoder::decodeOpcode(InstructionInfo& info) { using namespace Internal; // Read first opcode byte - if (!inputNext(info) && (info.flags & IF_ERROR_MASK)) + if (!inputNext(info)&& (info.flags& IF_ERROR_MASK)) { return false; } @@ -904,27 +914,28 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) info.opcode[0] = inputCurrent(); info.opcode_length = 1; // Iterate through opcode tree - ZyDisOpcodeTreeNode node = VDEGetOpcodeTreeChild(VDEGetOpcodeTreeRoot(), inputCurrent()); - ZyDisOpcodeTreeNodeType nodeType; + OpcodeTreeNode node = GetOpcodeTreeChild(GetOpcodeTreeRoot(), inputCurrent()); + OpcodeTreeNodeType nodeType; do { uint16_t index = 0; - nodeType = VDEGetOpcodeNodeType(node); + nodeType = GetOpcodeNodeType(node); switch (nodeType) { - case ZyDisOpcodeTreeNodeType::INSTRUCTION_DEFINITION: + case OpcodeTreeNodeType::INSTRUCTION_DEFINITION: { // Check for invalid instruction - if (VDEGetOpcodeNodeValue(node) == 0) + if (GetOpcodeNodeValue(node) == 0) { info.flags |= IF_ERROR_INVALID; return false; } // Get instruction definition - const ZyDisInstructionDefinition *instrDefinition = VDEGetInstructionDefinition(node); + const InstructionDefinition *instrDefinition = + GetInstructionDefinition(node); // Check for invalid 64 bit instruction - if ((m_disassemblerMode == ZyDisDisassemblerMode::M64BIT) && - (instrDefinition->flags & IDF_INVALID_64)) + if ((m_disassemblerMode == DisassemblerMode::M64BIT)&& + (instrDefinition->flags& IDF_INVALID_64)) { info.flags |= IF_ERROR_INVALID_64; return false; @@ -943,20 +954,20 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) } } return true; - case ZyDisOpcodeTreeNodeType::TABLE: + case OpcodeTreeNodeType::TABLE: // Read next opcode byte - if (!inputNext(info) && (info.flags & IF_ERROR_MASK)) + if (!inputNext(info)&& (info.flags& IF_ERROR_MASK)) { return false; } // Update instruction info - assert((info.opcode_length > 0) && (info.opcode_length < 3)); + assert((info.opcode_length > 0)&& (info.opcode_length < 3)); info.opcode[info.opcode_length] = inputCurrent(); info.opcode_length++; // Set child node index for next iteration index = inputCurrent(); break; - case ZyDisOpcodeTreeNodeType::MODRM_MOD: + case OpcodeTreeNodeType::MODRM_MOD: // Decode modrm byte if (!decodeModrm(info)) { @@ -964,7 +975,7 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) } index = (info.modrm_mod == 0x3) ? 1 : 0; break; - case ZyDisOpcodeTreeNodeType::MODRM_REG: + case OpcodeTreeNodeType::MODRM_REG: // Decode modrm byte if (!decodeModrm(info)) { @@ -972,7 +983,7 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) } index = info.modrm_reg; break; - case ZyDisOpcodeTreeNodeType::MODRM_RM: + case OpcodeTreeNodeType::MODRM_RM: // Decode modrm byte if (!decodeModrm(info)) { @@ -980,23 +991,23 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) } index = info.modrm_rm; break; - case ZyDisOpcodeTreeNodeType::MANDATORY: + case OpcodeTreeNodeType::MANDATORY: // Check if there are any prefixes present - if (info.flags & IF_PREFIX_REP) + if (info.flags& IF_PREFIX_REP) { index = 1; // F2 - } else if (info.flags & IF_PREFIX_REPNE) + } else if (info.flags& IF_PREFIX_REPNE) { index = 2; // F3 - } else if (info.flags & IF_PREFIX_OPERAND_SIZE) + } else if (info.flags& IF_PREFIX_OPERAND_SIZE) { index = 3; // 66 } - if (VDEGetOpcodeTreeChild(node, index) == 0) + if (GetOpcodeTreeChild(node, index) == 0) { index = 0; } - if (index && (VDEGetOpcodeTreeChild(node, index) != 0)) + if (index&& (GetOpcodeTreeChild(node, index) != 0)) { // Remove REP and REPNE prefix info.flags &= ~IF_PREFIX_REP; @@ -1009,7 +1020,7 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) } } break; - case ZyDisOpcodeTreeNodeType::X87: + case OpcodeTreeNodeType::X87: // Decode modrm byte if (!decodeModrm(info)) { @@ -1017,64 +1028,64 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) } index = info.modrm - 0xC0; break; - case ZyDisOpcodeTreeNodeType::ADDRESS_SIZE: + case OpcodeTreeNodeType::ADDRESS_SIZE: switch (m_disassemblerMode) { - case ZyDisDisassemblerMode::M16BIT: - index = (info.flags & IF_PREFIX_ADDRESS_SIZE) ? 1 : 0; + case DisassemblerMode::M16BIT: + index = (info.flags& IF_PREFIX_ADDRESS_SIZE) ? 1 : 0; break; - case ZyDisDisassemblerMode::M32BIT: - index = (info.flags & IF_PREFIX_ADDRESS_SIZE) ? 0 : 1; + case DisassemblerMode::M32BIT: + index = (info.flags& IF_PREFIX_ADDRESS_SIZE) ? 0 : 1; break; - case ZyDisDisassemblerMode::M64BIT: - index = (info.flags & IF_PREFIX_ADDRESS_SIZE) ? 1 : 2; + case DisassemblerMode::M64BIT: + index = (info.flags& IF_PREFIX_ADDRESS_SIZE) ? 1 : 2; break; default: assert(0); } break; - case ZyDisOpcodeTreeNodeType::OPERAND_SIZE: + case OpcodeTreeNodeType::OPERAND_SIZE: switch (m_disassemblerMode) { - case ZyDisDisassemblerMode::M16BIT: - index = (info.flags & IF_PREFIX_OPERAND_SIZE) ? 1 : 0; + case DisassemblerMode::M16BIT: + index = (info.flags& IF_PREFIX_OPERAND_SIZE) ? 1 : 0; break; - case ZyDisDisassemblerMode::M32BIT: - index = (info.flags & IF_PREFIX_OPERAND_SIZE) ? 0 : 1; + case DisassemblerMode::M32BIT: + index = (info.flags& IF_PREFIX_OPERAND_SIZE) ? 0 : 1; break; - case ZyDisDisassemblerMode::M64BIT: - index = (info.rex_w) ? 2 : ((info.flags & IF_PREFIX_OPERAND_SIZE) ? 0 : 1); + case DisassemblerMode::M64BIT: + index = (info.rex_w) ? 2 : ((info.flags& IF_PREFIX_OPERAND_SIZE) ? 0 : 1); break; default: assert(0); } break; - case ZyDisOpcodeTreeNodeType::MODE: - index = (m_disassemblerMode != ZyDisDisassemblerMode::M64BIT) ? 0 : 1; + case OpcodeTreeNodeType::MODE: + index = (m_disassemblerMode != DisassemblerMode::M64BIT) ? 0 : 1; break; - case ZyDisOpcodeTreeNodeType::VENDOR: + case OpcodeTreeNodeType::VENDOR: switch (m_preferredVendor) { - case ZyDisInstructionSetVendor::ANY: - index = (VDEGetOpcodeTreeChild(node, 0) != 0) ? 0 : 1; + case InstructionSetVendor::ANY: + index = (GetOpcodeTreeChild(node, 0) != 0) ? 0 : 1; break; - case ZyDisInstructionSetVendor::INTEL: + case InstructionSetVendor::INTEL: index = 1; break; - case ZyDisInstructionSetVendor::AMD: + case InstructionSetVendor::AMD: index = 0; break; default: assert(0); } break; - case ZyDisOpcodeTreeNodeType::AMD3DNOW: + case OpcodeTreeNodeType::AMD3DNOW: { // As all 3dnow instructions got the same operands and flag definitions, we just // decode a random instruction and determine the specific opcode later. - assert(VDEGetOpcodeTreeChild(node, 0x0C) != 0); - const ZyDisInstructionDefinition *instrDefinition = - VDEGetInstructionDefinition(VDEGetOpcodeTreeChild(node, 0x0C)); + assert(GetOpcodeTreeChild(node, 0x0C) != 0); + const InstructionDefinition *instrDefinition = + GetInstructionDefinition(GetOpcodeTreeChild(node, 0x0C)); // Update instruction info info.instrDefinition = instrDefinition; info.mnemonic = instrDefinition->mnemonic; @@ -1089,15 +1100,15 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) } // Read the actual 3dnow opcode info.opcode[2] = inputNext(info); - if (!info.opcode[2] && (info.flags & IF_ERROR_MASK)) + if (!info.opcode[2]&& (info.flags& IF_ERROR_MASK)) { return false; } // Update instruction info instrDefinition = - VDEGetInstructionDefinition(VDEGetOpcodeTreeChild(node, info.opcode[2])); + GetInstructionDefinition(GetOpcodeTreeChild(node, info.opcode[2])); if (!instrDefinition || - (instrDefinition->mnemonic == ZyDisInstructionMnemonic::INVALID)) + (instrDefinition->mnemonic == InstructionMnemonic::INVALID)) { info.flags |= IF_ERROR_INVALID; return false; @@ -1107,37 +1118,37 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) // Update operand access modes for (unsigned int i = 0; i < 4; ++i) { - if (info.operand[i].type != ZyDisOperandType::NONE) + if (info.operand[i].type != OperandType::NONE) { - info.operand[i - 1].access_mode = ZyDisOperandAccessMode::READ; + info.operand[i - 1].access_mode = OperandAccessMode::READ; } } - if (info.operand[0].type != ZyDisOperandType::NONE) + if (info.operand[0].type != OperandType::NONE) { - if (info.instrDefinition->flags & IDF_OPERAND1_WRITE) + if (info.instrDefinition->flags& IDF_OPERAND1_WRITE) { - info.operand[0].access_mode = ZyDisOperandAccessMode::WRITE; - } else if (info.instrDefinition->flags & IDF_OPERAND1_READWRITE) + info.operand[0].access_mode = OperandAccessMode::WRITE; + } else if (info.instrDefinition->flags& IDF_OPERAND1_READWRITE) { - info.operand[0].access_mode = ZyDisOperandAccessMode::READWRITE; + info.operand[0].access_mode = OperandAccessMode::READWRITE; } } - if (info.operand[1].type != ZyDisOperandType::NONE) + if (info.operand[1].type != OperandType::NONE) { - if (info.instrDefinition->flags & IDF_OPERAND2_WRITE) + if (info.instrDefinition->flags& IDF_OPERAND2_WRITE) { - info.operand[1].access_mode = ZyDisOperandAccessMode::WRITE; - } else if (info.instrDefinition->flags & IDF_OPERAND2_READWRITE) + info.operand[1].access_mode = OperandAccessMode::WRITE; + } else if (info.instrDefinition->flags& IDF_OPERAND2_READWRITE) { - info.operand[1].access_mode = ZyDisOperandAccessMode::READWRITE; + info.operand[1].access_mode = OperandAccessMode::READWRITE; } } // Terminate loop return true; } - case ZyDisOpcodeTreeNodeType::VEX: - if ((m_disassemblerMode == ZyDisDisassemblerMode::M64BIT) || - (((inputCurrent() >> 6) & 0x03) == 0x03)) + case OpcodeTreeNodeType::VEX: + if ((m_disassemblerMode == DisassemblerMode::M64BIT) || + (((inputCurrent() >> 6)& 0x03) == 0x03)) { // Decode vex prefix if (!decodeVex(info)) @@ -1169,35 +1180,35 @@ bool ZyDisInstructionDecoder::decodeOpcode(ZyDisInstructionInfo &info) index = 0; } break; - case ZyDisOpcodeTreeNodeType::VEXW: - assert(info.flags & IF_PREFIX_VEX); + case OpcodeTreeNodeType::VEXW: + assert(info.flags& IF_PREFIX_VEX); index = info.vex_w; break; - case ZyDisOpcodeTreeNodeType::VEXL: - assert(info.flags & IF_PREFIX_VEX); + case OpcodeTreeNodeType::VEXL: + assert(info.flags& IF_PREFIX_VEX); index = info.vex_l; break; default: assert(0); } - node = VDEGetOpcodeTreeChild(node, index); - } while (nodeType != ZyDisOpcodeTreeNodeType::INSTRUCTION_DEFINITION); + node = GetOpcodeTreeChild(node, index); + } while (nodeType != OpcodeTreeNodeType::INSTRUCTION_DEFINITION); return false; } -ZyDisInstructionDecoder::ZyDisInstructionDecoder() - : m_dataSource(nullptr) - , m_disassemblerMode(ZyDisDisassemblerMode::M32BIT) - , m_preferredVendor(ZyDisInstructionSetVendor::ANY) +InstructionDecoder::InstructionDecoder() + : m_input(nullptr) + , m_disassemblerMode(DisassemblerMode::M32BIT) + , m_preferredVendor(InstructionSetVendor::ANY) , m_instructionPointer(0) { } -ZyDisInstructionDecoder::ZyDisInstructionDecoder(ZyDisBaseDataSource *input, - ZyDisDisassemblerMode disassemblerMode, ZyDisInstructionSetVendor preferredVendor, +InstructionDecoder::InstructionDecoder(BaseInput *input, + DisassemblerMode disassemblerMode, InstructionSetVendor preferredVendor, uint64_t instructionPointer) - : m_dataSource(input) + : m_input(input) , m_disassemblerMode(disassemblerMode) , m_preferredVendor(preferredVendor) , m_instructionPointer(instructionPointer) @@ -1205,20 +1216,20 @@ ZyDisInstructionDecoder::ZyDisInstructionDecoder(ZyDisBaseDataSource *input, } -bool ZyDisInstructionDecoder::decodeInstruction(ZyDisInstructionInfo &info) +bool InstructionDecoder::decodeInstruction(InstructionInfo& info) { // Clear instruction info memset(&info, 0, sizeof(info)); // Set disassembler mode flags switch (m_disassemblerMode) { - case ZyDisDisassemblerMode::M16BIT: + case DisassemblerMode::M16BIT: info.flags |= IF_DISASSEMBLER_MODE_16; break; - case ZyDisDisassemblerMode::M32BIT: + case DisassemblerMode::M32BIT: info.flags |= IF_DISASSEMBLER_MODE_32; break; - case ZyDisDisassemblerMode::M64BIT: + case DisassemblerMode::M64BIT: info.flags |= IF_DISASSEMBLER_MODE_64; break; default: @@ -1232,34 +1243,34 @@ bool ZyDisInstructionDecoder::decodeInstruction(ZyDisInstructionInfo &info) goto DecodeError; } // SWAPGS is only valid in 64 bit mode - if ((info.mnemonic == ZyDisInstructionMnemonic::SWAPGS) && - (m_disassemblerMode != ZyDisDisassemblerMode::M64BIT)) + if ((info.mnemonic == InstructionMnemonic::SWAPGS)&& + (m_disassemblerMode != DisassemblerMode::M64BIT)) { info.flags &= IF_ERROR_INVALID; goto DecodeError; } // Handle aliases - if (info.mnemonic == ZyDisInstructionMnemonic::XCHG) + if (info.mnemonic == InstructionMnemonic::XCHG) { - if ((info.operand[0].type == ZyDisOperandType::REGISTER && - info.operand[0].base == ZyDisRegister::AX && - info.operand[1].type == ZyDisOperandType::REGISTER && - info.operand[1].base == ZyDisRegister::AX) || - (info.operand[0].type == ZyDisOperandType::REGISTER && - info.operand[0].base == ZyDisRegister::EAX && - info.operand[1].type == ZyDisOperandType::REGISTER && - info.operand[1].base == ZyDisRegister::EAX)) + if ((info.operand[0].type == OperandType::REGISTER&& + info.operand[0].base == Register::AX&& + info.operand[1].type == OperandType::REGISTER&& + info.operand[1].base == Register::AX) || + (info.operand[0].type == OperandType::REGISTER&& + info.operand[0].base == Register::EAX&& + info.operand[1].type == OperandType::REGISTER&& + info.operand[1].base == Register::EAX)) { - info.mnemonic = ZyDisInstructionMnemonic::NOP; - info.operand[0].type = ZyDisOperandType::NONE; - info.operand[1].type = ZyDisOperandType::NONE; - info.operand[0].access_mode = ZyDisOperandAccessMode::NA; - info.operand[1].access_mode = ZyDisOperandAccessMode::NA; + info.mnemonic = InstructionMnemonic::NOP; + info.operand[0].type = OperandType::NONE; + info.operand[1].type = OperandType::NONE; + info.operand[0].access_mode = OperandAccessMode::NA; + info.operand[1].access_mode = OperandAccessMode::NA; } } - if ((info.mnemonic == ZyDisInstructionMnemonic::NOP) && (info.flags & IF_PREFIX_REP)) + if ((info.mnemonic == InstructionMnemonic::NOP)&& (info.flags& IF_PREFIX_REP)) { - info.mnemonic = ZyDisInstructionMnemonic::PAUSE; + info.mnemonic = InstructionMnemonic::PAUSE; info.flags &= ~IF_PREFIX_REP; } // Increment instruction pointer @@ -1271,7 +1282,7 @@ DecodeError: // Increment instruction pointer. m_instructionPointer += 1; // Backup all error flags, the instruction length and the instruction address - uint32_t flags = info.flags & (IF_ERROR_MASK | 0x00000007); + uint32_t flags = info.flags& (IF_ERROR_MASK | 0x00000007); uint8_t length = info.length; uint8_t firstByte = info.data[0]; uint64_t instrAddress = info.instrAddress; @@ -1282,22 +1293,24 @@ DecodeError: info.length = length; info.data[0] = firstByte; info.instrAddress = instrAddress; - info.instrDefinition = Internal::VDEGetInstructionDefinition(0); - // Return with error, if the end of the input source was reached while decoding the - // invalid instruction - if (info.flags & IF_ERROR_END_OF_INPUT) - { - info.length = 0; - return false; - } + info.instrDefinition = Internal::GetInstructionDefinition(0); // Decrement the input position, if more than one byte was read from the input data // source while decoding the invalid instruction. if (info.length != 1) { - m_dataSource->setPosition(m_dataSource->getPosition() - info.length + 1); + m_input->setPosition(m_input->getPosition() - info.length + 1); info.length = 1; } + // Return with error, if the end of the input source was reached while decoding the + // invalid instruction + if (info.flags& IF_ERROR_END_OF_INPUT) + { + info.length = 0; + return false; + } return true; } -} +/* ============================================================================================== */ + +} \ No newline at end of file diff --git a/Bindings/Cpp/ZyDisInstructionDecoder.hpp b/Zydis/ZydisInstructionDecoder.hpp similarity index 70% rename from Bindings/Cpp/ZyDisInstructionDecoder.hpp rename to Zydis/ZydisInstructionDecoder.hpp index 1f45331..84f9355 100644 --- a/Bindings/Cpp/ZyDisInstructionDecoder.hpp +++ b/Zydis/ZydisInstructionDecoder.hpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 29. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,22 +26,24 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ -#pragma once +***************************************************************************************************/ + +#ifndef _ZYDIS_INSTRUCTIONDECODER_HPP_ +#define _ZYDIS_INSTRUCTIONDECODER_HPP_ #include #include -#include "ZyDisDisassemblerTypes.hpp" +#include "ZydisTypes.hpp" -namespace Verteron +namespace Zydis { -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* BaseInput ==================================================================================== */ /** * @brief The base class for all data-source implementations. */ -class ZyDisBaseDataSource +class BaseInput { private: uint8_t m_currentInput; @@ -66,12 +66,12 @@ protected: /** * @brief Default constructor. */ - ZyDisBaseDataSource() { }; + BaseInput() { }; public: /** * @brief Destructor. */ - virtual ~ZyDisBaseDataSource() { }; + virtual ~BaseInput() { }; public: /** * @brief Reads the next byte from the data source. This method does NOT increase the @@ -81,7 +81,7 @@ public: * @c flags field of the @c info parameter for error flags. * Possible error values are @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. */ - uint8_t inputPeek(ZyDisInstructionInfo &info); + uint8_t inputPeek(InstructionInfo& info); /** * @brief Reads the next byte from the data source. This method increases the current * input position and the @c length field of the @c info parameter. @@ -92,7 +92,7 @@ public: * @c flags field of the @c info parameter for error flags. * Possible error values are @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. */ - uint8_t inputNext(ZyDisInstructionInfo &info); + uint8_t inputNext(InstructionInfo& info); /** * @brief Reads the next byte(s) from the data source. This method increases the current * input position and the @c length field of the @c info parameter. @@ -104,7 +104,7 @@ public: * Possible error values are @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. */ template - T inputNext(ZyDisInstructionInfo &info); + T inputNext(InstructionInfo& info); /** * @brief Returns the current input byte. The current input byte is set everytime the * @c inputPeek or @c inputNext method is called. @@ -133,7 +133,7 @@ public: virtual bool setPosition(uint64_t position) = 0; }; -inline uint8_t ZyDisBaseDataSource::inputPeek(ZyDisInstructionInfo &info) +inline uint8_t BaseInput::inputPeek(InstructionInfo& info) { if (info.length == 15) { @@ -149,7 +149,7 @@ inline uint8_t ZyDisBaseDataSource::inputPeek(ZyDisInstructionInfo &info) return m_currentInput; } -inline uint8_t ZyDisBaseDataSource::inputNext(ZyDisInstructionInfo &info) +inline uint8_t BaseInput::inputNext(InstructionInfo& info) { if (info.length == 15) { @@ -168,14 +168,14 @@ inline uint8_t ZyDisBaseDataSource::inputNext(ZyDisInstructionInfo &info) } template -inline T ZyDisBaseDataSource::inputNext(ZyDisInstructionInfo &info) +inline T BaseInput::inputNext(InstructionInfo& info) { static_assert(std::is_integral::value, "integral type required"); T result = 0; for (unsigned i = 0; i < (sizeof(T) / sizeof(uint8_t)); ++i) { T b = inputNext(info); - if (!b && (info.flags & IF_ERROR_MASK)) + if (!b&& (info.flags& IF_ERROR_MASK)) { return 0; } @@ -184,20 +184,20 @@ inline T ZyDisBaseDataSource::inputNext(ZyDisInstructionInfo &info) return result; } -inline uint8_t ZyDisBaseDataSource::inputCurrent() const +inline uint8_t BaseInput::inputCurrent() const { return m_currentInput; } -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* MemoryInput ================================================================================== */ /** - * @brief A memory-buffer based data source for the @c ZyDisInstructionDecoder class. + * @brief A memory-buffer based data source for the @c InstructionDecoder class. */ -class ZyDisMemoryDataSource : public ZyDisBaseDataSource +class MemoryInput : public BaseInput { private: - const void *m_inputBuffer; + const void* m_inputBuffer; uint64_t m_inputBufferLen; uint64_t m_inputBufferPos; protected: @@ -219,7 +219,7 @@ public: * @param buffer The input buffer. * @param bufferLen The length of the input buffer. */ - ZyDisMemoryDataSource(const void* buffer, size_t bufferLen) + MemoryInput(const void* buffer, size_t bufferLen) : m_inputBuffer(buffer) , m_inputBufferLen(bufferLen) , m_inputBufferPos(0) { }; @@ -242,42 +242,42 @@ public: bool setPosition(uint64_t position) override; }; -inline uint8_t ZyDisMemoryDataSource::internalInputPeek() +inline uint8_t MemoryInput::internalInputPeek() { return *(static_cast(m_inputBuffer) + m_inputBufferPos); } -inline uint8_t ZyDisMemoryDataSource::internalInputNext() +inline uint8_t MemoryInput::internalInputNext() { ++m_inputBufferPos; return *(static_cast(m_inputBuffer) + m_inputBufferPos - 1); } -inline bool ZyDisMemoryDataSource::isEndOfInput() const +inline bool MemoryInput::isEndOfInput() const { return (m_inputBufferPos >= m_inputBufferLen); } -inline uint64_t ZyDisMemoryDataSource::getPosition() const +inline uint64_t MemoryInput::getPosition() const { return m_inputBufferPos; } -inline bool ZyDisMemoryDataSource::setPosition(uint64_t position) +inline bool MemoryInput::setPosition(uint64_t position) { m_inputBufferPos = position; return isEndOfInput(); } -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* StreamInput ================================================================================== */ /** - * @brief A stream based data source for the @c ZyDisInstructionDecoder class. + * @brief A stream based data source for the @c InstructionDecoder class. */ -class ZyDisStreamDataSource : public ZyDisBaseDataSource +class StreamInput : public BaseInput { private: - std::istream *m_inputStream; + std::istream* m_inputStream; protected: /** * @brief Reads the next byte from the data source. This method increases the current @@ -296,7 +296,7 @@ public: * @brief Constructor. * @param stream The input stream. */ - explicit ZyDisStreamDataSource(std::istream *stream) + explicit StreamInput(std::istream* stream) : m_inputStream(stream) { }; public: /** @@ -317,7 +317,7 @@ public: bool setPosition(uint64_t position) override; }; -inline uint8_t ZyDisStreamDataSource::internalInputPeek() +inline uint8_t StreamInput::internalInputPeek() { if (!m_inputStream) { @@ -326,7 +326,7 @@ inline uint8_t ZyDisStreamDataSource::internalInputPeek() return static_cast(m_inputStream->peek()); } -inline uint8_t ZyDisStreamDataSource::internalInputNext() +inline uint8_t StreamInput::internalInputNext() { if (!m_inputStream) { @@ -335,7 +335,7 @@ inline uint8_t ZyDisStreamDataSource::internalInputNext() return static_cast(m_inputStream->get()); } -inline bool ZyDisStreamDataSource::isEndOfInput() const +inline bool StreamInput::isEndOfInput() const { if (!m_inputStream) { @@ -346,7 +346,7 @@ inline bool ZyDisStreamDataSource::isEndOfInput() const return !m_inputStream->good(); } -inline uint64_t ZyDisStreamDataSource::getPosition() const +inline uint64_t StreamInput::getPosition() const { if (!m_inputStream) { @@ -355,7 +355,7 @@ inline uint64_t ZyDisStreamDataSource::getPosition() const return m_inputStream->tellg(); } -inline bool ZyDisStreamDataSource::setPosition(uint64_t position) +inline bool StreamInput::setPosition(uint64_t position) { if (!m_inputStream) { @@ -365,12 +365,12 @@ inline bool ZyDisStreamDataSource::setPosition(uint64_t position) return isEndOfInput(); } -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* Enums ======================================================================================== */ /** * @brief Values that represent a disassembler mode. */ -enum class ZyDisDisassemblerMode : uint8_t +enum class DisassemblerMode : uint8_t { M16BIT, M32BIT, @@ -380,18 +380,20 @@ enum class ZyDisDisassemblerMode : uint8_t /** * @brief Values that represent an instruction-set vendor. */ -enum class ZyDisInstructionSetVendor : uint8_t +enum class InstructionSetVendor : uint8_t { ANY, INTEL, AMD }; +/* InstructionDecoder =========================================================================== */ + /** - * @brief The @c ZyDisInstructionDecoder class decodes x86/x86-64 assembly instructions from a + * @brief The @c InstructionDecoder class decodes x86/x86-64 assembly instructions from a * given data source. */ -class ZyDisInstructionDecoder +class InstructionDecoder { private: enum class RegisterClass : uint8_t @@ -404,10 +406,10 @@ private: XMM }; private: - ZyDisBaseDataSource *m_dataSource; - ZyDisDisassemblerMode m_disassemblerMode; - ZyDisInstructionSetVendor m_preferredVendor; - uint64_t m_instructionPointer; + BaseInput* m_input; + DisassemblerMode m_disassemblerMode; + InstructionSetVendor m_preferredVendor; + uint64_t m_instructionPointer; private: /** * @brief Reads the next byte from the data source. This method does NOT increase the @@ -417,7 +419,7 @@ private: * @c flags field of the @c info parameter for error flags. * Possible error values are @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. */ - uint8_t inputPeek(ZyDisInstructionInfo &info); + uint8_t inputPeek(InstructionInfo& info); /** * @brief Reads the next byte from the data source. This method increases the current * input position and the @c length field of the @info parameter. @@ -428,7 +430,7 @@ private: * @c flags field of the @c info parameter for error flags. * Possible error values are @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. */ - uint8_t inputNext(ZyDisInstructionInfo &info); + uint8_t inputNext(InstructionInfo& info); /** * @brief Reads the next byte(s) from the data source. This method increases the current * input position and the @c length field of the @info parameter. @@ -440,7 +442,7 @@ private: * Possible error values are @c IF_ERROR_END_OF_INPUT or @c IF_ERROR_LENGTH. */ template - T inputNext(ZyDisInstructionInfo &info); + T inputNext(InstructionInfo& info); /** * @brief Returns the current input byte. The current input byte is set everytime the * @c inputPeek or @c inputNext method is called. @@ -451,64 +453,64 @@ private: /** * @brief Decodes a register operand. * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. + * @param operand The @c OperandInfo struct that receives the decoded data. * @param registerClass The register class to use. * @param registerId The register id. * @param operandSize The defined size of the operand. * @return True if it succeeds, false if it fails. */ - bool decodeRegisterOperand(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, - RegisterClass registerClass, uint8_t registerId, ZyDisDefinedOperandSize operandSize) const; + bool decodeRegisterOperand(InstructionInfo& info, OperandInfo& operand, + RegisterClass registerClass, uint8_t registerId, DefinedOperandSize operandSize) const; /** * @brief Decodes a register/memory operand. * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. + * @param operand The @c OperandInfo struct that receives the decoded data. * @param registerClass The register class to use. * @param operandSize The defined size of the operand. * @return True if it succeeds, false if it fails. */ - bool decodeRegisterMemoryOperand(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, - RegisterClass registerClass, ZyDisDefinedOperandSize operandSize); + bool decodeRegisterMemoryOperand(InstructionInfo& info, OperandInfo& operand, + RegisterClass registerClass, DefinedOperandSize operandSize); /** * @brief Decodes an immediate operand. * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. + * @param operand The @c OperandInfo struct that receives the decoded data. * @param operandSize The defined size of the operand. * @return True if it succeeds, false if it fails. */ - bool decodeImmediate(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, - ZyDisDefinedOperandSize operandSize); + bool decodeImmediate(InstructionInfo& info, OperandInfo& operand, + DefinedOperandSize operandSize); /** * @brief Decodes a displacement operand. * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. + * @param operand The @c OperandInfo struct that receives the decoded data. * @param size The size of the displacement data. * @return True if it succeeds, false if it fails. */ - bool decodeDisplacement(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, uint8_t size); + bool decodeDisplacement(InstructionInfo& info, OperandInfo& operand, uint8_t size); private: /** * @brief Decodes the modrm field of the instruction. This method reads an additional * input byte. - * @param The @c ZyDisInstructionInfo struct that receives the decoded data. + * @param The @c InstructionInfo struct that receives the decoded data. * @return True if it succeeds, false if it fails. */ - bool decodeModrm(ZyDisInstructionInfo &info); + bool decodeModrm(InstructionInfo& info); /** * @brief Decodes the sib field of the instruction. This method reads an additional * input byte. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. + * @param info The @c InstructionInfo struct that receives the decoded data. * @return True if it succeeds, false if it fails. */ - bool decodeSIB(ZyDisInstructionInfo &info); + bool decodeSIB(InstructionInfo& info); /** * @brief Decodes vex prefix of the instruction. This method takes the current input byte * to determine the vex prefix type and reads one or two additional input bytes * on demand. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. + * @param info The @c InstructionInfo struct that receives the decoded data. * @return True if it succeeds, false if it fails. */ - bool decodeVex(ZyDisInstructionInfo &info); + bool decodeVex(InstructionInfo& info); private: /** * @brief Returns the effective operand size. @@ -516,59 +518,59 @@ private: * @param operandSize The defined operand size. * @return The effective operand size. */ - uint16_t getEffectiveOperandSize(const ZyDisInstructionInfo &info, - ZyDisDefinedOperandSize operandSize) const; + uint16_t getEffectiveOperandSize(const InstructionInfo& info, + DefinedOperandSize operandSize) const; /** * @brief Decodes all instruction operands. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. + * @param info The @c InstructionInfo struct that receives the decoded data. * @return True if it succeeds, false if it fails. */ - bool decodeOperands(ZyDisInstructionInfo &info); + bool decodeOperands(InstructionInfo& info); /** * @brief Decodes the specified instruction operand. * @param info The instruction info. - * @param operand The @c ZyDisOperandInfo struct that receives the decoded data. + * @param operand The @c OperandInfo struct that receives the decoded data. * @param operandType The defined type of the operand. * @param operandSize The defined size of the operand. * @return True if it succeeds, false if it fails. */ - bool decodeOperand(ZyDisInstructionInfo &info, ZyDisOperandInfo &operand, - ZyDisDefinedOperandType operandType, ZyDisDefinedOperandSize operandSize); + bool decodeOperand(InstructionInfo& info, OperandInfo& operand, + DefinedOperandType operandType, DefinedOperandSize operandSize); private: /** * @brief Resolves the effective operand and address mode of the instruction. * This method requires a non-null value in the @c instrDefinition field of the * @c info struct. - * @param info The @c ZyDisInstructionInfo struct that receives the effective operand and + * @param info The @c InstructionInfo struct that receives the effective operand and * address mode. */ - void resolveOperandAndAddressMode(ZyDisInstructionInfo &info) const; + void resolveOperandAndAddressMode(InstructionInfo& info) const; /** * @brief Calculates the effective REX/VEX.w, r, x, b, l values. * This method requires a non-null value in the @c instrDefinition field of the * @c info struct. - * @param info The @c ZyDisInstructionInfo struct that receives the effective operand and + * @param info The @c InstructionInfo struct that receives the effective operand and * address mode. */ - void calculateEffectiveRexVexValues(ZyDisInstructionInfo &info) const; + void calculateEffectiveRexVexValues(InstructionInfo& info) const; private: /** * @brief Collects and decodes optional instruction prefixes. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. + * @param info The @c InstructionInfo struct that receives the decoded data. * @return True if it succeeds, false if it fails. */ - bool decodePrefixes(ZyDisInstructionInfo &info); + bool decodePrefixes(InstructionInfo& info); /** * @brief Collects and decodes the instruction opcodes using the opcode tree. - * @param info The @c ZyDisInstructionInfo struct that receives the decoded data. + * @param info The @c InstructionInfo struct that receives the decoded data. * @return True if it succeeds, false if it fails. */ - bool decodeOpcode(ZyDisInstructionInfo &info); + bool decodeOpcode(InstructionInfo& info); public: /** * @brief Default constructor. */ - ZyDisInstructionDecoder(); + InstructionDecoder(); /** * @brief Constructor. * @param input A reference to the input data source. @@ -576,51 +578,51 @@ public: * @param preferredVendor The preferred instruction-set vendor. * @param instructionPointer The initial instruction pointer. */ - explicit ZyDisInstructionDecoder(ZyDisBaseDataSource *input, - ZyDisDisassemblerMode disassemblerMode = ZyDisDisassemblerMode::M32BIT, - ZyDisInstructionSetVendor preferredVendor = ZyDisInstructionSetVendor::ANY, + explicit InstructionDecoder(BaseInput* input, + DisassemblerMode disassemblerMode = DisassemblerMode::M32BIT, + InstructionSetVendor preferredVendor = InstructionSetVendor::ANY, uint64_t instructionPointer = 0); public: /** * @brief Decodes the next instruction from the input data source. - * @param info The @c ZyDisInstructionInfo struct that receives the information about the + * @param info The @c InstructionInfo struct that receives the information about the * decoded instruction. * @return This method returns false, if the current position has exceeded the maximum input * length. * In all other cases (valid and invalid instructions) the return value is true. */ - bool decodeInstruction(ZyDisInstructionInfo &info); + bool decodeInstruction(InstructionInfo& info); public: /** * @brief Returns a pointer to the current data source. * @return A pointer to the current data source. */ - ZyDisBaseDataSource* getDataSource() const; + BaseInput* getDataSource() const; /** * @brief Sets a new data source. * @param input A reference to the new input data source. */ - void setDataSource(ZyDisBaseDataSource *input); + void setDataSource(BaseInput* input); /** * @brief Returns the current disassembler mode. * @return The current disassembler mode. */ - ZyDisDisassemblerMode getDisassemblerMode() const; + DisassemblerMode getDisassemblerMode() const; /** * @brief Sets the current disassembler mode. * @param disassemblerMode The new disassembler mode. */ - void setDisassemblerMode(ZyDisDisassemblerMode disassemblerMode); + void setDisassemblerMode(DisassemblerMode disassemblerMode); /** * @brief Returns the preferred instruction-set vendor. * @return The preferred instruction-set vendor. */ - ZyDisInstructionSetVendor getPreferredVendor() const; + InstructionSetVendor getPreferredVendor() const; /** * @brief Sets the preferred instruction-set vendor. * @param preferredVendor The new preferred instruction-set vendor. */ - void setPreferredVendor(ZyDisInstructionSetVendor preferredVendor); + void setPreferredVendor(InstructionSetVendor preferredVendor); /** * @brief Returns the current instruction pointer. * @return The current instruction pointer. @@ -633,86 +635,88 @@ public: void setInstructionPointer(uint64_t instructionPointer); }; -inline uint8_t ZyDisInstructionDecoder::inputPeek(ZyDisInstructionInfo &info) +inline uint8_t InstructionDecoder::inputPeek(InstructionInfo& info) { - if (!m_dataSource) + if (!m_input) { info.flags |= IF_ERROR_END_OF_INPUT; return 0; } - return m_dataSource->inputPeek(info); + return m_input->inputPeek(info); } -inline uint8_t ZyDisInstructionDecoder::inputNext(ZyDisInstructionInfo &info) +inline uint8_t InstructionDecoder::inputNext(InstructionInfo& info) { - if (!m_dataSource) + if (!m_input) { info.flags |= IF_ERROR_END_OF_INPUT; return 0; } - return m_dataSource->inputNext(info); + return m_input->inputNext(info); } template -inline T ZyDisInstructionDecoder::inputNext(ZyDisInstructionInfo &info) +inline T InstructionDecoder::inputNext(InstructionInfo& info) { - if (!m_dataSource) + if (!m_input) { info.flags |= IF_ERROR_END_OF_INPUT; return 0; } - return m_dataSource->inputNext(info); + return m_input->inputNext(info); } -inline uint8_t ZyDisInstructionDecoder::inputCurrent() const +inline uint8_t InstructionDecoder::inputCurrent() const { - if (!m_dataSource) + if (!m_input) { return 0; } - return m_dataSource->inputCurrent(); + return m_input->inputCurrent(); } -inline ZyDisBaseDataSource* ZyDisInstructionDecoder::getDataSource() const +inline BaseInput *InstructionDecoder::getDataSource() const { - return m_dataSource; + return m_input; } -inline void ZyDisInstructionDecoder::setDataSource(ZyDisBaseDataSource *input) +inline void InstructionDecoder::setDataSource(BaseInput* input) { - m_dataSource = input; + m_input = input; } -inline ZyDisDisassemblerMode ZyDisInstructionDecoder::getDisassemblerMode() const +inline DisassemblerMode InstructionDecoder::getDisassemblerMode() const { return m_disassemblerMode; } -inline void ZyDisInstructionDecoder::setDisassemblerMode(ZyDisDisassemblerMode disassemblerMode) +inline void InstructionDecoder::setDisassemblerMode(DisassemblerMode disassemblerMode) { m_disassemblerMode = disassemblerMode; } -inline ZyDisInstructionSetVendor ZyDisInstructionDecoder::getPreferredVendor() const +inline InstructionSetVendor InstructionDecoder::getPreferredVendor() const { return m_preferredVendor; } -inline void ZyDisInstructionDecoder::setPreferredVendor(ZyDisInstructionSetVendor preferredVendor) +inline void InstructionDecoder::setPreferredVendor(InstructionSetVendor preferredVendor) { m_preferredVendor = preferredVendor; } -inline uint64_t ZyDisInstructionDecoder::getInstructionPointer() const +inline uint64_t InstructionDecoder::getInstructionPointer() const { return m_instructionPointer; } -inline void ZyDisInstructionDecoder::setInstructionPointer(uint64_t instructionPointer) +inline void InstructionDecoder::setInstructionPointer(uint64_t instructionPointer) { m_instructionPointer = instructionPointer; } -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* ============================================================================================== */ } + +#endif /* _ZYDIS_INSTRUCTIONDECODER_HPP_ */ \ No newline at end of file diff --git a/Bindings/Cpp/ZyDisInstructionFormatter.cpp b/Zydis/ZydisInstructionFormatter.cpp similarity index 63% rename from Bindings/Cpp/ZyDisInstructionFormatter.cpp rename to Zydis/ZydisInstructionFormatter.cpp index 792c5d3..edee070 100644 --- a/Bindings/Cpp/ZyDisInstructionFormatter.cpp +++ b/Zydis/ZydisInstructionFormatter.cpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 22. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,34 +26,20 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ -#include "ZyDisInstructionFormatter.hpp" -#include "ZyDisDisassemblerUtils.hpp" +***************************************************************************************************/ + +#include "ZydisInstructionFormatter.hpp" +#include "ZydisUtils.hpp" #include #include -#include #include -#include -namespace Verteron +namespace Zydis { -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* BaseInstructionFormatter ================================================================ */ -ZyDisBaseSymbolResolver::~ZyDisBaseSymbolResolver() -{ - -} - -const char* ZyDisBaseSymbolResolver::resolveSymbol(const ZyDisInstructionInfo &info, uint64_t address, - uint64_t &offset) -{ - return nullptr; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -const char* ZyDisBaseInstructionFormatter::m_registerStrings[] = +const char *BaseInstructionFormatter::m_registerStrings[] = { /* 8 bit general purpose registers */ "al", "cl", "dl", "bl", @@ -111,12 +95,12 @@ const char* ZyDisBaseInstructionFormatter::m_registerStrings[] = "rip" }; -void ZyDisBaseInstructionFormatter::internalFormatInstruction(const ZyDisInstructionInfo &info) +void BaseInstructionFormatter::internalFormatInstruction(const InstructionInfo& /*info*/) { // Nothing to do here } -ZyDisBaseInstructionFormatter::ZyDisBaseInstructionFormatter() +BaseInstructionFormatter::BaseInstructionFormatter() : m_symbolResolver(nullptr) , m_outputStringLen(0) , m_outputUppercase(false) @@ -124,7 +108,8 @@ ZyDisBaseInstructionFormatter::ZyDisBaseInstructionFormatter() } -ZyDisBaseInstructionFormatter::ZyDisBaseInstructionFormatter(ZyDisBaseSymbolResolver *symbolResolver) +BaseInstructionFormatter::BaseInstructionFormatter( + BaseSymbolResolver *symbolResolver) : m_symbolResolver(symbolResolver) , m_outputStringLen(0) , m_outputUppercase(false) @@ -132,7 +117,7 @@ ZyDisBaseInstructionFormatter::ZyDisBaseInstructionFormatter(ZyDisBaseSymbolReso } -const char* ZyDisBaseInstructionFormatter::formatInstruction(const ZyDisInstructionInfo &info) +const char *BaseInstructionFormatter::formatInstruction(const InstructionInfo& info) { // Clears the internal string buffer outputClear(); @@ -141,28 +126,28 @@ const char* ZyDisBaseInstructionFormatter::formatInstruction(const ZyDisInstruct if (m_outputBuffer.size() == 0) { // The basic instruction formatter only returns the instruction menmonic. - return Internal::VDEGetInstructionMnemonicString(info.mnemonic); + return Internal::GetInstructionMnemonicString(info.mnemonic); } // Return the formatted instruction string return outputString(); } -ZyDisBaseInstructionFormatter::~ZyDisBaseInstructionFormatter() +BaseInstructionFormatter::~BaseInstructionFormatter() { } -void ZyDisBaseInstructionFormatter::outputClear() +void BaseInstructionFormatter::outputClear() { m_outputStringLen = 0; } -char const* ZyDisBaseInstructionFormatter::outputString() +char const *BaseInstructionFormatter::outputString() { - return &m_outputBuffer[0]; + return& m_outputBuffer[0]; } - void ZyDisBaseInstructionFormatter::outputAppend(char const *text) + void BaseInstructionFormatter::outputAppend(char const *text) { // Get the string length including the null-terminator char size_t strLen = strlen(text) + 1; @@ -191,7 +176,7 @@ char const* ZyDisBaseInstructionFormatter::outputString() } } - void ZyDisBaseInstructionFormatter::outputAppendFormatted(char const *format, ...) + void BaseInstructionFormatter::outputAppendFormatted(char const *format, ...) { va_list arguments; va_start(arguments, format); @@ -218,7 +203,7 @@ char const* ZyDisBaseInstructionFormatter::outputString() // Write the formatted text to the output buffer assert((bufLen - offset) > 0); strLen = - std::vsnprintf(&m_outputBuffer[offset], bufLen - offset, format, arguments); + vsnprintf_s(&m_outputBuffer[offset], bufLen - offset, _TRUNCATE, format, arguments); } while (strLen < 0); // Increase the string length m_outputStringLen = offset + strLen + 1; @@ -233,11 +218,11 @@ char const* ZyDisBaseInstructionFormatter::outputString() va_end(arguments); } -void ZyDisBaseInstructionFormatter::outputAppendAddress(const ZyDisInstructionInfo &info, +void BaseInstructionFormatter::outputAppendAddress(const InstructionInfo& info, uint64_t address, bool resolveSymbols) { uint64_t offset = 0; - const char* name = nullptr; + const char *name = nullptr; if (resolveSymbols) { name = resolveSymbol(info, address, offset); @@ -253,13 +238,13 @@ void ZyDisBaseInstructionFormatter::outputAppendAddress(const ZyDisInstructionIn } } else { - if (info.flags & IF_DISASSEMBLER_MODE_16) + if (info.flags& IF_DISASSEMBLER_MODE_16) { outputAppendFormatted("%.4X", address); - } else if (info.flags & IF_DISASSEMBLER_MODE_32) + } else if (info.flags& IF_DISASSEMBLER_MODE_32) { outputAppendFormatted("%.8lX", address); - } else if (info.flags & IF_DISASSEMBLER_MODE_64) + } else if (info.flags& IF_DISASSEMBLER_MODE_64) { outputAppendFormatted("%.16llX", address); } else @@ -269,12 +254,12 @@ void ZyDisBaseInstructionFormatter::outputAppendAddress(const ZyDisInstructionIn } } -void ZyDisBaseInstructionFormatter::outputAppendImmediate(const ZyDisInstructionInfo &info, - const ZyDisOperandInfo &operand, bool resolveSymbols) +void BaseInstructionFormatter::outputAppendImmediate(const InstructionInfo& info, + const OperandInfo& operand, bool resolveSymbols) { - assert(operand.type == ZyDisOperandType::IMMEDIATE); + assert(operand.type == OperandType::IMMEDIATE); uint64_t value = 0; - if (operand.signed_lval && (operand.size != info.operand_mode)) + if (operand.signed_lval&& (operand.size != info.operand_mode)) { if (operand.size == 8) { @@ -286,7 +271,7 @@ void ZyDisBaseInstructionFormatter::outputAppendImmediate(const ZyDisInstruction } if (info.operand_mode < 64) { - value = value & ((1ull << info.operand_mode) - 1ull); + value = value& ((1ull << info.operand_mode) - 1ull); } } else { @@ -309,7 +294,7 @@ void ZyDisBaseInstructionFormatter::outputAppendImmediate(const ZyDisInstruction } } uint64_t offset = 0; - const char* name = nullptr; + const char *name = nullptr; if (resolveSymbols) { name = resolveSymbol(info, value, offset); @@ -329,11 +314,10 @@ void ZyDisBaseInstructionFormatter::outputAppendImmediate(const ZyDisInstruction } } -void ZyDisBaseInstructionFormatter::outputAppendDisplacement(const ZyDisInstructionInfo &info, - const ZyDisOperandInfo &operand) +void BaseInstructionFormatter::outputAppendDisplacement(const OperandInfo& operand) { assert(operand.offset > 0); - if ((operand.base == ZyDisRegister::NONE) && (operand.index == ZyDisRegister::NONE)) + if ((operand.base == Register::NONE)&& (operand.index == Register::NONE)) { // Assume the displacement value is unsigned assert(operand.scale == 0); @@ -378,16 +362,15 @@ void ZyDisBaseInstructionFormatter::outputAppendDisplacement(const ZyDisInstruct outputAppendFormatted("-%.2lX", -value); } else { - outputAppendFormatted("%s%.2lX", (operand.base != ZyDisRegister::NONE || - operand.index != ZyDisRegister::NONE) ? "+" : "", value); + outputAppendFormatted("%s%.2lX", (operand.base != Register::NONE || + operand.index != Register::NONE) ? "+" : "", value); } } } -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* IntelInstructionFormatter =============================================================== */ -void ZyDisIntelInstructionFormatter::outputAppendOperandCast(const ZyDisInstructionInfo &info, - const ZyDisOperandInfo &operand) +void IntelInstructionFormatter::outputAppendOperandCast(const OperandInfo& operand) { switch(operand.size) { @@ -417,33 +400,33 @@ void ZyDisIntelInstructionFormatter::outputAppendOperandCast(const ZyDisInstruct } } -void ZyDisIntelInstructionFormatter::formatOperand(const ZyDisInstructionInfo &info, - const ZyDisOperandInfo &operand) +void IntelInstructionFormatter::formatOperand(const InstructionInfo& info, + const OperandInfo& operand) { switch (operand.type) { - case ZyDisOperandType::REGISTER: + case OperandType::REGISTER: outputAppend(registerToString(operand.base)); break; - case ZyDisOperandType::MEMORY: - if (info.flags & IF_PREFIX_SEGMENT) + case OperandType::MEMORY: + if (info.flags& IF_PREFIX_SEGMENT) { outputAppendFormatted("%s:", registerToString(info.segment)); } outputAppend("["); - if (operand.base == ZyDisRegister::RIP) + if (operand.base == Register::RIP) { // TODO: Add option - outputAppendAddress(info, VDECalcAbsoluteTarget(info, operand), true); + outputAppendAddress(info, CalcAbsoluteTarget(info, operand), true); } else { - if (operand.base != ZyDisRegister::NONE) + if (operand.base != Register::NONE) { outputAppend(registerToString(operand.base)); } - if (operand.index != ZyDisRegister::NONE) + if (operand.index != Register::NONE) { - outputAppendFormatted("%s%s", operand.base != ZyDisRegister::NONE ? "+" : "", + outputAppendFormatted("%s%s", operand.base != Register::NONE ? "+" : "", registerToString(operand.index)); if (operand.scale) { @@ -452,18 +435,18 @@ void ZyDisIntelInstructionFormatter::formatOperand(const ZyDisInstructionInfo &i } if (operand.offset) { - outputAppendDisplacement(info, operand); + outputAppendDisplacement(operand); } } outputAppend("]"); break; - case ZyDisOperandType::POINTER: + case OperandType::POINTER: // TODO: resolve symbols switch (operand.size) { case 32: outputAppendFormatted("word %.4X:%.4X", operand.lval.ptr.seg, - operand.lval.ptr.off & 0xFFFF); + operand.lval.ptr.off& 0xFFFF); break; case 48: outputAppendFormatted("dword %.4X:%.8lX", operand.lval.ptr.seg, operand.lval.ptr.off); @@ -472,21 +455,21 @@ void ZyDisIntelInstructionFormatter::formatOperand(const ZyDisInstructionInfo &i assert(0); } break; - case ZyDisOperandType::IMMEDIATE: + case OperandType::IMMEDIATE: { outputAppendImmediate(info, operand, true); } break; - case ZyDisOperandType::REL_IMMEDIATE: + case OperandType::REL_IMMEDIATE: { if (operand.size == 8) { outputAppend("short "); } - outputAppendAddress(info, VDECalcAbsoluteTarget(info, operand), true); + outputAppendAddress(info, CalcAbsoluteTarget(info, operand), true); } break; - case ZyDisOperandType::CONSTANT: + case OperandType::CONSTANT: outputAppendFormatted("%.2X", operand.lval.udword); break; default: @@ -495,47 +478,47 @@ void ZyDisIntelInstructionFormatter::formatOperand(const ZyDisInstructionInfo &i } } -void ZyDisIntelInstructionFormatter::internalFormatInstruction(const ZyDisInstructionInfo &info) +void IntelInstructionFormatter::internalFormatInstruction(const InstructionInfo& info) { // Append string prefixes - if (info.flags & IF_PREFIX_LOCK) + if (info.flags& IF_PREFIX_LOCK) { outputAppend("lock "); } - if (info.flags & IF_PREFIX_REP) + if (info.flags& IF_PREFIX_REP) { outputAppend("rep "); - } else if (info.flags & IF_PREFIX_REPNE) + } else if (info.flags& IF_PREFIX_REPNE) { outputAppend("repne "); } // Append the instruction mnemonic - outputAppend(Internal::VDEGetInstructionMnemonicString(info.mnemonic)); + outputAppend(Internal::GetInstructionMnemonicString(info.mnemonic)); // Append the first operand - if (info.operand[0].type != ZyDisOperandType::NONE) + if (info.operand[0].type != OperandType::NONE) { outputAppend(" "); bool cast = false; - if (info.operand[0].type == ZyDisOperandType::MEMORY) + if (info.operand[0].type == OperandType::MEMORY) { - if (info.operand[1].type == ZyDisOperandType::IMMEDIATE || - info.operand[1].type == ZyDisOperandType::CONSTANT || - info.operand[1].type == ZyDisOperandType::NONE || + if (info.operand[1].type == OperandType::IMMEDIATE || + info.operand[1].type == OperandType::CONSTANT || + info.operand[1].type == OperandType::NONE || (info.operand[0].size != info.operand[1].size)) { cast = true; - } else if (info.operand[1].type == ZyDisOperandType::REGISTER && - info.operand[1].base == ZyDisRegister::CL) + } else if (info.operand[1].type == OperandType::REGISTER&& + info.operand[1].base == Register::CL) { switch (info.mnemonic) { - case ZyDisInstructionMnemonic::RCL: - case ZyDisInstructionMnemonic::ROL: - case ZyDisInstructionMnemonic::ROR: - case ZyDisInstructionMnemonic::RCR: - case ZyDisInstructionMnemonic::SHL: - case ZyDisInstructionMnemonic::SHR: - case ZyDisInstructionMnemonic::SAR: + case InstructionMnemonic::RCL: + case InstructionMnemonic::ROL: + case InstructionMnemonic::ROR: + case InstructionMnemonic::RCR: + case InstructionMnemonic::SHL: + case InstructionMnemonic::SHR: + case InstructionMnemonic::SAR: cast = true; break; default: @@ -545,114 +528,75 @@ void ZyDisIntelInstructionFormatter::internalFormatInstruction(const ZyDisInstru } if (cast) { - outputAppendOperandCast(info, info.operand[0]); + outputAppendOperandCast(info.operand[0]); } formatOperand(info, info.operand[0]); } // Append the second operand - if (info.operand[1].type != ZyDisOperandType::NONE) + if (info.operand[1].type != OperandType::NONE) { outputAppend(", "); bool cast = false; - if (info.operand[1].type == ZyDisOperandType::MEMORY && - info.operand[0].size != info.operand[1].size && - ((info.operand[0].type != ZyDisOperandType::REGISTER) || - ((info.operand[0].base != ZyDisRegister::ES) && - (info.operand[0].base != ZyDisRegister::CS) && - (info.operand[0].base != ZyDisRegister::SS) && - (info.operand[0].base != ZyDisRegister::DS) && - (info.operand[0].base != ZyDisRegister::FS) && - (info.operand[0].base != ZyDisRegister::GS)))) + if (info.operand[1].type == OperandType::MEMORY&& + info.operand[0].size != info.operand[1].size&& + ((info.operand[0].type != OperandType::REGISTER) || + ((info.operand[0].base != Register::ES)&& + (info.operand[0].base != Register::CS)&& + (info.operand[0].base != Register::SS)&& + (info.operand[0].base != Register::DS)&& + (info.operand[0].base != Register::FS)&& + (info.operand[0].base != Register::GS)))) { cast = true; } if (cast) { - outputAppendOperandCast(info, info.operand[1]); + outputAppendOperandCast(info.operand[1]); } formatOperand(info, info.operand[1]); } // Append the third operand - if (info.operand[2].type != ZyDisOperandType::NONE) + if (info.operand[2].type != OperandType::NONE) { outputAppend(", "); bool cast = false; - if (info.operand[2].type == ZyDisOperandType::MEMORY && + if (info.operand[2].type == OperandType::MEMORY&& (info.operand[2].size != info.operand[1].size)) { cast = true; } if (cast) { - outputAppendOperandCast(info, info.operand[2]); + outputAppendOperandCast(info.operand[2]); } formatOperand(info, info.operand[2]); } // Append the fourth operand - if (info.operand[3].type != ZyDisOperandType::NONE) + if (info.operand[3].type != OperandType::NONE) { outputAppend(", "); formatOperand(info, info.operand[3]); } } -ZyDisIntelInstructionFormatter::ZyDisIntelInstructionFormatter() - : ZyDisBaseInstructionFormatter() +IntelInstructionFormatter::IntelInstructionFormatter() + : BaseInstructionFormatter() { } -ZyDisIntelInstructionFormatter::ZyDisIntelInstructionFormatter(ZyDisBaseSymbolResolver* symbolResolver) - : ZyDisBaseInstructionFormatter(symbolResolver) +IntelInstructionFormatter::IntelInstructionFormatter( + BaseSymbolResolver *symbolResolver) + : BaseInstructionFormatter(symbolResolver) { } -ZyDisIntelInstructionFormatter::~ZyDisIntelInstructionFormatter() +IntelInstructionFormatter::~IntelInstructionFormatter() { } -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* ============================================================================================== */ -ZyDisExactSymbolResolver::~ZyDisExactSymbolResolver() -{ - -} - -const char* ZyDisExactSymbolResolver::resolveSymbol(const ZyDisInstructionInfo &info, uint64_t address, - uint64_t &offset) -{ - std::unordered_map::const_iterator iterator = m_symbolMap.find(address); - if (iterator != m_symbolMap.cend()) - { - offset = 0; - return iterator->second.c_str(); - } - return nullptr; -} - -bool ZyDisExactSymbolResolver::containsSymbol(uint64_t address) const -{ - std::unordered_map::const_iterator iterator = m_symbolMap.find(address); - return (iterator != m_symbolMap.end()); -} - -void ZyDisExactSymbolResolver::setSymbol(uint64_t address, const char* name) -{ - m_symbolMap[address].assign(name); -} - -void ZyDisExactSymbolResolver::removeSymbol(uint64_t address) -{ - m_symbolMap.erase(address); -} - -void ZyDisExactSymbolResolver::clear() -{ - m_symbolMap.clear(); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -} +} \ No newline at end of file diff --git a/Bindings/Cpp/ZyDisInstructionFormatter.hpp b/Zydis/ZydisInstructionFormatter.hpp similarity index 52% rename from Bindings/Cpp/ZyDisInstructionFormatter.hpp rename to Zydis/ZydisInstructionFormatter.hpp index 68d02bf..2eea615 100644 --- a/Bindings/Cpp/ZyDisInstructionFormatter.hpp +++ b/Zydis/ZydisInstructionFormatter.hpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 22. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,55 +26,31 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ -#pragma once +***************************************************************************************************/ + +#ifndef _ZYDIS_INSTRUCTIONFORMATTER_HPP_ +#define _ZYDIS_INSTRUCTIONFORMATTER_HPP_ #include -#include -#include -#include "ZyDisDisassemblerTypes.hpp" +#include "ZydisTypes.hpp" +#include "ZydisSymbolResolver.hpp" -namespace Verteron +namespace Zydis { -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/** - * @brief Base class for all symbol resolver implementations. - */ -class ZyDisBaseSymbolResolver -{ -public: - /** - * @brief Destructor. - */ - virtual ~ZyDisBaseSymbolResolver(); -public: - /** - * @brief Resolves a symbol. - * @param info The instruction info. - * @param address The address. - * @param offset Reference to an unsigned 64 bit integer that receives an offset - * relative to the base address of the symbol. - * @return The name of the symbol, if the symbol was found, @c NULL if not. - */ - virtual const char* resolveSymbol(const ZyDisInstructionInfo &info, uint64_t address, - uint64_t &offset); -}; - -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* BaseInstructionFormatter ===================================================================== */ /** * @brief Base class for all instruction formatter implementations. */ -class ZyDisBaseInstructionFormatter +class BaseInstructionFormatter { private: - static const char *m_registerStrings[]; - ZyDisBaseSymbolResolver *m_symbolResolver; - std::vector m_outputBuffer; - size_t m_outputStringLen; - bool m_outputUppercase; + static const char* m_registerStrings[]; + BaseSymbolResolver* m_symbolResolver; + std::vector m_outputBuffer; + size_t m_outputStringLen; + bool m_outputUppercase; protected: /** * @brief Clears the output string buffer. @@ -91,12 +65,12 @@ protected: * @brief Appends text to the ouput string buffer. * @param text The text. */ - void outputAppend(const char *text); + void outputAppend(const char* text); /** * @brief Appends formatted text to the output string buffer. * @param format The format string. */ - void outputAppendFormatted(const char *format, ...); + void outputAppendFormatted(const char* format, ...); /** * @brief Changes automatic conversion of characters to uppercase. * @param uppercase Set true to enable automatic uppercase conversion. @@ -109,7 +83,7 @@ protected: * @param resolveSymbols If this parameter is true, the method will try to display a * smybol name instead of the numeric value. */ - void outputAppendAddress(const ZyDisInstructionInfo &info, uint64_t address, + void outputAppendAddress(const InstructionInfo& info, uint64_t address, bool resolveSymbols = true); /** * @brief Appends a formatted immediate value to the output string buffer. @@ -118,21 +92,20 @@ protected: * @param resolveSymbols If this parameter is true, the method will try to display a * smybol name instead of the numeric value. */ - void outputAppendImmediate(const ZyDisInstructionInfo &info, const ZyDisOperandInfo &operand, + void outputAppendImmediate(const InstructionInfo& info, const OperandInfo& operand, bool resolveSymbols = false); /** * @brief Appends a formatted memory displacement value to the output string buffer. - * @param info The instruction info. * @param operand The memory operand. */ - void outputAppendDisplacement(const ZyDisInstructionInfo &info, const ZyDisOperandInfo &operand); + void outputAppendDisplacement(const OperandInfo& operand); protected: /** * @brief Returns the string representation of a given register. * @param reg The register. * @return The string representation of the given register. */ - const char* registerToString(ZyDisRegister reg) const; + const char *registerToString(Register reg) const; /** * @brief Resolves a symbol. * @param info The instruction info. @@ -141,8 +114,8 @@ protected: * relative to the base address of the symbol. * @return The name of the symbol, if the symbol was found, @c NULL if not. */ - const char* resolveSymbol(const ZyDisInstructionInfo &info, uint64_t address, - uint64_t &offset) const; + const char* resolveSymbol(const InstructionInfo& info, uint64_t address, + uint64_t& offset) const; protected: /** * @brief Override this method to implement a custom disassembly syntax. Use the @@ -150,59 +123,59 @@ protected: * string buffer. * @param info The instruction info. */ - virtual void internalFormatInstruction(const ZyDisInstructionInfo &info); + virtual void internalFormatInstruction(const InstructionInfo& info); /** * @brief Default constructor. */ - ZyDisBaseInstructionFormatter(); + BaseInstructionFormatter(); /** * @brief Constructor. * @param symbolResolver Pointer to a symbol resolver instance or @c NULL, if no smybol * resolver should be used. */ - explicit ZyDisBaseInstructionFormatter(ZyDisBaseSymbolResolver *symbolResolver); + explicit BaseInstructionFormatter(BaseSymbolResolver* symbolResolver); public: /** * @brief Destructor. */ - virtual ~ZyDisBaseInstructionFormatter(); + virtual ~BaseInstructionFormatter(); public: /** * @brief Formats a decoded instruction. * @param info The instruction info. * @return Pointer to the formatted instruction string. */ - const char* formatInstruction(const ZyDisInstructionInfo &info); + const char *formatInstruction(const InstructionInfo& info); public: /** * @brief Returns a pointer to the current symbol resolver. * @return Pointer to the current symbol resolver or @c NULL, if no symbol resolver is used. */ - ZyDisBaseSymbolResolver* getSymbolResolver() const; + BaseSymbolResolver* getSymbolResolver() const; /** * @brief Sets a new symbol resolver. * @param symbolResolver Pointer to a symbol resolver instance or @c NULL, if no smybol * resolver should be used. */ - void setSymbolResolver(ZyDisBaseSymbolResolver *symbolResolver); + void setSymbolResolver(BaseSymbolResolver* symbolResolver); }; -inline void ZyDisBaseInstructionFormatter::outputSetUppercase(bool uppercase) +inline void BaseInstructionFormatter::outputSetUppercase(bool uppercase) { m_outputUppercase = uppercase; } -inline char const* ZyDisBaseInstructionFormatter::registerToString(ZyDisRegister reg) const +inline char const *BaseInstructionFormatter::registerToString(Register reg) const { - if (reg == ZyDisRegister::NONE) + if (reg == Register::NONE) { return "error"; } return m_registerStrings[static_cast(reg) - 1]; } -inline char const* ZyDisBaseInstructionFormatter::resolveSymbol(const ZyDisInstructionInfo &info, - uint64_t address, uint64_t &offset) const +inline char const* BaseInstructionFormatter::resolveSymbol(const InstructionInfo& info, + uint64_t address, uint64_t& offset) const { if (m_symbolResolver) { @@ -211,110 +184,62 @@ inline char const* ZyDisBaseInstructionFormatter::resolveSymbol(const ZyDisInstr return nullptr; } -inline ZyDisBaseSymbolResolver* ZyDisBaseInstructionFormatter::getSymbolResolver() const +inline BaseSymbolResolver* BaseInstructionFormatter::getSymbolResolver() const { return m_symbolResolver; } -inline void ZyDisBaseInstructionFormatter::setSymbolResolver(ZyDisBaseSymbolResolver *symbolResolver) +inline void BaseInstructionFormatter::setSymbolResolver( + BaseSymbolResolver* symbolResolver) { m_symbolResolver = symbolResolver; } -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* IntelInstructionFormatter ==================================================================== */ /** * @brief Intel syntax instruction formatter. */ -class ZyDisIntelInstructionFormatter : public ZyDisBaseInstructionFormatter +class IntelInstructionFormatter : public BaseInstructionFormatter { private: /** * @brief Appends an operand cast to the output string buffer. - * @param info The instruction info. * @param operand The operand. */ - void outputAppendOperandCast(const ZyDisInstructionInfo &info, const ZyDisOperandInfo &operand); + void outputAppendOperandCast(const OperandInfo& operand); /** * @brief Formats the specified operand and appends the resulting string to the output * buffer. * @param info The instruction info. * @param operand The operand. */ - void formatOperand(const ZyDisInstructionInfo &info, const ZyDisOperandInfo &operand); + void formatOperand(const InstructionInfo& info, const OperandInfo& operand); protected: /** * @brief Fills the internal string buffer with an intel style formatted instruction string. * @param info The instruction info. */ - void internalFormatInstruction(const ZyDisInstructionInfo &info) override; + void internalFormatInstruction(const InstructionInfo& info) override; public: /** * @brief Default constructor. */ - ZyDisIntelInstructionFormatter(); + IntelInstructionFormatter(); /** * @brief Constructor. * @param symbolResolver Pointer to a symbol resolver instance or @c NULL, if no smybol * resolver should be used. */ - explicit ZyDisIntelInstructionFormatter(ZyDisBaseSymbolResolver *symbolResolver); + explicit IntelInstructionFormatter(BaseSymbolResolver* symbolResolver); /** * @brief Destructor. */ - ~ZyDisIntelInstructionFormatter() override; + ~IntelInstructionFormatter() override; }; -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/** - * @brief Simple symbol resolver that only matches exact addresses. - */ -class ZyDisExactSymbolResolver : public ZyDisBaseSymbolResolver -{ -private: - std::unordered_map m_symbolMap; -public: - /** - * @brief Destructor. - */ - ~ZyDisExactSymbolResolver() override; -public: - /** - * @brief Resolves a symbol. - * @param info The instruction info. - * @param address The address. - * @param offset Reference to an unsigned 64 bit integer that receives an offset - * relative to the base address of the symbol. - * @return The name of the symbol, if the symbol was found, @c NULL if not. - */ - const char* resolveSymbol(const ZyDisInstructionInfo &info, uint64_t address, - uint64_t &offset) override; -public: - /** - * @brief Query if the given address is a known symbol. - * @param address The address. - * @return True if the address is known, false if not. - */ - bool containsSymbol(uint64_t address) const; - /** - * @brief Adds or changes a symbol. - * @param address The address. - * @param name The symbol name. - */ - void setSymbol(uint64_t address, const char* name); - /** - * @brief Removes the symbol described by address. This will invalidate all char pointers - * to the specific symbol name. - * @param address The address. - */ - void removeSymbol(uint64_t address); - /** - * @brief Clears the symbol tree. - */ - void clear(); -}; - -/////////////////////////////////////////////////////////////////////////////////////////////////// +/* ============================================================================================== */ } + +#endif /* _ZYDIS_INSTRUCTIONFORMATTER_HPP_ */ diff --git a/Zydis/ZydisOpcodeTable.cpp b/Zydis/ZydisOpcodeTable.cpp new file mode 100644 index 0000000..bac0710 --- /dev/null +++ b/Zydis/ZydisOpcodeTable.cpp @@ -0,0 +1,9654 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#include "ZydisOpcodeTable.hpp" + +namespace Zydis +{ + +namespace Internal +{ + +#define ZYDIS_INVALID 0 +#define NODE(type, n) (static_cast(type) << 12 | (n)) + +const OpcodeTreeNode optreeTable[][256] = +{ + { + /* 00 */ 0x0015, + /* 01 */ 0x0014, + /* 02 */ 0x0016, + /* 03 */ 0x0018, + /* 04 */ 0x0017, + /* 05 */ 0x0010, + /* 06 */ NODE(OpcodeTreeNodeType::MODE, 0x0000), + /* 07 */ NODE(OpcodeTreeNodeType::MODE, 0x0001), + /* 08 */ 0x0394, + /* 09 */ 0x0393, + /* 0A */ 0x0396, + /* 0B */ 0x0395, + /* 0C */ 0x0390, + /* 0D */ 0x038F, + /* 0E */ NODE(OpcodeTreeNodeType::MODE, 0x0002), + /* 0F */ NODE(OpcodeTreeNodeType::TABLE, 0x0001), + /* 10 */ 0x000B, + /* 11 */ 0x000A, + /* 12 */ 0x000C, + /* 13 */ 0x000E, + /* 14 */ 0x000D, + /* 15 */ 0x0006, + /* 16 */ NODE(OpcodeTreeNodeType::MODE, 0x0007), + /* 17 */ NODE(OpcodeTreeNodeType::MODE, 0x0008), + /* 18 */ 0x04FE, + /* 19 */ 0x04F7, + /* 1A */ 0x04F8, + /* 1B */ 0x04FB, + /* 1C */ 0x04FA, + /* 1D */ 0x04F9, + /* 1E */ NODE(OpcodeTreeNodeType::MODE, 0x0009), + /* 1F */ NODE(OpcodeTreeNodeType::MODE, 0x000A), + /* 20 */ 0x0026, + /* 21 */ 0x0027, + /* 22 */ 0x0025, + /* 23 */ 0x002C, + /* 24 */ 0x002D, + /* 25 */ 0x002E, + /* 26 */ ZYDIS_INVALID, + /* 27 */ NODE(OpcodeTreeNodeType::MODE, 0x000B), + /* 28 */ 0x0542, + /* 29 */ 0x0549, + /* 2A */ 0x0548, + /* 2B */ 0x054B, + /* 2C */ 0x054A, + /* 2D */ 0x0547, + /* 2E */ ZYDIS_INVALID, + /* 2F */ NODE(OpcodeTreeNodeType::MODE, 0x000C), + /* 30 */ 0x06B8, + /* 31 */ 0x06B9, + /* 32 */ 0x06B6, + /* 33 */ 0x06B7, + /* 34 */ 0x06BA, + /* 35 */ 0x06BB, + /* 36 */ ZYDIS_INVALID, + /* 37 */ NODE(OpcodeTreeNodeType::MODE, 0x000D), + /* 38 */ 0x006C, + /* 39 */ 0x006D, + /* 3A */ 0x006B, + /* 3B */ 0x006A, + /* 3C */ 0x0070, + /* 3D */ 0x006F, + /* 3E */ ZYDIS_INVALID, + /* 3F */ NODE(OpcodeTreeNodeType::MODE, 0x000E), + /* 40 */ 0x02AB, + /* 41 */ 0x02AC, + /* 42 */ 0x02B2, + /* 43 */ 0x02B1, + /* 44 */ 0x02B3, + /* 45 */ 0x02B4, + /* 46 */ 0x02AE, + /* 47 */ 0x02AD, + /* 48 */ 0x00A7, + /* 49 */ 0x00A6, + /* 4A */ 0x00A8, + /* 4B */ 0x00AA, + /* 4C */ 0x00A9, + /* 4D */ 0x00A2, + /* 4E */ 0x00A1, + /* 4F */ 0x00A3, + /* 50 */ 0x04B4, + /* 51 */ 0x04B9, + /* 52 */ 0x04B3, + /* 53 */ 0x04AE, + /* 54 */ 0x04AF, + /* 55 */ 0x04B0, + /* 56 */ 0x04B1, + /* 57 */ 0x04B2, + /* 58 */ 0x0449, + /* 59 */ 0x0447, + /* 5A */ 0x0448, + /* 5B */ 0x0442, + /* 5C */ 0x043E, + /* 5D */ 0x043D, + /* 5E */ 0x043F, + /* 5F */ 0x0441, + /* 60 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0007), + /* 61 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0008), + /* 62 */ NODE(OpcodeTreeNodeType::MODE, 0x0013), + /* 63 */ NODE(OpcodeTreeNodeType::MODE, 0x0014), + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ 0x04B7, + /* 69 */ 0x02A4, + /* 6A */ 0x04AB, + /* 6B */ 0x02A6, + /* 6C */ 0x02B5, + /* 6D */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0009), + /* 6E */ 0x039F, + /* 6F */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x000A), + /* 70 */ 0x02E8, + /* 71 */ 0x02E2, + /* 72 */ 0x02CA, + /* 73 */ 0x02DE, + /* 74 */ 0x02CE, + /* 75 */ 0x02E1, + /* 76 */ 0x02CB, + /* 77 */ 0x02C7, + /* 78 */ 0x02ED, + /* 79 */ 0x02E6, + /* 7A */ 0x02EB, + /* 7B */ 0x02E5, + /* 7C */ 0x02D5, + /* 7D */ 0x02D3, + /* 7E */ 0x02D8, + /* 7F */ 0x02D1, + /* 80 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0013), + /* 81 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0014), + /* 82 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0015), + /* 83 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0016), + /* 84 */ 0x055C, + /* 85 */ 0x055D, + /* 86 */ 0x06A8, + /* 87 */ 0x06A7, + /* 88 */ 0x0334, + /* 89 */ 0x0336, + /* 8A */ 0x0335, + /* 8B */ 0x0331, + /* 8C */ 0x031D, + /* 8D */ 0x02F4, + /* 8E */ 0x031C, + /* 8F */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0017), + /* 90 */ 0x06A9, + /* 91 */ 0x06AB, + /* 92 */ 0x06AA, + /* 93 */ 0x06A3, + /* 94 */ 0x06A2, + /* 95 */ 0x06A4, + /* 96 */ 0x06A6, + /* 97 */ 0x06A5, + /* 98 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x000B), + /* 99 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x000C), + /* 9A */ NODE(OpcodeTreeNodeType::MODE, 0x001D), + /* 9B */ 0x069D, + /* 9C */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x000D), + /* 9D */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x000E), + /* 9E */ 0x04EF, + /* 9F */ 0x02EF, + /* A0 */ 0x031B, + /* A1 */ 0x0320, + /* A2 */ 0x031F, + /* A3 */ 0x031E, + /* A4 */ 0x0367, + /* A5 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x000F), + /* A6 */ 0x0076, + /* A7 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0010), + /* A8 */ 0x055E, + /* A9 */ 0x055B, + /* AA */ 0x053D, + /* AB */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0011), + /* AC */ 0x0300, + /* AD */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0012), + /* AE */ 0x0501, + /* AF */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0013), + /* B0 */ 0x0317, + /* B1 */ 0x031A, + /* B2 */ 0x0318, + /* B3 */ 0x0319, + /* B4 */ 0x0321, + /* B5 */ 0x032C, + /* B6 */ 0x032B, + /* B7 */ 0x032A, + /* B8 */ 0x032D, + /* B9 */ 0x0330, + /* BA */ 0x032F, + /* BB */ 0x032E, + /* BC */ 0x0329, + /* BD */ 0x0324, + /* BE */ 0x0323, + /* BF */ 0x0322, + /* C0 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0018), + /* C1 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0019), + /* C2 */ 0x04D9, + /* C3 */ 0x04D8, + /* C4 */ NODE(OpcodeTreeNodeType::VEX, 0x0000), + /* C5 */ NODE(OpcodeTreeNodeType::VEX, 0x0001), + /* C6 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x001E), + /* C7 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x001F), + /* C8 */ 0x00B4, + /* C9 */ 0x02F5, + /* CA */ 0x04DA, + /* CB */ 0x04DB, + /* CC */ 0x02BB, + /* CD */ 0x02B9, + /* CE */ NODE(OpcodeTreeNodeType::MODE, 0x0027), + /* CF */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0017), + /* D0 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0020), + /* D1 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0021), + /* D2 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0022), + /* D3 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0023), + /* D4 */ NODE(OpcodeTreeNodeType::MODE, 0x0028), + /* D5 */ NODE(OpcodeTreeNodeType::MODE, 0x0029), + /* D6 */ NODE(OpcodeTreeNodeType::MODE, 0x002A), + /* D7 */ 0x06B2, + /* D8 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0015), + /* D9 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0016), + /* DA */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0017), + /* DB */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0018), + /* DC */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0019), + /* DD */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x001A), + /* DE */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x001B), + /* DF */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x001C), + /* E0 */ 0x0306, + /* E1 */ 0x0305, + /* E2 */ 0x0304, + /* E3 */ NODE(OpcodeTreeNodeType::ADDRESS_SIZE, 0x0000), + /* E4 */ 0x02A9, + /* E5 */ 0x02AA, + /* E6 */ 0x039D, + /* E7 */ 0x039E, + /* E8 */ 0x004E, + /* E9 */ 0x02DB, + /* EA */ NODE(OpcodeTreeNodeType::MODE, 0x002B), + /* EB */ 0x02DD, + /* EC */ 0x02A7, + /* ED */ 0x02A8, + /* EE */ 0x039B, + /* EF */ 0x039C, + /* F0 */ 0x02FF, + /* F1 */ 0x02BA, + /* F2 */ 0x04D7, + /* F3 */ 0x04D6, + /* F4 */ 0x029D, + /* F5 */ 0x0059, + /* F6 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x002C), + /* F7 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x002D), + /* F8 */ 0x0053, + /* F9 */ 0x0538, + /* FA */ 0x0057, + /* FB */ 0x053B, + /* FC */ 0x0054, + /* FD */ 0x0539, + /* FE */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x002E), + /* FF */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x002F), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0000), + /* 01 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0000), + /* 02 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0003), + /* 03 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0004), + /* 04 */ ZYDIS_INVALID, + /* 05 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0005), + /* 06 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0006), + /* 07 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0007), + /* 08 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0008), + /* 09 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0009), + /* 0A */ ZYDIS_INVALID, + /* 0B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x000A), + /* 0C */ ZYDIS_INVALID, + /* 0D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x000B), + /* 0E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x000C), + /* 0F */ NODE(OpcodeTreeNodeType::AMD3DNOW, 0x0000), + /* 10 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x000D), + /* 11 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x000E), + /* 12 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0001), + /* 13 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0011), + /* 14 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0012), + /* 15 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0013), + /* 16 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0002), + /* 17 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0016), + /* 18 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0017), + /* 19 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0018), + /* 1A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0019), + /* 1B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x001A), + /* 1C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x001B), + /* 1D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x001C), + /* 1E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x001D), + /* 1F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x001E), + /* 20 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x001F), + /* 21 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0020), + /* 22 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0021), + /* 23 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0022), + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0023), + /* 29 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0024), + /* 2A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0025), + /* 2B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0026), + /* 2C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0027), + /* 2D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0028), + /* 2E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0029), + /* 2F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x002A), + /* 30 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x002B), + /* 31 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x002C), + /* 32 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x002D), + /* 33 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x002E), + /* 34 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x002F), + /* 35 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0030), + /* 36 */ ZYDIS_INVALID, + /* 37 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0031), + /* 38 */ NODE(OpcodeTreeNodeType::TABLE, 0x0002), + /* 39 */ ZYDIS_INVALID, + /* 3A */ NODE(OpcodeTreeNodeType::TABLE, 0x0003), + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + /* 40 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0081), + /* 41 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0082), + /* 42 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0083), + /* 43 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0084), + /* 44 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0085), + /* 45 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0086), + /* 46 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0087), + /* 47 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0088), + /* 48 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0089), + /* 49 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x008A), + /* 4A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x008B), + /* 4B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x008C), + /* 4C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x008D), + /* 4D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x008E), + /* 4E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x008F), + /* 4F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0090), + /* 50 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0091), + /* 51 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0092), + /* 52 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0093), + /* 53 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0094), + /* 54 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0095), + /* 55 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0096), + /* 56 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0097), + /* 57 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0098), + /* 58 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0099), + /* 59 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x009A), + /* 5A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x009B), + /* 5B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x009C), + /* 5C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x009D), + /* 5D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x009E), + /* 5E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x009F), + /* 5F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A0), + /* 60 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A1), + /* 61 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A2), + /* 62 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A3), + /* 63 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A4), + /* 64 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A5), + /* 65 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A6), + /* 66 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A7), + /* 67 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A8), + /* 68 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00A9), + /* 69 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00AA), + /* 6A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00AB), + /* 6B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00AC), + /* 6C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00AD), + /* 6D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00AE), + /* 6E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00AF), + /* 6F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B0), + /* 70 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B1), + /* 71 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B2), + /* 72 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B3), + /* 73 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B4), + /* 74 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B5), + /* 75 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B6), + /* 76 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B7), + /* 77 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B8), + /* 78 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00B9), + /* 79 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00BA), + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00BB), + /* 7D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00BC), + /* 7E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00BD), + /* 7F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00BE), + /* 80 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00BF), + /* 81 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C0), + /* 82 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C1), + /* 83 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C2), + /* 84 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C3), + /* 85 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C4), + /* 86 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C5), + /* 87 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C6), + /* 88 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C7), + /* 89 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C8), + /* 8A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00C9), + /* 8B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00CA), + /* 8C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00CB), + /* 8D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00CC), + /* 8E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00CD), + /* 8F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00CE), + /* 90 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00CF), + /* 91 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D0), + /* 92 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D1), + /* 93 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D2), + /* 94 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D3), + /* 95 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D4), + /* 96 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D5), + /* 97 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D6), + /* 98 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D7), + /* 99 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D8), + /* 9A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00D9), + /* 9B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00DA), + /* 9C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00DB), + /* 9D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00DC), + /* 9E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00DD), + /* 9F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00DE), + /* A0 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00DF), + /* A1 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E0), + /* A2 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E1), + /* A3 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E2), + /* A4 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E3), + /* A5 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E4), + /* A6 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0003), + /* A7 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0004), + /* A8 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E7), + /* A9 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E8), + /* AA */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E9), + /* AB */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00EA), + /* AC */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00EB), + /* AD */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00EC), + /* AE */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0005), + /* AF */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00EF), + /* B0 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F0), + /* B1 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F1), + /* B2 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F2), + /* B3 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F3), + /* B4 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F4), + /* B5 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F5), + /* B6 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F6), + /* B7 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F7), + /* B8 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F8), + /* B9 */ ZYDIS_INVALID, + /* BA */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00F9), + /* BB */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00FA), + /* BC */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00FB), + /* BD */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00FC), + /* BE */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00FD), + /* BF */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00FE), + /* C0 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00FF), + /* C1 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0100), + /* C2 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0101), + /* C3 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0102), + /* C4 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0103), + /* C5 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0104), + /* C6 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0105), + /* C7 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0006), + /* C8 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0108), + /* C9 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0109), + /* CA */ NODE(OpcodeTreeNodeType::MANDATORY, 0x010A), + /* CB */ NODE(OpcodeTreeNodeType::MANDATORY, 0x010B), + /* CC */ NODE(OpcodeTreeNodeType::MANDATORY, 0x010C), + /* CD */ NODE(OpcodeTreeNodeType::MANDATORY, 0x010D), + /* CE */ NODE(OpcodeTreeNodeType::MANDATORY, 0x010E), + /* CF */ NODE(OpcodeTreeNodeType::MANDATORY, 0x010F), + /* D0 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0110), + /* D1 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0111), + /* D2 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0112), + /* D3 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0113), + /* D4 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0114), + /* D5 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0115), + /* D6 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0116), + /* D7 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0117), + /* D8 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0118), + /* D9 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0119), + /* DA */ NODE(OpcodeTreeNodeType::MANDATORY, 0x011A), + /* DB */ NODE(OpcodeTreeNodeType::MANDATORY, 0x011B), + /* DC */ NODE(OpcodeTreeNodeType::MANDATORY, 0x011C), + /* DD */ NODE(OpcodeTreeNodeType::MANDATORY, 0x011D), + /* DE */ NODE(OpcodeTreeNodeType::MANDATORY, 0x011E), + /* DF */ NODE(OpcodeTreeNodeType::MANDATORY, 0x011F), + /* E0 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0120), + /* E1 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0121), + /* E2 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0122), + /* E3 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0123), + /* E4 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0124), + /* E5 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0125), + /* E6 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0126), + /* E7 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0127), + /* E8 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0128), + /* E9 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0129), + /* EA */ NODE(OpcodeTreeNodeType::MANDATORY, 0x012A), + /* EB */ NODE(OpcodeTreeNodeType::MANDATORY, 0x012B), + /* EC */ NODE(OpcodeTreeNodeType::MANDATORY, 0x012C), + /* ED */ NODE(OpcodeTreeNodeType::MANDATORY, 0x012D), + /* EE */ NODE(OpcodeTreeNodeType::MANDATORY, 0x012E), + /* EF */ NODE(OpcodeTreeNodeType::MANDATORY, 0x012F), + /* F0 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0130), + /* F1 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0131), + /* F2 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0132), + /* F3 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0133), + /* F4 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0134), + /* F5 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0135), + /* F6 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0136), + /* F7 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0007), + /* F8 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0138), + /* F9 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0139), + /* FA */ NODE(OpcodeTreeNodeType::MANDATORY, 0x013A), + /* FB */ NODE(OpcodeTreeNodeType::MANDATORY, 0x013B), + /* FC */ NODE(OpcodeTreeNodeType::MANDATORY, 0x013C), + /* FD */ NODE(OpcodeTreeNodeType::MANDATORY, 0x013D), + /* FE */ NODE(OpcodeTreeNodeType::MANDATORY, 0x013E), + /* FF */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0032), + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0033), + /* 02 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0034), + /* 03 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0035), + /* 04 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0036), + /* 05 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0037), + /* 06 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0038), + /* 07 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0039), + /* 08 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x003A), + /* 09 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x003B), + /* 0A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x003C), + /* 0B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x003D), + /* 0C */ ZYDIS_INVALID, + /* 0D */ ZYDIS_INVALID, + /* 0E */ ZYDIS_INVALID, + /* 0F */ ZYDIS_INVALID, + /* 10 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x003E), + /* 11 */ ZYDIS_INVALID, + /* 12 */ ZYDIS_INVALID, + /* 13 */ ZYDIS_INVALID, + /* 14 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x003F), + /* 15 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0040), + /* 16 */ ZYDIS_INVALID, + /* 17 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0041), + /* 18 */ ZYDIS_INVALID, + /* 19 */ ZYDIS_INVALID, + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0042), + /* 1D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0043), + /* 1E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0044), + /* 1F */ ZYDIS_INVALID, + /* 20 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0045), + /* 21 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0046), + /* 22 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0047), + /* 23 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0048), + /* 24 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0049), + /* 25 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x004A), + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x004B), + /* 29 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x004C), + /* 2A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x004D), + /* 2B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x004E), + /* 2C */ ZYDIS_INVALID, + /* 2D */ ZYDIS_INVALID, + /* 2E */ ZYDIS_INVALID, + /* 2F */ ZYDIS_INVALID, + /* 30 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x004F), + /* 31 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0050), + /* 32 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0051), + /* 33 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0052), + /* 34 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0053), + /* 35 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0054), + /* 36 */ ZYDIS_INVALID, + /* 37 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0055), + /* 38 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0056), + /* 39 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0057), + /* 3A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0058), + /* 3B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0059), + /* 3C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x005A), + /* 3D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x005B), + /* 3E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x005C), + /* 3F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x005D), + /* 40 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x005E), + /* 41 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x005F), + /* 42 */ ZYDIS_INVALID, + /* 43 */ ZYDIS_INVALID, + /* 44 */ ZYDIS_INVALID, + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ ZYDIS_INVALID, + /* 4B */ ZYDIS_INVALID, + /* 4C */ ZYDIS_INVALID, + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ ZYDIS_INVALID, + /* 51 */ ZYDIS_INVALID, + /* 52 */ ZYDIS_INVALID, + /* 53 */ ZYDIS_INVALID, + /* 54 */ ZYDIS_INVALID, + /* 55 */ ZYDIS_INVALID, + /* 56 */ ZYDIS_INVALID, + /* 57 */ ZYDIS_INVALID, + /* 58 */ ZYDIS_INVALID, + /* 59 */ ZYDIS_INVALID, + /* 5A */ ZYDIS_INVALID, + /* 5B */ ZYDIS_INVALID, + /* 5C */ ZYDIS_INVALID, + /* 5D */ ZYDIS_INVALID, + /* 5E */ ZYDIS_INVALID, + /* 5F */ ZYDIS_INVALID, + /* 60 */ ZYDIS_INVALID, + /* 61 */ ZYDIS_INVALID, + /* 62 */ ZYDIS_INVALID, + /* 63 */ ZYDIS_INVALID, + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ ZYDIS_INVALID, + /* 69 */ ZYDIS_INVALID, + /* 6A */ ZYDIS_INVALID, + /* 6B */ ZYDIS_INVALID, + /* 6C */ ZYDIS_INVALID, + /* 6D */ ZYDIS_INVALID, + /* 6E */ ZYDIS_INVALID, + /* 6F */ ZYDIS_INVALID, + /* 70 */ ZYDIS_INVALID, + /* 71 */ ZYDIS_INVALID, + /* 72 */ ZYDIS_INVALID, + /* 73 */ ZYDIS_INVALID, + /* 74 */ ZYDIS_INVALID, + /* 75 */ ZYDIS_INVALID, + /* 76 */ ZYDIS_INVALID, + /* 77 */ ZYDIS_INVALID, + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ ZYDIS_INVALID, + /* 7D */ ZYDIS_INVALID, + /* 7E */ ZYDIS_INVALID, + /* 7F */ ZYDIS_INVALID, + /* 80 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0060), + /* 81 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0061), + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ ZYDIS_INVALID, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ ZYDIS_INVALID, + /* 8F */ ZYDIS_INVALID, + /* 90 */ ZYDIS_INVALID, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ ZYDIS_INVALID, + /* 95 */ ZYDIS_INVALID, + /* 96 */ ZYDIS_INVALID, + /* 97 */ ZYDIS_INVALID, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ ZYDIS_INVALID, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ ZYDIS_INVALID, + /* 9F */ ZYDIS_INVALID, + /* A0 */ ZYDIS_INVALID, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ ZYDIS_INVALID, + /* A5 */ ZYDIS_INVALID, + /* A6 */ ZYDIS_INVALID, + /* A7 */ ZYDIS_INVALID, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ ZYDIS_INVALID, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ ZYDIS_INVALID, + /* AF */ ZYDIS_INVALID, + /* B0 */ ZYDIS_INVALID, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ ZYDIS_INVALID, + /* B5 */ ZYDIS_INVALID, + /* B6 */ ZYDIS_INVALID, + /* B7 */ ZYDIS_INVALID, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ ZYDIS_INVALID, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ ZYDIS_INVALID, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ ZYDIS_INVALID, + /* C3 */ ZYDIS_INVALID, + /* C4 */ ZYDIS_INVALID, + /* C5 */ ZYDIS_INVALID, + /* C6 */ ZYDIS_INVALID, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ ZYDIS_INVALID, + /* D1 */ ZYDIS_INVALID, + /* D2 */ ZYDIS_INVALID, + /* D3 */ ZYDIS_INVALID, + /* D4 */ ZYDIS_INVALID, + /* D5 */ ZYDIS_INVALID, + /* D6 */ ZYDIS_INVALID, + /* D7 */ ZYDIS_INVALID, + /* D8 */ ZYDIS_INVALID, + /* D9 */ ZYDIS_INVALID, + /* DA */ ZYDIS_INVALID, + /* DB */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0062), + /* DC */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0063), + /* DD */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0064), + /* DE */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0065), + /* DF */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0066), + /* E0 */ ZYDIS_INVALID, + /* E1 */ ZYDIS_INVALID, + /* E2 */ ZYDIS_INVALID, + /* E3 */ ZYDIS_INVALID, + /* E4 */ ZYDIS_INVALID, + /* E5 */ ZYDIS_INVALID, + /* E6 */ ZYDIS_INVALID, + /* E7 */ ZYDIS_INVALID, + /* E8 */ ZYDIS_INVALID, + /* E9 */ ZYDIS_INVALID, + /* EA */ ZYDIS_INVALID, + /* EB */ ZYDIS_INVALID, + /* EC */ ZYDIS_INVALID, + /* ED */ ZYDIS_INVALID, + /* EE */ ZYDIS_INVALID, + /* EF */ ZYDIS_INVALID, + /* F0 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0067), + /* F1 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0068), + /* F2 */ ZYDIS_INVALID, + /* F3 */ ZYDIS_INVALID, + /* F4 */ ZYDIS_INVALID, + /* F5 */ ZYDIS_INVALID, + /* F6 */ ZYDIS_INVALID, + /* F7 */ ZYDIS_INVALID, + /* F8 */ ZYDIS_INVALID, + /* F9 */ ZYDIS_INVALID, + /* FA */ ZYDIS_INVALID, + /* FB */ ZYDIS_INVALID, + /* FC */ ZYDIS_INVALID, + /* FD */ ZYDIS_INVALID, + /* FE */ ZYDIS_INVALID, + /* FF */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + /* 08 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0069), + /* 09 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x006A), + /* 0A */ NODE(OpcodeTreeNodeType::MANDATORY, 0x006B), + /* 0B */ NODE(OpcodeTreeNodeType::MANDATORY, 0x006C), + /* 0C */ NODE(OpcodeTreeNodeType::MANDATORY, 0x006D), + /* 0D */ NODE(OpcodeTreeNodeType::MANDATORY, 0x006E), + /* 0E */ NODE(OpcodeTreeNodeType::MANDATORY, 0x006F), + /* 0F */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0070), + /* 10 */ ZYDIS_INVALID, + /* 11 */ ZYDIS_INVALID, + /* 12 */ ZYDIS_INVALID, + /* 13 */ ZYDIS_INVALID, + /* 14 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0071), + /* 15 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0072), + /* 16 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0073), + /* 17 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0074), + /* 18 */ ZYDIS_INVALID, + /* 19 */ ZYDIS_INVALID, + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ ZYDIS_INVALID, + /* 1D */ ZYDIS_INVALID, + /* 1E */ ZYDIS_INVALID, + /* 1F */ ZYDIS_INVALID, + /* 20 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0075), + /* 21 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0076), + /* 22 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0077), + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ ZYDIS_INVALID, + /* 29 */ ZYDIS_INVALID, + /* 2A */ ZYDIS_INVALID, + /* 2B */ ZYDIS_INVALID, + /* 2C */ ZYDIS_INVALID, + /* 2D */ ZYDIS_INVALID, + /* 2E */ ZYDIS_INVALID, + /* 2F */ ZYDIS_INVALID, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + /* 40 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0078), + /* 41 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0079), + /* 42 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x007A), + /* 43 */ ZYDIS_INVALID, + /* 44 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x007B), + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ ZYDIS_INVALID, + /* 4B */ ZYDIS_INVALID, + /* 4C */ ZYDIS_INVALID, + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ ZYDIS_INVALID, + /* 51 */ ZYDIS_INVALID, + /* 52 */ ZYDIS_INVALID, + /* 53 */ ZYDIS_INVALID, + /* 54 */ ZYDIS_INVALID, + /* 55 */ ZYDIS_INVALID, + /* 56 */ ZYDIS_INVALID, + /* 57 */ ZYDIS_INVALID, + /* 58 */ ZYDIS_INVALID, + /* 59 */ ZYDIS_INVALID, + /* 5A */ ZYDIS_INVALID, + /* 5B */ ZYDIS_INVALID, + /* 5C */ ZYDIS_INVALID, + /* 5D */ ZYDIS_INVALID, + /* 5E */ ZYDIS_INVALID, + /* 5F */ ZYDIS_INVALID, + /* 60 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x007C), + /* 61 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x007D), + /* 62 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x007E), + /* 63 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x007F), + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ ZYDIS_INVALID, + /* 69 */ ZYDIS_INVALID, + /* 6A */ ZYDIS_INVALID, + /* 6B */ ZYDIS_INVALID, + /* 6C */ ZYDIS_INVALID, + /* 6D */ ZYDIS_INVALID, + /* 6E */ ZYDIS_INVALID, + /* 6F */ ZYDIS_INVALID, + /* 70 */ ZYDIS_INVALID, + /* 71 */ ZYDIS_INVALID, + /* 72 */ ZYDIS_INVALID, + /* 73 */ ZYDIS_INVALID, + /* 74 */ ZYDIS_INVALID, + /* 75 */ ZYDIS_INVALID, + /* 76 */ ZYDIS_INVALID, + /* 77 */ ZYDIS_INVALID, + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ ZYDIS_INVALID, + /* 7D */ ZYDIS_INVALID, + /* 7E */ ZYDIS_INVALID, + /* 7F */ ZYDIS_INVALID, + /* 80 */ ZYDIS_INVALID, + /* 81 */ ZYDIS_INVALID, + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ ZYDIS_INVALID, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ ZYDIS_INVALID, + /* 8F */ ZYDIS_INVALID, + /* 90 */ ZYDIS_INVALID, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ ZYDIS_INVALID, + /* 95 */ ZYDIS_INVALID, + /* 96 */ ZYDIS_INVALID, + /* 97 */ ZYDIS_INVALID, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ ZYDIS_INVALID, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ ZYDIS_INVALID, + /* 9F */ ZYDIS_INVALID, + /* A0 */ ZYDIS_INVALID, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ ZYDIS_INVALID, + /* A5 */ ZYDIS_INVALID, + /* A6 */ ZYDIS_INVALID, + /* A7 */ ZYDIS_INVALID, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ ZYDIS_INVALID, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ ZYDIS_INVALID, + /* AF */ ZYDIS_INVALID, + /* B0 */ ZYDIS_INVALID, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ ZYDIS_INVALID, + /* B5 */ ZYDIS_INVALID, + /* B6 */ ZYDIS_INVALID, + /* B7 */ ZYDIS_INVALID, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ ZYDIS_INVALID, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ ZYDIS_INVALID, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ ZYDIS_INVALID, + /* C3 */ ZYDIS_INVALID, + /* C4 */ ZYDIS_INVALID, + /* C5 */ ZYDIS_INVALID, + /* C6 */ ZYDIS_INVALID, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ ZYDIS_INVALID, + /* D1 */ ZYDIS_INVALID, + /* D2 */ ZYDIS_INVALID, + /* D3 */ ZYDIS_INVALID, + /* D4 */ ZYDIS_INVALID, + /* D5 */ ZYDIS_INVALID, + /* D6 */ ZYDIS_INVALID, + /* D7 */ ZYDIS_INVALID, + /* D8 */ ZYDIS_INVALID, + /* D9 */ ZYDIS_INVALID, + /* DA */ ZYDIS_INVALID, + /* DB */ ZYDIS_INVALID, + /* DC */ ZYDIS_INVALID, + /* DD */ ZYDIS_INVALID, + /* DE */ ZYDIS_INVALID, + /* DF */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0080), + /* E0 */ ZYDIS_INVALID, + /* E1 */ ZYDIS_INVALID, + /* E2 */ ZYDIS_INVALID, + /* E3 */ ZYDIS_INVALID, + /* E4 */ ZYDIS_INVALID, + /* E5 */ ZYDIS_INVALID, + /* E6 */ ZYDIS_INVALID, + /* E7 */ ZYDIS_INVALID, + /* E8 */ ZYDIS_INVALID, + /* E9 */ ZYDIS_INVALID, + /* EA */ ZYDIS_INVALID, + /* EB */ ZYDIS_INVALID, + /* EC */ ZYDIS_INVALID, + /* ED */ ZYDIS_INVALID, + /* EE */ ZYDIS_INVALID, + /* EF */ ZYDIS_INVALID, + /* F0 */ ZYDIS_INVALID, + /* F1 */ ZYDIS_INVALID, + /* F2 */ ZYDIS_INVALID, + /* F3 */ ZYDIS_INVALID, + /* F4 */ ZYDIS_INVALID, + /* F5 */ ZYDIS_INVALID, + /* F6 */ ZYDIS_INVALID, + /* F7 */ ZYDIS_INVALID, + /* F8 */ ZYDIS_INVALID, + /* F9 */ ZYDIS_INVALID, + /* FA */ ZYDIS_INVALID, + /* FB */ ZYDIS_INVALID, + /* FC */ ZYDIS_INVALID, + /* FD */ ZYDIS_INVALID, + /* FE */ ZYDIS_INVALID, + /* FF */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + /* 08 */ ZYDIS_INVALID, + /* 09 */ ZYDIS_INVALID, + /* 0A */ ZYDIS_INVALID, + /* 0B */ ZYDIS_INVALID, + /* 0C */ ZYDIS_INVALID, + /* 0D */ ZYDIS_INVALID, + /* 0E */ ZYDIS_INVALID, + /* 0F */ ZYDIS_INVALID, + /* 10 */ 0x05E6, + /* 11 */ 0x05E5, + /* 12 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0008), + /* 13 */ 0x05CC, + /* 14 */ 0x0698, + /* 15 */ 0x0696, + /* 16 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0009), + /* 17 */ 0x05C7, + /* 18 */ ZYDIS_INVALID, + /* 19 */ ZYDIS_INVALID, + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ ZYDIS_INVALID, + /* 1D */ ZYDIS_INVALID, + /* 1E */ ZYDIS_INVALID, + /* 1F */ ZYDIS_INVALID, + /* 20 */ ZYDIS_INVALID, + /* 21 */ ZYDIS_INVALID, + /* 22 */ ZYDIS_INVALID, + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ 0x05B8, + /* 29 */ 0x05B7, + /* 2A */ ZYDIS_INVALID, + /* 2B */ 0x05D2, + /* 2C */ ZYDIS_INVALID, + /* 2D */ ZYDIS_INVALID, + /* 2E */ 0x0694, + /* 2F */ 0x0581, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + /* 40 */ ZYDIS_INVALID, + /* 41 */ ZYDIS_INVALID, + /* 42 */ ZYDIS_INVALID, + /* 43 */ ZYDIS_INVALID, + /* 44 */ ZYDIS_INVALID, + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ ZYDIS_INVALID, + /* 4B */ ZYDIS_INVALID, + /* 4C */ ZYDIS_INVALID, + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ 0x05CE, + /* 51 */ 0x0689, + /* 52 */ 0x0684, + /* 53 */ 0x067E, + /* 54 */ 0x0575, + /* 55 */ 0x0573, + /* 56 */ 0x05F6, + /* 57 */ 0x069A, + /* 58 */ 0x0567, + /* 59 */ 0x05EF, + /* 5A */ 0x0587, + /* 5B */ 0x0583, + /* 5C */ 0x068E, + /* 5D */ 0x05AF, + /* 5E */ 0x0593, + /* 5F */ 0x05A9, + /* 60 */ ZYDIS_INVALID, + /* 61 */ ZYDIS_INVALID, + /* 62 */ ZYDIS_INVALID, + /* 63 */ ZYDIS_INVALID, + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ ZYDIS_INVALID, + /* 69 */ ZYDIS_INVALID, + /* 6A */ ZYDIS_INVALID, + /* 6B */ ZYDIS_INVALID, + /* 6C */ ZYDIS_INVALID, + /* 6D */ ZYDIS_INVALID, + /* 6E */ ZYDIS_INVALID, + /* 6F */ ZYDIS_INVALID, + /* 70 */ ZYDIS_INVALID, + /* 71 */ ZYDIS_INVALID, + /* 72 */ ZYDIS_INVALID, + /* 73 */ ZYDIS_INVALID, + /* 74 */ ZYDIS_INVALID, + /* 75 */ ZYDIS_INVALID, + /* 76 */ ZYDIS_INVALID, + /* 77 */ NODE(OpcodeTreeNodeType::VEXL, 0x0000), + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ ZYDIS_INVALID, + /* 7D */ ZYDIS_INVALID, + /* 7E */ ZYDIS_INVALID, + /* 7F */ ZYDIS_INVALID, + /* 80 */ ZYDIS_INVALID, + /* 81 */ ZYDIS_INVALID, + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ ZYDIS_INVALID, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ ZYDIS_INVALID, + /* 8F */ ZYDIS_INVALID, + /* 90 */ ZYDIS_INVALID, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ ZYDIS_INVALID, + /* 95 */ ZYDIS_INVALID, + /* 96 */ ZYDIS_INVALID, + /* 97 */ ZYDIS_INVALID, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ ZYDIS_INVALID, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ ZYDIS_INVALID, + /* 9F */ ZYDIS_INVALID, + /* A0 */ ZYDIS_INVALID, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ ZYDIS_INVALID, + /* A5 */ ZYDIS_INVALID, + /* A6 */ ZYDIS_INVALID, + /* A7 */ ZYDIS_INVALID, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ ZYDIS_INVALID, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x000A), + /* AF */ ZYDIS_INVALID, + /* B0 */ ZYDIS_INVALID, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ ZYDIS_INVALID, + /* B5 */ ZYDIS_INVALID, + /* B6 */ ZYDIS_INVALID, + /* B7 */ ZYDIS_INVALID, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ ZYDIS_INVALID, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ ZYDIS_INVALID, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ 0x057D, + /* C3 */ ZYDIS_INVALID, + /* C4 */ ZYDIS_INVALID, + /* C5 */ ZYDIS_INVALID, + /* C6 */ 0x0687, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ ZYDIS_INVALID, + /* D1 */ ZYDIS_INVALID, + /* D2 */ ZYDIS_INVALID, + /* D3 */ ZYDIS_INVALID, + /* D4 */ ZYDIS_INVALID, + /* D5 */ ZYDIS_INVALID, + /* D6 */ ZYDIS_INVALID, + /* D7 */ ZYDIS_INVALID, + /* D8 */ ZYDIS_INVALID, + /* D9 */ ZYDIS_INVALID, + /* DA */ ZYDIS_INVALID, + /* DB */ ZYDIS_INVALID, + /* DC */ ZYDIS_INVALID, + /* DD */ ZYDIS_INVALID, + /* DE */ ZYDIS_INVALID, + /* DF */ ZYDIS_INVALID, + /* E0 */ ZYDIS_INVALID, + /* E1 */ ZYDIS_INVALID, + /* E2 */ ZYDIS_INVALID, + /* E3 */ ZYDIS_INVALID, + /* E4 */ ZYDIS_INVALID, + /* E5 */ ZYDIS_INVALID, + /* E6 */ ZYDIS_INVALID, + /* E7 */ ZYDIS_INVALID, + /* E8 */ ZYDIS_INVALID, + /* E9 */ ZYDIS_INVALID, + /* EA */ ZYDIS_INVALID, + /* EB */ ZYDIS_INVALID, + /* EC */ ZYDIS_INVALID, + /* ED */ ZYDIS_INVALID, + /* EE */ ZYDIS_INVALID, + /* EF */ ZYDIS_INVALID, + /* F0 */ ZYDIS_INVALID, + /* F1 */ ZYDIS_INVALID, + /* F2 */ ZYDIS_INVALID, + /* F3 */ ZYDIS_INVALID, + /* F4 */ ZYDIS_INVALID, + /* F5 */ ZYDIS_INVALID, + /* F6 */ ZYDIS_INVALID, + /* F7 */ ZYDIS_INVALID, + /* F8 */ ZYDIS_INVALID, + /* F9 */ ZYDIS_INVALID, + /* FA */ ZYDIS_INVALID, + /* FB */ ZYDIS_INVALID, + /* FC */ ZYDIS_INVALID, + /* FD */ ZYDIS_INVALID, + /* FE */ ZYDIS_INVALID, + /* FF */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + /* 08 */ ZYDIS_INVALID, + /* 09 */ ZYDIS_INVALID, + /* 0A */ ZYDIS_INVALID, + /* 0B */ ZYDIS_INVALID, + /* 0C */ ZYDIS_INVALID, + /* 0D */ ZYDIS_INVALID, + /* 0E */ ZYDIS_INVALID, + /* 0F */ ZYDIS_INVALID, + /* 10 */ 0x05E4, + /* 11 */ 0x05E3, + /* 12 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x000B), + /* 13 */ 0x05CA, + /* 14 */ 0x0697, + /* 15 */ 0x0695, + /* 16 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x000C), + /* 17 */ 0x05C5, + /* 18 */ ZYDIS_INVALID, + /* 19 */ ZYDIS_INVALID, + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ ZYDIS_INVALID, + /* 1D */ ZYDIS_INVALID, + /* 1E */ ZYDIS_INVALID, + /* 1F */ ZYDIS_INVALID, + /* 20 */ ZYDIS_INVALID, + /* 21 */ ZYDIS_INVALID, + /* 22 */ ZYDIS_INVALID, + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ 0x05B5, + /* 29 */ 0x05B6, + /* 2A */ ZYDIS_INVALID, + /* 2B */ 0x05D1, + /* 2C */ ZYDIS_INVALID, + /* 2D */ ZYDIS_INVALID, + /* 2E */ 0x0693, + /* 2F */ 0x0580, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + /* 40 */ ZYDIS_INVALID, + /* 41 */ ZYDIS_INVALID, + /* 42 */ ZYDIS_INVALID, + /* 43 */ ZYDIS_INVALID, + /* 44 */ ZYDIS_INVALID, + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ ZYDIS_INVALID, + /* 4B */ ZYDIS_INVALID, + /* 4C */ ZYDIS_INVALID, + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ 0x05CD, + /* 51 */ 0x0688, + /* 52 */ ZYDIS_INVALID, + /* 53 */ ZYDIS_INVALID, + /* 54 */ 0x0574, + /* 55 */ 0x0572, + /* 56 */ 0x05F5, + /* 57 */ 0x0699, + /* 58 */ 0x0566, + /* 59 */ 0x05EE, + /* 5A */ 0x0585, + /* 5B */ 0x0586, + /* 5C */ 0x068D, + /* 5D */ 0x05AE, + /* 5E */ 0x0592, + /* 5F */ 0x05A8, + /* 60 */ 0x0679, + /* 61 */ 0x067C, + /* 62 */ 0x067A, + /* 63 */ 0x05FB, + /* 64 */ 0x0614, + /* 65 */ 0x0617, + /* 66 */ 0x0615, + /* 67 */ 0x05FD, + /* 68 */ 0x0675, + /* 69 */ 0x0678, + /* 6A */ 0x0676, + /* 6B */ 0x05FA, + /* 6C */ 0x067B, + /* 6D */ 0x0677, + /* 6E */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0014), + /* 6F */ 0x05BF, + /* 70 */ 0x0654, + /* 71 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x001B), + /* 72 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x001C), + /* 73 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x001D), + /* 74 */ 0x060E, + /* 75 */ 0x0611, + /* 76 */ 0x060F, + /* 77 */ ZYDIS_INVALID, + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ 0x059C, + /* 7D */ 0x059E, + /* 7E */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0015), + /* 7F */ 0x05C0, + /* 80 */ ZYDIS_INVALID, + /* 81 */ ZYDIS_INVALID, + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ ZYDIS_INVALID, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ ZYDIS_INVALID, + /* 8F */ ZYDIS_INVALID, + /* 90 */ ZYDIS_INVALID, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ ZYDIS_INVALID, + /* 95 */ ZYDIS_INVALID, + /* 96 */ ZYDIS_INVALID, + /* 97 */ ZYDIS_INVALID, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ ZYDIS_INVALID, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ ZYDIS_INVALID, + /* 9F */ ZYDIS_INVALID, + /* A0 */ ZYDIS_INVALID, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ ZYDIS_INVALID, + /* A5 */ ZYDIS_INVALID, + /* A6 */ ZYDIS_INVALID, + /* A7 */ ZYDIS_INVALID, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ ZYDIS_INVALID, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ ZYDIS_INVALID, + /* AF */ ZYDIS_INVALID, + /* B0 */ ZYDIS_INVALID, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ ZYDIS_INVALID, + /* B5 */ ZYDIS_INVALID, + /* B6 */ ZYDIS_INVALID, + /* B7 */ ZYDIS_INVALID, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ ZYDIS_INVALID, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ ZYDIS_INVALID, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ 0x057C, + /* C3 */ ZYDIS_INVALID, + /* C4 */ 0x0630, + /* C5 */ 0x0623, + /* C6 */ 0x0686, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ 0x056A, + /* D1 */ 0x066B, + /* D2 */ 0x0665, + /* D3 */ 0x0669, + /* D4 */ 0x0600, + /* D5 */ 0x0650, + /* D6 */ 0x05D4, + /* D7 */ NODE(OpcodeTreeNodeType::VEXL, 0x0004), + /* D8 */ 0x0671, + /* D9 */ 0x0672, + /* DA */ 0x063C, + /* DB */ 0x0607, + /* DC */ 0x0603, + /* DD */ 0x0604, + /* DE */ 0x0636, + /* DF */ 0x0608, + /* E0 */ 0x0609, + /* E1 */ 0x0663, + /* E2 */ 0x0662, + /* E3 */ 0x060A, + /* E4 */ 0x064D, + /* E5 */ 0x064E, + /* E6 */ 0x058E, + /* E7 */ 0x05CF, + /* E8 */ 0x066F, + /* E9 */ 0x0670, + /* EA */ 0x063B, + /* EB */ 0x0651, + /* EC */ 0x0601, + /* ED */ 0x0602, + /* EE */ 0x0635, + /* EF */ 0x067D, + /* F0 */ ZYDIS_INVALID, + /* F1 */ NODE(OpcodeTreeNodeType::VEXL, 0x0005), + /* F2 */ NODE(OpcodeTreeNodeType::VEXL, 0x0006), + /* F3 */ NODE(OpcodeTreeNodeType::VEXL, 0x0007), + /* F4 */ ZYDIS_INVALID, + /* F5 */ 0x0632, + /* F6 */ 0x0652, + /* F7 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x000D), + /* F8 */ 0x066C, + /* F9 */ 0x0673, + /* FA */ 0x066D, + /* FB */ 0x066E, + /* FC */ 0x05FE, + /* FD */ 0x0605, + /* FE */ 0x05FF, + /* FF */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0653, + /* 01 */ 0x0627, + /* 02 */ 0x0625, + /* 03 */ 0x0626, + /* 04 */ 0x0631, + /* 05 */ 0x062B, + /* 06 */ 0x0629, + /* 07 */ 0x062A, + /* 08 */ 0x0657, + /* 09 */ 0x0659, + /* 0A */ 0x0658, + /* 0B */ 0x064C, + /* 0C */ NODE(OpcodeTreeNodeType::VEXW, 0x0000), + /* 0D */ NODE(OpcodeTreeNodeType::VEXW, 0x0001), + /* 0E */ NODE(OpcodeTreeNodeType::VEXW, 0x0002), + /* 0F */ NODE(OpcodeTreeNodeType::VEXW, 0x0003), + /* 10 */ ZYDIS_INVALID, + /* 11 */ ZYDIS_INVALID, + /* 12 */ ZYDIS_INVALID, + /* 13 */ ZYDIS_INVALID, + /* 14 */ ZYDIS_INVALID, + /* 15 */ ZYDIS_INVALID, + /* 16 */ ZYDIS_INVALID, + /* 17 */ 0x0674, + /* 18 */ NODE(OpcodeTreeNodeType::VEXW, 0x0004), + /* 19 */ NODE(OpcodeTreeNodeType::VEXW, 0x0005), + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ 0x05F7, + /* 1D */ 0x05F9, + /* 1E */ 0x05F8, + /* 1F */ ZYDIS_INVALID, + /* 20 */ 0x0642, + /* 21 */ 0x0640, + /* 22 */ 0x0641, + /* 23 */ 0x0643, + /* 24 */ 0x0644, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ 0x064B, + /* 29 */ 0x0610, + /* 2A */ 0x05D0, + /* 2B */ 0x05FC, + /* 2C */ NODE(OpcodeTreeNodeType::VEXW, 0x0006), + /* 2D */ NODE(OpcodeTreeNodeType::VEXW, 0x0007), + /* 2E */ NODE(OpcodeTreeNodeType::VEXW, 0x0008), + /* 2F */ NODE(OpcodeTreeNodeType::VEXW, 0x0009), + /* 30 */ 0x0647, + /* 31 */ 0x0645, + /* 32 */ 0x0646, + /* 33 */ 0x0649, + /* 34 */ 0x064A, + /* 35 */ 0x0648, + /* 36 */ ZYDIS_INVALID, + /* 37 */ 0x0616, + /* 38 */ 0x0639, + /* 39 */ 0x063A, + /* 3A */ 0x063E, + /* 3B */ 0x063D, + /* 3C */ 0x0633, + /* 3D */ 0x0634, + /* 3E */ 0x0638, + /* 3F */ 0x0637, + /* 40 */ 0x064F, + /* 41 */ 0x0628, + /* 42 */ ZYDIS_INVALID, + /* 43 */ ZYDIS_INVALID, + /* 44 */ ZYDIS_INVALID, + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ ZYDIS_INVALID, + /* 4B */ ZYDIS_INVALID, + /* 4C */ ZYDIS_INVALID, + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ ZYDIS_INVALID, + /* 51 */ ZYDIS_INVALID, + /* 52 */ ZYDIS_INVALID, + /* 53 */ ZYDIS_INVALID, + /* 54 */ ZYDIS_INVALID, + /* 55 */ ZYDIS_INVALID, + /* 56 */ ZYDIS_INVALID, + /* 57 */ ZYDIS_INVALID, + /* 58 */ ZYDIS_INVALID, + /* 59 */ ZYDIS_INVALID, + /* 5A */ ZYDIS_INVALID, + /* 5B */ ZYDIS_INVALID, + /* 5C */ ZYDIS_INVALID, + /* 5D */ ZYDIS_INVALID, + /* 5E */ ZYDIS_INVALID, + /* 5F */ ZYDIS_INVALID, + /* 60 */ ZYDIS_INVALID, + /* 61 */ ZYDIS_INVALID, + /* 62 */ ZYDIS_INVALID, + /* 63 */ ZYDIS_INVALID, + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ ZYDIS_INVALID, + /* 69 */ ZYDIS_INVALID, + /* 6A */ ZYDIS_INVALID, + /* 6B */ ZYDIS_INVALID, + /* 6C */ ZYDIS_INVALID, + /* 6D */ ZYDIS_INVALID, + /* 6E */ ZYDIS_INVALID, + /* 6F */ ZYDIS_INVALID, + /* 70 */ ZYDIS_INVALID, + /* 71 */ ZYDIS_INVALID, + /* 72 */ ZYDIS_INVALID, + /* 73 */ ZYDIS_INVALID, + /* 74 */ ZYDIS_INVALID, + /* 75 */ ZYDIS_INVALID, + /* 76 */ ZYDIS_INVALID, + /* 77 */ ZYDIS_INVALID, + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ ZYDIS_INVALID, + /* 7D */ ZYDIS_INVALID, + /* 7E */ ZYDIS_INVALID, + /* 7F */ ZYDIS_INVALID, + /* 80 */ ZYDIS_INVALID, + /* 81 */ ZYDIS_INVALID, + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ ZYDIS_INVALID, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ ZYDIS_INVALID, + /* 8F */ ZYDIS_INVALID, + /* 90 */ ZYDIS_INVALID, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ ZYDIS_INVALID, + /* 95 */ ZYDIS_INVALID, + /* 96 */ ZYDIS_INVALID, + /* 97 */ ZYDIS_INVALID, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ ZYDIS_INVALID, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ ZYDIS_INVALID, + /* 9F */ ZYDIS_INVALID, + /* A0 */ ZYDIS_INVALID, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ ZYDIS_INVALID, + /* A5 */ ZYDIS_INVALID, + /* A6 */ ZYDIS_INVALID, + /* A7 */ ZYDIS_INVALID, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ ZYDIS_INVALID, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ ZYDIS_INVALID, + /* AF */ ZYDIS_INVALID, + /* B0 */ ZYDIS_INVALID, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ ZYDIS_INVALID, + /* B5 */ ZYDIS_INVALID, + /* B6 */ ZYDIS_INVALID, + /* B7 */ ZYDIS_INVALID, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ ZYDIS_INVALID, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ ZYDIS_INVALID, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ ZYDIS_INVALID, + /* C3 */ ZYDIS_INVALID, + /* C4 */ ZYDIS_INVALID, + /* C5 */ ZYDIS_INVALID, + /* C6 */ ZYDIS_INVALID, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ ZYDIS_INVALID, + /* D1 */ ZYDIS_INVALID, + /* D2 */ ZYDIS_INVALID, + /* D3 */ ZYDIS_INVALID, + /* D4 */ ZYDIS_INVALID, + /* D5 */ ZYDIS_INVALID, + /* D6 */ ZYDIS_INVALID, + /* D7 */ ZYDIS_INVALID, + /* D8 */ ZYDIS_INVALID, + /* D9 */ ZYDIS_INVALID, + /* DA */ ZYDIS_INVALID, + /* DB */ 0x0570, + /* DC */ 0x056E, + /* DD */ 0x056F, + /* DE */ 0x056C, + /* DF */ 0x056D, + /* E0 */ ZYDIS_INVALID, + /* E1 */ ZYDIS_INVALID, + /* E2 */ ZYDIS_INVALID, + /* E3 */ ZYDIS_INVALID, + /* E4 */ ZYDIS_INVALID, + /* E5 */ ZYDIS_INVALID, + /* E6 */ ZYDIS_INVALID, + /* E7 */ ZYDIS_INVALID, + /* E8 */ ZYDIS_INVALID, + /* E9 */ ZYDIS_INVALID, + /* EA */ ZYDIS_INVALID, + /* EB */ ZYDIS_INVALID, + /* EC */ ZYDIS_INVALID, + /* ED */ ZYDIS_INVALID, + /* EE */ ZYDIS_INVALID, + /* EF */ ZYDIS_INVALID, + /* F0 */ ZYDIS_INVALID, + /* F1 */ ZYDIS_INVALID, + /* F2 */ ZYDIS_INVALID, + /* F3 */ ZYDIS_INVALID, + /* F4 */ ZYDIS_INVALID, + /* F5 */ ZYDIS_INVALID, + /* F6 */ ZYDIS_INVALID, + /* F7 */ ZYDIS_INVALID, + /* F8 */ ZYDIS_INVALID, + /* F9 */ ZYDIS_INVALID, + /* FA */ ZYDIS_INVALID, + /* FB */ ZYDIS_INVALID, + /* FC */ ZYDIS_INVALID, + /* FD */ ZYDIS_INVALID, + /* FE */ ZYDIS_INVALID, + /* FF */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ NODE(OpcodeTreeNodeType::VEXW, 0x000A), + /* 05 */ NODE(OpcodeTreeNodeType::VEXW, 0x000B), + /* 06 */ NODE(OpcodeTreeNodeType::VEXW, 0x000C), + /* 07 */ ZYDIS_INVALID, + /* 08 */ 0x0681, + /* 09 */ 0x0680, + /* 0A */ 0x0683, + /* 0B */ 0x0682, + /* 0C */ 0x0577, + /* 0D */ 0x0576, + /* 0E */ 0x060C, + /* 0F */ 0x0606, + /* 10 */ ZYDIS_INVALID, + /* 11 */ ZYDIS_INVALID, + /* 12 */ ZYDIS_INVALID, + /* 13 */ ZYDIS_INVALID, + /* 14 */ NODE(OpcodeTreeNodeType::VEXW, 0x000D), + /* 15 */ 0x0624, + /* 16 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0016), + /* 17 */ 0x059B, + /* 18 */ NODE(OpcodeTreeNodeType::VEXW, 0x0011), + /* 19 */ NODE(OpcodeTreeNodeType::VEXW, 0x0012), + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ ZYDIS_INVALID, + /* 1D */ ZYDIS_INVALID, + /* 1E */ ZYDIS_INVALID, + /* 1F */ ZYDIS_INVALID, + /* 20 */ NODE(OpcodeTreeNodeType::VEXW, 0x0013), + /* 21 */ 0x05A1, + /* 22 */ NODE(OpcodeTreeNodeType::MODE, 0x0025), + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ ZYDIS_INVALID, + /* 29 */ ZYDIS_INVALID, + /* 2A */ ZYDIS_INVALID, + /* 2B */ ZYDIS_INVALID, + /* 2C */ ZYDIS_INVALID, + /* 2D */ ZYDIS_INVALID, + /* 2E */ ZYDIS_INVALID, + /* 2F */ ZYDIS_INVALID, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + /* 40 */ 0x0597, + /* 41 */ 0x0596, + /* 42 */ 0x05E7, + /* 43 */ ZYDIS_INVALID, + /* 44 */ 0x060D, + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ NODE(OpcodeTreeNodeType::VEXW, 0x0016), + /* 4B */ NODE(OpcodeTreeNodeType::VEXW, 0x0017), + /* 4C */ NODE(OpcodeTreeNodeType::VEXW, 0x0018), + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ ZYDIS_INVALID, + /* 51 */ ZYDIS_INVALID, + /* 52 */ ZYDIS_INVALID, + /* 53 */ ZYDIS_INVALID, + /* 54 */ ZYDIS_INVALID, + /* 55 */ ZYDIS_INVALID, + /* 56 */ ZYDIS_INVALID, + /* 57 */ ZYDIS_INVALID, + /* 58 */ ZYDIS_INVALID, + /* 59 */ ZYDIS_INVALID, + /* 5A */ ZYDIS_INVALID, + /* 5B */ ZYDIS_INVALID, + /* 5C */ ZYDIS_INVALID, + /* 5D */ ZYDIS_INVALID, + /* 5E */ ZYDIS_INVALID, + /* 5F */ ZYDIS_INVALID, + /* 60 */ 0x0613, + /* 61 */ 0x0612, + /* 62 */ 0x0619, + /* 63 */ 0x0618, + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ ZYDIS_INVALID, + /* 69 */ ZYDIS_INVALID, + /* 6A */ ZYDIS_INVALID, + /* 6B */ ZYDIS_INVALID, + /* 6C */ ZYDIS_INVALID, + /* 6D */ ZYDIS_INVALID, + /* 6E */ ZYDIS_INVALID, + /* 6F */ ZYDIS_INVALID, + /* 70 */ ZYDIS_INVALID, + /* 71 */ ZYDIS_INVALID, + /* 72 */ ZYDIS_INVALID, + /* 73 */ ZYDIS_INVALID, + /* 74 */ ZYDIS_INVALID, + /* 75 */ ZYDIS_INVALID, + /* 76 */ ZYDIS_INVALID, + /* 77 */ ZYDIS_INVALID, + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ ZYDIS_INVALID, + /* 7D */ ZYDIS_INVALID, + /* 7E */ ZYDIS_INVALID, + /* 7F */ ZYDIS_INVALID, + /* 80 */ ZYDIS_INVALID, + /* 81 */ ZYDIS_INVALID, + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ ZYDIS_INVALID, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ ZYDIS_INVALID, + /* 8F */ ZYDIS_INVALID, + /* 90 */ ZYDIS_INVALID, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ ZYDIS_INVALID, + /* 95 */ ZYDIS_INVALID, + /* 96 */ ZYDIS_INVALID, + /* 97 */ ZYDIS_INVALID, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ ZYDIS_INVALID, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ ZYDIS_INVALID, + /* 9F */ ZYDIS_INVALID, + /* A0 */ ZYDIS_INVALID, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ ZYDIS_INVALID, + /* A5 */ ZYDIS_INVALID, + /* A6 */ ZYDIS_INVALID, + /* A7 */ ZYDIS_INVALID, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ ZYDIS_INVALID, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ ZYDIS_INVALID, + /* AF */ ZYDIS_INVALID, + /* B0 */ ZYDIS_INVALID, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ ZYDIS_INVALID, + /* B5 */ ZYDIS_INVALID, + /* B6 */ ZYDIS_INVALID, + /* B7 */ ZYDIS_INVALID, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ ZYDIS_INVALID, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ ZYDIS_INVALID, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ ZYDIS_INVALID, + /* C3 */ ZYDIS_INVALID, + /* C4 */ ZYDIS_INVALID, + /* C5 */ ZYDIS_INVALID, + /* C6 */ ZYDIS_INVALID, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ ZYDIS_INVALID, + /* D1 */ ZYDIS_INVALID, + /* D2 */ ZYDIS_INVALID, + /* D3 */ ZYDIS_INVALID, + /* D4 */ ZYDIS_INVALID, + /* D5 */ ZYDIS_INVALID, + /* D6 */ ZYDIS_INVALID, + /* D7 */ ZYDIS_INVALID, + /* D8 */ ZYDIS_INVALID, + /* D9 */ ZYDIS_INVALID, + /* DA */ ZYDIS_INVALID, + /* DB */ ZYDIS_INVALID, + /* DC */ ZYDIS_INVALID, + /* DD */ ZYDIS_INVALID, + /* DE */ ZYDIS_INVALID, + /* DF */ 0x0571, + /* E0 */ ZYDIS_INVALID, + /* E1 */ ZYDIS_INVALID, + /* E2 */ ZYDIS_INVALID, + /* E3 */ ZYDIS_INVALID, + /* E4 */ ZYDIS_INVALID, + /* E5 */ ZYDIS_INVALID, + /* E6 */ ZYDIS_INVALID, + /* E7 */ ZYDIS_INVALID, + /* E8 */ ZYDIS_INVALID, + /* E9 */ ZYDIS_INVALID, + /* EA */ ZYDIS_INVALID, + /* EB */ ZYDIS_INVALID, + /* EC */ ZYDIS_INVALID, + /* ED */ ZYDIS_INVALID, + /* EE */ ZYDIS_INVALID, + /* EF */ ZYDIS_INVALID, + /* F0 */ ZYDIS_INVALID, + /* F1 */ ZYDIS_INVALID, + /* F2 */ ZYDIS_INVALID, + /* F3 */ ZYDIS_INVALID, + /* F4 */ ZYDIS_INVALID, + /* F5 */ ZYDIS_INVALID, + /* F6 */ ZYDIS_INVALID, + /* F7 */ ZYDIS_INVALID, + /* F8 */ ZYDIS_INVALID, + /* F9 */ ZYDIS_INVALID, + /* FA */ ZYDIS_INVALID, + /* FB */ ZYDIS_INVALID, + /* FC */ ZYDIS_INVALID, + /* FD */ ZYDIS_INVALID, + /* FE */ ZYDIS_INVALID, + /* FF */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + /* 08 */ ZYDIS_INVALID, + /* 09 */ ZYDIS_INVALID, + /* 0A */ ZYDIS_INVALID, + /* 0B */ ZYDIS_INVALID, + /* 0C */ ZYDIS_INVALID, + /* 0D */ ZYDIS_INVALID, + /* 0E */ ZYDIS_INVALID, + /* 0F */ ZYDIS_INVALID, + /* 10 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x000E), + /* 11 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x000F), + /* 12 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0010), + /* 13 */ ZYDIS_INVALID, + /* 14 */ ZYDIS_INVALID, + /* 15 */ ZYDIS_INVALID, + /* 16 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0011), + /* 17 */ ZYDIS_INVALID, + /* 18 */ ZYDIS_INVALID, + /* 19 */ ZYDIS_INVALID, + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ ZYDIS_INVALID, + /* 1D */ ZYDIS_INVALID, + /* 1E */ ZYDIS_INVALID, + /* 1F */ ZYDIS_INVALID, + /* 20 */ ZYDIS_INVALID, + /* 21 */ ZYDIS_INVALID, + /* 22 */ ZYDIS_INVALID, + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ ZYDIS_INVALID, + /* 29 */ ZYDIS_INVALID, + /* 2A */ 0x058B, + /* 2B */ ZYDIS_INVALID, + /* 2C */ 0x0591, + /* 2D */ 0x058D, + /* 2E */ ZYDIS_INVALID, + /* 2F */ ZYDIS_INVALID, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + /* 40 */ ZYDIS_INVALID, + /* 41 */ ZYDIS_INVALID, + /* 42 */ ZYDIS_INVALID, + /* 43 */ ZYDIS_INVALID, + /* 44 */ ZYDIS_INVALID, + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ ZYDIS_INVALID, + /* 4B */ ZYDIS_INVALID, + /* 4C */ ZYDIS_INVALID, + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ ZYDIS_INVALID, + /* 51 */ 0x068B, + /* 52 */ 0x0685, + /* 53 */ 0x067F, + /* 54 */ ZYDIS_INVALID, + /* 55 */ ZYDIS_INVALID, + /* 56 */ ZYDIS_INVALID, + /* 57 */ ZYDIS_INVALID, + /* 58 */ 0x0569, + /* 59 */ 0x05F1, + /* 5A */ 0x058C, + /* 5B */ 0x058F, + /* 5C */ 0x0690, + /* 5D */ 0x05B1, + /* 5E */ 0x0595, + /* 5F */ 0x05AB, + /* 60 */ ZYDIS_INVALID, + /* 61 */ ZYDIS_INVALID, + /* 62 */ ZYDIS_INVALID, + /* 63 */ ZYDIS_INVALID, + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ ZYDIS_INVALID, + /* 69 */ ZYDIS_INVALID, + /* 6A */ ZYDIS_INVALID, + /* 6B */ ZYDIS_INVALID, + /* 6C */ ZYDIS_INVALID, + /* 6D */ ZYDIS_INVALID, + /* 6E */ ZYDIS_INVALID, + /* 6F */ 0x05C2, + /* 70 */ 0x0655, + /* 71 */ ZYDIS_INVALID, + /* 72 */ ZYDIS_INVALID, + /* 73 */ ZYDIS_INVALID, + /* 74 */ ZYDIS_INVALID, + /* 75 */ ZYDIS_INVALID, + /* 76 */ ZYDIS_INVALID, + /* 77 */ ZYDIS_INVALID, + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ ZYDIS_INVALID, + /* 7D */ ZYDIS_INVALID, + /* 7E */ 0x05D3, + /* 7F */ 0x05C1, + /* 80 */ ZYDIS_INVALID, + /* 81 */ ZYDIS_INVALID, + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ ZYDIS_INVALID, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ ZYDIS_INVALID, + /* 8F */ ZYDIS_INVALID, + /* 90 */ ZYDIS_INVALID, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ ZYDIS_INVALID, + /* 95 */ ZYDIS_INVALID, + /* 96 */ ZYDIS_INVALID, + /* 97 */ ZYDIS_INVALID, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ ZYDIS_INVALID, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ ZYDIS_INVALID, + /* 9F */ ZYDIS_INVALID, + /* A0 */ ZYDIS_INVALID, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ ZYDIS_INVALID, + /* A5 */ ZYDIS_INVALID, + /* A6 */ ZYDIS_INVALID, + /* A7 */ ZYDIS_INVALID, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ ZYDIS_INVALID, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ ZYDIS_INVALID, + /* AF */ ZYDIS_INVALID, + /* B0 */ ZYDIS_INVALID, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ ZYDIS_INVALID, + /* B5 */ ZYDIS_INVALID, + /* B6 */ ZYDIS_INVALID, + /* B7 */ ZYDIS_INVALID, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ ZYDIS_INVALID, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ ZYDIS_INVALID, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ 0x057F, + /* C3 */ ZYDIS_INVALID, + /* C4 */ ZYDIS_INVALID, + /* C5 */ ZYDIS_INVALID, + /* C6 */ ZYDIS_INVALID, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ ZYDIS_INVALID, + /* D1 */ ZYDIS_INVALID, + /* D2 */ ZYDIS_INVALID, + /* D3 */ ZYDIS_INVALID, + /* D4 */ ZYDIS_INVALID, + /* D5 */ ZYDIS_INVALID, + /* D6 */ ZYDIS_INVALID, + /* D7 */ ZYDIS_INVALID, + /* D8 */ ZYDIS_INVALID, + /* D9 */ ZYDIS_INVALID, + /* DA */ ZYDIS_INVALID, + /* DB */ ZYDIS_INVALID, + /* DC */ ZYDIS_INVALID, + /* DD */ ZYDIS_INVALID, + /* DE */ ZYDIS_INVALID, + /* DF */ ZYDIS_INVALID, + /* E0 */ ZYDIS_INVALID, + /* E1 */ ZYDIS_INVALID, + /* E2 */ ZYDIS_INVALID, + /* E3 */ ZYDIS_INVALID, + /* E4 */ ZYDIS_INVALID, + /* E5 */ ZYDIS_INVALID, + /* E6 */ 0x0582, + /* E7 */ ZYDIS_INVALID, + /* E8 */ ZYDIS_INVALID, + /* E9 */ ZYDIS_INVALID, + /* EA */ ZYDIS_INVALID, + /* EB */ ZYDIS_INVALID, + /* EC */ ZYDIS_INVALID, + /* ED */ ZYDIS_INVALID, + /* EE */ ZYDIS_INVALID, + /* EF */ ZYDIS_INVALID, + /* F0 */ ZYDIS_INVALID, + /* F1 */ ZYDIS_INVALID, + /* F2 */ ZYDIS_INVALID, + /* F3 */ ZYDIS_INVALID, + /* F4 */ ZYDIS_INVALID, + /* F5 */ ZYDIS_INVALID, + /* F6 */ ZYDIS_INVALID, + /* F7 */ ZYDIS_INVALID, + /* F8 */ ZYDIS_INVALID, + /* F9 */ ZYDIS_INVALID, + /* FA */ ZYDIS_INVALID, + /* FB */ ZYDIS_INVALID, + /* FC */ ZYDIS_INVALID, + /* FD */ ZYDIS_INVALID, + /* FE */ ZYDIS_INVALID, + /* FF */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + /* 08 */ ZYDIS_INVALID, + /* 09 */ ZYDIS_INVALID, + /* 0A */ ZYDIS_INVALID, + /* 0B */ ZYDIS_INVALID, + /* 0C */ ZYDIS_INVALID, + /* 0D */ ZYDIS_INVALID, + /* 0E */ ZYDIS_INVALID, + /* 0F */ ZYDIS_INVALID, + /* 10 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0012), + /* 11 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0013), + /* 12 */ NODE(OpcodeTreeNodeType::MODRM_MOD, 0x0014), + /* 13 */ ZYDIS_INVALID, + /* 14 */ ZYDIS_INVALID, + /* 15 */ ZYDIS_INVALID, + /* 16 */ ZYDIS_INVALID, + /* 17 */ ZYDIS_INVALID, + /* 18 */ ZYDIS_INVALID, + /* 19 */ ZYDIS_INVALID, + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ ZYDIS_INVALID, + /* 1D */ ZYDIS_INVALID, + /* 1E */ ZYDIS_INVALID, + /* 1F */ ZYDIS_INVALID, + /* 20 */ ZYDIS_INVALID, + /* 21 */ ZYDIS_INVALID, + /* 22 */ ZYDIS_INVALID, + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ ZYDIS_INVALID, + /* 29 */ ZYDIS_INVALID, + /* 2A */ 0x058A, + /* 2B */ ZYDIS_INVALID, + /* 2C */ 0x0590, + /* 2D */ 0x0588, + /* 2E */ ZYDIS_INVALID, + /* 2F */ ZYDIS_INVALID, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + /* 40 */ ZYDIS_INVALID, + /* 41 */ ZYDIS_INVALID, + /* 42 */ ZYDIS_INVALID, + /* 43 */ ZYDIS_INVALID, + /* 44 */ ZYDIS_INVALID, + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ ZYDIS_INVALID, + /* 4B */ ZYDIS_INVALID, + /* 4C */ ZYDIS_INVALID, + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ ZYDIS_INVALID, + /* 51 */ 0x068A, + /* 52 */ ZYDIS_INVALID, + /* 53 */ ZYDIS_INVALID, + /* 54 */ ZYDIS_INVALID, + /* 55 */ ZYDIS_INVALID, + /* 56 */ ZYDIS_INVALID, + /* 57 */ ZYDIS_INVALID, + /* 58 */ 0x0568, + /* 59 */ 0x05F0, + /* 5A */ 0x0589, + /* 5B */ ZYDIS_INVALID, + /* 5C */ 0x068F, + /* 5D */ 0x05B0, + /* 5E */ 0x0594, + /* 5F */ 0x05AA, + /* 60 */ ZYDIS_INVALID, + /* 61 */ ZYDIS_INVALID, + /* 62 */ ZYDIS_INVALID, + /* 63 */ ZYDIS_INVALID, + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ ZYDIS_INVALID, + /* 69 */ ZYDIS_INVALID, + /* 6A */ ZYDIS_INVALID, + /* 6B */ ZYDIS_INVALID, + /* 6C */ ZYDIS_INVALID, + /* 6D */ ZYDIS_INVALID, + /* 6E */ ZYDIS_INVALID, + /* 6F */ ZYDIS_INVALID, + /* 70 */ 0x0656, + /* 71 */ ZYDIS_INVALID, + /* 72 */ ZYDIS_INVALID, + /* 73 */ ZYDIS_INVALID, + /* 74 */ ZYDIS_INVALID, + /* 75 */ ZYDIS_INVALID, + /* 76 */ ZYDIS_INVALID, + /* 77 */ ZYDIS_INVALID, + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ 0x059D, + /* 7D */ 0x059F, + /* 7E */ ZYDIS_INVALID, + /* 7F */ ZYDIS_INVALID, + /* 80 */ ZYDIS_INVALID, + /* 81 */ ZYDIS_INVALID, + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ ZYDIS_INVALID, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ ZYDIS_INVALID, + /* 8F */ ZYDIS_INVALID, + /* 90 */ ZYDIS_INVALID, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ ZYDIS_INVALID, + /* 95 */ ZYDIS_INVALID, + /* 96 */ ZYDIS_INVALID, + /* 97 */ ZYDIS_INVALID, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ ZYDIS_INVALID, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ ZYDIS_INVALID, + /* 9F */ ZYDIS_INVALID, + /* A0 */ ZYDIS_INVALID, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ ZYDIS_INVALID, + /* A5 */ ZYDIS_INVALID, + /* A6 */ ZYDIS_INVALID, + /* A7 */ ZYDIS_INVALID, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ ZYDIS_INVALID, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ ZYDIS_INVALID, + /* AF */ ZYDIS_INVALID, + /* B0 */ ZYDIS_INVALID, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ ZYDIS_INVALID, + /* B5 */ ZYDIS_INVALID, + /* B6 */ ZYDIS_INVALID, + /* B7 */ ZYDIS_INVALID, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ ZYDIS_INVALID, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ ZYDIS_INVALID, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ 0x057E, + /* C3 */ ZYDIS_INVALID, + /* C4 */ ZYDIS_INVALID, + /* C5 */ ZYDIS_INVALID, + /* C6 */ ZYDIS_INVALID, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ 0x056B, + /* D1 */ ZYDIS_INVALID, + /* D2 */ ZYDIS_INVALID, + /* D3 */ ZYDIS_INVALID, + /* D4 */ ZYDIS_INVALID, + /* D5 */ ZYDIS_INVALID, + /* D6 */ ZYDIS_INVALID, + /* D7 */ ZYDIS_INVALID, + /* D8 */ ZYDIS_INVALID, + /* D9 */ ZYDIS_INVALID, + /* DA */ ZYDIS_INVALID, + /* DB */ ZYDIS_INVALID, + /* DC */ ZYDIS_INVALID, + /* DD */ ZYDIS_INVALID, + /* DE */ ZYDIS_INVALID, + /* DF */ ZYDIS_INVALID, + /* E0 */ ZYDIS_INVALID, + /* E1 */ ZYDIS_INVALID, + /* E2 */ ZYDIS_INVALID, + /* E3 */ ZYDIS_INVALID, + /* E4 */ ZYDIS_INVALID, + /* E5 */ ZYDIS_INVALID, + /* E6 */ 0x0584, + /* E7 */ ZYDIS_INVALID, + /* E8 */ ZYDIS_INVALID, + /* E9 */ ZYDIS_INVALID, + /* EA */ ZYDIS_INVALID, + /* EB */ ZYDIS_INVALID, + /* EC */ ZYDIS_INVALID, + /* ED */ ZYDIS_INVALID, + /* EE */ ZYDIS_INVALID, + /* EF */ ZYDIS_INVALID, + /* F0 */ 0x05A2, + /* F1 */ ZYDIS_INVALID, + /* F2 */ ZYDIS_INVALID, + /* F3 */ ZYDIS_INVALID, + /* F4 */ ZYDIS_INVALID, + /* F5 */ ZYDIS_INVALID, + /* F6 */ ZYDIS_INVALID, + /* F7 */ ZYDIS_INVALID, + /* F8 */ ZYDIS_INVALID, + /* F9 */ ZYDIS_INVALID, + /* FA */ ZYDIS_INVALID, + /* FB */ ZYDIS_INVALID, + /* FC */ ZYDIS_INVALID, + /* FD */ ZYDIS_INVALID, + /* FE */ ZYDIS_INVALID, + /* FF */ ZYDIS_INVALID, + }, +}; + +const OpcodeTreeNode optreeModrmMod[][2] = +{ + { + /* 00 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0001), + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0002), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x000F), + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0010), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0014), + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0015), + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E5), + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00E6), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00ED), + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x00EE), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0106), + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0107), + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ NODE(OpcodeTreeNodeType::MANDATORY, 0x0137), + }, + { + /* 00 */ 0x05CB, + /* 01 */ 0x05C3, + }, + { + /* 00 */ 0x05C6, + /* 01 */ 0x05C8, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x001A), + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05C9, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05C4, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05A3, + }, + { + /* 00 */ 0x05E2, + /* 01 */ 0x05DF, + }, + { + /* 00 */ 0x05E0, + /* 01 */ 0x05E1, + }, + { + /* 00 */ 0x05DE, + /* 01 */ 0x05DD, + }, + { + /* 00 */ 0x05DB, + /* 01 */ 0x05DC, + }, + { + /* 00 */ 0x05DA, + /* 01 */ 0x05D9, + }, + { + /* 00 */ 0x05D8, + /* 01 */ 0x05D7, + }, + { + /* 00 */ 0x05BE, + /* 01 */ 0x05BD, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0024), + /* 01 */ NODE(OpcodeTreeNodeType::X87, 0x0000), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0025), + /* 01 */ NODE(OpcodeTreeNodeType::X87, 0x0001), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0026), + /* 01 */ NODE(OpcodeTreeNodeType::X87, 0x0002), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0027), + /* 01 */ NODE(OpcodeTreeNodeType::X87, 0x0003), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0028), + /* 01 */ NODE(OpcodeTreeNodeType::X87, 0x0004), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0029), + /* 01 */ NODE(OpcodeTreeNodeType::X87, 0x0005), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x002A), + /* 01 */ NODE(OpcodeTreeNodeType::X87, 0x0006), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x002B), + /* 01 */ NODE(OpcodeTreeNodeType::X87, 0x0007), + }, +}; + +const OpcodeTreeNode optreeModrmReg[][8] = +{ + { + /* 00 */ 0x0531, + /* 01 */ 0x0541, + /* 02 */ 0x02FC, + /* 03 */ 0x0309, + /* 04 */ 0x0598, + /* 05 */ 0x0599, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0516, + /* 01 */ 0x052F, + /* 02 */ 0x02F9, + /* 03 */ 0x02FB, + /* 04 */ 0x0533, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x02FE, + /* 07 */ 0x02C0, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0000), + /* 01 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0001), + /* 02 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0002), + /* 03 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0003), + /* 04 */ 0x0532, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x02FD, + /* 07 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0004), + }, + { + /* 00 */ 0x0455, + /* 01 */ 0x0456, + /* 02 */ 0x0457, + /* 03 */ 0x0458, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x0486, + /* 03 */ ZYDIS_INVALID, + /* 04 */ 0x0479, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x0470, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x0485, + /* 03 */ ZYDIS_INVALID, + /* 04 */ 0x0478, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x0473, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x047E, + /* 03 */ ZYDIS_INVALID, + /* 04 */ 0x0475, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x0468, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x047C, + /* 03 */ ZYDIS_INVALID, + /* 04 */ 0x0476, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x046A, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x0482, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x046D, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x0481, + /* 03 */ 0x0480, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x046C, + /* 07 */ 0x046B, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0005), + /* 01 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0006), + /* 02 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0007), + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0008), + /* 01 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x0009), + /* 02 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x000A), + /* 03 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x000B), + /* 04 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x000C), + /* 05 */ NODE(OpcodeTreeNodeType::MODRM_RM, 0x000D), + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0296, + /* 01 */ 0x0295, + /* 02 */ 0x02F2, + /* 03 */ 0x053C, + /* 04 */ 0x06C0, + /* 05 */ 0x06BF, + /* 06 */ ZYDIS_INVALID, + /* 07 */ 0x0055, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ 0x02F7, + /* 06 */ 0x0310, + /* 07 */ 0x0515, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ 0x0043, + /* 05 */ 0x0049, + /* 06 */ 0x0047, + /* 07 */ 0x0045, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0006), + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0015), + /* 07 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0016), + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0017), + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0018), + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x04D3, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x000F, + /* 01 */ 0x0392, + /* 02 */ 0x0005, + /* 03 */ 0x04FF, + /* 04 */ 0x0028, + /* 05 */ 0x0544, + /* 06 */ 0x06BC, + /* 07 */ 0x006E, + }, + { + /* 00 */ 0x0013, + /* 01 */ 0x0391, + /* 02 */ 0x0009, + /* 03 */ 0x0500, + /* 04 */ 0x0029, + /* 05 */ 0x0543, + /* 06 */ 0x06B5, + /* 07 */ 0x0072, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x0015), + /* 01 */ NODE(OpcodeTreeNodeType::MODE, 0x0016), + /* 02 */ NODE(OpcodeTreeNodeType::MODE, 0x0017), + /* 03 */ NODE(OpcodeTreeNodeType::MODE, 0x0018), + /* 04 */ NODE(OpcodeTreeNodeType::MODE, 0x0019), + /* 05 */ NODE(OpcodeTreeNodeType::MODE, 0x001A), + /* 06 */ NODE(OpcodeTreeNodeType::MODE, 0x001B), + /* 07 */ NODE(OpcodeTreeNodeType::MODE, 0x001C), + }, + { + /* 00 */ 0x0012, + /* 01 */ 0x0397, + /* 02 */ 0x0008, + /* 03 */ 0x04FD, + /* 04 */ 0x002B, + /* 05 */ 0x0545, + /* 06 */ 0x06B4, + /* 07 */ 0x0071, + }, + { + /* 00 */ 0x0440, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04DE, + /* 01 */ 0x04E6, + /* 02 */ 0x04C6, + /* 03 */ 0x04D0, + /* 04 */ 0x0517, + /* 05 */ 0x0526, + /* 06 */ 0x051D, + /* 07 */ 0x04F3, + }, + { + /* 00 */ 0x04DF, + /* 01 */ 0x04E7, + /* 02 */ 0x04C7, + /* 03 */ 0x04CE, + /* 04 */ 0x051C, + /* 05 */ 0x0528, + /* 06 */ 0x051E, + /* 07 */ 0x04F6, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x068C, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x066A, + /* 03 */ ZYDIS_INVALID, + /* 04 */ 0x0664, + /* 05 */ ZYDIS_INVALID, + /* 06 */ NODE(OpcodeTreeNodeType::VEXL, 0x0001), + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x0666, + /* 03 */ ZYDIS_INVALID, + /* 04 */ 0x0661, + /* 05 */ ZYDIS_INVALID, + /* 06 */ NODE(OpcodeTreeNodeType::VEXL, 0x0002), + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x0668, + /* 03 */ 0x0667, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ NODE(OpcodeTreeNodeType::VEXL, 0x0003), + /* 07 */ 0x065C, + }, + { + /* 00 */ 0x0333, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0332, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04DD, + /* 01 */ 0x04E5, + /* 02 */ 0x04C8, + /* 03 */ 0x04CD, + /* 04 */ 0x0522, + /* 05 */ 0x0527, + /* 06 */ 0x051F, + /* 07 */ 0x04F1, + }, + { + /* 00 */ 0x04DC, + /* 01 */ 0x04E2, + /* 02 */ 0x04C5, + /* 03 */ 0x04CF, + /* 04 */ 0x0520, + /* 05 */ 0x052A, + /* 06 */ 0x0519, + /* 07 */ 0x04F4, + }, + { + /* 00 */ 0x04E1, + /* 01 */ 0x04E3, + /* 02 */ 0x04C3, + /* 03 */ 0x04CC, + /* 04 */ 0x0521, + /* 05 */ 0x0529, + /* 06 */ 0x051A, + /* 07 */ 0x04F2, + }, + { + /* 00 */ 0x04E0, + /* 01 */ 0x04E4, + /* 02 */ 0x04C4, + /* 03 */ 0x04CB, + /* 04 */ 0x0518, + /* 05 */ 0x0525, + /* 06 */ 0x051B, + /* 07 */ 0x04F5, + }, + { + /* 00 */ 0x00BB, + /* 01 */ 0x01CF, + /* 02 */ 0x0119, + /* 03 */ 0x013D, + /* 04 */ 0x022C, + /* 05 */ 0x0245, + /* 06 */ 0x0166, + /* 07 */ 0x0171, + }, + { + /* 00 */ 0x01BC, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x01FF, + /* 03 */ 0x020B, + /* 04 */ 0x01C3, + /* 05 */ 0x01C2, + /* 06 */ 0x01EB, + /* 07 */ 0x01EA, + }, + { + /* 00 */ 0x019A, + /* 01 */ 0x01A8, + /* 02 */ 0x019C, + /* 03 */ 0x019F, + /* 04 */ 0x01B3, + /* 05 */ 0x01B5, + /* 06 */ 0x01A1, + /* 07 */ 0x01A3, + }, + { + /* 00 */ 0x01A4, + /* 01 */ 0x01B1, + /* 02 */ 0x01AB, + /* 03 */ 0x01AD, + /* 04 */ ZYDIS_INVALID, + /* 05 */ 0x01BA, + /* 06 */ ZYDIS_INVALID, + /* 07 */ 0x020A, + }, + { + /* 00 */ 0x00BA, + /* 01 */ 0x01D2, + /* 02 */ 0x0118, + /* 03 */ 0x013E, + /* 04 */ 0x022B, + /* 05 */ 0x0243, + /* 06 */ 0x0158, + /* 07 */ 0x017A, + }, + { + /* 00 */ 0x01BB, + /* 01 */ 0x01AF, + /* 02 */ 0x01FE, + /* 03 */ 0x0209, + /* 04 */ 0x01F3, + /* 05 */ ZYDIS_INVALID, + /* 06 */ 0x01E8, + /* 07 */ 0x01ED, + }, + { + /* 00 */ 0x019B, + /* 01 */ 0x01A7, + /* 02 */ 0x019D, + /* 03 */ 0x019E, + /* 04 */ 0x01B2, + /* 05 */ 0x01B4, + /* 06 */ 0x01A0, + /* 07 */ 0x01A2, + }, + { + /* 00 */ 0x01A6, + /* 01 */ 0x01B0, + /* 02 */ 0x01AA, + /* 03 */ 0x01AE, + /* 04 */ 0x00D2, + /* 05 */ 0x01A5, + /* 06 */ 0x00D3, + /* 07 */ 0x01AC, + }, + { + /* 00 */ 0x0557, + /* 01 */ 0x0558, + /* 02 */ 0x038E, + /* 03 */ 0x0385, + /* 04 */ 0x037E, + /* 05 */ 0x02A5, + /* 06 */ 0x00AC, + /* 07 */ 0x02A0, + }, + { + /* 00 */ 0x0559, + /* 01 */ 0x055A, + /* 02 */ 0x038D, + /* 03 */ 0x0384, + /* 04 */ 0x037D, + /* 05 */ 0x02A3, + /* 06 */ 0x00AB, + /* 07 */ 0x02A1, + }, + { + /* 00 */ 0x02AF, + /* 01 */ 0x00A4, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02B0, + /* 01 */ 0x00A5, + /* 02 */ NODE(OpcodeTreeNodeType::MODE, 0x002C), + /* 03 */ 0x004C, + /* 04 */ 0x02D9, + /* 05 */ 0x02DA, + /* 06 */ 0x04B8, + /* 07 */ ZYDIS_INVALID, + }, +}; + +const OpcodeTreeNode optreeModrmRm[][8] = +{ + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0000), + /* 02 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0001), + /* 03 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0002), + /* 04 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0003), + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0315, + /* 01 */ 0x0383, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06B1, + /* 01 */ 0x06C1, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0004), + /* 01 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0005), + /* 02 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0006), + /* 03 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0007), + /* 04 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0008), + /* 05 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0009), + /* 06 */ NODE(OpcodeTreeNodeType::VENDOR, 0x000A), + /* 07 */ NODE(OpcodeTreeNodeType::VENDOR, 0x000B), + }, + { + /* 00 */ 0x0550, + /* 01 */ NODE(OpcodeTreeNodeType::VENDOR, 0x000C), + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0316, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06C2, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06C3, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06C4, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06AF, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06AC, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06AE, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06AD, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06B0, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + }, +}; + +const OpcodeTreeNode optreeMandatory[][4] = +{ + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0000), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0001), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0002), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02F0, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0307, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0551, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0058, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0556, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02BD, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x069E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0561, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0454, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0189, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0379, + /* 01 */ 0x0368, + /* 02 */ 0x0371, + /* 03 */ 0x0377, + }, + { + /* 00 */ 0x0378, + /* 01 */ 0x036A, + /* 02 */ 0x0370, + /* 03 */ 0x0376, + }, + { + /* 00 */ 0x0355, + /* 01 */ 0x0345, + /* 02 */ 0x036D, + /* 03 */ 0x0353, + }, + { + /* 00 */ 0x034C, + /* 01 */ 0x0346, + /* 02 */ 0x036E, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0354, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0352, + }, + { + /* 00 */ 0x0565, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0564, + }, + { + /* 00 */ 0x0563, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0562, + }, + { + /* 00 */ 0x0350, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x036B, + /* 03 */ 0x034E, + }, + { + /* 00 */ 0x0351, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x036C, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x034F, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x034D, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0003), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x038A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x038B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x038C, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0389, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0386, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0387, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0388, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0325, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0328, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0327, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0326, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x033A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0338, + }, + { + /* 00 */ 0x0339, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0337, + }, + { + /* 00 */ 0x008D, + /* 01 */ 0x0093, + /* 02 */ 0x0094, + /* 03 */ 0x008C, + }, + { + /* 00 */ 0x035C, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x035B, + }, + { + /* 00 */ 0x009A, + /* 01 */ 0x009B, + /* 02 */ 0x009C, + /* 03 */ 0x0098, + }, + { + /* 00 */ 0x0090, + /* 01 */ 0x0091, + /* 02 */ 0x0096, + /* 03 */ 0x008A, + }, + { + /* 00 */ 0x0560, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x055F, + }, + { + /* 00 */ 0x0082, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0081, + }, + { + /* 00 */ 0x069F, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04D4, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04D1, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04D2, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x0003), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x0004), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x029A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x045B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x045C, + }, + { + /* 00 */ 0x03FD, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03FE, + }, + { + /* 00 */ 0x03FA, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03F9, + }, + { + /* 00 */ 0x03FB, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03FC, + }, + { + /* 00 */ 0x040E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x040F, + }, + { + /* 00 */ 0x0405, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0404, + }, + { + /* 00 */ 0x0400, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0401, + }, + { + /* 00 */ 0x0402, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0403, + }, + { + /* 00 */ 0x0461, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0462, + }, + { + /* 00 */ 0x0466, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0465, + }, + { + /* 00 */ 0x0464, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0463, + }, + { + /* 00 */ 0x0431, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0432, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03CA, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0037, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0036, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x049A, + }, + { + /* 00 */ 0x03A3, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03A2, + }, + { + /* 00 */ 0x03A6, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03A7, + }, + { + /* 00 */ 0x03A4, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03A5, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0426, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0424, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0425, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0428, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0429, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0427, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0430, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03D1, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0359, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03AC, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x042C, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x042A, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x042B, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x042E, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x042F, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x042D, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03DA, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x041A, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x041B, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0421, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0420, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0412, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0413, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0419, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0418, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0438, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03FF, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ NODE(OpcodeTreeNodeType::MODE, 0x0005), + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ NODE(OpcodeTreeNodeType::MODE, 0x0006), + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0023, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0021, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0022, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x001F, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0020, + }, + { + /* 00 */ 0x033B, + /* 01 */ 0x0086, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x033C, + /* 01 */ 0x0085, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04E9, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04E8, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04EB, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04EA, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0035, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0034, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03CB, + }, + { + /* 00 */ 0x03BF, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03C0, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03DF, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03E3, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0000), + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x00B5, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0408, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x02B7, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0001), + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x00B2, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x00B1, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x037C, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03CC, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03D5, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03D4, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03DE, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03DD, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0024, + }, + { + /* 00 */ 0x0067, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0064, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x005C, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x005B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x005E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0063, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x005D, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x005A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0069, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0066, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0068, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0065, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0061, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0060, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0062, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x005F, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0357, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0356, + }, + { + /* 00 */ 0x0535, + /* 01 */ 0x0536, + /* 02 */ 0x0537, + /* 03 */ 0x0534, + }, + { + /* 00 */ 0x04ED, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x04EE, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04C9, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x04CA, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0032, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0031, + }, + { + /* 00 */ 0x0030, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x002F, + }, + { + /* 00 */ 0x039A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0399, + }, + { + /* 00 */ 0x06BE, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x06BD, + }, + { + /* 00 */ 0x001A, + /* 01 */ 0x001B, + /* 02 */ 0x001C, + /* 03 */ 0x0019, + }, + { + /* 00 */ 0x0380, + /* 01 */ 0x0381, + /* 02 */ 0x0382, + /* 03 */ 0x037F, + }, + { + /* 00 */ 0x008F, + /* 01 */ 0x0092, + /* 02 */ 0x0095, + /* 03 */ 0x008B, + }, + { + /* 00 */ 0x0088, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x0099, + /* 03 */ 0x008E, + }, + { + /* 00 */ 0x054D, + /* 01 */ 0x054E, + /* 02 */ 0x054F, + /* 03 */ 0x054C, + }, + { + /* 00 */ 0x0312, + /* 01 */ 0x0313, + /* 02 */ 0x0314, + /* 03 */ 0x0311, + }, + { + /* 00 */ 0x00AE, + /* 01 */ 0x00AF, + /* 02 */ 0x00B0, + /* 03 */ 0x00AD, + }, + { + /* 00 */ 0x030D, + /* 01 */ 0x030E, + /* 02 */ 0x030F, + /* 03 */ 0x030C, + }, + { + /* 00 */ 0x04A2, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04A3, + }, + { + /* 00 */ 0x04A7, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04A8, + }, + { + /* 00 */ 0x04A5, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04A4, + }, + { + /* 00 */ 0x03AA, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03AB, + }, + { + /* 00 */ 0x03D7, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03D6, + }, + { + /* 00 */ 0x03DC, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03DB, + }, + { + /* 00 */ 0x03D8, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03D9, + }, + { + /* 00 */ 0x03AD, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03AE, + }, + { + /* 00 */ 0x049B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x049C, + }, + { + /* 00 */ 0x04A1, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04A0, + }, + { + /* 00 */ 0x049E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x049D, + }, + { + /* 00 */ 0x03A8, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03A9, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04A6, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x049F, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0002), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0003), + }, + { + /* 00 */ 0x0363, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x034A, + /* 03 */ 0x0348, + }, + { + /* 00 */ 0x0460, + /* 01 */ 0x045F, + /* 02 */ 0x045E, + /* 03 */ 0x045D, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0004), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0005), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0006), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0007), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0008), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0009), + }, + { + /* 00 */ 0x03CD, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03CE, + }, + { + /* 00 */ 0x03D2, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03D3, + }, + { + /* 00 */ 0x03D0, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03CF, + }, + { + /* 00 */ 0x00B3, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0013), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0014), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x029C, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x029B, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x029F, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x029E, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0004), + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x035F, + /* 03 */ NODE(OpcodeTreeNodeType::OPERAND_SIZE, 0x0005), + }, + { + /* 00 */ 0x0362, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x034B, + /* 03 */ 0x0349, + }, + { + /* 00 */ 0x02E9, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02E3, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02C9, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02DF, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02CF, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02E0, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02CC, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02C8, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02EE, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02E7, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02EA, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02E4, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02D6, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02D4, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02D7, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02D2, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0512, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x050F, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0507, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0506, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0509, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x050E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0508, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0505, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0514, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0511, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0513, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0510, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x050C, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x050B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x050D, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x050A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04B5, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x044A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0083, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0044, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0524, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0523, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x000A), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x000B), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04B6, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0444, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04EC, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x004A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x052C, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x052B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x000C), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x000D), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02A2, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x007C, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x007D, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0308, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0048, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02F8, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02FA, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x037B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x037A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ 0x044D, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x000E), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0046, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0039, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x003A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0373, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0374, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06A1, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06A0, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0075, + /* 01 */ 0x0077, + /* 02 */ 0x007A, + /* 03 */ 0x0074, + }, + { + /* 00 */ 0x035A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x040D, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x040C, + }, + { + /* 00 */ 0x03E4, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03E5, + }, + { + /* 00 */ 0x052E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x052D, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x000F), + /* 01 */ ZYDIS_INVALID, + /* 02 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0010), + /* 03 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0011), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODRM_REG, 0x0012), + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x003F, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x003D, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0040, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x003C, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x003E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x003B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0042, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0041, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x001E, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x001D, + }, + { + /* 00 */ 0x0487, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0488, + }, + { + /* 00 */ 0x047D, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x047F, + }, + { + /* 00 */ 0x0483, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0484, + }, + { + /* 00 */ 0x03B3, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03B4, + }, + { + /* 00 */ 0x0439, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x043A, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x0347, + /* 02 */ 0x0366, + /* 03 */ 0x0361, + }, + { + /* 00 */ 0x0422, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0423, + }, + { + /* 00 */ 0x0494, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0493, + }, + { + /* 00 */ 0x0496, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0495, + }, + { + /* 00 */ 0x041E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x041F, + }, + { + /* 00 */ 0x03C1, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03C2, + }, + { + /* 00 */ 0x03BA, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03B9, + }, + { + /* 00 */ 0x03BB, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03BC, + }, + { + /* 00 */ 0x0417, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0416, + }, + { + /* 00 */ 0x03C3, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03C4, + }, + { + /* 00 */ 0x03C5, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03C6, + }, + { + /* 00 */ 0x047A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x047B, + }, + { + /* 00 */ 0x0477, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0474, + }, + { + /* 00 */ 0x03C8, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03C9, + }, + { + /* 00 */ 0x0434, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0435, + }, + { + /* 00 */ 0x0436, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0437, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x0089, + /* 02 */ 0x0087, + /* 03 */ 0x0097, + }, + { + /* 00 */ 0x035D, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0358, + }, + { + /* 00 */ 0x048F, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0490, + }, + { + /* 00 */ 0x0492, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0491, + }, + { + /* 00 */ 0x041C, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x041D, + }, + { + /* 00 */ 0x0453, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0452, + }, + { + /* 00 */ 0x03B6, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03B5, + }, + { + /* 00 */ 0x03B8, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03B7, + }, + { + /* 00 */ 0x0414, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0415, + }, + { + /* 00 */ 0x04C1, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x04C2, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x02F1, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0472, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0471, + }, + { + /* 00 */ 0x0469, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0467, + }, + { + /* 00 */ 0x046E, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x046F, + }, + { + /* 00 */ 0x043B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x043C, + }, + { + /* 00 */ 0x0411, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0410, + }, + { + /* 00 */ 0x045A, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0459, + }, + { + /* 00 */ 0x030B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x030A, + }, + { + /* 00 */ 0x0489, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x048A, + }, + { + /* 00 */ 0x0498, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x0497, + }, + { + /* 00 */ 0x048B, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x048C, + }, + { + /* 00 */ 0x048D, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x048E, + }, + { + /* 00 */ 0x03AF, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03B0, + }, + { + /* 00 */ 0x03BE, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03BD, + }, + { + /* 00 */ 0x03B1, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ 0x03B2, + }, +}; + +const OpcodeTreeNode optreeX87[][64] = +{ + { + /* 00 */ 0x00BC, + /* 01 */ 0x00BF, + /* 02 */ 0x00C2, + /* 03 */ 0x00C1, + /* 04 */ 0x00C0, + /* 05 */ 0x00C5, + /* 06 */ 0x00C3, + /* 07 */ 0x00C4, + /* 08 */ 0x01CE, + /* 09 */ 0x01CD, + /* 0A */ 0x01D9, + /* 0B */ 0x01DA, + /* 0C */ 0x01DB, + /* 0D */ 0x01D6, + /* 0E */ 0x01D7, + /* 0F */ 0x01D8, + /* 10 */ 0x011A, + /* 11 */ 0x011C, + /* 12 */ 0x011B, + /* 13 */ 0x0117, + /* 14 */ 0x0116, + /* 15 */ 0x011D, + /* 16 */ 0x011F, + /* 17 */ 0x011E, + /* 18 */ 0x013A, + /* 19 */ 0x0141, + /* 1A */ 0x013C, + /* 1B */ 0x0138, + /* 1C */ 0x013B, + /* 1D */ 0x0140, + /* 1E */ 0x013F, + /* 1F */ 0x0139, + /* 20 */ 0x022E, + /* 21 */ 0x0226, + /* 22 */ 0x0229, + /* 23 */ 0x0232, + /* 24 */ 0x0231, + /* 25 */ 0x022D, + /* 26 */ 0x022A, + /* 27 */ 0x0227, + /* 28 */ 0x0246, + /* 29 */ 0x024B, + /* 2A */ 0x024C, + /* 2B */ 0x024A, + /* 2C */ 0x0248, + /* 2D */ 0x0249, + /* 2E */ 0x0250, + /* 2F */ 0x0251, + /* 30 */ 0x0161, + /* 31 */ 0x0162, + /* 32 */ 0x0155, + /* 33 */ 0x015A, + /* 34 */ 0x0159, + /* 35 */ 0x0156, + /* 36 */ 0x0157, + /* 37 */ 0x0163, + /* 38 */ 0x0172, + /* 39 */ 0x016F, + /* 3A */ 0x0170, + /* 3B */ 0x0173, + /* 3C */ 0x0176, + /* 3D */ 0x0177, + /* 3E */ 0x0174, + /* 3F */ 0x0175, + }, + { + /* 00 */ 0x01BD, + /* 01 */ 0x01C0, + /* 02 */ 0x01BF, + /* 03 */ 0x01BE, + /* 04 */ 0x01B7, + /* 05 */ 0x01B6, + /* 06 */ 0x01B9, + /* 07 */ 0x01B8, + /* 08 */ 0x0281, + /* 09 */ 0x0282, + /* 0A */ 0x0283, + /* 0B */ 0x0280, + /* 0C */ 0x027D, + /* 0D */ 0x027E, + /* 0E */ 0x027F, + /* 0F */ 0x0284, + /* 10 */ 0x01E7, + /* 11 */ ZYDIS_INVALID, + /* 12 */ ZYDIS_INVALID, + /* 13 */ ZYDIS_INVALID, + /* 14 */ ZYDIS_INVALID, + /* 15 */ ZYDIS_INVALID, + /* 16 */ ZYDIS_INVALID, + /* 17 */ ZYDIS_INVALID, + /* 18 */ 0x0213, + /* 19 */ 0x0212, + /* 1A */ 0x0215, + /* 1B */ 0x0214, + /* 1C */ 0x020F, + /* 1D */ 0x020E, + /* 1E */ 0x0211, + /* 1F */ 0x0210, + /* 20 */ 0x00D4, + /* 21 */ 0x00B7, + /* 22 */ ZYDIS_INVALID, + /* 23 */ ZYDIS_INVALID, + /* 24 */ 0x025A, + /* 25 */ 0x027C, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ 0x01C1, + /* 29 */ 0x01C5, + /* 2A */ 0x01C4, + /* 2B */ 0x01C8, + /* 2C */ 0x01C6, + /* 2D */ 0x01C7, + /* 2E */ 0x01C9, + /* 2F */ ZYDIS_INVALID, + /* 30 */ 0x00B6, + /* 31 */ 0x0298, + /* 32 */ 0x01F1, + /* 33 */ 0x01EE, + /* 34 */ 0x0297, + /* 35 */ 0x01F0, + /* 36 */ 0x0154, + /* 37 */ 0x01A9, + /* 38 */ 0x01EF, + /* 39 */ 0x0299, + /* 3A */ 0x01F8, + /* 3B */ 0x01F7, + /* 3C */ 0x01F2, + /* 3D */ 0x01F5, + /* 3E */ 0x01F6, + /* 3F */ 0x0153, + }, + { + /* 00 */ 0x00D9, + /* 01 */ 0x00DA, + /* 02 */ 0x00DB, + /* 03 */ 0x00D6, + /* 04 */ 0x00D7, + /* 05 */ 0x00D8, + /* 06 */ 0x00DD, + /* 07 */ 0x00DC, + /* 08 */ 0x00E6, + /* 09 */ 0x00E7, + /* 0A */ 0x00E8, + /* 0B */ 0x00EC, + /* 0C */ 0x00ED, + /* 0D */ 0x00EB, + /* 0E */ 0x00E9, + /* 0F */ 0x00EA, + /* 10 */ 0x00E4, + /* 11 */ 0x00E5, + /* 12 */ 0x00E2, + /* 13 */ 0x00E3, + /* 14 */ 0x00DF, + /* 15 */ 0x00DE, + /* 16 */ 0x00E0, + /* 17 */ 0x00E1, + /* 18 */ 0x0113, + /* 19 */ 0x0114, + /* 1A */ 0x0115, + /* 1B */ 0x010F, + /* 1C */ 0x010E, + /* 1D */ 0x0110, + /* 1E */ 0x0111, + /* 1F */ 0x0112, + /* 20 */ ZYDIS_INVALID, + /* 21 */ ZYDIS_INVALID, + /* 22 */ ZYDIS_INVALID, + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ ZYDIS_INVALID, + /* 29 */ 0x027B, + /* 2A */ ZYDIS_INVALID, + /* 2B */ ZYDIS_INVALID, + /* 2C */ ZYDIS_INVALID, + /* 2D */ ZYDIS_INVALID, + /* 2E */ ZYDIS_INVALID, + /* 2F */ ZYDIS_INVALID, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x00F0, + /* 01 */ 0x00F1, + /* 02 */ 0x00EE, + /* 03 */ 0x00EF, + /* 04 */ 0x00F4, + /* 05 */ 0x00F5, + /* 06 */ 0x00F2, + /* 07 */ 0x00F3, + /* 08 */ 0x0103, + /* 09 */ 0x0102, + /* 0A */ 0x0105, + /* 0B */ 0x0104, + /* 0C */ 0x00FF, + /* 0D */ 0x00FE, + /* 0E */ 0x0101, + /* 0F */ 0x0100, + /* 10 */ 0x00F8, + /* 11 */ 0x00F9, + /* 12 */ 0x00F6, + /* 13 */ 0x00F7, + /* 14 */ 0x00FC, + /* 15 */ 0x00FD, + /* 16 */ 0x00FA, + /* 17 */ 0x00FB, + /* 18 */ 0x010B, + /* 19 */ 0x010A, + /* 1A */ 0x010D, + /* 1B */ 0x010C, + /* 1C */ 0x0107, + /* 1D */ 0x0106, + /* 1E */ 0x0109, + /* 1F */ 0x0108, + /* 20 */ 0x01E5, + /* 21 */ 0x01E4, + /* 22 */ 0x00D5, + /* 23 */ 0x01E6, + /* 24 */ 0x01E9, + /* 25 */ 0x01F4, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ 0x0269, + /* 29 */ 0x026A, + /* 2A */ 0x0265, + /* 2B */ 0x0264, + /* 2C */ 0x0263, + /* 2D */ 0x0268, + /* 2E */ 0x0267, + /* 2F */ 0x0266, + /* 30 */ 0x0129, + /* 31 */ 0x0128, + /* 32 */ 0x012B, + /* 33 */ 0x012A, + /* 34 */ 0x012F, + /* 35 */ 0x012E, + /* 36 */ 0x012D, + /* 37 */ 0x012C, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x00B9, + /* 01 */ 0x00B8, + /* 02 */ 0x00C6, + /* 03 */ 0x00C9, + /* 04 */ 0x00C8, + /* 05 */ 0x00C7, + /* 06 */ 0x00BE, + /* 07 */ 0x00BD, + /* 08 */ 0x01D1, + /* 09 */ 0x01D0, + /* 0A */ 0x01D5, + /* 0B */ 0x01D4, + /* 0C */ 0x01D3, + /* 0D */ 0x01CC, + /* 0E */ 0x01CB, + /* 0F */ 0x01CA, + /* 10 */ 0x0125, + /* 11 */ 0x0124, + /* 12 */ 0x0127, + /* 13 */ 0x0126, + /* 14 */ 0x0121, + /* 15 */ 0x0120, + /* 16 */ 0x0123, + /* 17 */ 0x0122, + /* 18 */ 0x0148, + /* 19 */ 0x0142, + /* 1A */ 0x0145, + /* 1B */ 0x0144, + /* 1C */ 0x0143, + /* 1D */ 0x0147, + /* 1E */ 0x0146, + /* 1F */ 0x0149, + /* 20 */ 0x024F, + /* 21 */ 0x0247, + /* 22 */ 0x0241, + /* 23 */ 0x0242, + /* 24 */ 0x0240, + /* 25 */ 0x024E, + /* 26 */ 0x024D, + /* 27 */ 0x0244, + /* 28 */ 0x0228, + /* 29 */ 0x0235, + /* 2A */ 0x0234, + /* 2B */ 0x0237, + /* 2C */ 0x0236, + /* 2D */ 0x0233, + /* 2E */ 0x0230, + /* 2F */ 0x022F, + /* 30 */ 0x017B, + /* 31 */ 0x0178, + /* 32 */ 0x0179, + /* 33 */ 0x017C, + /* 34 */ 0x017F, + /* 35 */ 0x0180, + /* 36 */ 0x017D, + /* 37 */ 0x017E, + /* 38 */ 0x015E, + /* 39 */ 0x015F, + /* 3A */ 0x0160, + /* 3B */ 0x015B, + /* 3C */ 0x015C, + /* 3D */ 0x015D, + /* 3E */ 0x0164, + /* 3F */ 0x0165, + }, + { + /* 00 */ 0x018F, + /* 01 */ 0x018E, + /* 02 */ 0x0191, + /* 03 */ 0x0190, + /* 04 */ 0x018B, + /* 05 */ 0x018A, + /* 06 */ 0x018D, + /* 07 */ 0x018C, + /* 08 */ 0x028A, + /* 09 */ 0x0289, + /* 0A */ 0x028C, + /* 0B */ 0x028B, + /* 0C */ 0x0286, + /* 0D */ 0x0285, + /* 0E */ 0x0288, + /* 0F */ 0x0287, + /* 10 */ 0x0200, + /* 11 */ 0x0202, + /* 12 */ 0x0201, + /* 13 */ 0x01FA, + /* 14 */ 0x01F9, + /* 15 */ 0x01FB, + /* 16 */ 0x01FD, + /* 17 */ 0x01FC, + /* 18 */ 0x020D, + /* 19 */ 0x020C, + /* 1A */ 0x0208, + /* 1B */ 0x0204, + /* 1C */ 0x0203, + /* 1D */ 0x0205, + /* 1E */ 0x0207, + /* 1F */ 0x0206, + /* 20 */ 0x025D, + /* 21 */ 0x025C, + /* 22 */ 0x025B, + /* 23 */ 0x025E, + /* 24 */ 0x0261, + /* 25 */ 0x0262, + /* 26 */ 0x025F, + /* 27 */ 0x0260, + /* 28 */ 0x0278, + /* 29 */ 0x0277, + /* 2A */ 0x027A, + /* 2B */ 0x0279, + /* 2C */ 0x0274, + /* 2D */ 0x0273, + /* 2E */ 0x0276, + /* 2F */ 0x0275, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x00CC, + /* 01 */ 0x00CD, + /* 02 */ 0x00CA, + /* 03 */ 0x00CB, + /* 04 */ 0x00D0, + /* 05 */ 0x00D1, + /* 06 */ 0x00CE, + /* 07 */ 0x00CF, + /* 08 */ 0x01E1, + /* 09 */ 0x01E0, + /* 0A */ 0x01E3, + /* 0B */ 0x01E2, + /* 0C */ 0x01DD, + /* 0D */ 0x01DC, + /* 0E */ 0x01DF, + /* 0F */ 0x01DE, + /* 10 */ 0x014F, + /* 11 */ 0x014E, + /* 12 */ 0x0151, + /* 13 */ 0x0150, + /* 14 */ 0x014B, + /* 15 */ 0x014A, + /* 16 */ 0x014D, + /* 17 */ 0x014C, + /* 18 */ ZYDIS_INVALID, + /* 19 */ 0x0152, + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ ZYDIS_INVALID, + /* 1D */ ZYDIS_INVALID, + /* 1E */ ZYDIS_INVALID, + /* 1F */ ZYDIS_INVALID, + /* 20 */ 0x0258, + /* 21 */ 0x0259, + /* 22 */ 0x0256, + /* 23 */ 0x0257, + /* 24 */ 0x0253, + /* 25 */ 0x0252, + /* 26 */ 0x0255, + /* 27 */ 0x0254, + /* 28 */ 0x023B, + /* 29 */ 0x023D, + /* 2A */ 0x023C, + /* 2B */ 0x0239, + /* 2C */ 0x0238, + /* 2D */ 0x023A, + /* 2E */ 0x023E, + /* 2F */ 0x023F, + /* 30 */ 0x0186, + /* 31 */ 0x0185, + /* 32 */ 0x0188, + /* 33 */ 0x0187, + /* 34 */ 0x0182, + /* 35 */ 0x0181, + /* 36 */ 0x0184, + /* 37 */ 0x0183, + /* 38 */ 0x016C, + /* 39 */ 0x016B, + /* 3A */ 0x016E, + /* 3B */ 0x016D, + /* 3C */ 0x0168, + /* 3D */ 0x0167, + /* 3E */ 0x016A, + /* 3F */ 0x0169, + }, + { + /* 00 */ 0x0199, + /* 01 */ 0x0196, + /* 02 */ 0x0197, + /* 03 */ 0x0198, + /* 04 */ 0x0193, + /* 05 */ 0x0192, + /* 06 */ 0x0195, + /* 07 */ 0x0194, + /* 08 */ 0x028F, + /* 09 */ 0x0290, + /* 0A */ 0x028D, + /* 0B */ 0x028E, + /* 0C */ 0x0293, + /* 0D */ 0x0294, + /* 0E */ 0x0291, + /* 0F */ 0x0292, + /* 10 */ 0x021B, + /* 11 */ 0x021A, + /* 12 */ 0x021D, + /* 13 */ 0x021C, + /* 14 */ 0x0217, + /* 15 */ 0x0216, + /* 16 */ 0x0219, + /* 17 */ 0x0218, + /* 18 */ 0x0220, + /* 19 */ 0x0221, + /* 1A */ 0x021E, + /* 1B */ 0x021F, + /* 1C */ 0x0224, + /* 1D */ 0x0225, + /* 1E */ 0x0222, + /* 1F */ 0x0223, + /* 20 */ 0x01EC, + /* 21 */ ZYDIS_INVALID, + /* 22 */ ZYDIS_INVALID, + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ 0x0271, + /* 29 */ 0x0272, + /* 2A */ 0x026D, + /* 2B */ 0x026C, + /* 2C */ 0x026B, + /* 2D */ 0x0270, + /* 2E */ 0x026F, + /* 2F */ 0x026E, + /* 30 */ 0x0136, + /* 31 */ 0x0137, + /* 32 */ 0x0133, + /* 33 */ 0x0134, + /* 34 */ 0x0135, + /* 35 */ 0x0130, + /* 36 */ 0x0131, + /* 37 */ 0x0132, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + }, +}; + +const OpcodeTreeNode optreeAddressSize[][3] = +{ + { + /* 00 */ 0x02CD, + /* 01 */ 0x02D0, + /* 02 */ 0x02EC, + }, +}; + +const OpcodeTreeNode optreeOperandSize[][3] = +{ + { + /* 00 */ 0x03E0, + /* 01 */ 0x03E1, + /* 02 */ 0x03E2, + }, + { + /* 00 */ 0x0409, + /* 01 */ 0x040A, + /* 02 */ 0x040B, + }, + { + /* 00 */ 0x033D, + /* 01 */ 0x0343, + /* 02 */ 0x035E, + }, + { + /* 00 */ 0x0341, + /* 01 */ 0x0342, + /* 02 */ 0x0364, + }, + { + /* 00 */ 0x0344, + /* 01 */ 0x033E, + /* 02 */ 0x0365, + }, + { + /* 00 */ 0x0340, + /* 01 */ 0x033F, + /* 02 */ 0x0360, + }, + { + /* 00 */ 0x007F, + /* 01 */ 0x0080, + /* 02 */ 0x007E, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x000F), + /* 01 */ NODE(OpcodeTreeNodeType::MODE, 0x0010), + /* 02 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x0011), + /* 01 */ NODE(OpcodeTreeNodeType::MODE, 0x0012), + /* 02 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02B8, + /* 01 */ 0x02B6, + /* 02 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x03A1, + /* 01 */ 0x03A0, + /* 02 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0050, + /* 01 */ 0x009E, + /* 02 */ 0x0052, + }, + { + /* 00 */ 0x009D, + /* 01 */ 0x0051, + /* 02 */ 0x0084, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x001E), + /* 01 */ NODE(OpcodeTreeNodeType::MODE, 0x001F), + /* 02 */ NODE(OpcodeTreeNodeType::MODE, 0x0020), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x0021), + /* 01 */ NODE(OpcodeTreeNodeType::MODE, 0x0022), + /* 02 */ NODE(OpcodeTreeNodeType::MODE, 0x0023), + }, + { + /* 00 */ 0x0372, + /* 01 */ 0x0369, + /* 02 */ 0x036F, + }, + { + /* 00 */ 0x007B, + /* 01 */ 0x0078, + /* 02 */ 0x0079, + }, + { + /* 00 */ 0x0540, + /* 01 */ 0x053E, + /* 02 */ 0x053F, + }, + { + /* 00 */ 0x0303, + /* 01 */ 0x0301, + /* 02 */ 0x0302, + }, + { + /* 00 */ 0x0504, + /* 01 */ 0x0502, + /* 02 */ 0x0503, + }, + { + /* 00 */ 0x05BB, + /* 01 */ 0x05BA, + /* 02 */ 0x05D5, + }, + { + /* 00 */ 0x05B9, + /* 01 */ 0x05BC, + /* 02 */ 0x05D6, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXW, 0x000E), + /* 01 */ NODE(OpcodeTreeNodeType::VEXW, 0x000F), + /* 02 */ NODE(OpcodeTreeNodeType::VEXW, 0x0010), + }, + { + /* 00 */ 0x02C6, + /* 01 */ 0x02C4, + /* 02 */ 0x02C5, + }, +}; + +const OpcodeTreeNode optreeMode[][2] = +{ + { + /* 00 */ 0x04AA, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0445, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04AD, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0553, + /* 01 */ NODE(OpcodeTreeNodeType::VENDOR, 0x000D), + }, + { + /* 00 */ 0x0555, + /* 01 */ NODE(OpcodeTreeNodeType::VENDOR, 0x000E), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VENDOR, 0x000F), + /* 01 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0010), + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0011), + /* 01 */ NODE(OpcodeTreeNodeType::VENDOR, 0x0012), + }, + { + /* 00 */ 0x04AC, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0446, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04A9, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0443, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x009F, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x00A0, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0001, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0004, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04BA, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04BB, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x044B, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x044C, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0038, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0033, + /* 01 */ 0x0375, + }, + { + /* 00 */ 0x0011, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0398, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0007, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04FC, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x002A, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0546, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x06B3, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0073, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x004F, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04C0, + /* 01 */ 0x04BF, + }, + { + /* 00 */ 0x04BC, + /* 01 */ 0x04BE, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x04BD, + }, + { + /* 00 */ 0x0451, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x044E, + /* 01 */ 0x0450, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x044F, + }, + { + /* 00 */ 0x02F6, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXW, 0x0014), + /* 01 */ NODE(OpcodeTreeNodeType::VEXW, 0x0015), + }, + { + /* 00 */ 0x02F3, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02BC, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0003, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0002, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04F0, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02DC, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x004D, + /* 01 */ 0x004B, + }, +}; + +const OpcodeTreeNode optreeVendor[][2] = +{ + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05AC, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05B2, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05EB, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05F3, + }, + { + /* 00 */ 0x05EC, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05B4, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05B3, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05ED, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x053A, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0056, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0530, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x02C1, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x04D5, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x0552, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x0554, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x02BE, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x02BF, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x02C3, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x02C2, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05EA, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05F2, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05E8, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05E9, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05F4, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05AD, + }, +}; + +const OpcodeTreeNode optree3dnow[][256] = +{ + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ ZYDIS_INVALID, + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ ZYDIS_INVALID, + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + /* 08 */ ZYDIS_INVALID, + /* 09 */ ZYDIS_INVALID, + /* 0A */ ZYDIS_INVALID, + /* 0B */ ZYDIS_INVALID, + /* 0C */ 0x0407, + /* 0D */ 0x0406, + /* 0E */ ZYDIS_INVALID, + /* 0F */ ZYDIS_INVALID, + /* 10 */ ZYDIS_INVALID, + /* 11 */ ZYDIS_INVALID, + /* 12 */ ZYDIS_INVALID, + /* 13 */ ZYDIS_INVALID, + /* 14 */ ZYDIS_INVALID, + /* 15 */ ZYDIS_INVALID, + /* 16 */ ZYDIS_INVALID, + /* 17 */ ZYDIS_INVALID, + /* 18 */ ZYDIS_INVALID, + /* 19 */ ZYDIS_INVALID, + /* 1A */ ZYDIS_INVALID, + /* 1B */ ZYDIS_INVALID, + /* 1C */ 0x03E7, + /* 1D */ 0x03E6, + /* 1E */ ZYDIS_INVALID, + /* 1F */ ZYDIS_INVALID, + /* 20 */ ZYDIS_INVALID, + /* 21 */ ZYDIS_INVALID, + /* 22 */ ZYDIS_INVALID, + /* 23 */ ZYDIS_INVALID, + /* 24 */ ZYDIS_INVALID, + /* 25 */ ZYDIS_INVALID, + /* 26 */ ZYDIS_INVALID, + /* 27 */ ZYDIS_INVALID, + /* 28 */ ZYDIS_INVALID, + /* 29 */ ZYDIS_INVALID, + /* 2A */ ZYDIS_INVALID, + /* 2B */ ZYDIS_INVALID, + /* 2C */ ZYDIS_INVALID, + /* 2D */ ZYDIS_INVALID, + /* 2E */ ZYDIS_INVALID, + /* 2F */ ZYDIS_INVALID, + /* 30 */ ZYDIS_INVALID, + /* 31 */ ZYDIS_INVALID, + /* 32 */ ZYDIS_INVALID, + /* 33 */ ZYDIS_INVALID, + /* 34 */ ZYDIS_INVALID, + /* 35 */ ZYDIS_INVALID, + /* 36 */ ZYDIS_INVALID, + /* 37 */ ZYDIS_INVALID, + /* 38 */ ZYDIS_INVALID, + /* 39 */ ZYDIS_INVALID, + /* 3A */ ZYDIS_INVALID, + /* 3B */ ZYDIS_INVALID, + /* 3C */ ZYDIS_INVALID, + /* 3D */ ZYDIS_INVALID, + /* 3E */ ZYDIS_INVALID, + /* 3F */ ZYDIS_INVALID, + /* 40 */ ZYDIS_INVALID, + /* 41 */ ZYDIS_INVALID, + /* 42 */ ZYDIS_INVALID, + /* 43 */ ZYDIS_INVALID, + /* 44 */ ZYDIS_INVALID, + /* 45 */ ZYDIS_INVALID, + /* 46 */ ZYDIS_INVALID, + /* 47 */ ZYDIS_INVALID, + /* 48 */ ZYDIS_INVALID, + /* 49 */ ZYDIS_INVALID, + /* 4A */ ZYDIS_INVALID, + /* 4B */ ZYDIS_INVALID, + /* 4C */ ZYDIS_INVALID, + /* 4D */ ZYDIS_INVALID, + /* 4E */ ZYDIS_INVALID, + /* 4F */ ZYDIS_INVALID, + /* 50 */ ZYDIS_INVALID, + /* 51 */ ZYDIS_INVALID, + /* 52 */ ZYDIS_INVALID, + /* 53 */ ZYDIS_INVALID, + /* 54 */ ZYDIS_INVALID, + /* 55 */ ZYDIS_INVALID, + /* 56 */ ZYDIS_INVALID, + /* 57 */ ZYDIS_INVALID, + /* 58 */ ZYDIS_INVALID, + /* 59 */ ZYDIS_INVALID, + /* 5A */ ZYDIS_INVALID, + /* 5B */ ZYDIS_INVALID, + /* 5C */ ZYDIS_INVALID, + /* 5D */ ZYDIS_INVALID, + /* 5E */ ZYDIS_INVALID, + /* 5F */ ZYDIS_INVALID, + /* 60 */ ZYDIS_INVALID, + /* 61 */ ZYDIS_INVALID, + /* 62 */ ZYDIS_INVALID, + /* 63 */ ZYDIS_INVALID, + /* 64 */ ZYDIS_INVALID, + /* 65 */ ZYDIS_INVALID, + /* 66 */ ZYDIS_INVALID, + /* 67 */ ZYDIS_INVALID, + /* 68 */ ZYDIS_INVALID, + /* 69 */ ZYDIS_INVALID, + /* 6A */ ZYDIS_INVALID, + /* 6B */ ZYDIS_INVALID, + /* 6C */ ZYDIS_INVALID, + /* 6D */ ZYDIS_INVALID, + /* 6E */ ZYDIS_INVALID, + /* 6F */ ZYDIS_INVALID, + /* 70 */ ZYDIS_INVALID, + /* 71 */ ZYDIS_INVALID, + /* 72 */ ZYDIS_INVALID, + /* 73 */ ZYDIS_INVALID, + /* 74 */ ZYDIS_INVALID, + /* 75 */ ZYDIS_INVALID, + /* 76 */ ZYDIS_INVALID, + /* 77 */ ZYDIS_INVALID, + /* 78 */ ZYDIS_INVALID, + /* 79 */ ZYDIS_INVALID, + /* 7A */ ZYDIS_INVALID, + /* 7B */ ZYDIS_INVALID, + /* 7C */ ZYDIS_INVALID, + /* 7D */ ZYDIS_INVALID, + /* 7E */ ZYDIS_INVALID, + /* 7F */ ZYDIS_INVALID, + /* 80 */ ZYDIS_INVALID, + /* 81 */ ZYDIS_INVALID, + /* 82 */ ZYDIS_INVALID, + /* 83 */ ZYDIS_INVALID, + /* 84 */ ZYDIS_INVALID, + /* 85 */ ZYDIS_INVALID, + /* 86 */ ZYDIS_INVALID, + /* 87 */ ZYDIS_INVALID, + /* 88 */ ZYDIS_INVALID, + /* 89 */ ZYDIS_INVALID, + /* 8A */ 0x03F0, + /* 8B */ ZYDIS_INVALID, + /* 8C */ ZYDIS_INVALID, + /* 8D */ ZYDIS_INVALID, + /* 8E */ 0x03F1, + /* 8F */ ZYDIS_INVALID, + /* 90 */ 0x03EB, + /* 91 */ ZYDIS_INVALID, + /* 92 */ ZYDIS_INVALID, + /* 93 */ ZYDIS_INVALID, + /* 94 */ 0x03EE, + /* 95 */ ZYDIS_INVALID, + /* 96 */ 0x03F2, + /* 97 */ 0x03F6, + /* 98 */ ZYDIS_INVALID, + /* 99 */ ZYDIS_INVALID, + /* 9A */ 0x03F7, + /* 9B */ ZYDIS_INVALID, + /* 9C */ ZYDIS_INVALID, + /* 9D */ ZYDIS_INVALID, + /* 9E */ 0x03E9, + /* 9F */ ZYDIS_INVALID, + /* A0 */ 0x03EC, + /* A1 */ ZYDIS_INVALID, + /* A2 */ ZYDIS_INVALID, + /* A3 */ ZYDIS_INVALID, + /* A4 */ 0x03ED, + /* A5 */ ZYDIS_INVALID, + /* A6 */ 0x03F3, + /* A7 */ 0x03F5, + /* A8 */ ZYDIS_INVALID, + /* A9 */ ZYDIS_INVALID, + /* AA */ 0x03F8, + /* AB */ ZYDIS_INVALID, + /* AC */ ZYDIS_INVALID, + /* AD */ ZYDIS_INVALID, + /* AE */ 0x03E8, + /* AF */ ZYDIS_INVALID, + /* B0 */ 0x03EA, + /* B1 */ ZYDIS_INVALID, + /* B2 */ ZYDIS_INVALID, + /* B3 */ ZYDIS_INVALID, + /* B4 */ 0x03EF, + /* B5 */ ZYDIS_INVALID, + /* B6 */ 0x03F4, + /* B7 */ 0x0433, + /* B8 */ ZYDIS_INVALID, + /* B9 */ ZYDIS_INVALID, + /* BA */ ZYDIS_INVALID, + /* BB */ 0x0499, + /* BC */ ZYDIS_INVALID, + /* BD */ ZYDIS_INVALID, + /* BE */ ZYDIS_INVALID, + /* BF */ 0x03C7, + /* C0 */ ZYDIS_INVALID, + /* C1 */ ZYDIS_INVALID, + /* C2 */ ZYDIS_INVALID, + /* C3 */ ZYDIS_INVALID, + /* C4 */ ZYDIS_INVALID, + /* C5 */ ZYDIS_INVALID, + /* C6 */ ZYDIS_INVALID, + /* C7 */ ZYDIS_INVALID, + /* C8 */ ZYDIS_INVALID, + /* C9 */ ZYDIS_INVALID, + /* CA */ ZYDIS_INVALID, + /* CB */ ZYDIS_INVALID, + /* CC */ ZYDIS_INVALID, + /* CD */ ZYDIS_INVALID, + /* CE */ ZYDIS_INVALID, + /* CF */ ZYDIS_INVALID, + /* D0 */ ZYDIS_INVALID, + /* D1 */ ZYDIS_INVALID, + /* D2 */ ZYDIS_INVALID, + /* D3 */ ZYDIS_INVALID, + /* D4 */ ZYDIS_INVALID, + /* D5 */ ZYDIS_INVALID, + /* D6 */ ZYDIS_INVALID, + /* D7 */ ZYDIS_INVALID, + /* D8 */ ZYDIS_INVALID, + /* D9 */ ZYDIS_INVALID, + /* DA */ ZYDIS_INVALID, + /* DB */ ZYDIS_INVALID, + /* DC */ ZYDIS_INVALID, + /* DD */ ZYDIS_INVALID, + /* DE */ ZYDIS_INVALID, + /* DF */ ZYDIS_INVALID, + /* E0 */ ZYDIS_INVALID, + /* E1 */ ZYDIS_INVALID, + /* E2 */ ZYDIS_INVALID, + /* E3 */ ZYDIS_INVALID, + /* E4 */ ZYDIS_INVALID, + /* E5 */ ZYDIS_INVALID, + /* E6 */ ZYDIS_INVALID, + /* E7 */ ZYDIS_INVALID, + /* E8 */ ZYDIS_INVALID, + /* E9 */ ZYDIS_INVALID, + /* EA */ ZYDIS_INVALID, + /* EB */ ZYDIS_INVALID, + /* EC */ ZYDIS_INVALID, + /* ED */ ZYDIS_INVALID, + /* EE */ ZYDIS_INVALID, + /* EF */ ZYDIS_INVALID, + /* F0 */ ZYDIS_INVALID, + /* F1 */ ZYDIS_INVALID, + /* F2 */ ZYDIS_INVALID, + /* F3 */ ZYDIS_INVALID, + /* F4 */ ZYDIS_INVALID, + /* F5 */ ZYDIS_INVALID, + /* F6 */ ZYDIS_INVALID, + /* F7 */ ZYDIS_INVALID, + /* F8 */ ZYDIS_INVALID, + /* F9 */ ZYDIS_INVALID, + /* FA */ ZYDIS_INVALID, + /* FB */ ZYDIS_INVALID, + /* FC */ ZYDIS_INVALID, + /* FD */ ZYDIS_INVALID, + /* FE */ ZYDIS_INVALID, + /* FF */ ZYDIS_INVALID, + }, +}; + +const OpcodeTreeNode optreeVex[][16] = +{ + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x0024), + /* 01 */ NODE(OpcodeTreeNodeType::TABLE, 0x0004), + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ NODE(OpcodeTreeNodeType::TABLE, 0x0005), + /* 06 */ NODE(OpcodeTreeNodeType::TABLE, 0x0006), + /* 07 */ NODE(OpcodeTreeNodeType::TABLE, 0x0007), + /* 08 */ ZYDIS_INVALID, + /* 09 */ NODE(OpcodeTreeNodeType::TABLE, 0x0008), + /* 0A */ ZYDIS_INVALID, + /* 0B */ ZYDIS_INVALID, + /* 0C */ ZYDIS_INVALID, + /* 0D */ NODE(OpcodeTreeNodeType::TABLE, 0x0009), + /* 0E */ ZYDIS_INVALID, + /* 0F */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::MODE, 0x0026), + /* 01 */ NODE(OpcodeTreeNodeType::TABLE, 0x0004), + /* 02 */ ZYDIS_INVALID, + /* 03 */ ZYDIS_INVALID, + /* 04 */ ZYDIS_INVALID, + /* 05 */ NODE(OpcodeTreeNodeType::TABLE, 0x0005), + /* 06 */ ZYDIS_INVALID, + /* 07 */ ZYDIS_INVALID, + /* 08 */ ZYDIS_INVALID, + /* 09 */ NODE(OpcodeTreeNodeType::TABLE, 0x0008), + /* 0A */ ZYDIS_INVALID, + /* 0B */ ZYDIS_INVALID, + /* 0C */ ZYDIS_INVALID, + /* 0D */ NODE(OpcodeTreeNodeType::TABLE, 0x0009), + /* 0E */ ZYDIS_INVALID, + /* 0F */ ZYDIS_INVALID, + }, +}; + +const OpcodeTreeNode optreeVexW[][2] = +{ + { + /* 00 */ 0x061D, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x061C, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0692, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0691, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x057B, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXL, 0x0008), + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05A6, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05A5, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05A7, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x05A4, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x061E, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x061B, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXL, 0x0009), + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x061F, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0620, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0621, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x0622, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXL, 0x000A), + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXL, 0x000B), + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXL, 0x000C), + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXL, 0x000D), + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ NODE(OpcodeTreeNodeType::VEXL, 0x000E), + /* 01 */ NODE(OpcodeTreeNodeType::VEXL, 0x000F), + }, + { + /* 00 */ 0x0579, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x0578, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x060B, + /* 01 */ ZYDIS_INVALID, + }, +}; + +const OpcodeTreeNode optreeVexL[][2] = +{ + { + /* 00 */ 0x069C, + /* 01 */ 0x069B, + }, + { + /* 00 */ 0x0660, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x065A, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x065E, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x063F, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x065F, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x065B, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x065D, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x057A, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x061A, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x05A0, + }, + { + /* 00 */ ZYDIS_INVALID, + /* 01 */ 0x059A, + }, + { + /* 00 */ 0x062C, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x062E, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x062D, + /* 01 */ ZYDIS_INVALID, + }, + { + /* 00 */ 0x062F, + /* 01 */ ZYDIS_INVALID, + }, +}; + +#undef ZYDIS_INVALID +#undef NODE + +#define OPI_NONE { DefinedOperandType::NONE, DefinedOperandSize::NA } +#define OPI_AL { DefinedOperandType::AL, DefinedOperandSize::B } +#define OPI_AX { DefinedOperandType::AX, DefinedOperandSize::W } +#define OPI_Av { DefinedOperandType::A, DefinedOperandSize::V } +#define OPI_C { DefinedOperandType::C, DefinedOperandSize::NA } +#define OPI_CL { DefinedOperandType::CL, DefinedOperandSize::B } +#define OPI_CS { DefinedOperandType::CS, DefinedOperandSize::NA } +#define OPI_CX { DefinedOperandType::CX, DefinedOperandSize::W } +#define OPI_D { DefinedOperandType::D, DefinedOperandSize::NA } +#define OPI_DL { DefinedOperandType::DL, DefinedOperandSize::B } +#define OPI_DS { DefinedOperandType::DS, DefinedOperandSize::NA } +#define OPI_DX { DefinedOperandType::DX, DefinedOperandSize::W } +#define OPI_E { DefinedOperandType::E, DefinedOperandSize::NA } +#define OPI_ES { DefinedOperandType::ES, DefinedOperandSize::NA } +#define OPI_Eb { DefinedOperandType::E, DefinedOperandSize::B } +#define OPI_Ed { DefinedOperandType::E, DefinedOperandSize::D } +#define OPI_Eq { DefinedOperandType::E, DefinedOperandSize::Q } +#define OPI_Ev { DefinedOperandType::E, DefinedOperandSize::V } +#define OPI_Ew { DefinedOperandType::E, DefinedOperandSize::W } +#define OPI_Ey { DefinedOperandType::E, DefinedOperandSize::Y } +#define OPI_Ez { DefinedOperandType::E, DefinedOperandSize::Z } +#define OPI_FS { DefinedOperandType::FS, DefinedOperandSize::NA } +#define OPI_Fv { DefinedOperandType::F, DefinedOperandSize::V } +#define OPI_G { DefinedOperandType::G, DefinedOperandSize::NA } +#define OPI_GS { DefinedOperandType::GS, DefinedOperandSize::NA } +#define OPI_Gb { DefinedOperandType::G, DefinedOperandSize::B } +#define OPI_Gd { DefinedOperandType::G, DefinedOperandSize::D } +#define OPI_Gq { DefinedOperandType::G, DefinedOperandSize::Q } +#define OPI_Gv { DefinedOperandType::G, DefinedOperandSize::V } +#define OPI_Gw { DefinedOperandType::G, DefinedOperandSize::W } +#define OPI_Gy { DefinedOperandType::G, DefinedOperandSize::Y } +#define OPI_Gz { DefinedOperandType::G, DefinedOperandSize::Z } +#define OPI_H { DefinedOperandType::H, DefinedOperandSize::X } +#define OPI_Hqq { DefinedOperandType::H, DefinedOperandSize::QQ } +#define OPI_Hx { DefinedOperandType::H, DefinedOperandSize::X } +#define OPI_I1 { DefinedOperandType::I1, DefinedOperandSize::NA } +#define OPI_Ib { DefinedOperandType::I, DefinedOperandSize::B } +#define OPI_Iv { DefinedOperandType::I, DefinedOperandSize::V } +#define OPI_Iw { DefinedOperandType::I, DefinedOperandSize::W } +#define OPI_Iz { DefinedOperandType::I, DefinedOperandSize::Z } +#define OPI_Jb { DefinedOperandType::J, DefinedOperandSize::B } +#define OPI_Jv { DefinedOperandType::J, DefinedOperandSize::V } +#define OPI_Jz { DefinedOperandType::J, DefinedOperandSize::Z } +#define OPI_L { DefinedOperandType::L, DefinedOperandSize::O } +#define OPI_Lx { DefinedOperandType::L, DefinedOperandSize::X } +#define OPI_M { DefinedOperandType::M, DefinedOperandSize::NA } +#define OPI_Mb { DefinedOperandType::M, DefinedOperandSize::B } +#define OPI_MbRd { DefinedOperandType::MR, DefinedOperandSize::BD } +#define OPI_MbRv { DefinedOperandType::MR, DefinedOperandSize::BV } +#define OPI_Md { DefinedOperandType::M, DefinedOperandSize::D } +#define OPI_MdRy { DefinedOperandType::MR, DefinedOperandSize::DY } +#define OPI_MdU { DefinedOperandType::MU, DefinedOperandSize::DO } +#define OPI_Mdq { DefinedOperandType::M, DefinedOperandSize::DQ } +#define OPI_Mo { DefinedOperandType::M, DefinedOperandSize::O } +#define OPI_Mq { DefinedOperandType::M, DefinedOperandSize::Q } +#define OPI_MqU { DefinedOperandType::MU, DefinedOperandSize::QO } +#define OPI_Ms { DefinedOperandType::M, DefinedOperandSize::W } +#define OPI_Mt { DefinedOperandType::M, DefinedOperandSize::T } +#define OPI_Mv { DefinedOperandType::M, DefinedOperandSize::V } +#define OPI_Mw { DefinedOperandType::M, DefinedOperandSize::W } +#define OPI_MwRd { DefinedOperandType::MR, DefinedOperandSize::WD } +#define OPI_MwRv { DefinedOperandType::MR, DefinedOperandSize::WV } +#define OPI_MwRy { DefinedOperandType::MR, DefinedOperandSize::WY } +#define OPI_MwU { DefinedOperandType::MU, DefinedOperandSize::WO } +#define OPI_N { DefinedOperandType::N, DefinedOperandSize::Q } +#define OPI_Ob { DefinedOperandType::O, DefinedOperandSize::B } +#define OPI_Ov { DefinedOperandType::O, DefinedOperandSize::V } +#define OPI_Ow { DefinedOperandType::O, DefinedOperandSize::W } +#define OPI_P { DefinedOperandType::P, DefinedOperandSize::Q } +#define OPI_Q { DefinedOperandType::Q, DefinedOperandSize::Q } +#define OPI_R { DefinedOperandType::R, DefinedOperandSize::RDQ } +#define OPI_R0b { DefinedOperandType::R0, DefinedOperandSize::B } +#define OPI_R0v { DefinedOperandType::R0, DefinedOperandSize::V } +#define OPI_R0w { DefinedOperandType::R0, DefinedOperandSize::W } +#define OPI_R0y { DefinedOperandType::R0, DefinedOperandSize::Y } +#define OPI_R0z { DefinedOperandType::R0, DefinedOperandSize::Z } +#define OPI_R1b { DefinedOperandType::R1, DefinedOperandSize::B } +#define OPI_R1v { DefinedOperandType::R1, DefinedOperandSize::V } +#define OPI_R1w { DefinedOperandType::R1, DefinedOperandSize::W } +#define OPI_R1y { DefinedOperandType::R1, DefinedOperandSize::Y } +#define OPI_R1z { DefinedOperandType::R1, DefinedOperandSize::Z } +#define OPI_R2b { DefinedOperandType::R2, DefinedOperandSize::B } +#define OPI_R2v { DefinedOperandType::R2, DefinedOperandSize::V } +#define OPI_R2w { DefinedOperandType::R2, DefinedOperandSize::W } +#define OPI_R2y { DefinedOperandType::R2, DefinedOperandSize::Y } +#define OPI_R2z { DefinedOperandType::R2, DefinedOperandSize::Z } +#define OPI_R3b { DefinedOperandType::R3, DefinedOperandSize::B } +#define OPI_R3v { DefinedOperandType::R3, DefinedOperandSize::V } +#define OPI_R3w { DefinedOperandType::R3, DefinedOperandSize::W } +#define OPI_R3y { DefinedOperandType::R3, DefinedOperandSize::Y } +#define OPI_R3z { DefinedOperandType::R3, DefinedOperandSize::Z } +#define OPI_R4b { DefinedOperandType::R4, DefinedOperandSize::B } +#define OPI_R4v { DefinedOperandType::R4, DefinedOperandSize::V } +#define OPI_R4w { DefinedOperandType::R4, DefinedOperandSize::W } +#define OPI_R4y { DefinedOperandType::R4, DefinedOperandSize::Y } +#define OPI_R4z { DefinedOperandType::R4, DefinedOperandSize::Z } +#define OPI_R5b { DefinedOperandType::R5, DefinedOperandSize::B } +#define OPI_R5v { DefinedOperandType::R5, DefinedOperandSize::V } +#define OPI_R5w { DefinedOperandType::R5, DefinedOperandSize::W } +#define OPI_R5y { DefinedOperandType::R5, DefinedOperandSize::Y } +#define OPI_R5z { DefinedOperandType::R5, DefinedOperandSize::Z } +#define OPI_R6b { DefinedOperandType::R6, DefinedOperandSize::B } +#define OPI_R6v { DefinedOperandType::R6, DefinedOperandSize::V } +#define OPI_R6w { DefinedOperandType::R6, DefinedOperandSize::W } +#define OPI_R6y { DefinedOperandType::R6, DefinedOperandSize::Y } +#define OPI_R6z { DefinedOperandType::R6, DefinedOperandSize::Z } +#define OPI_R7b { DefinedOperandType::R7, DefinedOperandSize::B } +#define OPI_R7v { DefinedOperandType::R7, DefinedOperandSize::V } +#define OPI_R7w { DefinedOperandType::R7, DefinedOperandSize::W } +#define OPI_R7y { DefinedOperandType::R7, DefinedOperandSize::Y } +#define OPI_R7z { DefinedOperandType::R7, DefinedOperandSize::Z } +#define OPI_S { DefinedOperandType::S, DefinedOperandSize::W } +#define OPI_SS { DefinedOperandType::SS, DefinedOperandSize::NA } +#define OPI_ST0 { DefinedOperandType::ST0, DefinedOperandSize::NA } +#define OPI_ST1 { DefinedOperandType::ST1, DefinedOperandSize::NA } +#define OPI_ST2 { DefinedOperandType::ST2, DefinedOperandSize::NA } +#define OPI_ST3 { DefinedOperandType::ST3, DefinedOperandSize::NA } +#define OPI_ST4 { DefinedOperandType::ST4, DefinedOperandSize::NA } +#define OPI_ST5 { DefinedOperandType::ST5, DefinedOperandSize::NA } +#define OPI_ST6 { DefinedOperandType::ST6, DefinedOperandSize::NA } +#define OPI_ST7 { DefinedOperandType::ST7, DefinedOperandSize::NA } +#define OPI_U { DefinedOperandType::U, DefinedOperandSize::O } +#define OPI_Ux { DefinedOperandType::U, DefinedOperandSize::X } +#define OPI_V { DefinedOperandType::V, DefinedOperandSize::DQ } +#define OPI_Vdq { DefinedOperandType::V, DefinedOperandSize::DQ } +#define OPI_Vqq { DefinedOperandType::V, DefinedOperandSize::QQ } +#define OPI_Vsd { DefinedOperandType::V, DefinedOperandSize::Q } +#define OPI_Vx { DefinedOperandType::V, DefinedOperandSize::X } +#define OPI_W { DefinedOperandType::W, DefinedOperandSize::DQ } +#define OPI_Wdq { DefinedOperandType::W, DefinedOperandSize::DQ } +#define OPI_Wqq { DefinedOperandType::W, DefinedOperandSize::QQ } +#define OPI_Wsd { DefinedOperandType::W, DefinedOperandSize::Q } +#define OPI_Wx { DefinedOperandType::W, DefinedOperandSize::X } +#define OPI_eAX { DefinedOperandType::EAX, DefinedOperandSize::Z } +#define OPI_eCX { DefinedOperandType::ECX, DefinedOperandSize::Z } +#define OPI_eDX { DefinedOperandType::EDX, DefinedOperandSize::Z } +#define OPI_rAX { DefinedOperandType::RAX, DefinedOperandSize::V } +#define OPI_rCX { DefinedOperandType::RCX, DefinedOperandSize::V } +#define OPI_rDX { DefinedOperandType::RDX, DefinedOperandSize::V } +#define OPI_sIb { DefinedOperandType::sI, DefinedOperandSize::B } +#define OPI_sIz { DefinedOperandType::sI, DefinedOperandSize::Z } + +const InstructionDefinition instrDefinitions[] = +{ + /* 000 */ { InstructionMnemonic::INVALID, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 001 */ { InstructionMnemonic::AAA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 002 */ { InstructionMnemonic::AAD, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 003 */ { InstructionMnemonic::AAM, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 004 */ { InstructionMnemonic::AAS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 005 */ { InstructionMnemonic::ADC, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 006 */ { InstructionMnemonic::ADC, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, + /* 007 */ { InstructionMnemonic::ADC, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, + /* 008 */ { InstructionMnemonic::ADC, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 009 */ { InstructionMnemonic::ADC, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 00A */ { InstructionMnemonic::ADC, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 00B */ { InstructionMnemonic::ADC, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 00C */ { InstructionMnemonic::ADC, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 00D */ { InstructionMnemonic::ADC, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 00E */ { InstructionMnemonic::ADC, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 00F */ { InstructionMnemonic::ADD, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 010 */ { InstructionMnemonic::ADD, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, + /* 011 */ { InstructionMnemonic::ADD, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, + /* 012 */ { InstructionMnemonic::ADD, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 013 */ { InstructionMnemonic::ADD, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 014 */ { InstructionMnemonic::ADD, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 015 */ { InstructionMnemonic::ADD, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 016 */ { InstructionMnemonic::ADD, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 017 */ { InstructionMnemonic::ADD, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 018 */ { InstructionMnemonic::ADD, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 019 */ { InstructionMnemonic::ADDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 01A */ { InstructionMnemonic::ADDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 01B */ { InstructionMnemonic::ADDSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 01C */ { InstructionMnemonic::ADDSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 01D */ { InstructionMnemonic::ADDSUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 01E */ { InstructionMnemonic::ADDSUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 01F */ { InstructionMnemonic::AESDEC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 020 */ { InstructionMnemonic::AESDECLAST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 021 */ { InstructionMnemonic::AESENC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 022 */ { InstructionMnemonic::AESENCLAST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 023 */ { InstructionMnemonic::AESIMC, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 024 */ { InstructionMnemonic::AESKEYGENASSIST, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 025 */ { InstructionMnemonic::AND, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 026 */ { InstructionMnemonic::AND, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 027 */ { InstructionMnemonic::AND, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 028 */ { InstructionMnemonic::AND, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 029 */ { InstructionMnemonic::AND, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 02A */ { InstructionMnemonic::AND, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, + /* 02B */ { InstructionMnemonic::AND, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 02C */ { InstructionMnemonic::AND, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 02D */ { InstructionMnemonic::AND, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 02E */ { InstructionMnemonic::AND, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, + /* 02F */ { InstructionMnemonic::ANDNPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 030 */ { InstructionMnemonic::ANDNPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 031 */ { InstructionMnemonic::ANDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 032 */ { InstructionMnemonic::ANDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 033 */ { InstructionMnemonic::ARPL, { OPI_Ew, OPI_Gw, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_OPERAND1_WRITE }, + /* 034 */ { InstructionMnemonic::BLENDPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 035 */ { InstructionMnemonic::BLENDPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 036 */ { InstructionMnemonic::BLENDVPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 037 */ { InstructionMnemonic::BLENDVPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 038 */ { InstructionMnemonic::BOUND, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 039 */ { InstructionMnemonic::BSF, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 03A */ { InstructionMnemonic::BSR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 03B */ { InstructionMnemonic::BSWAP, { OPI_R5y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 03C */ { InstructionMnemonic::BSWAP, { OPI_R3y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 03D */ { InstructionMnemonic::BSWAP, { OPI_R1y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 03E */ { InstructionMnemonic::BSWAP, { OPI_R4y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 03F */ { InstructionMnemonic::BSWAP, { OPI_R0y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 040 */ { InstructionMnemonic::BSWAP, { OPI_R2y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 041 */ { InstructionMnemonic::BSWAP, { OPI_R7y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 042 */ { InstructionMnemonic::BSWAP, { OPI_R6y, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 043 */ { InstructionMnemonic::BT, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 044 */ { InstructionMnemonic::BT, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 045 */ { InstructionMnemonic::BTC, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 046 */ { InstructionMnemonic::BTC, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 047 */ { InstructionMnemonic::BTR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 048 */ { InstructionMnemonic::BTR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 049 */ { InstructionMnemonic::BTS, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 04A */ { InstructionMnemonic::BTS, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 04B */ { InstructionMnemonic::CALL, { OPI_Eq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 04C */ { InstructionMnemonic::CALL, { OPI_Fv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 04D */ { InstructionMnemonic::CALL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 04E */ { InstructionMnemonic::CALL, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, + /* 04F */ { InstructionMnemonic::CALL, { OPI_Av, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 050 */ { InstructionMnemonic::CBW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 051 */ { InstructionMnemonic::CDQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 052 */ { InstructionMnemonic::CDQE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 053 */ { InstructionMnemonic::CLC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 054 */ { InstructionMnemonic::CLD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 055 */ { InstructionMnemonic::CLFLUSH, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 056 */ { InstructionMnemonic::CLGI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 057 */ { InstructionMnemonic::CLI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 058 */ { InstructionMnemonic::CLTS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 059 */ { InstructionMnemonic::CMC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 05A */ { InstructionMnemonic::CMOVA, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 05B */ { InstructionMnemonic::CMOVAE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 05C */ { InstructionMnemonic::CMOVB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 05D */ { InstructionMnemonic::CMOVBE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 05E */ { InstructionMnemonic::CMOVE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 05F */ { InstructionMnemonic::CMOVG, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 060 */ { InstructionMnemonic::CMOVGE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 061 */ { InstructionMnemonic::CMOVL, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 062 */ { InstructionMnemonic::CMOVLE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 063 */ { InstructionMnemonic::CMOVNE, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 064 */ { InstructionMnemonic::CMOVNO, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 065 */ { InstructionMnemonic::CMOVNP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 066 */ { InstructionMnemonic::CMOVNS, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 067 */ { InstructionMnemonic::CMOVO, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 068 */ { InstructionMnemonic::CMOVP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 069 */ { InstructionMnemonic::CMOVS, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 06A */ { InstructionMnemonic::CMP, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 06B */ { InstructionMnemonic::CMP, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 06C */ { InstructionMnemonic::CMP, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 06D */ { InstructionMnemonic::CMP, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 06E */ { InstructionMnemonic::CMP, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 06F */ { InstructionMnemonic::CMP, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 070 */ { InstructionMnemonic::CMP, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, 0 }, + /* 071 */ { InstructionMnemonic::CMP, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 072 */ { InstructionMnemonic::CMP, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 073 */ { InstructionMnemonic::CMP, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 }, + /* 074 */ { InstructionMnemonic::CMPPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 075 */ { InstructionMnemonic::CMPPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 076 */ { InstructionMnemonic::CMPSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 077 */ { InstructionMnemonic::CMPSD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 078 */ { InstructionMnemonic::CMPSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 079 */ { InstructionMnemonic::CMPSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 07A */ { InstructionMnemonic::CMPSS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 07B */ { InstructionMnemonic::CMPSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 07C */ { InstructionMnemonic::CMPXCHG, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 07D */ { InstructionMnemonic::CMPXCHG, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 07E */ { InstructionMnemonic::CMPXCHG16B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 07F */ { InstructionMnemonic::CMPXCHG8B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 080 */ { InstructionMnemonic::CMPXCHG8B, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 081 */ { InstructionMnemonic::COMISD, { OPI_Vsd, OPI_Wsd, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 082 */ { InstructionMnemonic::COMISS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 083 */ { InstructionMnemonic::CPUID, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 084 */ { InstructionMnemonic::CQO, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 085 */ { InstructionMnemonic::CRC32, { OPI_Gy, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 086 */ { InstructionMnemonic::CRC32, { OPI_Gy, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 087 */ { InstructionMnemonic::CVTDQ2PD, { OPI_V, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 088 */ { InstructionMnemonic::CVTDQ2PS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 089 */ { InstructionMnemonic::CVTPD2DQ, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 08A */ { InstructionMnemonic::CVTPD2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 08B */ { InstructionMnemonic::CVTPD2PS, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 08C */ { InstructionMnemonic::CVTPI2PD, { OPI_V, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 08D */ { InstructionMnemonic::CVTPI2PS, { OPI_V, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 08E */ { InstructionMnemonic::CVTPS2DQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 08F */ { InstructionMnemonic::CVTPS2PD, { OPI_V, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 090 */ { InstructionMnemonic::CVTPS2PI, { OPI_P, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 091 */ { InstructionMnemonic::CVTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 092 */ { InstructionMnemonic::CVTSD2SS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 093 */ { InstructionMnemonic::CVTSI2SD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 094 */ { InstructionMnemonic::CVTSI2SS, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 095 */ { InstructionMnemonic::CVTSS2SD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 096 */ { InstructionMnemonic::CVTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 097 */ { InstructionMnemonic::CVTTPD2DQ, { OPI_Vdq, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 098 */ { InstructionMnemonic::CVTTPD2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 099 */ { InstructionMnemonic::CVTTPS2DQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 09A */ { InstructionMnemonic::CVTTPS2PI, { OPI_P, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 09B */ { InstructionMnemonic::CVTTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 09C */ { InstructionMnemonic::CVTTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 09D */ { InstructionMnemonic::CWD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 09E */ { InstructionMnemonic::CWDE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 09F */ { InstructionMnemonic::DAA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, + /* 0A0 */ { InstructionMnemonic::DAS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, + /* 0A1 */ { InstructionMnemonic::DEC, { OPI_R6z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 0A2 */ { InstructionMnemonic::DEC, { OPI_R5z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 0A3 */ { InstructionMnemonic::DEC, { OPI_R7z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 0A4 */ { InstructionMnemonic::DEC, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 0A5 */ { InstructionMnemonic::DEC, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 0A6 */ { InstructionMnemonic::DEC, { OPI_R1z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 0A7 */ { InstructionMnemonic::DEC, { OPI_R0z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 0A8 */ { InstructionMnemonic::DEC, { OPI_R2z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 0A9 */ { InstructionMnemonic::DEC, { OPI_R4z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 0AA */ { InstructionMnemonic::DEC, { OPI_R3z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 0AB */ { InstructionMnemonic::DIV, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 0AC */ { InstructionMnemonic::DIV, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 0AD */ { InstructionMnemonic::DIVPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 0AE */ { InstructionMnemonic::DIVPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 0AF */ { InstructionMnemonic::DIVSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 0B0 */ { InstructionMnemonic::DIVSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 0B1 */ { InstructionMnemonic::DPPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 0B2 */ { InstructionMnemonic::DPPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 0B3 */ { InstructionMnemonic::EMMS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 0B4 */ { InstructionMnemonic::ENTER, { OPI_Iw, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_DEFAULT_64 }, + /* 0B5 */ { InstructionMnemonic::EXTRACTPS, { OPI_MdRy, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 0B6 */ { InstructionMnemonic::F2XM1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 0B7 */ { InstructionMnemonic::FABS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 0B8 */ { InstructionMnemonic::FADD, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0B9 */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0BA */ { InstructionMnemonic::FADD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 0BB */ { InstructionMnemonic::FADD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 0BC */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0BD */ { InstructionMnemonic::FADD, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0BE */ { InstructionMnemonic::FADD, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0BF */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 0C0 */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 0C1 */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 0C2 */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 0C3 */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 0C4 */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 0C5 */ { InstructionMnemonic::FADD, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 0C6 */ { InstructionMnemonic::FADD, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0C7 */ { InstructionMnemonic::FADD, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0C8 */ { InstructionMnemonic::FADD, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0C9 */ { InstructionMnemonic::FADD, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0CA */ { InstructionMnemonic::FADDP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0CB */ { InstructionMnemonic::FADDP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0CC */ { InstructionMnemonic::FADDP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0CD */ { InstructionMnemonic::FADDP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0CE */ { InstructionMnemonic::FADDP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0CF */ { InstructionMnemonic::FADDP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0D0 */ { InstructionMnemonic::FADDP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0D1 */ { InstructionMnemonic::FADDP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0D2 */ { InstructionMnemonic::FBLD, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 0D3 */ { InstructionMnemonic::FBSTP, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 0D4 */ { InstructionMnemonic::FCHS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 0D5 */ { InstructionMnemonic::FCLEX, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 0D6 */ { InstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 0D7 */ { InstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 0D8 */ { InstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 0D9 */ { InstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0DA */ { InstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 0DB */ { InstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 0DC */ { InstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 0DD */ { InstructionMnemonic::FCMOVB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 0DE */ { InstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 0DF */ { InstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 0E0 */ { InstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 0E1 */ { InstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 0E2 */ { InstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 0E3 */ { InstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 0E4 */ { InstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0E5 */ { InstructionMnemonic::FCMOVBE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 0E6 */ { InstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0E7 */ { InstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 0E8 */ { InstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 0E9 */ { InstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 0EA */ { InstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 0EB */ { InstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 0EC */ { InstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 0ED */ { InstructionMnemonic::FCMOVE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 0EE */ { InstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 0EF */ { InstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 0F0 */ { InstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0F1 */ { InstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 0F2 */ { InstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 0F3 */ { InstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 0F4 */ { InstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 0F5 */ { InstructionMnemonic::FCMOVNB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 0F6 */ { InstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 0F7 */ { InstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 0F8 */ { InstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 0F9 */ { InstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 0FA */ { InstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 0FB */ { InstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 0FC */ { InstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 0FD */ { InstructionMnemonic::FCMOVNBE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 0FE */ { InstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 0FF */ { InstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 100 */ { InstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 101 */ { InstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 102 */ { InstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 103 */ { InstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 104 */ { InstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 105 */ { InstructionMnemonic::FCMOVNE, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 106 */ { InstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 107 */ { InstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 108 */ { InstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 109 */ { InstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 10A */ { InstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 10B */ { InstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 10C */ { InstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 10D */ { InstructionMnemonic::FCMOVNU, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 10E */ { InstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 10F */ { InstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 110 */ { InstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 111 */ { InstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 112 */ { InstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 113 */ { InstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 114 */ { InstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 115 */ { InstructionMnemonic::FCMOVU, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 116 */ { InstructionMnemonic::FCOM, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 117 */ { InstructionMnemonic::FCOM, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 118 */ { InstructionMnemonic::FCOM, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 119 */ { InstructionMnemonic::FCOM, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 11A */ { InstructionMnemonic::FCOM, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 11B */ { InstructionMnemonic::FCOM, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 11C */ { InstructionMnemonic::FCOM, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 11D */ { InstructionMnemonic::FCOM, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 11E */ { InstructionMnemonic::FCOM, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 11F */ { InstructionMnemonic::FCOM, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 120 */ { InstructionMnemonic::FCOM2, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 121 */ { InstructionMnemonic::FCOM2, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 122 */ { InstructionMnemonic::FCOM2, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 123 */ { InstructionMnemonic::FCOM2, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 124 */ { InstructionMnemonic::FCOM2, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 125 */ { InstructionMnemonic::FCOM2, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 126 */ { InstructionMnemonic::FCOM2, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 127 */ { InstructionMnemonic::FCOM2, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 128 */ { InstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 129 */ { InstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 12A */ { InstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 12B */ { InstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 12C */ { InstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 12D */ { InstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 12E */ { InstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 12F */ { InstructionMnemonic::FCOMI, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 130 */ { InstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 131 */ { InstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 132 */ { InstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 133 */ { InstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 134 */ { InstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 135 */ { InstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 136 */ { InstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 137 */ { InstructionMnemonic::FCOMIP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 138 */ { InstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 139 */ { InstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 13A */ { InstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 13B */ { InstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 13C */ { InstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 13D */ { InstructionMnemonic::FCOMP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 13E */ { InstructionMnemonic::FCOMP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 13F */ { InstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 140 */ { InstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 141 */ { InstructionMnemonic::FCOMP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 142 */ { InstructionMnemonic::FCOMP3, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 143 */ { InstructionMnemonic::FCOMP3, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 144 */ { InstructionMnemonic::FCOMP3, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 145 */ { InstructionMnemonic::FCOMP3, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 146 */ { InstructionMnemonic::FCOMP3, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 147 */ { InstructionMnemonic::FCOMP3, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 148 */ { InstructionMnemonic::FCOMP3, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 149 */ { InstructionMnemonic::FCOMP3, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 14A */ { InstructionMnemonic::FCOMP5, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 14B */ { InstructionMnemonic::FCOMP5, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 14C */ { InstructionMnemonic::FCOMP5, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 14D */ { InstructionMnemonic::FCOMP5, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 14E */ { InstructionMnemonic::FCOMP5, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 14F */ { InstructionMnemonic::FCOMP5, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 150 */ { InstructionMnemonic::FCOMP5, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 151 */ { InstructionMnemonic::FCOMP5, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 152 */ { InstructionMnemonic::FCOMPP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 153 */ { InstructionMnemonic::FCOS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 154 */ { InstructionMnemonic::FDECSTP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 155 */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 156 */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 157 */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 158 */ { InstructionMnemonic::FDIV, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 159 */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 15A */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 15B */ { InstructionMnemonic::FDIV, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 15C */ { InstructionMnemonic::FDIV, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 15D */ { InstructionMnemonic::FDIV, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 15E */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 15F */ { InstructionMnemonic::FDIV, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 160 */ { InstructionMnemonic::FDIV, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 161 */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 162 */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 163 */ { InstructionMnemonic::FDIV, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 164 */ { InstructionMnemonic::FDIV, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 165 */ { InstructionMnemonic::FDIV, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 166 */ { InstructionMnemonic::FDIV, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 167 */ { InstructionMnemonic::FDIVP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 168 */ { InstructionMnemonic::FDIVP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 169 */ { InstructionMnemonic::FDIVP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 16A */ { InstructionMnemonic::FDIVP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 16B */ { InstructionMnemonic::FDIVP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 16C */ { InstructionMnemonic::FDIVP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 16D */ { InstructionMnemonic::FDIVP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 16E */ { InstructionMnemonic::FDIVP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 16F */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 170 */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 171 */ { InstructionMnemonic::FDIVR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 172 */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 173 */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 174 */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 175 */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 176 */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 177 */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 178 */ { InstructionMnemonic::FDIVR, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 179 */ { InstructionMnemonic::FDIVR, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 17A */ { InstructionMnemonic::FDIVR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 17B */ { InstructionMnemonic::FDIVR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 17C */ { InstructionMnemonic::FDIVR, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 17D */ { InstructionMnemonic::FDIVR, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 17E */ { InstructionMnemonic::FDIVR, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 17F */ { InstructionMnemonic::FDIVR, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 180 */ { InstructionMnemonic::FDIVR, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 181 */ { InstructionMnemonic::FDIVRP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 182 */ { InstructionMnemonic::FDIVRP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 183 */ { InstructionMnemonic::FDIVRP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 184 */ { InstructionMnemonic::FDIVRP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 185 */ { InstructionMnemonic::FDIVRP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 186 */ { InstructionMnemonic::FDIVRP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 187 */ { InstructionMnemonic::FDIVRP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 188 */ { InstructionMnemonic::FDIVRP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 189 */ { InstructionMnemonic::FEMMS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 18A */ { InstructionMnemonic::FFREE, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 18B */ { InstructionMnemonic::FFREE, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 18C */ { InstructionMnemonic::FFREE, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 18D */ { InstructionMnemonic::FFREE, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 18E */ { InstructionMnemonic::FFREE, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 18F */ { InstructionMnemonic::FFREE, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 190 */ { InstructionMnemonic::FFREE, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 191 */ { InstructionMnemonic::FFREE, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 192 */ { InstructionMnemonic::FFREEP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 193 */ { InstructionMnemonic::FFREEP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 194 */ { InstructionMnemonic::FFREEP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 195 */ { InstructionMnemonic::FFREEP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 196 */ { InstructionMnemonic::FFREEP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 197 */ { InstructionMnemonic::FFREEP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 198 */ { InstructionMnemonic::FFREEP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 199 */ { InstructionMnemonic::FFREEP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 19A */ { InstructionMnemonic::FIADD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 19B */ { InstructionMnemonic::FIADD, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 19C */ { InstructionMnemonic::FICOM, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 19D */ { InstructionMnemonic::FICOM, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 19E */ { InstructionMnemonic::FICOMP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 19F */ { InstructionMnemonic::FICOMP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A0 */ { InstructionMnemonic::FIDIV, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A1 */ { InstructionMnemonic::FIDIV, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A2 */ { InstructionMnemonic::FIDIVR, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A3 */ { InstructionMnemonic::FIDIVR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A4 */ { InstructionMnemonic::FILD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A5 */ { InstructionMnemonic::FILD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A6 */ { InstructionMnemonic::FILD, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A7 */ { InstructionMnemonic::FIMUL, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A8 */ { InstructionMnemonic::FIMUL, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1A9 */ { InstructionMnemonic::FINCSTP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1AA */ { InstructionMnemonic::FIST, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1AB */ { InstructionMnemonic::FIST, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1AC */ { InstructionMnemonic::FISTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1AD */ { InstructionMnemonic::FISTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1AE */ { InstructionMnemonic::FISTP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1AF */ { InstructionMnemonic::FISTTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1B0 */ { InstructionMnemonic::FISTTP, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1B1 */ { InstructionMnemonic::FISTTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1B2 */ { InstructionMnemonic::FISUB, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1B3 */ { InstructionMnemonic::FISUB, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1B4 */ { InstructionMnemonic::FISUBR, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1B5 */ { InstructionMnemonic::FISUBR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1B6 */ { InstructionMnemonic::FLD, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1B7 */ { InstructionMnemonic::FLD, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1B8 */ { InstructionMnemonic::FLD, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1B9 */ { InstructionMnemonic::FLD, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1BA */ { InstructionMnemonic::FLD, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1BB */ { InstructionMnemonic::FLD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1BC */ { InstructionMnemonic::FLD, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1BD */ { InstructionMnemonic::FLD, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1BE */ { InstructionMnemonic::FLD, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1BF */ { InstructionMnemonic::FLD, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1C0 */ { InstructionMnemonic::FLD, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1C1 */ { InstructionMnemonic::FLD1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1C2 */ { InstructionMnemonic::FLDCW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1C3 */ { InstructionMnemonic::FLDENV, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1C4 */ { InstructionMnemonic::FLDL2E, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1C5 */ { InstructionMnemonic::FLDL2T, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1C6 */ { InstructionMnemonic::FLDLG2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1C7 */ { InstructionMnemonic::FLDLN2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1C8 */ { InstructionMnemonic::FLDPI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1C9 */ { InstructionMnemonic::FLDZ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1CA */ { InstructionMnemonic::FMUL, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1CB */ { InstructionMnemonic::FMUL, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1CC */ { InstructionMnemonic::FMUL, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1CD */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 1CE */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1CF */ { InstructionMnemonic::FMUL, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1D0 */ { InstructionMnemonic::FMUL, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1D1 */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1D2 */ { InstructionMnemonic::FMUL, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1D3 */ { InstructionMnemonic::FMUL, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1D4 */ { InstructionMnemonic::FMUL, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1D5 */ { InstructionMnemonic::FMUL, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1D6 */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 1D7 */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 1D8 */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 1D9 */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 1DA */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 1DB */ { InstructionMnemonic::FMUL, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 1DC */ { InstructionMnemonic::FMULP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1DD */ { InstructionMnemonic::FMULP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1DE */ { InstructionMnemonic::FMULP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1DF */ { InstructionMnemonic::FMULP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1E0 */ { InstructionMnemonic::FMULP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1E1 */ { InstructionMnemonic::FMULP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1E2 */ { InstructionMnemonic::FMULP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1E3 */ { InstructionMnemonic::FMULP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 1E4 */ { InstructionMnemonic::FNDISI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1E5 */ { InstructionMnemonic::FNENI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1E6 */ { InstructionMnemonic::FNINIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1E7 */ { InstructionMnemonic::FNOP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1E8 */ { InstructionMnemonic::FNSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1E9 */ { InstructionMnemonic::FNSETPM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1EA */ { InstructionMnemonic::FNSTCW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1EB */ { InstructionMnemonic::FNSTENV, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1EC */ { InstructionMnemonic::FNSTSW, { OPI_AX, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1ED */ { InstructionMnemonic::FNSTSW, { OPI_Mw, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1EE */ { InstructionMnemonic::FPATAN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1EF */ { InstructionMnemonic::FPREM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F0 */ { InstructionMnemonic::FPREM1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F1 */ { InstructionMnemonic::FPTAN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F2 */ { InstructionMnemonic::FRNDINT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F3 */ { InstructionMnemonic::FRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1F4 */ { InstructionMnemonic::FRSTPM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F5 */ { InstructionMnemonic::FSCALE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F6 */ { InstructionMnemonic::FSIN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F7 */ { InstructionMnemonic::FSINCOS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F8 */ { InstructionMnemonic::FSQRT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1F9 */ { InstructionMnemonic::FST, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1FA */ { InstructionMnemonic::FST, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1FB */ { InstructionMnemonic::FST, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1FC */ { InstructionMnemonic::FST, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1FD */ { InstructionMnemonic::FST, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 1FE */ { InstructionMnemonic::FST, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 1FF */ { InstructionMnemonic::FST, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 200 */ { InstructionMnemonic::FST, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 201 */ { InstructionMnemonic::FST, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 202 */ { InstructionMnemonic::FST, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 203 */ { InstructionMnemonic::FSTP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 204 */ { InstructionMnemonic::FSTP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 205 */ { InstructionMnemonic::FSTP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 206 */ { InstructionMnemonic::FSTP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 207 */ { InstructionMnemonic::FSTP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 208 */ { InstructionMnemonic::FSTP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 209 */ { InstructionMnemonic::FSTP, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 20A */ { InstructionMnemonic::FSTP, { OPI_Mt, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 20B */ { InstructionMnemonic::FSTP, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 20C */ { InstructionMnemonic::FSTP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 20D */ { InstructionMnemonic::FSTP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 20E */ { InstructionMnemonic::FSTP1, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 20F */ { InstructionMnemonic::FSTP1, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 210 */ { InstructionMnemonic::FSTP1, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 211 */ { InstructionMnemonic::FSTP1, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 212 */ { InstructionMnemonic::FSTP1, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 213 */ { InstructionMnemonic::FSTP1, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 214 */ { InstructionMnemonic::FSTP1, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 215 */ { InstructionMnemonic::FSTP1, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 216 */ { InstructionMnemonic::FSTP8, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 217 */ { InstructionMnemonic::FSTP8, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 218 */ { InstructionMnemonic::FSTP8, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 219 */ { InstructionMnemonic::FSTP8, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 21A */ { InstructionMnemonic::FSTP8, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 21B */ { InstructionMnemonic::FSTP8, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 21C */ { InstructionMnemonic::FSTP8, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 21D */ { InstructionMnemonic::FSTP8, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 21E */ { InstructionMnemonic::FSTP9, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 21F */ { InstructionMnemonic::FSTP9, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 220 */ { InstructionMnemonic::FSTP9, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 221 */ { InstructionMnemonic::FSTP9, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 222 */ { InstructionMnemonic::FSTP9, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 223 */ { InstructionMnemonic::FSTP9, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 224 */ { InstructionMnemonic::FSTP9, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 225 */ { InstructionMnemonic::FSTP9, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 226 */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 227 */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 228 */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 229 */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 22A */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 22B */ { InstructionMnemonic::FSUB, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 22C */ { InstructionMnemonic::FSUB, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 22D */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 22E */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 22F */ { InstructionMnemonic::FSUB, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 230 */ { InstructionMnemonic::FSUB, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 231 */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 232 */ { InstructionMnemonic::FSUB, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 233 */ { InstructionMnemonic::FSUB, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 234 */ { InstructionMnemonic::FSUB, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 235 */ { InstructionMnemonic::FSUB, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 236 */ { InstructionMnemonic::FSUB, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 237 */ { InstructionMnemonic::FSUB, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 238 */ { InstructionMnemonic::FSUBP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 239 */ { InstructionMnemonic::FSUBP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 23A */ { InstructionMnemonic::FSUBP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 23B */ { InstructionMnemonic::FSUBP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 23C */ { InstructionMnemonic::FSUBP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 23D */ { InstructionMnemonic::FSUBP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 23E */ { InstructionMnemonic::FSUBP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 23F */ { InstructionMnemonic::FSUBP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 240 */ { InstructionMnemonic::FSUBR, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 241 */ { InstructionMnemonic::FSUBR, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 242 */ { InstructionMnemonic::FSUBR, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 243 */ { InstructionMnemonic::FSUBR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 244 */ { InstructionMnemonic::FSUBR, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 245 */ { InstructionMnemonic::FSUBR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 246 */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 247 */ { InstructionMnemonic::FSUBR, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 248 */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 249 */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 24A */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 24B */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 24C */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 24D */ { InstructionMnemonic::FSUBR, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 24E */ { InstructionMnemonic::FSUBR, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 24F */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 250 */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 251 */ { InstructionMnemonic::FSUBR, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 252 */ { InstructionMnemonic::FSUBRP, { OPI_ST5, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 253 */ { InstructionMnemonic::FSUBRP, { OPI_ST4, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 254 */ { InstructionMnemonic::FSUBRP, { OPI_ST7, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 255 */ { InstructionMnemonic::FSUBRP, { OPI_ST6, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 256 */ { InstructionMnemonic::FSUBRP, { OPI_ST2, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 257 */ { InstructionMnemonic::FSUBRP, { OPI_ST3, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 258 */ { InstructionMnemonic::FSUBRP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 259 */ { InstructionMnemonic::FSUBRP, { OPI_ST1, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 25A */ { InstructionMnemonic::FTST, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 25B */ { InstructionMnemonic::FUCOM, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 25C */ { InstructionMnemonic::FUCOM, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 25D */ { InstructionMnemonic::FUCOM, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 25E */ { InstructionMnemonic::FUCOM, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 25F */ { InstructionMnemonic::FUCOM, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 260 */ { InstructionMnemonic::FUCOM, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 261 */ { InstructionMnemonic::FUCOM, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 262 */ { InstructionMnemonic::FUCOM, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 263 */ { InstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 264 */ { InstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 265 */ { InstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 266 */ { InstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 267 */ { InstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 268 */ { InstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 269 */ { InstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 26A */ { InstructionMnemonic::FUCOMI, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 26B */ { InstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 26C */ { InstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 26D */ { InstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 26E */ { InstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 26F */ { InstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 270 */ { InstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 271 */ { InstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 272 */ { InstructionMnemonic::FUCOMIP, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 273 */ { InstructionMnemonic::FUCOMP, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 274 */ { InstructionMnemonic::FUCOMP, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 275 */ { InstructionMnemonic::FUCOMP, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 276 */ { InstructionMnemonic::FUCOMP, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 277 */ { InstructionMnemonic::FUCOMP, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 278 */ { InstructionMnemonic::FUCOMP, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 279 */ { InstructionMnemonic::FUCOMP, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 27A */ { InstructionMnemonic::FUCOMP, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 27B */ { InstructionMnemonic::FUCOMPP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 27C */ { InstructionMnemonic::FXAM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 27D */ { InstructionMnemonic::FXCH, { OPI_ST0, OPI_ST4, OPI_NONE, OPI_NONE }, 0 }, + /* 27E */ { InstructionMnemonic::FXCH, { OPI_ST0, OPI_ST5, OPI_NONE, OPI_NONE }, 0 }, + /* 27F */ { InstructionMnemonic::FXCH, { OPI_ST0, OPI_ST6, OPI_NONE, OPI_NONE }, 0 }, + /* 280 */ { InstructionMnemonic::FXCH, { OPI_ST0, OPI_ST3, OPI_NONE, OPI_NONE }, 0 }, + /* 281 */ { InstructionMnemonic::FXCH, { OPI_ST0, OPI_ST0, OPI_NONE, OPI_NONE }, 0 }, + /* 282 */ { InstructionMnemonic::FXCH, { OPI_ST0, OPI_ST1, OPI_NONE, OPI_NONE }, 0 }, + /* 283 */ { InstructionMnemonic::FXCH, { OPI_ST0, OPI_ST2, OPI_NONE, OPI_NONE }, 0 }, + /* 284 */ { InstructionMnemonic::FXCH, { OPI_ST0, OPI_ST7, OPI_NONE, OPI_NONE }, 0 }, + /* 285 */ { InstructionMnemonic::FXCH4, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 286 */ { InstructionMnemonic::FXCH4, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 287 */ { InstructionMnemonic::FXCH4, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 288 */ { InstructionMnemonic::FXCH4, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 289 */ { InstructionMnemonic::FXCH4, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 28A */ { InstructionMnemonic::FXCH4, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 28B */ { InstructionMnemonic::FXCH4, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 28C */ { InstructionMnemonic::FXCH4, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 28D */ { InstructionMnemonic::FXCH7, { OPI_ST2, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 28E */ { InstructionMnemonic::FXCH7, { OPI_ST3, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 28F */ { InstructionMnemonic::FXCH7, { OPI_ST0, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 290 */ { InstructionMnemonic::FXCH7, { OPI_ST1, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 291 */ { InstructionMnemonic::FXCH7, { OPI_ST6, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 292 */ { InstructionMnemonic::FXCH7, { OPI_ST7, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 293 */ { InstructionMnemonic::FXCH7, { OPI_ST4, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 294 */ { InstructionMnemonic::FXCH7, { OPI_ST5, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 295 */ { InstructionMnemonic::FXRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 296 */ { InstructionMnemonic::FXSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 297 */ { InstructionMnemonic::FXTRACT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 298 */ { InstructionMnemonic::FYL2X, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 299 */ { InstructionMnemonic::FYL2XP1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 29A */ { InstructionMnemonic::GETSEC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 29B */ { InstructionMnemonic::HADDPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 29C */ { InstructionMnemonic::HADDPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 29D */ { InstructionMnemonic::HLT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 29E */ { InstructionMnemonic::HSUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 29F */ { InstructionMnemonic::HSUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 2A0 */ { InstructionMnemonic::IDIV, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2A1 */ { InstructionMnemonic::IDIV, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2A2 */ { InstructionMnemonic::IMUL, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 2A3 */ { InstructionMnemonic::IMUL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 2A4 */ { InstructionMnemonic::IMUL, { OPI_Gv, OPI_Ev, OPI_Iz, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 2A5 */ { InstructionMnemonic::IMUL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 2A6 */ { InstructionMnemonic::IMUL, { OPI_Gv, OPI_Ev, OPI_sIb, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 2A7 */ { InstructionMnemonic::IN, { OPI_AL, OPI_DX, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, + /* 2A8 */ { InstructionMnemonic::IN, { OPI_eAX, OPI_DX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, + /* 2A9 */ { InstructionMnemonic::IN, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, + /* 2AA */ { InstructionMnemonic::IN, { OPI_eAX, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, + /* 2AB */ { InstructionMnemonic::INC, { OPI_R0z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 2AC */ { InstructionMnemonic::INC, { OPI_R1z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 2AD */ { InstructionMnemonic::INC, { OPI_R7z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 2AE */ { InstructionMnemonic::INC, { OPI_R6z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 2AF */ { InstructionMnemonic::INC, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 2B0 */ { InstructionMnemonic::INC, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 2B1 */ { InstructionMnemonic::INC, { OPI_R3z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 2B2 */ { InstructionMnemonic::INC, { OPI_R2z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 2B3 */ { InstructionMnemonic::INC, { OPI_R4z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 2B4 */ { InstructionMnemonic::INC, { OPI_R5z, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_READWRITE }, + /* 2B5 */ { InstructionMnemonic::INSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 2B6 */ { InstructionMnemonic::INSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 2B7 */ { InstructionMnemonic::INSERTPS, { OPI_V, OPI_Md, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 2B8 */ { InstructionMnemonic::INSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 2B9 */ { InstructionMnemonic::INT, { OPI_Ib, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2BA */ { InstructionMnemonic::INT1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2BB */ { InstructionMnemonic::INT3, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2BC */ { InstructionMnemonic::INTO, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, + /* 2BD */ { InstructionMnemonic::INVD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2BE */ { InstructionMnemonic::INVEPT, { OPI_Gd, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, + /* 2BF */ { InstructionMnemonic::INVEPT, { OPI_Gq, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, + /* 2C0 */ { InstructionMnemonic::INVLPG, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2C1 */ { InstructionMnemonic::INVLPGA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2C2 */ { InstructionMnemonic::INVVPID, { OPI_Gq, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, + /* 2C3 */ { InstructionMnemonic::INVVPID, { OPI_Gd, OPI_Mo, OPI_NONE, OPI_NONE }, 0 }, + /* 2C4 */ { InstructionMnemonic::IRETD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 2C5 */ { InstructionMnemonic::IRETQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 2C6 */ { InstructionMnemonic::IRETW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 2C7 */ { InstructionMnemonic::JA, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2C8 */ { InstructionMnemonic::JA, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2C9 */ { InstructionMnemonic::JB, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2CA */ { InstructionMnemonic::JB, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2CB */ { InstructionMnemonic::JBE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2CC */ { InstructionMnemonic::JBE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2CD */ { InstructionMnemonic::JCXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, + /* 2CE */ { InstructionMnemonic::JE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2CF */ { InstructionMnemonic::JE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2D0 */ { InstructionMnemonic::JECXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, + /* 2D1 */ { InstructionMnemonic::JG, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2D2 */ { InstructionMnemonic::JG, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2D3 */ { InstructionMnemonic::JGE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2D4 */ { InstructionMnemonic::JGE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2D5 */ { InstructionMnemonic::JL, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2D6 */ { InstructionMnemonic::JL, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2D7 */ { InstructionMnemonic::JLE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2D8 */ { InstructionMnemonic::JLE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2D9 */ { InstructionMnemonic::JMP, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 2DA */ { InstructionMnemonic::JMP, { OPI_Fv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2DB */ { InstructionMnemonic::JMP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, + /* 2DC */ { InstructionMnemonic::JMP, { OPI_Av, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 2DD */ { InstructionMnemonic::JMP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_DEFAULT_64 }, + /* 2DE */ { InstructionMnemonic::JNB, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2DF */ { InstructionMnemonic::JNB, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2E0 */ { InstructionMnemonic::JNE, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2E1 */ { InstructionMnemonic::JNE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2E2 */ { InstructionMnemonic::JNO, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2E3 */ { InstructionMnemonic::JNO, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2E4 */ { InstructionMnemonic::JNP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2E5 */ { InstructionMnemonic::JNP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2E6 */ { InstructionMnemonic::JNS, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2E7 */ { InstructionMnemonic::JNS, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2E8 */ { InstructionMnemonic::JO, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2E9 */ { InstructionMnemonic::JO, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2EA */ { InstructionMnemonic::JP, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2EB */ { InstructionMnemonic::JP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2EC */ { InstructionMnemonic::JRCXZ, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX }, + /* 2ED */ { InstructionMnemonic::JS, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2EE */ { InstructionMnemonic::JS, { OPI_Jz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 2EF */ { InstructionMnemonic::LAHF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2F0 */ { InstructionMnemonic::LAR, { OPI_Gv, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 2F1 */ { InstructionMnemonic::LDDQU, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 2F2 */ { InstructionMnemonic::LDMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2F3 */ { InstructionMnemonic::LDS, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, + /* 2F4 */ { InstructionMnemonic::LEA, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 2F5 */ { InstructionMnemonic::LEAVE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2F6 */ { InstructionMnemonic::LES, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_OPERAND1_WRITE }, + /* 2F7 */ { InstructionMnemonic::LFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 2F8 */ { InstructionMnemonic::LFS, { OPI_Gz, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 2F9 */ { InstructionMnemonic::LGDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2FA */ { InstructionMnemonic::LGS, { OPI_Gz, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 2FB */ { InstructionMnemonic::LIDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2FC */ { InstructionMnemonic::LLDT, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2FD */ { InstructionMnemonic::LMSW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2FE */ { InstructionMnemonic::LMSW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 2FF */ { InstructionMnemonic::LOCK, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 300 */ { InstructionMnemonic::LODSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 301 */ { InstructionMnemonic::LODSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 302 */ { InstructionMnemonic::LODSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 303 */ { InstructionMnemonic::LODSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 304 */ { InstructionMnemonic::LOOP, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 305 */ { InstructionMnemonic::LOOPE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 306 */ { InstructionMnemonic::LOOPNE, { OPI_Jb, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 307 */ { InstructionMnemonic::LSL, { OPI_Gv, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 308 */ { InstructionMnemonic::LSS, { OPI_Gv, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 309 */ { InstructionMnemonic::LTR, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 30A */ { InstructionMnemonic::MASKMOVDQU, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 30B */ { InstructionMnemonic::MASKMOVQ, { OPI_P, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 30C */ { InstructionMnemonic::MAXPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 30D */ { InstructionMnemonic::MAXPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 30E */ { InstructionMnemonic::MAXSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 30F */ { InstructionMnemonic::MAXSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 310 */ { InstructionMnemonic::MFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 311 */ { InstructionMnemonic::MINPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 312 */ { InstructionMnemonic::MINPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 313 */ { InstructionMnemonic::MINSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 314 */ { InstructionMnemonic::MINSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 315 */ { InstructionMnemonic::MONITOR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 316 */ { InstructionMnemonic::MONTMUL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 317 */ { InstructionMnemonic::MOV, { OPI_R0b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 318 */ { InstructionMnemonic::MOV, { OPI_R2b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 319 */ { InstructionMnemonic::MOV, { OPI_R3b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 31A */ { InstructionMnemonic::MOV, { OPI_R1b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 31B */ { InstructionMnemonic::MOV, { OPI_AL, OPI_Ob, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, + /* 31C */ { InstructionMnemonic::MOV, { OPI_S, OPI_MwRv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 31D */ { InstructionMnemonic::MOV, { OPI_MwRv, OPI_S, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 31E */ { InstructionMnemonic::MOV, { OPI_Ov, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, + /* 31F */ { InstructionMnemonic::MOV, { OPI_Ob, OPI_AL, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, + /* 320 */ { InstructionMnemonic::MOV, { OPI_rAX, OPI_Ov, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, + /* 321 */ { InstructionMnemonic::MOV, { OPI_R4b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 322 */ { InstructionMnemonic::MOV, { OPI_R7v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 323 */ { InstructionMnemonic::MOV, { OPI_R6v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 324 */ { InstructionMnemonic::MOV, { OPI_R5v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 325 */ { InstructionMnemonic::MOV, { OPI_R, OPI_C, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 326 */ { InstructionMnemonic::MOV, { OPI_D, OPI_R, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 327 */ { InstructionMnemonic::MOV, { OPI_C, OPI_R, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 328 */ { InstructionMnemonic::MOV, { OPI_R, OPI_D, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 329 */ { InstructionMnemonic::MOV, { OPI_R4v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 32A */ { InstructionMnemonic::MOV, { OPI_R7b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 32B */ { InstructionMnemonic::MOV, { OPI_R6b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 32C */ { InstructionMnemonic::MOV, { OPI_R5b, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 32D */ { InstructionMnemonic::MOV, { OPI_R0v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 32E */ { InstructionMnemonic::MOV, { OPI_R3v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 32F */ { InstructionMnemonic::MOV, { OPI_R2v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 330 */ { InstructionMnemonic::MOV, { OPI_R1v, OPI_Iv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 331 */ { InstructionMnemonic::MOV, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 332 */ { InstructionMnemonic::MOV, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 333 */ { InstructionMnemonic::MOV, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 334 */ { InstructionMnemonic::MOV, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 335 */ { InstructionMnemonic::MOV, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 336 */ { InstructionMnemonic::MOV, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 337 */ { InstructionMnemonic::MOVAPD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 338 */ { InstructionMnemonic::MOVAPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 339 */ { InstructionMnemonic::MOVAPS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 33A */ { InstructionMnemonic::MOVAPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 33B */ { InstructionMnemonic::MOVBE, { OPI_Gv, OPI_Mv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 33C */ { InstructionMnemonic::MOVBE, { OPI_Mv, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 33D */ { InstructionMnemonic::MOVD, { OPI_P, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 33E */ { InstructionMnemonic::MOVD, { OPI_Ey, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 33F */ { InstructionMnemonic::MOVD, { OPI_Ey, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 340 */ { InstructionMnemonic::MOVD, { OPI_Ey, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 341 */ { InstructionMnemonic::MOVD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 342 */ { InstructionMnemonic::MOVD, { OPI_V, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 343 */ { InstructionMnemonic::MOVD, { OPI_P, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 344 */ { InstructionMnemonic::MOVD, { OPI_Ey, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 345 */ { InstructionMnemonic::MOVDDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 346 */ { InstructionMnemonic::MOVDDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 347 */ { InstructionMnemonic::MOVDQ2Q, { OPI_P, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 348 */ { InstructionMnemonic::MOVDQA, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 349 */ { InstructionMnemonic::MOVDQA, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 34A */ { InstructionMnemonic::MOVDQU, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 34B */ { InstructionMnemonic::MOVDQU, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 34C */ { InstructionMnemonic::MOVHLPS, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 34D */ { InstructionMnemonic::MOVHPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 34E */ { InstructionMnemonic::MOVHPD, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 34F */ { InstructionMnemonic::MOVHPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 350 */ { InstructionMnemonic::MOVHPS, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 351 */ { InstructionMnemonic::MOVLHPS, { OPI_V, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 352 */ { InstructionMnemonic::MOVLPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 353 */ { InstructionMnemonic::MOVLPD, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 354 */ { InstructionMnemonic::MOVLPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 355 */ { InstructionMnemonic::MOVLPS, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 356 */ { InstructionMnemonic::MOVMSKPD, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 357 */ { InstructionMnemonic::MOVMSKPS, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 358 */ { InstructionMnemonic::MOVNTDQ, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 359 */ { InstructionMnemonic::MOVNTDQA, { OPI_V, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 35A */ { InstructionMnemonic::MOVNTI, { OPI_M, OPI_Gy, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 35B */ { InstructionMnemonic::MOVNTPD, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 35C */ { InstructionMnemonic::MOVNTPS, { OPI_M, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 35D */ { InstructionMnemonic::MOVNTQ, { OPI_M, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 35E */ { InstructionMnemonic::MOVQ, { OPI_P, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 35F */ { InstructionMnemonic::MOVQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 360 */ { InstructionMnemonic::MOVQ, { OPI_Eq, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 361 */ { InstructionMnemonic::MOVQ, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 362 */ { InstructionMnemonic::MOVQ, { OPI_Q, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 363 */ { InstructionMnemonic::MOVQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 364 */ { InstructionMnemonic::MOVQ, { OPI_V, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 365 */ { InstructionMnemonic::MOVQ, { OPI_Eq, OPI_P, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 366 */ { InstructionMnemonic::MOVQ2DQ, { OPI_V, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_OPERAND1_WRITE }, + /* 367 */ { InstructionMnemonic::MOVSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_OPERAND1_WRITE }, + /* 368 */ { InstructionMnemonic::MOVSD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 369 */ { InstructionMnemonic::MOVSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, + /* 36A */ { InstructionMnemonic::MOVSD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 36B */ { InstructionMnemonic::MOVSHDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 36C */ { InstructionMnemonic::MOVSHDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 36D */ { InstructionMnemonic::MOVSLDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 36E */ { InstructionMnemonic::MOVSLDUP, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 36F */ { InstructionMnemonic::MOVSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, + /* 370 */ { InstructionMnemonic::MOVSS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 371 */ { InstructionMnemonic::MOVSS, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 372 */ { InstructionMnemonic::MOVSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, + /* 373 */ { InstructionMnemonic::MOVSX, { OPI_Gv, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 374 */ { InstructionMnemonic::MOVSX, { OPI_Gy, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 375 */ { InstructionMnemonic::MOVSXD, { OPI_Gq, OPI_Ed, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 376 */ { InstructionMnemonic::MOVUPD, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 377 */ { InstructionMnemonic::MOVUPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 378 */ { InstructionMnemonic::MOVUPS, { OPI_W, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 379 */ { InstructionMnemonic::MOVUPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 37A */ { InstructionMnemonic::MOVZX, { OPI_Gy, OPI_Ew, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 37B */ { InstructionMnemonic::MOVZX, { OPI_Gv, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 37C */ { InstructionMnemonic::MPSADBW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 37D */ { InstructionMnemonic::MUL, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 37E */ { InstructionMnemonic::MUL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 37F */ { InstructionMnemonic::MULPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 380 */ { InstructionMnemonic::MULPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 381 */ { InstructionMnemonic::MULSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 382 */ { InstructionMnemonic::MULSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 383 */ { InstructionMnemonic::MWAIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 384 */ { InstructionMnemonic::NEG, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 385 */ { InstructionMnemonic::NEG, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 386 */ { InstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 387 */ { InstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 388 */ { InstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 389 */ { InstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 38A */ { InstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 38B */ { InstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 38C */ { InstructionMnemonic::NOP, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 38D */ { InstructionMnemonic::NOT, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 38E */ { InstructionMnemonic::NOT, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 38F */ { InstructionMnemonic::OR, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, + /* 390 */ { InstructionMnemonic::OR, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 391 */ { InstructionMnemonic::OR, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 392 */ { InstructionMnemonic::OR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 393 */ { InstructionMnemonic::OR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 394 */ { InstructionMnemonic::OR, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 395 */ { InstructionMnemonic::OR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 396 */ { InstructionMnemonic::OR, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 397 */ { InstructionMnemonic::OR, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 398 */ { InstructionMnemonic::OR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 399 */ { InstructionMnemonic::ORPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 39A */ { InstructionMnemonic::ORPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 39B */ { InstructionMnemonic::OUT, { OPI_DX, OPI_AL, OPI_NONE, OPI_NONE }, 0 }, + /* 39C */ { InstructionMnemonic::OUT, { OPI_DX, OPI_eAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 39D */ { InstructionMnemonic::OUT, { OPI_Ib, OPI_AL, OPI_NONE, OPI_NONE }, 0 }, + /* 39E */ { InstructionMnemonic::OUT, { OPI_Ib, OPI_eAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 39F */ { InstructionMnemonic::OUTSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 3A0 */ { InstructionMnemonic::OUTSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 3A1 */ { InstructionMnemonic::OUTSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 3A2 */ { InstructionMnemonic::PABSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3A3 */ { InstructionMnemonic::PABSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3A4 */ { InstructionMnemonic::PABSD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3A5 */ { InstructionMnemonic::PABSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3A6 */ { InstructionMnemonic::PABSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3A7 */ { InstructionMnemonic::PABSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3A8 */ { InstructionMnemonic::PACKSSDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3A9 */ { InstructionMnemonic::PACKSSDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3AA */ { InstructionMnemonic::PACKSSWB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3AB */ { InstructionMnemonic::PACKSSWB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3AC */ { InstructionMnemonic::PACKUSDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3AD */ { InstructionMnemonic::PACKUSWB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3AE */ { InstructionMnemonic::PACKUSWB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3AF */ { InstructionMnemonic::PADDB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B0 */ { InstructionMnemonic::PADDB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B1 */ { InstructionMnemonic::PADDD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B2 */ { InstructionMnemonic::PADDD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B3 */ { InstructionMnemonic::PADDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B4 */ { InstructionMnemonic::PADDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B5 */ { InstructionMnemonic::PADDSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B6 */ { InstructionMnemonic::PADDSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B7 */ { InstructionMnemonic::PADDSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B8 */ { InstructionMnemonic::PADDSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3B9 */ { InstructionMnemonic::PADDUSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3BA */ { InstructionMnemonic::PADDUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3BB */ { InstructionMnemonic::PADDUSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3BC */ { InstructionMnemonic::PADDUSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3BD */ { InstructionMnemonic::PADDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3BE */ { InstructionMnemonic::PADDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3BF */ { InstructionMnemonic::PALIGNR, { OPI_P, OPI_Q, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C0 */ { InstructionMnemonic::PALIGNR, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C1 */ { InstructionMnemonic::PAND, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C2 */ { InstructionMnemonic::PAND, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C3 */ { InstructionMnemonic::PANDN, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C4 */ { InstructionMnemonic::PANDN, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C5 */ { InstructionMnemonic::PAVGB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C6 */ { InstructionMnemonic::PAVGB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C7 */ { InstructionMnemonic::PAVGUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C8 */ { InstructionMnemonic::PAVGW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3C9 */ { InstructionMnemonic::PAVGW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3CA */ { InstructionMnemonic::PBLENDVB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3CB */ { InstructionMnemonic::PBLENDW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3CC */ { InstructionMnemonic::PCLMULQDQ, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3CD */ { InstructionMnemonic::PCMPEQB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3CE */ { InstructionMnemonic::PCMPEQB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3CF */ { InstructionMnemonic::PCMPEQD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3D0 */ { InstructionMnemonic::PCMPEQD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3D1 */ { InstructionMnemonic::PCMPEQQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 3D2 */ { InstructionMnemonic::PCMPEQW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3D3 */ { InstructionMnemonic::PCMPEQW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3D4 */ { InstructionMnemonic::PCMPESTRI, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 3D5 */ { InstructionMnemonic::PCMPESTRM, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 3D6 */ { InstructionMnemonic::PCMPGTB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3D7 */ { InstructionMnemonic::PCMPGTB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3D8 */ { InstructionMnemonic::PCMPGTD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3D9 */ { InstructionMnemonic::PCMPGTD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3DA */ { InstructionMnemonic::PCMPGTQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 3DB */ { InstructionMnemonic::PCMPGTW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3DC */ { InstructionMnemonic::PCMPGTW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3DD */ { InstructionMnemonic::PCMPISTRI, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 3DE */ { InstructionMnemonic::PCMPISTRM, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 3DF */ { InstructionMnemonic::PEXTRB, { OPI_MbRv, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 3E0 */ { InstructionMnemonic::PEXTRD, { OPI_Ed, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3E1 */ { InstructionMnemonic::PEXTRD, { OPI_Ed, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3E2 */ { InstructionMnemonic::PEXTRQ, { OPI_Eq, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 3E3 */ { InstructionMnemonic::PEXTRW, { OPI_MwRd, OPI_V, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3E4 */ { InstructionMnemonic::PEXTRW, { OPI_Gd, OPI_N, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3E5 */ { InstructionMnemonic::PEXTRW, { OPI_Gd, OPI_U, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3E6 */ { InstructionMnemonic::PF2ID, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3E7 */ { InstructionMnemonic::PF2IW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3E8 */ { InstructionMnemonic::PFACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3E9 */ { InstructionMnemonic::PFADD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3EA */ { InstructionMnemonic::PFCMPEQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3EB */ { InstructionMnemonic::PFCMPGE, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3EC */ { InstructionMnemonic::PFCMPGT, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3ED */ { InstructionMnemonic::PFMAX, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3EE */ { InstructionMnemonic::PFMIN, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3EF */ { InstructionMnemonic::PFMUL, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3F0 */ { InstructionMnemonic::PFNACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3F1 */ { InstructionMnemonic::PFPNACC, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3F2 */ { InstructionMnemonic::PFRCP, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3F3 */ { InstructionMnemonic::PFRCPIT1, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3F4 */ { InstructionMnemonic::PFRCPIT2, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3F5 */ { InstructionMnemonic::PFRSQIT1, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3F6 */ { InstructionMnemonic::PFRSQRT, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 3F7 */ { InstructionMnemonic::PFSUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3F8 */ { InstructionMnemonic::PFSUBR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3F9 */ { InstructionMnemonic::PHADDD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3FA */ { InstructionMnemonic::PHADDD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3FB */ { InstructionMnemonic::PHADDSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3FC */ { InstructionMnemonic::PHADDSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3FD */ { InstructionMnemonic::PHADDW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3FE */ { InstructionMnemonic::PHADDW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 3FF */ { InstructionMnemonic::PHMINPOSUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 400 */ { InstructionMnemonic::PHSUBD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 401 */ { InstructionMnemonic::PHSUBD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 402 */ { InstructionMnemonic::PHSUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 403 */ { InstructionMnemonic::PHSUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 404 */ { InstructionMnemonic::PHSUBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 405 */ { InstructionMnemonic::PHSUBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 406 */ { InstructionMnemonic::PI2FD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 407 */ { InstructionMnemonic::PI2FW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 408 */ { InstructionMnemonic::PINSRB, { OPI_V, OPI_MbRd, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 409 */ { InstructionMnemonic::PINSRD, { OPI_V, OPI_Ed, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 40A */ { InstructionMnemonic::PINSRD, { OPI_V, OPI_Ed, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 40B */ { InstructionMnemonic::PINSRQ, { OPI_V, OPI_Eq, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 40C */ { InstructionMnemonic::PINSRW, { OPI_V, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 40D */ { InstructionMnemonic::PINSRW, { OPI_P, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 40E */ { InstructionMnemonic::PMADDUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 40F */ { InstructionMnemonic::PMADDUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 410 */ { InstructionMnemonic::PMADDWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 411 */ { InstructionMnemonic::PMADDWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 412 */ { InstructionMnemonic::PMAXSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 413 */ { InstructionMnemonic::PMAXSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 414 */ { InstructionMnemonic::PMAXSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 415 */ { InstructionMnemonic::PMAXSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 416 */ { InstructionMnemonic::PMAXUB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 417 */ { InstructionMnemonic::PMAXUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 418 */ { InstructionMnemonic::PMAXUD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 419 */ { InstructionMnemonic::PMAXUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 41A */ { InstructionMnemonic::PMINSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 41B */ { InstructionMnemonic::PMINSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 41C */ { InstructionMnemonic::PMINSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 41D */ { InstructionMnemonic::PMINSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 41E */ { InstructionMnemonic::PMINUB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 41F */ { InstructionMnemonic::PMINUB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 420 */ { InstructionMnemonic::PMINUD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 421 */ { InstructionMnemonic::PMINUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 422 */ { InstructionMnemonic::PMOVMSKB, { OPI_Gd, OPI_N, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 423 */ { InstructionMnemonic::PMOVMSKB, { OPI_Gd, OPI_U, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 424 */ { InstructionMnemonic::PMOVSXBD, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 425 */ { InstructionMnemonic::PMOVSXBQ, { OPI_V, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 426 */ { InstructionMnemonic::PMOVSXBW, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 427 */ { InstructionMnemonic::PMOVSXDQ, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 428 */ { InstructionMnemonic::PMOVSXWD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 429 */ { InstructionMnemonic::PMOVSXWQ, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 42A */ { InstructionMnemonic::PMOVZXBD, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 42B */ { InstructionMnemonic::PMOVZXBQ, { OPI_V, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 42C */ { InstructionMnemonic::PMOVZXBW, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 42D */ { InstructionMnemonic::PMOVZXDQ, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 42E */ { InstructionMnemonic::PMOVZXWD, { OPI_V, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 42F */ { InstructionMnemonic::PMOVZXWQ, { OPI_V, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 430 */ { InstructionMnemonic::PMULDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 431 */ { InstructionMnemonic::PMULHRSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 432 */ { InstructionMnemonic::PMULHRSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 433 */ { InstructionMnemonic::PMULHRW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 434 */ { InstructionMnemonic::PMULHUW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 435 */ { InstructionMnemonic::PMULHUW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 436 */ { InstructionMnemonic::PMULHW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 437 */ { InstructionMnemonic::PMULHW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 438 */ { InstructionMnemonic::PMULLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 439 */ { InstructionMnemonic::PMULLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 43A */ { InstructionMnemonic::PMULLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 43B */ { InstructionMnemonic::PMULUDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 43C */ { InstructionMnemonic::PMULUDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 43D */ { InstructionMnemonic::POP, { OPI_R5v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 43E */ { InstructionMnemonic::POP, { OPI_R4v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 43F */ { InstructionMnemonic::POP, { OPI_R6v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 440 */ { InstructionMnemonic::POP, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 441 */ { InstructionMnemonic::POP, { OPI_R7v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 442 */ { InstructionMnemonic::POP, { OPI_R3v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 443 */ { InstructionMnemonic::POP, { OPI_DS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, + /* 444 */ { InstructionMnemonic::POP, { OPI_GS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, + /* 445 */ { InstructionMnemonic::POP, { OPI_ES, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, + /* 446 */ { InstructionMnemonic::POP, { OPI_SS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_WRITE }, + /* 447 */ { InstructionMnemonic::POP, { OPI_R1v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 448 */ { InstructionMnemonic::POP, { OPI_R2v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 449 */ { InstructionMnemonic::POP, { OPI_R0v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 44A */ { InstructionMnemonic::POP, { OPI_FS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, + /* 44B */ { InstructionMnemonic::POPA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, + /* 44C */ { InstructionMnemonic::POPAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, + /* 44D */ { InstructionMnemonic::POPCNT, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 44E */ { InstructionMnemonic::POPFD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 44F */ { InstructionMnemonic::POPFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 450 */ { InstructionMnemonic::POPFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 451 */ { InstructionMnemonic::POPFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 452 */ { InstructionMnemonic::POR, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 453 */ { InstructionMnemonic::POR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 454 */ { InstructionMnemonic::PREFETCH, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 455 */ { InstructionMnemonic::PREFETCHNTA, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 456 */ { InstructionMnemonic::PREFETCHT0, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 457 */ { InstructionMnemonic::PREFETCHT1, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 458 */ { InstructionMnemonic::PREFETCHT2, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 459 */ { InstructionMnemonic::PSADBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 45A */ { InstructionMnemonic::PSADBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 45B */ { InstructionMnemonic::PSHUFB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 45C */ { InstructionMnemonic::PSHUFB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 45D */ { InstructionMnemonic::PSHUFD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 45E */ { InstructionMnemonic::PSHUFHW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 45F */ { InstructionMnemonic::PSHUFLW, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 460 */ { InstructionMnemonic::PSHUFW, { OPI_P, OPI_Q, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 461 */ { InstructionMnemonic::PSIGNB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 462 */ { InstructionMnemonic::PSIGNB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 463 */ { InstructionMnemonic::PSIGND, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 464 */ { InstructionMnemonic::PSIGND, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 465 */ { InstructionMnemonic::PSIGNW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 466 */ { InstructionMnemonic::PSIGNW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 467 */ { InstructionMnemonic::PSLLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 468 */ { InstructionMnemonic::PSLLD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 469 */ { InstructionMnemonic::PSLLD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 46A */ { InstructionMnemonic::PSLLD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 46B */ { InstructionMnemonic::PSLLDQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 46C */ { InstructionMnemonic::PSLLQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 46D */ { InstructionMnemonic::PSLLQ, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 46E */ { InstructionMnemonic::PSLLQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 46F */ { InstructionMnemonic::PSLLQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 470 */ { InstructionMnemonic::PSLLW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 471 */ { InstructionMnemonic::PSLLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 472 */ { InstructionMnemonic::PSLLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 473 */ { InstructionMnemonic::PSLLW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 474 */ { InstructionMnemonic::PSRAD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 475 */ { InstructionMnemonic::PSRAD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 476 */ { InstructionMnemonic::PSRAD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 477 */ { InstructionMnemonic::PSRAD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 478 */ { InstructionMnemonic::PSRAW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 479 */ { InstructionMnemonic::PSRAW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 47A */ { InstructionMnemonic::PSRAW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 47B */ { InstructionMnemonic::PSRAW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 47C */ { InstructionMnemonic::PSRLD, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 47D */ { InstructionMnemonic::PSRLD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 47E */ { InstructionMnemonic::PSRLD, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 47F */ { InstructionMnemonic::PSRLD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 480 */ { InstructionMnemonic::PSRLDQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 481 */ { InstructionMnemonic::PSRLQ, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 482 */ { InstructionMnemonic::PSRLQ, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 483 */ { InstructionMnemonic::PSRLQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 484 */ { InstructionMnemonic::PSRLQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 485 */ { InstructionMnemonic::PSRLW, { OPI_U, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 486 */ { InstructionMnemonic::PSRLW, { OPI_N, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 487 */ { InstructionMnemonic::PSRLW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 488 */ { InstructionMnemonic::PSRLW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 489 */ { InstructionMnemonic::PSUBB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 48A */ { InstructionMnemonic::PSUBB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 48B */ { InstructionMnemonic::PSUBD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 48C */ { InstructionMnemonic::PSUBD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 48D */ { InstructionMnemonic::PSUBQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 48E */ { InstructionMnemonic::PSUBQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 48F */ { InstructionMnemonic::PSUBSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 490 */ { InstructionMnemonic::PSUBSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 491 */ { InstructionMnemonic::PSUBSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 492 */ { InstructionMnemonic::PSUBSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 493 */ { InstructionMnemonic::PSUBUSB, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 494 */ { InstructionMnemonic::PSUBUSB, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 495 */ { InstructionMnemonic::PSUBUSW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 496 */ { InstructionMnemonic::PSUBUSW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 497 */ { InstructionMnemonic::PSUBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 498 */ { InstructionMnemonic::PSUBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 499 */ { InstructionMnemonic::PSWAPD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 49A */ { InstructionMnemonic::PTEST, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 49B */ { InstructionMnemonic::PUNPCKHBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 49C */ { InstructionMnemonic::PUNPCKHBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 49D */ { InstructionMnemonic::PUNPCKHDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 49E */ { InstructionMnemonic::PUNPCKHDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 49F */ { InstructionMnemonic::PUNPCKHQDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A0 */ { InstructionMnemonic::PUNPCKHWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A1 */ { InstructionMnemonic::PUNPCKHWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A2 */ { InstructionMnemonic::PUNPCKLBW, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A3 */ { InstructionMnemonic::PUNPCKLBW, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A4 */ { InstructionMnemonic::PUNPCKLDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A5 */ { InstructionMnemonic::PUNPCKLDQ, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A6 */ { InstructionMnemonic::PUNPCKLQDQ, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A7 */ { InstructionMnemonic::PUNPCKLWD, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A8 */ { InstructionMnemonic::PUNPCKLWD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4A9 */ { InstructionMnemonic::PUSH, { OPI_DS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, + /* 4AA */ { InstructionMnemonic::PUSH, { OPI_ES, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, + /* 4AB */ { InstructionMnemonic::PUSH, { OPI_sIb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_DEFAULT_64 }, + /* 4AC */ { InstructionMnemonic::PUSH, { OPI_SS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, + /* 4AD */ { InstructionMnemonic::PUSH, { OPI_CS, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 }, + /* 4AE */ { InstructionMnemonic::PUSH, { OPI_R3v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4AF */ { InstructionMnemonic::PUSH, { OPI_R4v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4B0 */ { InstructionMnemonic::PUSH, { OPI_R5v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4B1 */ { InstructionMnemonic::PUSH, { OPI_R6v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4B2 */ { InstructionMnemonic::PUSH, { OPI_R7v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4B3 */ { InstructionMnemonic::PUSH, { OPI_R2v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4B4 */ { InstructionMnemonic::PUSH, { OPI_R0v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4B5 */ { InstructionMnemonic::PUSH, { OPI_FS, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4B6 */ { InstructionMnemonic::PUSH, { OPI_GS, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4B7 */ { InstructionMnemonic::PUSH, { OPI_sIz, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, + /* 4B8 */ { InstructionMnemonic::PUSH, { OPI_Ev, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4B9 */ { InstructionMnemonic::PUSH, { OPI_R1v, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 4BA */ { InstructionMnemonic::PUSHA, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, + /* 4BB */ { InstructionMnemonic::PUSHAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_INVALID_64 }, + /* 4BC */ { InstructionMnemonic::PUSHFD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 4BD */ { InstructionMnemonic::PUSHFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, + /* 4BE */ { InstructionMnemonic::PUSHFQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, + /* 4BF */ { InstructionMnemonic::PUSHFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_DEFAULT_64 }, + /* 4C0 */ { InstructionMnemonic::PUSHFW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX }, + /* 4C1 */ { InstructionMnemonic::PXOR, { OPI_P, OPI_Q, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4C2 */ { InstructionMnemonic::PXOR, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4C3 */ { InstructionMnemonic::RCL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4C4 */ { InstructionMnemonic::RCL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4C5 */ { InstructionMnemonic::RCL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4C6 */ { InstructionMnemonic::RCL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4C7 */ { InstructionMnemonic::RCL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4C8 */ { InstructionMnemonic::RCL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4C9 */ { InstructionMnemonic::RCPPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4CA */ { InstructionMnemonic::RCPSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4CB */ { InstructionMnemonic::RCR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4CC */ { InstructionMnemonic::RCR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4CD */ { InstructionMnemonic::RCR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4CE */ { InstructionMnemonic::RCR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4CF */ { InstructionMnemonic::RCR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4D0 */ { InstructionMnemonic::RCR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4D1 */ { InstructionMnemonic::RDMSR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4D2 */ { InstructionMnemonic::RDPMC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4D3 */ { InstructionMnemonic::RDRAND, { OPI_R, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4D4 */ { InstructionMnemonic::RDTSC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4D5 */ { InstructionMnemonic::RDTSCP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4D6 */ { InstructionMnemonic::REP, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4D7 */ { InstructionMnemonic::REPNE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4D8 */ { InstructionMnemonic::RET, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4D9 */ { InstructionMnemonic::RET, { OPI_Iw, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4DA */ { InstructionMnemonic::RETF, { OPI_Iw, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4DB */ { InstructionMnemonic::RETF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4DC */ { InstructionMnemonic::ROL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4DD */ { InstructionMnemonic::ROL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4DE */ { InstructionMnemonic::ROL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4DF */ { InstructionMnemonic::ROL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E0 */ { InstructionMnemonic::ROL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E1 */ { InstructionMnemonic::ROL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E2 */ { InstructionMnemonic::ROR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E3 */ { InstructionMnemonic::ROR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E4 */ { InstructionMnemonic::ROR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E5 */ { InstructionMnemonic::ROR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E6 */ { InstructionMnemonic::ROR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E7 */ { InstructionMnemonic::ROR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4E8 */ { InstructionMnemonic::ROUNDPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4E9 */ { InstructionMnemonic::ROUNDPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4EA */ { InstructionMnemonic::ROUNDSD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4EB */ { InstructionMnemonic::ROUNDSS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4EC */ { InstructionMnemonic::RSM, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4ED */ { InstructionMnemonic::RSQRTPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4EE */ { InstructionMnemonic::RSQRTSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4EF */ { InstructionMnemonic::SAHF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 4F0 */ { InstructionMnemonic::SALC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, + /* 4F1 */ { InstructionMnemonic::SAR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4F2 */ { InstructionMnemonic::SAR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4F3 */ { InstructionMnemonic::SAR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4F4 */ { InstructionMnemonic::SAR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4F5 */ { InstructionMnemonic::SAR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4F6 */ { InstructionMnemonic::SAR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 4F7 */ { InstructionMnemonic::SBB, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4F8 */ { InstructionMnemonic::SBB, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4F9 */ { InstructionMnemonic::SBB, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_WRITE }, + /* 4FA */ { InstructionMnemonic::SBB, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_WRITE }, + /* 4FB */ { InstructionMnemonic::SBB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4FC */ { InstructionMnemonic::SBB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_WRITE }, + /* 4FD */ { InstructionMnemonic::SBB, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4FE */ { InstructionMnemonic::SBB, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 4FF */ { InstructionMnemonic::SBB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 500 */ { InstructionMnemonic::SBB, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 501 */ { InstructionMnemonic::SCASB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 502 */ { InstructionMnemonic::SCASD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 503 */ { InstructionMnemonic::SCASQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 504 */ { InstructionMnemonic::SCASW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 505 */ { InstructionMnemonic::SETA, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 506 */ { InstructionMnemonic::SETAE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 507 */ { InstructionMnemonic::SETB, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 508 */ { InstructionMnemonic::SETBE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 509 */ { InstructionMnemonic::SETE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 50A */ { InstructionMnemonic::SETG, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 50B */ { InstructionMnemonic::SETGE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 50C */ { InstructionMnemonic::SETL, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 50D */ { InstructionMnemonic::SETLE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 50E */ { InstructionMnemonic::SETNE, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 50F */ { InstructionMnemonic::SETNO, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 510 */ { InstructionMnemonic::SETNP, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 511 */ { InstructionMnemonic::SETNS, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 512 */ { InstructionMnemonic::SETO, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 513 */ { InstructionMnemonic::SETP, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 514 */ { InstructionMnemonic::SETS, { OPI_Eb, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 515 */ { InstructionMnemonic::SFENCE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 516 */ { InstructionMnemonic::SGDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 517 */ { InstructionMnemonic::SHL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 518 */ { InstructionMnemonic::SHL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 519 */ { InstructionMnemonic::SHL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 51A */ { InstructionMnemonic::SHL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 51B */ { InstructionMnemonic::SHL, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 51C */ { InstructionMnemonic::SHL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 51D */ { InstructionMnemonic::SHL, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 51E */ { InstructionMnemonic::SHL, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 51F */ { InstructionMnemonic::SHL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 520 */ { InstructionMnemonic::SHL, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 521 */ { InstructionMnemonic::SHL, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 522 */ { InstructionMnemonic::SHL, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 523 */ { InstructionMnemonic::SHLD, { OPI_Ev, OPI_Gv, OPI_CL, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 524 */ { InstructionMnemonic::SHLD, { OPI_Ev, OPI_Gv, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 525 */ { InstructionMnemonic::SHR, { OPI_Ev, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 526 */ { InstructionMnemonic::SHR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 527 */ { InstructionMnemonic::SHR, { OPI_Eb, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 528 */ { InstructionMnemonic::SHR, { OPI_Ev, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 529 */ { InstructionMnemonic::SHR, { OPI_Eb, OPI_CL, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 52A */ { InstructionMnemonic::SHR, { OPI_Ev, OPI_I1, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 52B */ { InstructionMnemonic::SHRD, { OPI_Ev, OPI_Gv, OPI_CL, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 52C */ { InstructionMnemonic::SHRD, { OPI_Ev, OPI_Gv, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 52D */ { InstructionMnemonic::SHUFPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 52E */ { InstructionMnemonic::SHUFPS, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 52F */ { InstructionMnemonic::SIDT, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 530 */ { InstructionMnemonic::SKINIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 531 */ { InstructionMnemonic::SLDT, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 532 */ { InstructionMnemonic::SMSW, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 533 */ { InstructionMnemonic::SMSW, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 534 */ { InstructionMnemonic::SQRTPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 535 */ { InstructionMnemonic::SQRTPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 536 */ { InstructionMnemonic::SQRTSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 537 */ { InstructionMnemonic::SQRTSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 538 */ { InstructionMnemonic::STC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 539 */ { InstructionMnemonic::STD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 53A */ { InstructionMnemonic::STGI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 53B */ { InstructionMnemonic::STI, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 53C */ { InstructionMnemonic::STMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 53D */ { InstructionMnemonic::STOSB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 53E */ { InstructionMnemonic::STOSD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 53F */ { InstructionMnemonic::STOSQ, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 540 */ { InstructionMnemonic::STOSW, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REP_PREFIX |IDF_ACCEPTS_SEGMENT_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 541 */ { InstructionMnemonic::STR, { OPI_MwRv, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 542 */ { InstructionMnemonic::SUB, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 543 */ { InstructionMnemonic::SUB, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 544 */ { InstructionMnemonic::SUB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 545 */ { InstructionMnemonic::SUB, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 546 */ { InstructionMnemonic::SUB, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, + /* 547 */ { InstructionMnemonic::SUB, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, + /* 548 */ { InstructionMnemonic::SUB, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 549 */ { InstructionMnemonic::SUB, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 54A */ { InstructionMnemonic::SUB, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 54B */ { InstructionMnemonic::SUB, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 54C */ { InstructionMnemonic::SUBPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 54D */ { InstructionMnemonic::SUBPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 54E */ { InstructionMnemonic::SUBSD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 54F */ { InstructionMnemonic::SUBSS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 550 */ { InstructionMnemonic::SWAPGS, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 551 */ { InstructionMnemonic::SYSCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 552 */ { InstructionMnemonic::SYSENTER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 553 */ { InstructionMnemonic::SYSENTER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 554 */ { InstructionMnemonic::SYSEXIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 555 */ { InstructionMnemonic::SYSEXIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 556 */ { InstructionMnemonic::SYSRET, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 557 */ { InstructionMnemonic::TEST, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 558 */ { InstructionMnemonic::TEST, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 559 */ { InstructionMnemonic::TEST, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 55A */ { InstructionMnemonic::TEST, { OPI_Ev, OPI_Iz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 55B */ { InstructionMnemonic::TEST, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW }, + /* 55C */ { InstructionMnemonic::TEST, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 55D */ { InstructionMnemonic::TEST, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 55E */ { InstructionMnemonic::TEST, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, 0 }, + /* 55F */ { InstructionMnemonic::UCOMISD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 560 */ { InstructionMnemonic::UCOMISS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 561 */ { InstructionMnemonic::UD2, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 562 */ { InstructionMnemonic::UNPCKHPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 563 */ { InstructionMnemonic::UNPCKHPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 564 */ { InstructionMnemonic::UNPCKLPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 565 */ { InstructionMnemonic::UNPCKLPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 566 */ { InstructionMnemonic::VADDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 567 */ { InstructionMnemonic::VADDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 568 */ { InstructionMnemonic::VADDSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 569 */ { InstructionMnemonic::VADDSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 56A */ { InstructionMnemonic::VADDSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 56B */ { InstructionMnemonic::VADDSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 56C */ { InstructionMnemonic::VAESDEC, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 56D */ { InstructionMnemonic::VAESDECLAST, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 56E */ { InstructionMnemonic::VAESENC, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 56F */ { InstructionMnemonic::VAESENCLAST, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 570 */ { InstructionMnemonic::VAESIMC, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 571 */ { InstructionMnemonic::VAESKEYGENASSIST, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 572 */ { InstructionMnemonic::VANDNPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 573 */ { InstructionMnemonic::VANDNPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 574 */ { InstructionMnemonic::VANDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 575 */ { InstructionMnemonic::VANDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 576 */ { InstructionMnemonic::VBLENDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 577 */ { InstructionMnemonic::VBLENDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 578 */ { InstructionMnemonic::VBLENDVPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Lx }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 579 */ { InstructionMnemonic::VBLENDVPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Lx }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 57A */ { InstructionMnemonic::VBROADCASTSD, { OPI_Vqq, OPI_Mq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 57B */ { InstructionMnemonic::VBROADCASTSS, { OPI_V, OPI_Md, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 57C */ { InstructionMnemonic::VCMPPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 57D */ { InstructionMnemonic::VCMPPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 57E */ { InstructionMnemonic::VCMPSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 57F */ { InstructionMnemonic::VCMPSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 580 */ { InstructionMnemonic::VCOMISD, { OPI_Vsd, OPI_Wsd, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 581 */ { InstructionMnemonic::VCOMISS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 582 */ { InstructionMnemonic::VCVTDQ2PD, { OPI_Vx, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 583 */ { InstructionMnemonic::VCVTDQ2PS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 584 */ { InstructionMnemonic::VCVTPD2DQ, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 585 */ { InstructionMnemonic::VCVTPD2PS, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 586 */ { InstructionMnemonic::VCVTPS2DQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 587 */ { InstructionMnemonic::VCVTPS2PD, { OPI_Vx, OPI_Wdq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 588 */ { InstructionMnemonic::VCVTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 589 */ { InstructionMnemonic::VCVTSD2SS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 58A */ { InstructionMnemonic::VCVTSI2SD, { OPI_Vx, OPI_Hx, OPI_Ey, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 58B */ { InstructionMnemonic::VCVTSI2SS, { OPI_Vx, OPI_Hx, OPI_Ey, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 58C */ { InstructionMnemonic::VCVTSS2SD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 58D */ { InstructionMnemonic::VCVTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 58E */ { InstructionMnemonic::VCVTTPD2DQ, { OPI_Vdq, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 58F */ { InstructionMnemonic::VCVTTPS2DQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 590 */ { InstructionMnemonic::VCVTTSD2SI, { OPI_Gy, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 591 */ { InstructionMnemonic::VCVTTSS2SI, { OPI_Gy, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 592 */ { InstructionMnemonic::VDIVPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 593 */ { InstructionMnemonic::VDIVPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 594 */ { InstructionMnemonic::VDIVSD, { OPI_Vx, OPI_Hx, OPI_MqU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 595 */ { InstructionMnemonic::VDIVSS, { OPI_Vx, OPI_Hx, OPI_MdU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 596 */ { InstructionMnemonic::VDPPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 597 */ { InstructionMnemonic::VDPPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 598 */ { InstructionMnemonic::VERR, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 599 */ { InstructionMnemonic::VERW, { OPI_Ew, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 59A */ { InstructionMnemonic::VEXTRACTF128, { OPI_Wdq, OPI_Vqq, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 59B */ { InstructionMnemonic::VEXTRACTPS, { OPI_MdRy, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 59C */ { InstructionMnemonic::VHADDPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 59D */ { InstructionMnemonic::VHADDPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 59E */ { InstructionMnemonic::VHSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 59F */ { InstructionMnemonic::VHSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5A0 */ { InstructionMnemonic::VINSERTF128, { OPI_Vqq, OPI_Hqq, OPI_Wdq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5A1 */ { InstructionMnemonic::VINSERTPS, { OPI_Vx, OPI_Hx, OPI_Md, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5A2 */ { InstructionMnemonic::VLDDQU, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5A3 */ { InstructionMnemonic::VMASKMOVDQU, { OPI_Vx, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 5A4 */ { InstructionMnemonic::VMASKMOVPD, { OPI_M, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5A5 */ { InstructionMnemonic::VMASKMOVPD, { OPI_V, OPI_H, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5A6 */ { InstructionMnemonic::VMASKMOVPS, { OPI_V, OPI_H, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5A7 */ { InstructionMnemonic::VMASKMOVPS, { OPI_M, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5A8 */ { InstructionMnemonic::VMAXPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5A9 */ { InstructionMnemonic::VMAXPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5AA */ { InstructionMnemonic::VMAXSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 5AB */ { InstructionMnemonic::VMAXSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 5AC */ { InstructionMnemonic::VMCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 5AD */ { InstructionMnemonic::VMCLEAR, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 5AE */ { InstructionMnemonic::VMINPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5AF */ { InstructionMnemonic::VMINPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 5B0 */ { InstructionMnemonic::VMINSD, { OPI_Vx, OPI_Hx, OPI_MqU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 5B1 */ { InstructionMnemonic::VMINSS, { OPI_Vx, OPI_Hx, OPI_MdU, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 5B2 */ { InstructionMnemonic::VMLAUNCH, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 5B3 */ { InstructionMnemonic::VMLOAD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 5B4 */ { InstructionMnemonic::VMMCALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 5B5 */ { InstructionMnemonic::VMOVAPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5B6 */ { InstructionMnemonic::VMOVAPD, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5B7 */ { InstructionMnemonic::VMOVAPS, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5B8 */ { InstructionMnemonic::VMOVAPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5B9 */ { InstructionMnemonic::VMOVD, { OPI_Ey, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5BA */ { InstructionMnemonic::VMOVD, { OPI_Vx, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5BB */ { InstructionMnemonic::VMOVD, { OPI_Vx, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5BC */ { InstructionMnemonic::VMOVD, { OPI_Ey, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5BD */ { InstructionMnemonic::VMOVDDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5BE */ { InstructionMnemonic::VMOVDDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5BF */ { InstructionMnemonic::VMOVDQA, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5C0 */ { InstructionMnemonic::VMOVDQA, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5C1 */ { InstructionMnemonic::VMOVDQU, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5C2 */ { InstructionMnemonic::VMOVDQU, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5C3 */ { InstructionMnemonic::VMOVHLPS, { OPI_Vx, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5C4 */ { InstructionMnemonic::VMOVHPD, { OPI_Vx, OPI_Hx, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5C5 */ { InstructionMnemonic::VMOVHPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5C6 */ { InstructionMnemonic::VMOVHPS, { OPI_Vx, OPI_Hx, OPI_M, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5C7 */ { InstructionMnemonic::VMOVHPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5C8 */ { InstructionMnemonic::VMOVLHPS, { OPI_Vx, OPI_Hx, OPI_Ux, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5C9 */ { InstructionMnemonic::VMOVLPD, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5CA */ { InstructionMnemonic::VMOVLPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5CB */ { InstructionMnemonic::VMOVLPS, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5CC */ { InstructionMnemonic::VMOVLPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5CD */ { InstructionMnemonic::VMOVMSKPD, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5CE */ { InstructionMnemonic::VMOVMSKPS, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5CF */ { InstructionMnemonic::VMOVNTDQ, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5D0 */ { InstructionMnemonic::VMOVNTDQA, { OPI_Vx, OPI_M, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5D1 */ { InstructionMnemonic::VMOVNTPD, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5D2 */ { InstructionMnemonic::VMOVNTPS, { OPI_M, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5D3 */ { InstructionMnemonic::VMOVQ, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5D4 */ { InstructionMnemonic::VMOVQ, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5D5 */ { InstructionMnemonic::VMOVQ, { OPI_Vx, OPI_Eq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5D6 */ { InstructionMnemonic::VMOVQ, { OPI_Eq, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5D7 */ { InstructionMnemonic::VMOVSD, { OPI_U, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5D8 */ { InstructionMnemonic::VMOVSD, { OPI_Mq, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5D9 */ { InstructionMnemonic::VMOVSD, { OPI_V, OPI_H, OPI_U, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5DA */ { InstructionMnemonic::VMOVSD, { OPI_V, OPI_Mq, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5DB */ { InstructionMnemonic::VMOVSHDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5DC */ { InstructionMnemonic::VMOVSHDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5DD */ { InstructionMnemonic::VMOVSLDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5DE */ { InstructionMnemonic::VMOVSLDUP, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5DF */ { InstructionMnemonic::VMOVSS, { OPI_V, OPI_H, OPI_U, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5E0 */ { InstructionMnemonic::VMOVSS, { OPI_Md, OPI_V, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5E1 */ { InstructionMnemonic::VMOVSS, { OPI_U, OPI_H, OPI_V, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5E2 */ { InstructionMnemonic::VMOVSS, { OPI_V, OPI_Md, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 5E3 */ { InstructionMnemonic::VMOVUPD, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5E4 */ { InstructionMnemonic::VMOVUPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5E5 */ { InstructionMnemonic::VMOVUPS, { OPI_Wx, OPI_Vx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5E6 */ { InstructionMnemonic::VMOVUPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5E7 */ { InstructionMnemonic::VMPSADBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5E8 */ { InstructionMnemonic::VMPTRLD, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 5E9 */ { InstructionMnemonic::VMPTRST, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 5EA */ { InstructionMnemonic::VMREAD, { OPI_Ey, OPI_Gy, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 5EB */ { InstructionMnemonic::VMRESUME, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 5EC */ { InstructionMnemonic::VMRUN, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 5ED */ { InstructionMnemonic::VMSAVE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 5EE */ { InstructionMnemonic::VMULPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5EF */ { InstructionMnemonic::VMULPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5F0 */ { InstructionMnemonic::VMULSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 5F1 */ { InstructionMnemonic::VMULSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 5F2 */ { InstructionMnemonic::VMWRITE, { OPI_Gy, OPI_Ey, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 }, + /* 5F3 */ { InstructionMnemonic::VMXOFF, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 5F4 */ { InstructionMnemonic::VMXON, { OPI_Mq, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 5F5 */ { InstructionMnemonic::VORPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5F6 */ { InstructionMnemonic::VORPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, + /* 5F7 */ { InstructionMnemonic::VPABSB, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5F8 */ { InstructionMnemonic::VPABSD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5F9 */ { InstructionMnemonic::VPABSW, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 5FA */ { InstructionMnemonic::VPACKSSDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5FB */ { InstructionMnemonic::VPACKSSWB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5FC */ { InstructionMnemonic::VPACKUSDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5FD */ { InstructionMnemonic::VPACKUSWB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5FE */ { InstructionMnemonic::VPADDB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 5FF */ { InstructionMnemonic::VPADDD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 600 */ { InstructionMnemonic::VPADDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 601 */ { InstructionMnemonic::VPADDSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 602 */ { InstructionMnemonic::VPADDSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 603 */ { InstructionMnemonic::VPADDUSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 604 */ { InstructionMnemonic::VPADDUSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 605 */ { InstructionMnemonic::VPADDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 606 */ { InstructionMnemonic::VPALIGNR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 607 */ { InstructionMnemonic::VPAND, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 608 */ { InstructionMnemonic::VPANDN, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 609 */ { InstructionMnemonic::VPAVGB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 60A */ { InstructionMnemonic::VPAVGW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 60B */ { InstructionMnemonic::VPBLENDVB, { OPI_V, OPI_H, OPI_W, OPI_L }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 60C */ { InstructionMnemonic::VPBLENDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 60D */ { InstructionMnemonic::VPCLMULQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 60E */ { InstructionMnemonic::VPCMPEQB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 60F */ { InstructionMnemonic::VPCMPEQD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 610 */ { InstructionMnemonic::VPCMPEQQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 611 */ { InstructionMnemonic::VPCMPEQW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 612 */ { InstructionMnemonic::VPCMPESTRI, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 613 */ { InstructionMnemonic::VPCMPESTRM, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 614 */ { InstructionMnemonic::VPCMPGTB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 615 */ { InstructionMnemonic::VPCMPGTD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 616 */ { InstructionMnemonic::VPCMPGTQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 617 */ { InstructionMnemonic::VPCMPGTW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 618 */ { InstructionMnemonic::VPCMPISTRI, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 619 */ { InstructionMnemonic::VPCMPISTRM, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 61A */ { InstructionMnemonic::VPERM2F128, { OPI_Vqq, OPI_Hqq, OPI_Wqq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 61B */ { InstructionMnemonic::VPERMILPD, { OPI_V, OPI_W, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 61C */ { InstructionMnemonic::VPERMILPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 61D */ { InstructionMnemonic::VPERMILPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 61E */ { InstructionMnemonic::VPERMILPS, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 61F */ { InstructionMnemonic::VPEXTRB, { OPI_MbRv, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 620 */ { InstructionMnemonic::VPEXTRD, { OPI_Ed, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 621 */ { InstructionMnemonic::VPEXTRD, { OPI_Ed, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 622 */ { InstructionMnemonic::VPEXTRQ, { OPI_Eq, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 623 */ { InstructionMnemonic::VPEXTRW, { OPI_Gd, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 624 */ { InstructionMnemonic::VPEXTRW, { OPI_MwRd, OPI_Vx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 625 */ { InstructionMnemonic::VPHADDD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 626 */ { InstructionMnemonic::VPHADDSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 627 */ { InstructionMnemonic::VPHADDW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 628 */ { InstructionMnemonic::VPHMINPOSUW, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 629 */ { InstructionMnemonic::VPHSUBD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 62A */ { InstructionMnemonic::VPHSUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 62B */ { InstructionMnemonic::VPHSUBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 62C */ { InstructionMnemonic::VPINSRB, { OPI_V, OPI_H, OPI_MbRd, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 62D */ { InstructionMnemonic::VPINSRD, { OPI_V, OPI_H, OPI_Ed, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 62E */ { InstructionMnemonic::VPINSRD, { OPI_V, OPI_H, OPI_Ed, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 62F */ { InstructionMnemonic::VPINSRQ, { OPI_V, OPI_H, OPI_Eq, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 630 */ { InstructionMnemonic::VPINSRW, { OPI_Vx, OPI_MwRy, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_DEFAULT_64 | IDF_OPERAND1_WRITE }, + /* 631 */ { InstructionMnemonic::VPMADDUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 632 */ { InstructionMnemonic::VPMADDWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 633 */ { InstructionMnemonic::VPMAXSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 634 */ { InstructionMnemonic::VPMAXSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 635 */ { InstructionMnemonic::VPMAXSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 636 */ { InstructionMnemonic::VPMAXUB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 637 */ { InstructionMnemonic::VPMAXUD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 638 */ { InstructionMnemonic::VPMAXUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 639 */ { InstructionMnemonic::VPMINSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 63A */ { InstructionMnemonic::VPMINSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 63B */ { InstructionMnemonic::VPMINSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 63C */ { InstructionMnemonic::VPMINUB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 63D */ { InstructionMnemonic::VPMINUD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 63E */ { InstructionMnemonic::VPMINUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 63F */ { InstructionMnemonic::VPMOVMSKB, { OPI_Gd, OPI_Ux, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 640 */ { InstructionMnemonic::VPMOVSXBD, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 641 */ { InstructionMnemonic::VPMOVSXBQ, { OPI_Vx, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 642 */ { InstructionMnemonic::VPMOVSXBW, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 643 */ { InstructionMnemonic::VPMOVSXWD, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 644 */ { InstructionMnemonic::VPMOVSXWQ, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 645 */ { InstructionMnemonic::VPMOVZXBD, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 646 */ { InstructionMnemonic::VPMOVZXBQ, { OPI_Vx, OPI_MwU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 647 */ { InstructionMnemonic::VPMOVZXBW, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 648 */ { InstructionMnemonic::VPMOVZXDQ, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 649 */ { InstructionMnemonic::VPMOVZXWD, { OPI_Vx, OPI_MqU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 64A */ { InstructionMnemonic::VPMOVZXWQ, { OPI_Vx, OPI_MdU, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 64B */ { InstructionMnemonic::VPMULDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 64C */ { InstructionMnemonic::VPMULHRSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 64D */ { InstructionMnemonic::VPMULHUW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 64E */ { InstructionMnemonic::VPMULHW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 64F */ { InstructionMnemonic::VPMULLD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 650 */ { InstructionMnemonic::VPMULLW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 651 */ { InstructionMnemonic::VPOR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 652 */ { InstructionMnemonic::VPSADBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 653 */ { InstructionMnemonic::VPSHUFB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 654 */ { InstructionMnemonic::VPSHUFD, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 655 */ { InstructionMnemonic::VPSHUFHW, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 656 */ { InstructionMnemonic::VPSHUFLW, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 657 */ { InstructionMnemonic::VPSIGNB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 658 */ { InstructionMnemonic::VPSIGND, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 659 */ { InstructionMnemonic::VPSIGNW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 65A */ { InstructionMnemonic::VPSLLD, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 65B */ { InstructionMnemonic::VPSLLD, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 65C */ { InstructionMnemonic::VPSLLDQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 65D */ { InstructionMnemonic::VPSLLQ, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 65E */ { InstructionMnemonic::VPSLLQ, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 65F */ { InstructionMnemonic::VPSLLW, { OPI_V, OPI_H, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 660 */ { InstructionMnemonic::VPSLLW, { OPI_H, OPI_V, OPI_W, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 661 */ { InstructionMnemonic::VPSRAD, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 662 */ { InstructionMnemonic::VPSRAD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 663 */ { InstructionMnemonic::VPSRAW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 664 */ { InstructionMnemonic::VPSRAW, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 665 */ { InstructionMnemonic::VPSRLD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 666 */ { InstructionMnemonic::VPSRLD, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 667 */ { InstructionMnemonic::VPSRLDQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 668 */ { InstructionMnemonic::VPSRLQ, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 669 */ { InstructionMnemonic::VPSRLQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 66A */ { InstructionMnemonic::VPSRLW, { OPI_Hx, OPI_Ux, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 66B */ { InstructionMnemonic::VPSRLW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 66C */ { InstructionMnemonic::VPSUBB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 66D */ { InstructionMnemonic::VPSUBD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 66E */ { InstructionMnemonic::VPSUBQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 66F */ { InstructionMnemonic::VPSUBSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 670 */ { InstructionMnemonic::VPSUBSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 671 */ { InstructionMnemonic::VPSUBUSB, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 672 */ { InstructionMnemonic::VPSUBUSW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 673 */ { InstructionMnemonic::VPSUBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 674 */ { InstructionMnemonic::VPTEST, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, + /* 675 */ { InstructionMnemonic::VPUNPCKHBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 676 */ { InstructionMnemonic::VPUNPCKHDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 677 */ { InstructionMnemonic::VPUNPCKHQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 678 */ { InstructionMnemonic::VPUNPCKHWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 679 */ { InstructionMnemonic::VPUNPCKLBW, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 67A */ { InstructionMnemonic::VPUNPCKLDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 67B */ { InstructionMnemonic::VPUNPCKLQDQ, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 67C */ { InstructionMnemonic::VPUNPCKLWD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 67D */ { InstructionMnemonic::VPXOR, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 67E */ { InstructionMnemonic::VRCPPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 67F */ { InstructionMnemonic::VRCPSS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 680 */ { InstructionMnemonic::VROUNDPD, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 681 */ { InstructionMnemonic::VROUNDPS, { OPI_Vx, OPI_Wx, OPI_Ib, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 682 */ { InstructionMnemonic::VROUNDSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 683 */ { InstructionMnemonic::VROUNDSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 684 */ { InstructionMnemonic::VRSQRTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 685 */ { InstructionMnemonic::VRSQRTSS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 686 */ { InstructionMnemonic::VSHUFPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 687 */ { InstructionMnemonic::VSHUFPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_Ib }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 688 */ { InstructionMnemonic::VSQRTPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 689 */ { InstructionMnemonic::VSQRTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_WRITE }, + /* 68A */ { InstructionMnemonic::VSQRTSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 68B */ { InstructionMnemonic::VSQRTSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 68C */ { InstructionMnemonic::VSTMXCSR, { OPI_Md, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_WRITE }, + /* 68D */ { InstructionMnemonic::VSUBPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 68E */ { InstructionMnemonic::VSUBPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 68F */ { InstructionMnemonic::VSUBSD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 690 */ { InstructionMnemonic::VSUBSS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 691 */ { InstructionMnemonic::VTESTPD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, + /* 692 */ { InstructionMnemonic::VTESTPS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL }, + /* 693 */ { InstructionMnemonic::VUCOMISD, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 694 */ { InstructionMnemonic::VUCOMISS, { OPI_Vx, OPI_Wx, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 695 */ { InstructionMnemonic::VUNPCKHPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 696 */ { InstructionMnemonic::VUNPCKHPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 697 */ { InstructionMnemonic::VUNPCKLPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 698 */ { InstructionMnemonic::VUNPCKLPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 699 */ { InstructionMnemonic::VXORPD, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_ACCEPTS_VEXL | IDF_OPERAND1_READWRITE }, + /* 69A */ { InstructionMnemonic::VXORPS, { OPI_Vx, OPI_Hx, OPI_Wx, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 69B */ { InstructionMnemonic::VZEROALL, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 69C */ { InstructionMnemonic::VZEROUPPER, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 69D */ { InstructionMnemonic::WAIT, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 69E */ { InstructionMnemonic::WBINVD, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 69F */ { InstructionMnemonic::WRMSR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6A0 */ { InstructionMnemonic::XADD, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_WRITE }, + /* 6A1 */ { InstructionMnemonic::XADD, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_WRITE }, + /* 6A2 */ { InstructionMnemonic::XCHG, { OPI_R4v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6A3 */ { InstructionMnemonic::XCHG, { OPI_R3v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6A4 */ { InstructionMnemonic::XCHG, { OPI_R5v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6A5 */ { InstructionMnemonic::XCHG, { OPI_R7v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6A6 */ { InstructionMnemonic::XCHG, { OPI_R6v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6A7 */ { InstructionMnemonic::XCHG, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6A8 */ { InstructionMnemonic::XCHG, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6A9 */ { InstructionMnemonic::XCHG, { OPI_R0v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6AA */ { InstructionMnemonic::XCHG, { OPI_R2v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6AB */ { InstructionMnemonic::XCHG, { OPI_R1v, OPI_rAX, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE | IDF_OPERAND2_READWRITE }, + /* 6AC */ { InstructionMnemonic::XCRYPTCBC, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6AD */ { InstructionMnemonic::XCRYPTCFB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6AE */ { InstructionMnemonic::XCRYPTCTR, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6AF */ { InstructionMnemonic::XCRYPTECB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6B0 */ { InstructionMnemonic::XCRYPTOFB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6B1 */ { InstructionMnemonic::XGETBV, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6B2 */ { InstructionMnemonic::XLATB, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_REXW | IDF_ACCEPTS_SEGMENT_PREFIX }, + /* 6B3 */ { InstructionMnemonic::XOR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_INVALID_64 | IDF_OPERAND1_READWRITE }, + /* 6B4 */ { InstructionMnemonic::XOR, { OPI_Ev, OPI_sIb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6B5 */ { InstructionMnemonic::XOR, { OPI_Ev, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6B6 */ { InstructionMnemonic::XOR, { OPI_Gb, OPI_Eb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6B7 */ { InstructionMnemonic::XOR, { OPI_Gv, OPI_Ev, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6B8 */ { InstructionMnemonic::XOR, { OPI_Eb, OPI_Gb, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6B9 */ { InstructionMnemonic::XOR, { OPI_Ev, OPI_Gv, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6BA */ { InstructionMnemonic::XOR, { OPI_AL, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_OPERAND1_READWRITE }, + /* 6BB */ { InstructionMnemonic::XOR, { OPI_rAX, OPI_sIz, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_OPERAND_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_OPERAND1_READWRITE }, + /* 6BC */ { InstructionMnemonic::XOR, { OPI_Eb, OPI_Ib, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6BD */ { InstructionMnemonic::XORPD, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6BE */ { InstructionMnemonic::XORPS, { OPI_V, OPI_W, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB | IDF_OPERAND1_READWRITE }, + /* 6BF */ { InstructionMnemonic::XRSTOR, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 6C0 */ { InstructionMnemonic::XSAVE, { OPI_M, OPI_NONE, OPI_NONE, OPI_NONE }, IDF_ACCEPTS_ADDRESS_SIZE_PREFIX | IDF_ACCEPTS_REXW | IDF_ACCEPTS_REXR | IDF_ACCEPTS_REXX | IDF_ACCEPTS_REXB }, + /* 6C1 */ { InstructionMnemonic::XSETBV, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6C2 */ { InstructionMnemonic::XSHA1, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6C3 */ { InstructionMnemonic::XSHA256, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, + /* 6C4 */ { InstructionMnemonic::XSTORE, { OPI_NONE, OPI_NONE, OPI_NONE, OPI_NONE }, 0 }, +}; + +#undef OPI_NONE +#undef OPI_AL +#undef OPI_AX +#undef OPI_Av +#undef OPI_C +#undef OPI_CL +#undef OPI_CS +#undef OPI_CX +#undef OPI_D +#undef OPI_DL +#undef OPI_DS +#undef OPI_DX +#undef OPI_E +#undef OPI_ES +#undef OPI_Eb +#undef OPI_Ed +#undef OPI_Eq +#undef OPI_Ev +#undef OPI_Ew +#undef OPI_Ey +#undef OPI_Ez +#undef OPI_FS +#undef OPI_Fv +#undef OPI_G +#undef OPI_GS +#undef OPI_Gb +#undef OPI_Gd +#undef OPI_Gq +#undef OPI_Gv +#undef OPI_Gw +#undef OPI_Gy +#undef OPI_Gz +#undef OPI_H +#undef OPI_Hqq +#undef OPI_Hx +#undef OPI_I1 +#undef OPI_Ib +#undef OPI_Iv +#undef OPI_Iw +#undef OPI_Iz +#undef OPI_Jb +#undef OPI_Jv +#undef OPI_Jz +#undef OPI_L +#undef OPI_Lx +#undef OPI_M +#undef OPI_Mb +#undef OPI_MbRd +#undef OPI_MbRv +#undef OPI_Md +#undef OPI_MdRy +#undef OPI_MdU +#undef OPI_Mdq +#undef OPI_Mo +#undef OPI_Mq +#undef OPI_MqU +#undef OPI_Ms +#undef OPI_Mt +#undef OPI_Mv +#undef OPI_Mw +#undef OPI_MwRd +#undef OPI_MwRv +#undef OPI_MwRy +#undef OPI_MwU +#undef OPI_N +#undef OPI_Ob +#undef OPI_Ov +#undef OPI_Ow +#undef OPI_P +#undef OPI_Q +#undef OPI_R +#undef OPI_R0b +#undef OPI_R0v +#undef OPI_R0w +#undef OPI_R0y +#undef OPI_R0z +#undef OPI_R1b +#undef OPI_R1v +#undef OPI_R1w +#undef OPI_R1y +#undef OPI_R1z +#undef OPI_R2b +#undef OPI_R2v +#undef OPI_R2w +#undef OPI_R2y +#undef OPI_R2z +#undef OPI_R3b +#undef OPI_R3v +#undef OPI_R3w +#undef OPI_R3y +#undef OPI_R3z +#undef OPI_R4b +#undef OPI_R4v +#undef OPI_R4w +#undef OPI_R4y +#undef OPI_R4z +#undef OPI_R5b +#undef OPI_R5v +#undef OPI_R5w +#undef OPI_R5y +#undef OPI_R5z +#undef OPI_R6b +#undef OPI_R6v +#undef OPI_R6w +#undef OPI_R6y +#undef OPI_R6z +#undef OPI_R7b +#undef OPI_R7v +#undef OPI_R7w +#undef OPI_R7y +#undef OPI_R7z +#undef OPI_S +#undef OPI_SS +#undef OPI_ST0 +#undef OPI_ST1 +#undef OPI_ST2 +#undef OPI_ST3 +#undef OPI_ST4 +#undef OPI_ST5 +#undef OPI_ST6 +#undef OPI_ST7 +#undef OPI_U +#undef OPI_Ux +#undef OPI_V +#undef OPI_Vdq +#undef OPI_Vqq +#undef OPI_Vsd +#undef OPI_Vx +#undef OPI_W +#undef OPI_Wdq +#undef OPI_Wqq +#undef OPI_Wsd +#undef OPI_Wx +#undef OPI_eAX +#undef OPI_eCX +#undef OPI_eDX +#undef OPI_rAX +#undef OPI_rCX +#undef OPI_rDX +#undef OPI_sIb +#undef OPI_sIz + +const char *instrMnemonicStrings[] = +{ + /* 000 */ "invalid", + /* 001 */ "aaa", + /* 002 */ "aad", + /* 003 */ "aam", + /* 004 */ "aas", + /* 005 */ "adc", + /* 006 */ "add", + /* 007 */ "addpd", + /* 008 */ "addps", + /* 009 */ "addsd", + /* 00A */ "addss", + /* 00B */ "addsubpd", + /* 00C */ "addsubps", + /* 00D */ "aesdec", + /* 00E */ "aesdeclast", + /* 00F */ "aesenc", + /* 010 */ "aesenclast", + /* 011 */ "aesimc", + /* 012 */ "aeskeygenassist", + /* 013 */ "and", + /* 014 */ "andnpd", + /* 015 */ "andnps", + /* 016 */ "andpd", + /* 017 */ "andps", + /* 018 */ "arpl", + /* 019 */ "blendpd", + /* 01A */ "blendps", + /* 01B */ "blendvpd", + /* 01C */ "blendvps", + /* 01D */ "bound", + /* 01E */ "bsf", + /* 01F */ "bsr", + /* 020 */ "bswap", + /* 021 */ "bt", + /* 022 */ "btc", + /* 023 */ "btr", + /* 024 */ "bts", + /* 025 */ "call", + /* 026 */ "cbw", + /* 027 */ "cdq", + /* 028 */ "cdqe", + /* 029 */ "clc", + /* 02A */ "cld", + /* 02B */ "clflush", + /* 02C */ "clgi", + /* 02D */ "cli", + /* 02E */ "clts", + /* 02F */ "cmc", + /* 030 */ "cmova", + /* 031 */ "cmovae", + /* 032 */ "cmovb", + /* 033 */ "cmovbe", + /* 034 */ "cmove", + /* 035 */ "cmovg", + /* 036 */ "cmovge", + /* 037 */ "cmovl", + /* 038 */ "cmovle", + /* 039 */ "cmovne", + /* 03A */ "cmovno", + /* 03B */ "cmovnp", + /* 03C */ "cmovns", + /* 03D */ "cmovo", + /* 03E */ "cmovp", + /* 03F */ "cmovs", + /* 040 */ "cmp", + /* 041 */ "cmppd", + /* 042 */ "cmpps", + /* 043 */ "cmpsb", + /* 044 */ "cmpsd", + /* 045 */ "cmpsq", + /* 046 */ "cmpss", + /* 047 */ "cmpsw", + /* 048 */ "cmpxchg", + /* 049 */ "cmpxchg16b", + /* 04A */ "cmpxchg8b", + /* 04B */ "comisd", + /* 04C */ "comiss", + /* 04D */ "cpuid", + /* 04E */ "cqo", + /* 04F */ "crc32", + /* 050 */ "cvtdq2pd", + /* 051 */ "cvtdq2ps", + /* 052 */ "cvtpd2dq", + /* 053 */ "cvtpd2pi", + /* 054 */ "cvtpd2ps", + /* 055 */ "cvtpi2pd", + /* 056 */ "cvtpi2ps", + /* 057 */ "cvtps2dq", + /* 058 */ "cvtps2pd", + /* 059 */ "cvtps2pi", + /* 05A */ "cvtsd2si", + /* 05B */ "cvtsd2ss", + /* 05C */ "cvtsi2sd", + /* 05D */ "cvtsi2ss", + /* 05E */ "cvtss2sd", + /* 05F */ "cvtss2si", + /* 060 */ "cvttpd2dq", + /* 061 */ "cvttpd2pi", + /* 062 */ "cvttps2dq", + /* 063 */ "cvttps2pi", + /* 064 */ "cvttsd2si", + /* 065 */ "cvttss2si", + /* 066 */ "cwd", + /* 067 */ "cwde", + /* 068 */ "daa", + /* 069 */ "das", + /* 06A */ "dec", + /* 06B */ "div", + /* 06C */ "divpd", + /* 06D */ "divps", + /* 06E */ "divsd", + /* 06F */ "divss", + /* 070 */ "dppd", + /* 071 */ "dpps", + /* 072 */ "emms", + /* 073 */ "enter", + /* 074 */ "extractps", + /* 075 */ "f2xm1", + /* 076 */ "fabs", + /* 077 */ "fadd", + /* 078 */ "faddp", + /* 079 */ "fbld", + /* 07A */ "fbstp", + /* 07B */ "fchs", + /* 07C */ "fclex", + /* 07D */ "fcmovb", + /* 07E */ "fcmovbe", + /* 07F */ "fcmove", + /* 080 */ "fcmovnb", + /* 081 */ "fcmovnbe", + /* 082 */ "fcmovne", + /* 083 */ "fcmovnu", + /* 084 */ "fcmovu", + /* 085 */ "fcom", + /* 086 */ "fcom2", + /* 087 */ "fcomi", + /* 088 */ "fcomip", + /* 089 */ "fcomp", + /* 08A */ "fcomp3", + /* 08B */ "fcomp5", + /* 08C */ "fcompp", + /* 08D */ "fcos", + /* 08E */ "fdecstp", + /* 08F */ "fdiv", + /* 090 */ "fdivp", + /* 091 */ "fdivr", + /* 092 */ "fdivrp", + /* 093 */ "femms", + /* 094 */ "ffree", + /* 095 */ "ffreep", + /* 096 */ "fiadd", + /* 097 */ "ficom", + /* 098 */ "ficomp", + /* 099 */ "fidiv", + /* 09A */ "fidivr", + /* 09B */ "fild", + /* 09C */ "fimul", + /* 09D */ "fincstp", + /* 09E */ "fist", + /* 09F */ "fistp", + /* 0A0 */ "fisttp", + /* 0A1 */ "fisub", + /* 0A2 */ "fisubr", + /* 0A3 */ "fld", + /* 0A4 */ "fld1", + /* 0A5 */ "fldcw", + /* 0A6 */ "fldenv", + /* 0A7 */ "fldl2e", + /* 0A8 */ "fldl2t", + /* 0A9 */ "fldlg2", + /* 0AA */ "fldln2", + /* 0AB */ "fldpi", + /* 0AC */ "fldz", + /* 0AD */ "fmul", + /* 0AE */ "fmulp", + /* 0AF */ "fndisi", + /* 0B0 */ "fneni", + /* 0B1 */ "fninit", + /* 0B2 */ "fnop", + /* 0B3 */ "fnsave", + /* 0B4 */ "fnsetpm", + /* 0B5 */ "fnstcw", + /* 0B6 */ "fnstenv", + /* 0B7 */ "fnstsw", + /* 0B8 */ "fpatan", + /* 0B9 */ "fprem", + /* 0BA */ "fprem1", + /* 0BB */ "fptan", + /* 0BC */ "frndint", + /* 0BD */ "frstor", + /* 0BE */ "frstpm", + /* 0BF */ "fscale", + /* 0C0 */ "fsin", + /* 0C1 */ "fsincos", + /* 0C2 */ "fsqrt", + /* 0C3 */ "fst", + /* 0C4 */ "fstp", + /* 0C5 */ "fstp1", + /* 0C6 */ "fstp8", + /* 0C7 */ "fstp9", + /* 0C8 */ "fsub", + /* 0C9 */ "fsubp", + /* 0CA */ "fsubr", + /* 0CB */ "fsubrp", + /* 0CC */ "ftst", + /* 0CD */ "fucom", + /* 0CE */ "fucomi", + /* 0CF */ "fucomip", + /* 0D0 */ "fucomp", + /* 0D1 */ "fucompp", + /* 0D2 */ "fxam", + /* 0D3 */ "fxch", + /* 0D4 */ "fxch4", + /* 0D5 */ "fxch7", + /* 0D6 */ "fxrstor", + /* 0D7 */ "fxsave", + /* 0D8 */ "fxtract", + /* 0D9 */ "fyl2x", + /* 0DA */ "fyl2xp1", + /* 0DB */ "getsec", + /* 0DC */ "haddpd", + /* 0DD */ "haddps", + /* 0DE */ "hlt", + /* 0DF */ "hsubpd", + /* 0E0 */ "hsubps", + /* 0E1 */ "idiv", + /* 0E2 */ "imul", + /* 0E3 */ "in", + /* 0E4 */ "inc", + /* 0E5 */ "insb", + /* 0E6 */ "insd", + /* 0E7 */ "insertps", + /* 0E8 */ "insw", + /* 0E9 */ "int", + /* 0EA */ "int1", + /* 0EB */ "int3", + /* 0EC */ "into", + /* 0ED */ "invd", + /* 0EE */ "invept", + /* 0EF */ "invlpg", + /* 0F0 */ "invlpga", + /* 0F1 */ "invvpid", + /* 0F2 */ "iretd", + /* 0F3 */ "iretq", + /* 0F4 */ "iretw", + /* 0F5 */ "ja", + /* 0F6 */ "jb", + /* 0F7 */ "jbe", + /* 0F8 */ "jcxz", + /* 0F9 */ "je", + /* 0FA */ "jecxz", + /* 0FB */ "jg", + /* 0FC */ "jge", + /* 0FD */ "jl", + /* 0FE */ "jle", + /* 0FF */ "jmp", + /* 100 */ "jnb", + /* 101 */ "jne", + /* 102 */ "jno", + /* 103 */ "jnp", + /* 104 */ "jns", + /* 105 */ "jo", + /* 106 */ "jp", + /* 107 */ "jrcxz", + /* 108 */ "js", + /* 109 */ "lahf", + /* 10A */ "lar", + /* 10B */ "lddqu", + /* 10C */ "ldmxcsr", + /* 10D */ "lds", + /* 10E */ "lea", + /* 10F */ "leave", + /* 110 */ "les", + /* 111 */ "lfence", + /* 112 */ "lfs", + /* 113 */ "lgdt", + /* 114 */ "lgs", + /* 115 */ "lidt", + /* 116 */ "lldt", + /* 117 */ "lmsw", + /* 118 */ "lock", + /* 119 */ "lodsb", + /* 11A */ "lodsd", + /* 11B */ "lodsq", + /* 11C */ "lodsw", + /* 11D */ "loop", + /* 11E */ "loope", + /* 11F */ "loopne", + /* 120 */ "lsl", + /* 121 */ "lss", + /* 122 */ "ltr", + /* 123 */ "maskmovdqu", + /* 124 */ "maskmovq", + /* 125 */ "maxpd", + /* 126 */ "maxps", + /* 127 */ "maxsd", + /* 128 */ "maxss", + /* 129 */ "mfence", + /* 12A */ "minpd", + /* 12B */ "minps", + /* 12C */ "minsd", + /* 12D */ "minss", + /* 12E */ "monitor", + /* 12F */ "montmul", + /* 130 */ "mov", + /* 131 */ "movapd", + /* 132 */ "movaps", + /* 133 */ "movbe", + /* 134 */ "movd", + /* 135 */ "movddup", + /* 136 */ "movdq2q", + /* 137 */ "movdqa", + /* 138 */ "movdqu", + /* 139 */ "movhlps", + /* 13A */ "movhpd", + /* 13B */ "movhps", + /* 13C */ "movlhps", + /* 13D */ "movlpd", + /* 13E */ "movlps", + /* 13F */ "movmskpd", + /* 140 */ "movmskps", + /* 141 */ "movntdq", + /* 142 */ "movntdqa", + /* 143 */ "movnti", + /* 144 */ "movntpd", + /* 145 */ "movntps", + /* 146 */ "movntq", + /* 147 */ "movq", + /* 148 */ "movq2dq", + /* 149 */ "movsb", + /* 14A */ "movsd", + /* 14B */ "movshdup", + /* 14C */ "movsldup", + /* 14D */ "movsq", + /* 14E */ "movss", + /* 14F */ "movsw", + /* 150 */ "movsx", + /* 151 */ "movsxd", + /* 152 */ "movupd", + /* 153 */ "movups", + /* 154 */ "movzx", + /* 155 */ "mpsadbw", + /* 156 */ "mul", + /* 157 */ "mulpd", + /* 158 */ "mulps", + /* 159 */ "mulsd", + /* 15A */ "mulss", + /* 15B */ "mwait", + /* 15C */ "neg", + /* 15D */ "nop", + /* 15E */ "not", + /* 15F */ "or", + /* 160 */ "orpd", + /* 161 */ "orps", + /* 162 */ "out", + /* 163 */ "outsb", + /* 164 */ "outsd", + /* 165 */ "outsw", + /* 166 */ "pabsb", + /* 167 */ "pabsd", + /* 168 */ "pabsw", + /* 169 */ "packssdw", + /* 16A */ "packsswb", + /* 16B */ "packusdw", + /* 16C */ "packuswb", + /* 16D */ "paddb", + /* 16E */ "paddd", + /* 16F */ "paddq", + /* 170 */ "paddsb", + /* 171 */ "paddsw", + /* 172 */ "paddusb", + /* 173 */ "paddusw", + /* 174 */ "paddw", + /* 175 */ "palignr", + /* 176 */ "pand", + /* 177 */ "pandn", + /* 178 */ "pause", + /* 179 */ "pavgb", + /* 17A */ "pavgusb", + /* 17B */ "pavgw", + /* 17C */ "pblendvb", + /* 17D */ "pblendw", + /* 17E */ "pclmulqdq", + /* 17F */ "pcmpeqb", + /* 180 */ "pcmpeqd", + /* 181 */ "pcmpeqq", + /* 182 */ "pcmpeqw", + /* 183 */ "pcmpestri", + /* 184 */ "pcmpestrm", + /* 185 */ "pcmpgtb", + /* 186 */ "pcmpgtd", + /* 187 */ "pcmpgtq", + /* 188 */ "pcmpgtw", + /* 189 */ "pcmpistri", + /* 18A */ "pcmpistrm", + /* 18B */ "pextrb", + /* 18C */ "pextrd", + /* 18D */ "pextrq", + /* 18E */ "pextrw", + /* 18F */ "pf2id", + /* 190 */ "pf2iw", + /* 191 */ "pfacc", + /* 192 */ "pfadd", + /* 193 */ "pfcmpeq", + /* 194 */ "pfcmpge", + /* 195 */ "pfcmpgt", + /* 196 */ "pfmax", + /* 197 */ "pfmin", + /* 198 */ "pfmul", + /* 199 */ "pfnacc", + /* 19A */ "pfpnacc", + /* 19B */ "pfrcp", + /* 19C */ "pfrcpit1", + /* 19D */ "pfrcpit2", + /* 19E */ "pfrsqit1", + /* 19F */ "pfrsqrt", + /* 1A0 */ "pfsub", + /* 1A1 */ "pfsubr", + /* 1A2 */ "phaddd", + /* 1A3 */ "phaddsw", + /* 1A4 */ "phaddw", + /* 1A5 */ "phminposuw", + /* 1A6 */ "phsubd", + /* 1A7 */ "phsubsw", + /* 1A8 */ "phsubw", + /* 1A9 */ "pi2fd", + /* 1AA */ "pi2fw", + /* 1AB */ "pinsrb", + /* 1AC */ "pinsrd", + /* 1AD */ "pinsrq", + /* 1AE */ "pinsrw", + /* 1AF */ "pmaddubsw", + /* 1B0 */ "pmaddwd", + /* 1B1 */ "pmaxsb", + /* 1B2 */ "pmaxsd", + /* 1B3 */ "pmaxsw", + /* 1B4 */ "pmaxub", + /* 1B5 */ "pmaxud", + /* 1B6 */ "pmaxuw", + /* 1B7 */ "pminsb", + /* 1B8 */ "pminsd", + /* 1B9 */ "pminsw", + /* 1BA */ "pminub", + /* 1BB */ "pminud", + /* 1BC */ "pminuw", + /* 1BD */ "pmovmskb", + /* 1BE */ "pmovsxbd", + /* 1BF */ "pmovsxbq", + /* 1C0 */ "pmovsxbw", + /* 1C1 */ "pmovsxdq", + /* 1C2 */ "pmovsxwd", + /* 1C3 */ "pmovsxwq", + /* 1C4 */ "pmovzxbd", + /* 1C5 */ "pmovzxbq", + /* 1C6 */ "pmovzxbw", + /* 1C7 */ "pmovzxdq", + /* 1C8 */ "pmovzxwd", + /* 1C9 */ "pmovzxwq", + /* 1CA */ "pmuldq", + /* 1CB */ "pmulhrsw", + /* 1CC */ "pmulhrw", + /* 1CD */ "pmulhuw", + /* 1CE */ "pmulhw", + /* 1CF */ "pmulld", + /* 1D0 */ "pmullw", + /* 1D1 */ "pmuludq", + /* 1D2 */ "pop", + /* 1D3 */ "popa", + /* 1D4 */ "popad", + /* 1D5 */ "popcnt", + /* 1D6 */ "popfd", + /* 1D7 */ "popfq", + /* 1D8 */ "popfw", + /* 1D9 */ "por", + /* 1DA */ "prefetch", + /* 1DB */ "prefetchnta", + /* 1DC */ "prefetcht0", + /* 1DD */ "prefetcht1", + /* 1DE */ "prefetcht2", + /* 1DF */ "psadbw", + /* 1E0 */ "pshufb", + /* 1E1 */ "pshufd", + /* 1E2 */ "pshufhw", + /* 1E3 */ "pshuflw", + /* 1E4 */ "pshufw", + /* 1E5 */ "psignb", + /* 1E6 */ "psignd", + /* 1E7 */ "psignw", + /* 1E8 */ "pslld", + /* 1E9 */ "pslldq", + /* 1EA */ "psllq", + /* 1EB */ "psllw", + /* 1EC */ "psrad", + /* 1ED */ "psraw", + /* 1EE */ "psrld", + /* 1EF */ "psrldq", + /* 1F0 */ "psrlq", + /* 1F1 */ "psrlw", + /* 1F2 */ "psubb", + /* 1F3 */ "psubd", + /* 1F4 */ "psubq", + /* 1F5 */ "psubsb", + /* 1F6 */ "psubsw", + /* 1F7 */ "psubusb", + /* 1F8 */ "psubusw", + /* 1F9 */ "psubw", + /* 1FA */ "pswapd", + /* 1FB */ "ptest", + /* 1FC */ "punpckhbw", + /* 1FD */ "punpckhdq", + /* 1FE */ "punpckhqdq", + /* 1FF */ "punpckhwd", + /* 200 */ "punpcklbw", + /* 201 */ "punpckldq", + /* 202 */ "punpcklqdq", + /* 203 */ "punpcklwd", + /* 204 */ "push", + /* 205 */ "pusha", + /* 206 */ "pushad", + /* 207 */ "pushfd", + /* 208 */ "pushfq", + /* 209 */ "pushfw", + /* 20A */ "pxor", + /* 20B */ "rcl", + /* 20C */ "rcpps", + /* 20D */ "rcpss", + /* 20E */ "rcr", + /* 20F */ "rdmsr", + /* 210 */ "rdpmc", + /* 211 */ "rdrand", + /* 212 */ "rdtsc", + /* 213 */ "rdtscp", + /* 214 */ "rep", + /* 215 */ "repne", + /* 216 */ "ret", + /* 217 */ "retf", + /* 218 */ "rol", + /* 219 */ "ror", + /* 21A */ "roundpd", + /* 21B */ "roundps", + /* 21C */ "roundsd", + /* 21D */ "roundss", + /* 21E */ "rsm", + /* 21F */ "rsqrtps", + /* 220 */ "rsqrtss", + /* 221 */ "sahf", + /* 222 */ "salc", + /* 223 */ "sar", + /* 224 */ "sbb", + /* 225 */ "scasb", + /* 226 */ "scasd", + /* 227 */ "scasq", + /* 228 */ "scasw", + /* 229 */ "seta", + /* 22A */ "setae", + /* 22B */ "setb", + /* 22C */ "setbe", + /* 22D */ "sete", + /* 22E */ "setg", + /* 22F */ "setge", + /* 230 */ "setl", + /* 231 */ "setle", + /* 232 */ "setne", + /* 233 */ "setno", + /* 234 */ "setnp", + /* 235 */ "setns", + /* 236 */ "seto", + /* 237 */ "setp", + /* 238 */ "sets", + /* 239 */ "sfence", + /* 23A */ "sgdt", + /* 23B */ "shl", + /* 23C */ "shld", + /* 23D */ "shr", + /* 23E */ "shrd", + /* 23F */ "shufpd", + /* 240 */ "shufps", + /* 241 */ "sidt", + /* 242 */ "skinit", + /* 243 */ "sldt", + /* 244 */ "smsw", + /* 245 */ "sqrtpd", + /* 246 */ "sqrtps", + /* 247 */ "sqrtsd", + /* 248 */ "sqrtss", + /* 249 */ "stc", + /* 24A */ "std", + /* 24B */ "stgi", + /* 24C */ "sti", + /* 24D */ "stmxcsr", + /* 24E */ "stosb", + /* 24F */ "stosd", + /* 250 */ "stosq", + /* 251 */ "stosw", + /* 252 */ "str", + /* 253 */ "sub", + /* 254 */ "subpd", + /* 255 */ "subps", + /* 256 */ "subsd", + /* 257 */ "subss", + /* 258 */ "swapgs", + /* 259 */ "syscall", + /* 25A */ "sysenter", + /* 25B */ "sysexit", + /* 25C */ "sysret", + /* 25D */ "test", + /* 25E */ "ucomisd", + /* 25F */ "ucomiss", + /* 260 */ "ud2", + /* 261 */ "unpckhpd", + /* 262 */ "unpckhps", + /* 263 */ "unpcklpd", + /* 264 */ "unpcklps", + /* 265 */ "vaddpd", + /* 266 */ "vaddps", + /* 267 */ "vaddsd", + /* 268 */ "vaddss", + /* 269 */ "vaddsubpd", + /* 26A */ "vaddsubps", + /* 26B */ "vaesdec", + /* 26C */ "vaesdeclast", + /* 26D */ "vaesenc", + /* 26E */ "vaesenclast", + /* 26F */ "vaesimc", + /* 270 */ "vaeskeygenassist", + /* 271 */ "vandnpd", + /* 272 */ "vandnps", + /* 273 */ "vandpd", + /* 274 */ "vandps", + /* 275 */ "vblendpd", + /* 276 */ "vblendps", + /* 277 */ "vblendvpd", + /* 278 */ "vblendvps", + /* 279 */ "vbroadcastsd", + /* 27A */ "vbroadcastss", + /* 27B */ "vcmppd", + /* 27C */ "vcmpps", + /* 27D */ "vcmpsd", + /* 27E */ "vcmpss", + /* 27F */ "vcomisd", + /* 280 */ "vcomiss", + /* 281 */ "vcvtdq2pd", + /* 282 */ "vcvtdq2ps", + /* 283 */ "vcvtpd2dq", + /* 284 */ "vcvtpd2ps", + /* 285 */ "vcvtps2dq", + /* 286 */ "vcvtps2pd", + /* 287 */ "vcvtsd2si", + /* 288 */ "vcvtsd2ss", + /* 289 */ "vcvtsi2sd", + /* 28A */ "vcvtsi2ss", + /* 28B */ "vcvtss2sd", + /* 28C */ "vcvtss2si", + /* 28D */ "vcvttpd2dq", + /* 28E */ "vcvttps2dq", + /* 28F */ "vcvttsd2si", + /* 290 */ "vcvttss2si", + /* 291 */ "vdivpd", + /* 292 */ "vdivps", + /* 293 */ "vdivsd", + /* 294 */ "vdivss", + /* 295 */ "vdppd", + /* 296 */ "vdpps", + /* 297 */ "verr", + /* 298 */ "verw", + /* 299 */ "vextractf128", + /* 29A */ "vextractps", + /* 29B */ "vhaddpd", + /* 29C */ "vhaddps", + /* 29D */ "vhsubpd", + /* 29E */ "vhsubps", + /* 29F */ "vinsertf128", + /* 2A0 */ "vinsertps", + /* 2A1 */ "vlddqu", + /* 2A2 */ "vmaskmovdqu", + /* 2A3 */ "vmaskmovpd", + /* 2A4 */ "vmaskmovps", + /* 2A5 */ "vmaxpd", + /* 2A6 */ "vmaxps", + /* 2A7 */ "vmaxsd", + /* 2A8 */ "vmaxss", + /* 2A9 */ "vmcall", + /* 2AA */ "vmclear", + /* 2AB */ "vminpd", + /* 2AC */ "vminps", + /* 2AD */ "vminsd", + /* 2AE */ "vminss", + /* 2AF */ "vmlaunch", + /* 2B0 */ "vmload", + /* 2B1 */ "vmmcall", + /* 2B2 */ "vmovapd", + /* 2B3 */ "vmovaps", + /* 2B4 */ "vmovd", + /* 2B5 */ "vmovddup", + /* 2B6 */ "vmovdqa", + /* 2B7 */ "vmovdqu", + /* 2B8 */ "vmovhlps", + /* 2B9 */ "vmovhpd", + /* 2BA */ "vmovhps", + /* 2BB */ "vmovlhps", + /* 2BC */ "vmovlpd", + /* 2BD */ "vmovlps", + /* 2BE */ "vmovmskpd", + /* 2BF */ "vmovmskps", + /* 2C0 */ "vmovntdq", + /* 2C1 */ "vmovntdqa", + /* 2C2 */ "vmovntpd", + /* 2C3 */ "vmovntps", + /* 2C4 */ "vmovq", + /* 2C5 */ "vmovsd", + /* 2C6 */ "vmovshdup", + /* 2C7 */ "vmovsldup", + /* 2C8 */ "vmovss", + /* 2C9 */ "vmovupd", + /* 2CA */ "vmovups", + /* 2CB */ "vmpsadbw", + /* 2CC */ "vmptrld", + /* 2CD */ "vmptrst", + /* 2CE */ "vmread", + /* 2CF */ "vmresume", + /* 2D0 */ "vmrun", + /* 2D1 */ "vmsave", + /* 2D2 */ "vmulpd", + /* 2D3 */ "vmulps", + /* 2D4 */ "vmulsd", + /* 2D5 */ "vmulss", + /* 2D6 */ "vmwrite", + /* 2D7 */ "vmxoff", + /* 2D8 */ "vmxon", + /* 2D9 */ "vorpd", + /* 2DA */ "vorps", + /* 2DB */ "vpabsb", + /* 2DC */ "vpabsd", + /* 2DD */ "vpabsw", + /* 2DE */ "vpackssdw", + /* 2DF */ "vpacksswb", + /* 2E0 */ "vpackusdw", + /* 2E1 */ "vpackuswb", + /* 2E2 */ "vpaddb", + /* 2E3 */ "vpaddd", + /* 2E4 */ "vpaddq", + /* 2E5 */ "vpaddsb", + /* 2E6 */ "vpaddsw", + /* 2E7 */ "vpaddusb", + /* 2E8 */ "vpaddusw", + /* 2E9 */ "vpaddw", + /* 2EA */ "vpalignr", + /* 2EB */ "vpand", + /* 2EC */ "vpandn", + /* 2ED */ "vpavgb", + /* 2EE */ "vpavgw", + /* 2EF */ "vpblendvb", + /* 2F0 */ "vpblendw", + /* 2F1 */ "vpclmulqdq", + /* 2F2 */ "vpcmpeqb", + /* 2F3 */ "vpcmpeqd", + /* 2F4 */ "vpcmpeqq", + /* 2F5 */ "vpcmpeqw", + /* 2F6 */ "vpcmpestri", + /* 2F7 */ "vpcmpestrm", + /* 2F8 */ "vpcmpgtb", + /* 2F9 */ "vpcmpgtd", + /* 2FA */ "vpcmpgtq", + /* 2FB */ "vpcmpgtw", + /* 2FC */ "vpcmpistri", + /* 2FD */ "vpcmpistrm", + /* 2FE */ "vperm2f128", + /* 2FF */ "vpermilpd", + /* 300 */ "vpermilps", + /* 301 */ "vpextrb", + /* 302 */ "vpextrd", + /* 303 */ "vpextrq", + /* 304 */ "vpextrw", + /* 305 */ "vphaddd", + /* 306 */ "vphaddsw", + /* 307 */ "vphaddw", + /* 308 */ "vphminposuw", + /* 309 */ "vphsubd", + /* 30A */ "vphsubsw", + /* 30B */ "vphsubw", + /* 30C */ "vpinsrb", + /* 30D */ "vpinsrd", + /* 30E */ "vpinsrq", + /* 30F */ "vpinsrw", + /* 310 */ "vpmaddubsw", + /* 311 */ "vpmaddwd", + /* 312 */ "vpmaxsb", + /* 313 */ "vpmaxsd", + /* 314 */ "vpmaxsw", + /* 315 */ "vpmaxub", + /* 316 */ "vpmaxud", + /* 317 */ "vpmaxuw", + /* 318 */ "vpminsb", + /* 319 */ "vpminsd", + /* 31A */ "vpminsw", + /* 31B */ "vpminub", + /* 31C */ "vpminud", + /* 31D */ "vpminuw", + /* 31E */ "vpmovmskb", + /* 31F */ "vpmovsxbd", + /* 320 */ "vpmovsxbq", + /* 321 */ "vpmovsxbw", + /* 322 */ "vpmovsxwd", + /* 323 */ "vpmovsxwq", + /* 324 */ "vpmovzxbd", + /* 325 */ "vpmovzxbq", + /* 326 */ "vpmovzxbw", + /* 327 */ "vpmovzxdq", + /* 328 */ "vpmovzxwd", + /* 329 */ "vpmovzxwq", + /* 32A */ "vpmuldq", + /* 32B */ "vpmulhrsw", + /* 32C */ "vpmulhuw", + /* 32D */ "vpmulhw", + /* 32E */ "vpmulld", + /* 32F */ "vpmullw", + /* 330 */ "vpor", + /* 331 */ "vpsadbw", + /* 332 */ "vpshufb", + /* 333 */ "vpshufd", + /* 334 */ "vpshufhw", + /* 335 */ "vpshuflw", + /* 336 */ "vpsignb", + /* 337 */ "vpsignd", + /* 338 */ "vpsignw", + /* 339 */ "vpslld", + /* 33A */ "vpslldq", + /* 33B */ "vpsllq", + /* 33C */ "vpsllw", + /* 33D */ "vpsrad", + /* 33E */ "vpsraw", + /* 33F */ "vpsrld", + /* 340 */ "vpsrldq", + /* 341 */ "vpsrlq", + /* 342 */ "vpsrlw", + /* 343 */ "vpsubb", + /* 344 */ "vpsubd", + /* 345 */ "vpsubq", + /* 346 */ "vpsubsb", + /* 347 */ "vpsubsw", + /* 348 */ "vpsubusb", + /* 349 */ "vpsubusw", + /* 34A */ "vpsubw", + /* 34B */ "vptest", + /* 34C */ "vpunpckhbw", + /* 34D */ "vpunpckhdq", + /* 34E */ "vpunpckhqdq", + /* 34F */ "vpunpckhwd", + /* 350 */ "vpunpcklbw", + /* 351 */ "vpunpckldq", + /* 352 */ "vpunpcklqdq", + /* 353 */ "vpunpcklwd", + /* 354 */ "vpxor", + /* 355 */ "vrcpps", + /* 356 */ "vrcpss", + /* 357 */ "vroundpd", + /* 358 */ "vroundps", + /* 359 */ "vroundsd", + /* 35A */ "vroundss", + /* 35B */ "vrsqrtps", + /* 35C */ "vrsqrtss", + /* 35D */ "vshufpd", + /* 35E */ "vshufps", + /* 35F */ "vsqrtpd", + /* 360 */ "vsqrtps", + /* 361 */ "vsqrtsd", + /* 362 */ "vsqrtss", + /* 363 */ "vstmxcsr", + /* 364 */ "vsubpd", + /* 365 */ "vsubps", + /* 366 */ "vsubsd", + /* 367 */ "vsubss", + /* 368 */ "vtestpd", + /* 369 */ "vtestps", + /* 36A */ "vucomisd", + /* 36B */ "vucomiss", + /* 36C */ "vunpckhpd", + /* 36D */ "vunpckhps", + /* 36E */ "vunpcklpd", + /* 36F */ "vunpcklps", + /* 370 */ "vxorpd", + /* 371 */ "vxorps", + /* 372 */ "vzeroall", + /* 373 */ "vzeroupper", + /* 374 */ "wait", + /* 375 */ "wbinvd", + /* 376 */ "wrmsr", + /* 377 */ "xadd", + /* 378 */ "xchg", + /* 379 */ "xcryptcbc", + /* 37A */ "xcryptcfb", + /* 37B */ "xcryptctr", + /* 37C */ "xcryptecb", + /* 37D */ "xcryptofb", + /* 37E */ "xgetbv", + /* 37F */ "xlatb", + /* 380 */ "xor", + /* 381 */ "xorpd", + /* 382 */ "xorps", + /* 383 */ "xrstor", + /* 384 */ "xsave", + /* 385 */ "xsetbv", + /* 386 */ "xsha1", + /* 387 */ "xsha256", + /* 388 */ "xstore", +}; + +} + +} \ No newline at end of file diff --git a/Bindings/Cpp/ZyDisOpcodeTable.hpp b/Zydis/ZydisOpcodeTable.hpp similarity index 92% rename from Bindings/Cpp/ZyDisOpcodeTable.hpp rename to Zydis/ZydisOpcodeTable.hpp index c5f388f..1b1d14a 100644 --- a/Bindings/Cpp/ZyDisOpcodeTable.hpp +++ b/Zydis/ZydisOpcodeTable.hpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 29. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,19 +26,21 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ -#pragma once +***************************************************************************************************/ + +#ifndef _ZYDIS_OPCODETABLE_HPP_ +#define _ZYDIS_OPCODETABLE_HPP_ #include #include -namespace Verteron +namespace Zydis { /** * @brief Values that represent an instruction mnemonic. */ -enum class ZyDisInstructionMnemonic : uint16_t +enum class InstructionMnemonic : uint16_t { /* 000 */ INVALID, /* 001 */ AAA, @@ -922,8 +922,8 @@ enum class ZyDisInstructionMnemonic : uint16_t /* 36D */ VUNPCKHPS, /* 36E */ VUNPCKLPD, /* 36F */ VUNPCKLPS, - /* 370 */ ZyDisORPD, - /* 371 */ ZyDisORPS, + /* 370 */ VXORPD, + /* 371 */ VXORPS, /* 372 */ VZEROALL, /* 373 */ VZEROUPPER, /* 374 */ WAIT, @@ -953,12 +953,12 @@ enum class ZyDisInstructionMnemonic : uint16_t * @brief Defines an alias representing an opcode tree node. An opcode tree node is a 16 bit * unsigned integer value with its first 4 bits reserved for the node type. */ -typedef uint16_t ZyDisOpcodeTreeNode; +typedef uint16_t OpcodeTreeNode; /** * @brief Values that represent the type of an opcode tree node. */ -enum class ZyDisOpcodeTreeNodeType : uint8_t +enum class OpcodeTreeNodeType : uint8_t { /** * @brief Reference to a concrete instruction definition. @@ -1025,7 +1025,7 @@ enum class ZyDisOpcodeTreeNodeType : uint8_t /** * @brief Values that represent the type of an operand in the instruction definition. */ -enum class ZyDisDefinedOperandType : uint8_t +enum class DefinedOperandType : uint8_t { /* * @brief No operand. @@ -1286,7 +1286,7 @@ enum class ZyDisDefinedOperandType : uint8_t * @brief Values that represent the size of an operand in the instruction definition. * Do not change the order or the values of this enum! */ -enum class ZyDisDefinedOperandSize : uint8_t +enum class DefinedOperandSize : uint8_t { /** * @brief No operand. @@ -1386,7 +1386,7 @@ enum class ZyDisDefinedOperandSize : uint8_t * @brief Values that represent optional flags in the instruction definition. * Do not change the order or the values of this enum! */ -enum ZyDisInstructionDefinitionFlags : uint16_t +enum InstructionDefinitionFlags : uint16_t { /** * @brief The instruction accepts the rex.b prefix value. @@ -1454,30 +1454,30 @@ enum ZyDisInstructionDefinitionFlags : uint16_t /** * @brief An operand definition. */ -struct ZyDisOperandDefinition +struct OperandDefinition { /** * @brief The defined operand type. */ - ZyDisDefinedOperandType type; + DefinedOperandType type; /** * @brief The defined operand size. */ - ZyDisDefinedOperandSize size; + DefinedOperandSize size; }; /** * @brief An instruction definition. */ -struct ZyDisInstructionDefinition +struct InstructionDefinition { /** * @brief The instruction mnemonic. */ - ZyDisInstructionMnemonic mnemonic; + InstructionMnemonic mnemonic; /** * @brief The operand definitions for all four possible operands. */ - ZyDisOperandDefinition operand[4]; + OperandDefinition operand[4]; /** * @brief Additional flags for the instruction definition. */ @@ -1492,24 +1492,24 @@ namespace Internal * @brief Contains all opcode tables. * Indexed by the numeric value of the opcode. */ -extern const ZyDisOpcodeTreeNode optreeTable[][256]; +extern const OpcodeTreeNode optreeTable[][256]; /** * @brief Contains all modrm_mod switch tables. * Index values: * 0 = [modrm_mod == !11] * 1 = [modrm_mod == 11] */ -extern const ZyDisOpcodeTreeNode optreeModrmMod[][2]; +extern const OpcodeTreeNode optreeModrmMod[][2]; /** * @brief Contains all modrm_reg switch tables. * Indexed by the numeric value of the modrm_reg field. */ -extern const ZyDisOpcodeTreeNode optreeModrmReg[][8]; +extern const OpcodeTreeNode optreeModrmReg[][8]; /** * @brief Contains all modrm_rm switch tables. * Indexed by the numeric value of the modrm_rm field. */ -extern const ZyDisOpcodeTreeNode optreeModrmRm[][8]; +extern const OpcodeTreeNode optreeModrmRm[][8]; /** * @brief Contains all mandatory-prefix switch tables. * Index values: @@ -1518,13 +1518,13 @@ extern const ZyDisOpcodeTreeNode optreeModrmRm[][8]; * 2 = F3 * 3 = 66 */ -extern const ZyDisOpcodeTreeNode optreeMandatory[][4]; +extern const OpcodeTreeNode optreeMandatory[][4]; /** * @brief Contains all x87 opcode tables. * Indexed by the numeric value of the 6 lowest bits of the modrm byte (modrm_mod should * always be 11). */ -extern const ZyDisOpcodeTreeNode optreeX87[][64]; +extern const OpcodeTreeNode optreeX87[][64]; /** * @brief Contains all address-size switch tables. * Index values: @@ -1532,7 +1532,7 @@ extern const ZyDisOpcodeTreeNode optreeX87[][64]; * 1 = 32 * 2 = 64 */ -extern const ZyDisOpcodeTreeNode optreeAddressSize[][3]; +extern const OpcodeTreeNode optreeAddressSize[][3]; /** * @brief Contains all operand-size switch tables. * Index values: @@ -1540,26 +1540,26 @@ extern const ZyDisOpcodeTreeNode optreeAddressSize[][3]; * 1 = 32 * 2 = 64 */ -extern const ZyDisOpcodeTreeNode optreeOperandSize[][3]; +extern const OpcodeTreeNode optreeOperandSize[][3]; /** * @brief Contains all cpu-mode switch tables. * Index values: * 0 = [!= 64] * 1 = 64 */ -extern const ZyDisOpcodeTreeNode optreeMode[][2]; +extern const OpcodeTreeNode optreeMode[][2]; /** * @brief Contains all vendor switch tables. * Index values: * 0 = AMD * 1 = Intel */ -extern const ZyDisOpcodeTreeNode optreeVendor[][2]; +extern const OpcodeTreeNode optreeVendor[][2]; /** * @brief Contains all 3dnow! switch tables. * Indexed by the numeric value of the 3dnow! opcode. */ -extern const ZyDisOpcodeTreeNode optree3dnow[][256]; +extern const OpcodeTreeNode optree3dnow[][256]; /** * @brief Contains all vex switch tables. * Index values: @@ -1580,21 +1580,21 @@ extern const ZyDisOpcodeTreeNode optree3dnow[][256]; * E = F2_0F38 * F = F2_0F3A */ -extern const ZyDisOpcodeTreeNode optreeVex[][16]; +extern const OpcodeTreeNode optreeVex[][16]; /** * @brief Contains all vex_w switch tables. * Indexed by the numeric value of the vex_w field. */ -extern const ZyDisOpcodeTreeNode optreeVexW[][2]; +extern const OpcodeTreeNode optreeVexW[][2]; /** * @brief Contains all vex_l switch tables. * Indexed by the numeric value of the vex_l field. */ -extern const ZyDisOpcodeTreeNode optreeVexL[][2]; +extern const OpcodeTreeNode optreeVexL[][2]; /** * @brief Contains all instruction definitions. */ -extern const ZyDisInstructionDefinition instrDefinitions[]; +extern const InstructionDefinition instrDefinitions[]; /** * @brief Contains all instruction mnemonic strings. */ @@ -1605,9 +1605,9 @@ extern const char* instrMnemonicStrings[]; * @param node The node. * @return The type of the specified opcode tree node. */ -inline ZyDisOpcodeTreeNodeType VDEGetOpcodeNodeType(ZyDisOpcodeTreeNode node) +inline OpcodeTreeNodeType GetOpcodeNodeType(OpcodeTreeNode node) { - return static_cast((node >> 12) & 0x0F); + return static_cast((node >> 12)& 0x0F); } /** @@ -1615,16 +1615,16 @@ inline ZyDisOpcodeTreeNodeType VDEGetOpcodeNodeType(ZyDisOpcodeTreeNode node) * @param node The node. * @return The value of the specified opcode tree node. */ -inline uint16_t VDEGetOpcodeNodeValue(ZyDisOpcodeTreeNode node) +inline uint16_t GetOpcodeNodeValue(OpcodeTreeNode node) { - return (node & 0x0FFF); + return (node& 0x0FFF); } /** * @brief Returns the root node of the opcode tree. * @return The root node of the opcode tree. */ -inline ZyDisOpcodeTreeNode VDEGetOpcodeTreeRoot() +inline OpcodeTreeNode GetOpcodeTreeRoot() { return 0x1000; } @@ -1635,53 +1635,53 @@ inline ZyDisOpcodeTreeNode VDEGetOpcodeTreeRoot() * @param index The index of the child node to retrieve. * @return The specified child node. */ -inline ZyDisOpcodeTreeNode VDEGetOpcodeTreeChild(ZyDisOpcodeTreeNode parent, uint16_t index) +inline OpcodeTreeNode GetOpcodeTreeChild(OpcodeTreeNode parent, uint16_t index) { using namespace Internal; - ZyDisOpcodeTreeNodeType nodeType = VDEGetOpcodeNodeType(parent); - uint16_t tableIndex = VDEGetOpcodeNodeValue(parent); + OpcodeTreeNodeType nodeType = GetOpcodeNodeType(parent); + uint16_t tableIndex = GetOpcodeNodeValue(parent); switch (nodeType) { - case ZyDisOpcodeTreeNodeType::TABLE: + case OpcodeTreeNodeType::TABLE: assert(index < 256); return optreeTable[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::MODRM_MOD: + case OpcodeTreeNodeType::MODRM_MOD: assert(index < 2); return optreeModrmMod[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::MODRM_REG: + case OpcodeTreeNodeType::MODRM_REG: assert(index < 8); return optreeModrmReg[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::MODRM_RM: + case OpcodeTreeNodeType::MODRM_RM: assert(index < 8); return optreeModrmRm[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::MANDATORY: + case OpcodeTreeNodeType::MANDATORY: assert(index < 4); return optreeMandatory[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::X87: + case OpcodeTreeNodeType::X87: assert(index < 64); return optreeX87[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::ADDRESS_SIZE: + case OpcodeTreeNodeType::ADDRESS_SIZE: assert(index < 3); return optreeAddressSize[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::OPERAND_SIZE: + case OpcodeTreeNodeType::OPERAND_SIZE: assert(index < 3); return optreeOperandSize[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::MODE: + case OpcodeTreeNodeType::MODE: assert(index < 2); return optreeMode[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::VENDOR: + case OpcodeTreeNodeType::VENDOR: assert(index < 3); return optreeVendor[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::AMD3DNOW: + case OpcodeTreeNodeType::AMD3DNOW: assert(index < 256); return optree3dnow[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::VEX: + case OpcodeTreeNodeType::VEX: assert(index < 16); return optreeVex[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::VEXW: + case OpcodeTreeNodeType::VEXW: assert(index < 2); return optreeVexW[tableIndex][index]; - case ZyDisOpcodeTreeNodeType::VEXL: + case OpcodeTreeNodeType::VEXL: assert(index < 2); return optreeVexL[tableIndex][index]; default: @@ -1695,10 +1695,10 @@ inline ZyDisOpcodeTreeNode VDEGetOpcodeTreeChild(ZyDisOpcodeTreeNode parent, uin * @param node The instruction definition node. * @return Pointer to the instruction definition. */ -inline const ZyDisInstructionDefinition* VDEGetInstructionDefinition(ZyDisOpcodeTreeNode node) +inline const InstructionDefinition* GetInstructionDefinition(OpcodeTreeNode node) { - assert(VDEGetOpcodeNodeType(node) == ZyDisOpcodeTreeNodeType::INSTRUCTION_DEFINITION); - return &instrDefinitions[node & 0x0FFF]; + assert(GetOpcodeNodeType(node) == OpcodeTreeNodeType::INSTRUCTION_DEFINITION); + return& instrDefinitions[node& 0x0FFF]; } /** @@ -1706,7 +1706,7 @@ inline const ZyDisInstructionDefinition* VDEGetInstructionDefinition(ZyDisOpcode * @param mnemonic The mnemonic. * @return The instruction mnemonic string. */ -inline const char* VDEGetInstructionMnemonicString(ZyDisInstructionMnemonic mnemonic) +inline const char* GetInstructionMnemonicString(InstructionMnemonic mnemonic) { return instrMnemonicStrings[static_cast(mnemonic)]; } @@ -1716,14 +1716,14 @@ inline const char* VDEGetInstructionMnemonicString(ZyDisInstructionMnemonic mnem * @param operandSize The defined operand size. * @return The the numeric value for the simple operand size definition. */ -inline uint16_t VDEGetSimpleOperandSize(ZyDisDefinedOperandSize operandSize) +inline uint16_t GetSimpleOperandSize(DefinedOperandSize operandSize) { static uint16_t operandSizes[8] = { 8, 16, 32, 64, 80, 12, 128, 256 }; uint16_t index = - static_cast(operandSize) - static_cast(ZyDisDefinedOperandSize::B); + static_cast(operandSize) - static_cast(DefinedOperandSize::B); assert(index < 8); return operandSizes[index]; } @@ -1733,9 +1733,9 @@ inline uint16_t VDEGetSimpleOperandSize(ZyDisDefinedOperandSize operandSize) * @param operandSize The defined operand size. * @return The memory-size part of the operand size definition. */ -inline ZyDisDefinedOperandSize VDEGetComplexOperandMemSize(ZyDisDefinedOperandSize operandSize) +inline DefinedOperandSize GetComplexOperandMemSize(DefinedOperandSize operandSize) { - return static_cast(static_cast(operandSize) & 0x0F); + return static_cast(static_cast(operandSize)& 0x0F); } /** @@ -1743,11 +1743,13 @@ inline ZyDisDefinedOperandSize VDEGetComplexOperandMemSize(ZyDisDefinedOperandSi * @param operandSize The defined operand size. * @return The register-size part of the operand size definition. */ -inline ZyDisDefinedOperandSize VDEGetComplexOperandRegSize(ZyDisDefinedOperandSize operandSize) +inline DefinedOperandSize GetComplexOperandRegSize(DefinedOperandSize operandSize) { - return static_cast((static_cast(operandSize) >> 4) & 0x0F); + return static_cast((static_cast(operandSize) >> 4)& 0x0F); } } } + +#endif /* _ZYDIS_OPCODETABLE_HPP_ */ diff --git a/Zydis/ZydisSymbolResolver.cpp b/Zydis/ZydisSymbolResolver.cpp new file mode 100644 index 0000000..92be232 --- /dev/null +++ b/Zydis/ZydisSymbolResolver.cpp @@ -0,0 +1,91 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#include "ZydisSymbolResolver.hpp" + +namespace Zydis +{ + +/* BaseSymbolResolver ====================================================================== */ + +BaseSymbolResolver::~BaseSymbolResolver() +{ + +} + +const char *BaseSymbolResolver::resolveSymbol(const InstructionInfo& info, + uint64_t address, uint64_t& offset) +{ + return nullptr; +} + +/* ExactSymbolResolver ===================================================================== */ + +ExactSymbolResolver::~ExactSymbolResolver() +{ + +} + +const char *ExactSymbolResolver::resolveSymbol(const InstructionInfo& info, + uint64_t address, uint64_t& offset) +{ + std::unordered_map::const_iterator iterator = m_symbolMap.find(address); + if (iterator != m_symbolMap.cend()) + { + offset = 0; + return iterator->second.c_str(); + } + return nullptr; +} + +bool ExactSymbolResolver::containsSymbol(uint64_t address) const +{ + std::unordered_map::const_iterator iterator = m_symbolMap.find(address); + return (iterator != m_symbolMap.end()); +} + +void ExactSymbolResolver::setSymbol(uint64_t address, const char *name) +{ + m_symbolMap[address].assign(name); +} + +void ExactSymbolResolver::removeSymbol(uint64_t address) +{ + m_symbolMap.erase(address); +} + +void ExactSymbolResolver::clear() +{ + m_symbolMap.clear(); +} + +/* ============================================================================================== */ + +} \ No newline at end of file diff --git a/Zydis/ZydisSymbolResolver.hpp b/Zydis/ZydisSymbolResolver.hpp new file mode 100644 index 0000000..b8bf0ca --- /dev/null +++ b/Zydis/ZydisSymbolResolver.hpp @@ -0,0 +1,119 @@ +/*************************************************************************************************** + + Zyan Disassembler Engine + Version 1.0 + + Remarks : Freeware, Copyright must be included + + Original Author : Florian Bernd + Modifications : 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 + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + +***************************************************************************************************/ + +#ifndef _ZYDIS_SYMBOLRESOLVER_HPP_ +#define _ZYDIS_SYMBOLRESOLVER_HPP_ + +#include +#include "ZydisTypes.hpp" + +namespace Zydis +{ + +/* BaseSymbolResolver =========================================================================== */ + +/** + * @brief Base class for all symbol resolver implementations. + */ +class BaseSymbolResolver +{ +public: + /** + * @brief Destructor. + */ + virtual ~BaseSymbolResolver(); +public: + /** + * @brief Resolves a symbol. + * @param info The instruction info. + * @param address The address. + * @param offset Reference to an unsigned 64 bit integer that receives an offset + * relative to the base address of the symbol. + * @return The name of the symbol, if the symbol was found, @c NULL if not. + */ + virtual const char *resolveSymbol(const InstructionInfo& info, uint64_t address, + uint64_t& offset); +}; + +/* ExactSymbolResolver ========================================================================== */ + +/** + * @brief Simple symbol resolver that only matches exact addresses. + */ +class ExactSymbolResolver : public BaseSymbolResolver +{ +private: + std::unordered_map m_symbolMap; +public: + /** + * @brief Destructor. + */ + ~ExactSymbolResolver() override; +public: + /** + * @brief Resolves a symbol. + * @param info The instruction info. + * @param address The address. + * @param offset Reference to an unsigned 64 bit integer that receives an offset + * relative to the base address of the symbol. + * @return The name of the symbol, if the symbol was found, @c NULL if not. + */ + const char* resolveSymbol(const InstructionInfo& info, uint64_t address, + uint64_t& offset) override; +public: + /** + * @brief Query if the given address is a known symbol. + * @param address The address. + * @return True if the address is known, false if not. + */ + bool containsSymbol(uint64_t address) const; + /** + * @brief Adds or changes a symbol. + * @param address The address. + * @param name The symbol name. + */ + void setSymbol(uint64_t address, const char *name); + /** + * @brief Removes the symbol described by address. This will invalidate all char pointers + * to the specific symbol name. + * @param address The address. + */ + void removeSymbol(uint64_t address); + /** + * @brief Clears the symbol tree. + */ + void clear(); +}; + +/* ============================================================================================== */ + +} + +#endif /* _ZYDIS_SYMBOLRESOLVER_HPP_ */ diff --git a/Bindings/Cpp/ZyDisDisassemblerTypes.hpp b/Zydis/ZydisTypes.hpp similarity index 92% rename from Bindings/Cpp/ZyDisDisassemblerTypes.hpp rename to Zydis/ZydisTypes.hpp index 257a4df..a63bc4d 100644 --- a/Bindings/Cpp/ZyDisDisassemblerTypes.hpp +++ b/Zydis/ZydisTypes.hpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 22. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,15 +26,19 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ -#pragma once +***************************************************************************************************/ + +#ifndef _ZYDIS_TYPES_HPP_ +#define _ZYDIS_TYPES_HPP_ #include -#include "ZyDisOpcodeTable.hpp" +#include "ZydisOpcodeTable.hpp" -namespace Verteron +namespace Zydis { +/* InstructionFlags ============================================================================= */ + /** * @brief Values that represent additional flags of a decoded instruction. */ @@ -125,10 +127,12 @@ enum InstructionFlags : uint32_t IF_ERROR_OPERAND = 0x01000000 }; +/* Register ===================================================================================== */ + /** * @brief Values that represent a cpu register. */ -enum class ZyDisRegister : uint16_t +enum class Register : uint16_t { NONE, /* 8 bit general purpose registers */ @@ -185,10 +189,12 @@ enum class ZyDisRegister : uint16_t RIP }; +/* OperandType ================================================================================== */ + /** * @brief Values that represent the type of a decoded operand. */ -enum class ZyDisOperandType : uint8_t +enum class OperandType : uint8_t { /** * @brief The operand is not used. @@ -220,10 +226,12 @@ enum class ZyDisOperandType : uint8_t CONSTANT }; +/* ZydisOperandAccessMode ============================================================================ */ + /** * @brief Values that represent the operand access mode. */ -enum class ZyDisOperandAccessMode : uint8_t +enum class OperandAccessMode : uint8_t { NA, /** @@ -240,15 +248,17 @@ enum class ZyDisOperandAccessMode : uint8_t READWRITE }; +/* OperandInfo ================================================================================== */ + /** * @brief This struct holds information about a decoded operand. */ -struct ZyDisOperandInfo +struct OperandInfo { /** * @brief The type of the operand. */ - ZyDisOperandType type; + OperandType type; /** * @brief The size of the operand. */ @@ -256,15 +266,15 @@ struct ZyDisOperandInfo /** * @brief The operand access mode. */ - ZyDisOperandAccessMode access_mode; + OperandAccessMode access_mode; /** * @brief The base register. */ - ZyDisRegister base; + Register base; /** * @brief The index register. */ - ZyDisRegister index; + Register index; /** * @brief The scale factor. */ @@ -297,10 +307,12 @@ struct ZyDisOperandInfo } lval; }; +/* InstructionInfo ============================================================================== */ + /** * @brief This struct holds information about a decoded instruction. */ -struct ZyDisInstructionInfo +struct InstructionInfo { /** * @brief The instruction flags. @@ -309,7 +321,7 @@ struct ZyDisInstructionInfo /** * @brief The instruction mnemonic. */ - ZyDisInstructionMnemonic mnemonic; + InstructionMnemonic mnemonic; /** * @brief The total length of the instruction. */ @@ -337,12 +349,12 @@ struct ZyDisInstructionInfo /** * @brief The decoded operands. */ - ZyDisOperandInfo operand[4]; + OperandInfo operand[4]; /** * @brief The segment register. This value will default to @c NONE, if no segment register * prefix is present. */ - ZyDisRegister segment; + Register segment; /** * @brief The rex prefix byte. */ @@ -512,7 +524,7 @@ struct ZyDisInstructionInfo /** * @brief The instruction definition. */ - const ZyDisInstructionDefinition *instrDefinition; + const InstructionDefinition* instrDefinition; /** * @brief The instruction address points to the current instruction (relative to the * initial instruction pointer). @@ -527,3 +539,5 @@ struct ZyDisInstructionInfo }; } + +#endif /* _ZYDIS_TYPES_HPP_ */ diff --git a/Bindings/Cpp/ZyDisDisassemblerUtils.cpp b/Zydis/ZydisUtils.cpp similarity index 66% rename from Bindings/Cpp/ZyDisDisassemblerUtils.cpp rename to Zydis/ZydisUtils.cpp index 2c7b61a..85d6c86 100644 --- a/Bindings/Cpp/ZyDisDisassemblerUtils.cpp +++ b/Zydis/ZydisUtils.cpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 30. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,47 +26,48 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ -#include "ZyDisDisassemblerUtils.hpp" +***************************************************************************************************/ + +#include "ZydisUtils.hpp" #include -namespace Verteron +namespace Zydis { - -uint64_t VDECalcAbsoluteTarget(const ZyDisInstructionInfo &info, const ZyDisOperandInfo &operand) + +uint64_t CalcAbsoluteTarget(const InstructionInfo& info, const OperandInfo& operand) { - assert((operand.type == ZyDisOperandType::REL_IMMEDIATE) || - ((operand.type == ZyDisOperandType::MEMORY) && (operand.base == ZyDisRegister::RIP))); + assert((operand.type == OperandType::REL_IMMEDIATE) || + ((operand.type == OperandType::MEMORY)&& (operand.base == Register::RIP))); uint64_t truncMask = 0xFFFFFFFFFFFFFFFFull; - if (!(info.flags & IF_DISASSEMBLER_MODE_64)) + if (!(info.flags& IF_DISASSEMBLER_MODE_64)) { truncMask >>= (64 - info.operand_mode); } uint16_t size = operand.size; - if ((operand.type == ZyDisOperandType::MEMORY) && (operand.base == ZyDisRegister::RIP)) + if ((operand.type == OperandType::MEMORY)&& (operand.base == Register::RIP)) { size = operand.offset; } switch (size) { case 8: - return (info.instrPointer + operand.lval.sbyte) & truncMask; + return (info.instrPointer + operand.lval.sbyte)& truncMask; case 16: { - uint32_t delta = operand.lval.sword & truncMask; + uint32_t delta = operand.lval.sword& truncMask; if ((info.instrPointer + delta) > 0xFFFF) { - return (info.instrPointer & 0xF0000) + ((info.instrPointer + delta) & 0xFFFF); + return (info.instrPointer& 0xF0000) + ((info.instrPointer + delta)& 0xFFFF); } return info.instrPointer + delta; } case 32: - return (info.instrPointer + operand.lval.sdword) & truncMask; + return (info.instrPointer + operand.lval.sdword)& truncMask; default: assert(0); } return 0; } -} +} \ No newline at end of file diff --git a/Bindings/Cpp/ZyDisDisassemblerUtils.hpp b/Zydis/ZydisUtils.hpp similarity index 81% rename from Bindings/Cpp/ZyDisDisassemblerUtils.hpp rename to Zydis/ZydisUtils.hpp index 6068ade..81c5398 100644 --- a/Bindings/Cpp/ZyDisDisassemblerUtils.hpp +++ b/Zydis/ZydisUtils.hpp @@ -1,14 +1,12 @@ -/************************************************************************************************** +/*************************************************************************************************** - Verteron Disassembler Engine + Zyan Disassembler Engine Version 1.0 Remarks : Freeware, Copyright must be included Original Author : Florian Bernd - Modifications : - - Last change : 30. October 2014 + Modifications : 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 @@ -16,10 +14,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -28,13 +26,15 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. -**************************************************************************************************/ -#pragma once +***************************************************************************************************/ + +#ifndef _ZYDIS_UTILS_HPP_ +#define _ZYDIS_UTILS_HPP_ #include -#include "ZyDisDisassemblerTypes.hpp" +#include "ZydisTypes.hpp" -namespace Verteron +namespace Zydis { /** @@ -43,6 +43,8 @@ namespace Verteron * @param operand The operand. * @return The absolute target address. */ -uint64_t VDECalcAbsoluteTarget(const ZyDisInstructionInfo &info, const ZyDisOperandInfo &operand); +uint64_t CalcAbsoluteTarget(const InstructionInfo& info, const OperandInfo& operand); } + +#endif /* _ZYDIS_UTILS_HPP_ */