def hs.michael.b

bend-osdev-hashes@0.1.0.0 · michael.bend:23

import bend-osdev-hashes@0.1.0.0/michael.bend as Michael
import Base
import bend-osdev-hashes@0.1.0.0/hashes.bend as Hs

23# the block function b
24def hs.michael.b(lr: Hs.HsW2) -> Hs.HsW2:
25  match lr:
26    case Hs.HsW2{+l0, r0}:
27      +r1 = U32.xor(r0, Hs.hs.rotl(l0, 17n))
28      +l1 = U32.add(l0, r1)
29      +r2 = U32.xor(r1, U32.or(U32.shrn(U32.and(4278255360, l1), 8n), U32.shln(U32.and(16711935, l1), 8n)))
30      +l2 = U32.add(l1, r2)
31      +r3 = U32.xor(r2, Hs.hs.rotl(l2, 3n))
32      +l3 = U32.add(l2, r3)
33      +r4 = U32.xor(r3, Hs.hs.rotl(l3, 30n))
34      Hs.HsW2{U32.add(l3, r4), r4}

Uses (8)

Used by (1)