You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vmprofiler/doxygen/html/namespacevm_1_1transform.html

1233 lines
65 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>VMProfiler: vm::transform Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="icon.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">VMProfiler
&#160;<span id="projectnumber">v1.8</span>
</div>
<div id="projectbrief">vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacevm.html">vm</a></li><li class="navelem"><a class="el" href="namespacevm_1_1transform.html">transform</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">vm::transform Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a67d5906292cf0f9aa61364e0846fa1e6"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a67d5906292cf0f9aa61364e0846fa1e6"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a67d5906292cf0f9aa61364e0846fa1e6">transform_t</a> = std::function&lt; T(T, T) &gt;</td></tr>
<tr class="memdesc:a67d5906292cf0f9aa61364e0846fa1e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">transform function, such as ADD, SUB, BSWAP... etc... <a href="namespacevm_1_1transform.html#a67d5906292cf0f9aa61364e0846fa1e6">More...</a><br /></td></tr>
<tr class="separator:a67d5906292cf0f9aa61364e0846fa1e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3bd71c380a50beece9341287b7cc025"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025">map_t</a> = std::map&lt; <a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384">transform::type</a>, <a class="el" href="vmutils_8hpp.html#ad180fbf8cef52662febedec0f54b6188">zydis_decoded_instr_t</a> &gt;</td></tr>
<tr class="memdesc:af3bd71c380a50beece9341287b7cc025"><td class="mdescLeft">&#160;</td><td class="mdescRight">map of transform type to zydis decoded instruction of the transform... <a href="namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025">More...</a><br /></td></tr>
<tr class="separator:af3bd71c380a50beece9341287b7cc025"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:aa62ffeae2f546b741c00b0c53776b384"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384">type</a> { <br />
&#160;&#160;<a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384ab30d1c29c4a3eff9ff46c9c9ff3ac330">generic0</a>
, <a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a2b4d8b33b65a6ec012bfee034f0eb535">rolling_key</a>
, <a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a5b034533010375fbc25ce97ffcdd36bc">generic1</a>
, <a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a0a454dce1e3512aace652c12ba85ae83">generic2</a>
, <br />
&#160;&#160;<a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a167e51d9fbde7c7356bb71cd04f61beb">generic3</a>
, <a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384a1033ce2eeb9b85e88eacb326208e9e4b">update_key</a>
<br />
}</td></tr>
<tr class="memdesc:aa62ffeae2f546b741c00b0c53776b384"><td class="mdescLeft">&#160;</td><td class="mdescRight">type of transformation... <a href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384">More...</a><br /></td></tr>
<tr class="separator:aa62ffeae2f546b741c00b0c53776b384"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a95343da0cff7223109113b65ff4211b6"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a95343da0cff7223109113b65ff4211b6"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a95343da0cff7223109113b65ff4211b6">__ROL__</a> (T value, int count)</td></tr>
<tr class="memdesc:a95343da0cff7223109113b65ff4211b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate left template function take from IDA SDK... <a href="namespacevm_1_1transform.html#a95343da0cff7223109113b65ff4211b6">More...</a><br /></td></tr>
<tr class="separator:a95343da0cff7223109113b65ff4211b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f914dc341284423d3cf0bc83fbbc6d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0">u8</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a2f914dc341284423d3cf0bc83fbbc6d4">__ROL1__</a> (<a class="el" href="vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0">u8</a> value, int count)</td></tr>
<tr class="memdesc:a2f914dc341284423d3cf0bc83fbbc6d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate left a one byte value... <a href="namespacevm_1_1transform.html#a2f914dc341284423d3cf0bc83fbbc6d4">More...</a><br /></td></tr>
<tr class="separator:a2f914dc341284423d3cf0bc83fbbc6d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af597f7ca1a317d800345ba0ce3139145"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99">u16</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#af597f7ca1a317d800345ba0ce3139145">__ROL2__</a> (<a class="el" href="vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99">u16</a> value, int count)</td></tr>
<tr class="memdesc:af597f7ca1a317d800345ba0ce3139145"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate left a two byte value... <a href="namespacevm_1_1transform.html#af597f7ca1a317d800345ba0ce3139145">More...</a><br /></td></tr>
<tr class="separator:af597f7ca1a317d800345ba0ce3139145"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5845d259b97aa94ad627cb323f79bc43"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2">u32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a5845d259b97aa94ad627cb323f79bc43">__ROL4__</a> (<a class="el" href="vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2">u32</a> value, int count)</td></tr>
<tr class="memdesc:a5845d259b97aa94ad627cb323f79bc43"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate left a four byte value... <a href="namespacevm_1_1transform.html#a5845d259b97aa94ad627cb323f79bc43">More...</a><br /></td></tr>
<tr class="separator:a5845d259b97aa94ad627cb323f79bc43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adeb404f2e3208d35eae516af9d979814"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6">u64</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#adeb404f2e3208d35eae516af9d979814">__ROL8__</a> (<a class="el" href="vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6">u64</a> value, int count)</td></tr>
<tr class="memdesc:adeb404f2e3208d35eae516af9d979814"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate left an eight byte value... <a href="namespacevm_1_1transform.html#adeb404f2e3208d35eae516af9d979814">More...</a><br /></td></tr>
<tr class="separator:adeb404f2e3208d35eae516af9d979814"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22a3bc4437a3fe171d16c08e26bd8098"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0">u8</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a22a3bc4437a3fe171d16c08e26bd8098">__ROR1__</a> (<a class="el" href="vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0">u8</a> value, int count)</td></tr>
<tr class="memdesc:a22a3bc4437a3fe171d16c08e26bd8098"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate right a one byte value... <a href="namespacevm_1_1transform.html#a22a3bc4437a3fe171d16c08e26bd8098">More...</a><br /></td></tr>
<tr class="separator:a22a3bc4437a3fe171d16c08e26bd8098"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae461230c2fd31540a32f7b7d439c00cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99">u16</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#ae461230c2fd31540a32f7b7d439c00cc">__ROR2__</a> (<a class="el" href="vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99">u16</a> value, int count)</td></tr>
<tr class="memdesc:ae461230c2fd31540a32f7b7d439c00cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate right a two byte value... <a href="namespacevm_1_1transform.html#ae461230c2fd31540a32f7b7d439c00cc">More...</a><br /></td></tr>
<tr class="separator:ae461230c2fd31540a32f7b7d439c00cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84ceeae51a16def42530b6ce2bd52d23"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2">u32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a84ceeae51a16def42530b6ce2bd52d23">__ROR4__</a> (<a class="el" href="vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2">u32</a> value, int count)</td></tr>
<tr class="memdesc:a84ceeae51a16def42530b6ce2bd52d23"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate right a four byte value... <a href="namespacevm_1_1transform.html#a84ceeae51a16def42530b6ce2bd52d23">More...</a><br /></td></tr>
<tr class="separator:a84ceeae51a16def42530b6ce2bd52d23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a109ae3f6a76f60fafedabde509594f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6">u64</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a8a109ae3f6a76f60fafedabde509594f">__ROR8__</a> (<a class="el" href="vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6">u64</a> value, int count)</td></tr>
<tr class="memdesc:a8a109ae3f6a76f60fafedabde509594f"><td class="mdescLeft">&#160;</td><td class="mdescRight">rotate right an eight byte value... <a href="namespacevm_1_1transform.html#a8a109ae3f6a76f60fafedabde509594f">More...</a><br /></td></tr>
<tr class="separator:a8a109ae3f6a76f60fafedabde509594f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa14dcd108c7800a9763255873e474988"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#aa14dcd108c7800a9763255873e474988">valid</a> (<a class="el" href="vmutils_8hpp.html#a910e81858860c70b9744949887567148">zydis_mnemonic_t</a> op)</td></tr>
<tr class="memdesc:aa14dcd108c7800a9763255873e474988"><td class="mdescLeft">&#160;</td><td class="mdescRight">determines if the given mnemonic is a valid transformation... <a href="namespacevm_1_1transform.html#aa14dcd108c7800a9763255873e474988">More...</a><br /></td></tr>
<tr class="separator:aa14dcd108c7800a9763255873e474988"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a362be5277a6670ab1e2715673f759ae7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a362be5277a6670ab1e2715673f759ae7">inverse_transforms</a> (<a class="el" href="namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025">transform::map_t</a> &amp;<a class="el" href="namespacevm_1_1transform.html#ac5fcbe5497bc1e136caf781b61fbd8f1">transforms</a>, <a class="el" href="namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025">transform::map_t</a> &amp;<a class="el" href="namespacevm_1_1transform.html#a694675c95aced2c9e406c26d0313ba9a">inverse</a>)</td></tr>
<tr class="memdesc:a362be5277a6670ab1e2715673f759ae7"><td class="mdescLeft">&#160;</td><td class="mdescRight">inverse operand decryption transformations... <a href="namespacevm_1_1transform.html#a362be5277a6670ab1e2715673f759ae7">More...</a><br /></td></tr>
<tr class="separator:a362be5277a6670ab1e2715673f759ae7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaaaa068fcec7c9d5f627dd2d32db0c9a"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#aaaaa068fcec7c9d5f627dd2d32db0c9a">inverse_transforms</a> (std::vector&lt; <a class="el" href="vmutils_8hpp.html#ad180fbf8cef52662febedec0f54b6188">zydis_decoded_instr_t</a> &gt; &amp;instrs) -&gt; bool</td></tr>
<tr class="memdesc:aaaaa068fcec7c9d5f627dd2d32db0c9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">inverse transformations given a vector of them... <a href="namespacevm_1_1transform.html#aaaaa068fcec7c9d5f627dd2d32db0c9a">More...</a><br /></td></tr>
<tr class="separator:aaaaa068fcec7c9d5f627dd2d32db0c9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f111b0cc38dd9e03f6f5eed3fa824f7"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a4f111b0cc38dd9e03f6f5eed3fa824f7">apply</a> (std::uint8_t bitsize, ZydisMnemonic op, std::uint64_t a, std::uint64_t b) -&gt; std::uint64_t</td></tr>
<tr class="separator:a4f111b0cc38dd9e03f6f5eed3fa824f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c79900f35ec03b9f38b239e4678788c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a9c79900f35ec03b9f38b239e4678788c">has_imm</a> (const <a class="el" href="vmutils_8hpp.html#ad180fbf8cef52662febedec0f54b6188">zydis_decoded_instr_t</a> *instr)</td></tr>
<tr class="memdesc:a9c79900f35ec03b9f38b239e4678788c"><td class="mdescLeft">&#160;</td><td class="mdescRight">determines if a given decoded instruction has a second operand that is an immediate value... <a href="namespacevm_1_1transform.html#a9c79900f35ec03b9f38b239e4678788c">More...</a><br /></td></tr>
<tr class="separator:a9c79900f35ec03b9f38b239e4678788c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a688d8184e8ff721cbe284891a79649be"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a688d8184e8ff721cbe284891a79649be"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a688d8184e8ff721cbe284891a79649be">_bswap</a></td></tr>
<tr class="separator:a688d8184e8ff721cbe284891a79649be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a281896b8949d10bf13fe43c6467766ef"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a281896b8949d10bf13fe43c6467766ef"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a281896b8949d10bf13fe43c6467766ef">_add</a> = []( T a, T b ) -&gt; T { return a + b; }</td></tr>
<tr class="separator:a281896b8949d10bf13fe43c6467766ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ee7a00ae0c62ad5db5455d16ac64491"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a4ee7a00ae0c62ad5db5455d16ac64491"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a4ee7a00ae0c62ad5db5455d16ac64491">_xor</a> = []( T a, T b ) -&gt; T { return a ^ b; }</td></tr>
<tr class="separator:a4ee7a00ae0c62ad5db5455d16ac64491"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91ad3d31de52b5178cbf433259b887d9"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a91ad3d31de52b5178cbf433259b887d9"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a91ad3d31de52b5178cbf433259b887d9">_sub</a> = []( T a, T b ) -&gt; T { return a - b; }</td></tr>
<tr class="separator:a91ad3d31de52b5178cbf433259b887d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a734672243d8d96890e13da03edb148ba"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a734672243d8d96890e13da03edb148ba"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a734672243d8d96890e13da03edb148ba">_neg</a> = []( T a, T b ) -&gt; T { return a * -1; }</td></tr>
<tr class="separator:a734672243d8d96890e13da03edb148ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef95e6402789d702d4a0dceb09c58fdf"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:aef95e6402789d702d4a0dceb09c58fdf"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#aef95e6402789d702d4a0dceb09c58fdf">_not</a> = []( T a, T b ) -&gt; T { return ~a; }</td></tr>
<tr class="separator:aef95e6402789d702d4a0dceb09c58fdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2a83f6cb174fe5a090d38f4b426865a"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:ab2a83f6cb174fe5a090d38f4b426865a"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#ab2a83f6cb174fe5a090d38f4b426865a">_ror</a></td></tr>
<tr class="separator:ab2a83f6cb174fe5a090d38f4b426865a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95949473ea57a6a4b310b3701ddbc646"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a95949473ea57a6a4b310b3701ddbc646"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a95949473ea57a6a4b310b3701ddbc646">_rol</a></td></tr>
<tr class="separator:a95949473ea57a6a4b310b3701ddbc646"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a127fda1c7440c539496a2265a089ed25"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a127fda1c7440c539496a2265a089ed25"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a127fda1c7440c539496a2265a089ed25">_inc</a> = []( T a, T b ) -&gt; T { return a + 1; }</td></tr>
<tr class="separator:a127fda1c7440c539496a2265a089ed25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15aa399b06335fdc06b738f5053eec27"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a15aa399b06335fdc06b738f5053eec27"><td class="memTemplItemLeft" align="right" valign="top">const auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a15aa399b06335fdc06b738f5053eec27">_dec</a> = []( T a, T b ) -&gt; T { return a - 1; }</td></tr>
<tr class="separator:a15aa399b06335fdc06b738f5053eec27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5fcbe5497bc1e136caf781b61fbd8f1"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:ac5fcbe5497bc1e136caf781b61fbd8f1"><td class="memTemplItemLeft" align="right" valign="top">std::map&lt; <a class="el" href="vmutils_8hpp.html#a910e81858860c70b9744949887567148">zydis_mnemonic_t</a>, <a class="el" href="namespacevm_1_1transform.html#a67d5906292cf0f9aa61364e0846fa1e6">transform_t</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#ac5fcbe5497bc1e136caf781b61fbd8f1">transforms</a></td></tr>
<tr class="separator:ac5fcbe5497bc1e136caf781b61fbd8f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a694675c95aced2c9e406c26d0313ba9a"><td class="memItemLeft" align="right" valign="top">std::map&lt; <a class="el" href="vmutils_8hpp.html#a910e81858860c70b9744949887567148">zydis_mnemonic_t</a>, <a class="el" href="vmutils_8hpp.html#a910e81858860c70b9744949887567148">zydis_mnemonic_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevm_1_1transform.html#a694675c95aced2c9e406c26d0313ba9a">inverse</a></td></tr>
<tr class="separator:a694675c95aced2c9e406c26d0313ba9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="af3bd71c380a50beece9341287b7cc025"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3bd71c380a50beece9341287b7cc025">&#9670;&nbsp;</a></span>map_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025">vm::transform::map_t</a> = typedef std::map&lt; <a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384">transform::type</a>, <a class="el" href="vmutils_8hpp.html#ad180fbf8cef52662febedec0f54b6188">zydis_decoded_instr_t</a> &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p>map of transform type to zydis decoded instruction of the transform... </p>
</div>
</div>
<a id="a67d5906292cf0f9aa61364e0846fa1e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67d5906292cf0f9aa61364e0846fa1e6">&#9670;&nbsp;</a></span>transform_t</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="memname">
<tr>
<td class="memname">using <a class="el" href="namespacevm_1_1transform.html#a67d5906292cf0f9aa61364e0846fa1e6">vm::transform::transform_t</a> = typedef std::function&lt; T( T, T ) &gt;</td>
</tr>
</table>
</div><div class="memdoc">
<p>transform function, such as ADD, SUB, BSWAP... etc... </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>returns the transform result...</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="aa62ffeae2f546b741c00b0c53776b384"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa62ffeae2f546b741c00b0c53776b384">&#9670;&nbsp;</a></span>type</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="namespacevm_1_1transform.html#aa62ffeae2f546b741c00b0c53776b384">vm::transform::type</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>type of transformation... </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa62ffeae2f546b741c00b0c53776b384ab30d1c29c4a3eff9ff46c9c9ff3ac330"></a>generic0&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa62ffeae2f546b741c00b0c53776b384a2b4d8b33b65a6ec012bfee034f0eb535"></a>rolling_key&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa62ffeae2f546b741c00b0c53776b384a5b034533010375fbc25ce97ffcdd36bc"></a>generic1&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa62ffeae2f546b741c00b0c53776b384a0a454dce1e3512aace652c12ba85ae83"></a>generic2&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa62ffeae2f546b741c00b0c53776b384a167e51d9fbde7c7356bb71cd04f61beb"></a>generic3&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="aa62ffeae2f546b741c00b0c53776b384a1033ce2eeb9b85e88eacb326208e9e4b"></a>update_key&#160;</td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a2f914dc341284423d3cf0bc83fbbc6d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f914dc341284423d3cf0bc83fbbc6d4">&#9670;&nbsp;</a></span>__ROL1__()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0">u8</a> vm::transform::__ROL1__ </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0">u8</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate left a one byte value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>byte value</td></tr>
<tr><td class="paramname">count</td><td>number of bits to rotate</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>return rotated value...</dd></dl>
</div>
</div>
<a id="af597f7ca1a317d800345ba0ce3139145"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af597f7ca1a317d800345ba0ce3139145">&#9670;&nbsp;</a></span>__ROL2__()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99">u16</a> vm::transform::__ROL2__ </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99">u16</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate left a two byte value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>two byte value to rotate...</td></tr>
<tr><td class="paramname">count</td><td>number of bits to rotate...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>return rotated value...</dd></dl>
</div>
</div>
<a id="a5845d259b97aa94ad627cb323f79bc43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5845d259b97aa94ad627cb323f79bc43">&#9670;&nbsp;</a></span>__ROL4__()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2">u32</a> vm::transform::__ROL4__ </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2">u32</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate left a four byte value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>four byte value to rotate...</td></tr>
<tr><td class="paramname">count</td><td>number of bits to shift...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>return rotated value...</dd></dl>
</div>
</div>
<a id="adeb404f2e3208d35eae516af9d979814"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adeb404f2e3208d35eae516af9d979814">&#9670;&nbsp;</a></span>__ROL8__()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6">u64</a> vm::transform::__ROL8__ </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6">u64</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate left an eight byte value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>eight byte value...</td></tr>
<tr><td class="paramname">count</td><td>number of bits to shift...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>return rotated value...</dd></dl>
</div>
</div>
<a id="a95343da0cff7223109113b65ff4211b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95343da0cff7223109113b65ff4211b6">&#9670;&nbsp;</a></span>__ROL__()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">T vm::transform::__ROL__ </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate left template function take from IDA SDK... </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>type of data to rotate left...</td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>value to rotate left</td></tr>
<tr><td class="paramname">count</td><td>number of bits to rotate left...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns the rotated value...</dd></dl>
</div>
</div>
<a id="a22a3bc4437a3fe171d16c08e26bd8098"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22a3bc4437a3fe171d16c08e26bd8098">&#9670;&nbsp;</a></span>__ROR1__()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0">u8</a> vm::transform::__ROR1__ </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#ad24825e11b71d87e40f5c0e88dd980a0">u8</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate right a one byte value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>one byte value...</td></tr>
<tr><td class="paramname">count</td><td>number of bits to shift...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>return rotated value...</dd></dl>
</div>
</div>
<a id="ae461230c2fd31540a32f7b7d439c00cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae461230c2fd31540a32f7b7d439c00cc">&#9670;&nbsp;</a></span>__ROR2__()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99">u16</a> vm::transform::__ROR2__ </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#a78c47e7d1e6386136297f10fa86b5f99">u16</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate right a two byte value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>two byte value to rotate...</td></tr>
<tr><td class="paramname">count</td><td>number of bits to shift...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
</div>
</div>
<a id="a84ceeae51a16def42530b6ce2bd52d23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84ceeae51a16def42530b6ce2bd52d23">&#9670;&nbsp;</a></span>__ROR4__()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2">u32</a> vm::transform::__ROR4__ </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#a5b58b50033aff6031759d9708b5156f2">u32</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate right a four byte value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>four byte value to rotate...</td></tr>
<tr><td class="paramname">count</td><td>number of bits to rotate...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>return rotated value...</dd></dl>
</div>
</div>
<a id="a8a109ae3f6a76f60fafedabde509594f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a109ae3f6a76f60fafedabde509594f">&#9670;&nbsp;</a></span>__ROR8__()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6">u64</a> vm::transform::__ROR8__ </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#a4870a1025a59df53c952b95ac2c85bf6">u64</a>&#160;</td>
<td class="paramname"><em>value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>rotate right an eight byte value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>eight byte value</td></tr>
<tr><td class="paramname">count</td><td>number of bits to rotate...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>return rotated value...</dd></dl>
</div>
</div>
<a id="a4f111b0cc38dd9e03f6f5eed3fa824f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f111b0cc38dd9e03f6f5eed3fa824f7">&#9670;&nbsp;</a></span>apply()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto vm::transform::apply </td>
<td>(</td>
<td class="paramtype">std::uint8_t&#160;</td>
<td class="paramname"><em>bitsize</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ZydisMnemonic&#160;</td>
<td class="paramname"><em>op</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::uint64_t&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::uint64_t&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> -&gt; std::uint64_t
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9c79900f35ec03b9f38b239e4678788c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c79900f35ec03b9f38b239e4678788c">&#9670;&nbsp;</a></span>has_imm()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool vm::transform::has_imm </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="vmutils_8hpp.html#ad180fbf8cef52662febedec0f54b6188">zydis_decoded_instr_t</a> *&#160;</td>
<td class="paramname"><em>instr</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>determines if a given decoded instruction has a second operand that is an immediate value... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">instr</td><td>pointer to a decoded instruction...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns true if the second operand is of type immediate...</dd></dl>
</div>
</div>
<a id="aaaaa068fcec7c9d5f627dd2d32db0c9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaaaa068fcec7c9d5f627dd2d32db0c9a">&#9670;&nbsp;</a></span>inverse_transforms() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">auto vm::transform::inverse_transforms </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="vmutils_8hpp.html#ad180fbf8cef52662febedec0f54b6188">zydis_decoded_instr_t</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>instrs</em></td><td>)</td>
<td> -&gt; bool
</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>inverse transformations given a vector of them... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">instrs</td><td>reference to a vector of transformations...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns true if all transformations were inversed...</dd></dl>
</div>
</div>
<a id="a362be5277a6670ab1e2715673f759ae7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a362be5277a6670ab1e2715673f759ae7">&#9670;&nbsp;</a></span>inverse_transforms() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void vm::transform::inverse_transforms </td>
<td>(</td>
<td class="paramtype"><a class="el" href="namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025">transform::map_t</a> &amp;&#160;</td>
<td class="paramname"><em>transforms</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacevm_1_1transform.html#af3bd71c380a50beece9341287b7cc025">transform::map_t</a> &amp;&#160;</td>
<td class="paramname"><em>inverse</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>inverse operand decryption transformations... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">transforms</td><td>reference to the transformations to be inversed...</td></tr>
<tr><td class="paramname">inverse</td><td>reference to the resulting inversed transformations...</td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa14dcd108c7800a9763255873e474988"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa14dcd108c7800a9763255873e474988">&#9670;&nbsp;</a></span>valid()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool vm::transform::valid </td>
<td>(</td>
<td class="paramtype"><a class="el" href="vmutils_8hpp.html#a910e81858860c70b9744949887567148">zydis_mnemonic_t</a>&#160;</td>
<td class="paramname"><em>op</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>determines if the given mnemonic is a valid transformation... </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">op</td><td>mnemonic of the native instruction...</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>returns true if the mnemonic is a transformation...</dd></dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a281896b8949d10bf13fe43c6467766ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a281896b8949d10bf13fe43c6467766ef">&#9670;&nbsp;</a></span>_add</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_add = []( T a, T b ) -&gt; T { return a + b; }</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a688d8184e8ff721cbe284891a79649be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a688d8184e8ff721cbe284891a79649be">&#9670;&nbsp;</a></span>_bswap</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_bswap</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= []( T a, T b ) -&gt; T {</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint64_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> _byteswap_uint64( a );</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint32_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> _byteswap_ulong( a );</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint16_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> _byteswap_ushort( a );</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">throw</span> std::invalid_argument( <span class="stringliteral">&quot;invalid type size...&quot;</span> );</div>
<div class="line"> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a15aa399b06335fdc06b738f5053eec27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15aa399b06335fdc06b738f5053eec27">&#9670;&nbsp;</a></span>_dec</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_dec = []( T a, T b ) -&gt; T { return a - 1; }</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a127fda1c7440c539496a2265a089ed25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a127fda1c7440c539496a2265a089ed25">&#9670;&nbsp;</a></span>_inc</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_inc = []( T a, T b ) -&gt; T { return a + 1; }</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a734672243d8d96890e13da03edb148ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a734672243d8d96890e13da03edb148ba">&#9670;&nbsp;</a></span>_neg</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_neg = []( T a, T b ) -&gt; T { return a * -1; }</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aef95e6402789d702d4a0dceb09c58fdf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef95e6402789d702d4a0dceb09c58fdf">&#9670;&nbsp;</a></span>_not</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_not = []( T a, T b ) -&gt; T { return ~a; }</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a95949473ea57a6a4b310b3701ddbc646"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95949473ea57a6a4b310b3701ddbc646">&#9670;&nbsp;</a></span>_rol</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_rol</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= []( T a, T b ) -&gt; T {</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint64_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> <a class="code" href="namespacevm_1_1transform.html#adeb404f2e3208d35eae516af9d979814">__ROL8__</a>( a, b );</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint32_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> <a class="code" href="namespacevm_1_1transform.html#a5845d259b97aa94ad627cb323f79bc43">__ROL4__</a>( a, b );</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint16_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> <a class="code" href="namespacevm_1_1transform.html#af597f7ca1a317d800345ba0ce3139145">__ROL2__</a>( a, b );</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint8_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> <a class="code" href="namespacevm_1_1transform.html#a2f914dc341284423d3cf0bc83fbbc6d4">__ROL1__</a>( a, b );</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">throw</span> std::invalid_argument( <span class="stringliteral">&quot;invalid type size...&quot;</span> );</div>
<div class="line"> }</div>
<div class="ttc" id="anamespacevm_1_1transform_html_a2f914dc341284423d3cf0bc83fbbc6d4"><div class="ttname"><a href="namespacevm_1_1transform.html#a2f914dc341284423d3cf0bc83fbbc6d4">vm::transform::__ROL1__</a></div><div class="ttdeci">u8 __ROL1__(u8 value, int count)</div><div class="ttdoc">rotate left a one byte value...</div><div class="ttdef"><b>Definition:</b> transform.hpp:46</div></div>
<div class="ttc" id="anamespacevm_1_1transform_html_a5845d259b97aa94ad627cb323f79bc43"><div class="ttname"><a href="namespacevm_1_1transform.html#a5845d259b97aa94ad627cb323f79bc43">vm::transform::__ROL4__</a></div><div class="ttdeci">u32 __ROL4__(u32 value, int count)</div><div class="ttdoc">rotate left a four byte value...</div><div class="ttdef"><b>Definition:</b> transform.hpp:68</div></div>
<div class="ttc" id="anamespacevm_1_1transform_html_adeb404f2e3208d35eae516af9d979814"><div class="ttname"><a href="namespacevm_1_1transform.html#adeb404f2e3208d35eae516af9d979814">vm::transform::__ROL8__</a></div><div class="ttdeci">u64 __ROL8__(u64 value, int count)</div><div class="ttdoc">rotate left an eight byte value...</div><div class="ttdef"><b>Definition:</b> transform.hpp:79</div></div>
<div class="ttc" id="anamespacevm_1_1transform_html_af597f7ca1a317d800345ba0ce3139145"><div class="ttname"><a href="namespacevm_1_1transform.html#af597f7ca1a317d800345ba0ce3139145">vm::transform::__ROL2__</a></div><div class="ttdeci">u16 __ROL2__(u16 value, int count)</div><div class="ttdoc">rotate left a two byte value...</div><div class="ttdef"><b>Definition:</b> transform.hpp:57</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab2a83f6cb174fe5a090d38f4b426865a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2a83f6cb174fe5a090d38f4b426865a">&#9670;&nbsp;</a></span>_ror</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_ror</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= []( T a, T b ) -&gt; T {</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint64_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> <a class="code" href="namespacevm_1_1transform.html#a8a109ae3f6a76f60fafedabde509594f">__ROR8__</a>( a, b );</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint32_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> <a class="code" href="namespacevm_1_1transform.html#a84ceeae51a16def42530b6ce2bd52d23">__ROR4__</a>( a, b );</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint16_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> <a class="code" href="namespacevm_1_1transform.html#ae461230c2fd31540a32f7b7d439c00cc">__ROR2__</a>( a, b );</div>
<div class="line"> <span class="keywordflow">if</span> constexpr ( std::is_same_v&lt; T, std::uint8_t &gt; )</div>
<div class="line"> <span class="keywordflow">return</span> <a class="code" href="namespacevm_1_1transform.html#a22a3bc4437a3fe171d16c08e26bd8098">__ROR1__</a>( a, b );</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">throw</span> std::invalid_argument( <span class="stringliteral">&quot;invalid type size...&quot;</span> );</div>
<div class="line"> }</div>
<div class="ttc" id="anamespacevm_1_1transform_html_a22a3bc4437a3fe171d16c08e26bd8098"><div class="ttname"><a href="namespacevm_1_1transform.html#a22a3bc4437a3fe171d16c08e26bd8098">vm::transform::__ROR1__</a></div><div class="ttdeci">u8 __ROR1__(u8 value, int count)</div><div class="ttdoc">rotate right a one byte value...</div><div class="ttdef"><b>Definition:</b> transform.hpp:90</div></div>
<div class="ttc" id="anamespacevm_1_1transform_html_a84ceeae51a16def42530b6ce2bd52d23"><div class="ttname"><a href="namespacevm_1_1transform.html#a84ceeae51a16def42530b6ce2bd52d23">vm::transform::__ROR4__</a></div><div class="ttdeci">u32 __ROR4__(u32 value, int count)</div><div class="ttdoc">rotate right a four byte value...</div><div class="ttdef"><b>Definition:</b> transform.hpp:112</div></div>
<div class="ttc" id="anamespacevm_1_1transform_html_a8a109ae3f6a76f60fafedabde509594f"><div class="ttname"><a href="namespacevm_1_1transform.html#a8a109ae3f6a76f60fafedabde509594f">vm::transform::__ROR8__</a></div><div class="ttdeci">u64 __ROR8__(u64 value, int count)</div><div class="ttdoc">rotate right an eight byte value...</div><div class="ttdef"><b>Definition:</b> transform.hpp:123</div></div>
<div class="ttc" id="anamespacevm_1_1transform_html_ae461230c2fd31540a32f7b7d439c00cc"><div class="ttname"><a href="namespacevm_1_1transform.html#ae461230c2fd31540a32f7b7d439c00cc">vm::transform::__ROR2__</a></div><div class="ttdeci">u16 __ROR2__(u16 value, int count)</div><div class="ttdoc">rotate right a two byte value...</div><div class="ttdef"><b>Definition:</b> transform.hpp:101</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a91ad3d31de52b5178cbf433259b887d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91ad3d31de52b5178cbf433259b887d9">&#9670;&nbsp;</a></span>_sub</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_sub = []( T a, T b ) -&gt; T { return a - b; }</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a4ee7a00ae0c62ad5db5455d16ac64491"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ee7a00ae0c62ad5db5455d16ac64491">&#9670;&nbsp;</a></span>_xor</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const auto vm::transform::_xor = []( T a, T b ) -&gt; T { return a ^ b; }</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a694675c95aced2c9e406c26d0313ba9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a694675c95aced2c9e406c26d0313ba9a">&#9670;&nbsp;</a></span>inverse</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::map&lt; <a class="el" href="vmutils_8hpp.html#a910e81858860c70b9744949887567148">zydis_mnemonic_t</a>, <a class="el" href="vmutils_8hpp.html#a910e81858860c70b9744949887567148">zydis_mnemonic_t</a> &gt; vm::transform::inverse</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> { ZYDIS_MNEMONIC_ADD, ZYDIS_MNEMONIC_SUB }, { ZYDIS_MNEMONIC_XOR, ZYDIS_MNEMONIC_XOR },</div>
<div class="line"> { ZYDIS_MNEMONIC_BSWAP, ZYDIS_MNEMONIC_BSWAP }, { ZYDIS_MNEMONIC_SUB, ZYDIS_MNEMONIC_ADD },</div>
<div class="line"> { ZYDIS_MNEMONIC_NEG, ZYDIS_MNEMONIC_NEG }, { ZYDIS_MNEMONIC_NOT, ZYDIS_MNEMONIC_NOT },</div>
<div class="line"> { ZYDIS_MNEMONIC_ROR, ZYDIS_MNEMONIC_ROL }, { ZYDIS_MNEMONIC_ROL, ZYDIS_MNEMONIC_ROR },</div>
<div class="line"> { ZYDIS_MNEMONIC_INC, ZYDIS_MNEMONIC_DEC }, { ZYDIS_MNEMONIC_DEC, ZYDIS_MNEMONIC_INC } }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac5fcbe5497bc1e136caf781b61fbd8f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5fcbe5497bc1e136caf781b61fbd8f1">&#9670;&nbsp;</a></span>transforms</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::map&lt; <a class="el" href="vmutils_8hpp.html#a910e81858860c70b9744949887567148">zydis_mnemonic_t</a>, <a class="el" href="namespacevm_1_1transform.html#a67d5906292cf0f9aa61364e0846fa1e6">transform_t</a>&lt; T &gt; &gt; vm::transform::transforms</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> { ZYDIS_MNEMONIC_ADD, _add&lt; T &gt; }, { ZYDIS_MNEMONIC_XOR, _xor&lt; T &gt; }, { ZYDIS_MNEMONIC_BSWAP, _bswap&lt; T &gt; },</div>
<div class="line"> { ZYDIS_MNEMONIC_SUB, _sub&lt; T &gt; }, { ZYDIS_MNEMONIC_NEG, _neg&lt; T &gt; }, { ZYDIS_MNEMONIC_NOT, _not&lt; T &gt; },</div>
<div class="line"> { ZYDIS_MNEMONIC_ROR, _ror&lt; T &gt; }, { ZYDIS_MNEMONIC_ROL, _rol&lt; T &gt; }, { ZYDIS_MNEMONIC_INC, _inc&lt; T &gt; },</div>
<div class="line"> { ZYDIS_MNEMONIC_DEC, _dec&lt; T &gt; } }</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>