Gcm.mulx: def of bend-collections@1.0.0.0 Import: import bend-collections@1.0.0.0/src/crypto/aes/gcm.bend as Gcm Lines 25-32 of bend-collections@1.0.0.0/src/crypto/aes/gcm.bend: https://jend.leeeet.dev/read.txt?path=bend-collections@1.0.0.0/src/crypto/aes/gcm.bend&start_line=25&end_line=32 import Base # V * x: the block shifted one bit toward x^127, x^128 = R. def mulx(v: Block) -> Block: match v: case B{+a, +b, +c, +d}: B{U32.xor(U32.and(3774873600, U32.sub(0, U32.and(1, d))), U32.shrn(a, 1n)), U32.or(U32.shln(a, 31n), U32.shrn(b, 1n)), U32.or(U32.shln(b, 31n), U32.shrn(c, 1n)), U32.or(U32.shln(c, 31n), U32.shrn(d, 1n))} Uses (7): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.or https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.shln https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.shrn https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.sub https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.xor https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/aes/gcm.bend&name=Block