]> Cypherpunks repositories - gostls13.git/commitdiff
crypto: drop pre-AVX2 SHA assembly implementations
authorRoland Shoemaker <roland@golang.org>
Fri, 14 Mar 2025 00:04:30 +0000 (17:04 -0700)
committerGopher Robot <gobot@golang.org>
Wed, 21 May 2025 19:10:59 +0000 (12:10 -0700)
Drop the entire pre-AVX2 assembly implementation of SHA-1, SHA-256, and
SHA-512. This also technically impacts the SHA-1 AVX2 implementation,
since it previously called the pre-AVX2 implementation for the last
block if the number of blocks wasn't a multiple of 2.

Instead of keeping the entire implementation just for that case, we
just call the generic implementation for the last block. This will be a
little slower, but still seems like a win.

Updates #69587

Change-Id: Id5234c42910d8c6ec6b8df700a721c0953dff02b
Reviewed-on: https://go-review.googlesource.com/c/go/+/657716
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
src/crypto/internal/fips140/sha256/_asm/sha256block_amd64_asm.go
src/crypto/internal/fips140/sha256/sha256block_amd64.go
src/crypto/internal/fips140/sha256/sha256block_amd64.s
src/crypto/internal/fips140/sha512/_asm/sha512block_amd64_asm.go
src/crypto/internal/fips140/sha512/sha512block_amd64.go
src/crypto/internal/fips140/sha512/sha512block_amd64.s
src/crypto/sha1/_asm/sha1block_amd64_asm.go
src/crypto/sha1/sha1block_amd64.go
src/crypto/sha1/sha1block_amd64.s

index b26c2418e51ea012ba14fbad856867189fabe7a6..a3324673fdd3b67a3fa98262c238ca19b3ed5c8c 100644 (file)
@@ -8,8 +8,6 @@ import (
        "os"
 
        . "github.com/mmcloughlin/avo/build"
-       . "github.com/mmcloughlin/avo/operand"
-       . "github.com/mmcloughlin/avo/reg"
 )
 
 //go:generate go run . -out ../sha256block_amd64.s
@@ -61,203 +59,11 @@ func main() {
 
        Package("crypto/internal/fips140/sha256")
        ConstraintExpr("!purego")
-       blockAMD64()
        blockAVX2()
        blockSHANI()
        Generate()
 }
 
-// Wt = Mt; for 0 <= t <= 15
-func msgSchedule0(index int) {
-       MOVL(Mem{Base: SI}.Offset(index*4), EAX)
-       BSWAPL(EAX)
-       MOVL(EAX, Mem{Base: BP}.Offset(index*4))
-}
-
-// Wt = SIGMA1(Wt-2) + Wt-7 + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 63
-//
-//     SIGMA0(x) = ROTR(7,x) XOR ROTR(18,x) XOR SHR(3,x)
-//     SIGMA1(x) = ROTR(17,x) XOR ROTR(19,x) XOR SHR(10,x)
-func msgSchedule1(index int) {
-       MOVL(Mem{Base: BP}.Offset((index-2)*4), EAX)
-       MOVL(EAX, ECX)
-       RORL(Imm(17), EAX)
-       MOVL(ECX, EDX)
-       RORL(Imm(19), ECX)
-       SHRL(Imm(10), EDX)
-       MOVL(Mem{Base: BP}.Offset((index-15)*4), EBX)
-       XORL(ECX, EAX)
-       MOVL(EBX, ECX)
-       XORL(EDX, EAX)
-       RORL(Imm(7), EBX)
-       MOVL(ECX, EDX)
-       SHRL(Imm(3), EDX)
-       RORL(Imm(18), ECX)
-       ADDL(Mem{Base: BP}.Offset((index-7)*4), EAX)
-       XORL(ECX, EBX)
-       XORL(EDX, EBX)
-       ADDL(Mem{Base: BP}.Offset((index-16)*4), EBX)
-       ADDL(EBX, EAX)
-       MOVL(EAX, Mem{Base: BP}.Offset((index)*4))
-}
-
-// Calculate T1 in AX - uses AX, CX and DX registers.
-// h is also used as an accumulator. Wt is passed in AX.
-//
-//     T1 = h + BIGSIGMA1(e) + Ch(e, f, g) + Kt + Wt
-//       BIGSIGMA1(x) = ROTR(6,x) XOR ROTR(11,x) XOR ROTR(25,x)
-//       Ch(x, y, z) = (x AND y) XOR (NOT x AND z)
-func sha256T1(konst uint32, e, f, g, h GPPhysical) {
-       ADDL(EAX, h)
-       MOVL(e, EAX)
-       ADDL(U32(konst), h)
-       MOVL(e, ECX)
-       RORL(U8(6), EAX)
-       MOVL(e, EDX)
-       RORL(U8(11), ECX)
-       XORL(ECX, EAX)
-       MOVL(e, ECX)
-       RORL(U8(25), EDX)
-       ANDL(f, ECX)
-       XORL(EAX, EDX)
-       MOVL(e, EAX)
-       NOTL(EAX)
-       ADDL(EDX, h)
-       ANDL(g, EAX)
-       XORL(ECX, EAX)
-       ADDL(h, EAX)
-}
-
-// Calculate T2 in BX - uses BX, CX, DX and DI registers.
-//
-//     T2 = BIGSIGMA0(a) + Maj(a, b, c)
-//       BIGSIGMA0(x) = ROTR(2,x) XOR ROTR(13,x) XOR ROTR(22,x)
-//       Maj(x, y, z) = (x AND y) XOR (x AND z) XOR (y AND z)
-func sha256T2(a, b, c GPPhysical) {
-       MOVL(a, EDI)
-       MOVL(c, EBX)
-       RORL(U8(2), EDI)
-       MOVL(a, EDX)
-       ANDL(b, EBX)
-       RORL(U8(13), EDX)
-       MOVL(a, ECX)
-       ANDL(c, ECX)
-       XORL(EDX, EDI)
-       XORL(ECX, EBX)
-       MOVL(a, EDX)
-       MOVL(b, ECX)
-       RORL(U8(22), EDX)
-       ANDL(a, ECX)
-       XORL(ECX, EBX)
-       XORL(EDX, EDI)
-       ADDL(EDI, EBX)
-}
-
-// Calculate T1 and T2, then e = d + T1 and a = T1 + T2.
-// The values for e and a are stored in d and h, ready for rotation.
-func sha256Round(index int, konst uint32, a, b, c, d, e, f, g, h GPPhysical) {
-       sha256T1(konst, e, f, g, h)
-       sha256T2(a, b, c)
-       MOVL(EBX, h)
-       ADDL(EAX, d)
-       ADDL(EAX, h)
-}
-
-func sha256Round0(index int, konst uint32, a, b, c, d, e, f, g, h GPPhysical) {
-       msgSchedule0(index)
-       sha256Round(index, konst, a, b, c, d, e, f, g, h)
-}
-
-func sha256Round1(index int, konst uint32, a, b, c, d, e, f, g, h GPPhysical) {
-       msgSchedule1(index)
-       sha256Round(index, konst, a, b, c, d, e, f, g, h)
-}
-
-func blockAMD64() {
-       Implement("blockAMD64")
-       AllocLocal(256 + 8)
-
-       Load(Param("p").Base(), RSI)
-       Load(Param("p").Len(), RDX)
-       SHRQ(Imm(6), RDX)
-       SHLQ(Imm(6), RDX)
-
-       // Return if p is empty
-       LEAQ(Mem{Base: RSI, Index: RDX, Scale: 1}, RDI)
-       MOVQ(RDI, Mem{Base: SP}.Offset(256))
-       CMPQ(RSI, RDI)
-       JEQ(LabelRef("end"))
-
-       BP := Mem{Base: BP}
-       Load(Param("dig"), RBP)
-       MOVL(BP.Offset(0*4), R8L)  // a = H0
-       MOVL(BP.Offset(1*4), R9L)  // b = H1
-       MOVL(BP.Offset(2*4), R10L) // c = H2
-       MOVL(BP.Offset(3*4), R11L) // d = H3
-       MOVL(BP.Offset(4*4), R12L) // e = H4
-       MOVL(BP.Offset(5*4), R13L) // f = H5
-       MOVL(BP.Offset(6*4), R14L) // g = H6
-       MOVL(BP.Offset(7*4), R15L) // h = H7
-
-       loop()
-       end()
-}
-
-func rotateRight(slice *[]GPPhysical) []GPPhysical {
-       n := len(*slice)
-       new := make([]GPPhysical, n)
-       for i, reg := range *slice {
-               new[(i+1)%n] = reg
-       }
-       return new
-}
-
-func loop() {
-       Label("loop")
-       MOVQ(RSP, RBP)
-
-       regs := []GPPhysical{R8L, R9L, R10L, R11L, R12L, R13L, R14L, R15L}
-       n := len(_K)
-
-       for i := 0; i < 16; i++ {
-               sha256Round0(i, _K[i], regs[0], regs[1], regs[2], regs[3], regs[4], regs[5], regs[6], regs[7])
-               regs = rotateRight(&regs)
-       }
-
-       for i := 16; i < n; i++ {
-               sha256Round1(i, _K[i], regs[0], regs[1], regs[2], regs[3], regs[4], regs[5], regs[6], regs[7])
-               regs = rotateRight(&regs)
-       }
-
-       Load(Param("dig"), RBP)
-       BP := Mem{Base: BP}
-       ADDL(BP.Offset(0*4), R8L) //  H0 = a + H0
-       MOVL(R8L, BP.Offset(0*4))
-       ADDL(BP.Offset(1*4), R9L) //  H1 = b + H1
-       MOVL(R9L, BP.Offset(1*4))
-       ADDL(BP.Offset(2*4), R10L) // H2 = c + H2
-       MOVL(R10L, BP.Offset(2*4))
-       ADDL(BP.Offset(3*4), R11L) // H3 = d + H3
-       MOVL(R11L, BP.Offset(3*4))
-       ADDL(BP.Offset(4*4), R12L) // H4 = e + H4
-       MOVL(R12L, BP.Offset(4*4))
-       ADDL(BP.Offset(5*4), R13L) // H5 = f + H5
-       MOVL(R13L, BP.Offset(5*4))
-       ADDL(BP.Offset(6*4), R14L) // H6 = g + H6
-       MOVL(R14L, BP.Offset(6*4))
-       ADDL(BP.Offset(7*4), R15L) // H7 = h + H7
-       MOVL(R15L, BP.Offset(7*4))
-
-       ADDQ(Imm(64), RSI)
-       CMPQ(RSI, Mem{Base: SP}.Offset(256))
-       JB(LabelRef("loop"))
-}
-
-func end() {
-       Label("end")
-       RET()
-}
-
 var _K = []uint32{
        0x428a2f98,
        0x71374491,
index 291a565b1cc0b160a4bdaaed57cb1fad787301c4..0aabcd0792268974e700880a1af16a5cf0d278a4 100644 (file)
@@ -19,9 +19,6 @@ func init() {
        impl.Register("sha256", "SHA-NI", &useSHANI)
 }
 
-//go:noescape
-func blockAMD64(dig *Digest, p []byte)
-
 //go:noescape
 func blockAVX2(dig *Digest, p []byte)
 
@@ -34,6 +31,6 @@ func block(dig *Digest, p []byte) {
        } else if useAVX2 {
                blockAVX2(dig, p)
        } else {
-               blockAMD64(dig, p)
+               blockGeneric(dig, p)
        }
 }
index ce0ad4f8877c56f66db8cb91246e96387655a066..d5ab42c819ec542b1001d4756529f090040e8cc2 100644 (file)
 
 #include "textflag.h"
 
-// func blockAMD64(dig *Digest, p []byte)
-TEXT ·blockAMD64(SB), $264-32
-       MOVQ p_base+8(FP), SI
-       MOVQ p_len+16(FP), DX
-       SHRQ $0x06, DX
-       SHLQ $0x06, DX
-       LEAQ (SI)(DX*1), DI
-       MOVQ DI, 256(SP)
-       CMPQ SI, DI
-       JEQ  end
-       MOVQ dig+0(FP), BP
-       MOVL (BP), R8
-       MOVL 4(BP), R9
-       MOVL 8(BP), R10
-       MOVL 12(BP), R11
-       MOVL 16(BP), R12
-       MOVL 20(BP), R13
-       MOVL 24(BP), R14
-       MOVL 28(BP), R15
-
-loop:
-       MOVQ   SP, BP
-       MOVL   (SI), AX
-       BSWAPL AX
-       MOVL   AX, (BP)
-       ADDL   AX, R15
-       MOVL   R12, AX
-       ADDL   $0x428a2f98, R15
-       MOVL   R12, CX
-       RORL   $0x06, AX
-       MOVL   R12, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R12, CX
-       RORL   $0x19, DX
-       ANDL   R13, CX
-       XORL   AX, DX
-       MOVL   R12, AX
-       NOTL   AX
-       ADDL   DX, R15
-       ANDL   R14, AX
-       XORL   CX, AX
-       ADDL   R15, AX
-       MOVL   R8, DI
-       MOVL   R10, BX
-       RORL   $0x02, DI
-       MOVL   R8, DX
-       ANDL   R9, BX
-       RORL   $0x0d, DX
-       MOVL   R8, CX
-       ANDL   R10, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R8, DX
-       MOVL   R9, CX
-       RORL   $0x16, DX
-       ANDL   R8, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R15
-       ADDL   AX, R11
-       ADDL   AX, R15
-       MOVL   4(SI), AX
-       BSWAPL AX
-       MOVL   AX, 4(BP)
-       ADDL   AX, R14
-       MOVL   R11, AX
-       ADDL   $0x71374491, R14
-       MOVL   R11, CX
-       RORL   $0x06, AX
-       MOVL   R11, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R11, CX
-       RORL   $0x19, DX
-       ANDL   R12, CX
-       XORL   AX, DX
-       MOVL   R11, AX
-       NOTL   AX
-       ADDL   DX, R14
-       ANDL   R13, AX
-       XORL   CX, AX
-       ADDL   R14, AX
-       MOVL   R15, DI
-       MOVL   R9, BX
-       RORL   $0x02, DI
-       MOVL   R15, DX
-       ANDL   R8, BX
-       RORL   $0x0d, DX
-       MOVL   R15, CX
-       ANDL   R9, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R15, DX
-       MOVL   R8, CX
-       RORL   $0x16, DX
-       ANDL   R15, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R14
-       ADDL   AX, R10
-       ADDL   AX, R14
-       MOVL   8(SI), AX
-       BSWAPL AX
-       MOVL   AX, 8(BP)
-       ADDL   AX, R13
-       MOVL   R10, AX
-       ADDL   $0xb5c0fbcf, R13
-       MOVL   R10, CX
-       RORL   $0x06, AX
-       MOVL   R10, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R10, CX
-       RORL   $0x19, DX
-       ANDL   R11, CX
-       XORL   AX, DX
-       MOVL   R10, AX
-       NOTL   AX
-       ADDL   DX, R13
-       ANDL   R12, AX
-       XORL   CX, AX
-       ADDL   R13, AX
-       MOVL   R14, DI
-       MOVL   R8, BX
-       RORL   $0x02, DI
-       MOVL   R14, DX
-       ANDL   R15, BX
-       RORL   $0x0d, DX
-       MOVL   R14, CX
-       ANDL   R8, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R14, DX
-       MOVL   R15, CX
-       RORL   $0x16, DX
-       ANDL   R14, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R13
-       ADDL   AX, R9
-       ADDL   AX, R13
-       MOVL   12(SI), AX
-       BSWAPL AX
-       MOVL   AX, 12(BP)
-       ADDL   AX, R12
-       MOVL   R9, AX
-       ADDL   $0xe9b5dba5, R12
-       MOVL   R9, CX
-       RORL   $0x06, AX
-       MOVL   R9, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R9, CX
-       RORL   $0x19, DX
-       ANDL   R10, CX
-       XORL   AX, DX
-       MOVL   R9, AX
-       NOTL   AX
-       ADDL   DX, R12
-       ANDL   R11, AX
-       XORL   CX, AX
-       ADDL   R12, AX
-       MOVL   R13, DI
-       MOVL   R15, BX
-       RORL   $0x02, DI
-       MOVL   R13, DX
-       ANDL   R14, BX
-       RORL   $0x0d, DX
-       MOVL   R13, CX
-       ANDL   R15, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R13, DX
-       MOVL   R14, CX
-       RORL   $0x16, DX
-       ANDL   R13, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R12
-       ADDL   AX, R8
-       ADDL   AX, R12
-       MOVL   16(SI), AX
-       BSWAPL AX
-       MOVL   AX, 16(BP)
-       ADDL   AX, R11
-       MOVL   R8, AX
-       ADDL   $0x3956c25b, R11
-       MOVL   R8, CX
-       RORL   $0x06, AX
-       MOVL   R8, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R8, CX
-       RORL   $0x19, DX
-       ANDL   R9, CX
-       XORL   AX, DX
-       MOVL   R8, AX
-       NOTL   AX
-       ADDL   DX, R11
-       ANDL   R10, AX
-       XORL   CX, AX
-       ADDL   R11, AX
-       MOVL   R12, DI
-       MOVL   R14, BX
-       RORL   $0x02, DI
-       MOVL   R12, DX
-       ANDL   R13, BX
-       RORL   $0x0d, DX
-       MOVL   R12, CX
-       ANDL   R14, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R12, DX
-       MOVL   R13, CX
-       RORL   $0x16, DX
-       ANDL   R12, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R11
-       ADDL   AX, R15
-       ADDL   AX, R11
-       MOVL   20(SI), AX
-       BSWAPL AX
-       MOVL   AX, 20(BP)
-       ADDL   AX, R10
-       MOVL   R15, AX
-       ADDL   $0x59f111f1, R10
-       MOVL   R15, CX
-       RORL   $0x06, AX
-       MOVL   R15, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R15, CX
-       RORL   $0x19, DX
-       ANDL   R8, CX
-       XORL   AX, DX
-       MOVL   R15, AX
-       NOTL   AX
-       ADDL   DX, R10
-       ANDL   R9, AX
-       XORL   CX, AX
-       ADDL   R10, AX
-       MOVL   R11, DI
-       MOVL   R13, BX
-       RORL   $0x02, DI
-       MOVL   R11, DX
-       ANDL   R12, BX
-       RORL   $0x0d, DX
-       MOVL   R11, CX
-       ANDL   R13, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R11, DX
-       MOVL   R12, CX
-       RORL   $0x16, DX
-       ANDL   R11, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R10
-       ADDL   AX, R14
-       ADDL   AX, R10
-       MOVL   24(SI), AX
-       BSWAPL AX
-       MOVL   AX, 24(BP)
-       ADDL   AX, R9
-       MOVL   R14, AX
-       ADDL   $0x923f82a4, R9
-       MOVL   R14, CX
-       RORL   $0x06, AX
-       MOVL   R14, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R14, CX
-       RORL   $0x19, DX
-       ANDL   R15, CX
-       XORL   AX, DX
-       MOVL   R14, AX
-       NOTL   AX
-       ADDL   DX, R9
-       ANDL   R8, AX
-       XORL   CX, AX
-       ADDL   R9, AX
-       MOVL   R10, DI
-       MOVL   R12, BX
-       RORL   $0x02, DI
-       MOVL   R10, DX
-       ANDL   R11, BX
-       RORL   $0x0d, DX
-       MOVL   R10, CX
-       ANDL   R12, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R10, DX
-       MOVL   R11, CX
-       RORL   $0x16, DX
-       ANDL   R10, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R9
-       ADDL   AX, R13
-       ADDL   AX, R9
-       MOVL   28(SI), AX
-       BSWAPL AX
-       MOVL   AX, 28(BP)
-       ADDL   AX, R8
-       MOVL   R13, AX
-       ADDL   $0xab1c5ed5, R8
-       MOVL   R13, CX
-       RORL   $0x06, AX
-       MOVL   R13, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R13, CX
-       RORL   $0x19, DX
-       ANDL   R14, CX
-       XORL   AX, DX
-       MOVL   R13, AX
-       NOTL   AX
-       ADDL   DX, R8
-       ANDL   R15, AX
-       XORL   CX, AX
-       ADDL   R8, AX
-       MOVL   R9, DI
-       MOVL   R11, BX
-       RORL   $0x02, DI
-       MOVL   R9, DX
-       ANDL   R10, BX
-       RORL   $0x0d, DX
-       MOVL   R9, CX
-       ANDL   R11, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R9, DX
-       MOVL   R10, CX
-       RORL   $0x16, DX
-       ANDL   R9, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R8
-       ADDL   AX, R12
-       ADDL   AX, R8
-       MOVL   32(SI), AX
-       BSWAPL AX
-       MOVL   AX, 32(BP)
-       ADDL   AX, R15
-       MOVL   R12, AX
-       ADDL   $0xd807aa98, R15
-       MOVL   R12, CX
-       RORL   $0x06, AX
-       MOVL   R12, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R12, CX
-       RORL   $0x19, DX
-       ANDL   R13, CX
-       XORL   AX, DX
-       MOVL   R12, AX
-       NOTL   AX
-       ADDL   DX, R15
-       ANDL   R14, AX
-       XORL   CX, AX
-       ADDL   R15, AX
-       MOVL   R8, DI
-       MOVL   R10, BX
-       RORL   $0x02, DI
-       MOVL   R8, DX
-       ANDL   R9, BX
-       RORL   $0x0d, DX
-       MOVL   R8, CX
-       ANDL   R10, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R8, DX
-       MOVL   R9, CX
-       RORL   $0x16, DX
-       ANDL   R8, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R15
-       ADDL   AX, R11
-       ADDL   AX, R15
-       MOVL   36(SI), AX
-       BSWAPL AX
-       MOVL   AX, 36(BP)
-       ADDL   AX, R14
-       MOVL   R11, AX
-       ADDL   $0x12835b01, R14
-       MOVL   R11, CX
-       RORL   $0x06, AX
-       MOVL   R11, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R11, CX
-       RORL   $0x19, DX
-       ANDL   R12, CX
-       XORL   AX, DX
-       MOVL   R11, AX
-       NOTL   AX
-       ADDL   DX, R14
-       ANDL   R13, AX
-       XORL   CX, AX
-       ADDL   R14, AX
-       MOVL   R15, DI
-       MOVL   R9, BX
-       RORL   $0x02, DI
-       MOVL   R15, DX
-       ANDL   R8, BX
-       RORL   $0x0d, DX
-       MOVL   R15, CX
-       ANDL   R9, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R15, DX
-       MOVL   R8, CX
-       RORL   $0x16, DX
-       ANDL   R15, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R14
-       ADDL   AX, R10
-       ADDL   AX, R14
-       MOVL   40(SI), AX
-       BSWAPL AX
-       MOVL   AX, 40(BP)
-       ADDL   AX, R13
-       MOVL   R10, AX
-       ADDL   $0x243185be, R13
-       MOVL   R10, CX
-       RORL   $0x06, AX
-       MOVL   R10, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R10, CX
-       RORL   $0x19, DX
-       ANDL   R11, CX
-       XORL   AX, DX
-       MOVL   R10, AX
-       NOTL   AX
-       ADDL   DX, R13
-       ANDL   R12, AX
-       XORL   CX, AX
-       ADDL   R13, AX
-       MOVL   R14, DI
-       MOVL   R8, BX
-       RORL   $0x02, DI
-       MOVL   R14, DX
-       ANDL   R15, BX
-       RORL   $0x0d, DX
-       MOVL   R14, CX
-       ANDL   R8, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R14, DX
-       MOVL   R15, CX
-       RORL   $0x16, DX
-       ANDL   R14, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R13
-       ADDL   AX, R9
-       ADDL   AX, R13
-       MOVL   44(SI), AX
-       BSWAPL AX
-       MOVL   AX, 44(BP)
-       ADDL   AX, R12
-       MOVL   R9, AX
-       ADDL   $0x550c7dc3, R12
-       MOVL   R9, CX
-       RORL   $0x06, AX
-       MOVL   R9, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R9, CX
-       RORL   $0x19, DX
-       ANDL   R10, CX
-       XORL   AX, DX
-       MOVL   R9, AX
-       NOTL   AX
-       ADDL   DX, R12
-       ANDL   R11, AX
-       XORL   CX, AX
-       ADDL   R12, AX
-       MOVL   R13, DI
-       MOVL   R15, BX
-       RORL   $0x02, DI
-       MOVL   R13, DX
-       ANDL   R14, BX
-       RORL   $0x0d, DX
-       MOVL   R13, CX
-       ANDL   R15, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R13, DX
-       MOVL   R14, CX
-       RORL   $0x16, DX
-       ANDL   R13, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R12
-       ADDL   AX, R8
-       ADDL   AX, R12
-       MOVL   48(SI), AX
-       BSWAPL AX
-       MOVL   AX, 48(BP)
-       ADDL   AX, R11
-       MOVL   R8, AX
-       ADDL   $0x72be5d74, R11
-       MOVL   R8, CX
-       RORL   $0x06, AX
-       MOVL   R8, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R8, CX
-       RORL   $0x19, DX
-       ANDL   R9, CX
-       XORL   AX, DX
-       MOVL   R8, AX
-       NOTL   AX
-       ADDL   DX, R11
-       ANDL   R10, AX
-       XORL   CX, AX
-       ADDL   R11, AX
-       MOVL   R12, DI
-       MOVL   R14, BX
-       RORL   $0x02, DI
-       MOVL   R12, DX
-       ANDL   R13, BX
-       RORL   $0x0d, DX
-       MOVL   R12, CX
-       ANDL   R14, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R12, DX
-       MOVL   R13, CX
-       RORL   $0x16, DX
-       ANDL   R12, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R11
-       ADDL   AX, R15
-       ADDL   AX, R11
-       MOVL   52(SI), AX
-       BSWAPL AX
-       MOVL   AX, 52(BP)
-       ADDL   AX, R10
-       MOVL   R15, AX
-       ADDL   $0x80deb1fe, R10
-       MOVL   R15, CX
-       RORL   $0x06, AX
-       MOVL   R15, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R15, CX
-       RORL   $0x19, DX
-       ANDL   R8, CX
-       XORL   AX, DX
-       MOVL   R15, AX
-       NOTL   AX
-       ADDL   DX, R10
-       ANDL   R9, AX
-       XORL   CX, AX
-       ADDL   R10, AX
-       MOVL   R11, DI
-       MOVL   R13, BX
-       RORL   $0x02, DI
-       MOVL   R11, DX
-       ANDL   R12, BX
-       RORL   $0x0d, DX
-       MOVL   R11, CX
-       ANDL   R13, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R11, DX
-       MOVL   R12, CX
-       RORL   $0x16, DX
-       ANDL   R11, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R10
-       ADDL   AX, R14
-       ADDL   AX, R10
-       MOVL   56(SI), AX
-       BSWAPL AX
-       MOVL   AX, 56(BP)
-       ADDL   AX, R9
-       MOVL   R14, AX
-       ADDL   $0x9bdc06a7, R9
-       MOVL   R14, CX
-       RORL   $0x06, AX
-       MOVL   R14, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R14, CX
-       RORL   $0x19, DX
-       ANDL   R15, CX
-       XORL   AX, DX
-       MOVL   R14, AX
-       NOTL   AX
-       ADDL   DX, R9
-       ANDL   R8, AX
-       XORL   CX, AX
-       ADDL   R9, AX
-       MOVL   R10, DI
-       MOVL   R12, BX
-       RORL   $0x02, DI
-       MOVL   R10, DX
-       ANDL   R11, BX
-       RORL   $0x0d, DX
-       MOVL   R10, CX
-       ANDL   R12, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R10, DX
-       MOVL   R11, CX
-       RORL   $0x16, DX
-       ANDL   R10, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R9
-       ADDL   AX, R13
-       ADDL   AX, R9
-       MOVL   60(SI), AX
-       BSWAPL AX
-       MOVL   AX, 60(BP)
-       ADDL   AX, R8
-       MOVL   R13, AX
-       ADDL   $0xc19bf174, R8
-       MOVL   R13, CX
-       RORL   $0x06, AX
-       MOVL   R13, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R13, CX
-       RORL   $0x19, DX
-       ANDL   R14, CX
-       XORL   AX, DX
-       MOVL   R13, AX
-       NOTL   AX
-       ADDL   DX, R8
-       ANDL   R15, AX
-       XORL   CX, AX
-       ADDL   R8, AX
-       MOVL   R9, DI
-       MOVL   R11, BX
-       RORL   $0x02, DI
-       MOVL   R9, DX
-       ANDL   R10, BX
-       RORL   $0x0d, DX
-       MOVL   R9, CX
-       ANDL   R11, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R9, DX
-       MOVL   R10, CX
-       RORL   $0x16, DX
-       ANDL   R9, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R8
-       ADDL   AX, R12
-       ADDL   AX, R8
-       MOVL   56(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   4(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   36(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   (BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 64(BP)
-       ADDL   AX, R15
-       MOVL   R12, AX
-       ADDL   $0xe49b69c1, R15
-       MOVL   R12, CX
-       RORL   $0x06, AX
-       MOVL   R12, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R12, CX
-       RORL   $0x19, DX
-       ANDL   R13, CX
-       XORL   AX, DX
-       MOVL   R12, AX
-       NOTL   AX
-       ADDL   DX, R15
-       ANDL   R14, AX
-       XORL   CX, AX
-       ADDL   R15, AX
-       MOVL   R8, DI
-       MOVL   R10, BX
-       RORL   $0x02, DI
-       MOVL   R8, DX
-       ANDL   R9, BX
-       RORL   $0x0d, DX
-       MOVL   R8, CX
-       ANDL   R10, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R8, DX
-       MOVL   R9, CX
-       RORL   $0x16, DX
-       ANDL   R8, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R15
-       ADDL   AX, R11
-       ADDL   AX, R15
-       MOVL   60(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   8(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   40(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   4(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 68(BP)
-       ADDL   AX, R14
-       MOVL   R11, AX
-       ADDL   $0xefbe4786, R14
-       MOVL   R11, CX
-       RORL   $0x06, AX
-       MOVL   R11, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R11, CX
-       RORL   $0x19, DX
-       ANDL   R12, CX
-       XORL   AX, DX
-       MOVL   R11, AX
-       NOTL   AX
-       ADDL   DX, R14
-       ANDL   R13, AX
-       XORL   CX, AX
-       ADDL   R14, AX
-       MOVL   R15, DI
-       MOVL   R9, BX
-       RORL   $0x02, DI
-       MOVL   R15, DX
-       ANDL   R8, BX
-       RORL   $0x0d, DX
-       MOVL   R15, CX
-       ANDL   R9, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R15, DX
-       MOVL   R8, CX
-       RORL   $0x16, DX
-       ANDL   R15, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R14
-       ADDL   AX, R10
-       ADDL   AX, R14
-       MOVL   64(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   12(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   44(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   8(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 72(BP)
-       ADDL   AX, R13
-       MOVL   R10, AX
-       ADDL   $0x0fc19dc6, R13
-       MOVL   R10, CX
-       RORL   $0x06, AX
-       MOVL   R10, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R10, CX
-       RORL   $0x19, DX
-       ANDL   R11, CX
-       XORL   AX, DX
-       MOVL   R10, AX
-       NOTL   AX
-       ADDL   DX, R13
-       ANDL   R12, AX
-       XORL   CX, AX
-       ADDL   R13, AX
-       MOVL   R14, DI
-       MOVL   R8, BX
-       RORL   $0x02, DI
-       MOVL   R14, DX
-       ANDL   R15, BX
-       RORL   $0x0d, DX
-       MOVL   R14, CX
-       ANDL   R8, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R14, DX
-       MOVL   R15, CX
-       RORL   $0x16, DX
-       ANDL   R14, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R13
-       ADDL   AX, R9
-       ADDL   AX, R13
-       MOVL   68(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   16(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   48(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   12(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 76(BP)
-       ADDL   AX, R12
-       MOVL   R9, AX
-       ADDL   $0x240ca1cc, R12
-       MOVL   R9, CX
-       RORL   $0x06, AX
-       MOVL   R9, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R9, CX
-       RORL   $0x19, DX
-       ANDL   R10, CX
-       XORL   AX, DX
-       MOVL   R9, AX
-       NOTL   AX
-       ADDL   DX, R12
-       ANDL   R11, AX
-       XORL   CX, AX
-       ADDL   R12, AX
-       MOVL   R13, DI
-       MOVL   R15, BX
-       RORL   $0x02, DI
-       MOVL   R13, DX
-       ANDL   R14, BX
-       RORL   $0x0d, DX
-       MOVL   R13, CX
-       ANDL   R15, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R13, DX
-       MOVL   R14, CX
-       RORL   $0x16, DX
-       ANDL   R13, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R12
-       ADDL   AX, R8
-       ADDL   AX, R12
-       MOVL   72(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   20(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   52(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   16(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 80(BP)
-       ADDL   AX, R11
-       MOVL   R8, AX
-       ADDL   $0x2de92c6f, R11
-       MOVL   R8, CX
-       RORL   $0x06, AX
-       MOVL   R8, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R8, CX
-       RORL   $0x19, DX
-       ANDL   R9, CX
-       XORL   AX, DX
-       MOVL   R8, AX
-       NOTL   AX
-       ADDL   DX, R11
-       ANDL   R10, AX
-       XORL   CX, AX
-       ADDL   R11, AX
-       MOVL   R12, DI
-       MOVL   R14, BX
-       RORL   $0x02, DI
-       MOVL   R12, DX
-       ANDL   R13, BX
-       RORL   $0x0d, DX
-       MOVL   R12, CX
-       ANDL   R14, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R12, DX
-       MOVL   R13, CX
-       RORL   $0x16, DX
-       ANDL   R12, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R11
-       ADDL   AX, R15
-       ADDL   AX, R11
-       MOVL   76(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   24(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   56(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   20(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 84(BP)
-       ADDL   AX, R10
-       MOVL   R15, AX
-       ADDL   $0x4a7484aa, R10
-       MOVL   R15, CX
-       RORL   $0x06, AX
-       MOVL   R15, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R15, CX
-       RORL   $0x19, DX
-       ANDL   R8, CX
-       XORL   AX, DX
-       MOVL   R15, AX
-       NOTL   AX
-       ADDL   DX, R10
-       ANDL   R9, AX
-       XORL   CX, AX
-       ADDL   R10, AX
-       MOVL   R11, DI
-       MOVL   R13, BX
-       RORL   $0x02, DI
-       MOVL   R11, DX
-       ANDL   R12, BX
-       RORL   $0x0d, DX
-       MOVL   R11, CX
-       ANDL   R13, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R11, DX
-       MOVL   R12, CX
-       RORL   $0x16, DX
-       ANDL   R11, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R10
-       ADDL   AX, R14
-       ADDL   AX, R10
-       MOVL   80(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   28(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   60(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   24(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 88(BP)
-       ADDL   AX, R9
-       MOVL   R14, AX
-       ADDL   $0x5cb0a9dc, R9
-       MOVL   R14, CX
-       RORL   $0x06, AX
-       MOVL   R14, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R14, CX
-       RORL   $0x19, DX
-       ANDL   R15, CX
-       XORL   AX, DX
-       MOVL   R14, AX
-       NOTL   AX
-       ADDL   DX, R9
-       ANDL   R8, AX
-       XORL   CX, AX
-       ADDL   R9, AX
-       MOVL   R10, DI
-       MOVL   R12, BX
-       RORL   $0x02, DI
-       MOVL   R10, DX
-       ANDL   R11, BX
-       RORL   $0x0d, DX
-       MOVL   R10, CX
-       ANDL   R12, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R10, DX
-       MOVL   R11, CX
-       RORL   $0x16, DX
-       ANDL   R10, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R9
-       ADDL   AX, R13
-       ADDL   AX, R9
-       MOVL   84(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   32(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   64(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   28(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 92(BP)
-       ADDL   AX, R8
-       MOVL   R13, AX
-       ADDL   $0x76f988da, R8
-       MOVL   R13, CX
-       RORL   $0x06, AX
-       MOVL   R13, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R13, CX
-       RORL   $0x19, DX
-       ANDL   R14, CX
-       XORL   AX, DX
-       MOVL   R13, AX
-       NOTL   AX
-       ADDL   DX, R8
-       ANDL   R15, AX
-       XORL   CX, AX
-       ADDL   R8, AX
-       MOVL   R9, DI
-       MOVL   R11, BX
-       RORL   $0x02, DI
-       MOVL   R9, DX
-       ANDL   R10, BX
-       RORL   $0x0d, DX
-       MOVL   R9, CX
-       ANDL   R11, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R9, DX
-       MOVL   R10, CX
-       RORL   $0x16, DX
-       ANDL   R9, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R8
-       ADDL   AX, R12
-       ADDL   AX, R8
-       MOVL   88(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   36(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   68(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   32(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 96(BP)
-       ADDL   AX, R15
-       MOVL   R12, AX
-       ADDL   $0x983e5152, R15
-       MOVL   R12, CX
-       RORL   $0x06, AX
-       MOVL   R12, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R12, CX
-       RORL   $0x19, DX
-       ANDL   R13, CX
-       XORL   AX, DX
-       MOVL   R12, AX
-       NOTL   AX
-       ADDL   DX, R15
-       ANDL   R14, AX
-       XORL   CX, AX
-       ADDL   R15, AX
-       MOVL   R8, DI
-       MOVL   R10, BX
-       RORL   $0x02, DI
-       MOVL   R8, DX
-       ANDL   R9, BX
-       RORL   $0x0d, DX
-       MOVL   R8, CX
-       ANDL   R10, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R8, DX
-       MOVL   R9, CX
-       RORL   $0x16, DX
-       ANDL   R8, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R15
-       ADDL   AX, R11
-       ADDL   AX, R15
-       MOVL   92(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   40(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   72(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   36(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 100(BP)
-       ADDL   AX, R14
-       MOVL   R11, AX
-       ADDL   $0xa831c66d, R14
-       MOVL   R11, CX
-       RORL   $0x06, AX
-       MOVL   R11, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R11, CX
-       RORL   $0x19, DX
-       ANDL   R12, CX
-       XORL   AX, DX
-       MOVL   R11, AX
-       NOTL   AX
-       ADDL   DX, R14
-       ANDL   R13, AX
-       XORL   CX, AX
-       ADDL   R14, AX
-       MOVL   R15, DI
-       MOVL   R9, BX
-       RORL   $0x02, DI
-       MOVL   R15, DX
-       ANDL   R8, BX
-       RORL   $0x0d, DX
-       MOVL   R15, CX
-       ANDL   R9, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R15, DX
-       MOVL   R8, CX
-       RORL   $0x16, DX
-       ANDL   R15, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R14
-       ADDL   AX, R10
-       ADDL   AX, R14
-       MOVL   96(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   44(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   76(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   40(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 104(BP)
-       ADDL   AX, R13
-       MOVL   R10, AX
-       ADDL   $0xb00327c8, R13
-       MOVL   R10, CX
-       RORL   $0x06, AX
-       MOVL   R10, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R10, CX
-       RORL   $0x19, DX
-       ANDL   R11, CX
-       XORL   AX, DX
-       MOVL   R10, AX
-       NOTL   AX
-       ADDL   DX, R13
-       ANDL   R12, AX
-       XORL   CX, AX
-       ADDL   R13, AX
-       MOVL   R14, DI
-       MOVL   R8, BX
-       RORL   $0x02, DI
-       MOVL   R14, DX
-       ANDL   R15, BX
-       RORL   $0x0d, DX
-       MOVL   R14, CX
-       ANDL   R8, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R14, DX
-       MOVL   R15, CX
-       RORL   $0x16, DX
-       ANDL   R14, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R13
-       ADDL   AX, R9
-       ADDL   AX, R13
-       MOVL   100(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   48(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   80(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   44(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 108(BP)
-       ADDL   AX, R12
-       MOVL   R9, AX
-       ADDL   $0xbf597fc7, R12
-       MOVL   R9, CX
-       RORL   $0x06, AX
-       MOVL   R9, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R9, CX
-       RORL   $0x19, DX
-       ANDL   R10, CX
-       XORL   AX, DX
-       MOVL   R9, AX
-       NOTL   AX
-       ADDL   DX, R12
-       ANDL   R11, AX
-       XORL   CX, AX
-       ADDL   R12, AX
-       MOVL   R13, DI
-       MOVL   R15, BX
-       RORL   $0x02, DI
-       MOVL   R13, DX
-       ANDL   R14, BX
-       RORL   $0x0d, DX
-       MOVL   R13, CX
-       ANDL   R15, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R13, DX
-       MOVL   R14, CX
-       RORL   $0x16, DX
-       ANDL   R13, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R12
-       ADDL   AX, R8
-       ADDL   AX, R12
-       MOVL   104(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   52(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   84(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   48(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 112(BP)
-       ADDL   AX, R11
-       MOVL   R8, AX
-       ADDL   $0xc6e00bf3, R11
-       MOVL   R8, CX
-       RORL   $0x06, AX
-       MOVL   R8, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R8, CX
-       RORL   $0x19, DX
-       ANDL   R9, CX
-       XORL   AX, DX
-       MOVL   R8, AX
-       NOTL   AX
-       ADDL   DX, R11
-       ANDL   R10, AX
-       XORL   CX, AX
-       ADDL   R11, AX
-       MOVL   R12, DI
-       MOVL   R14, BX
-       RORL   $0x02, DI
-       MOVL   R12, DX
-       ANDL   R13, BX
-       RORL   $0x0d, DX
-       MOVL   R12, CX
-       ANDL   R14, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R12, DX
-       MOVL   R13, CX
-       RORL   $0x16, DX
-       ANDL   R12, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R11
-       ADDL   AX, R15
-       ADDL   AX, R11
-       MOVL   108(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   56(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   88(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   52(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 116(BP)
-       ADDL   AX, R10
-       MOVL   R15, AX
-       ADDL   $0xd5a79147, R10
-       MOVL   R15, CX
-       RORL   $0x06, AX
-       MOVL   R15, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R15, CX
-       RORL   $0x19, DX
-       ANDL   R8, CX
-       XORL   AX, DX
-       MOVL   R15, AX
-       NOTL   AX
-       ADDL   DX, R10
-       ANDL   R9, AX
-       XORL   CX, AX
-       ADDL   R10, AX
-       MOVL   R11, DI
-       MOVL   R13, BX
-       RORL   $0x02, DI
-       MOVL   R11, DX
-       ANDL   R12, BX
-       RORL   $0x0d, DX
-       MOVL   R11, CX
-       ANDL   R13, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R11, DX
-       MOVL   R12, CX
-       RORL   $0x16, DX
-       ANDL   R11, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R10
-       ADDL   AX, R14
-       ADDL   AX, R10
-       MOVL   112(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   60(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   92(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   56(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 120(BP)
-       ADDL   AX, R9
-       MOVL   R14, AX
-       ADDL   $0x06ca6351, R9
-       MOVL   R14, CX
-       RORL   $0x06, AX
-       MOVL   R14, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R14, CX
-       RORL   $0x19, DX
-       ANDL   R15, CX
-       XORL   AX, DX
-       MOVL   R14, AX
-       NOTL   AX
-       ADDL   DX, R9
-       ANDL   R8, AX
-       XORL   CX, AX
-       ADDL   R9, AX
-       MOVL   R10, DI
-       MOVL   R12, BX
-       RORL   $0x02, DI
-       MOVL   R10, DX
-       ANDL   R11, BX
-       RORL   $0x0d, DX
-       MOVL   R10, CX
-       ANDL   R12, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R10, DX
-       MOVL   R11, CX
-       RORL   $0x16, DX
-       ANDL   R10, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R9
-       ADDL   AX, R13
-       ADDL   AX, R9
-       MOVL   116(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   64(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   96(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   60(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 124(BP)
-       ADDL   AX, R8
-       MOVL   R13, AX
-       ADDL   $0x14292967, R8
-       MOVL   R13, CX
-       RORL   $0x06, AX
-       MOVL   R13, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R13, CX
-       RORL   $0x19, DX
-       ANDL   R14, CX
-       XORL   AX, DX
-       MOVL   R13, AX
-       NOTL   AX
-       ADDL   DX, R8
-       ANDL   R15, AX
-       XORL   CX, AX
-       ADDL   R8, AX
-       MOVL   R9, DI
-       MOVL   R11, BX
-       RORL   $0x02, DI
-       MOVL   R9, DX
-       ANDL   R10, BX
-       RORL   $0x0d, DX
-       MOVL   R9, CX
-       ANDL   R11, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R9, DX
-       MOVL   R10, CX
-       RORL   $0x16, DX
-       ANDL   R9, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R8
-       ADDL   AX, R12
-       ADDL   AX, R8
-       MOVL   120(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   68(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   100(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   64(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 128(BP)
-       ADDL   AX, R15
-       MOVL   R12, AX
-       ADDL   $0x27b70a85, R15
-       MOVL   R12, CX
-       RORL   $0x06, AX
-       MOVL   R12, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R12, CX
-       RORL   $0x19, DX
-       ANDL   R13, CX
-       XORL   AX, DX
-       MOVL   R12, AX
-       NOTL   AX
-       ADDL   DX, R15
-       ANDL   R14, AX
-       XORL   CX, AX
-       ADDL   R15, AX
-       MOVL   R8, DI
-       MOVL   R10, BX
-       RORL   $0x02, DI
-       MOVL   R8, DX
-       ANDL   R9, BX
-       RORL   $0x0d, DX
-       MOVL   R8, CX
-       ANDL   R10, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R8, DX
-       MOVL   R9, CX
-       RORL   $0x16, DX
-       ANDL   R8, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R15
-       ADDL   AX, R11
-       ADDL   AX, R15
-       MOVL   124(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   72(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   104(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   68(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 132(BP)
-       ADDL   AX, R14
-       MOVL   R11, AX
-       ADDL   $0x2e1b2138, R14
-       MOVL   R11, CX
-       RORL   $0x06, AX
-       MOVL   R11, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R11, CX
-       RORL   $0x19, DX
-       ANDL   R12, CX
-       XORL   AX, DX
-       MOVL   R11, AX
-       NOTL   AX
-       ADDL   DX, R14
-       ANDL   R13, AX
-       XORL   CX, AX
-       ADDL   R14, AX
-       MOVL   R15, DI
-       MOVL   R9, BX
-       RORL   $0x02, DI
-       MOVL   R15, DX
-       ANDL   R8, BX
-       RORL   $0x0d, DX
-       MOVL   R15, CX
-       ANDL   R9, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R15, DX
-       MOVL   R8, CX
-       RORL   $0x16, DX
-       ANDL   R15, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R14
-       ADDL   AX, R10
-       ADDL   AX, R14
-       MOVL   128(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   76(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   108(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   72(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 136(BP)
-       ADDL   AX, R13
-       MOVL   R10, AX
-       ADDL   $0x4d2c6dfc, R13
-       MOVL   R10, CX
-       RORL   $0x06, AX
-       MOVL   R10, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R10, CX
-       RORL   $0x19, DX
-       ANDL   R11, CX
-       XORL   AX, DX
-       MOVL   R10, AX
-       NOTL   AX
-       ADDL   DX, R13
-       ANDL   R12, AX
-       XORL   CX, AX
-       ADDL   R13, AX
-       MOVL   R14, DI
-       MOVL   R8, BX
-       RORL   $0x02, DI
-       MOVL   R14, DX
-       ANDL   R15, BX
-       RORL   $0x0d, DX
-       MOVL   R14, CX
-       ANDL   R8, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R14, DX
-       MOVL   R15, CX
-       RORL   $0x16, DX
-       ANDL   R14, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R13
-       ADDL   AX, R9
-       ADDL   AX, R13
-       MOVL   132(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   80(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   112(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   76(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 140(BP)
-       ADDL   AX, R12
-       MOVL   R9, AX
-       ADDL   $0x53380d13, R12
-       MOVL   R9, CX
-       RORL   $0x06, AX
-       MOVL   R9, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R9, CX
-       RORL   $0x19, DX
-       ANDL   R10, CX
-       XORL   AX, DX
-       MOVL   R9, AX
-       NOTL   AX
-       ADDL   DX, R12
-       ANDL   R11, AX
-       XORL   CX, AX
-       ADDL   R12, AX
-       MOVL   R13, DI
-       MOVL   R15, BX
-       RORL   $0x02, DI
-       MOVL   R13, DX
-       ANDL   R14, BX
-       RORL   $0x0d, DX
-       MOVL   R13, CX
-       ANDL   R15, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R13, DX
-       MOVL   R14, CX
-       RORL   $0x16, DX
-       ANDL   R13, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R12
-       ADDL   AX, R8
-       ADDL   AX, R12
-       MOVL   136(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   84(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   116(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   80(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 144(BP)
-       ADDL   AX, R11
-       MOVL   R8, AX
-       ADDL   $0x650a7354, R11
-       MOVL   R8, CX
-       RORL   $0x06, AX
-       MOVL   R8, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R8, CX
-       RORL   $0x19, DX
-       ANDL   R9, CX
-       XORL   AX, DX
-       MOVL   R8, AX
-       NOTL   AX
-       ADDL   DX, R11
-       ANDL   R10, AX
-       XORL   CX, AX
-       ADDL   R11, AX
-       MOVL   R12, DI
-       MOVL   R14, BX
-       RORL   $0x02, DI
-       MOVL   R12, DX
-       ANDL   R13, BX
-       RORL   $0x0d, DX
-       MOVL   R12, CX
-       ANDL   R14, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R12, DX
-       MOVL   R13, CX
-       RORL   $0x16, DX
-       ANDL   R12, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R11
-       ADDL   AX, R15
-       ADDL   AX, R11
-       MOVL   140(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   88(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   120(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   84(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 148(BP)
-       ADDL   AX, R10
-       MOVL   R15, AX
-       ADDL   $0x766a0abb, R10
-       MOVL   R15, CX
-       RORL   $0x06, AX
-       MOVL   R15, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R15, CX
-       RORL   $0x19, DX
-       ANDL   R8, CX
-       XORL   AX, DX
-       MOVL   R15, AX
-       NOTL   AX
-       ADDL   DX, R10
-       ANDL   R9, AX
-       XORL   CX, AX
-       ADDL   R10, AX
-       MOVL   R11, DI
-       MOVL   R13, BX
-       RORL   $0x02, DI
-       MOVL   R11, DX
-       ANDL   R12, BX
-       RORL   $0x0d, DX
-       MOVL   R11, CX
-       ANDL   R13, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R11, DX
-       MOVL   R12, CX
-       RORL   $0x16, DX
-       ANDL   R11, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R10
-       ADDL   AX, R14
-       ADDL   AX, R10
-       MOVL   144(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   92(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   124(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   88(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 152(BP)
-       ADDL   AX, R9
-       MOVL   R14, AX
-       ADDL   $0x81c2c92e, R9
-       MOVL   R14, CX
-       RORL   $0x06, AX
-       MOVL   R14, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R14, CX
-       RORL   $0x19, DX
-       ANDL   R15, CX
-       XORL   AX, DX
-       MOVL   R14, AX
-       NOTL   AX
-       ADDL   DX, R9
-       ANDL   R8, AX
-       XORL   CX, AX
-       ADDL   R9, AX
-       MOVL   R10, DI
-       MOVL   R12, BX
-       RORL   $0x02, DI
-       MOVL   R10, DX
-       ANDL   R11, BX
-       RORL   $0x0d, DX
-       MOVL   R10, CX
-       ANDL   R12, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R10, DX
-       MOVL   R11, CX
-       RORL   $0x16, DX
-       ANDL   R10, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R9
-       ADDL   AX, R13
-       ADDL   AX, R9
-       MOVL   148(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   96(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   128(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   92(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 156(BP)
-       ADDL   AX, R8
-       MOVL   R13, AX
-       ADDL   $0x92722c85, R8
-       MOVL   R13, CX
-       RORL   $0x06, AX
-       MOVL   R13, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R13, CX
-       RORL   $0x19, DX
-       ANDL   R14, CX
-       XORL   AX, DX
-       MOVL   R13, AX
-       NOTL   AX
-       ADDL   DX, R8
-       ANDL   R15, AX
-       XORL   CX, AX
-       ADDL   R8, AX
-       MOVL   R9, DI
-       MOVL   R11, BX
-       RORL   $0x02, DI
-       MOVL   R9, DX
-       ANDL   R10, BX
-       RORL   $0x0d, DX
-       MOVL   R9, CX
-       ANDL   R11, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R9, DX
-       MOVL   R10, CX
-       RORL   $0x16, DX
-       ANDL   R9, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R8
-       ADDL   AX, R12
-       ADDL   AX, R8
-       MOVL   152(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   100(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   132(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   96(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 160(BP)
-       ADDL   AX, R15
-       MOVL   R12, AX
-       ADDL   $0xa2bfe8a1, R15
-       MOVL   R12, CX
-       RORL   $0x06, AX
-       MOVL   R12, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R12, CX
-       RORL   $0x19, DX
-       ANDL   R13, CX
-       XORL   AX, DX
-       MOVL   R12, AX
-       NOTL   AX
-       ADDL   DX, R15
-       ANDL   R14, AX
-       XORL   CX, AX
-       ADDL   R15, AX
-       MOVL   R8, DI
-       MOVL   R10, BX
-       RORL   $0x02, DI
-       MOVL   R8, DX
-       ANDL   R9, BX
-       RORL   $0x0d, DX
-       MOVL   R8, CX
-       ANDL   R10, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R8, DX
-       MOVL   R9, CX
-       RORL   $0x16, DX
-       ANDL   R8, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R15
-       ADDL   AX, R11
-       ADDL   AX, R15
-       MOVL   156(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   104(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   136(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   100(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 164(BP)
-       ADDL   AX, R14
-       MOVL   R11, AX
-       ADDL   $0xa81a664b, R14
-       MOVL   R11, CX
-       RORL   $0x06, AX
-       MOVL   R11, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R11, CX
-       RORL   $0x19, DX
-       ANDL   R12, CX
-       XORL   AX, DX
-       MOVL   R11, AX
-       NOTL   AX
-       ADDL   DX, R14
-       ANDL   R13, AX
-       XORL   CX, AX
-       ADDL   R14, AX
-       MOVL   R15, DI
-       MOVL   R9, BX
-       RORL   $0x02, DI
-       MOVL   R15, DX
-       ANDL   R8, BX
-       RORL   $0x0d, DX
-       MOVL   R15, CX
-       ANDL   R9, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R15, DX
-       MOVL   R8, CX
-       RORL   $0x16, DX
-       ANDL   R15, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R14
-       ADDL   AX, R10
-       ADDL   AX, R14
-       MOVL   160(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   108(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   140(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   104(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 168(BP)
-       ADDL   AX, R13
-       MOVL   R10, AX
-       ADDL   $0xc24b8b70, R13
-       MOVL   R10, CX
-       RORL   $0x06, AX
-       MOVL   R10, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R10, CX
-       RORL   $0x19, DX
-       ANDL   R11, CX
-       XORL   AX, DX
-       MOVL   R10, AX
-       NOTL   AX
-       ADDL   DX, R13
-       ANDL   R12, AX
-       XORL   CX, AX
-       ADDL   R13, AX
-       MOVL   R14, DI
-       MOVL   R8, BX
-       RORL   $0x02, DI
-       MOVL   R14, DX
-       ANDL   R15, BX
-       RORL   $0x0d, DX
-       MOVL   R14, CX
-       ANDL   R8, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R14, DX
-       MOVL   R15, CX
-       RORL   $0x16, DX
-       ANDL   R14, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R13
-       ADDL   AX, R9
-       ADDL   AX, R13
-       MOVL   164(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   112(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   144(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   108(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 172(BP)
-       ADDL   AX, R12
-       MOVL   R9, AX
-       ADDL   $0xc76c51a3, R12
-       MOVL   R9, CX
-       RORL   $0x06, AX
-       MOVL   R9, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R9, CX
-       RORL   $0x19, DX
-       ANDL   R10, CX
-       XORL   AX, DX
-       MOVL   R9, AX
-       NOTL   AX
-       ADDL   DX, R12
-       ANDL   R11, AX
-       XORL   CX, AX
-       ADDL   R12, AX
-       MOVL   R13, DI
-       MOVL   R15, BX
-       RORL   $0x02, DI
-       MOVL   R13, DX
-       ANDL   R14, BX
-       RORL   $0x0d, DX
-       MOVL   R13, CX
-       ANDL   R15, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R13, DX
-       MOVL   R14, CX
-       RORL   $0x16, DX
-       ANDL   R13, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R12
-       ADDL   AX, R8
-       ADDL   AX, R12
-       MOVL   168(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   116(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   148(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   112(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 176(BP)
-       ADDL   AX, R11
-       MOVL   R8, AX
-       ADDL   $0xd192e819, R11
-       MOVL   R8, CX
-       RORL   $0x06, AX
-       MOVL   R8, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R8, CX
-       RORL   $0x19, DX
-       ANDL   R9, CX
-       XORL   AX, DX
-       MOVL   R8, AX
-       NOTL   AX
-       ADDL   DX, R11
-       ANDL   R10, AX
-       XORL   CX, AX
-       ADDL   R11, AX
-       MOVL   R12, DI
-       MOVL   R14, BX
-       RORL   $0x02, DI
-       MOVL   R12, DX
-       ANDL   R13, BX
-       RORL   $0x0d, DX
-       MOVL   R12, CX
-       ANDL   R14, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R12, DX
-       MOVL   R13, CX
-       RORL   $0x16, DX
-       ANDL   R12, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R11
-       ADDL   AX, R15
-       ADDL   AX, R11
-       MOVL   172(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   120(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   152(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   116(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 180(BP)
-       ADDL   AX, R10
-       MOVL   R15, AX
-       ADDL   $0xd6990624, R10
-       MOVL   R15, CX
-       RORL   $0x06, AX
-       MOVL   R15, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R15, CX
-       RORL   $0x19, DX
-       ANDL   R8, CX
-       XORL   AX, DX
-       MOVL   R15, AX
-       NOTL   AX
-       ADDL   DX, R10
-       ANDL   R9, AX
-       XORL   CX, AX
-       ADDL   R10, AX
-       MOVL   R11, DI
-       MOVL   R13, BX
-       RORL   $0x02, DI
-       MOVL   R11, DX
-       ANDL   R12, BX
-       RORL   $0x0d, DX
-       MOVL   R11, CX
-       ANDL   R13, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R11, DX
-       MOVL   R12, CX
-       RORL   $0x16, DX
-       ANDL   R11, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R10
-       ADDL   AX, R14
-       ADDL   AX, R10
-       MOVL   176(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   124(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   156(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   120(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 184(BP)
-       ADDL   AX, R9
-       MOVL   R14, AX
-       ADDL   $0xf40e3585, R9
-       MOVL   R14, CX
-       RORL   $0x06, AX
-       MOVL   R14, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R14, CX
-       RORL   $0x19, DX
-       ANDL   R15, CX
-       XORL   AX, DX
-       MOVL   R14, AX
-       NOTL   AX
-       ADDL   DX, R9
-       ANDL   R8, AX
-       XORL   CX, AX
-       ADDL   R9, AX
-       MOVL   R10, DI
-       MOVL   R12, BX
-       RORL   $0x02, DI
-       MOVL   R10, DX
-       ANDL   R11, BX
-       RORL   $0x0d, DX
-       MOVL   R10, CX
-       ANDL   R12, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R10, DX
-       MOVL   R11, CX
-       RORL   $0x16, DX
-       ANDL   R10, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R9
-       ADDL   AX, R13
-       ADDL   AX, R9
-       MOVL   180(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   128(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   160(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   124(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 188(BP)
-       ADDL   AX, R8
-       MOVL   R13, AX
-       ADDL   $0x106aa070, R8
-       MOVL   R13, CX
-       RORL   $0x06, AX
-       MOVL   R13, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R13, CX
-       RORL   $0x19, DX
-       ANDL   R14, CX
-       XORL   AX, DX
-       MOVL   R13, AX
-       NOTL   AX
-       ADDL   DX, R8
-       ANDL   R15, AX
-       XORL   CX, AX
-       ADDL   R8, AX
-       MOVL   R9, DI
-       MOVL   R11, BX
-       RORL   $0x02, DI
-       MOVL   R9, DX
-       ANDL   R10, BX
-       RORL   $0x0d, DX
-       MOVL   R9, CX
-       ANDL   R11, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R9, DX
-       MOVL   R10, CX
-       RORL   $0x16, DX
-       ANDL   R9, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R8
-       ADDL   AX, R12
-       ADDL   AX, R8
-       MOVL   184(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   132(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   164(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   128(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 192(BP)
-       ADDL   AX, R15
-       MOVL   R12, AX
-       ADDL   $0x19a4c116, R15
-       MOVL   R12, CX
-       RORL   $0x06, AX
-       MOVL   R12, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R12, CX
-       RORL   $0x19, DX
-       ANDL   R13, CX
-       XORL   AX, DX
-       MOVL   R12, AX
-       NOTL   AX
-       ADDL   DX, R15
-       ANDL   R14, AX
-       XORL   CX, AX
-       ADDL   R15, AX
-       MOVL   R8, DI
-       MOVL   R10, BX
-       RORL   $0x02, DI
-       MOVL   R8, DX
-       ANDL   R9, BX
-       RORL   $0x0d, DX
-       MOVL   R8, CX
-       ANDL   R10, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R8, DX
-       MOVL   R9, CX
-       RORL   $0x16, DX
-       ANDL   R8, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R15
-       ADDL   AX, R11
-       ADDL   AX, R15
-       MOVL   188(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   136(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   168(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   132(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 196(BP)
-       ADDL   AX, R14
-       MOVL   R11, AX
-       ADDL   $0x1e376c08, R14
-       MOVL   R11, CX
-       RORL   $0x06, AX
-       MOVL   R11, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R11, CX
-       RORL   $0x19, DX
-       ANDL   R12, CX
-       XORL   AX, DX
-       MOVL   R11, AX
-       NOTL   AX
-       ADDL   DX, R14
-       ANDL   R13, AX
-       XORL   CX, AX
-       ADDL   R14, AX
-       MOVL   R15, DI
-       MOVL   R9, BX
-       RORL   $0x02, DI
-       MOVL   R15, DX
-       ANDL   R8, BX
-       RORL   $0x0d, DX
-       MOVL   R15, CX
-       ANDL   R9, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R15, DX
-       MOVL   R8, CX
-       RORL   $0x16, DX
-       ANDL   R15, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R14
-       ADDL   AX, R10
-       ADDL   AX, R14
-       MOVL   192(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   140(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   172(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   136(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 200(BP)
-       ADDL   AX, R13
-       MOVL   R10, AX
-       ADDL   $0x2748774c, R13
-       MOVL   R10, CX
-       RORL   $0x06, AX
-       MOVL   R10, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R10, CX
-       RORL   $0x19, DX
-       ANDL   R11, CX
-       XORL   AX, DX
-       MOVL   R10, AX
-       NOTL   AX
-       ADDL   DX, R13
-       ANDL   R12, AX
-       XORL   CX, AX
-       ADDL   R13, AX
-       MOVL   R14, DI
-       MOVL   R8, BX
-       RORL   $0x02, DI
-       MOVL   R14, DX
-       ANDL   R15, BX
-       RORL   $0x0d, DX
-       MOVL   R14, CX
-       ANDL   R8, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R14, DX
-       MOVL   R15, CX
-       RORL   $0x16, DX
-       ANDL   R14, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R13
-       ADDL   AX, R9
-       ADDL   AX, R13
-       MOVL   196(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   144(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   176(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   140(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 204(BP)
-       ADDL   AX, R12
-       MOVL   R9, AX
-       ADDL   $0x34b0bcb5, R12
-       MOVL   R9, CX
-       RORL   $0x06, AX
-       MOVL   R9, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R9, CX
-       RORL   $0x19, DX
-       ANDL   R10, CX
-       XORL   AX, DX
-       MOVL   R9, AX
-       NOTL   AX
-       ADDL   DX, R12
-       ANDL   R11, AX
-       XORL   CX, AX
-       ADDL   R12, AX
-       MOVL   R13, DI
-       MOVL   R15, BX
-       RORL   $0x02, DI
-       MOVL   R13, DX
-       ANDL   R14, BX
-       RORL   $0x0d, DX
-       MOVL   R13, CX
-       ANDL   R15, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R13, DX
-       MOVL   R14, CX
-       RORL   $0x16, DX
-       ANDL   R13, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R12
-       ADDL   AX, R8
-       ADDL   AX, R12
-       MOVL   200(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   148(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   180(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   144(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 208(BP)
-       ADDL   AX, R11
-       MOVL   R8, AX
-       ADDL   $0x391c0cb3, R11
-       MOVL   R8, CX
-       RORL   $0x06, AX
-       MOVL   R8, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R8, CX
-       RORL   $0x19, DX
-       ANDL   R9, CX
-       XORL   AX, DX
-       MOVL   R8, AX
-       NOTL   AX
-       ADDL   DX, R11
-       ANDL   R10, AX
-       XORL   CX, AX
-       ADDL   R11, AX
-       MOVL   R12, DI
-       MOVL   R14, BX
-       RORL   $0x02, DI
-       MOVL   R12, DX
-       ANDL   R13, BX
-       RORL   $0x0d, DX
-       MOVL   R12, CX
-       ANDL   R14, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R12, DX
-       MOVL   R13, CX
-       RORL   $0x16, DX
-       ANDL   R12, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R11
-       ADDL   AX, R15
-       ADDL   AX, R11
-       MOVL   204(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   152(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   184(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   148(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 212(BP)
-       ADDL   AX, R10
-       MOVL   R15, AX
-       ADDL   $0x4ed8aa4a, R10
-       MOVL   R15, CX
-       RORL   $0x06, AX
-       MOVL   R15, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R15, CX
-       RORL   $0x19, DX
-       ANDL   R8, CX
-       XORL   AX, DX
-       MOVL   R15, AX
-       NOTL   AX
-       ADDL   DX, R10
-       ANDL   R9, AX
-       XORL   CX, AX
-       ADDL   R10, AX
-       MOVL   R11, DI
-       MOVL   R13, BX
-       RORL   $0x02, DI
-       MOVL   R11, DX
-       ANDL   R12, BX
-       RORL   $0x0d, DX
-       MOVL   R11, CX
-       ANDL   R13, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R11, DX
-       MOVL   R12, CX
-       RORL   $0x16, DX
-       ANDL   R11, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R10
-       ADDL   AX, R14
-       ADDL   AX, R10
-       MOVL   208(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   156(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   188(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   152(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 216(BP)
-       ADDL   AX, R9
-       MOVL   R14, AX
-       ADDL   $0x5b9cca4f, R9
-       MOVL   R14, CX
-       RORL   $0x06, AX
-       MOVL   R14, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R14, CX
-       RORL   $0x19, DX
-       ANDL   R15, CX
-       XORL   AX, DX
-       MOVL   R14, AX
-       NOTL   AX
-       ADDL   DX, R9
-       ANDL   R8, AX
-       XORL   CX, AX
-       ADDL   R9, AX
-       MOVL   R10, DI
-       MOVL   R12, BX
-       RORL   $0x02, DI
-       MOVL   R10, DX
-       ANDL   R11, BX
-       RORL   $0x0d, DX
-       MOVL   R10, CX
-       ANDL   R12, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R10, DX
-       MOVL   R11, CX
-       RORL   $0x16, DX
-       ANDL   R10, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R9
-       ADDL   AX, R13
-       ADDL   AX, R9
-       MOVL   212(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   160(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   192(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   156(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 220(BP)
-       ADDL   AX, R8
-       MOVL   R13, AX
-       ADDL   $0x682e6ff3, R8
-       MOVL   R13, CX
-       RORL   $0x06, AX
-       MOVL   R13, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R13, CX
-       RORL   $0x19, DX
-       ANDL   R14, CX
-       XORL   AX, DX
-       MOVL   R13, AX
-       NOTL   AX
-       ADDL   DX, R8
-       ANDL   R15, AX
-       XORL   CX, AX
-       ADDL   R8, AX
-       MOVL   R9, DI
-       MOVL   R11, BX
-       RORL   $0x02, DI
-       MOVL   R9, DX
-       ANDL   R10, BX
-       RORL   $0x0d, DX
-       MOVL   R9, CX
-       ANDL   R11, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R9, DX
-       MOVL   R10, CX
-       RORL   $0x16, DX
-       ANDL   R9, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R8
-       ADDL   AX, R12
-       ADDL   AX, R8
-       MOVL   216(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   164(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   196(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   160(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 224(BP)
-       ADDL   AX, R15
-       MOVL   R12, AX
-       ADDL   $0x748f82ee, R15
-       MOVL   R12, CX
-       RORL   $0x06, AX
-       MOVL   R12, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R12, CX
-       RORL   $0x19, DX
-       ANDL   R13, CX
-       XORL   AX, DX
-       MOVL   R12, AX
-       NOTL   AX
-       ADDL   DX, R15
-       ANDL   R14, AX
-       XORL   CX, AX
-       ADDL   R15, AX
-       MOVL   R8, DI
-       MOVL   R10, BX
-       RORL   $0x02, DI
-       MOVL   R8, DX
-       ANDL   R9, BX
-       RORL   $0x0d, DX
-       MOVL   R8, CX
-       ANDL   R10, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R8, DX
-       MOVL   R9, CX
-       RORL   $0x16, DX
-       ANDL   R8, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R15
-       ADDL   AX, R11
-       ADDL   AX, R15
-       MOVL   220(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   168(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   200(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   164(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 228(BP)
-       ADDL   AX, R14
-       MOVL   R11, AX
-       ADDL   $0x78a5636f, R14
-       MOVL   R11, CX
-       RORL   $0x06, AX
-       MOVL   R11, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R11, CX
-       RORL   $0x19, DX
-       ANDL   R12, CX
-       XORL   AX, DX
-       MOVL   R11, AX
-       NOTL   AX
-       ADDL   DX, R14
-       ANDL   R13, AX
-       XORL   CX, AX
-       ADDL   R14, AX
-       MOVL   R15, DI
-       MOVL   R9, BX
-       RORL   $0x02, DI
-       MOVL   R15, DX
-       ANDL   R8, BX
-       RORL   $0x0d, DX
-       MOVL   R15, CX
-       ANDL   R9, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R15, DX
-       MOVL   R8, CX
-       RORL   $0x16, DX
-       ANDL   R15, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R14
-       ADDL   AX, R10
-       ADDL   AX, R14
-       MOVL   224(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   172(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   204(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   168(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 232(BP)
-       ADDL   AX, R13
-       MOVL   R10, AX
-       ADDL   $0x84c87814, R13
-       MOVL   R10, CX
-       RORL   $0x06, AX
-       MOVL   R10, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R10, CX
-       RORL   $0x19, DX
-       ANDL   R11, CX
-       XORL   AX, DX
-       MOVL   R10, AX
-       NOTL   AX
-       ADDL   DX, R13
-       ANDL   R12, AX
-       XORL   CX, AX
-       ADDL   R13, AX
-       MOVL   R14, DI
-       MOVL   R8, BX
-       RORL   $0x02, DI
-       MOVL   R14, DX
-       ANDL   R15, BX
-       RORL   $0x0d, DX
-       MOVL   R14, CX
-       ANDL   R8, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R14, DX
-       MOVL   R15, CX
-       RORL   $0x16, DX
-       ANDL   R14, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R13
-       ADDL   AX, R9
-       ADDL   AX, R13
-       MOVL   228(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   176(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   208(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   172(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 236(BP)
-       ADDL   AX, R12
-       MOVL   R9, AX
-       ADDL   $0x8cc70208, R12
-       MOVL   R9, CX
-       RORL   $0x06, AX
-       MOVL   R9, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R9, CX
-       RORL   $0x19, DX
-       ANDL   R10, CX
-       XORL   AX, DX
-       MOVL   R9, AX
-       NOTL   AX
-       ADDL   DX, R12
-       ANDL   R11, AX
-       XORL   CX, AX
-       ADDL   R12, AX
-       MOVL   R13, DI
-       MOVL   R15, BX
-       RORL   $0x02, DI
-       MOVL   R13, DX
-       ANDL   R14, BX
-       RORL   $0x0d, DX
-       MOVL   R13, CX
-       ANDL   R15, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R13, DX
-       MOVL   R14, CX
-       RORL   $0x16, DX
-       ANDL   R13, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R12
-       ADDL   AX, R8
-       ADDL   AX, R12
-       MOVL   232(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   180(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   212(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   176(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 240(BP)
-       ADDL   AX, R11
-       MOVL   R8, AX
-       ADDL   $0x90befffa, R11
-       MOVL   R8, CX
-       RORL   $0x06, AX
-       MOVL   R8, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R8, CX
-       RORL   $0x19, DX
-       ANDL   R9, CX
-       XORL   AX, DX
-       MOVL   R8, AX
-       NOTL   AX
-       ADDL   DX, R11
-       ANDL   R10, AX
-       XORL   CX, AX
-       ADDL   R11, AX
-       MOVL   R12, DI
-       MOVL   R14, BX
-       RORL   $0x02, DI
-       MOVL   R12, DX
-       ANDL   R13, BX
-       RORL   $0x0d, DX
-       MOVL   R12, CX
-       ANDL   R14, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R12, DX
-       MOVL   R13, CX
-       RORL   $0x16, DX
-       ANDL   R12, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R11
-       ADDL   AX, R15
-       ADDL   AX, R11
-       MOVL   236(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   184(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   216(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   180(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 244(BP)
-       ADDL   AX, R10
-       MOVL   R15, AX
-       ADDL   $0xa4506ceb, R10
-       MOVL   R15, CX
-       RORL   $0x06, AX
-       MOVL   R15, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R15, CX
-       RORL   $0x19, DX
-       ANDL   R8, CX
-       XORL   AX, DX
-       MOVL   R15, AX
-       NOTL   AX
-       ADDL   DX, R10
-       ANDL   R9, AX
-       XORL   CX, AX
-       ADDL   R10, AX
-       MOVL   R11, DI
-       MOVL   R13, BX
-       RORL   $0x02, DI
-       MOVL   R11, DX
-       ANDL   R12, BX
-       RORL   $0x0d, DX
-       MOVL   R11, CX
-       ANDL   R13, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R11, DX
-       MOVL   R12, CX
-       RORL   $0x16, DX
-       ANDL   R11, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R10
-       ADDL   AX, R14
-       ADDL   AX, R10
-       MOVL   240(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   188(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   220(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   184(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 248(BP)
-       ADDL   AX, R9
-       MOVL   R14, AX
-       ADDL   $0xbef9a3f7, R9
-       MOVL   R14, CX
-       RORL   $0x06, AX
-       MOVL   R14, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R14, CX
-       RORL   $0x19, DX
-       ANDL   R15, CX
-       XORL   AX, DX
-       MOVL   R14, AX
-       NOTL   AX
-       ADDL   DX, R9
-       ANDL   R8, AX
-       XORL   CX, AX
-       ADDL   R9, AX
-       MOVL   R10, DI
-       MOVL   R12, BX
-       RORL   $0x02, DI
-       MOVL   R10, DX
-       ANDL   R11, BX
-       RORL   $0x0d, DX
-       MOVL   R10, CX
-       ANDL   R12, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R10, DX
-       MOVL   R11, CX
-       RORL   $0x16, DX
-       ANDL   R10, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R9
-       ADDL   AX, R13
-       ADDL   AX, R9
-       MOVL   244(BP), AX
-       MOVL   AX, CX
-       RORL   $0x11, AX
-       MOVL   CX, DX
-       RORL   $0x13, CX
-       SHRL   $0x0a, DX
-       MOVL   192(BP), BX
-       XORL   CX, AX
-       MOVL   BX, CX
-       XORL   DX, AX
-       RORL   $0x07, BX
-       MOVL   CX, DX
-       SHRL   $0x03, DX
-       RORL   $0x12, CX
-       ADDL   224(BP), AX
-       XORL   CX, BX
-       XORL   DX, BX
-       ADDL   188(BP), BX
-       ADDL   BX, AX
-       MOVL   AX, 252(BP)
-       ADDL   AX, R8
-       MOVL   R13, AX
-       ADDL   $0xc67178f2, R8
-       MOVL   R13, CX
-       RORL   $0x06, AX
-       MOVL   R13, DX
-       RORL   $0x0b, CX
-       XORL   CX, AX
-       MOVL   R13, CX
-       RORL   $0x19, DX
-       ANDL   R14, CX
-       XORL   AX, DX
-       MOVL   R13, AX
-       NOTL   AX
-       ADDL   DX, R8
-       ANDL   R15, AX
-       XORL   CX, AX
-       ADDL   R8, AX
-       MOVL   R9, DI
-       MOVL   R11, BX
-       RORL   $0x02, DI
-       MOVL   R9, DX
-       ANDL   R10, BX
-       RORL   $0x0d, DX
-       MOVL   R9, CX
-       ANDL   R11, CX
-       XORL   DX, DI
-       XORL   CX, BX
-       MOVL   R9, DX
-       MOVL   R10, CX
-       RORL   $0x16, DX
-       ANDL   R9, CX
-       XORL   CX, BX
-       XORL   DX, DI
-       ADDL   DI, BX
-       MOVL   BX, R8
-       ADDL   AX, R12
-       ADDL   AX, R8
-       MOVQ   dig+0(FP), BP
-       ADDL   (BP), R8
-       MOVL   R8, (BP)
-       ADDL   4(BP), R9
-       MOVL   R9, 4(BP)
-       ADDL   8(BP), R10
-       MOVL   R10, 8(BP)
-       ADDL   12(BP), R11
-       MOVL   R11, 12(BP)
-       ADDL   16(BP), R12
-       MOVL   R12, 16(BP)
-       ADDL   20(BP), R13
-       MOVL   R13, 20(BP)
-       ADDL   24(BP), R14
-       MOVL   R14, 24(BP)
-       ADDL   28(BP), R15
-       MOVL   R15, 28(BP)
-       ADDQ   $0x40, SI
-       CMPQ   SI, 256(SP)
-       JB     loop
-
-end:
-       RET
-
 // func blockAVX2(dig *Digest, p []byte)
 // Requires: AVX, AVX2, BMI2
 TEXT ·blockAVX2(SB), $536-32
index ed7b1766bf4fdadde262e221b7007a0fe6c12f86..7e7572cb1eea4e799251cc242f032383b66c0160 100644 (file)
@@ -146,217 +146,10 @@ func main() {
 
        Package("crypto/internal/fips140/sha512")
        ConstraintExpr("!purego")
-       blockAMD64()
        blockAVX2()
        Generate()
 }
 
-// Wt = Mt; for 0 <= t <= 15
-//
-// Line 50
-func MSGSCHEDULE0(index int) {
-       MOVQ(Mem{Base: SI}.Offset(index*8), RAX)
-       BSWAPQ(RAX)
-       MOVQ(RAX, Mem{Base: BP}.Offset(index*8))
-}
-
-// Wt = SIGMA1(Wt-2) + Wt-7 + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 79
-//
-//     SIGMA0(x) = ROTR(1,x) XOR ROTR(8,x) XOR SHR(7,x)
-//     SIGMA1(x) = ROTR(19,x) XOR ROTR(61,x) XOR SHR(6,x)
-//
-// Line 58
-func MSGSCHEDULE1(index int) {
-       MOVQ(Mem{Base: BP}.Offset((index-2)*8), RAX)
-       MOVQ(RAX, RCX)
-       RORQ(Imm(19), RAX)
-       MOVQ(RCX, RDX)
-       RORQ(Imm(61), RCX)
-       SHRQ(Imm(6), RDX)
-       MOVQ(Mem{Base: BP}.Offset((index-15)*8), RBX)
-       XORQ(RCX, RAX)
-       MOVQ(RBX, RCX)
-       XORQ(RDX, RAX)
-       RORQ(Imm(1), RBX)
-       MOVQ(RCX, RDX)
-       SHRQ(Imm(7), RDX)
-       RORQ(Imm(8), RCX)
-       ADDQ(Mem{Base: BP}.Offset((index-7)*8), RAX)
-       XORQ(RCX, RBX)
-       XORQ(RDX, RBX)
-       ADDQ(Mem{Base: BP}.Offset((index-16)*8), RBX)
-       ADDQ(RBX, RAX)
-       MOVQ(RAX, Mem{Base: BP}.Offset((index)*8))
-}
-
-// Calculate T1 in AX - uses AX, CX and DX registers.
-// h is also used as an accumulator. Wt is passed in AX.
-//
-//     T1 = h + BIGSIGMA1(e) + Ch(e, f, g) + Kt + Wt
-//       BIGSIGMA1(x) = ROTR(14,x) XOR ROTR(18,x) XOR ROTR(41,x)
-//       Ch(x, y, z) = (x AND y) XOR (NOT x AND z)
-//
-// Line 85
-func SHA512T1(konst uint64, e, f, g, h GPPhysical) {
-       MOVQ(U64(konst), RDX)
-       ADDQ(RAX, h)
-       MOVQ(e, RAX)
-       ADDQ(RDX, h)
-       MOVQ(e, RCX)
-       RORQ(U8(14), RAX)
-       MOVQ(e, RDX)
-       RORQ(U8(18), RCX)
-       XORQ(RCX, RAX)
-       MOVQ(e, RCX)
-       RORQ(U8(41), RDX)
-       ANDQ(f, RCX)
-       XORQ(RAX, RDX)
-       MOVQ(e, RAX)
-       NOTQ(RAX)
-       ADDQ(RDX, h)
-       ANDQ(g, RAX)
-       XORQ(RCX, RAX)
-       ADDQ(h, RAX)
-}
-
-// Calculate T2 in BX - uses BX, CX, DX and DI registers.
-//
-//     T2 = BIGSIGMA0(a) + Maj(a, b, c)
-//       BIGSIGMA0(x) = ROTR(28,x) XOR ROTR(34,x) XOR ROTR(39,x)
-//       Maj(x, y, z) = (x AND y) XOR (x AND z) XOR (y AND z)
-//
-// Line 110
-func SHA512T2(a, b, c GPPhysical) {
-       MOVQ(a, RDI)
-       MOVQ(c, RBX)
-       RORQ(Imm(28), RDI)
-       MOVQ(a, RDX)
-       ANDQ(b, RBX)
-       RORQ(Imm(34), RDX)
-       MOVQ(a, RCX)
-       ANDQ(c, RCX)
-       XORQ(RDX, RDI)
-       XORQ(RCX, RBX)
-       MOVQ(a, RDX)
-       MOVQ(b, RCX)
-       RORQ(Imm(39), RDX)
-       ANDQ(a, RCX)
-       XORQ(RCX, RBX)
-       XORQ(RDX, RDI)
-       ADDQ(RDI, RBX)
-}
-
-// Calculate T1 and T2, then e = d + T1 and a = T1 + T2.
-// The values for e and a are stored in d and h, ready for rotation.
-//
-// Line 131
-func SHA512ROUND(index int, konst uint64, a, b, c, d, e, f, g, h GPPhysical) {
-       SHA512T1(konst, e, f, g, h)
-       SHA512T2(a, b, c)
-       MOVQ(RBX, h)
-       ADDQ(RAX, d)
-       ADDQ(RAX, h)
-}
-
-// Line 169
-func SHA512ROUND0(index int, konst uint64, a, b, c, d, e, f, g, h GPPhysical) {
-       MSGSCHEDULE0(index)
-       SHA512ROUND(index, konst, a, b, c, d, e, f, g, h)
-}
-
-// Line 142
-func SHA512ROUND1(index int, konst uint64, a, b, c, d, e, f, g, h GPPhysical) {
-       MSGSCHEDULE1(index)
-       SHA512ROUND(index, konst, a, b, c, d, e, f, g, h)
-}
-
-// Line 146
-func blockAMD64() {
-       Implement("blockAMD64")
-       AllocLocal(648)
-
-       Load(Param("p").Base(), RSI)
-       Load(Param("p").Len(), RDX)
-       SHRQ(Imm(7), RDX)
-       SHLQ(Imm(7), RDX)
-
-       LEAQ(Mem{Base: SI, Index: DX, Scale: 1}, RDI)
-       MOVQ(RDI, Mem{Base: SP}.Offset(640))
-       CMPQ(RSI, RDI)
-       JEQ(LabelRef("end"))
-
-       Load(Param("dig"), RBP)
-       MOVQ(Mem{Base: BP}.Offset(0*8), R8)  // a = H0
-       MOVQ(Mem{Base: BP}.Offset(1*8), R9)  // b = H1
-       MOVQ(Mem{Base: BP}.Offset(2*8), R10) // c = H2
-       MOVQ(Mem{Base: BP}.Offset(3*8), R11) // d = H3
-       MOVQ(Mem{Base: BP}.Offset(4*8), R12) // e = H4
-       MOVQ(Mem{Base: BP}.Offset(5*8), R13) // f = H5
-       MOVQ(Mem{Base: BP}.Offset(6*8), R14) // g = H6
-       MOVQ(Mem{Base: BP}.Offset(7*8), R15) // h = H7
-       PSHUFFLE_BYTE_FLIP_MASK_DATA()
-       loop()
-       end()
-}
-
-func rotateRight(slice *[]GPPhysical) []GPPhysical {
-       n := len(*slice)
-       new := make([]GPPhysical, n)
-       for i, reg := range *slice {
-               new[(i+1)%n] = reg
-       }
-       return new
-}
-
-// Line 167
-func loop() {
-       Label("loop")
-       MOVQ(RSP, RBP) // message schedule
-
-       n := len(_K)
-       regs := []GPPhysical{R8, R9, R10, R11, R12, R13, R14, R15}
-
-       for i := 0; i < 16; i++ {
-               SHA512ROUND0(i, _K[i], regs[0], regs[1], regs[2], regs[3], regs[4], regs[5], regs[6], regs[7])
-               regs = rotateRight(&regs)
-       }
-
-       for i := 16; i < n; i++ {
-               SHA512ROUND1(i, _K[i], regs[0], regs[1], regs[2], regs[3], regs[4], regs[5], regs[6], regs[7])
-               regs = rotateRight(&regs)
-       }
-
-       Load(Param("dig"), RBP)
-
-       BP_Mem := Mem{Base: BP}
-       ADDQ(BP_Mem.Offset(0*8), R8) // H0 = a + H0
-       MOVQ(R8, BP_Mem.Offset(0*8))
-       ADDQ(BP_Mem.Offset(1*8), R9) // H1 = b + H1
-       MOVQ(R9, BP_Mem.Offset(1*8))
-       ADDQ(BP_Mem.Offset(2*8), R10) // H2 = c + H2
-       MOVQ(R10, BP_Mem.Offset(2*8))
-       ADDQ(BP_Mem.Offset(3*8), R11) // H3 = d + H3
-       MOVQ(R11, BP_Mem.Offset(3*8))
-       ADDQ(BP_Mem.Offset(4*8), R12) // H4 = e + H4
-       MOVQ(R12, BP_Mem.Offset(4*8))
-       ADDQ(BP_Mem.Offset(5*8), R13) // H5 = f + H5
-       MOVQ(R13, BP_Mem.Offset(5*8))
-       ADDQ(BP_Mem.Offset(6*8), R14) // H6 = g + H6
-       MOVQ(R14, BP_Mem.Offset(6*8))
-       ADDQ(BP_Mem.Offset(7*8), R15) // H7 = h + H7
-       MOVQ(R15, BP_Mem.Offset(7*8))
-
-       ADDQ(Imm(128), RSI)
-       CMPQ(RSI, Mem{Base: SP}.Offset(640))
-       JB(LabelRef("loop"))
-}
-
-// Line 274
-func end() {
-       Label("end")
-       RET()
-}
-
 // Version below is based on "Fast SHA512 Implementations on Intel
 // Architecture Processors" White-paper
 // https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/fast-sha512-implementations-ia-processors-paper.pdf
index 185909ec5d4a1326347a930e3947541628043490..7059b88716ab82c30c227f60c15acf4e5b2eb4eb 100644 (file)
@@ -20,13 +20,10 @@ func init() {
 //go:noescape
 func blockAVX2(dig *Digest, p []byte)
 
-//go:noescape
-func blockAMD64(dig *Digest, p []byte)
-
 func block(dig *Digest, p []byte) {
        if useAVX2 {
                blockAVX2(dig, p)
        } else {
-               blockAMD64(dig, p)
+               blockGeneric(dig, p)
        }
 }
index ce77d20c0481a9bf278f441c05aeeba3eef1f203..e11d509ab4b97aaba44ebb50434a9c09d0a323c2 100644 (file)
 
 #include "textflag.h"
 
-// func blockAMD64(dig *Digest, p []byte)
-TEXT ·blockAMD64(SB), $648-32
-       MOVQ p_base+8(FP), SI
-       MOVQ p_len+16(FP), DX
-       SHRQ $0x07, DX
-       SHLQ $0x07, DX
-       LEAQ (SI)(DX*1), DI
-       MOVQ DI, 640(SP)
-       CMPQ SI, DI
-       JEQ  end
-       MOVQ dig+0(FP), BP
-       MOVQ (BP), R8
-       MOVQ 8(BP), R9
-       MOVQ 16(BP), R10
-       MOVQ 24(BP), R11
-       MOVQ 32(BP), R12
-       MOVQ 40(BP), R13
-       MOVQ 48(BP), R14
-       MOVQ 56(BP), R15
-
-loop:
-       MOVQ   SP, BP
-       MOVQ   (SI), AX
-       BSWAPQ AX
-       MOVQ   AX, (BP)
-       MOVQ   $0x428a2f98d728ae22, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   8(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 8(BP)
-       MOVQ   $0x7137449123ef65cd, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   16(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 16(BP)
-       MOVQ   $0xb5c0fbcfec4d3b2f, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   24(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 24(BP)
-       MOVQ   $0xe9b5dba58189dbbc, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   32(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 32(BP)
-       MOVQ   $0x3956c25bf348b538, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   40(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 40(BP)
-       MOVQ   $0x59f111f1b605d019, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   48(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 48(BP)
-       MOVQ   $0x923f82a4af194f9b, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   56(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 56(BP)
-       MOVQ   $0xab1c5ed5da6d8118, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   64(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 64(BP)
-       MOVQ   $0xd807aa98a3030242, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   72(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 72(BP)
-       MOVQ   $0x12835b0145706fbe, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   80(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 80(BP)
-       MOVQ   $0x243185be4ee4b28c, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   88(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 88(BP)
-       MOVQ   $0x550c7dc3d5ffb4e2, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   96(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 96(BP)
-       MOVQ   $0x72be5d74f27b896f, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   104(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 104(BP)
-       MOVQ   $0x80deb1fe3b1696b1, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   112(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 112(BP)
-       MOVQ   $0x9bdc06a725c71235, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   120(SI), AX
-       BSWAPQ AX
-       MOVQ   AX, 120(BP)
-       MOVQ   $0xc19bf174cf692694, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   112(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   8(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   72(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   (BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 128(BP)
-       MOVQ   $0xe49b69c19ef14ad2, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   120(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   16(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   80(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   8(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 136(BP)
-       MOVQ   $0xefbe4786384f25e3, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   128(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   24(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   88(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   16(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 144(BP)
-       MOVQ   $0x0fc19dc68b8cd5b5, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   136(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   32(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   96(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   24(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 152(BP)
-       MOVQ   $0x240ca1cc77ac9c65, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   144(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   40(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   104(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   32(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 160(BP)
-       MOVQ   $0x2de92c6f592b0275, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   152(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   48(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   112(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   40(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 168(BP)
-       MOVQ   $0x4a7484aa6ea6e483, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   160(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   56(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   120(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   48(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 176(BP)
-       MOVQ   $0x5cb0a9dcbd41fbd4, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   168(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   64(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   128(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   56(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 184(BP)
-       MOVQ   $0x76f988da831153b5, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   176(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   72(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   136(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   64(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 192(BP)
-       MOVQ   $0x983e5152ee66dfab, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   184(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   80(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   144(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   72(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 200(BP)
-       MOVQ   $0xa831c66d2db43210, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   192(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   88(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   152(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   80(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 208(BP)
-       MOVQ   $0xb00327c898fb213f, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   200(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   96(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   160(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   88(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 216(BP)
-       MOVQ   $0xbf597fc7beef0ee4, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   208(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   104(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   168(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   96(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 224(BP)
-       MOVQ   $0xc6e00bf33da88fc2, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   216(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   112(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   176(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   104(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 232(BP)
-       MOVQ   $0xd5a79147930aa725, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   224(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   120(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   184(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   112(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 240(BP)
-       MOVQ   $0x06ca6351e003826f, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   232(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   128(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   192(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   120(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 248(BP)
-       MOVQ   $0x142929670a0e6e70, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   240(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   136(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   200(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   128(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 256(BP)
-       MOVQ   $0x27b70a8546d22ffc, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   248(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   144(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   208(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   136(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 264(BP)
-       MOVQ   $0x2e1b21385c26c926, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   256(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   152(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   216(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   144(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 272(BP)
-       MOVQ   $0x4d2c6dfc5ac42aed, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   264(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   160(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   224(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   152(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 280(BP)
-       MOVQ   $0x53380d139d95b3df, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   272(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   168(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   232(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   160(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 288(BP)
-       MOVQ   $0x650a73548baf63de, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   280(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   176(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   240(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   168(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 296(BP)
-       MOVQ   $0x766a0abb3c77b2a8, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   288(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   184(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   248(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   176(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 304(BP)
-       MOVQ   $0x81c2c92e47edaee6, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   296(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   192(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   256(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   184(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 312(BP)
-       MOVQ   $0x92722c851482353b, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   304(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   200(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   264(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   192(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 320(BP)
-       MOVQ   $0xa2bfe8a14cf10364, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   312(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   208(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   272(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   200(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 328(BP)
-       MOVQ   $0xa81a664bbc423001, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   320(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   216(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   280(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   208(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 336(BP)
-       MOVQ   $0xc24b8b70d0f89791, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   328(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   224(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   288(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   216(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 344(BP)
-       MOVQ   $0xc76c51a30654be30, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   336(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   232(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   296(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   224(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 352(BP)
-       MOVQ   $0xd192e819d6ef5218, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   344(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   240(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   304(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   232(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 360(BP)
-       MOVQ   $0xd69906245565a910, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   352(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   248(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   312(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   240(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 368(BP)
-       MOVQ   $0xf40e35855771202a, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   360(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   256(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   320(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   248(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 376(BP)
-       MOVQ   $0x106aa07032bbd1b8, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   368(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   264(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   328(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   256(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 384(BP)
-       MOVQ   $0x19a4c116b8d2d0c8, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   376(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   272(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   336(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   264(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 392(BP)
-       MOVQ   $0x1e376c085141ab53, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   384(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   280(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   344(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   272(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 400(BP)
-       MOVQ   $0x2748774cdf8eeb99, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   392(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   288(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   352(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   280(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 408(BP)
-       MOVQ   $0x34b0bcb5e19b48a8, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   400(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   296(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   360(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   288(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 416(BP)
-       MOVQ   $0x391c0cb3c5c95a63, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   408(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   304(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   368(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   296(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 424(BP)
-       MOVQ   $0x4ed8aa4ae3418acb, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   416(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   312(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   376(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   304(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 432(BP)
-       MOVQ   $0x5b9cca4f7763e373, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   424(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   320(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   384(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   312(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 440(BP)
-       MOVQ   $0x682e6ff3d6b2b8a3, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   432(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   328(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   392(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   320(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 448(BP)
-       MOVQ   $0x748f82ee5defb2fc, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   440(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   336(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   400(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   328(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 456(BP)
-       MOVQ   $0x78a5636f43172f60, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   448(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   344(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   408(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   336(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 464(BP)
-       MOVQ   $0x84c87814a1f0ab72, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   456(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   352(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   416(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   344(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 472(BP)
-       MOVQ   $0x8cc702081a6439ec, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   464(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   360(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   424(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   352(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 480(BP)
-       MOVQ   $0x90befffa23631e28, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   472(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   368(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   432(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   360(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 488(BP)
-       MOVQ   $0xa4506cebde82bde9, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   480(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   376(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   440(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   368(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 496(BP)
-       MOVQ   $0xbef9a3f7b2c67915, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   488(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   384(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   448(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   376(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 504(BP)
-       MOVQ   $0xc67178f2e372532b, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   496(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   392(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   456(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   384(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 512(BP)
-       MOVQ   $0xca273eceea26619c, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   504(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   400(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   464(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   392(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 520(BP)
-       MOVQ   $0xd186b8c721c0c207, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   512(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   408(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   472(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   400(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 528(BP)
-       MOVQ   $0xeada7dd6cde0eb1e, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   520(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   416(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   480(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   408(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 536(BP)
-       MOVQ   $0xf57d4f7fee6ed178, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   528(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   424(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   488(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   416(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 544(BP)
-       MOVQ   $0x06f067aa72176fba, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   536(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   432(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   496(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   424(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 552(BP)
-       MOVQ   $0x0a637dc5a2c898a6, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   544(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   440(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   504(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   432(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 560(BP)
-       MOVQ   $0x113f9804bef90dae, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   552(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   448(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   512(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   440(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 568(BP)
-       MOVQ   $0x1b710b35131c471b, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   560(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   456(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   520(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   448(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 576(BP)
-       MOVQ   $0x28db77f523047d84, DX
-       ADDQ   AX, R15
-       MOVQ   R12, AX
-       ADDQ   DX, R15
-       MOVQ   R12, CX
-       RORQ   $0x0e, AX
-       MOVQ   R12, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R12, CX
-       RORQ   $0x29, DX
-       ANDQ   R13, CX
-       XORQ   AX, DX
-       MOVQ   R12, AX
-       NOTQ   AX
-       ADDQ   DX, R15
-       ANDQ   R14, AX
-       XORQ   CX, AX
-       ADDQ   R15, AX
-       MOVQ   R8, DI
-       MOVQ   R10, BX
-       RORQ   $0x1c, DI
-       MOVQ   R8, DX
-       ANDQ   R9, BX
-       RORQ   $0x22, DX
-       MOVQ   R8, CX
-       ANDQ   R10, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R8, DX
-       MOVQ   R9, CX
-       RORQ   $0x27, DX
-       ANDQ   R8, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R15
-       ADDQ   AX, R11
-       ADDQ   AX, R15
-       MOVQ   568(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   464(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   528(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   456(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 584(BP)
-       MOVQ   $0x32caab7b40c72493, DX
-       ADDQ   AX, R14
-       MOVQ   R11, AX
-       ADDQ   DX, R14
-       MOVQ   R11, CX
-       RORQ   $0x0e, AX
-       MOVQ   R11, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R11, CX
-       RORQ   $0x29, DX
-       ANDQ   R12, CX
-       XORQ   AX, DX
-       MOVQ   R11, AX
-       NOTQ   AX
-       ADDQ   DX, R14
-       ANDQ   R13, AX
-       XORQ   CX, AX
-       ADDQ   R14, AX
-       MOVQ   R15, DI
-       MOVQ   R9, BX
-       RORQ   $0x1c, DI
-       MOVQ   R15, DX
-       ANDQ   R8, BX
-       RORQ   $0x22, DX
-       MOVQ   R15, CX
-       ANDQ   R9, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R15, DX
-       MOVQ   R8, CX
-       RORQ   $0x27, DX
-       ANDQ   R15, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R14
-       ADDQ   AX, R10
-       ADDQ   AX, R14
-       MOVQ   576(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   472(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   536(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   464(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 592(BP)
-       MOVQ   $0x3c9ebe0a15c9bebc, DX
-       ADDQ   AX, R13
-       MOVQ   R10, AX
-       ADDQ   DX, R13
-       MOVQ   R10, CX
-       RORQ   $0x0e, AX
-       MOVQ   R10, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R10, CX
-       RORQ   $0x29, DX
-       ANDQ   R11, CX
-       XORQ   AX, DX
-       MOVQ   R10, AX
-       NOTQ   AX
-       ADDQ   DX, R13
-       ANDQ   R12, AX
-       XORQ   CX, AX
-       ADDQ   R13, AX
-       MOVQ   R14, DI
-       MOVQ   R8, BX
-       RORQ   $0x1c, DI
-       MOVQ   R14, DX
-       ANDQ   R15, BX
-       RORQ   $0x22, DX
-       MOVQ   R14, CX
-       ANDQ   R8, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R14, DX
-       MOVQ   R15, CX
-       RORQ   $0x27, DX
-       ANDQ   R14, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R13
-       ADDQ   AX, R9
-       ADDQ   AX, R13
-       MOVQ   584(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   480(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   544(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   472(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 600(BP)
-       MOVQ   $0x431d67c49c100d4c, DX
-       ADDQ   AX, R12
-       MOVQ   R9, AX
-       ADDQ   DX, R12
-       MOVQ   R9, CX
-       RORQ   $0x0e, AX
-       MOVQ   R9, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R9, CX
-       RORQ   $0x29, DX
-       ANDQ   R10, CX
-       XORQ   AX, DX
-       MOVQ   R9, AX
-       NOTQ   AX
-       ADDQ   DX, R12
-       ANDQ   R11, AX
-       XORQ   CX, AX
-       ADDQ   R12, AX
-       MOVQ   R13, DI
-       MOVQ   R15, BX
-       RORQ   $0x1c, DI
-       MOVQ   R13, DX
-       ANDQ   R14, BX
-       RORQ   $0x22, DX
-       MOVQ   R13, CX
-       ANDQ   R15, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R13, DX
-       MOVQ   R14, CX
-       RORQ   $0x27, DX
-       ANDQ   R13, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R12
-       ADDQ   AX, R8
-       ADDQ   AX, R12
-       MOVQ   592(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   488(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   552(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   480(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 608(BP)
-       MOVQ   $0x4cc5d4becb3e42b6, DX
-       ADDQ   AX, R11
-       MOVQ   R8, AX
-       ADDQ   DX, R11
-       MOVQ   R8, CX
-       RORQ   $0x0e, AX
-       MOVQ   R8, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R8, CX
-       RORQ   $0x29, DX
-       ANDQ   R9, CX
-       XORQ   AX, DX
-       MOVQ   R8, AX
-       NOTQ   AX
-       ADDQ   DX, R11
-       ANDQ   R10, AX
-       XORQ   CX, AX
-       ADDQ   R11, AX
-       MOVQ   R12, DI
-       MOVQ   R14, BX
-       RORQ   $0x1c, DI
-       MOVQ   R12, DX
-       ANDQ   R13, BX
-       RORQ   $0x22, DX
-       MOVQ   R12, CX
-       ANDQ   R14, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R12, DX
-       MOVQ   R13, CX
-       RORQ   $0x27, DX
-       ANDQ   R12, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R11
-       ADDQ   AX, R15
-       ADDQ   AX, R11
-       MOVQ   600(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   496(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   560(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   488(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 616(BP)
-       MOVQ   $0x597f299cfc657e2a, DX
-       ADDQ   AX, R10
-       MOVQ   R15, AX
-       ADDQ   DX, R10
-       MOVQ   R15, CX
-       RORQ   $0x0e, AX
-       MOVQ   R15, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R15, CX
-       RORQ   $0x29, DX
-       ANDQ   R8, CX
-       XORQ   AX, DX
-       MOVQ   R15, AX
-       NOTQ   AX
-       ADDQ   DX, R10
-       ANDQ   R9, AX
-       XORQ   CX, AX
-       ADDQ   R10, AX
-       MOVQ   R11, DI
-       MOVQ   R13, BX
-       RORQ   $0x1c, DI
-       MOVQ   R11, DX
-       ANDQ   R12, BX
-       RORQ   $0x22, DX
-       MOVQ   R11, CX
-       ANDQ   R13, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R11, DX
-       MOVQ   R12, CX
-       RORQ   $0x27, DX
-       ANDQ   R11, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R10
-       ADDQ   AX, R14
-       ADDQ   AX, R10
-       MOVQ   608(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   504(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   568(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   496(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 624(BP)
-       MOVQ   $0x5fcb6fab3ad6faec, DX
-       ADDQ   AX, R9
-       MOVQ   R14, AX
-       ADDQ   DX, R9
-       MOVQ   R14, CX
-       RORQ   $0x0e, AX
-       MOVQ   R14, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R14, CX
-       RORQ   $0x29, DX
-       ANDQ   R15, CX
-       XORQ   AX, DX
-       MOVQ   R14, AX
-       NOTQ   AX
-       ADDQ   DX, R9
-       ANDQ   R8, AX
-       XORQ   CX, AX
-       ADDQ   R9, AX
-       MOVQ   R10, DI
-       MOVQ   R12, BX
-       RORQ   $0x1c, DI
-       MOVQ   R10, DX
-       ANDQ   R11, BX
-       RORQ   $0x22, DX
-       MOVQ   R10, CX
-       ANDQ   R12, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R10, DX
-       MOVQ   R11, CX
-       RORQ   $0x27, DX
-       ANDQ   R10, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R9
-       ADDQ   AX, R13
-       ADDQ   AX, R9
-       MOVQ   616(BP), AX
-       MOVQ   AX, CX
-       RORQ   $0x13, AX
-       MOVQ   CX, DX
-       RORQ   $0x3d, CX
-       SHRQ   $0x06, DX
-       MOVQ   512(BP), BX
-       XORQ   CX, AX
-       MOVQ   BX, CX
-       XORQ   DX, AX
-       RORQ   $0x01, BX
-       MOVQ   CX, DX
-       SHRQ   $0x07, DX
-       RORQ   $0x08, CX
-       ADDQ   576(BP), AX
-       XORQ   CX, BX
-       XORQ   DX, BX
-       ADDQ   504(BP), BX
-       ADDQ   BX, AX
-       MOVQ   AX, 632(BP)
-       MOVQ   $0x6c44198c4a475817, DX
-       ADDQ   AX, R8
-       MOVQ   R13, AX
-       ADDQ   DX, R8
-       MOVQ   R13, CX
-       RORQ   $0x0e, AX
-       MOVQ   R13, DX
-       RORQ   $0x12, CX
-       XORQ   CX, AX
-       MOVQ   R13, CX
-       RORQ   $0x29, DX
-       ANDQ   R14, CX
-       XORQ   AX, DX
-       MOVQ   R13, AX
-       NOTQ   AX
-       ADDQ   DX, R8
-       ANDQ   R15, AX
-       XORQ   CX, AX
-       ADDQ   R8, AX
-       MOVQ   R9, DI
-       MOVQ   R11, BX
-       RORQ   $0x1c, DI
-       MOVQ   R9, DX
-       ANDQ   R10, BX
-       RORQ   $0x22, DX
-       MOVQ   R9, CX
-       ANDQ   R11, CX
-       XORQ   DX, DI
-       XORQ   CX, BX
-       MOVQ   R9, DX
-       MOVQ   R10, CX
-       RORQ   $0x27, DX
-       ANDQ   R9, CX
-       XORQ   CX, BX
-       XORQ   DX, DI
-       ADDQ   DI, BX
-       MOVQ   BX, R8
-       ADDQ   AX, R12
-       ADDQ   AX, R8
-       MOVQ   dig+0(FP), BP
-       ADDQ   (BP), R8
-       MOVQ   R8, (BP)
-       ADDQ   8(BP), R9
-       MOVQ   R9, 8(BP)
-       ADDQ   16(BP), R10
-       MOVQ   R10, 16(BP)
-       ADDQ   24(BP), R11
-       MOVQ   R11, 24(BP)
-       ADDQ   32(BP), R12
-       MOVQ   R12, 32(BP)
-       ADDQ   40(BP), R13
-       MOVQ   R13, 40(BP)
-       ADDQ   48(BP), R14
-       MOVQ   R14, 48(BP)
-       ADDQ   56(BP), R15
-       MOVQ   R15, 56(BP)
-       ADDQ   $0x80, SI
-       CMPQ   SI, 640(SP)
-       JB     loop
-
-end:
-       RET
-
-DATA PSHUFFLE_BYTE_FLIP_MASK<>+0(SB)/8, $0x0001020304050607
-DATA PSHUFFLE_BYTE_FLIP_MASK<>+8(SB)/8, $0x08090a0b0c0d0e0f
-DATA PSHUFFLE_BYTE_FLIP_MASK<>+16(SB)/8, $0x1011121314151617
-DATA PSHUFFLE_BYTE_FLIP_MASK<>+24(SB)/8, $0x18191a1b1c1d1e1f
-GLOBL PSHUFFLE_BYTE_FLIP_MASK<>(SB), RODATA|NOPTR, $32
-
 // func blockAVX2(dig *Digest, p []byte)
 // Requires: AVX, AVX2, BMI2
 TEXT ·blockAVX2(SB), NOSPLIT, $56-32
@@ -5391,6 +891,12 @@ done_hash:
        VZEROUPPER
        RET
 
+DATA PSHUFFLE_BYTE_FLIP_MASK<>+0(SB)/8, $0x0001020304050607
+DATA PSHUFFLE_BYTE_FLIP_MASK<>+8(SB)/8, $0x08090a0b0c0d0e0f
+DATA PSHUFFLE_BYTE_FLIP_MASK<>+16(SB)/8, $0x1011121314151617
+DATA PSHUFFLE_BYTE_FLIP_MASK<>+24(SB)/8, $0x18191a1b1c1d1e1f
+GLOBL PSHUFFLE_BYTE_FLIP_MASK<>(SB), RODATA|NOPTR, $32
+
 DATA MASK_YMM_LO<>+0(SB)/8, $0x0000000000000000
 DATA MASK_YMM_LO<>+8(SB)/8, $0x0000000000000000
 DATA MASK_YMM_LO<>+16(SB)/8, $0xffffffffffffffff
index 575c5de7473a9611660b5a075cad44236bd761a2..dbd171c08bd772a45f5fe6abf26988a798be237a 100644 (file)
@@ -23,232 +23,11 @@ import (
 func main() {
        Package("crypto/sha1")
        ConstraintExpr("!purego")
-       blockAMD64()
        blockAVX2()
        blockSHANI()
        Generate()
 }
 
-func LOAD(index int) {
-       MOVL(Mem{Base: SI}.Offset(index*4), R10L)
-       BSWAPL(R10L)
-       MOVL(R10L, Mem{Base: SP}.Offset(index*4))
-}
-
-func SHUFFLE(index int) {
-       MOVL(Mem{Base: SP}.Offset(((index)&0xf)*4), R10L)
-       XORL(Mem{Base: SP}.Offset(((index-3)&0xf)*4), R10L)
-       XORL(Mem{Base: SP}.Offset(((index-8)&0xf)*4), R10L)
-       XORL(Mem{Base: SP}.Offset(((index-14)&0xf)*4), R10L)
-       ROLL(Imm(1), R10L)
-       MOVL(R10L, Mem{Base: SP}.Offset(((index)&0xf)*4))
-}
-
-func FUNC1(a, b, c, d, e GPPhysical) {
-       MOVL(d, R9L)
-       XORL(c, R9L)
-       ANDL(b, R9L)
-       XORL(d, R9L)
-}
-
-func FUNC2(a, b, c, d, e GPPhysical) {
-       MOVL(b, R9L)
-       XORL(c, R9L)
-       XORL(d, R9L)
-}
-
-func FUNC3(a, b, c, d, e GPPhysical) {
-       MOVL(b, R8L)
-       ORL(c, R8L)
-       ANDL(d, R8L)
-       MOVL(b, R9L)
-       ANDL(c, R9L)
-       ORL(R8L, R9L)
-}
-
-func FUNC4(a, b, c, d, e GPPhysical) {
-       FUNC2(a, b, c, d, e)
-}
-
-func MIX(a, b, c, d, e GPPhysical, konst int) {
-       ROLL(Imm(30), b)
-       ADDL(R9L, e)
-       MOVL(a, R8L)
-       ROLL(Imm(5), R8L)
-       LEAL(Mem{Base: e, Index: R10L, Scale: 1}.Offset(konst), e)
-       ADDL(R8L, e)
-}
-
-func ROUND1(a, b, c, d, e GPPhysical, index int) {
-       LOAD(index)
-       FUNC1(a, b, c, d, e)
-       MIX(a, b, c, d, e, 0x5A827999)
-}
-
-func ROUND1x(a, b, c, d, e GPPhysical, index int) {
-       SHUFFLE(index)
-       FUNC1(a, b, c, d, e)
-       MIX(a, b, c, d, e, 0x5A827999)
-}
-
-func ROUND2(a, b, c, d, e GPPhysical, index int) {
-       SHUFFLE(index)
-       FUNC2(a, b, c, d, e)
-       MIX(a, b, c, d, e, 0x6ED9EBA1)
-}
-
-func ROUND3(a, b, c, d, e GPPhysical, index int) {
-       SHUFFLE(index)
-       FUNC3(a, b, c, d, e)
-       MIX(a, b, c, d, e, 0x8F1BBCDC)
-}
-
-func ROUND4(a, b, c, d, e GPPhysical, index int) {
-       SHUFFLE(index)
-       FUNC4(a, b, c, d, e)
-       MIX(a, b, c, d, e, 0xCA62C1D6)
-}
-
-func blockAMD64() {
-       Implement("blockAMD64")
-       Attributes(NOSPLIT)
-       AllocLocal(64)
-
-       Load(Param("dig"), RBP)
-       Load(Param("p").Base(), RSI)
-       Load(Param("p").Len(), RDX)
-       SHRQ(Imm(6), RDX)
-       SHLQ(Imm(6), RDX)
-
-       LEAQ(Mem{Base: SI, Index: DX, Scale: 1}, RDI)
-       MOVL(Mem{Base: BP}.Offset(0*4), EAX)
-       MOVL(Mem{Base: BP}.Offset(1*4), EBX)
-       MOVL(Mem{Base: BP}.Offset(2*4), ECX)
-       MOVL(Mem{Base: BP}.Offset(3*4), EDX)
-       MOVL(Mem{Base: BP}.Offset(4*4), EBP)
-
-       CMPQ(RSI, RDI)
-       JEQ(LabelRef("end"))
-
-       loop_amd64()
-       end()
-}
-
-func loop_amd64() {
-       Label("loop")
-       MOVL(EAX, R11L)
-       MOVL(EBX, R12L)
-       MOVL(ECX, R13L)
-       MOVL(EDX, R14L)
-       MOVL(EBP, R15L)
-
-       ROUND1(EAX, EBX, ECX, EDX, EBP, 0)
-       ROUND1(EBP, EAX, EBX, ECX, EDX, 1)
-       ROUND1(EDX, EBP, EAX, EBX, ECX, 2)
-       ROUND1(ECX, EDX, EBP, EAX, EBX, 3)
-       ROUND1(EBX, ECX, EDX, EBP, EAX, 4)
-       ROUND1(EAX, EBX, ECX, EDX, EBP, 5)
-       ROUND1(EBP, EAX, EBX, ECX, EDX, 6)
-       ROUND1(EDX, EBP, EAX, EBX, ECX, 7)
-       ROUND1(ECX, EDX, EBP, EAX, EBX, 8)
-       ROUND1(EBX, ECX, EDX, EBP, EAX, 9)
-       ROUND1(EAX, EBX, ECX, EDX, EBP, 10)
-       ROUND1(EBP, EAX, EBX, ECX, EDX, 11)
-       ROUND1(EDX, EBP, EAX, EBX, ECX, 12)
-       ROUND1(ECX, EDX, EBP, EAX, EBX, 13)
-       ROUND1(EBX, ECX, EDX, EBP, EAX, 14)
-       ROUND1(EAX, EBX, ECX, EDX, EBP, 15)
-
-       ROUND1x(EBP, EAX, EBX, ECX, EDX, 16)
-       ROUND1x(EDX, EBP, EAX, EBX, ECX, 17)
-       ROUND1x(ECX, EDX, EBP, EAX, EBX, 18)
-       ROUND1x(EBX, ECX, EDX, EBP, EAX, 19)
-
-       ROUND2(EAX, EBX, ECX, EDX, EBP, 20)
-       ROUND2(EBP, EAX, EBX, ECX, EDX, 21)
-       ROUND2(EDX, EBP, EAX, EBX, ECX, 22)
-       ROUND2(ECX, EDX, EBP, EAX, EBX, 23)
-       ROUND2(EBX, ECX, EDX, EBP, EAX, 24)
-       ROUND2(EAX, EBX, ECX, EDX, EBP, 25)
-       ROUND2(EBP, EAX, EBX, ECX, EDX, 26)
-       ROUND2(EDX, EBP, EAX, EBX, ECX, 27)
-       ROUND2(ECX, EDX, EBP, EAX, EBX, 28)
-       ROUND2(EBX, ECX, EDX, EBP, EAX, 29)
-       ROUND2(EAX, EBX, ECX, EDX, EBP, 30)
-       ROUND2(EBP, EAX, EBX, ECX, EDX, 31)
-       ROUND2(EDX, EBP, EAX, EBX, ECX, 32)
-       ROUND2(ECX, EDX, EBP, EAX, EBX, 33)
-       ROUND2(EBX, ECX, EDX, EBP, EAX, 34)
-       ROUND2(EAX, EBX, ECX, EDX, EBP, 35)
-       ROUND2(EBP, EAX, EBX, ECX, EDX, 36)
-       ROUND2(EDX, EBP, EAX, EBX, ECX, 37)
-       ROUND2(ECX, EDX, EBP, EAX, EBX, 38)
-       ROUND2(EBX, ECX, EDX, EBP, EAX, 39)
-
-       ROUND3(EAX, EBX, ECX, EDX, EBP, 40)
-       ROUND3(EBP, EAX, EBX, ECX, EDX, 41)
-       ROUND3(EDX, EBP, EAX, EBX, ECX, 42)
-       ROUND3(ECX, EDX, EBP, EAX, EBX, 43)
-       ROUND3(EBX, ECX, EDX, EBP, EAX, 44)
-       ROUND3(EAX, EBX, ECX, EDX, EBP, 45)
-       ROUND3(EBP, EAX, EBX, ECX, EDX, 46)
-       ROUND3(EDX, EBP, EAX, EBX, ECX, 47)
-       ROUND3(ECX, EDX, EBP, EAX, EBX, 48)
-       ROUND3(EBX, ECX, EDX, EBP, EAX, 49)
-       ROUND3(EAX, EBX, ECX, EDX, EBP, 50)
-       ROUND3(EBP, EAX, EBX, ECX, EDX, 51)
-       ROUND3(EDX, EBP, EAX, EBX, ECX, 52)
-       ROUND3(ECX, EDX, EBP, EAX, EBX, 53)
-       ROUND3(EBX, ECX, EDX, EBP, EAX, 54)
-       ROUND3(EAX, EBX, ECX, EDX, EBP, 55)
-       ROUND3(EBP, EAX, EBX, ECX, EDX, 56)
-       ROUND3(EDX, EBP, EAX, EBX, ECX, 57)
-       ROUND3(ECX, EDX, EBP, EAX, EBX, 58)
-       ROUND3(EBX, ECX, EDX, EBP, EAX, 59)
-
-       ROUND4(EAX, EBX, ECX, EDX, EBP, 60)
-       ROUND4(EBP, EAX, EBX, ECX, EDX, 61)
-       ROUND4(EDX, EBP, EAX, EBX, ECX, 62)
-       ROUND4(ECX, EDX, EBP, EAX, EBX, 63)
-       ROUND4(EBX, ECX, EDX, EBP, EAX, 64)
-       ROUND4(EAX, EBX, ECX, EDX, EBP, 65)
-       ROUND4(EBP, EAX, EBX, ECX, EDX, 66)
-       ROUND4(EDX, EBP, EAX, EBX, ECX, 67)
-       ROUND4(ECX, EDX, EBP, EAX, EBX, 68)
-       ROUND4(EBX, ECX, EDX, EBP, EAX, 69)
-       ROUND4(EAX, EBX, ECX, EDX, EBP, 70)
-       ROUND4(EBP, EAX, EBX, ECX, EDX, 71)
-       ROUND4(EDX, EBP, EAX, EBX, ECX, 72)
-       ROUND4(ECX, EDX, EBP, EAX, EBX, 73)
-       ROUND4(EBX, ECX, EDX, EBP, EAX, 74)
-       ROUND4(EAX, EBX, ECX, EDX, EBP, 75)
-       ROUND4(EBP, EAX, EBX, ECX, EDX, 76)
-       ROUND4(EDX, EBP, EAX, EBX, ECX, 77)
-       ROUND4(ECX, EDX, EBP, EAX, EBX, 78)
-       ROUND4(EBX, ECX, EDX, EBP, EAX, 79)
-
-       ADDL(R11L, EAX)
-       ADDL(R12L, EBX)
-       ADDL(R13L, ECX)
-       ADDL(R14L, EDX)
-       ADDL(R15L, EBP)
-
-       ADDQ(Imm(64), RSI)
-       CMPQ(RSI, RDI)
-       JB(LabelRef("loop"))
-}
-
-func end() {
-       Label("end")
-       Load(Param("dig"), RDI)
-       MOVL(EAX, Mem{Base: DI}.Offset(0*4))
-       MOVL(EBX, Mem{Base: DI}.Offset(1*4))
-       MOVL(ECX, Mem{Base: DI}.Offset(2*4))
-       MOVL(EDX, Mem{Base: DI}.Offset(3*4))
-       MOVL(EBP, Mem{Base: DI}.Offset(4*4))
-       RET()
-}
-
 // This is the implementation using AVX2, BMI1 and BMI2. It is based on:
 // "SHA-1 implementation with Intel(R) AVX2 instruction set extensions"
 // From http://software.intel.com/en-us/articles
index a497d411445cd62929769725842f97004faffb21..0f92f4b5f50043178c83c37a980cd457c1c2ea95 100644 (file)
@@ -11,9 +11,6 @@ import "internal/cpu"
 //go:noescape
 func blockAVX2(dig *digest, p []byte)
 
-//go:noescape
-func blockAMD64(dig *digest, p []byte)
-
 //go:noescape
 func blockSHANI(dig *digest, p []byte)
 
@@ -24,19 +21,18 @@ func block(dig *digest, p []byte) {
        if useSHANI {
                blockSHANI(dig, p)
        } else if useAVX2 && len(p) >= 256 {
-               // blockAVX2 calculates sha1 for 2 block per iteration
-               // it also interleaves precalculation for next block.
-               // So it may read up-to 192 bytes past end of p
-               // We may add checks inside blockAVX2, but this will
-               // just turn it into a copy of blockAMD64,
-               // so call it directly, instead.
+               // blockAVX2 calculates sha1 for 2 block per iteration and also
+               // interleaves precalculation for next block. So it may read up-to 192
+               // bytes past end of p. We could add checks inside blockAVX2, but this
+               // would just turn it into a copy of the old pre-AVX2 amd64 SHA1
+               // assembly implementation, so just call blockGeneric instead.
                safeLen := len(p) - 128
                if safeLen%128 != 0 {
                        safeLen -= 64
                }
                blockAVX2(dig, p[:safeLen])
-               blockAMD64(dig, p[safeLen:])
+               blockGeneric(dig, p[safeLen:])
        } else {
-               blockAMD64(dig, p)
+               blockGeneric(dig, p)
        }
 }
index 2a5fd2e8e59cb3b17ccd01fc85acaf9c9b7e2744..4e0c43ee4e18755b655d516eef2427aed8c40827 100644 (file)
 
 #include "textflag.h"
 
-// func blockAMD64(dig *digest, p []byte)
-TEXT ·blockAMD64(SB), NOSPLIT, $64-32
-       MOVQ dig+0(FP), BP
-       MOVQ p_base+8(FP), SI
-       MOVQ p_len+16(FP), DX
-       SHRQ $0x06, DX
-       SHLQ $0x06, DX
-       LEAQ (SI)(DX*1), DI
-       MOVL (BP), AX
-       MOVL 4(BP), BX
-       MOVL 8(BP), CX
-       MOVL 12(BP), DX
-       MOVL 16(BP), BP
-       CMPQ SI, DI
-       JEQ  end
-
-loop:
-       MOVL   AX, R11
-       MOVL   BX, R12
-       MOVL   CX, R13
-       MOVL   DX, R14
-       MOVL   BP, R15
-       MOVL   (SI), R10
-       BSWAPL R10
-       MOVL   R10, (SP)
-       MOVL   DX, R9
-       XORL   CX, R9
-       ANDL   BX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   4(SI), R10
-       BSWAPL R10
-       MOVL   R10, 4(SP)
-       MOVL   CX, R9
-       XORL   BX, R9
-       ANDL   AX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   8(SI), R10
-       BSWAPL R10
-       MOVL   R10, 8(SP)
-       MOVL   BX, R9
-       XORL   AX, R9
-       ANDL   BP, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   12(SI), R10
-       BSWAPL R10
-       MOVL   R10, 12(SP)
-       MOVL   AX, R9
-       XORL   BP, R9
-       ANDL   DX, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   16(SI), R10
-       BSWAPL R10
-       MOVL   R10, 16(SP)
-       MOVL   BP, R9
-       XORL   DX, R9
-       ANDL   CX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   20(SI), R10
-       BSWAPL R10
-       MOVL   R10, 20(SP)
-       MOVL   DX, R9
-       XORL   CX, R9
-       ANDL   BX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   24(SI), R10
-       BSWAPL R10
-       MOVL   R10, 24(SP)
-       MOVL   CX, R9
-       XORL   BX, R9
-       ANDL   AX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   28(SI), R10
-       BSWAPL R10
-       MOVL   R10, 28(SP)
-       MOVL   BX, R9
-       XORL   AX, R9
-       ANDL   BP, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   32(SI), R10
-       BSWAPL R10
-       MOVL   R10, 32(SP)
-       MOVL   AX, R9
-       XORL   BP, R9
-       ANDL   DX, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   36(SI), R10
-       BSWAPL R10
-       MOVL   R10, 36(SP)
-       MOVL   BP, R9
-       XORL   DX, R9
-       ANDL   CX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   40(SI), R10
-       BSWAPL R10
-       MOVL   R10, 40(SP)
-       MOVL   DX, R9
-       XORL   CX, R9
-       ANDL   BX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   44(SI), R10
-       BSWAPL R10
-       MOVL   R10, 44(SP)
-       MOVL   CX, R9
-       XORL   BX, R9
-       ANDL   AX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   48(SI), R10
-       BSWAPL R10
-       MOVL   R10, 48(SP)
-       MOVL   BX, R9
-       XORL   AX, R9
-       ANDL   BP, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   52(SI), R10
-       BSWAPL R10
-       MOVL   R10, 52(SP)
-       MOVL   AX, R9
-       XORL   BP, R9
-       ANDL   DX, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   56(SI), R10
-       BSWAPL R10
-       MOVL   R10, 56(SP)
-       MOVL   BP, R9
-       XORL   DX, R9
-       ANDL   CX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   60(SI), R10
-       BSWAPL R10
-       MOVL   R10, 60(SP)
-       MOVL   DX, R9
-       XORL   CX, R9
-       ANDL   BX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   (SP), R10
-       XORL   52(SP), R10
-       XORL   32(SP), R10
-       XORL   8(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, (SP)
-       MOVL   CX, R9
-       XORL   BX, R9
-       ANDL   AX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   4(SP), R10
-       XORL   56(SP), R10
-       XORL   36(SP), R10
-       XORL   12(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 4(SP)
-       MOVL   BX, R9
-       XORL   AX, R9
-       ANDL   BP, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   8(SP), R10
-       XORL   60(SP), R10
-       XORL   40(SP), R10
-       XORL   16(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 8(SP)
-       MOVL   AX, R9
-       XORL   BP, R9
-       ANDL   DX, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   12(SP), R10
-       XORL   (SP), R10
-       XORL   44(SP), R10
-       XORL   20(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 12(SP)
-       MOVL   BP, R9
-       XORL   DX, R9
-       ANDL   CX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   1518500249(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   16(SP), R10
-       XORL   4(SP), R10
-       XORL   48(SP), R10
-       XORL   24(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 16(SP)
-       MOVL   BX, R9
-       XORL   CX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   20(SP), R10
-       XORL   8(SP), R10
-       XORL   52(SP), R10
-       XORL   28(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 20(SP)
-       MOVL   AX, R9
-       XORL   BX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   24(SP), R10
-       XORL   12(SP), R10
-       XORL   56(SP), R10
-       XORL   32(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 24(SP)
-       MOVL   BP, R9
-       XORL   AX, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   28(SP), R10
-       XORL   16(SP), R10
-       XORL   60(SP), R10
-       XORL   36(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 28(SP)
-       MOVL   DX, R9
-       XORL   BP, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   32(SP), R10
-       XORL   20(SP), R10
-       XORL   (SP), R10
-       XORL   40(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 32(SP)
-       MOVL   CX, R9
-       XORL   DX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   36(SP), R10
-       XORL   24(SP), R10
-       XORL   4(SP), R10
-       XORL   44(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 36(SP)
-       MOVL   BX, R9
-       XORL   CX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   40(SP), R10
-       XORL   28(SP), R10
-       XORL   8(SP), R10
-       XORL   48(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 40(SP)
-       MOVL   AX, R9
-       XORL   BX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   44(SP), R10
-       XORL   32(SP), R10
-       XORL   12(SP), R10
-       XORL   52(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 44(SP)
-       MOVL   BP, R9
-       XORL   AX, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   48(SP), R10
-       XORL   36(SP), R10
-       XORL   16(SP), R10
-       XORL   56(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 48(SP)
-       MOVL   DX, R9
-       XORL   BP, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   52(SP), R10
-       XORL   40(SP), R10
-       XORL   20(SP), R10
-       XORL   60(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 52(SP)
-       MOVL   CX, R9
-       XORL   DX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   56(SP), R10
-       XORL   44(SP), R10
-       XORL   24(SP), R10
-       XORL   (SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 56(SP)
-       MOVL   BX, R9
-       XORL   CX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   60(SP), R10
-       XORL   48(SP), R10
-       XORL   28(SP), R10
-       XORL   4(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 60(SP)
-       MOVL   AX, R9
-       XORL   BX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   (SP), R10
-       XORL   52(SP), R10
-       XORL   32(SP), R10
-       XORL   8(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, (SP)
-       MOVL   BP, R9
-       XORL   AX, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   4(SP), R10
-       XORL   56(SP), R10
-       XORL   36(SP), R10
-       XORL   12(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 4(SP)
-       MOVL   DX, R9
-       XORL   BP, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   8(SP), R10
-       XORL   60(SP), R10
-       XORL   40(SP), R10
-       XORL   16(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 8(SP)
-       MOVL   CX, R9
-       XORL   DX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   12(SP), R10
-       XORL   (SP), R10
-       XORL   44(SP), R10
-       XORL   20(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 12(SP)
-       MOVL   BX, R9
-       XORL   CX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   16(SP), R10
-       XORL   4(SP), R10
-       XORL   48(SP), R10
-       XORL   24(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 16(SP)
-       MOVL   AX, R9
-       XORL   BX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   20(SP), R10
-       XORL   8(SP), R10
-       XORL   52(SP), R10
-       XORL   28(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 20(SP)
-       MOVL   BP, R9
-       XORL   AX, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   24(SP), R10
-       XORL   12(SP), R10
-       XORL   56(SP), R10
-       XORL   32(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 24(SP)
-       MOVL   DX, R9
-       XORL   BP, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   28(SP), R10
-       XORL   16(SP), R10
-       XORL   60(SP), R10
-       XORL   36(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 28(SP)
-       MOVL   CX, R9
-       XORL   DX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   1859775393(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   32(SP), R10
-       XORL   20(SP), R10
-       XORL   (SP), R10
-       XORL   40(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 32(SP)
-       MOVL   BX, R8
-       ORL    CX, R8
-       ANDL   DX, R8
-       MOVL   BX, R9
-       ANDL   CX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   36(SP), R10
-       XORL   24(SP), R10
-       XORL   4(SP), R10
-       XORL   44(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 36(SP)
-       MOVL   AX, R8
-       ORL    BX, R8
-       ANDL   CX, R8
-       MOVL   AX, R9
-       ANDL   BX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   40(SP), R10
-       XORL   28(SP), R10
-       XORL   8(SP), R10
-       XORL   48(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 40(SP)
-       MOVL   BP, R8
-       ORL    AX, R8
-       ANDL   BX, R8
-       MOVL   BP, R9
-       ANDL   AX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   44(SP), R10
-       XORL   32(SP), R10
-       XORL   12(SP), R10
-       XORL   52(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 44(SP)
-       MOVL   DX, R8
-       ORL    BP, R8
-       ANDL   AX, R8
-       MOVL   DX, R9
-       ANDL   BP, R9
-       ORL    R8, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   48(SP), R10
-       XORL   36(SP), R10
-       XORL   16(SP), R10
-       XORL   56(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 48(SP)
-       MOVL   CX, R8
-       ORL    DX, R8
-       ANDL   BP, R8
-       MOVL   CX, R9
-       ANDL   DX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   52(SP), R10
-       XORL   40(SP), R10
-       XORL   20(SP), R10
-       XORL   60(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 52(SP)
-       MOVL   BX, R8
-       ORL    CX, R8
-       ANDL   DX, R8
-       MOVL   BX, R9
-       ANDL   CX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   56(SP), R10
-       XORL   44(SP), R10
-       XORL   24(SP), R10
-       XORL   (SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 56(SP)
-       MOVL   AX, R8
-       ORL    BX, R8
-       ANDL   CX, R8
-       MOVL   AX, R9
-       ANDL   BX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   60(SP), R10
-       XORL   48(SP), R10
-       XORL   28(SP), R10
-       XORL   4(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 60(SP)
-       MOVL   BP, R8
-       ORL    AX, R8
-       ANDL   BX, R8
-       MOVL   BP, R9
-       ANDL   AX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   (SP), R10
-       XORL   52(SP), R10
-       XORL   32(SP), R10
-       XORL   8(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, (SP)
-       MOVL   DX, R8
-       ORL    BP, R8
-       ANDL   AX, R8
-       MOVL   DX, R9
-       ANDL   BP, R9
-       ORL    R8, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   4(SP), R10
-       XORL   56(SP), R10
-       XORL   36(SP), R10
-       XORL   12(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 4(SP)
-       MOVL   CX, R8
-       ORL    DX, R8
-       ANDL   BP, R8
-       MOVL   CX, R9
-       ANDL   DX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   8(SP), R10
-       XORL   60(SP), R10
-       XORL   40(SP), R10
-       XORL   16(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 8(SP)
-       MOVL   BX, R8
-       ORL    CX, R8
-       ANDL   DX, R8
-       MOVL   BX, R9
-       ANDL   CX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   12(SP), R10
-       XORL   (SP), R10
-       XORL   44(SP), R10
-       XORL   20(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 12(SP)
-       MOVL   AX, R8
-       ORL    BX, R8
-       ANDL   CX, R8
-       MOVL   AX, R9
-       ANDL   BX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   16(SP), R10
-       XORL   4(SP), R10
-       XORL   48(SP), R10
-       XORL   24(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 16(SP)
-       MOVL   BP, R8
-       ORL    AX, R8
-       ANDL   BX, R8
-       MOVL   BP, R9
-       ANDL   AX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   20(SP), R10
-       XORL   8(SP), R10
-       XORL   52(SP), R10
-       XORL   28(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 20(SP)
-       MOVL   DX, R8
-       ORL    BP, R8
-       ANDL   AX, R8
-       MOVL   DX, R9
-       ANDL   BP, R9
-       ORL    R8, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   24(SP), R10
-       XORL   12(SP), R10
-       XORL   56(SP), R10
-       XORL   32(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 24(SP)
-       MOVL   CX, R8
-       ORL    DX, R8
-       ANDL   BP, R8
-       MOVL   CX, R9
-       ANDL   DX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   28(SP), R10
-       XORL   16(SP), R10
-       XORL   60(SP), R10
-       XORL   36(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 28(SP)
-       MOVL   BX, R8
-       ORL    CX, R8
-       ANDL   DX, R8
-       MOVL   BX, R9
-       ANDL   CX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   32(SP), R10
-       XORL   20(SP), R10
-       XORL   (SP), R10
-       XORL   40(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 32(SP)
-       MOVL   AX, R8
-       ORL    BX, R8
-       ANDL   CX, R8
-       MOVL   AX, R9
-       ANDL   BX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   36(SP), R10
-       XORL   24(SP), R10
-       XORL   4(SP), R10
-       XORL   44(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 36(SP)
-       MOVL   BP, R8
-       ORL    AX, R8
-       ANDL   BX, R8
-       MOVL   BP, R9
-       ANDL   AX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   40(SP), R10
-       XORL   28(SP), R10
-       XORL   8(SP), R10
-       XORL   48(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 40(SP)
-       MOVL   DX, R8
-       ORL    BP, R8
-       ANDL   AX, R8
-       MOVL   DX, R9
-       ANDL   BP, R9
-       ORL    R8, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   44(SP), R10
-       XORL   32(SP), R10
-       XORL   12(SP), R10
-       XORL   52(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 44(SP)
-       MOVL   CX, R8
-       ORL    DX, R8
-       ANDL   BP, R8
-       MOVL   CX, R9
-       ANDL   DX, R9
-       ORL    R8, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   2400959708(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   48(SP), R10
-       XORL   36(SP), R10
-       XORL   16(SP), R10
-       XORL   56(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 48(SP)
-       MOVL   BX, R9
-       XORL   CX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   52(SP), R10
-       XORL   40(SP), R10
-       XORL   20(SP), R10
-       XORL   60(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 52(SP)
-       MOVL   AX, R9
-       XORL   BX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   56(SP), R10
-       XORL   44(SP), R10
-       XORL   24(SP), R10
-       XORL   (SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 56(SP)
-       MOVL   BP, R9
-       XORL   AX, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   60(SP), R10
-       XORL   48(SP), R10
-       XORL   28(SP), R10
-       XORL   4(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 60(SP)
-       MOVL   DX, R9
-       XORL   BP, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   (SP), R10
-       XORL   52(SP), R10
-       XORL   32(SP), R10
-       XORL   8(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, (SP)
-       MOVL   CX, R9
-       XORL   DX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   4(SP), R10
-       XORL   56(SP), R10
-       XORL   36(SP), R10
-       XORL   12(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 4(SP)
-       MOVL   BX, R9
-       XORL   CX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   8(SP), R10
-       XORL   60(SP), R10
-       XORL   40(SP), R10
-       XORL   16(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 8(SP)
-       MOVL   AX, R9
-       XORL   BX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   12(SP), R10
-       XORL   (SP), R10
-       XORL   44(SP), R10
-       XORL   20(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 12(SP)
-       MOVL   BP, R9
-       XORL   AX, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   16(SP), R10
-       XORL   4(SP), R10
-       XORL   48(SP), R10
-       XORL   24(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 16(SP)
-       MOVL   DX, R9
-       XORL   BP, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   20(SP), R10
-       XORL   8(SP), R10
-       XORL   52(SP), R10
-       XORL   28(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 20(SP)
-       MOVL   CX, R9
-       XORL   DX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   24(SP), R10
-       XORL   12(SP), R10
-       XORL   56(SP), R10
-       XORL   32(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 24(SP)
-       MOVL   BX, R9
-       XORL   CX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   28(SP), R10
-       XORL   16(SP), R10
-       XORL   60(SP), R10
-       XORL   36(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 28(SP)
-       MOVL   AX, R9
-       XORL   BX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   32(SP), R10
-       XORL   20(SP), R10
-       XORL   (SP), R10
-       XORL   40(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 32(SP)
-       MOVL   BP, R9
-       XORL   AX, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   36(SP), R10
-       XORL   24(SP), R10
-       XORL   4(SP), R10
-       XORL   44(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 36(SP)
-       MOVL   DX, R9
-       XORL   BP, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   40(SP), R10
-       XORL   28(SP), R10
-       XORL   8(SP), R10
-       XORL   48(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 40(SP)
-       MOVL   CX, R9
-       XORL   DX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(AX)(R10*1), AX
-       ADDL   R8, AX
-       MOVL   44(SP), R10
-       XORL   32(SP), R10
-       XORL   12(SP), R10
-       XORL   52(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 44(SP)
-       MOVL   BX, R9
-       XORL   CX, R9
-       XORL   DX, R9
-       ROLL   $0x1e, BX
-       ADDL   R9, BP
-       MOVL   AX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(BP)(R10*1), BP
-       ADDL   R8, BP
-       MOVL   48(SP), R10
-       XORL   36(SP), R10
-       XORL   16(SP), R10
-       XORL   56(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 48(SP)
-       MOVL   AX, R9
-       XORL   BX, R9
-       XORL   CX, R9
-       ROLL   $0x1e, AX
-       ADDL   R9, DX
-       MOVL   BP, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(DX)(R10*1), DX
-       ADDL   R8, DX
-       MOVL   52(SP), R10
-       XORL   40(SP), R10
-       XORL   20(SP), R10
-       XORL   60(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 52(SP)
-       MOVL   BP, R9
-       XORL   AX, R9
-       XORL   BX, R9
-       ROLL   $0x1e, BP
-       ADDL   R9, CX
-       MOVL   DX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(CX)(R10*1), CX
-       ADDL   R8, CX
-       MOVL   56(SP), R10
-       XORL   44(SP), R10
-       XORL   24(SP), R10
-       XORL   (SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 56(SP)
-       MOVL   DX, R9
-       XORL   BP, R9
-       XORL   AX, R9
-       ROLL   $0x1e, DX
-       ADDL   R9, BX
-       MOVL   CX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(BX)(R10*1), BX
-       ADDL   R8, BX
-       MOVL   60(SP), R10
-       XORL   48(SP), R10
-       XORL   28(SP), R10
-       XORL   4(SP), R10
-       ROLL   $0x01, R10
-       MOVL   R10, 60(SP)
-       MOVL   CX, R9
-       XORL   DX, R9
-       XORL   BP, R9
-       ROLL   $0x1e, CX
-       ADDL   R9, AX
-       MOVL   BX, R8
-       ROLL   $0x05, R8
-       LEAL   3395469782(AX)(R10*1), AX
-       ADDL   R8, AX
-       ADDL   R11, AX
-       ADDL   R12, BX
-       ADDL   R13, CX
-       ADDL   R14, DX
-       ADDL   R15, BP
-       ADDQ   $0x40, SI
-       CMPQ   SI, DI
-       JB     loop
-
-end:
-       MOVQ dig+0(FP), DI
-       MOVL AX, (DI)
-       MOVL BX, 4(DI)
-       MOVL CX, 8(DI)
-       MOVL DX, 12(DI)
-       MOVL BP, 16(DI)
-       RET
-
 // func blockAVX2(dig *digest, p []byte)
 // Requires: AVX, AVX2, BMI, BMI2, CMOV
 TEXT ·blockAVX2(SB), $1408-32