41 size_t bytes)
noexcept {
42 const uint32_t hibit = (st->final) ? 0 : (1UL << 24);
43 uint32_t r0, r1, r2, r3, r4;
44 uint32_t s1, s2, s3, s4;
45 uint32_t h0, h1, h2, h3, h4;
46 uint64_t d0, d1, d2, d3, d4;
69 h1 += (
ReadLE32(m + 3) >> 2) & 0x3ffffff;
70 h2 += (
ReadLE32(m + 6) >> 4) & 0x3ffffff;
71 h3 += (
ReadLE32(m + 9) >> 6) & 0x3ffffff;
72 h4 += (
ReadLE32(m + 12) >> 8) | hibit;
75 d0 = ((uint64_t)h0 * r0) + ((uint64_t)h1 * s4) + ((uint64_t)h2 * s3) +
76 ((uint64_t)h3 * s2) + ((uint64_t)h4 * s1);
77 d1 = ((uint64_t)h0 * r1) + ((uint64_t)h1 * r0) + ((uint64_t)h2 * s4) +
78 ((uint64_t)h3 * s3) + ((uint64_t)h4 * s2);
79 d2 = ((uint64_t)h0 * r2) + ((uint64_t)h1 * r1) + ((uint64_t)h2 * r0) +
80 ((uint64_t)h3 * s4) + ((uint64_t)h4 * s3);
81 d3 = ((uint64_t)h0 * r3) + ((uint64_t)h1 * r2) + ((uint64_t)h2 * r1) +
82 ((uint64_t)h3 * r0) + ((uint64_t)h4 * s4);
83 d4 = ((uint64_t)h0 * r4) + ((uint64_t)h1 * r3) + ((uint64_t)h2 * r2) +
84 ((uint64_t)h3 * r1) + ((uint64_t)h4 * r0);
87 c = (uint32_t)(d0 >> 26);
88 h0 = (uint32_t)d0 & 0x3ffffff;
90 c = (uint32_t)(d1 >> 26);
91 h1 = (uint32_t)d1 & 0x3ffffff;
93 c = (uint32_t)(d2 >> 26);
94 h2 = (uint32_t)d2 & 0x3ffffff;
96 c = (uint32_t)(d3 >> 26);
97 h3 = (uint32_t)d3 & 0x3ffffff;
99 c = (uint32_t)(d4 >> 26);
100 h4 = (uint32_t)d4 & 0x3ffffff;
118 uint32_t h0, h1, h2, h3, h4, c;
119 uint32_t g0, g1, g2, g3, g4;
125 size_t i = st->leftover;
170 g4 = h4 + c - (1UL << 26);
173 mask = (g4 >> ((
sizeof(uint32_t) * 8) - 1)) - 1;
180 h0 = (h0 & mask) | g0;
181 h1 = (h1 & mask) | g1;
182 h2 = (h2 & mask) | g2;
183 h3 = (h3 & mask) | g3;
184 h4 = (h4 & mask) | g4;
187 h0 = ((h0) | (h1 << 26)) & 0xffffffff;
188 h1 = ((h1 >> 6) | (h2 << 20)) & 0xffffffff;
189 h2 = ((h2 >> 12) | (h3 << 14)) & 0xffffffff;
190 h3 = ((h3 >> 18) | (h4 << 8)) & 0xffffffff;
193 f = (uint64_t)h0 + st->pad[0];
195 f = (uint64_t)h1 + st->pad[1] + (f >> 32);
197 f = (uint64_t)h2 + st->pad[2] + (f >> 32);
199 f = (uint64_t)h3 + st->pad[3] + (f >> 32);