def mix
bend-collections-laws-crypto@1.0.0.0 · spec/crypto/blake/blake2s.bend:60
import bend-collections-laws-crypto@1.0.0.0/spec/crypto/blake/blake2s.bend as Blake2s
import Base
60
61def mix(+v: List<&2,U32>, +a: Nat, +b: Nat, +c: Nat, +d: Nat, x: U32, y: U32) -> List<&2,U32>:
62 +va = U32.add(U32.add(get(v, a), get(v, b)), x)
63 +vd = rotr(U32.xor(get(v, d), va), 16n)
64 +vc = U32.add(get(v, c), vd)
65 +vb = rotr(U32.xor(get(v, b), vc), 12n)
66 +va2 = U32.add(U32.add(va, vb), y)
67 +vd2 = rotr(U32.xor(vd, va2), 8n)
68 +vc2 = U32.add(vc, vd2)
69 +vb2 = rotr(U32.xor(vb, vc2), 7n)
70 put(put(put(put(v, a, va2), b, vb2), c, vc2), d, vd2)