@ -205,17 +205,18 @@ namespace vm::transform
template < class T >
inline std : : map < zydis_mnemonic_t , transform_t < T > > transforms = {
{ ZYDIS_MNEMONIC_ADD , _add < T > } , { ZYDIS_MNEMONIC_XOR , _xor < T > } , { ZYDIS_MNEMONIC_BSWAP , _bswap < T > } ,
{ ZYDIS_MNEMONIC_SUB , _sub < T > } , { ZYDIS_MNEMONIC_NEG , _neg < T > } , { ZYDIS_MNEMONIC_NOT , _not < T > } ,
{ ZYDIS_MNEMONIC_ROR , _ror < T > } , { ZYDIS_MNEMONIC_ROL , _rol < T > } , { ZYDIS_MNEMONIC_INC , _inc < T > } ,
{ ZYDIS_MNEMONIC_DEC , _dec < T > } } ;
{ ZYDIS_MNEMONIC_ADD , _add < T > } , { ZYDIS_MNEMONIC_XOR , _xor < T > } , { ZYDIS_MNEMONIC_BSWAP , _bswap < T > } ,
{ ZYDIS_MNEMONIC_SUB , _sub < T > } , { ZYDIS_MNEMONIC_NEG , _neg < T > } , { ZYDIS_MNEMONIC_NOT , _not < T > } ,
{ ZYDIS_MNEMONIC_ROR , _ror < T > } , { ZYDIS_MNEMONIC_ROL , _rol < T > } , { ZYDIS_MNEMONIC_INC , _inc < T > } ,
{ ZYDIS_MNEMONIC_DEC , _dec < T > } , { ZYDIS_MNEMONIC_XCHG , _bswap < T > } } ;
inline std : : map < zydis_mnemonic_t , zydis_mnemonic_t > inverse = {
{ ZYDIS_MNEMONIC_ADD , ZYDIS_MNEMONIC_SUB } , { ZYDIS_MNEMONIC_XOR , ZYDIS_MNEMONIC_XOR } ,
{ ZYDIS_MNEMONIC_BSWAP , ZYDIS_MNEMONIC_BSWAP } , { ZYDIS_MNEMONIC_SUB , ZYDIS_MNEMONIC_ADD } ,
{ ZYDIS_MNEMONIC_NEG , ZYDIS_MNEMONIC_NEG } , { ZYDIS_MNEMONIC_NOT , ZYDIS_MNEMONIC_NOT } ,
{ ZYDIS_MNEMONIC_ROR , ZYDIS_MNEMONIC_ROL } , { ZYDIS_MNEMONIC_ROL , ZYDIS_MNEMONIC_ROR } ,
{ ZYDIS_MNEMONIC_INC , ZYDIS_MNEMONIC_DEC } , { ZYDIS_MNEMONIC_DEC , ZYDIS_MNEMONIC_INC } } ;
{ ZYDIS_MNEMONIC_INC , ZYDIS_MNEMONIC_DEC } , { ZYDIS_MNEMONIC_DEC , ZYDIS_MNEMONIC_INC } ,
{ ZYDIS_MNEMONIC_XCHG , ZYDIS_MNEMONIC_XCHG } } ;
/// <summary>
/// determines if the given mnemonic is a valid transformation...