blob: 79efd6e31f34a722497a500269f2cbac6c35ad0b [file] [log] [blame]
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.8" xml:lang="en-US">
<compounddef id="murmurhash3__internal_8cc" kind="file" language="C++">
<compoundname>murmurhash3_internal.cc</compoundname>
<includes refid="murmurhash3__internal_8h" local="yes">iceberg/util/murmurhash3_internal.h</includes>
<incdepgraph>
<node id="1">
<label>iceberg/util/murmurhash3_internal.cc</label>
<link refid="murmurhash3__internal_8cc"/>
<childnode refid="2" relation="include">
</childnode>
</node>
<node id="2">
<label>iceberg/util/murmurhash3_internal.h</label>
<link refid="murmurhash3__internal_8h_source"/>
<childnode refid="3" relation="include">
</childnode>
</node>
<node id="3">
<label>cstdint</label>
</node>
</incdepgraph>
<innernamespace refid="namespaceiceberg">iceberg</innernamespace>
<sectiondef kind="define">
<memberdef kind="define" id="murmurhash3__internal_8cc_1ac032d233a8ebfcd82fd49d0824eefb18" prot="public" static="no">
<name>FORCE_INLINE</name>
<initializer>inline __attribute__((always_inline))</initializer>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/util/murmurhash3_internal.cc" line="32" column="11" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="32" bodyend="-1"/>
</memberdef>
<memberdef kind="define" id="murmurhash3__internal_8cc_1ab32bb365c62dcb0da675e248b7e814a9" prot="public" static="no">
<name>ROTL32</name>
<param><defname>x</defname></param>
<param><defname>y</defname></param>
<initializer>rotl32(x, y)</initializer>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/util/murmurhash3_internal.cc" line="38" column="11" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="38" bodyend="-1"/>
</memberdef>
<memberdef kind="define" id="murmurhash3__internal_8cc_1a612c70207b96b27f06eff614e3b9ffd9" prot="public" static="no">
<name>ROTL64</name>
<param><defname>x</defname></param>
<param><defname>y</defname></param>
<initializer>rotl64(x, y)</initializer>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/util/murmurhash3_internal.cc" line="39" column="11" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="39" bodyend="-1"/>
</memberdef>
<memberdef kind="define" id="murmurhash3__internal_8cc_1a8e0f90a6ea3d3db65033b8ace70cb65a" prot="public" static="no">
<name>BIG_CONSTANT</name>
<param><defname>x</defname></param>
<initializer>(x##LLU)</initializer>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/util/murmurhash3_internal.cc" line="41" column="11" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="41" bodyend="-1"/>
</memberdef>
</sectiondef>
<sectiondef kind="func">
<memberdef kind="function" id="murmurhash3__internal_8cc_1a1bb665f421e67f5adc7b8acd3cda136e" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
<type>uint32_t</type>
<definition>uint32_t rotl32</definition>
<argsstring>(uint32_t x, int8_t r)</argsstring>
<name>rotl32</name>
<param>
<type>uint32_t</type>
<declname>x</declname>
</param>
<param>
<type>int8_t</type>
<declname>r</declname>
</param>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/util/murmurhash3_internal.cc" line="34" column="17" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="34" bodyend="34"/>
</memberdef>
<memberdef kind="function" id="murmurhash3__internal_8cc_1a1a727ab783adafe06deef8bfd6bf314d" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
<type>uint64_t</type>
<definition>uint64_t rotl64</definition>
<argsstring>(uint64_t x, int8_t r)</argsstring>
<name>rotl64</name>
<param>
<type>uint64_t</type>
<declname>x</declname>
</param>
<param>
<type>int8_t</type>
<declname>r</declname>
</param>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<inbodydescription>
</inbodydescription>
<location file="iceberg/util/murmurhash3_internal.cc" line="36" column="17" bodyfile="iceberg/util/murmurhash3_internal.cc" bodystart="36" bodyend="36"/>
</memberdef>
</sectiondef>
<briefdescription>
</briefdescription>
<detaileddescription>
</detaileddescription>
<programlisting>
<codeline lineno="1"><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="2"><highlight class="normal"></highlight><highlight class="comment">//<sp/>MurmurHash3<sp/>was<sp/>written<sp/>by<sp/>Austin<sp/>Appleby,<sp/>and<sp/>is<sp/>placed<sp/>in<sp/>the<sp/>public</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="3"><highlight class="normal"></highlight><highlight class="comment">//<sp/>domain.<sp/>The<sp/>author<sp/>hereby<sp/>disclaims<sp/>copyright<sp/>to<sp/>this<sp/>source<sp/>code.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="4"><highlight class="normal"></highlight></codeline>
<codeline lineno="5"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Note<sp/>-<sp/>The<sp/>x86<sp/>and<sp/>x64<sp/>versions<sp/>do<sp/>_not_<sp/>produce<sp/>the<sp/>same<sp/>results,<sp/>as<sp/>the</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="6"><highlight class="normal"></highlight><highlight class="comment">//<sp/>algorithms<sp/>are<sp/>optimized<sp/>for<sp/>their<sp/>respective<sp/>platforms.<sp/>You<sp/>can<sp/>still</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="7"><highlight class="normal"></highlight><highlight class="comment">//<sp/>compile<sp/>and<sp/>run<sp/>any<sp/>of<sp/>them<sp/>on<sp/>any<sp/>platform,<sp/>but<sp/>your<sp/>performance<sp/>with<sp/>the</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="8"><highlight class="normal"></highlight><highlight class="comment">//<sp/>non-native<sp/>version<sp/>will<sp/>be<sp/>less<sp/>than<sp/>optimal.</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="9"><highlight class="normal"></highlight></codeline>
<codeline lineno="10"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;iceberg/util/murmurhash3_internal.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="11"><highlight class="normal"></highlight></codeline>
<codeline lineno="12"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="13"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Platform-specific<sp/>functions<sp/>and<sp/>macros</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="14"><highlight class="normal"></highlight></codeline>
<codeline lineno="15"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Microsoft<sp/>Visual<sp/>Studio</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="16"><highlight class="normal"></highlight></codeline>
<codeline lineno="17"><highlight class="normal"></highlight><highlight class="preprocessor">#if<sp/>defined(_MSC_VER)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="18"><highlight class="normal"></highlight></codeline>
<codeline lineno="19"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>FORCE_INLINE<sp/>__forceinline</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="20"><highlight class="normal"></highlight></codeline>
<codeline lineno="21"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>include<sp/>&lt;cstdlib&gt;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="22"><highlight class="normal"></highlight></codeline>
<codeline lineno="23"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>ROTL32(x,<sp/>y)<sp/>_rotl(x,<sp/>y)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="24"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>ROTL64(x,<sp/>y)<sp/>_rotl64(x,<sp/>y)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="25"><highlight class="normal"></highlight></codeline>
<codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>BIG_CONSTANT(x)<sp/>(x)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="27"><highlight class="normal"></highlight></codeline>
<codeline lineno="28"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Other<sp/>compilers</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="29"><highlight class="normal"></highlight></codeline>
<codeline lineno="30"><highlight class="normal"></highlight><highlight class="preprocessor">#else<sp/><sp/></highlight><highlight class="comment">//<sp/>defined(_MSC_VER)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="31"><highlight class="normal"></highlight></codeline>
<codeline lineno="32"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>FORCE_INLINE<sp/>inline<sp/>__attribute__((always_inline))</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="33"><highlight class="normal"></highlight></codeline>
<codeline lineno="34"><highlight class="normal"></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/>uint32_t<sp/>rotl32(uint32_t<sp/>x,<sp/>int8_t<sp/>r)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>(x<sp/>&lt;&lt;<sp/>r)<sp/>|<sp/>(x<sp/>&gt;&gt;<sp/>(32<sp/>-<sp/>r));<sp/>}</highlight></codeline>
<codeline lineno="35"><highlight class="normal"></highlight></codeline>
<codeline lineno="36"><highlight class="normal"></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/>uint64_t<sp/>rotl64(uint64_t<sp/>x,<sp/>int8_t<sp/>r)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>(x<sp/>&lt;&lt;<sp/>r)<sp/>|<sp/>(x<sp/>&gt;&gt;<sp/>(64<sp/>-<sp/>r));<sp/>}</highlight></codeline>
<codeline lineno="37"><highlight class="normal"></highlight></codeline>
<codeline lineno="38"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>ROTL32(x,<sp/>y)<sp/>rotl32(x,<sp/>y)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="39"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>ROTL64(x,<sp/>y)<sp/>rotl64(x,<sp/>y)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="40"><highlight class="normal"></highlight></codeline>
<codeline lineno="41"><highlight class="normal"></highlight><highlight class="preprocessor">#<sp/><sp/>define<sp/>BIG_CONSTANT(x)<sp/>(x##LLU)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="42"><highlight class="normal"></highlight></codeline>
<codeline lineno="43"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/><sp/></highlight><highlight class="comment">//<sp/>!defined(_MSC_VER)</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="44"><highlight class="normal"></highlight></codeline>
<codeline lineno="45"><highlight class="normal"></highlight><highlight class="comment">//<sp/>NOLINTBEGIN</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="46"><highlight class="normal"></highlight></codeline>
<codeline lineno="47"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">iceberg<sp/>{</highlight></codeline>
<codeline lineno="48"><highlight class="normal"></highlight></codeline>
<codeline lineno="49"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="50"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="51"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Block<sp/>read<sp/>-<sp/>if<sp/>your<sp/>platform<sp/>needs<sp/>to<sp/>do<sp/>endian-swapping<sp/>or<sp/>can<sp/>only</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="52"><highlight class="normal"></highlight><highlight class="comment">//<sp/>handle<sp/>aligned<sp/>reads,<sp/>do<sp/>the<sp/>conversion<sp/>here</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="53"><highlight class="normal"></highlight></codeline>
<codeline lineno="54"><highlight class="normal">FORCE_INLINE<sp/>uint32_t<sp/>getblock32(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*<sp/>p,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>p[i];<sp/>}</highlight></codeline>
<codeline lineno="55"><highlight class="normal"></highlight></codeline>
<codeline lineno="56"><highlight class="normal">FORCE_INLINE<sp/>uint64_t<sp/>getblock64(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t*<sp/>p,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i)<sp/>{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>p[i];<sp/>}</highlight></codeline>
<codeline lineno="57"><highlight class="normal"></highlight></codeline>
<codeline lineno="58"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="59"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Finalization<sp/>mix<sp/>-<sp/>force<sp/>all<sp/>bits<sp/>of<sp/>a<sp/>hash<sp/>block<sp/>to<sp/>avalanche</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="60"><highlight class="normal"></highlight></codeline>
<codeline lineno="61"><highlight class="normal">FORCE_INLINE<sp/>uint32_t<sp/>fmix32(uint32_t<sp/>h)<sp/>{</highlight></codeline>
<codeline lineno="62"><highlight class="normal"><sp/><sp/>h<sp/>^=<sp/>h<sp/>&gt;&gt;<sp/>16;</highlight></codeline>
<codeline lineno="63"><highlight class="normal"><sp/><sp/>h<sp/>*=<sp/>0x85ebca6b;</highlight></codeline>
<codeline lineno="64"><highlight class="normal"><sp/><sp/>h<sp/>^=<sp/>h<sp/>&gt;&gt;<sp/>13;</highlight></codeline>
<codeline lineno="65"><highlight class="normal"><sp/><sp/>h<sp/>*=<sp/>0xc2b2ae35;</highlight></codeline>
<codeline lineno="66"><highlight class="normal"><sp/><sp/>h<sp/>^=<sp/>h<sp/>&gt;&gt;<sp/>16;</highlight></codeline>
<codeline lineno="67"><highlight class="normal"></highlight></codeline>
<codeline lineno="68"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>h;</highlight></codeline>
<codeline lineno="69"><highlight class="normal">}</highlight></codeline>
<codeline lineno="70"><highlight class="normal"></highlight></codeline>
<codeline lineno="71"><highlight class="normal"></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="72"><highlight class="normal"></highlight></codeline>
<codeline lineno="73"><highlight class="normal">FORCE_INLINE<sp/>uint64_t<sp/>fmix64(uint64_t<sp/>k)<sp/>{</highlight></codeline>
<codeline lineno="74"><highlight class="normal"><sp/><sp/>k<sp/>^=<sp/>k<sp/>&gt;&gt;<sp/>33;</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/>k<sp/>*=<sp/>BIG_CONSTANT(0xff51afd7ed558ccd);</highlight></codeline>
<codeline lineno="76"><highlight class="normal"><sp/><sp/>k<sp/>^=<sp/>k<sp/>&gt;&gt;<sp/>33;</highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/>k<sp/>*=<sp/>BIG_CONSTANT(0xc4ceb9fe1a85ec53);</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/>k<sp/>^=<sp/>k<sp/>&gt;&gt;<sp/>33;</highlight></codeline>
<codeline lineno="79"><highlight class="normal"></highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>k;</highlight></codeline>
<codeline lineno="81"><highlight class="normal">}</highlight></codeline>
<codeline lineno="82"><highlight class="normal"></highlight></codeline>
<codeline lineno="83"><highlight class="normal">}<sp/><sp/></highlight><highlight class="comment">//<sp/>namespace</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="84"><highlight class="normal"></highlight></codeline>
<codeline lineno="85"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="86"><highlight class="normal"></highlight></codeline>
<codeline lineno="87"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>MurmurHash3_x86_32(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>key,<sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>len,<sp/>uint32_t<sp/>seed,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>out)<sp/>{</highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>data<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)key;</highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nblocks<sp/>=<sp/>len<sp/>/<sp/>4;</highlight></codeline>
<codeline lineno="90"><highlight class="normal"></highlight></codeline>
<codeline lineno="91"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h1<sp/>=<sp/>seed;</highlight></codeline>
<codeline lineno="92"><highlight class="normal"></highlight></codeline>
<codeline lineno="93"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c1<sp/>=<sp/>0xcc9e2d51;</highlight></codeline>
<codeline lineno="94"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c2<sp/>=<sp/>0x1b873593;</highlight></codeline>
<codeline lineno="95"><highlight class="normal"></highlight></codeline>
<codeline lineno="96"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="97"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>body</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="98"><highlight class="normal"></highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*<sp/>blocks<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>4);</highlight></codeline>
<codeline lineno="100"><highlight class="normal"></highlight></codeline>
<codeline lineno="101"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>-nblocks;<sp/>i;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="102"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k1<sp/>=<sp/>getblock32(blocks,<sp/>i);</highlight></codeline>
<codeline lineno="103"><highlight class="normal"></highlight></codeline>
<codeline lineno="104"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL32(k1,<sp/>15);</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="107"><highlight class="normal"></highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline>
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>ROTL32(h1,<sp/>13);</highlight></codeline>
<codeline lineno="110"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>h1<sp/>*<sp/>5<sp/>+<sp/>0xe6546b64;</highlight></codeline>
<codeline lineno="111"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="112"><highlight class="normal"></highlight></codeline>
<codeline lineno="113"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="114"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>tail</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="115"><highlight class="normal"></highlight></codeline>
<codeline lineno="116"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>tail<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>4);</highlight></codeline>
<codeline lineno="117"><highlight class="normal"></highlight></codeline>
<codeline lineno="118"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k1<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="119"><highlight class="normal"></highlight></codeline>
<codeline lineno="120"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(len<sp/>&amp;<sp/>3)<sp/>{</highlight></codeline>
<codeline lineno="121"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>3:</highlight></codeline>
<codeline lineno="122"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[2]<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="123"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="124"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>2:</highlight></codeline>
<codeline lineno="125"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[1]<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="126"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>1:</highlight></codeline>
<codeline lineno="128"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[0];</highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL32(k1,<sp/>15);</highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline>
<codeline lineno="133"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="134"><highlight class="normal"></highlight></codeline>
<codeline lineno="135"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="136"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>finalization</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="137"><highlight class="normal"></highlight></codeline>
<codeline lineno="138"><highlight class="normal"><sp/><sp/>h1<sp/>^=<sp/>len;</highlight></codeline>
<codeline lineno="139"><highlight class="normal"></highlight></codeline>
<codeline lineno="140"><highlight class="normal"><sp/><sp/>h1<sp/>=<sp/>fmix32(h1);</highlight></codeline>
<codeline lineno="141"><highlight class="normal"></highlight></codeline>
<codeline lineno="142"><highlight class="normal"><sp/><sp/>*(uint32_t*)out<sp/>=<sp/>h1;</highlight></codeline>
<codeline lineno="143"><highlight class="normal">}</highlight></codeline>
<codeline lineno="144"><highlight class="normal"></highlight></codeline>
<codeline lineno="145"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="146"><highlight class="normal"></highlight></codeline>
<codeline lineno="147"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>MurmurHash3_x86_128(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>key,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>len,<sp/>uint32_t<sp/>seed,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>out)<sp/>{</highlight></codeline>
<codeline lineno="148"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>data<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)key;</highlight></codeline>
<codeline lineno="149"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nblocks<sp/>=<sp/>len<sp/>/<sp/>16;</highlight></codeline>
<codeline lineno="150"><highlight class="normal"></highlight></codeline>
<codeline lineno="151"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h1<sp/>=<sp/>seed;</highlight></codeline>
<codeline lineno="152"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h2<sp/>=<sp/>seed;</highlight></codeline>
<codeline lineno="153"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h3<sp/>=<sp/>seed;</highlight></codeline>
<codeline lineno="154"><highlight class="normal"><sp/><sp/>uint32_t<sp/>h4<sp/>=<sp/>seed;</highlight></codeline>
<codeline lineno="155"><highlight class="normal"></highlight></codeline>
<codeline lineno="156"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c1<sp/>=<sp/>0x239b961b;</highlight></codeline>
<codeline lineno="157"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c2<sp/>=<sp/>0xab0e9789;</highlight></codeline>
<codeline lineno="158"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c3<sp/>=<sp/>0x38b34ae5;</highlight></codeline>
<codeline lineno="159"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>c4<sp/>=<sp/>0xa1e38b93;</highlight></codeline>
<codeline lineno="160"><highlight class="normal"></highlight></codeline>
<codeline lineno="161"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="162"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>body</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="163"><highlight class="normal"></highlight></codeline>
<codeline lineno="164"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*<sp/>blocks<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>16);</highlight></codeline>
<codeline lineno="165"><highlight class="normal"></highlight></codeline>
<codeline lineno="166"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>-nblocks;<sp/>i;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k1<sp/>=<sp/>getblock32(blocks,<sp/>i<sp/>*<sp/>4<sp/>+<sp/>0);</highlight></codeline>
<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k2<sp/>=<sp/>getblock32(blocks,<sp/>i<sp/>*<sp/>4<sp/>+<sp/>1);</highlight></codeline>
<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k3<sp/>=<sp/>getblock32(blocks,<sp/>i<sp/>*<sp/>4<sp/>+<sp/>2);</highlight></codeline>
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/>uint32_t<sp/>k4<sp/>=<sp/>getblock32(blocks,<sp/>i<sp/>*<sp/>4<sp/>+<sp/>3);</highlight></codeline>
<codeline lineno="171"><highlight class="normal"></highlight></codeline>
<codeline lineno="172"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="173"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL32(k1,<sp/>15);</highlight></codeline>
<codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline>
<codeline lineno="176"><highlight class="normal"></highlight></codeline>
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>ROTL32(h1,<sp/>19);</highlight></codeline>
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline>
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>h1<sp/>*<sp/>5<sp/>+<sp/>0x561ccd1b;</highlight></codeline>
<codeline lineno="180"><highlight class="normal"></highlight></codeline>
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="182"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>=<sp/>ROTL32(k2,<sp/>16);</highlight></codeline>
<codeline lineno="183"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c3;</highlight></codeline>
<codeline lineno="184"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>^=<sp/>k2;</highlight></codeline>
<codeline lineno="185"><highlight class="normal"></highlight></codeline>
<codeline lineno="186"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>=<sp/>ROTL32(h2,<sp/>17);</highlight></codeline>
<codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>+=<sp/>h3;</highlight></codeline>
<codeline lineno="188"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>=<sp/>h2<sp/>*<sp/>5<sp/>+<sp/>0x0bcaa747;</highlight></codeline>
<codeline lineno="189"><highlight class="normal"></highlight></codeline>
<codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/>k3<sp/>*=<sp/>c3;</highlight></codeline>
<codeline lineno="191"><highlight class="normal"><sp/><sp/><sp/><sp/>k3<sp/>=<sp/>ROTL32(k3,<sp/>17);</highlight></codeline>
<codeline lineno="192"><highlight class="normal"><sp/><sp/><sp/><sp/>k3<sp/>*=<sp/>c4;</highlight></codeline>
<codeline lineno="193"><highlight class="normal"><sp/><sp/><sp/><sp/>h3<sp/>^=<sp/>k3;</highlight></codeline>
<codeline lineno="194"><highlight class="normal"></highlight></codeline>
<codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/>h3<sp/>=<sp/>ROTL32(h3,<sp/>15);</highlight></codeline>
<codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/>h3<sp/>+=<sp/>h4;</highlight></codeline>
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/>h3<sp/>=<sp/>h3<sp/>*<sp/>5<sp/>+<sp/>0x96cd1c35;</highlight></codeline>
<codeline lineno="198"><highlight class="normal"></highlight></codeline>
<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/>k4<sp/>*=<sp/>c4;</highlight></codeline>
<codeline lineno="200"><highlight class="normal"><sp/><sp/><sp/><sp/>k4<sp/>=<sp/>ROTL32(k4,<sp/>18);</highlight></codeline>
<codeline lineno="201"><highlight class="normal"><sp/><sp/><sp/><sp/>k4<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="202"><highlight class="normal"><sp/><sp/><sp/><sp/>h4<sp/>^=<sp/>k4;</highlight></codeline>
<codeline lineno="203"><highlight class="normal"></highlight></codeline>
<codeline lineno="204"><highlight class="normal"><sp/><sp/><sp/><sp/>h4<sp/>=<sp/>ROTL32(h4,<sp/>13);</highlight></codeline>
<codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/>h4<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="206"><highlight class="normal"><sp/><sp/><sp/><sp/>h4<sp/>=<sp/>h4<sp/>*<sp/>5<sp/>+<sp/>0x32ac3b17;</highlight></codeline>
<codeline lineno="207"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="208"><highlight class="normal"></highlight></codeline>
<codeline lineno="209"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="210"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>tail</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="211"><highlight class="normal"></highlight></codeline>
<codeline lineno="212"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>tail<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>16);</highlight></codeline>
<codeline lineno="213"><highlight class="normal"></highlight></codeline>
<codeline lineno="214"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k1<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="215"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k2<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="216"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k3<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="217"><highlight class="normal"><sp/><sp/>uint32_t<sp/>k4<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="218"><highlight class="normal"></highlight></codeline>
<codeline lineno="219"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(len<sp/>&amp;<sp/>15)<sp/>{</highlight></codeline>
<codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>15:</highlight></codeline>
<codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>^=<sp/>tail[14]<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>14:</highlight></codeline>
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>^=<sp/>tail[13]<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>13:</highlight></codeline>
<codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>^=<sp/>tail[12]<sp/>&lt;&lt;<sp/>0;</highlight></codeline>
<codeline lineno="228"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>*=<sp/>c4;</highlight></codeline>
<codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>=<sp/>ROTL32(k4,<sp/>18);</highlight></codeline>
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k4<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h4<sp/>^=<sp/>k4;</highlight></codeline>
<codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="233"><highlight class="normal"></highlight></codeline>
<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>12:</highlight></codeline>
<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>^=<sp/>tail[11]<sp/>&lt;&lt;<sp/>24;</highlight></codeline>
<codeline lineno="236"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="237"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>11:</highlight></codeline>
<codeline lineno="238"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>^=<sp/>tail[10]<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>10:</highlight></codeline>
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>^=<sp/>tail[9]<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="243"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>9:</highlight></codeline>
<codeline lineno="244"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>^=<sp/>tail[8]<sp/>&lt;&lt;<sp/>0;</highlight></codeline>
<codeline lineno="245"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>*=<sp/>c3;</highlight></codeline>
<codeline lineno="246"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>=<sp/>ROTL32(k3,<sp/>17);</highlight></codeline>
<codeline lineno="247"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k3<sp/>*=<sp/>c4;</highlight></codeline>
<codeline lineno="248"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h3<sp/>^=<sp/>k3;</highlight></codeline>
<codeline lineno="249"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="250"><highlight class="normal"></highlight></codeline>
<codeline lineno="251"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>8:</highlight></codeline>
<codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>tail[7]<sp/>&lt;&lt;<sp/>24;</highlight></codeline>
<codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>7:</highlight></codeline>
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>tail[6]<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="256"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>6:</highlight></codeline>
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>tail[5]<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="260"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>5:</highlight></codeline>
<codeline lineno="261"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>tail[4]<sp/>&lt;&lt;<sp/>0;</highlight></codeline>
<codeline lineno="262"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="263"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>=<sp/>ROTL32(k2,<sp/>16);</highlight></codeline>
<codeline lineno="264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c3;</highlight></codeline>
<codeline lineno="265"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h2<sp/>^=<sp/>k2;</highlight></codeline>
<codeline lineno="266"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="267"><highlight class="normal"></highlight></codeline>
<codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>4:</highlight></codeline>
<codeline lineno="269"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[3]<sp/>&lt;&lt;<sp/>24;</highlight></codeline>
<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="271"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>3:</highlight></codeline>
<codeline lineno="272"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[2]<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="273"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="274"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>2:</highlight></codeline>
<codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[1]<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="276"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>1:</highlight></codeline>
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>tail[0]<sp/>&lt;&lt;<sp/>0;</highlight></codeline>
<codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL32(k1,<sp/>15);</highlight></codeline>
<codeline lineno="281"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="282"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline>
<codeline lineno="283"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="284"><highlight class="normal"></highlight></codeline>
<codeline lineno="285"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="286"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>finalization</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="287"><highlight class="normal"></highlight></codeline>
<codeline lineno="288"><highlight class="normal"><sp/><sp/>h1<sp/>^=<sp/>len;</highlight></codeline>
<codeline lineno="289"><highlight class="normal"><sp/><sp/>h2<sp/>^=<sp/>len;</highlight></codeline>
<codeline lineno="290"><highlight class="normal"><sp/><sp/>h3<sp/>^=<sp/>len;</highlight></codeline>
<codeline lineno="291"><highlight class="normal"><sp/><sp/>h4<sp/>^=<sp/>len;</highlight></codeline>
<codeline lineno="292"><highlight class="normal"></highlight></codeline>
<codeline lineno="293"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline>
<codeline lineno="294"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h3;</highlight></codeline>
<codeline lineno="295"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h4;</highlight></codeline>
<codeline lineno="296"><highlight class="normal"><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="297"><highlight class="normal"><sp/><sp/>h3<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="298"><highlight class="normal"><sp/><sp/>h4<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="299"><highlight class="normal"></highlight></codeline>
<codeline lineno="300"><highlight class="normal"><sp/><sp/>h1<sp/>=<sp/>fmix32(h1);</highlight></codeline>
<codeline lineno="301"><highlight class="normal"><sp/><sp/>h2<sp/>=<sp/>fmix32(h2);</highlight></codeline>
<codeline lineno="302"><highlight class="normal"><sp/><sp/>h3<sp/>=<sp/>fmix32(h3);</highlight></codeline>
<codeline lineno="303"><highlight class="normal"><sp/><sp/>h4<sp/>=<sp/>fmix32(h4);</highlight></codeline>
<codeline lineno="304"><highlight class="normal"></highlight></codeline>
<codeline lineno="305"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline>
<codeline lineno="306"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h3;</highlight></codeline>
<codeline lineno="307"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h4;</highlight></codeline>
<codeline lineno="308"><highlight class="normal"><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="309"><highlight class="normal"><sp/><sp/>h3<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="310"><highlight class="normal"><sp/><sp/>h4<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="311"><highlight class="normal"></highlight></codeline>
<codeline lineno="312"><highlight class="normal"><sp/><sp/>((uint32_t*)out)[0]<sp/>=<sp/>h1;</highlight></codeline>
<codeline lineno="313"><highlight class="normal"><sp/><sp/>((uint32_t*)out)[1]<sp/>=<sp/>h2;</highlight></codeline>
<codeline lineno="314"><highlight class="normal"><sp/><sp/>((uint32_t*)out)[2]<sp/>=<sp/>h3;</highlight></codeline>
<codeline lineno="315"><highlight class="normal"><sp/><sp/>((uint32_t*)out)[3]<sp/>=<sp/>h4;</highlight></codeline>
<codeline lineno="316"><highlight class="normal">}</highlight></codeline>
<codeline lineno="317"><highlight class="normal"></highlight></codeline>
<codeline lineno="318"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="319"><highlight class="normal"></highlight></codeline>
<codeline lineno="320"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>MurmurHash3_x64_128(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>key,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>len,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint32_t<sp/>seed,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>out)<sp/>{</highlight></codeline>
<codeline lineno="321"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>data<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)key;</highlight></codeline>
<codeline lineno="322"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>nblocks<sp/>=<sp/>len<sp/>/<sp/>16;</highlight></codeline>
<codeline lineno="323"><highlight class="normal"></highlight></codeline>
<codeline lineno="324"><highlight class="normal"><sp/><sp/>uint64_t<sp/>h1<sp/>=<sp/>seed;</highlight></codeline>
<codeline lineno="325"><highlight class="normal"><sp/><sp/>uint64_t<sp/>h2<sp/>=<sp/>seed;</highlight></codeline>
<codeline lineno="326"><highlight class="normal"></highlight></codeline>
<codeline lineno="327"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t<sp/>c1<sp/>=<sp/>BIG_CONSTANT(0x87c37b91114253d5);</highlight></codeline>
<codeline lineno="328"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t<sp/>c2<sp/>=<sp/>BIG_CONSTANT(0x4cf5ad432745937f);</highlight></codeline>
<codeline lineno="329"><highlight class="normal"></highlight></codeline>
<codeline lineno="330"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="331"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>body</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="332"><highlight class="normal"></highlight></codeline>
<codeline lineno="333"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t*<sp/>blocks<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint64_t*)(data);</highlight></codeline>
<codeline lineno="334"><highlight class="normal"></highlight></codeline>
<codeline lineno="335"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/>i<sp/>=<sp/>0;<sp/>i<sp/>&lt;<sp/>nblocks;<sp/>i++)<sp/>{</highlight></codeline>
<codeline lineno="336"><highlight class="normal"><sp/><sp/><sp/><sp/>uint64_t<sp/>k1<sp/>=<sp/>getblock64(blocks,<sp/>i<sp/>*<sp/>2<sp/>+<sp/>0);</highlight></codeline>
<codeline lineno="337"><highlight class="normal"><sp/><sp/><sp/><sp/>uint64_t<sp/>k2<sp/>=<sp/>getblock64(blocks,<sp/>i<sp/>*<sp/>2<sp/>+<sp/>1);</highlight></codeline>
<codeline lineno="338"><highlight class="normal"></highlight></codeline>
<codeline lineno="339"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="340"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL64(k1,<sp/>31);</highlight></codeline>
<codeline lineno="341"><highlight class="normal"><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="342"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline>
<codeline lineno="343"><highlight class="normal"></highlight></codeline>
<codeline lineno="344"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>ROTL64(h1,<sp/>27);</highlight></codeline>
<codeline lineno="345"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline>
<codeline lineno="346"><highlight class="normal"><sp/><sp/><sp/><sp/>h1<sp/>=<sp/>h1<sp/>*<sp/>5<sp/>+<sp/>0x52dce729;</highlight></codeline>
<codeline lineno="347"><highlight class="normal"></highlight></codeline>
<codeline lineno="348"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="349"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>=<sp/>ROTL64(k2,<sp/>33);</highlight></codeline>
<codeline lineno="350"><highlight class="normal"><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="351"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>^=<sp/>k2;</highlight></codeline>
<codeline lineno="352"><highlight class="normal"></highlight></codeline>
<codeline lineno="353"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>=<sp/>ROTL64(h2,<sp/>31);</highlight></codeline>
<codeline lineno="354"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="355"><highlight class="normal"><sp/><sp/><sp/><sp/>h2<sp/>=<sp/>h2<sp/>*<sp/>5<sp/>+<sp/>0x38495ab5;</highlight></codeline>
<codeline lineno="356"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="357"><highlight class="normal"></highlight></codeline>
<codeline lineno="358"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="359"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>tail</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="360"><highlight class="normal"></highlight></codeline>
<codeline lineno="361"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*<sp/>tail<sp/>=<sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>uint8_t*)(data<sp/>+<sp/>nblocks<sp/>*<sp/>16);</highlight></codeline>
<codeline lineno="362"><highlight class="normal"></highlight></codeline>
<codeline lineno="363"><highlight class="normal"><sp/><sp/>uint64_t<sp/>k1<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="364"><highlight class="normal"><sp/><sp/>uint64_t<sp/>k2<sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="365"><highlight class="normal"></highlight></codeline>
<codeline lineno="366"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordflow">switch</highlight><highlight class="normal"><sp/>(len<sp/>&amp;<sp/>15)<sp/>{</highlight></codeline>
<codeline lineno="367"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>15:</highlight></codeline>
<codeline lineno="368"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[14])<sp/>&lt;&lt;<sp/>48;</highlight></codeline>
<codeline lineno="369"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="370"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>14:</highlight></codeline>
<codeline lineno="371"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[13])<sp/>&lt;&lt;<sp/>40;</highlight></codeline>
<codeline lineno="372"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="373"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>13:</highlight></codeline>
<codeline lineno="374"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[12])<sp/>&lt;&lt;<sp/>32;</highlight></codeline>
<codeline lineno="375"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="376"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>12:</highlight></codeline>
<codeline lineno="377"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[11])<sp/>&lt;&lt;<sp/>24;</highlight></codeline>
<codeline lineno="378"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="379"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>11:</highlight></codeline>
<codeline lineno="380"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[10])<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="381"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="382"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>10:</highlight></codeline>
<codeline lineno="383"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[9])<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="384"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="385"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>9:</highlight></codeline>
<codeline lineno="386"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>^=<sp/>((uint64_t)tail[8])<sp/>&lt;&lt;<sp/>0;</highlight></codeline>
<codeline lineno="387"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="388"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>=<sp/>ROTL64(k2,<sp/>33);</highlight></codeline>
<codeline lineno="389"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k2<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="390"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h2<sp/>^=<sp/>k2;</highlight></codeline>
<codeline lineno="391"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="392"><highlight class="normal"></highlight></codeline>
<codeline lineno="393"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>8:</highlight></codeline>
<codeline lineno="394"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[7])<sp/>&lt;&lt;<sp/>56;</highlight></codeline>
<codeline lineno="395"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="396"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>7:</highlight></codeline>
<codeline lineno="397"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[6])<sp/>&lt;&lt;<sp/>48;</highlight></codeline>
<codeline lineno="398"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="399"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>6:</highlight></codeline>
<codeline lineno="400"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[5])<sp/>&lt;&lt;<sp/>40;</highlight></codeline>
<codeline lineno="401"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="402"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>5:</highlight></codeline>
<codeline lineno="403"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[4])<sp/>&lt;&lt;<sp/>32;</highlight></codeline>
<codeline lineno="404"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="405"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>4:</highlight></codeline>
<codeline lineno="406"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[3])<sp/>&lt;&lt;<sp/>24;</highlight></codeline>
<codeline lineno="407"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="408"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>3:</highlight></codeline>
<codeline lineno="409"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[2])<sp/>&lt;&lt;<sp/>16;</highlight></codeline>
<codeline lineno="410"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="411"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>2:</highlight></codeline>
<codeline lineno="412"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[1])<sp/>&lt;&lt;<sp/>8;</highlight></codeline>
<codeline lineno="413"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>[[fallthrough]];</highlight></codeline>
<codeline lineno="414"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">case</highlight><highlight class="normal"><sp/>1:</highlight></codeline>
<codeline lineno="415"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>^=<sp/>((uint64_t)tail[0])<sp/>&lt;&lt;<sp/>0;</highlight></codeline>
<codeline lineno="416"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c1;</highlight></codeline>
<codeline lineno="417"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>=<sp/>ROTL64(k1,<sp/>31);</highlight></codeline>
<codeline lineno="418"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>k1<sp/>*=<sp/>c2;</highlight></codeline>
<codeline lineno="419"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>h1<sp/>^=<sp/>k1;</highlight></codeline>
<codeline lineno="420"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="421"><highlight class="normal"></highlight></codeline>
<codeline lineno="422"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//----------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="423"><highlight class="normal"><sp/><sp/></highlight><highlight class="comment">//<sp/>finalization</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="424"><highlight class="normal"></highlight></codeline>
<codeline lineno="425"><highlight class="normal"><sp/><sp/>h1<sp/>^=<sp/>len;</highlight></codeline>
<codeline lineno="426"><highlight class="normal"><sp/><sp/>h2<sp/>^=<sp/>len;</highlight></codeline>
<codeline lineno="427"><highlight class="normal"></highlight></codeline>
<codeline lineno="428"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline>
<codeline lineno="429"><highlight class="normal"><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="430"><highlight class="normal"></highlight></codeline>
<codeline lineno="431"><highlight class="normal"><sp/><sp/>h1<sp/>=<sp/>fmix64(h1);</highlight></codeline>
<codeline lineno="432"><highlight class="normal"><sp/><sp/>h2<sp/>=<sp/>fmix64(h2);</highlight></codeline>
<codeline lineno="433"><highlight class="normal"></highlight></codeline>
<codeline lineno="434"><highlight class="normal"><sp/><sp/>h1<sp/>+=<sp/>h2;</highlight></codeline>
<codeline lineno="435"><highlight class="normal"><sp/><sp/>h2<sp/>+=<sp/>h1;</highlight></codeline>
<codeline lineno="436"><highlight class="normal"></highlight></codeline>
<codeline lineno="437"><highlight class="normal"><sp/><sp/>((uint64_t*)out)[0]<sp/>=<sp/>h1;</highlight></codeline>
<codeline lineno="438"><highlight class="normal"><sp/><sp/>((uint64_t*)out)[1]<sp/>=<sp/>h2;</highlight></codeline>
<codeline lineno="439"><highlight class="normal">}</highlight></codeline>
<codeline lineno="440"><highlight class="normal"></highlight></codeline>
<codeline lineno="441"><highlight class="normal"></highlight><highlight class="comment">//-----------------------------------------------------------------------------</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="442"><highlight class="normal">}<sp/><sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>iceberg</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="443"><highlight class="normal"></highlight></codeline>
<codeline lineno="444"><highlight class="normal"></highlight><highlight class="comment">//<sp/>NOLINTEND</highlight><highlight class="normal"></highlight></codeline>
</programlisting>
<location file="iceberg/util/murmurhash3_internal.cc"/>
</compounddef>
</doxygen>