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
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}