// Generated from go run gen.go // DO NOT EDIT package keccak // roundGeneric implements one round of the keccak-f[1600] permutation. func roundGen(a *[5][5]uint64) { var a00 = a[0][0] var a01 = a[1][0] var a02 = a[2][0] var a03 = a[3][0] var a04 = a[4][0] var a10 = a[0][1] var a11 = a[1][1] var a12 = a[2][1] var a13 = a[3][1] var a14 = a[4][1] var a20 = a[0][2] var a21 = a[1][2] var a22 = a[2][2] var a23 = a[3][2] var a24 = a[4][2] var a30 = a[0][3] var a31 = a[1][3] var a32 = a[2][3] var a33 = a[3][3] var a34 = a[4][3] var a40 = a[0][4] var a41 = a[1][4] var a42 = a[2][4] var a43 = a[3][4] var a44 = a[4][4] // Theta var c0, c1, c2, c3, c4 uint64 c0 = a00 ^ a01 ^ a02 ^ a03 ^ a04 c1 = a10 ^ a11 ^ a12 ^ a13 ^ a14 c2 = a20 ^ a21 ^ a22 ^ a23 ^ a24 c3 = a30 ^ a31 ^ a32 ^ a33 ^ a34 c4 = a40 ^ a41 ^ a42 ^ a43 ^ a44 a00 ^= c4 ^ (c1<<1 | c1>>63) a01 ^= c4 ^ (c1<<1 | c1>>63) a02 ^= c4 ^ (c1<<1 | c1>>63) a03 ^= c4 ^ (c1<<1 | c1>>63) a04 ^= c4 ^ (c1<<1 | c1>>63) a10 ^= c0 ^ (c2<<1 | c2>>63) a11 ^= c0 ^ (c2<<1 | c2>>63) a12 ^= c0 ^ (c2<<1 | c2>>63) a13 ^= c0 ^ (c2<<1 | c2>>63) a14 ^= c0 ^ (c2<<1 | c2>>63) a20 ^= c1 ^ (c3<<1 | c3>>63) a21 ^= c1 ^ (c3<<1 | c3>>63) a22 ^= c1 ^ (c3<<1 | c3>>63) a23 ^= c1 ^ (c3<<1 | c3>>63) a24 ^= c1 ^ (c3<<1 | c3>>63) a30 ^= c2 ^ (c4<<1 | c4>>63) a31 ^= c2 ^ (c4<<1 | c4>>63) a32 ^= c2 ^ (c4<<1 | c4>>63) a33 ^= c2 ^ (c4<<1 | c4>>63) a34 ^= c2 ^ (c4<<1 | c4>>63) a40 ^= c3 ^ (c0<<1 | c0>>63) a41 ^= c3 ^ (c0<<1 | c0>>63) a42 ^= c3 ^ (c0<<1 | c0>>63) a43 ^= c3 ^ (c0<<1 | c0>>63) a44 ^= c3 ^ (c0<<1 | c0>>63) // Rho and pi var b00 = a00<<0 | a00>>64 var b02 = a10<<1 | a10>>63 var b04 = a20<<62 | a20>>2 var b01 = a30<<28 | a30>>36 var b03 = a40<<27 | a40>>37 var b13 = a01<<36 | a01>>28 var b10 = a11<<44 | a11>>20 var b12 = a21<<6 | a21>>58 var b14 = a31<<55 | a31>>9 var b11 = a41<<20 | a41>>44 var b21 = a02<<3 | a02>>61 var b23 = a12<<10 | a12>>54 var b20 = a22<<43 | a22>>21 var b22 = a32<<25 | a32>>39 var b24 = a42<<39 | a42>>25 var b34 = a03<<41 | a03>>23 var b31 = a13<<45 | a13>>19 var b33 = a23<<15 | a23>>49 var b30 = a33<<21 | a33>>43 var b32 = a43<<8 | a43>>56 var b42 = a04<<18 | a04>>46 var b44 = a14<<2 | a14>>62 var b41 = a24<<61 | a24>>3 var b43 = a34<<56 | a34>>8 var b40 = a44<<14 | a44>>50 // Chi a00 = b00 ^ (b20 &^ b10) a10 = b10 ^ (b30 &^ b20) a20 = b20 ^ (b40 &^ b30) a30 = b30 ^ (b00 &^ b40) a40 = b40 ^ (b10 &^ b00) a01 = b01 ^ (b21 &^ b11) a11 = b11 ^ (b31 &^ b21) a21 = b21 ^ (b41 &^ b31) a31 = b31 ^ (b01 &^ b41) a41 = b41 ^ (b11 &^ b01) a02 = b02 ^ (b22 &^ b12) a12 = b12 ^ (b32 &^ b22) a22 = b22 ^ (b42 &^ b32) a32 = b32 ^ (b02 &^ b42) a42 = b42 ^ (b12 &^ b02) a03 = b03 ^ (b23 &^ b13) a13 = b13 ^ (b33 &^ b23) a23 = b23 ^ (b43 &^ b33) a33 = b33 ^ (b03 &^ b43) a43 = b43 ^ (b13 &^ b03) a04 = b04 ^ (b24 &^ b14) a14 = b14 ^ (b34 &^ b24) a24 = b24 ^ (b44 &^ b34) a34 = b34 ^ (b04 &^ b44) a44 = b44 ^ (b14 &^ b04) // Output a[0][0] = a00 a[0][1] = a10 a[0][2] = a20 a[0][3] = a30 a[0][4] = a40 a[1][0] = a01 a[1][1] = a11 a[1][2] = a21 a[1][3] = a31 a[1][4] = a41 a[2][0] = a02 a[2][1] = a12 a[2][2] = a22 a[2][3] = a32 a[2][4] = a42 a[3][0] = a03 a[3][1] = a13 a[3][2] = a23 a[3][3] = a33 a[3][4] = a43 a[4][0] = a04 a[4][1] = a14 a[4][2] = a24 a[4][3] = a34 a[4][4] = a44 }