Compress.round: def of bend-collections@1.0.0.0 Import: import bend-collections@1.0.0.0/src/crypto/blake/blake2s/compress.bend as Compress Lines 8-107 of bend-collections@1.0.0.0/src/crypto/blake/blake2s/compress.bend: https://jend.leeeet.dev/read.txt?path=bend-collections@1.0.0.0/src/crypto/blake/blake2s/compress.bend&start_line=8&end_line=107 import Base import bend-collections@1.0.0.0/src/crypto/blake/blake2s/types.bend as T def round(v: T.Vector,x0: U32,x1: U32,x2: U32,x3: U32,x4: U32,x5: U32,x6: U32,x7: U32,x8: U32,x9: U32,x10: U32,x11: U32,x12: U32,x13: U32,x14: U32,x15: U32) -> T.Vector: match v: case T.V{+a0,+a1,+a2,+a3,+a4,+a5,+a6,+a7,+a8,+a9,+a10,+a11,+a12,+a13,+a14,+a15}: +g0a1 = U32.add(U32.add(a0,a4),x0) +g0d1x = U32.xor(a12,g0a1) +g0d1 = U32.or(U32.shrn(g0d1x,16n),U32.shln(g0d1x,16n)) +g0c1 = U32.add(a8,g0d1) +g0b1x = U32.xor(a4,g0c1) +g0b1 = U32.or(U32.shrn(g0b1x,12n),U32.shln(g0b1x,20n)) +g0a2 = U32.add(U32.add(g0a1,g0b1),x1) +g0d2x = U32.xor(g0d1,g0a2) +g0d2 = U32.or(U32.shrn(g0d2x,8n),U32.shln(g0d2x,24n)) +g0c2 = U32.add(g0c1,g0d2) +g0b2x = U32.xor(g0b1,g0c2) +g0b2 = U32.or(U32.shrn(g0b2x,7n),U32.shln(g0b2x,25n)) +g1a1 = U32.add(U32.add(a1,a5),x2) +g1d1x = U32.xor(a13,g1a1) +g1d1 = U32.or(U32.shrn(g1d1x,16n),U32.shln(g1d1x,16n)) +g1c1 = U32.add(a9,g1d1) +g1b1x = U32.xor(a5,g1c1) +g1b1 = U32.or(U32.shrn(g1b1x,12n),U32.shln(g1b1x,20n)) +g1a2 = U32.add(U32.add(g1a1,g1b1),x3) +g1d2x = U32.xor(g1d1,g1a2) +g1d2 = U32.or(U32.shrn(g1d2x,8n),U32.shln(g1d2x,24n)) +g1c2 = U32.add(g1c1,g1d2) +g1b2x = U32.xor(g1b1,g1c2) +g1b2 = U32.or(U32.shrn(g1b2x,7n),U32.shln(g1b2x,25n)) +g2a1 = U32.add(U32.add(a2,a6),x4) +g2d1x = U32.xor(a14,g2a1) +g2d1 = U32.or(U32.shrn(g2d1x,16n),U32.shln(g2d1x,16n)) +g2c1 = U32.add(a10,g2d1) +g2b1x = U32.xor(a6,g2c1) +g2b1 = U32.or(U32.shrn(g2b1x,12n),U32.shln(g2b1x,20n)) +g2a2 = U32.add(U32.add(g2a1,g2b1),x5) +g2d2x = U32.xor(g2d1,g2a2) +g2d2 = U32.or(U32.shrn(g2d2x,8n),U32.shln(g2d2x,24n)) +g2c2 = U32.add(g2c1,g2d2) +g2b2x = U32.xor(g2b1,g2c2) +g2b2 = U32.or(U32.shrn(g2b2x,7n),U32.shln(g2b2x,25n)) +g3a1 = U32.add(U32.add(a3,a7),x6) +g3d1x = U32.xor(a15,g3a1) +g3d1 = U32.or(U32.shrn(g3d1x,16n),U32.shln(g3d1x,16n)) +g3c1 = U32.add(a11,g3d1) +g3b1x = U32.xor(a7,g3c1) +g3b1 = U32.or(U32.shrn(g3b1x,12n),U32.shln(g3b1x,20n)) +g3a2 = U32.add(U32.add(g3a1,g3b1),x7) +g3d2x = U32.xor(g3d1,g3a2) +g3d2 = U32.or(U32.shrn(g3d2x,8n),U32.shln(g3d2x,24n)) +g3c2 = U32.add(g3c1,g3d2) +g3b2x = U32.xor(g3b1,g3c2) +g3b2 = U32.or(U32.shrn(g3b2x,7n),U32.shln(g3b2x,25n)) +g4a1 = U32.add(U32.add(g0a2,g1b2),x8) +g4d1x = U32.xor(g3d2,g4a1) +g4d1 = U32.or(U32.shrn(g4d1x,16n),U32.shln(g4d1x,16n)) +g4c1 = U32.add(g2c2,g4d1) +g4b1x = U32.xor(g1b2,g4c1) +g4b1 = U32.or(U32.shrn(g4b1x,12n),U32.shln(g4b1x,20n)) +g4a2 = U32.add(U32.add(g4a1,g4b1),x9) +g4d2x = U32.xor(g4d1,g4a2) +g4d2 = U32.or(U32.shrn(g4d2x,8n),U32.shln(g4d2x,24n)) +g4c2 = U32.add(g4c1,g4d2) +g4b2x = U32.xor(g4b1,g4c2) +g4b2 = U32.or(U32.shrn(g4b2x,7n),U32.shln(g4b2x,25n)) +g5a1 = U32.add(U32.add(g1a2,g2b2),x10) +g5d1x = U32.xor(g0d2,g5a1) +g5d1 = U32.or(U32.shrn(g5d1x,16n),U32.shln(g5d1x,16n)) +g5c1 = U32.add(g3c2,g5d1) +g5b1x = U32.xor(g2b2,g5c1) +g5b1 = U32.or(U32.shrn(g5b1x,12n),U32.shln(g5b1x,20n)) +g5a2 = U32.add(U32.add(g5a1,g5b1),x11) +g5d2x = U32.xor(g5d1,g5a2) +g5d2 = U32.or(U32.shrn(g5d2x,8n),U32.shln(g5d2x,24n)) +g5c2 = U32.add(g5c1,g5d2) +g5b2x = U32.xor(g5b1,g5c2) +g5b2 = U32.or(U32.shrn(g5b2x,7n),U32.shln(g5b2x,25n)) +g6a1 = U32.add(U32.add(g2a2,g3b2),x12) +g6d1x = U32.xor(g1d2,g6a1) +g6d1 = U32.or(U32.shrn(g6d1x,16n),U32.shln(g6d1x,16n)) +g6c1 = U32.add(g0c2,g6d1) +g6b1x = U32.xor(g3b2,g6c1) +g6b1 = U32.or(U32.shrn(g6b1x,12n),U32.shln(g6b1x,20n)) +g6a2 = U32.add(U32.add(g6a1,g6b1),x13) +g6d2x = U32.xor(g6d1,g6a2) +g6d2 = U32.or(U32.shrn(g6d2x,8n),U32.shln(g6d2x,24n)) +g6c2 = U32.add(g6c1,g6d2) +g6b2x = U32.xor(g6b1,g6c2) +g6b2 = U32.or(U32.shrn(g6b2x,7n),U32.shln(g6b2x,25n)) +g7a1 = U32.add(U32.add(g3a2,g0b2),x14) +g7d1x = U32.xor(g2d2,g7a1) +g7d1 = U32.or(U32.shrn(g7d1x,16n),U32.shln(g7d1x,16n)) +g7c1 = U32.add(g1c2,g7d1) +g7b1x = U32.xor(g0b2,g7c1) +g7b1 = U32.or(U32.shrn(g7b1x,12n),U32.shln(g7b1x,20n)) +g7a2 = U32.add(U32.add(g7a1,g7b1),x15) +g7d2x = U32.xor(g7d1,g7a2) +g7d2 = U32.or(U32.shrn(g7d2x,8n),U32.shln(g7d2x,24n)) +g7c2 = U32.add(g7c1,g7d2) +g7b2x = U32.xor(g7b1,g7c2) +g7b2 = U32.or(U32.shrn(g7b2x,7n),U32.shln(g7b2x,25n)) T.V{g4a2,g5a2,g6a2,g7a2,g7b2,g4b2,g5b2,g6b2,g6c2,g7c2,g4c2,g5c2,g5d2,g6d2,g7d2,g4d2} Uses (7): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.add 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.xor https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/blake/blake2s/types.bend&name=Vector