|
|
// Written in 2011-2012 by Dmitry Chestnykh.
//
// To the extent possible under law, the author have dedicated all copyright
// and related and neighboring rights to this software to the public domain
// worldwide. This software is distributed without any warranty.
// http://creativecommons.org/publicdomain/zero/1.0/
// BLAKE-256 block step.
// In its own file so that a faster assembly or C version
// can be substituted easily.
package blake256
const ( cst0 = 0x243F6A88 cst1 = 0x85A308D3 cst2 = 0x13198A2E cst3 = 0x03707344 cst4 = 0xA4093822 cst5 = 0x299F31D0 cst6 = 0x082EFA98 cst7 = 0xEC4E6C89 cst8 = 0x452821E6 cst9 = 0x38D01377 cst10 = 0xBE5466CF cst11 = 0x34E90C6C cst12 = 0xC0AC29B7 cst13 = 0xC97C50DD cst14 = 0x3F84D5B5 cst15 = 0xB5470917 )
func block(d *digest, p []uint8) { h0, h1, h2, h3, h4, h5, h6, h7 := d.h[0], d.h[1], d.h[2], d.h[3], d.h[4], d.h[5], d.h[6], d.h[7] s0, s1, s2, s3 := d.s[0], d.s[1], d.s[2], d.s[3]
for len(p) >= BlockSize { v0, v1, v2, v3, v4, v5, v6, v7 := h0, h1, h2, h3, h4, h5, h6, h7 v8 := cst0 ^ s0 v9 := cst1 ^ s1 v10 := cst2 ^ s2 v11 := cst3 ^ s3 v12 := uint32(cst4) v13 := uint32(cst5) v14 := uint32(cst6) v15 := uint32(cst7) d.t += 512 if !d.nullt { v12 ^= uint32(d.t) v13 ^= uint32(d.t) v14 ^= uint32(d.t >> 32) v15 ^= uint32(d.t >> 32) } var m [16]uint32
m[0] = uint32(p[0])<<24 | uint32(p[1])<<16 | uint32(p[2])<<8 | uint32(p[3]) m[1] = uint32(p[4])<<24 | uint32(p[5])<<16 | uint32(p[6])<<8 | uint32(p[7]) m[2] = uint32(p[8])<<24 | uint32(p[9])<<16 | uint32(p[10])<<8 | uint32(p[11]) m[3] = uint32(p[12])<<24 | uint32(p[13])<<16 | uint32(p[14])<<8 | uint32(p[15]) m[4] = uint32(p[16])<<24 | uint32(p[17])<<16 | uint32(p[18])<<8 | uint32(p[19]) m[5] = uint32(p[20])<<24 | uint32(p[21])<<16 | uint32(p[22])<<8 | uint32(p[23]) m[6] = uint32(p[24])<<24 | uint32(p[25])<<16 | uint32(p[26])<<8 | uint32(p[27]) m[7] = uint32(p[28])<<24 | uint32(p[29])<<16 | uint32(p[30])<<8 | uint32(p[31]) m[8] = uint32(p[32])<<24 | uint32(p[33])<<16 | uint32(p[34])<<8 | uint32(p[35]) m[9] = uint32(p[36])<<24 | uint32(p[37])<<16 | uint32(p[38])<<8 | uint32(p[39]) m[10] = uint32(p[40])<<24 | uint32(p[41])<<16 | uint32(p[42])<<8 | uint32(p[43]) m[11] = uint32(p[44])<<24 | uint32(p[45])<<16 | uint32(p[46])<<8 | uint32(p[47]) m[12] = uint32(p[48])<<24 | uint32(p[49])<<16 | uint32(p[50])<<8 | uint32(p[51]) m[13] = uint32(p[52])<<24 | uint32(p[53])<<16 | uint32(p[54])<<8 | uint32(p[55]) m[14] = uint32(p[56])<<24 | uint32(p[57])<<16 | uint32(p[58])<<8 | uint32(p[59]) m[15] = uint32(p[60])<<24 | uint32(p[61])<<16 | uint32(p[62])<<8 | uint32(p[63])
// Round 1.
v0 += m[0] ^ cst1 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[2] ^ cst3 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[4] ^ cst5 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[6] ^ cst7 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[5] ^ cst4 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[7] ^ cst6 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[3] ^ cst2 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[1] ^ cst0 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[8] ^ cst9 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[10] ^ cst11 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[12] ^ cst13 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[14] ^ cst15 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[13] ^ cst12 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[15] ^ cst14 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[11] ^ cst10 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[9] ^ cst8 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 2.
v0 += m[14] ^ cst10 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[4] ^ cst8 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[9] ^ cst15 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[13] ^ cst6 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[15] ^ cst9 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[6] ^ cst13 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[8] ^ cst4 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[10] ^ cst14 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[1] ^ cst12 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[0] ^ cst2 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[11] ^ cst7 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[5] ^ cst3 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[7] ^ cst11 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[3] ^ cst5 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[2] ^ cst0 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[12] ^ cst1 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 3.
v0 += m[11] ^ cst8 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[12] ^ cst0 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[5] ^ cst2 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[15] ^ cst13 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[2] ^ cst5 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[13] ^ cst15 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[0] ^ cst12 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[8] ^ cst11 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[10] ^ cst14 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[3] ^ cst6 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[7] ^ cst1 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[9] ^ cst4 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[1] ^ cst7 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[4] ^ cst9 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[6] ^ cst3 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[14] ^ cst10 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 4.
v0 += m[7] ^ cst9 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[3] ^ cst1 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[13] ^ cst12 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[11] ^ cst14 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[12] ^ cst13 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[14] ^ cst11 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[1] ^ cst3 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[9] ^ cst7 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[2] ^ cst6 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[5] ^ cst10 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[4] ^ cst0 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[15] ^ cst8 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[0] ^ cst4 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[8] ^ cst15 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[10] ^ cst5 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[6] ^ cst2 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 5.
v0 += m[9] ^ cst0 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[5] ^ cst7 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[2] ^ cst4 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[10] ^ cst15 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[4] ^ cst2 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[15] ^ cst10 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[7] ^ cst5 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[0] ^ cst9 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[14] ^ cst1 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[11] ^ cst12 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[6] ^ cst8 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[3] ^ cst13 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[8] ^ cst6 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[13] ^ cst3 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[12] ^ cst11 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[1] ^ cst14 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 6.
v0 += m[2] ^ cst12 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[6] ^ cst10 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[0] ^ cst11 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[8] ^ cst3 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[11] ^ cst0 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[3] ^ cst8 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[10] ^ cst6 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[12] ^ cst2 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[4] ^ cst13 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[7] ^ cst5 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[15] ^ cst14 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[1] ^ cst9 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[14] ^ cst15 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[9] ^ cst1 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[5] ^ cst7 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[13] ^ cst4 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 7.
v0 += m[12] ^ cst5 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[1] ^ cst15 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[14] ^ cst13 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[4] ^ cst10 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[13] ^ cst14 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[10] ^ cst4 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[15] ^ cst1 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[5] ^ cst12 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[0] ^ cst7 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[6] ^ cst3 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[9] ^ cst2 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[8] ^ cst11 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[2] ^ cst9 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[11] ^ cst8 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[3] ^ cst6 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[7] ^ cst0 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 8.
v0 += m[13] ^ cst11 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[7] ^ cst14 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[12] ^ cst1 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[3] ^ cst9 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[1] ^ cst12 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[9] ^ cst3 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[14] ^ cst7 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[11] ^ cst13 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[5] ^ cst0 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[15] ^ cst4 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[8] ^ cst6 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[2] ^ cst10 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[6] ^ cst8 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[10] ^ cst2 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[4] ^ cst15 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[0] ^ cst5 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 9.
v0 += m[6] ^ cst15 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[14] ^ cst9 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[11] ^ cst3 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[0] ^ cst8 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[3] ^ cst11 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[8] ^ cst0 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[9] ^ cst14 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[15] ^ cst6 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[12] ^ cst2 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[13] ^ cst7 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[1] ^ cst4 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[10] ^ cst5 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[4] ^ cst1 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[5] ^ cst10 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[7] ^ cst13 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[2] ^ cst12 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 10.
v0 += m[10] ^ cst2 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[8] ^ cst4 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[7] ^ cst6 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[1] ^ cst5 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[6] ^ cst7 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[5] ^ cst1 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[4] ^ cst8 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[2] ^ cst10 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[15] ^ cst11 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[9] ^ cst14 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[3] ^ cst12 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[13] ^ cst0 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[12] ^ cst3 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[0] ^ cst13 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[14] ^ cst9 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[11] ^ cst15 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 11.
v0 += m[0] ^ cst1 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[2] ^ cst3 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[4] ^ cst5 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[6] ^ cst7 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[5] ^ cst4 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[7] ^ cst6 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[3] ^ cst2 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[1] ^ cst0 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[8] ^ cst9 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[10] ^ cst11 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[12] ^ cst13 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[14] ^ cst15 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[13] ^ cst12 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[15] ^ cst14 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[11] ^ cst10 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[9] ^ cst8 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 12.
v0 += m[14] ^ cst10 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[4] ^ cst8 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[9] ^ cst15 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[13] ^ cst6 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[15] ^ cst9 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[6] ^ cst13 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[8] ^ cst4 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[10] ^ cst14 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[1] ^ cst12 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[0] ^ cst2 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[11] ^ cst7 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[5] ^ cst3 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[7] ^ cst11 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[3] ^ cst5 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[2] ^ cst0 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[12] ^ cst1 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 13.
v0 += m[11] ^ cst8 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[12] ^ cst0 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[5] ^ cst2 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[15] ^ cst13 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[2] ^ cst5 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[13] ^ cst15 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[0] ^ cst12 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[8] ^ cst11 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[10] ^ cst14 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[3] ^ cst6 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[7] ^ cst1 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[9] ^ cst4 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[1] ^ cst7 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[4] ^ cst9 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[6] ^ cst3 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[14] ^ cst10 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
// Round 14.
v0 += m[7] ^ cst9 v0 += v4 v12 ^= v0 v12 = v12<<(32-16) | v12>>16 v8 += v12 v4 ^= v8 v4 = v4<<(32-12) | v4>>12 v1 += m[3] ^ cst1 v1 += v5 v13 ^= v1 v13 = v13<<(32-16) | v13>>16 v9 += v13 v5 ^= v9 v5 = v5<<(32-12) | v5>>12 v2 += m[13] ^ cst12 v2 += v6 v14 ^= v2 v14 = v14<<(32-16) | v14>>16 v10 += v14 v6 ^= v10 v6 = v6<<(32-12) | v6>>12 v3 += m[11] ^ cst14 v3 += v7 v15 ^= v3 v15 = v15<<(32-16) | v15>>16 v11 += v15 v7 ^= v11 v7 = v7<<(32-12) | v7>>12 v2 += m[12] ^ cst13 v2 += v6 v14 ^= v2 v14 = v14<<(32-8) | v14>>8 v10 += v14 v6 ^= v10 v6 = v6<<(32-7) | v6>>7 v3 += m[14] ^ cst11 v3 += v7 v15 ^= v3 v15 = v15<<(32-8) | v15>>8 v11 += v15 v7 ^= v11 v7 = v7<<(32-7) | v7>>7 v1 += m[1] ^ cst3 v1 += v5 v13 ^= v1 v13 = v13<<(32-8) | v13>>8 v9 += v13 v5 ^= v9 v5 = v5<<(32-7) | v5>>7 v0 += m[9] ^ cst7 v0 += v4 v12 ^= v0 v12 = v12<<(32-8) | v12>>8 v8 += v12 v4 ^= v8 v4 = v4<<(32-7) | v4>>7 v0 += m[2] ^ cst6 v0 += v5 v15 ^= v0 v15 = v15<<(32-16) | v15>>16 v10 += v15 v5 ^= v10 v5 = v5<<(32-12) | v5>>12 v1 += m[5] ^ cst10 v1 += v6 v12 ^= v1 v12 = v12<<(32-16) | v12>>16 v11 += v12 v6 ^= v11 v6 = v6<<(32-12) | v6>>12 v2 += m[4] ^ cst0 v2 += v7 v13 ^= v2 v13 = v13<<(32-16) | v13>>16 v8 += v13 v7 ^= v8 v7 = v7<<(32-12) | v7>>12 v3 += m[15] ^ cst8 v3 += v4 v14 ^= v3 v14 = v14<<(32-16) | v14>>16 v9 += v14 v4 ^= v9 v4 = v4<<(32-12) | v4>>12 v2 += m[0] ^ cst4 v2 += v7 v13 ^= v2 v13 = v13<<(32-8) | v13>>8 v8 += v13 v7 ^= v8 v7 = v7<<(32-7) | v7>>7 v3 += m[8] ^ cst15 v3 += v4 v14 ^= v3 v14 = v14<<(32-8) | v14>>8 v9 += v14 v4 ^= v9 v4 = v4<<(32-7) | v4>>7 v1 += m[10] ^ cst5 v1 += v6 v12 ^= v1 v12 = v12<<(32-8) | v12>>8 v11 += v12 v6 ^= v11 v6 = v6<<(32-7) | v6>>7 v0 += m[6] ^ cst2 v0 += v5 v15 ^= v0 v15 = v15<<(32-8) | v15>>8 v10 += v15 v5 ^= v10 v5 = v5<<(32-7) | v5>>7
h0 ^= v0 ^ v8 ^ s0 h1 ^= v1 ^ v9 ^ s1 h2 ^= v2 ^ v10 ^ s2 h3 ^= v3 ^ v11 ^ s3 h4 ^= v4 ^ v12 ^ s0 h5 ^= v5 ^ v13 ^ s1 h6 ^= v6 ^ v14 ^ s2 h7 ^= v7 ^ v15 ^ s3
p = p[BlockSize:] } d.h[0], d.h[1], d.h[2], d.h[3], d.h[4], d.h[5], d.h[6], d.h[7] = h0, h1, h2, h3, h4, h5, h6, h7 }
|