examples/sha1: use comments (#41)

This commit is contained in:
Michael McLoughlin
2019-01-11 10:52:09 -08:00
parent 94033059eb
commit d0357fa6f9
2 changed files with 1283 additions and 1114 deletions

View File

@@ -18,13 +18,13 @@ func main() {
w := AllocLocal(64) w := AllocLocal(64)
W := func(r int) Mem { return w.Offset((r % 16) * 4) } W := func(r int) Mem { return w.Offset((r % 16) * 4) }
// Load initial hash. Comment("Load initial hash.")
hash := [5]Register{GP32(), GP32(), GP32(), GP32(), GP32()} hash := [5]Register{GP32(), GP32(), GP32(), GP32(), GP32()}
for i, r := range hash { for i, r := range hash {
MOVL(h.Offset(4*i), r) MOVL(h.Offset(4*i), r)
} }
// Initialize registers. Comment("Initialize registers.")
a, b, c, d, e := GP32(), GP32(), GP32(), GP32(), GP32() a, b, c, d, e := GP32(), GP32(), GP32(), GP32(), GP32()
for i, r := range []Register{a, b, c, d, e} { for i, r := range []Register{a, b, c, d, e} {
MOVL(hash[i], r) MOVL(hash[i], r)
@@ -42,6 +42,7 @@ func main() {
} }
for r := 0; r < 80; r++ { for r := 0; r < 80; r++ {
Commentf("Round %d.", r)
q := quarter[r/20] q := quarter[r/20]
// Load message value. // Load message value.
@@ -72,12 +73,12 @@ func main() {
a, b, c, d, e = t, a, b, c, d a, b, c, d, e = t, a, b, c, d
} }
// Final add. Comment("Final add.")
for i, r := range []Register{a, b, c, d, e} { for i, r := range []Register{a, b, c, d, e} {
ADDL(r, hash[i]) ADDL(r, hash[i])
} }
// Store results back. Comment("Store results back.")
for i, r := range hash { for i, r := range hash {
MOVL(r, h.Offset(4*i)) MOVL(r, h.Offset(4*i))
} }

View File

@@ -4,16 +4,22 @@
TEXT ·block(SB), $64-32 TEXT ·block(SB), $64-32
MOVQ h(FP), AX MOVQ h(FP), AX
MOVQ m_base+8(FP), CX MOVQ m_base+8(FP), CX
// Load initial hash.
MOVL (AX), DX MOVL (AX), DX
MOVL 4(AX), BX MOVL 4(AX), BX
MOVL 8(AX), BP MOVL 8(AX), BP
MOVL 12(AX), SI MOVL 12(AX), SI
MOVL 16(AX), DI MOVL 16(AX), DI
// Initialize registers.
MOVL DX, R8 MOVL DX, R8
MOVL BX, R9 MOVL BX, R9
MOVL BP, R10 MOVL BP, R10
MOVL SI, R11 MOVL SI, R11
MOVL DI, R12 MOVL DI, R12
// Round 0.
MOVL (CX), R13 MOVL (CX), R13
BSWAPL R13 BSWAPL R13
MOVL R13, (SP) MOVL R13, (SP)
@@ -28,6 +34,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R14 ADDL $0x5a827999, R14
ADDL R13, R14 ADDL R13, R14
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 1.
MOVL 4(CX), R12 MOVL 4(CX), R12
BSWAPL R12 BSWAPL R12
MOVL R12, 4(SP) MOVL R12, 4(SP)
@@ -42,6 +50,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R13 ADDL $0x5a827999, R13
ADDL R12, R13 ADDL R12, R13
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 2.
MOVL 8(CX), R11 MOVL 8(CX), R11
BSWAPL R11 BSWAPL R11
MOVL R11, 8(SP) MOVL R11, 8(SP)
@@ -56,6 +66,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R12 ADDL $0x5a827999, R12
ADDL R11, R12 ADDL R11, R12
ROLL $0x1e, R14 ROLL $0x1e, R14
// Round 3.
MOVL 12(CX), R10 MOVL 12(CX), R10
BSWAPL R10 BSWAPL R10
MOVL R10, 12(SP) MOVL R10, 12(SP)
@@ -70,6 +82,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R11 ADDL $0x5a827999, R11
ADDL R10, R11 ADDL R10, R11
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 4.
MOVL 16(CX), R9 MOVL 16(CX), R9
BSWAPL R9 BSWAPL R9
MOVL R9, 16(SP) MOVL R9, 16(SP)
@@ -84,6 +98,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R10 ADDL $0x5a827999, R10
ADDL R9, R10 ADDL R9, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 5.
MOVL 20(CX), R8 MOVL 20(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 20(SP) MOVL R8, 20(SP)
@@ -98,6 +114,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R9 ADDL $0x5a827999, R9
ADDL R8, R9 ADDL R8, R9
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 6.
MOVL 24(CX), R8 MOVL 24(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 24(SP) MOVL R8, 24(SP)
@@ -112,6 +130,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R14 ADDL $0x5a827999, R14
ADDL R8, R14 ADDL R8, R14
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 7.
MOVL 28(CX), R8 MOVL 28(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 28(SP) MOVL R8, 28(SP)
@@ -126,6 +146,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R13 ADDL $0x5a827999, R13
ADDL R8, R13 ADDL R8, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 8.
MOVL 32(CX), R8 MOVL 32(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 32(SP) MOVL R8, 32(SP)
@@ -140,6 +162,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R12 ADDL $0x5a827999, R12
ADDL R8, R12 ADDL R8, R12
ROLL $0x1e, R14 ROLL $0x1e, R14
// Round 9.
MOVL 36(CX), R8 MOVL 36(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 36(SP) MOVL R8, 36(SP)
@@ -154,6 +178,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R11 ADDL $0x5a827999, R11
ADDL R8, R11 ADDL R8, R11
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 10.
MOVL 40(CX), R8 MOVL 40(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 40(SP) MOVL R8, 40(SP)
@@ -168,6 +194,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R10 ADDL $0x5a827999, R10
ADDL R8, R10 ADDL R8, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 11.
MOVL 44(CX), R8 MOVL 44(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 44(SP) MOVL R8, 44(SP)
@@ -182,6 +210,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R9 ADDL $0x5a827999, R9
ADDL R8, R9 ADDL R8, R9
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 12.
MOVL 48(CX), R8 MOVL 48(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 48(SP) MOVL R8, 48(SP)
@@ -196,6 +226,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R14 ADDL $0x5a827999, R14
ADDL R8, R14 ADDL R8, R14
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 13.
MOVL 52(CX), R8 MOVL 52(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 52(SP) MOVL R8, 52(SP)
@@ -210,6 +242,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R13 ADDL $0x5a827999, R13
ADDL R8, R13 ADDL R8, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 14.
MOVL 56(CX), R8 MOVL 56(CX), R8
BSWAPL R8 BSWAPL R8
MOVL R8, 56(SP) MOVL R8, 56(SP)
@@ -224,6 +258,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R12 ADDL $0x5a827999, R12
ADDL R8, R12 ADDL R8, R12
ROLL $0x1e, R14 ROLL $0x1e, R14
// Round 15.
MOVL 60(CX), CX MOVL 60(CX), CX
BSWAPL CX BSWAPL CX
MOVL CX, 60(SP) MOVL CX, 60(SP)
@@ -238,6 +274,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R8 ADDL $0x5a827999, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 16.
MOVL 52(SP), CX MOVL 52(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
@@ -255,6 +293,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R10 ADDL $0x5a827999, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 17.
MOVL 56(SP), CX MOVL 56(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
@@ -272,6 +312,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R9 ADDL $0x5a827999, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 18.
MOVL 60(SP), CX MOVL 60(SP), CX
XORL 40(SP), CX XORL 40(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
@@ -289,6 +331,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R11 ADDL $0x5a827999, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 19.
MOVL (SP), CX MOVL (SP), CX
XORL 44(SP), CX XORL 44(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
@@ -306,6 +350,8 @@ TEXT ·block(SB), $64-32
ADDL $0x5a827999, R13 ADDL $0x5a827999, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 20.
MOVL 4(SP), CX MOVL 4(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
@@ -322,6 +368,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R12 ADDL $0x6ed9eba1, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 21.
MOVL 8(SP), CX MOVL 8(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
@@ -338,6 +386,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R8 ADDL $0x6ed9eba1, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 22.
MOVL 12(SP), CX MOVL 12(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
@@ -354,6 +404,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R10 ADDL $0x6ed9eba1, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 23.
MOVL 16(SP), CX MOVL 16(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
@@ -370,6 +422,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R9 ADDL $0x6ed9eba1, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 24.
MOVL 20(SP), CX MOVL 20(SP), CX
XORL (SP), CX XORL (SP), CX
XORL 40(SP), CX XORL 40(SP), CX
@@ -386,6 +440,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R11 ADDL $0x6ed9eba1, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 25.
MOVL 24(SP), CX MOVL 24(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
@@ -402,6 +458,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R13 ADDL $0x6ed9eba1, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 26.
MOVL 28(SP), CX MOVL 28(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
@@ -418,6 +476,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R12 ADDL $0x6ed9eba1, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 27.
MOVL 32(SP), CX MOVL 32(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
@@ -434,6 +494,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R8 ADDL $0x6ed9eba1, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 28.
MOVL 36(SP), CX MOVL 36(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
@@ -450,6 +512,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R10 ADDL $0x6ed9eba1, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 29.
MOVL 40(SP), CX MOVL 40(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
@@ -466,6 +530,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R9 ADDL $0x6ed9eba1, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 30.
MOVL 44(SP), CX MOVL 44(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
XORL (SP), CX XORL (SP), CX
@@ -482,6 +548,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R11 ADDL $0x6ed9eba1, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 31.
MOVL 48(SP), CX MOVL 48(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
@@ -498,6 +566,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R13 ADDL $0x6ed9eba1, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 32.
MOVL 52(SP), CX MOVL 52(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
@@ -514,6 +584,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R12 ADDL $0x6ed9eba1, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 33.
MOVL 56(SP), CX MOVL 56(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
@@ -530,6 +602,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R8 ADDL $0x6ed9eba1, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 34.
MOVL 60(SP), CX MOVL 60(SP), CX
XORL 40(SP), CX XORL 40(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
@@ -546,6 +620,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R10 ADDL $0x6ed9eba1, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 35.
MOVL (SP), CX MOVL (SP), CX
XORL 44(SP), CX XORL 44(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
@@ -562,6 +638,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R9 ADDL $0x6ed9eba1, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 36.
MOVL 4(SP), CX MOVL 4(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
@@ -578,6 +656,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R11 ADDL $0x6ed9eba1, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 37.
MOVL 8(SP), CX MOVL 8(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
@@ -594,6 +674,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R13 ADDL $0x6ed9eba1, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 38.
MOVL 12(SP), CX MOVL 12(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
@@ -610,6 +692,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R12 ADDL $0x6ed9eba1, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 39.
MOVL 16(SP), CX MOVL 16(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
@@ -626,6 +710,8 @@ TEXT ·block(SB), $64-32
ADDL $0x6ed9eba1, R8 ADDL $0x6ed9eba1, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 40.
MOVL 20(SP), CX MOVL 20(SP), CX
XORL (SP), CX XORL (SP), CX
XORL 40(SP), CX XORL 40(SP), CX
@@ -645,6 +731,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R10 ADDL $0x8f1bbcdc, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 41.
MOVL 24(SP), CX MOVL 24(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
@@ -664,6 +752,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R9 ADDL $0x8f1bbcdc, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 42.
MOVL 28(SP), CX MOVL 28(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
@@ -683,6 +773,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R11 ADDL $0x8f1bbcdc, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 43.
MOVL 32(SP), CX MOVL 32(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
@@ -702,6 +794,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R13 ADDL $0x8f1bbcdc, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 44.
MOVL 36(SP), CX MOVL 36(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
@@ -721,6 +815,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R12 ADDL $0x8f1bbcdc, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 45.
MOVL 40(SP), CX MOVL 40(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
@@ -740,6 +836,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R8 ADDL $0x8f1bbcdc, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 46.
MOVL 44(SP), CX MOVL 44(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
XORL (SP), CX XORL (SP), CX
@@ -759,6 +857,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R10 ADDL $0x8f1bbcdc, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 47.
MOVL 48(SP), CX MOVL 48(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
@@ -778,6 +878,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R9 ADDL $0x8f1bbcdc, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 48.
MOVL 52(SP), CX MOVL 52(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
@@ -797,6 +899,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R11 ADDL $0x8f1bbcdc, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 49.
MOVL 56(SP), CX MOVL 56(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
@@ -816,6 +920,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R13 ADDL $0x8f1bbcdc, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 50.
MOVL 60(SP), CX MOVL 60(SP), CX
XORL 40(SP), CX XORL 40(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
@@ -835,6 +941,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R12 ADDL $0x8f1bbcdc, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 51.
MOVL (SP), CX MOVL (SP), CX
XORL 44(SP), CX XORL 44(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
@@ -854,6 +962,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R8 ADDL $0x8f1bbcdc, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 52.
MOVL 4(SP), CX MOVL 4(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
@@ -873,6 +983,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R10 ADDL $0x8f1bbcdc, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 53.
MOVL 8(SP), CX MOVL 8(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
@@ -892,6 +1004,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R9 ADDL $0x8f1bbcdc, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 54.
MOVL 12(SP), CX MOVL 12(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
@@ -911,6 +1025,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R11 ADDL $0x8f1bbcdc, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 55.
MOVL 16(SP), CX MOVL 16(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
@@ -930,6 +1046,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R13 ADDL $0x8f1bbcdc, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 56.
MOVL 20(SP), CX MOVL 20(SP), CX
XORL (SP), CX XORL (SP), CX
XORL 40(SP), CX XORL 40(SP), CX
@@ -949,6 +1067,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R12 ADDL $0x8f1bbcdc, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 57.
MOVL 24(SP), CX MOVL 24(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
@@ -968,6 +1088,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R8 ADDL $0x8f1bbcdc, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 58.
MOVL 28(SP), CX MOVL 28(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
@@ -987,6 +1109,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R10 ADDL $0x8f1bbcdc, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 59.
MOVL 32(SP), CX MOVL 32(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
@@ -1006,6 +1130,8 @@ TEXT ·block(SB), $64-32
ADDL $0x8f1bbcdc, R9 ADDL $0x8f1bbcdc, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 60.
MOVL 36(SP), CX MOVL 36(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
@@ -1022,6 +1148,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R11 ADDL $0xca62c1d6, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 61.
MOVL 40(SP), CX MOVL 40(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
@@ -1038,6 +1166,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R13 ADDL $0xca62c1d6, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 62.
MOVL 44(SP), CX MOVL 44(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
XORL (SP), CX XORL (SP), CX
@@ -1054,6 +1184,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R12 ADDL $0xca62c1d6, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 63.
MOVL 48(SP), CX MOVL 48(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
@@ -1070,6 +1202,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R8 ADDL $0xca62c1d6, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 64.
MOVL 52(SP), CX MOVL 52(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
@@ -1086,6 +1220,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R10 ADDL $0xca62c1d6, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 65.
MOVL 56(SP), CX MOVL 56(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
@@ -1102,6 +1238,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R9 ADDL $0xca62c1d6, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 66.
MOVL 60(SP), CX MOVL 60(SP), CX
XORL 40(SP), CX XORL 40(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
@@ -1118,6 +1256,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R11 ADDL $0xca62c1d6, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 67.
MOVL (SP), CX MOVL (SP), CX
XORL 44(SP), CX XORL 44(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
@@ -1134,6 +1274,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R13 ADDL $0xca62c1d6, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 68.
MOVL 4(SP), CX MOVL 4(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
@@ -1150,6 +1292,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R12 ADDL $0xca62c1d6, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 69.
MOVL 8(SP), CX MOVL 8(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
@@ -1166,6 +1310,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R8 ADDL $0xca62c1d6, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 70.
MOVL 12(SP), CX MOVL 12(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
XORL 32(SP), CX XORL 32(SP), CX
@@ -1182,6 +1328,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R10 ADDL $0xca62c1d6, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 71.
MOVL 16(SP), CX MOVL 16(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
XORL 36(SP), CX XORL 36(SP), CX
@@ -1198,6 +1346,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R9 ADDL $0xca62c1d6, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 72.
MOVL 20(SP), CX MOVL 20(SP), CX
XORL (SP), CX XORL (SP), CX
XORL 40(SP), CX XORL 40(SP), CX
@@ -1214,6 +1364,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R11 ADDL $0xca62c1d6, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 73.
MOVL 24(SP), CX MOVL 24(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
XORL 44(SP), CX XORL 44(SP), CX
@@ -1230,6 +1382,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R13 ADDL $0xca62c1d6, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Round 74.
MOVL 28(SP), CX MOVL 28(SP), CX
XORL 8(SP), CX XORL 8(SP), CX
XORL 48(SP), CX XORL 48(SP), CX
@@ -1246,6 +1400,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R12 ADDL $0xca62c1d6, R12
ADDL CX, R12 ADDL CX, R12
ROLL $0x1e, R11 ROLL $0x1e, R11
// Round 75.
MOVL 32(SP), CX MOVL 32(SP), CX
XORL 12(SP), CX XORL 12(SP), CX
XORL 52(SP), CX XORL 52(SP), CX
@@ -1262,6 +1418,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R8 ADDL $0xca62c1d6, R8
ADDL CX, R8 ADDL CX, R8
ROLL $0x1e, R13 ROLL $0x1e, R13
// Round 76.
MOVL 36(SP), CX MOVL 36(SP), CX
XORL 16(SP), CX XORL 16(SP), CX
XORL 56(SP), CX XORL 56(SP), CX
@@ -1278,6 +1436,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R10 ADDL $0xca62c1d6, R10
ADDL CX, R10 ADDL CX, R10
ROLL $0x1e, R12 ROLL $0x1e, R12
// Round 77.
MOVL 40(SP), CX MOVL 40(SP), CX
XORL 20(SP), CX XORL 20(SP), CX
XORL 60(SP), CX XORL 60(SP), CX
@@ -1294,6 +1454,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R9 ADDL $0xca62c1d6, R9
ADDL CX, R9 ADDL CX, R9
ROLL $0x1e, R8 ROLL $0x1e, R8
// Round 78.
MOVL 44(SP), CX MOVL 44(SP), CX
XORL 24(SP), CX XORL 24(SP), CX
XORL (SP), CX XORL (SP), CX
@@ -1310,6 +1472,8 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R11 ADDL $0xca62c1d6, R11
ADDL CX, R11 ADDL CX, R11
ROLL $0x1e, R10 ROLL $0x1e, R10
// Round 79.
MOVL 48(SP), CX MOVL 48(SP), CX
XORL 28(SP), CX XORL 28(SP), CX
XORL 4(SP), CX XORL 4(SP), CX
@@ -1326,11 +1490,15 @@ TEXT ·block(SB), $64-32
ADDL $0xca62c1d6, R13 ADDL $0xca62c1d6, R13
ADDL CX, R13 ADDL CX, R13
ROLL $0x1e, R9 ROLL $0x1e, R9
// Final add.
ADDL R13, DX ADDL R13, DX
ADDL R11, BX ADDL R11, BX
ADDL R9, BP ADDL R9, BP
ADDL R10, SI ADDL R10, SI
ADDL R8, DI ADDL R8, DI
// Store results back.
MOVL DX, (AX) MOVL DX, (AX)
MOVL BX, 4(AX) MOVL BX, 4(AX)
MOVL BP, 8(AX) MOVL BP, 8(AX)