def seg_go

bend-collections@1.0.0.0 · src/crypto/argon2/argon2.bend:261

import bend-collections@1.0.0.0/src/crypto/argon2/argon2.bend as Argon2
import Base
import bend-collections@1.0.0.0/src/crypto/argon2/types.bend as A
import bend-collections@1.0.0.0/src/crypto/argon2/memory.bend as M

261# Positions idx .. idx + n - 1 of segment (r, s) of lane l.
262def seg_go(n: Nat, +idx: Nat, first: Bool, addr: A.Block, a: Array<U32>, +r: Nat, +l: Nat, +s: Nat, +p: Nat, +q: Nat, +sl: Nat, +mm: Nat, +t: Nat, +indep: Bool) -> Array<U32>:
263  match n:
264    case 0n:
265      a
266    case 1n+rest:
267      +addr2 = regen(Bool.and(indep, Bool.or(first, Nat.is_eq(Nat.mod(idx, 128n), 0n))), addr, r, l, s, mm, t, idx)
268      +j = Nat.add(Nat.mul(s, sl), idx)
269      +cur = Nat.add(Nat.mul(l, q), j)
270      seg_go(rest, Nat.add(idx, 1n), False{}, addr2, step(r, l, s, idx, p, q, sl, cur, indep, addr2, M.get(prev_index(l, q, j, Nat.is_eq(j, 0n)), a)), r, l, s, p, q, sl, mm, t, indep)

Uses (15)

Used by (1)