Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-release > by-pkgid > 0a67b807a02637f2cae68649d519a89d > files > 3192

libcryptopp-devel-7.0.0-1.mga7.armv7hl.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crypto++: whrlpool.cpp Source File</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="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="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crypto++
   &#160;<span id="projectnumber">7.0</span>
   </div>
   <div id="projectbrief">Free&nbsp;C&#43;&#43;&nbsp;class&nbsp;library&nbsp;of&nbsp;cryptographic&nbsp;schemes</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<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('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">whrlpool.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// whrlpool.cpp - originally modified by Kevin Springle from Paulo Barreto and Vincent Rijmen&#39;s</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">//                public domain code, whirlpool.c. Updated to Whirlpool version 3.0, optimized</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">//                and SSE version added by WD. All modifications are placed in the public domain.</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment">// This is the original introductory comment:</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">/**</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * The Whirlpool hashing function.</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * &lt;P&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * &lt;b&gt;References&lt;/b&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * &lt;P&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * The Whirlpool algorithm was developed by</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> * &lt;a href=&quot;mailto:pbarreto@scopus.com.br&quot;&gt;Paulo S. L. M. Barreto&lt;/a&gt; and</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * &lt;a href=&quot;mailto:vincent.rijmen@cryptomathic.com&quot;&gt;Vincent Rijmen&lt;/a&gt;.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> * See</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *      P.S.L.M. Barreto, V. Rijmen,</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *      ``The Whirlpool hashing function,&#39;&#39;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *      NESSIE submission, 2000 (tweaked version, 2001),</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *      &lt;https://www.cosic.esat.kuleuven.ac.be/nessie/workshop/submissions/whirlpool.zip&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> * @author  Paulo S.L.M. Barreto</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> * @author  Vincent Rijmen.</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> * @version 3.0 (2003.03.12)</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> * =============================================================================</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> * Differences from version 2.1:</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> * - Suboptimal diffusion matrix replaced by cir(1, 1, 4, 1, 8, 5, 2, 9).</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment"> * =============================================================================</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment"> * Differences from version 2.0:</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="comment"> * - Generation of ISO/IEC 10118-3 test vectors.</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="comment"> * - Bug fix: nonzero carry was ignored when tallying the data length</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment"> *      (this bug apparently only manifested itself when feeding data</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment"> *      in pieces rather than in a single chunk at once).</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment"> * - Support for MS Visual C++ 64-bit integer arithmetic.</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="comment"> * Differences from version 1.0:</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="comment"> * - Original S-box replaced by the tweaked, hardware-efficient version.</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="comment"> * =============================================================================</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHORS &#39;&#39;AS IS&#39;&#39; AND ANY EXPRESS</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="comment"> * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="comment"> * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment"> * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment"> * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment"> * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment"> * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment"> * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="pch_8h.html">pch.h</a>&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8h.html">config.h</a>&quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="preprocessor">#if CRYPTOPP_MSC_VERSION</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="preprocessor"># pragma warning(disable: 4127)</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="whrlpool_8h.html">whrlpool.h</a>&quot;</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="misc_8h.html">misc.h</a>&quot;</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cpu_8h.html">cpu.h</a>&quot;</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="comment">// &quot;Inline assembly operands don&#39;t work with .intel_syntax&quot;,</span></div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="comment">//   http://llvm.org/bugs/show_bug.cgi?id=24232</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="preprocessor">#if defined(CRYPTOPP_DISABLE_INTEL_ASM)</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor"># undef CRYPTOPP_SSE2_ASM_AVAILABLE</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="preprocessor"># undef CRYPTOPP_SSSE3_ASM_AVAILABLE</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;NAMESPACE_BEGIN(<a class="code" href="namespace_crypto_p_p.html">CryptoPP</a>)</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#if defined(CRYPTOPP_DEBUG) &amp;&amp; !defined(CRYPTOPP_DOXYGEN_PROCESSING)</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keywordtype">void</span> Whirlpool_TestInstantiations()</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;{</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <a class="code" href="class_whirlpool.html">Whirlpool</a> x;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;}</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="class_whirlpool.html#ad35ae383ad169c5f58ec3e7e563a1399">   92</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_whirlpool.html#ad35ae383ad169c5f58ec3e7e563a1399">Whirlpool::InitState</a>(HashWordType *state)</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    memset(state, 0, 8*<span class="keyword">sizeof</span>(state[0]));</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="class_whirlpool.html#ad4c14416343a26485a6fdaf02eeb2c4f">   97</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="class_whirlpool.html#ad4c14416343a26485a6fdaf02eeb2c4f">Whirlpool::TruncatedFinal</a>(byte *hash, <span class="keywordtype">size_t</span> size)</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;{</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    ThrowIfInvalidTruncatedSize(size);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    PadLastBlock(32);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <a class="code" href="class_iterated_hash.html#a367c073a215b32e121cf5a4b2d0b96ad">CorrectEndianess</a>(m_data, m_data, 32);</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    m_data[m_data.size()-4] = 0;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    m_data[m_data.size()-3] = 0;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    m_data[m_data.size()-2] = GetBitCountHi();</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    m_data[m_data.size()-1] = GetBitCountLo();</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    Transform(m_state, m_data);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <a class="code" href="class_iterated_hash.html#a367c073a215b32e121cf5a4b2d0b96ad">CorrectEndianess</a>(m_state, m_state, <a class="code" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">DigestSize</a>());</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    memcpy(hash, m_state, size);</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <a class="code" href="class_iterated_hash_base.html#ad53da712634ea213ad047b2a68b0fe70">Restart</a>();      <span class="comment">// reinit for next use</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;}</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="comment"> * The number of rounds of the internal dedicated block cipher.</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">#define R 10</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="comment"> * Though Whirlpool is endianness-neutral, the encryption tables are listed</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="comment"> * in BIG-ENDIAN format, which is adopted throughout this implementation</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="comment"> * (but little-endian notation would be equally suitable if consistently</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="comment"> * employed).</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">#if CRYPTOPP_SSE2_ASM_AVAILABLE</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;CRYPTOPP_ALIGN_DATA(16)</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;CRYPTOPP_TABLE</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;const word64 Whirlpool_C[4*256+R] = {</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="keyword">const</span> word64 Whirlpool_C[4*256+R] = {</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    W64LIT(0x18186018c07830d8), W64LIT(0x23238c2305af4626), W64LIT(0xc6c63fc67ef991b8), W64LIT(0xe8e887e8136fcdfb),</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    W64LIT(0x878726874ca113cb), W64LIT(0xb8b8dab8a9626d11), W64LIT(0x0101040108050209), W64LIT(0x4f4f214f426e9e0d),</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    W64LIT(0x3636d836adee6c9b), W64LIT(0xa6a6a2a6590451ff), W64LIT(0xd2d26fd2debdb90c), W64LIT(0xf5f5f3f5fb06f70e),</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    W64LIT(0x7979f979ef80f296), W64LIT(0x6f6fa16f5fcede30), W64LIT(0x91917e91fcef3f6d), W64LIT(0x52525552aa07a4f8),</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    W64LIT(0x60609d6027fdc047), W64LIT(0xbcbccabc89766535), W64LIT(0x9b9b569baccd2b37), W64LIT(0x8e8e028e048c018a),</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    W64LIT(0xa3a3b6a371155bd2), W64LIT(0x0c0c300c603c186c), W64LIT(0x7b7bf17bff8af684), W64LIT(0x3535d435b5e16a80),</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    W64LIT(0x1d1d741de8693af5), W64LIT(0xe0e0a7e05347ddb3), W64LIT(0xd7d77bd7f6acb321), W64LIT(0xc2c22fc25eed999c),</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    W64LIT(0x2e2eb82e6d965c43), W64LIT(0x4b4b314b627a9629), W64LIT(0xfefedffea321e15d), W64LIT(0x575741578216aed5),</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    W64LIT(0x15155415a8412abd), W64LIT(0x7777c1779fb6eee8), W64LIT(0x3737dc37a5eb6e92), W64LIT(0xe5e5b3e57b56d79e),</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    W64LIT(0x9f9f469f8cd92313), W64LIT(0xf0f0e7f0d317fd23), W64LIT(0x4a4a354a6a7f9420), W64LIT(0xdada4fda9e95a944),</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    W64LIT(0x58587d58fa25b0a2), W64LIT(0xc9c903c906ca8fcf), W64LIT(0x2929a429558d527c), W64LIT(0x0a0a280a5022145a),</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    W64LIT(0xb1b1feb1e14f7f50), W64LIT(0xa0a0baa0691a5dc9), W64LIT(0x6b6bb16b7fdad614), W64LIT(0x85852e855cab17d9),</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    W64LIT(0xbdbdcebd8173673c), W64LIT(0x5d5d695dd234ba8f), W64LIT(0x1010401080502090), W64LIT(0xf4f4f7f4f303f507),</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    W64LIT(0xcbcb0bcb16c08bdd), W64LIT(0x3e3ef83eedc67cd3), W64LIT(0x0505140528110a2d), W64LIT(0x676781671fe6ce78),</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    W64LIT(0xe4e4b7e47353d597), W64LIT(0x27279c2725bb4e02), W64LIT(0x4141194132588273), W64LIT(0x8b8b168b2c9d0ba7),</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    W64LIT(0xa7a7a6a7510153f6), W64LIT(0x7d7de97dcf94fab2), W64LIT(0x95956e95dcfb3749), W64LIT(0xd8d847d88e9fad56),</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    W64LIT(0xfbfbcbfb8b30eb70), W64LIT(0xeeee9fee2371c1cd), W64LIT(0x7c7ced7cc791f8bb), W64LIT(0x6666856617e3cc71),</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    W64LIT(0xdddd53dda68ea77b), W64LIT(0x17175c17b84b2eaf), W64LIT(0x4747014702468e45), W64LIT(0x9e9e429e84dc211a),</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    W64LIT(0xcaca0fca1ec589d4), W64LIT(0x2d2db42d75995a58), W64LIT(0xbfbfc6bf9179632e), W64LIT(0x07071c07381b0e3f),</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    W64LIT(0xadad8ead012347ac), W64LIT(0x5a5a755aea2fb4b0), W64LIT(0x838336836cb51bef), W64LIT(0x3333cc3385ff66b6),</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    W64LIT(0x636391633ff2c65c), W64LIT(0x02020802100a0412), W64LIT(0xaaaa92aa39384993), W64LIT(0x7171d971afa8e2de),</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    W64LIT(0xc8c807c80ecf8dc6), W64LIT(0x19196419c87d32d1), W64LIT(0x494939497270923b), W64LIT(0xd9d943d9869aaf5f),</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    W64LIT(0xf2f2eff2c31df931), W64LIT(0xe3e3abe34b48dba8), W64LIT(0x5b5b715be22ab6b9), W64LIT(0x88881a8834920dbc),</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    W64LIT(0x9a9a529aa4c8293e), W64LIT(0x262698262dbe4c0b), W64LIT(0x3232c8328dfa64bf), W64LIT(0xb0b0fab0e94a7d59),</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    W64LIT(0xe9e983e91b6acff2), W64LIT(0x0f0f3c0f78331e77), W64LIT(0xd5d573d5e6a6b733), W64LIT(0x80803a8074ba1df4),</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    W64LIT(0xbebec2be997c6127), W64LIT(0xcdcd13cd26de87eb), W64LIT(0x3434d034bde46889), W64LIT(0x48483d487a759032),</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    W64LIT(0xffffdbffab24e354), W64LIT(0x7a7af57af78ff48d), W64LIT(0x90907a90f4ea3d64), W64LIT(0x5f5f615fc23ebe9d),</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    W64LIT(0x202080201da0403d), W64LIT(0x6868bd6867d5d00f), W64LIT(0x1a1a681ad07234ca), W64LIT(0xaeae82ae192c41b7),</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    W64LIT(0xb4b4eab4c95e757d), W64LIT(0x54544d549a19a8ce), W64LIT(0x93937693ece53b7f), W64LIT(0x222288220daa442f),</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    W64LIT(0x64648d6407e9c863), W64LIT(0xf1f1e3f1db12ff2a), W64LIT(0x7373d173bfa2e6cc), W64LIT(0x12124812905a2482),</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    W64LIT(0x40401d403a5d807a), W64LIT(0x0808200840281048), W64LIT(0xc3c32bc356e89b95), W64LIT(0xecec97ec337bc5df),</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    W64LIT(0xdbdb4bdb9690ab4d), W64LIT(0xa1a1bea1611f5fc0), W64LIT(0x8d8d0e8d1c830791), W64LIT(0x3d3df43df5c97ac8),</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    W64LIT(0x97976697ccf1335b), W64LIT(0x0000000000000000), W64LIT(0xcfcf1bcf36d483f9), W64LIT(0x2b2bac2b4587566e),</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    W64LIT(0x7676c57697b3ece1), W64LIT(0x8282328264b019e6), W64LIT(0xd6d67fd6fea9b128), W64LIT(0x1b1b6c1bd87736c3),</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    W64LIT(0xb5b5eeb5c15b7774), W64LIT(0xafaf86af112943be), W64LIT(0x6a6ab56a77dfd41d), W64LIT(0x50505d50ba0da0ea),</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    W64LIT(0x45450945124c8a57), W64LIT(0xf3f3ebf3cb18fb38), W64LIT(0x3030c0309df060ad), W64LIT(0xefef9bef2b74c3c4),</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    W64LIT(0x3f3ffc3fe5c37eda), W64LIT(0x55554955921caac7), W64LIT(0xa2a2b2a2791059db), W64LIT(0xeaea8fea0365c9e9),</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    W64LIT(0x656589650fecca6a), W64LIT(0xbabad2bab9686903), W64LIT(0x2f2fbc2f65935e4a), W64LIT(0xc0c027c04ee79d8e),</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    W64LIT(0xdede5fdebe81a160), W64LIT(0x1c1c701ce06c38fc), W64LIT(0xfdfdd3fdbb2ee746), W64LIT(0x4d4d294d52649a1f),</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    W64LIT(0x92927292e4e03976), W64LIT(0x7575c9758fbceafa), W64LIT(0x06061806301e0c36), W64LIT(0x8a8a128a249809ae),</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    W64LIT(0xb2b2f2b2f940794b), W64LIT(0xe6e6bfe66359d185), W64LIT(0x0e0e380e70361c7e), W64LIT(0x1f1f7c1ff8633ee7),</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    W64LIT(0x6262956237f7c455), W64LIT(0xd4d477d4eea3b53a), W64LIT(0xa8a89aa829324d81), W64LIT(0x96966296c4f43152),</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    W64LIT(0xf9f9c3f99b3aef62), W64LIT(0xc5c533c566f697a3), W64LIT(0x2525942535b14a10), W64LIT(0x59597959f220b2ab),</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    W64LIT(0x84842a8454ae15d0), W64LIT(0x7272d572b7a7e4c5), W64LIT(0x3939e439d5dd72ec), W64LIT(0x4c4c2d4c5a619816),</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    W64LIT(0x5e5e655eca3bbc94), W64LIT(0x7878fd78e785f09f), W64LIT(0x3838e038ddd870e5), W64LIT(0x8c8c0a8c14860598),</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    W64LIT(0xd1d163d1c6b2bf17), W64LIT(0xa5a5aea5410b57e4), W64LIT(0xe2e2afe2434dd9a1), W64LIT(0x616199612ff8c24e),</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    W64LIT(0xb3b3f6b3f1457b42), W64LIT(0x2121842115a54234), W64LIT(0x9c9c4a9c94d62508), W64LIT(0x1e1e781ef0663cee),</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    W64LIT(0x4343114322528661), W64LIT(0xc7c73bc776fc93b1), W64LIT(0xfcfcd7fcb32be54f), W64LIT(0x0404100420140824),</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    W64LIT(0x51515951b208a2e3), W64LIT(0x99995e99bcc72f25), W64LIT(0x6d6da96d4fc4da22), W64LIT(0x0d0d340d68391a65),</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    W64LIT(0xfafacffa8335e979), W64LIT(0xdfdf5bdfb684a369), W64LIT(0x7e7ee57ed79bfca9), W64LIT(0x242490243db44819),</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    W64LIT(0x3b3bec3bc5d776fe), W64LIT(0xabab96ab313d4b9a), W64LIT(0xcece1fce3ed181f0), W64LIT(0x1111441188552299),</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    W64LIT(0x8f8f068f0c890383), W64LIT(0x4e4e254e4a6b9c04), W64LIT(0xb7b7e6b7d1517366), W64LIT(0xebeb8beb0b60cbe0),</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    W64LIT(0x3c3cf03cfdcc78c1), W64LIT(0x81813e817cbf1ffd), W64LIT(0x94946a94d4fe3540), W64LIT(0xf7f7fbf7eb0cf31c),</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    W64LIT(0xb9b9deb9a1676f18), W64LIT(0x13134c13985f268b), W64LIT(0x2c2cb02c7d9c5851), W64LIT(0xd3d36bd3d6b8bb05),</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    W64LIT(0xe7e7bbe76b5cd38c), W64LIT(0x6e6ea56e57cbdc39), W64LIT(0xc4c437c46ef395aa), W64LIT(0x03030c03180f061b),</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    W64LIT(0x565645568a13acdc), W64LIT(0x44440d441a49885e), W64LIT(0x7f7fe17fdf9efea0), W64LIT(0xa9a99ea921374f88),</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    W64LIT(0x2a2aa82a4d825467), W64LIT(0xbbbbd6bbb16d6b0a), W64LIT(0xc1c123c146e29f87), W64LIT(0x53535153a202a6f1),</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    W64LIT(0xdcdc57dcae8ba572), W64LIT(0x0b0b2c0b58271653), W64LIT(0x9d9d4e9d9cd32701), W64LIT(0x6c6cad6c47c1d82b),</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    W64LIT(0x3131c43195f562a4), W64LIT(0x7474cd7487b9e8f3), W64LIT(0xf6f6fff6e309f115), W64LIT(0x464605460a438c4c),</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;    W64LIT(0xacac8aac092645a5), W64LIT(0x89891e893c970fb5), W64LIT(0x14145014a04428b4), W64LIT(0xe1e1a3e15b42dfba),</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    W64LIT(0x16165816b04e2ca6), W64LIT(0x3a3ae83acdd274f7), W64LIT(0x6969b9696fd0d206), W64LIT(0x09092409482d1241),</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    W64LIT(0x7070dd70a7ade0d7), W64LIT(0xb6b6e2b6d954716f), W64LIT(0xd0d067d0ceb7bd1e), W64LIT(0xeded93ed3b7ec7d6),</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    W64LIT(0xcccc17cc2edb85e2), W64LIT(0x424215422a578468), W64LIT(0x98985a98b4c22d2c), W64LIT(0xa4a4aaa4490e55ed),</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    W64LIT(0x2828a0285d885075), W64LIT(0x5c5c6d5cda31b886), W64LIT(0xf8f8c7f8933fed6b), W64LIT(0x8686228644a411c2),</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    W64LIT(0xd818186018c07830), W64LIT(0x2623238c2305af46), W64LIT(0xb8c6c63fc67ef991), W64LIT(0xfbe8e887e8136fcd),</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    W64LIT(0xcb878726874ca113), W64LIT(0x11b8b8dab8a9626d), W64LIT(0x0901010401080502), W64LIT(0x0d4f4f214f426e9e),</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    W64LIT(0x9b3636d836adee6c), W64LIT(0xffa6a6a2a6590451), W64LIT(0x0cd2d26fd2debdb9), W64LIT(0x0ef5f5f3f5fb06f7),</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    W64LIT(0x967979f979ef80f2), W64LIT(0x306f6fa16f5fcede), W64LIT(0x6d91917e91fcef3f), W64LIT(0xf852525552aa07a4),</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    W64LIT(0x4760609d6027fdc0), W64LIT(0x35bcbccabc897665), W64LIT(0x379b9b569baccd2b), W64LIT(0x8a8e8e028e048c01),</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    W64LIT(0xd2a3a3b6a371155b), W64LIT(0x6c0c0c300c603c18), W64LIT(0x847b7bf17bff8af6), W64LIT(0x803535d435b5e16a),</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    W64LIT(0xf51d1d741de8693a), W64LIT(0xb3e0e0a7e05347dd), W64LIT(0x21d7d77bd7f6acb3), W64LIT(0x9cc2c22fc25eed99),</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    W64LIT(0x432e2eb82e6d965c), W64LIT(0x294b4b314b627a96), W64LIT(0x5dfefedffea321e1), W64LIT(0xd5575741578216ae),</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    W64LIT(0xbd15155415a8412a), W64LIT(0xe87777c1779fb6ee), W64LIT(0x923737dc37a5eb6e), W64LIT(0x9ee5e5b3e57b56d7),</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    W64LIT(0x139f9f469f8cd923), W64LIT(0x23f0f0e7f0d317fd), W64LIT(0x204a4a354a6a7f94), W64LIT(0x44dada4fda9e95a9),</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    W64LIT(0xa258587d58fa25b0), W64LIT(0xcfc9c903c906ca8f), W64LIT(0x7c2929a429558d52), W64LIT(0x5a0a0a280a502214),</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    W64LIT(0x50b1b1feb1e14f7f), W64LIT(0xc9a0a0baa0691a5d), W64LIT(0x146b6bb16b7fdad6), W64LIT(0xd985852e855cab17),</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    W64LIT(0x3cbdbdcebd817367), W64LIT(0x8f5d5d695dd234ba), W64LIT(0x9010104010805020), W64LIT(0x07f4f4f7f4f303f5),</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    W64LIT(0xddcbcb0bcb16c08b), W64LIT(0xd33e3ef83eedc67c), W64LIT(0x2d0505140528110a), W64LIT(0x78676781671fe6ce),</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    W64LIT(0x97e4e4b7e47353d5), W64LIT(0x0227279c2725bb4e), W64LIT(0x7341411941325882), W64LIT(0xa78b8b168b2c9d0b),</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    W64LIT(0xf6a7a7a6a7510153), W64LIT(0xb27d7de97dcf94fa), W64LIT(0x4995956e95dcfb37), W64LIT(0x56d8d847d88e9fad),</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    W64LIT(0x70fbfbcbfb8b30eb), W64LIT(0xcdeeee9fee2371c1), W64LIT(0xbb7c7ced7cc791f8), W64LIT(0x716666856617e3cc),</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    W64LIT(0x7bdddd53dda68ea7), W64LIT(0xaf17175c17b84b2e), W64LIT(0x454747014702468e), W64LIT(0x1a9e9e429e84dc21),</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    W64LIT(0xd4caca0fca1ec589), W64LIT(0x582d2db42d75995a), W64LIT(0x2ebfbfc6bf917963), W64LIT(0x3f07071c07381b0e),</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    W64LIT(0xacadad8ead012347), W64LIT(0xb05a5a755aea2fb4), W64LIT(0xef838336836cb51b), W64LIT(0xb63333cc3385ff66),</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    W64LIT(0x5c636391633ff2c6), W64LIT(0x1202020802100a04), W64LIT(0x93aaaa92aa393849), W64LIT(0xde7171d971afa8e2),</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    W64LIT(0xc6c8c807c80ecf8d), W64LIT(0xd119196419c87d32), W64LIT(0x3b49493949727092), W64LIT(0x5fd9d943d9869aaf),</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    W64LIT(0x31f2f2eff2c31df9), W64LIT(0xa8e3e3abe34b48db), W64LIT(0xb95b5b715be22ab6), W64LIT(0xbc88881a8834920d),</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    W64LIT(0x3e9a9a529aa4c829), W64LIT(0x0b262698262dbe4c), W64LIT(0xbf3232c8328dfa64), W64LIT(0x59b0b0fab0e94a7d),</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    W64LIT(0xf2e9e983e91b6acf), W64LIT(0x770f0f3c0f78331e), W64LIT(0x33d5d573d5e6a6b7), W64LIT(0xf480803a8074ba1d),</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    W64LIT(0x27bebec2be997c61), W64LIT(0xebcdcd13cd26de87), W64LIT(0x893434d034bde468), W64LIT(0x3248483d487a7590),</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    W64LIT(0x54ffffdbffab24e3), W64LIT(0x8d7a7af57af78ff4), W64LIT(0x6490907a90f4ea3d), W64LIT(0x9d5f5f615fc23ebe),</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    W64LIT(0x3d202080201da040), W64LIT(0x0f6868bd6867d5d0), W64LIT(0xca1a1a681ad07234), W64LIT(0xb7aeae82ae192c41),</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    W64LIT(0x7db4b4eab4c95e75), W64LIT(0xce54544d549a19a8), W64LIT(0x7f93937693ece53b), W64LIT(0x2f222288220daa44),</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    W64LIT(0x6364648d6407e9c8), W64LIT(0x2af1f1e3f1db12ff), W64LIT(0xcc7373d173bfa2e6), W64LIT(0x8212124812905a24),</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    W64LIT(0x7a40401d403a5d80), W64LIT(0x4808082008402810), W64LIT(0x95c3c32bc356e89b), W64LIT(0xdfecec97ec337bc5),</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    W64LIT(0x4ddbdb4bdb9690ab), W64LIT(0xc0a1a1bea1611f5f), W64LIT(0x918d8d0e8d1c8307), W64LIT(0xc83d3df43df5c97a),</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    W64LIT(0x5b97976697ccf133), W64LIT(0x0000000000000000), W64LIT(0xf9cfcf1bcf36d483), W64LIT(0x6e2b2bac2b458756),</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    W64LIT(0xe17676c57697b3ec), W64LIT(0xe68282328264b019), W64LIT(0x28d6d67fd6fea9b1), W64LIT(0xc31b1b6c1bd87736),</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    W64LIT(0x74b5b5eeb5c15b77), W64LIT(0xbeafaf86af112943), W64LIT(0x1d6a6ab56a77dfd4), W64LIT(0xea50505d50ba0da0),</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    W64LIT(0x5745450945124c8a), W64LIT(0x38f3f3ebf3cb18fb), W64LIT(0xad3030c0309df060), W64LIT(0xc4efef9bef2b74c3),</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    W64LIT(0xda3f3ffc3fe5c37e), W64LIT(0xc755554955921caa), W64LIT(0xdba2a2b2a2791059), W64LIT(0xe9eaea8fea0365c9),</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    W64LIT(0x6a656589650fecca), W64LIT(0x03babad2bab96869), W64LIT(0x4a2f2fbc2f65935e), W64LIT(0x8ec0c027c04ee79d),</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    W64LIT(0x60dede5fdebe81a1), W64LIT(0xfc1c1c701ce06c38), W64LIT(0x46fdfdd3fdbb2ee7), W64LIT(0x1f4d4d294d52649a),</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    W64LIT(0x7692927292e4e039), W64LIT(0xfa7575c9758fbcea), W64LIT(0x3606061806301e0c), W64LIT(0xae8a8a128a249809),</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    W64LIT(0x4bb2b2f2b2f94079), W64LIT(0x85e6e6bfe66359d1), W64LIT(0x7e0e0e380e70361c), W64LIT(0xe71f1f7c1ff8633e),</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    W64LIT(0x556262956237f7c4), W64LIT(0x3ad4d477d4eea3b5), W64LIT(0x81a8a89aa829324d), W64LIT(0x5296966296c4f431),</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    W64LIT(0x62f9f9c3f99b3aef), W64LIT(0xa3c5c533c566f697), W64LIT(0x102525942535b14a), W64LIT(0xab59597959f220b2),</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    W64LIT(0xd084842a8454ae15), W64LIT(0xc57272d572b7a7e4), W64LIT(0xec3939e439d5dd72), W64LIT(0x164c4c2d4c5a6198),</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    W64LIT(0x945e5e655eca3bbc), W64LIT(0x9f7878fd78e785f0), W64LIT(0xe53838e038ddd870), W64LIT(0x988c8c0a8c148605),</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    W64LIT(0x17d1d163d1c6b2bf), W64LIT(0xe4a5a5aea5410b57), W64LIT(0xa1e2e2afe2434dd9), W64LIT(0x4e616199612ff8c2),</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    W64LIT(0x42b3b3f6b3f1457b), W64LIT(0x342121842115a542), W64LIT(0x089c9c4a9c94d625), W64LIT(0xee1e1e781ef0663c),</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    W64LIT(0x6143431143225286), W64LIT(0xb1c7c73bc776fc93), W64LIT(0x4ffcfcd7fcb32be5), W64LIT(0x2404041004201408),</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    W64LIT(0xe351515951b208a2), W64LIT(0x2599995e99bcc72f), W64LIT(0x226d6da96d4fc4da), W64LIT(0x650d0d340d68391a),</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;    W64LIT(0x79fafacffa8335e9), W64LIT(0x69dfdf5bdfb684a3), W64LIT(0xa97e7ee57ed79bfc), W64LIT(0x19242490243db448),</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    W64LIT(0xfe3b3bec3bc5d776), W64LIT(0x9aabab96ab313d4b), W64LIT(0xf0cece1fce3ed181), W64LIT(0x9911114411885522),</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    W64LIT(0x838f8f068f0c8903), W64LIT(0x044e4e254e4a6b9c), W64LIT(0x66b7b7e6b7d15173), W64LIT(0xe0ebeb8beb0b60cb),</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    W64LIT(0xc13c3cf03cfdcc78), W64LIT(0xfd81813e817cbf1f), W64LIT(0x4094946a94d4fe35), W64LIT(0x1cf7f7fbf7eb0cf3),</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    W64LIT(0x18b9b9deb9a1676f), W64LIT(0x8b13134c13985f26), W64LIT(0x512c2cb02c7d9c58), W64LIT(0x05d3d36bd3d6b8bb),</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    W64LIT(0x8ce7e7bbe76b5cd3), W64LIT(0x396e6ea56e57cbdc), W64LIT(0xaac4c437c46ef395), W64LIT(0x1b03030c03180f06),</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    W64LIT(0xdc565645568a13ac), W64LIT(0x5e44440d441a4988), W64LIT(0xa07f7fe17fdf9efe), W64LIT(0x88a9a99ea921374f),</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    W64LIT(0x672a2aa82a4d8254), W64LIT(0x0abbbbd6bbb16d6b), W64LIT(0x87c1c123c146e29f), W64LIT(0xf153535153a202a6),</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    W64LIT(0x72dcdc57dcae8ba5), W64LIT(0x530b0b2c0b582716), W64LIT(0x019d9d4e9d9cd327), W64LIT(0x2b6c6cad6c47c1d8),</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    W64LIT(0xa43131c43195f562), W64LIT(0xf37474cd7487b9e8), W64LIT(0x15f6f6fff6e309f1), W64LIT(0x4c464605460a438c),</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    W64LIT(0xa5acac8aac092645), W64LIT(0xb589891e893c970f), W64LIT(0xb414145014a04428), W64LIT(0xbae1e1a3e15b42df),</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    W64LIT(0xa616165816b04e2c), W64LIT(0xf73a3ae83acdd274), W64LIT(0x066969b9696fd0d2), W64LIT(0x4109092409482d12),</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    W64LIT(0xd77070dd70a7ade0), W64LIT(0x6fb6b6e2b6d95471), W64LIT(0x1ed0d067d0ceb7bd), W64LIT(0xd6eded93ed3b7ec7),</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    W64LIT(0xe2cccc17cc2edb85), W64LIT(0x68424215422a5784), W64LIT(0x2c98985a98b4c22d), W64LIT(0xeda4a4aaa4490e55),</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    W64LIT(0x752828a0285d8850), W64LIT(0x865c5c6d5cda31b8), W64LIT(0x6bf8f8c7f8933fed), W64LIT(0xc28686228644a411),</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    W64LIT(0x30d818186018c078), W64LIT(0x462623238c2305af), W64LIT(0x91b8c6c63fc67ef9), W64LIT(0xcdfbe8e887e8136f),</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    W64LIT(0x13cb878726874ca1), W64LIT(0x6d11b8b8dab8a962), W64LIT(0x0209010104010805), W64LIT(0x9e0d4f4f214f426e),</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    W64LIT(0x6c9b3636d836adee), W64LIT(0x51ffa6a6a2a65904), W64LIT(0xb90cd2d26fd2debd), W64LIT(0xf70ef5f5f3f5fb06),</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    W64LIT(0xf2967979f979ef80), W64LIT(0xde306f6fa16f5fce), W64LIT(0x3f6d91917e91fcef), W64LIT(0xa4f852525552aa07),</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    W64LIT(0xc04760609d6027fd), W64LIT(0x6535bcbccabc8976), W64LIT(0x2b379b9b569baccd), W64LIT(0x018a8e8e028e048c),</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    W64LIT(0x5bd2a3a3b6a37115), W64LIT(0x186c0c0c300c603c), W64LIT(0xf6847b7bf17bff8a), W64LIT(0x6a803535d435b5e1),</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    W64LIT(0x3af51d1d741de869), W64LIT(0xddb3e0e0a7e05347), W64LIT(0xb321d7d77bd7f6ac), W64LIT(0x999cc2c22fc25eed),</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    W64LIT(0x5c432e2eb82e6d96), W64LIT(0x96294b4b314b627a), W64LIT(0xe15dfefedffea321), W64LIT(0xaed5575741578216),</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    W64LIT(0x2abd15155415a841), W64LIT(0xeee87777c1779fb6), W64LIT(0x6e923737dc37a5eb), W64LIT(0xd79ee5e5b3e57b56),</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    W64LIT(0x23139f9f469f8cd9), W64LIT(0xfd23f0f0e7f0d317), W64LIT(0x94204a4a354a6a7f), W64LIT(0xa944dada4fda9e95),</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    W64LIT(0xb0a258587d58fa25), W64LIT(0x8fcfc9c903c906ca), W64LIT(0x527c2929a429558d), W64LIT(0x145a0a0a280a5022),</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    W64LIT(0x7f50b1b1feb1e14f), W64LIT(0x5dc9a0a0baa0691a), W64LIT(0xd6146b6bb16b7fda), W64LIT(0x17d985852e855cab),</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    W64LIT(0x673cbdbdcebd8173), W64LIT(0xba8f5d5d695dd234), W64LIT(0x2090101040108050), W64LIT(0xf507f4f4f7f4f303),</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    W64LIT(0x8bddcbcb0bcb16c0), W64LIT(0x7cd33e3ef83eedc6), W64LIT(0x0a2d050514052811), W64LIT(0xce78676781671fe6),</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    W64LIT(0xd597e4e4b7e47353), W64LIT(0x4e0227279c2725bb), W64LIT(0x8273414119413258), W64LIT(0x0ba78b8b168b2c9d),</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    W64LIT(0x53f6a7a7a6a75101), W64LIT(0xfab27d7de97dcf94), W64LIT(0x374995956e95dcfb), W64LIT(0xad56d8d847d88e9f),</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    W64LIT(0xeb70fbfbcbfb8b30), W64LIT(0xc1cdeeee9fee2371), W64LIT(0xf8bb7c7ced7cc791), W64LIT(0xcc716666856617e3),</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    W64LIT(0xa77bdddd53dda68e), W64LIT(0x2eaf17175c17b84b), W64LIT(0x8e45474701470246), W64LIT(0x211a9e9e429e84dc),</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    W64LIT(0x89d4caca0fca1ec5), W64LIT(0x5a582d2db42d7599), W64LIT(0x632ebfbfc6bf9179), W64LIT(0x0e3f07071c07381b),</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    W64LIT(0x47acadad8ead0123), W64LIT(0xb4b05a5a755aea2f), W64LIT(0x1bef838336836cb5), W64LIT(0x66b63333cc3385ff),</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    W64LIT(0xc65c636391633ff2), W64LIT(0x041202020802100a), W64LIT(0x4993aaaa92aa3938), W64LIT(0xe2de7171d971afa8),</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    W64LIT(0x8dc6c8c807c80ecf), W64LIT(0x32d119196419c87d), W64LIT(0x923b494939497270), W64LIT(0xaf5fd9d943d9869a),</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    W64LIT(0xf931f2f2eff2c31d), W64LIT(0xdba8e3e3abe34b48), W64LIT(0xb6b95b5b715be22a), W64LIT(0x0dbc88881a883492),</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    W64LIT(0x293e9a9a529aa4c8), W64LIT(0x4c0b262698262dbe), W64LIT(0x64bf3232c8328dfa), W64LIT(0x7d59b0b0fab0e94a),</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    W64LIT(0xcff2e9e983e91b6a), W64LIT(0x1e770f0f3c0f7833), W64LIT(0xb733d5d573d5e6a6), W64LIT(0x1df480803a8074ba),</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    W64LIT(0x6127bebec2be997c), W64LIT(0x87ebcdcd13cd26de), W64LIT(0x68893434d034bde4), W64LIT(0x903248483d487a75),</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    W64LIT(0xe354ffffdbffab24), W64LIT(0xf48d7a7af57af78f), W64LIT(0x3d6490907a90f4ea), W64LIT(0xbe9d5f5f615fc23e),</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    W64LIT(0x403d202080201da0), W64LIT(0xd00f6868bd6867d5), W64LIT(0x34ca1a1a681ad072), W64LIT(0x41b7aeae82ae192c),</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    W64LIT(0x757db4b4eab4c95e), W64LIT(0xa8ce54544d549a19), W64LIT(0x3b7f93937693ece5), W64LIT(0x442f222288220daa),</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    W64LIT(0xc86364648d6407e9), W64LIT(0xff2af1f1e3f1db12), W64LIT(0xe6cc7373d173bfa2), W64LIT(0x248212124812905a),</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    W64LIT(0x807a40401d403a5d), W64LIT(0x1048080820084028), W64LIT(0x9b95c3c32bc356e8), W64LIT(0xc5dfecec97ec337b),</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    W64LIT(0xab4ddbdb4bdb9690), W64LIT(0x5fc0a1a1bea1611f), W64LIT(0x07918d8d0e8d1c83), W64LIT(0x7ac83d3df43df5c9),</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    W64LIT(0x335b97976697ccf1), W64LIT(0x0000000000000000), W64LIT(0x83f9cfcf1bcf36d4), W64LIT(0x566e2b2bac2b4587),</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    W64LIT(0xece17676c57697b3), W64LIT(0x19e68282328264b0), W64LIT(0xb128d6d67fd6fea9), W64LIT(0x36c31b1b6c1bd877),</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    W64LIT(0x7774b5b5eeb5c15b), W64LIT(0x43beafaf86af1129), W64LIT(0xd41d6a6ab56a77df), W64LIT(0xa0ea50505d50ba0d),</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    W64LIT(0x8a5745450945124c), W64LIT(0xfb38f3f3ebf3cb18), W64LIT(0x60ad3030c0309df0), W64LIT(0xc3c4efef9bef2b74),</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    W64LIT(0x7eda3f3ffc3fe5c3), W64LIT(0xaac755554955921c), W64LIT(0x59dba2a2b2a27910), W64LIT(0xc9e9eaea8fea0365),</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    W64LIT(0xca6a656589650fec), W64LIT(0x6903babad2bab968), W64LIT(0x5e4a2f2fbc2f6593), W64LIT(0x9d8ec0c027c04ee7),</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    W64LIT(0xa160dede5fdebe81), W64LIT(0x38fc1c1c701ce06c), W64LIT(0xe746fdfdd3fdbb2e), W64LIT(0x9a1f4d4d294d5264),</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    W64LIT(0x397692927292e4e0), W64LIT(0xeafa7575c9758fbc), W64LIT(0x0c3606061806301e), W64LIT(0x09ae8a8a128a2498),</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    W64LIT(0x794bb2b2f2b2f940), W64LIT(0xd185e6e6bfe66359), W64LIT(0x1c7e0e0e380e7036), W64LIT(0x3ee71f1f7c1ff863),</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    W64LIT(0xc4556262956237f7), W64LIT(0xb53ad4d477d4eea3), W64LIT(0x4d81a8a89aa82932), W64LIT(0x315296966296c4f4),</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    W64LIT(0xef62f9f9c3f99b3a), W64LIT(0x97a3c5c533c566f6), W64LIT(0x4a102525942535b1), W64LIT(0xb2ab59597959f220),</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    W64LIT(0x15d084842a8454ae), W64LIT(0xe4c57272d572b7a7), W64LIT(0x72ec3939e439d5dd), W64LIT(0x98164c4c2d4c5a61),</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    W64LIT(0xbc945e5e655eca3b), W64LIT(0xf09f7878fd78e785), W64LIT(0x70e53838e038ddd8), W64LIT(0x05988c8c0a8c1486),</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    W64LIT(0xbf17d1d163d1c6b2), W64LIT(0x57e4a5a5aea5410b), W64LIT(0xd9a1e2e2afe2434d), W64LIT(0xc24e616199612ff8),</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    W64LIT(0x7b42b3b3f6b3f145), W64LIT(0x42342121842115a5), W64LIT(0x25089c9c4a9c94d6), W64LIT(0x3cee1e1e781ef066),</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    W64LIT(0x8661434311432252), W64LIT(0x93b1c7c73bc776fc), W64LIT(0xe54ffcfcd7fcb32b), W64LIT(0x0824040410042014),</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;    W64LIT(0xa2e351515951b208), W64LIT(0x2f2599995e99bcc7), W64LIT(0xda226d6da96d4fc4), W64LIT(0x1a650d0d340d6839),</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    W64LIT(0xe979fafacffa8335), W64LIT(0xa369dfdf5bdfb684), W64LIT(0xfca97e7ee57ed79b), W64LIT(0x4819242490243db4),</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    W64LIT(0x76fe3b3bec3bc5d7), W64LIT(0x4b9aabab96ab313d), W64LIT(0x81f0cece1fce3ed1), W64LIT(0x2299111144118855),</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    W64LIT(0x03838f8f068f0c89), W64LIT(0x9c044e4e254e4a6b), W64LIT(0x7366b7b7e6b7d151), W64LIT(0xcbe0ebeb8beb0b60),</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;    W64LIT(0x78c13c3cf03cfdcc), W64LIT(0x1ffd81813e817cbf), W64LIT(0x354094946a94d4fe), W64LIT(0xf31cf7f7fbf7eb0c),</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    W64LIT(0x6f18b9b9deb9a167), W64LIT(0x268b13134c13985f), W64LIT(0x58512c2cb02c7d9c), W64LIT(0xbb05d3d36bd3d6b8),</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    W64LIT(0xd38ce7e7bbe76b5c), W64LIT(0xdc396e6ea56e57cb), W64LIT(0x95aac4c437c46ef3), W64LIT(0x061b03030c03180f),</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    W64LIT(0xacdc565645568a13), W64LIT(0x885e44440d441a49), W64LIT(0xfea07f7fe17fdf9e), W64LIT(0x4f88a9a99ea92137),</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    W64LIT(0x54672a2aa82a4d82), W64LIT(0x6b0abbbbd6bbb16d), W64LIT(0x9f87c1c123c146e2), W64LIT(0xa6f153535153a202),</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    W64LIT(0xa572dcdc57dcae8b), W64LIT(0x16530b0b2c0b5827), W64LIT(0x27019d9d4e9d9cd3), W64LIT(0xd82b6c6cad6c47c1),</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;    W64LIT(0x62a43131c43195f5), W64LIT(0xe8f37474cd7487b9), W64LIT(0xf115f6f6fff6e309), W64LIT(0x8c4c464605460a43),</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    W64LIT(0x45a5acac8aac0926), W64LIT(0x0fb589891e893c97), W64LIT(0x28b414145014a044), W64LIT(0xdfbae1e1a3e15b42),</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;    W64LIT(0x2ca616165816b04e), W64LIT(0x74f73a3ae83acdd2), W64LIT(0xd2066969b9696fd0), W64LIT(0x124109092409482d),</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    W64LIT(0xe0d77070dd70a7ad), W64LIT(0x716fb6b6e2b6d954), W64LIT(0xbd1ed0d067d0ceb7), W64LIT(0xc7d6eded93ed3b7e),</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    W64LIT(0x85e2cccc17cc2edb), W64LIT(0x8468424215422a57), W64LIT(0x2d2c98985a98b4c2), W64LIT(0x55eda4a4aaa4490e),</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    W64LIT(0x50752828a0285d88), W64LIT(0xb8865c5c6d5cda31), W64LIT(0xed6bf8f8c7f8933f), W64LIT(0x11c28686228644a4),</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    W64LIT(0x7830d818186018c0), W64LIT(0xaf462623238c2305), W64LIT(0xf991b8c6c63fc67e), W64LIT(0x6fcdfbe8e887e813),</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    W64LIT(0xa113cb878726874c), W64LIT(0x626d11b8b8dab8a9), W64LIT(0x0502090101040108), W64LIT(0x6e9e0d4f4f214f42),</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    W64LIT(0xee6c9b3636d836ad), W64LIT(0x0451ffa6a6a2a659), W64LIT(0xbdb90cd2d26fd2de), W64LIT(0x06f70ef5f5f3f5fb),</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    W64LIT(0x80f2967979f979ef), W64LIT(0xcede306f6fa16f5f), W64LIT(0xef3f6d91917e91fc), W64LIT(0x07a4f852525552aa),</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    W64LIT(0xfdc04760609d6027), W64LIT(0x766535bcbccabc89), W64LIT(0xcd2b379b9b569bac), W64LIT(0x8c018a8e8e028e04),</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    W64LIT(0x155bd2a3a3b6a371), W64LIT(0x3c186c0c0c300c60), W64LIT(0x8af6847b7bf17bff), W64LIT(0xe16a803535d435b5),</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    W64LIT(0x693af51d1d741de8), W64LIT(0x47ddb3e0e0a7e053), W64LIT(0xacb321d7d77bd7f6), W64LIT(0xed999cc2c22fc25e),</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    W64LIT(0x965c432e2eb82e6d), W64LIT(0x7a96294b4b314b62), W64LIT(0x21e15dfefedffea3), W64LIT(0x16aed55757415782),</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    W64LIT(0x412abd15155415a8), W64LIT(0xb6eee87777c1779f), W64LIT(0xeb6e923737dc37a5), W64LIT(0x56d79ee5e5b3e57b),</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    W64LIT(0xd923139f9f469f8c), W64LIT(0x17fd23f0f0e7f0d3), W64LIT(0x7f94204a4a354a6a), W64LIT(0x95a944dada4fda9e),</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    W64LIT(0x25b0a258587d58fa), W64LIT(0xca8fcfc9c903c906), W64LIT(0x8d527c2929a42955), W64LIT(0x22145a0a0a280a50),</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    W64LIT(0x4f7f50b1b1feb1e1), W64LIT(0x1a5dc9a0a0baa069), W64LIT(0xdad6146b6bb16b7f), W64LIT(0xab17d985852e855c),</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    W64LIT(0x73673cbdbdcebd81), W64LIT(0x34ba8f5d5d695dd2), W64LIT(0x5020901010401080), W64LIT(0x03f507f4f4f7f4f3),</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    W64LIT(0xc08bddcbcb0bcb16), W64LIT(0xc67cd33e3ef83eed), W64LIT(0x110a2d0505140528), W64LIT(0xe6ce78676781671f),</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    W64LIT(0x53d597e4e4b7e473), W64LIT(0xbb4e0227279c2725), W64LIT(0x5882734141194132), W64LIT(0x9d0ba78b8b168b2c),</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    W64LIT(0x0153f6a7a7a6a751), W64LIT(0x94fab27d7de97dcf), W64LIT(0xfb374995956e95dc), W64LIT(0x9fad56d8d847d88e),</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    W64LIT(0x30eb70fbfbcbfb8b), W64LIT(0x71c1cdeeee9fee23), W64LIT(0x91f8bb7c7ced7cc7), W64LIT(0xe3cc716666856617),</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    W64LIT(0x8ea77bdddd53dda6), W64LIT(0x4b2eaf17175c17b8), W64LIT(0x468e454747014702), W64LIT(0xdc211a9e9e429e84),</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;    W64LIT(0xc589d4caca0fca1e), W64LIT(0x995a582d2db42d75), W64LIT(0x79632ebfbfc6bf91), W64LIT(0x1b0e3f07071c0738),</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    W64LIT(0x2347acadad8ead01), W64LIT(0x2fb4b05a5a755aea), W64LIT(0xb51bef838336836c), W64LIT(0xff66b63333cc3385),</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    W64LIT(0xf2c65c636391633f), W64LIT(0x0a04120202080210), W64LIT(0x384993aaaa92aa39), W64LIT(0xa8e2de7171d971af),</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    W64LIT(0xcf8dc6c8c807c80e), W64LIT(0x7d32d119196419c8), W64LIT(0x70923b4949394972), W64LIT(0x9aaf5fd9d943d986),</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    W64LIT(0x1df931f2f2eff2c3), W64LIT(0x48dba8e3e3abe34b), W64LIT(0x2ab6b95b5b715be2), W64LIT(0x920dbc88881a8834),</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    W64LIT(0xc8293e9a9a529aa4), W64LIT(0xbe4c0b262698262d), W64LIT(0xfa64bf3232c8328d), W64LIT(0x4a7d59b0b0fab0e9),</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    W64LIT(0x6acff2e9e983e91b), W64LIT(0x331e770f0f3c0f78), W64LIT(0xa6b733d5d573d5e6), W64LIT(0xba1df480803a8074),</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    W64LIT(0x7c6127bebec2be99), W64LIT(0xde87ebcdcd13cd26), W64LIT(0xe468893434d034bd), W64LIT(0x75903248483d487a),</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    W64LIT(0x24e354ffffdbffab), W64LIT(0x8ff48d7a7af57af7), W64LIT(0xea3d6490907a90f4), W64LIT(0x3ebe9d5f5f615fc2),</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    W64LIT(0xa0403d202080201d), W64LIT(0xd5d00f6868bd6867), W64LIT(0x7234ca1a1a681ad0), W64LIT(0x2c41b7aeae82ae19),</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    W64LIT(0x5e757db4b4eab4c9), W64LIT(0x19a8ce54544d549a), W64LIT(0xe53b7f93937693ec), W64LIT(0xaa442f222288220d),</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    W64LIT(0xe9c86364648d6407), W64LIT(0x12ff2af1f1e3f1db), W64LIT(0xa2e6cc7373d173bf), W64LIT(0x5a24821212481290),</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    W64LIT(0x5d807a40401d403a), W64LIT(0x2810480808200840), W64LIT(0xe89b95c3c32bc356), W64LIT(0x7bc5dfecec97ec33),</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    W64LIT(0x90ab4ddbdb4bdb96), W64LIT(0x1f5fc0a1a1bea161), W64LIT(0x8307918d8d0e8d1c), W64LIT(0xc97ac83d3df43df5),</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    W64LIT(0xf1335b97976697cc), W64LIT(0x0000000000000000), W64LIT(0xd483f9cfcf1bcf36), W64LIT(0x87566e2b2bac2b45),</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    W64LIT(0xb3ece17676c57697), W64LIT(0xb019e68282328264), W64LIT(0xa9b128d6d67fd6fe), W64LIT(0x7736c31b1b6c1bd8),</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    W64LIT(0x5b7774b5b5eeb5c1), W64LIT(0x2943beafaf86af11), W64LIT(0xdfd41d6a6ab56a77), W64LIT(0x0da0ea50505d50ba),</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    W64LIT(0x4c8a574545094512), W64LIT(0x18fb38f3f3ebf3cb), W64LIT(0xf060ad3030c0309d), W64LIT(0x74c3c4efef9bef2b),</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    W64LIT(0xc37eda3f3ffc3fe5), W64LIT(0x1caac75555495592), W64LIT(0x1059dba2a2b2a279), W64LIT(0x65c9e9eaea8fea03),</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    W64LIT(0xecca6a656589650f), W64LIT(0x686903babad2bab9), W64LIT(0x935e4a2f2fbc2f65), W64LIT(0xe79d8ec0c027c04e),</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    W64LIT(0x81a160dede5fdebe), W64LIT(0x6c38fc1c1c701ce0), W64LIT(0x2ee746fdfdd3fdbb), W64LIT(0x649a1f4d4d294d52),</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    W64LIT(0xe0397692927292e4), W64LIT(0xbceafa7575c9758f), W64LIT(0x1e0c360606180630), W64LIT(0x9809ae8a8a128a24),</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    W64LIT(0x40794bb2b2f2b2f9), W64LIT(0x59d185e6e6bfe663), W64LIT(0x361c7e0e0e380e70), W64LIT(0x633ee71f1f7c1ff8),</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    W64LIT(0xf7c4556262956237), W64LIT(0xa3b53ad4d477d4ee), W64LIT(0x324d81a8a89aa829), W64LIT(0xf4315296966296c4),</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;    W64LIT(0x3aef62f9f9c3f99b), W64LIT(0xf697a3c5c533c566), W64LIT(0xb14a102525942535), W64LIT(0x20b2ab59597959f2),</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    W64LIT(0xae15d084842a8454), W64LIT(0xa7e4c57272d572b7), W64LIT(0xdd72ec3939e439d5), W64LIT(0x6198164c4c2d4c5a),</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    W64LIT(0x3bbc945e5e655eca), W64LIT(0x85f09f7878fd78e7), W64LIT(0xd870e53838e038dd), W64LIT(0x8605988c8c0a8c14),</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    W64LIT(0xb2bf17d1d163d1c6), W64LIT(0x0b57e4a5a5aea541), W64LIT(0x4dd9a1e2e2afe243), W64LIT(0xf8c24e616199612f),</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    W64LIT(0x457b42b3b3f6b3f1), W64LIT(0xa542342121842115), W64LIT(0xd625089c9c4a9c94), W64LIT(0x663cee1e1e781ef0),</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;    W64LIT(0x5286614343114322), W64LIT(0xfc93b1c7c73bc776), W64LIT(0x2be54ffcfcd7fcb3), W64LIT(0x1408240404100420),</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;    W64LIT(0x08a2e351515951b2), W64LIT(0xc72f2599995e99bc), W64LIT(0xc4da226d6da96d4f), W64LIT(0x391a650d0d340d68),</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;    W64LIT(0x35e979fafacffa83), W64LIT(0x84a369dfdf5bdfb6), W64LIT(0x9bfca97e7ee57ed7), W64LIT(0xb44819242490243d),</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;    W64LIT(0xd776fe3b3bec3bc5), W64LIT(0x3d4b9aabab96ab31), W64LIT(0xd181f0cece1fce3e), W64LIT(0x5522991111441188),</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    W64LIT(0x8903838f8f068f0c), W64LIT(0x6b9c044e4e254e4a), W64LIT(0x517366b7b7e6b7d1), W64LIT(0x60cbe0ebeb8beb0b),</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    W64LIT(0xcc78c13c3cf03cfd), W64LIT(0xbf1ffd81813e817c), W64LIT(0xfe354094946a94d4), W64LIT(0x0cf31cf7f7fbf7eb),</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    W64LIT(0x676f18b9b9deb9a1), W64LIT(0x5f268b13134c1398), W64LIT(0x9c58512c2cb02c7d), W64LIT(0xb8bb05d3d36bd3d6),</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    W64LIT(0x5cd38ce7e7bbe76b), W64LIT(0xcbdc396e6ea56e57), W64LIT(0xf395aac4c437c46e), W64LIT(0x0f061b03030c0318),</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;    W64LIT(0x13acdc565645568a), W64LIT(0x49885e44440d441a), W64LIT(0x9efea07f7fe17fdf), W64LIT(0x374f88a9a99ea921),</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    W64LIT(0x8254672a2aa82a4d), W64LIT(0x6d6b0abbbbd6bbb1), W64LIT(0xe29f87c1c123c146), W64LIT(0x02a6f153535153a2),</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;    W64LIT(0x8ba572dcdc57dcae), W64LIT(0x2716530b0b2c0b58), W64LIT(0xd327019d9d4e9d9c), W64LIT(0xc1d82b6c6cad6c47),</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;    W64LIT(0xf562a43131c43195), W64LIT(0xb9e8f37474cd7487), W64LIT(0x09f115f6f6fff6e3), W64LIT(0x438c4c464605460a),</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    W64LIT(0x2645a5acac8aac09), W64LIT(0x970fb589891e893c), W64LIT(0x4428b414145014a0), W64LIT(0x42dfbae1e1a3e15b),</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    W64LIT(0x4e2ca616165816b0), W64LIT(0xd274f73a3ae83acd), W64LIT(0xd0d2066969b9696f), W64LIT(0x2d12410909240948),</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    W64LIT(0xade0d77070dd70a7), W64LIT(0x54716fb6b6e2b6d9), W64LIT(0xb7bd1ed0d067d0ce), W64LIT(0x7ec7d6eded93ed3b),</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    W64LIT(0xdb85e2cccc17cc2e), W64LIT(0x578468424215422a), W64LIT(0xc22d2c98985a98b4), W64LIT(0x0e55eda4a4aaa449),</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    W64LIT(0x8850752828a0285d), W64LIT(0x31b8865c5c6d5cda), W64LIT(0x3fed6bf8f8c7f893), W64LIT(0xa411c28686228644),</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    W64LIT(0x1823c6e887b8014f),</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    W64LIT(0x36a6d2f5796f9152),</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    W64LIT(0x60bc9b8ea30c7b35),</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    W64LIT(0x1de0d7c22e4bfe57),</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    W64LIT(0x157737e59ff04ada),</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    W64LIT(0x58c9290ab1a06b85),</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;    W64LIT(0xbd5d10f4cb3e0567),</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    W64LIT(0xe427418ba77d95d8),</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    W64LIT(0xfbee7c66dd17479e),</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;    W64LIT(0xca2dbf07ad5a8333)</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;};</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;<span class="comment">// Whirlpool basic transformation. Transforms state based on block.</span></div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="keywordtype">void</span> Whirlpool::Transform(word64 *digest, <span class="keyword">const</span> word64 *block)</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<span class="preprocessor">#if CRYPTOPP_SSE2_ASM_AVAILABLE</span></div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="cpu_8h.html#a962fa16f6d3a8a518912b39c3ea84062">HasSSE2</a>())</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;    {</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;        <span class="comment">// MMX version has the same structure as C version below</span></div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="preprocessor">    #if CRYPTOPP_BOOL_X64</span></div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;        word64 workspace[16];</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="preprocessor">    #endif</span></div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    __asm__ __volatile__</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    (</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;        INTEL_NOPREFIX</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;        AS_PUSH_IF86(   bx)</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;        AS2(    mov     AS_REG_6, WORD_REG(ax))</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;#<span class="keywordflow">else</span></div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;        AS2(    lea     AS_REG_6, [Whirlpool_C])</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;        AS2(    mov     WORD_REG(cx), digest)</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;        AS2(    mov     WORD_REG(dx), block)</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;#endif</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;#<span class="keywordflow">if</span> CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        AS2(    mov     eax, esp)</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        AS2(    and     esp, -16)</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;        AS2(    sub     esp, 16*8)</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        AS_PUSH_IF86(   ax)</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;    #<span class="keywordflow">if</span> CRYPTOPP_BOOL_X86</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        #define SSE2_workspace  esp+WORD_SZ</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    #elif CRYPTOPP_BOOL_X32</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;        #define SSE2_workspace  esp+(WORD_SZ*2)</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    #endif</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;#<span class="keywordflow">else</span></div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    #define SSE2_workspace  %3</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;#endif</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        AS2(    xor     esi, esi)</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;        ASL(0)</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;        AS2(    movq    mm0, [WORD_REG(cx)+8*WORD_REG(si)])</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;        AS2(    movq    [SSE2_workspace+8*WORD_REG(si)], mm0)       <span class="comment">// k</span></div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;        AS2(    pxor    mm0, [WORD_REG(dx)+8*WORD_REG(si)])</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;        AS2(    movq    [SSE2_workspace+64+8*WORD_REG(si)], mm0)    <span class="comment">// s</span></div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;        AS2(    movq    [WORD_REG(cx)+8*WORD_REG(si)], mm0)</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;        AS1(    inc     WORD_REG(si))</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;        AS2(    cmp     WORD_REG(si), 8)</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;        ASJ(    jne,    0, b)</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        AS2(    xor     esi, esi)</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        ASL(1)</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;#define KSL0(a, b)  AS2(movq    mm##a, b)</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;#define KSL1(a, b)  AS2(pxor    mm##a, b)</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;#define KSL(op, i, a, b, c, d)  \</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    AS2(mov     eax, [SSE2_workspace+8*i])\</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;    AS2(movzx   edi, al)\</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    KSL##op(a, [AS_REG_6+3*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;    AS2(movzx   edi, ah)\</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;    KSL##op(b, [AS_REG_6+2*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    AS2(shr     eax, 16)\</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    AS2(movzx   edi, al)\</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    AS2(shr     eax, 8)\</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    KSL##op(c, [AS_REG_6+1*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    KSL##op(d, [AS_REG_6+0*2048+8*WORD_REG(ax)])</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;#define KSH0(a, b)  \</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    ASS(pshufw  mm##a, mm##a, 1, 0, 3, 2)\</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    AS2(pxor    mm##a, b)</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;#define KSH1(a, b)  \</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;    AS2(pxor    mm##a, b)</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;#define KSH2(a, b)  \</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    AS2(pxor    mm##a, b)\</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    AS2(movq    [SSE2_workspace+8*a], mm##a)</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;#define KSH(op, i, a, b, c, d)  \</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;    AS2(mov     eax, [SSE2_workspace+8*((i+4)-8*((i+4)/8))+4])\</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;    AS2(movzx   edi, al)\</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    KSH##op(a, [AS_REG_6+3*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;    AS2(movzx   edi, ah)\</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;    KSH##op(b, [AS_REG_6+2*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    AS2(shr     eax, 16)\</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    AS2(movzx   edi, al)\</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    AS2(shr     eax, 8)\</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    KSH##op(c, [AS_REG_6+1*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    KSH##op(d, [AS_REG_6+0*2048+8*WORD_REG(ax)])</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;#define TSL(op, i, a, b, c, d)  \</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    AS2(mov     eax, [SSE2_workspace+64+8*i])\</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    AS2(movzx   edi, al)\</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    KSL##op(a, [AS_REG_6+3*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    AS2(movzx   edi, ah)\</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    KSL##op(b, [AS_REG_6+2*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    AS2(shr     eax, 16)\</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    AS2(movzx   edi, al)\</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;    AS2(shr     eax, 8)\</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    KSL##op(c, [AS_REG_6+1*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    KSL##op(d, [AS_REG_6+0*2048+8*WORD_REG(ax)])</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;#define TSH0(a, b)  \</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;    ASS(pshufw  mm##a, mm##a, 1, 0, 3, 2)\</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;    AS2(pxor    mm##a, [SSE2_workspace+8*a])\</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;    AS2(pxor    mm##a, b)</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;#define TSH1(a, b)  \</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;    AS2(pxor    mm##a, b)</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;#define TSH2(a, b)  \</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    AS2(pxor    mm##a, b)\</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;    AS2(movq    [SSE2_workspace+64+8*a], mm##a)</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;#define TSH3(a, b)  \</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;    AS2(pxor    mm##a, b)\</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;    AS2(pxor    mm##a, [WORD_REG(cx)+8*a])\</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;    AS2(movq    [WORD_REG(cx)+8*a], mm##a)</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;#define TSH(op, i, a, b, c, d)  \</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;    AS2(mov     eax, [SSE2_workspace+64+8*((i+4)-8*((i+4)/8))+4])\</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    AS2(movzx   edi, al)\</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    TSH##op(a, [AS_REG_6+3*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    AS2(movzx   edi, ah)\</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    TSH##op(b, [AS_REG_6+2*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    AS2(shr     eax, 16)\</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;    AS2(movzx   edi, al)\</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;    AS2(shr     eax, 8)\</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;    TSH##op(c, [AS_REG_6+1*2048+8*WORD_REG(di)])\</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;    TSH##op(d, [AS_REG_6+0*2048+8*WORD_REG(ax)])</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;        KSL(0, 4, 3, 2, 1, 0)</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;        KSL(0, 0, 7, 6, 5, 4)</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;        KSL(1, 1, 0, 7, 6, 5)</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;        KSL(1, 2, 1, 0, 7, 6)</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;        KSL(1, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;        KSL(1, 5, 4, 3, 2, 1)</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;        KSL(1, 6, 5, 4, 3, 2)</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;        KSL(1, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;        KSH(0, 0, 7, 6, 5, 4)</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;        KSH(0, 4, 3, 2, 1, 0)</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;        KSH(1, 1, 0, 7, 6, 5)</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        KSH(1, 2, 1, 0, 7, 6)</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;        KSH(1, 5, 4, 3, 2, 1)</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;        KSH(1, 6, 5, 4, 3, 2)</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;        KSH(2, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;        KSH(2, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        AS2(    pxor    mm0, [AS_REG_6 + 8*1024 + WORD_REG(si)*8])</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;        AS2(    movq    [SSE2_workspace], mm0)</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;        TSL(0, 4, 3, 2, 1, 0)</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;        TSL(0, 0, 7, 6, 5, 4)</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;        TSL(1, 1, 0, 7, 6, 5)</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;        TSL(1, 2, 1, 0, 7, 6)</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;        TSL(1, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;        TSL(1, 5, 4, 3, 2, 1)</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;        TSL(1, 6, 5, 4, 3, 2)</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;        TSL(1, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;        TSH(0, 0, 7, 6, 5, 4)</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;        TSH(0, 4, 3, 2, 1, 0)</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;        TSH(1, 1, 0, 7, 6, 5)</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;        TSH(1, 2, 1, 0, 7, 6)</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;        TSH(1, 5, 4, 3, 2, 1)</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        TSH(1, 6, 5, 4, 3, 2)</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;        AS1(    inc     WORD_REG(si))</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;        AS2(    cmp     WORD_REG(si), 10)</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;        ASJ(    je,     2, f)</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;        TSH(2, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;        TSH(2, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        ASJ(    jmp,    1, b)</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;        ASL(2)</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        TSH(3, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;        TSH(3, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;#undef KSL</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;#undef KSH</div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;#undef TSL</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;#undef TSH</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;        AS_POP_IF86(    sp)</div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        AS1(    emms)</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;#<span class="keywordflow">if</span> defined(__GNUC__)</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        AS_POP_IF86(    bx)</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;#endif</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;#ifdef __GNUC__</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        ATT_PREFIX</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;            :</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;            : <span class="stringliteral">&quot;a&quot;</span> (Whirlpool_C), <span class="stringliteral">&quot;c&quot;</span> (digest), <span class="stringliteral">&quot;d&quot;</span> (block)</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;    #<span class="keywordflow">if</span> CRYPTOPP_BOOL_X64</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;            , <span class="stringliteral">&quot;r&quot;</span> (workspace)</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;    #endif</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;            : <span class="stringliteral">&quot;%esi&quot;</span>, <span class="stringliteral">&quot;%edi&quot;</span>, <span class="stringliteral">&quot;memory&quot;</span>, <span class="stringliteral">&quot;cc&quot;</span></div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;    #<span class="keywordflow">if</span> CRYPTOPP_BOOL_X64</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;            , <span class="stringliteral">&quot;%r9&quot;</span></div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    #endif</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;        );</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    }</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;    <span class="keywordflow">else</span></div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;<span class="preprocessor">#endif      // #ifdef CRYPTOPP_X86_ASM_AVAILABLE</span></div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    {</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    word64 s[8];    <span class="comment">// the cipher state</span></div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    word64 k[8];    <span class="comment">// the round key</span></div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;    <span class="comment">// Compute and apply K^0 to the cipher state</span></div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;    <span class="comment">// Also apply part of the Miyaguchi-Preneel compression function</span></div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;8; i++)</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        digest[i] = s[i] = block[i] ^ (k[i] = digest[i]);</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;<span class="preprocessor">#define KSL(op, i, a, b, c, d)  \</span></div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;<span class="preprocessor">    t = (word32)k[i];\</span></div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;<span class="preprocessor">    w##a = Whirlpool_C[3*256 + (byte)t] ^ (op ? w##a : 0);\</span></div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;<span class="preprocessor">    w##b = Whirlpool_C[2*256 + (byte)t] ^ (op ? w##b : 0);\</span></div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;<span class="preprocessor">    w##c = Whirlpool_C[1*256 + (byte)t] ^ (op ? w##c : 0);\</span></div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;<span class="preprocessor">    w##d = Whirlpool_C[0*256 + t]       ^ (op ? w##d : 0);</span></div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;<span class="preprocessor">#define KSH(op, i, a, b, c, d)  \</span></div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;<span class="preprocessor">    t = (word32)(k[(i+4)%8]&gt;&gt;32);\</span></div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;<span class="preprocessor">    w##a = Whirlpool_C[3*256 + (byte)t] ^ (op ? w##a : rotrConstant&lt;32&gt;(w##a));\</span></div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;<span class="preprocessor">    if (op==2) k[a] = w##a;\</span></div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;<span class="preprocessor">    w##b = Whirlpool_C[2*256 + (byte)t] ^ (op ? w##b : rotrConstant&lt;32&gt;(w##b));\</span></div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;<span class="preprocessor">    if (op==2) k[b] = w##b;\</span></div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;<span class="preprocessor">    w##c = Whirlpool_C[1*256 + (byte)t] ^ (op ? w##c : rotrConstant&lt;32&gt;(w##c));\</span></div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;<span class="preprocessor">    if (op==2) k[c] = w##c;\</span></div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;<span class="preprocessor">    w##d = Whirlpool_C[0*256 + t]       ^ (op ? w##d : rotrConstant&lt;32&gt;(w##d));\</span></div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;<span class="preprocessor">    if (op==2) k[d] = w##d;\</span></div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;<span class="preprocessor"></span></div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;<span class="preprocessor">#define TSL(op, i, a, b, c, d)  \</span></div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;<span class="preprocessor">    t = (word32)s[i];\</span></div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;<span class="preprocessor">    w##a = Whirlpool_C[3*256 + (byte)t] ^ (op ? w##a : 0);\</span></div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;<span class="preprocessor">    w##b = Whirlpool_C[2*256 + (byte)t] ^ (op ? w##b : 0);\</span></div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;<span class="preprocessor">    w##c = Whirlpool_C[1*256 + (byte)t] ^ (op ? w##c : 0);\</span></div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;<span class="preprocessor">    w##d = Whirlpool_C[0*256 + t]       ^ (op ? w##d : 0);</span></div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;<span class="preprocessor">#define TSH_OP(op, a, b)    \</span></div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;<span class="preprocessor">    w##a = Whirlpool_C[b*256 + (byte)t] ^ (op ? w##a : rotrConstant&lt;32&gt;(w##a) ^ k[a]);\</span></div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;<span class="preprocessor">    if (op==2) s[a] = w##a;\</span></div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;<span class="preprocessor">    if (op==3) digest[a] ^= w##a;\</span></div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;<span class="preprocessor"></span></div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;<span class="preprocessor">#define TSH(op, i, a, b, c, d)  \</span></div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;<span class="preprocessor">    t = (word32)(s[(i+4)%8]&gt;&gt;32);\</span></div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;<span class="preprocessor">    TSH_OP(op, a, 3);\</span></div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;<span class="preprocessor">    TSH_OP(op, b, 2);\</span></div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;<span class="preprocessor">    TSH_OP(op, c, 1);\</span></div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;<span class="preprocessor">    t &gt;&gt;= 8;\</span></div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;<span class="preprocessor">    TSH_OP(op, d, 0);\</span></div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;<span class="preprocessor"></span></div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    <span class="comment">// Iterate over all rounds:</span></div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;    <span class="keywordtype">int</span> r=0;</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    {</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;        <span class="comment">// Added initialization due to Coverity findings.</span></div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;        word64 w0=0, w1=0, w2=0, w3=0, w4=0, w5=0, w6=0, w7=0;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;        word32 t=0;</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;        KSL(0, 4, 3, 2, 1, 0)</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;        KSL(0, 0, 7, 6, 5, 4)</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;        KSL(1, 1, 0, 7, 6, 5)</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;        KSL(1, 2, 1, 0, 7, 6)</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;        KSL(1, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;        KSL(1, 5, 4, 3, 2, 1)</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;        KSL(1, 6, 5, 4, 3, 2)</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;        KSL(1, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;        KSH(0, 0, 7, 6, 5, 4)</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;        KSH(0, 4, 3, 2, 1, 0)</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;        KSH(1, 1, 0, 7, 6, 5)</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;        KSH(1, 2, 1, 0, 7, 6)</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;        KSH(1, 5, 4, 3, 2, 1)</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;        KSH(1, 6, 5, 4, 3, 2)</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;        KSH(2, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;        KSH(2, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;        k[0] ^= Whirlpool_C[1024+r];</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;        TSL(0, 4, 3, 2, 1, 0)</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;        TSL(0, 0, 7, 6, 5, 4)</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;        TSL(1, 1, 0, 7, 6, 5)</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;        TSL(1, 2, 1, 0, 7, 6)</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        TSL(1, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;        TSL(1, 5, 4, 3, 2, 1)</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;        TSL(1, 6, 5, 4, 3, 2)</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;        TSL(1, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;        TSH(0, 0, 7, 6, 5, 4)</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;        TSH(0, 4, 3, 2, 1, 0)</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;        TSH(1, 1, 0, 7, 6, 5)</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;        TSH(1, 2, 1, 0, 7, 6)</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;        TSH(1, 5, 4, 3, 2, 1)</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;        TSH(1, 6, 5, 4, 3, 2)</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;        if (++r &lt; R)</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;        {</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;            TSH(2, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;            TSH(2, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;        }</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;        else</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;        {</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;            TSH(3, 3, 2, 1, 0, 7)</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;            TSH(3, 7, 6, 5, 4, 3)</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;            break;</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;        }</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;    }</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;    }</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;}</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;NAMESPACE_END</div><div class="ttc" id="misc_8h_html"><div class="ttname"><a href="misc_8h.html">misc.h</a></div><div class="ttdoc">Utility functions for the Crypto++ library. </div></div>
<div class="ttc" id="config_8h_html"><div class="ttname"><a href="config_8h.html">config.h</a></div><div class="ttdoc">Library configuration file. </div></div>
<div class="ttc" id="class_whirlpool_html_ad4c14416343a26485a6fdaf02eeb2c4f"><div class="ttname"><a href="class_whirlpool.html#ad4c14416343a26485a6fdaf02eeb2c4f">Whirlpool::TruncatedFinal</a></div><div class="ttdeci">void TruncatedFinal(byte *hash, size_t size)</div><div class="ttdoc">Computes the hash of the current message. </div><div class="ttdef"><b>Definition:</b> <a href="whrlpool_8cpp_source.html#l00097">whrlpool.cpp:97</a></div></div>
<div class="ttc" id="class_whirlpool_html"><div class="ttname"><a href="class_whirlpool.html">Whirlpool</a></div><div class="ttdoc">Whirlpool message digest. </div><div class="ttdef"><b>Definition:</b> <a href="whrlpool_8h_source.html#l00023">whrlpool.h:23</a></div></div>
<div class="ttc" id="pch_8h_html"><div class="ttname"><a href="pch_8h.html">pch.h</a></div><div class="ttdoc">Precompiled header file. </div></div>
<div class="ttc" id="class_iterated_hash_html_a367c073a215b32e121cf5a4b2d0b96ad"><div class="ttname"><a href="class_iterated_hash.html#a367c073a215b32e121cf5a4b2d0b96ad">IteratedHash&lt; word64, BigEndian, T_BlockSize &gt;::CorrectEndianess</a></div><div class="ttdeci">void CorrectEndianess(HashWordType *out, const HashWordType *in, size_t byteCount)</div><div class="ttdoc">Adjusts the byte ordering of the hash. </div><div class="ttdef"><b>Definition:</b> <a href="iterhash_8h_source.html#l00140">iterhash.h:140</a></div></div>
<div class="ttc" id="class_iterated_hash_with_static_transform_html_a97705945f072fc8f9ba7cfc6193b8f5a"><div class="ttname"><a href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word64, BigEndian, 64, 64, Whirlpool &gt;::DigestSize</a></div><div class="ttdeci">unsigned int DigestSize() const</div><div class="ttdoc">Provides the digest size of the hash. </div><div class="ttdef"><b>Definition:</b> <a href="iterhash_8h_source.html#l00171">iterhash.h:171</a></div></div>
<div class="ttc" id="cpu_8h_html"><div class="ttname"><a href="cpu_8h.html">cpu.h</a></div><div class="ttdoc">Functions for CPU features and intrinsics. </div></div>
<div class="ttc" id="whrlpool_8h_html"><div class="ttname"><a href="whrlpool_8h.html">whrlpool.h</a></div><div class="ttdoc">Classes for the Whirlpool message digest. </div></div>
<div class="ttc" id="class_iterated_hash_base_html_ad53da712634ea213ad047b2a68b0fe70"><div class="ttname"><a href="class_iterated_hash_base.html#ad53da712634ea213ad047b2a68b0fe70">IteratedHashBase&lt; word64, HashTransformation &gt;::Restart</a></div><div class="ttdeci">void Restart()</div><div class="ttdoc">Restart the hash. </div><div class="ttdef"><b>Definition:</b> <a href="iterhash_8cpp_source.html#l00123">iterhash.cpp:123</a></div></div>
<div class="ttc" id="cpu_8h_html_a962fa16f6d3a8a518912b39c3ea84062"><div class="ttname"><a href="cpu_8h.html#a962fa16f6d3a8a518912b39c3ea84062">HasSSE2</a></div><div class="ttdeci">bool HasSSE2()</div><div class="ttdoc">Determines SSE2 availability. </div><div class="ttdef"><b>Definition:</b> <a href="cpu_8h_source.html#l00114">cpu.h:114</a></div></div>
<div class="ttc" id="namespace_crypto_p_p_html"><div class="ttname"><a href="namespace_crypto_p_p.html">CryptoPP</a></div><div class="ttdoc">Crypto++ library namespace. </div></div>
<div class="ttc" id="class_whirlpool_html_ad35ae383ad169c5f58ec3e7e563a1399"><div class="ttname"><a href="class_whirlpool.html#ad35ae383ad169c5f58ec3e7e563a1399">Whirlpool::InitState</a></div><div class="ttdeci">static void InitState(HashWordType *state)</div><div class="ttdoc">The Whirlpool hashing function. </div><div class="ttdef"><b>Definition:</b> <a href="whrlpool_8cpp_source.html#l00092">whrlpool.cpp:92</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 16 2018 07:58:08 for Crypto++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>