76 size_t remaining = length;
77 size_t pending =
len % 16;
80 if( pending > 0 && remaining > 0 )
82 size_t fill = std::min( remaining, 16 - pending );
83 memcpy(
reinterpret_cast<uint8_t*
>(
blocks ) + pending, data, fill );
94 while( remaining >= 16 )
96 memcpy(
blocks, data, 16 );
105 memcpy(
blocks, data, remaining );
106 memset(
reinterpret_cast<uint8_t*
>(
blocks ) + remaining, 0, 16 - remaining );
195 const uint8_t * tail = (
const uint8_t*)(
blocks);
197 static const uint64_t c1 =
BIG_CONSTANT( 0x87c37b91114253d5 );
198 static const uint64_t c2 =
BIG_CONSTANT( 0x4cf5ad432745937f );
205 case 15: k2 ^= ((uint64_t)tail[14]) << 48; [[fallthrough]];
206 case 14: k2 ^= ((uint64_t)tail[13]) << 40; [[fallthrough]];
207 case 13: k2 ^= ((uint64_t)tail[12]) << 32; [[fallthrough]];
208 case 12: k2 ^= ((uint64_t)tail[11]) << 24; [[fallthrough]];
209 case 11: k2 ^= ((uint64_t)tail[10]) << 16; [[fallthrough]];
210 case 10: k2 ^= ((uint64_t)tail[ 9]) << 8; [[fallthrough]];
211 case 9: k2 ^= ((uint64_t)tail[ 8]) << 0;
212 k2 *= c2; k2 =
ROTL64(k2,33); k2 *= c1;
h2 ^= k2;
215 case 8: k1 ^= ((uint64_t)tail[ 7]) << 56; [[fallthrough]];
216 case 7: k1 ^= ((uint64_t)tail[ 6]) << 48; [[fallthrough]];
217 case 6: k1 ^= ((uint64_t)tail[ 5]) << 40; [[fallthrough]];
218 case 5: k1 ^= ((uint64_t)tail[ 4]) << 32; [[fallthrough]];
219 case 4: k1 ^= ((uint64_t)tail[ 3]) << 24; [[fallthrough]];
220 case 3: k1 ^= ((uint64_t)tail[ 2]) << 16; [[fallthrough]];
221 case 2: k1 ^= ((uint64_t)tail[ 1]) << 8; [[fallthrough]];
222 case 1: k1 ^= ((uint64_t)tail[ 0]) << 0;
223 k1 *= c1; k1 =
ROTL64(k1,31); k1 *= c2;
h1 ^= k1;