Permalink
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1508 lines (1422 sloc) 22.5 KB
// Code generated by command: go run asm.go -out sha1.s -stubs stub.go. DO NOT EDIT.
// func block(h *[5]uint32, m []byte)
TEXT ·block(SB), $64-32
MOVQ h+0(FP), AX
MOVQ m_base+8(FP), CX
// Load initial hash.
MOVL (AX), DX
MOVL 4(AX), BX
MOVL 8(AX), BP
MOVL 12(AX), SI
MOVL 16(AX), DI
// Initialize registers.
MOVL DX, R8
MOVL BX, R9
MOVL BP, R10
MOVL SI, R11
MOVL DI, R12
// Round 0.
MOVL (CX), R13
BSWAPL R13
MOVL R13, (SP)
MOVL R8, R14
ROLL $0x05, R14
MOVL R11, R15
XORL R10, R15
ANDL R9, R15
XORL R11, R15
ADDL R15, R14
ADDL R12, R14
ADDL $0x5a827999, R14
ADDL R13, R14
ROLL $0x1e, R9
// Round 1.
MOVL 4(CX), R12
BSWAPL R12
MOVL R12, 4(SP)
MOVL R14, R13
ROLL $0x05, R13
MOVL R10, R15
XORL R9, R15
ANDL R8, R15
XORL R10, R15
ADDL R15, R13
ADDL R11, R13
ADDL $0x5a827999, R13
ADDL R12, R13
ROLL $0x1e, R8
// Round 2.
MOVL 8(CX), R11
BSWAPL R11
MOVL R11, 8(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R9, R15
XORL R8, R15
ANDL R14, R15
XORL R9, R15
ADDL R15, R12
ADDL R10, R12
ADDL $0x5a827999, R12
ADDL R11, R12
ROLL $0x1e, R14
// Round 3.
MOVL 12(CX), R10
BSWAPL R10
MOVL R10, 12(SP)
MOVL R12, R11
ROLL $0x05, R11
MOVL R8, R15
XORL R14, R15
ANDL R13, R15
XORL R8, R15
ADDL R15, R11
ADDL R9, R11
ADDL $0x5a827999, R11
ADDL R10, R11
ROLL $0x1e, R13
// Round 4.
MOVL 16(CX), R9
BSWAPL R9
MOVL R9, 16(SP)
MOVL R11, R10
ROLL $0x05, R10
MOVL R14, R15
XORL R13, R15
ANDL R12, R15
XORL R14, R15
ADDL R15, R10
ADDL R8, R10
ADDL $0x5a827999, R10
ADDL R9, R10
ROLL $0x1e, R12
// Round 5.
MOVL 20(CX), R8
BSWAPL R8
MOVL R8, 20(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R13, R15
XORL R12, R15
ANDL R11, R15
XORL R13, R15
ADDL R15, R9
ADDL R14, R9
ADDL $0x5a827999, R9
ADDL R8, R9
ROLL $0x1e, R11
// Round 6.
MOVL 24(CX), R8
BSWAPL R8
MOVL R8, 24(SP)
MOVL R9, R14
ROLL $0x05, R14
MOVL R12, R15
XORL R11, R15
ANDL R10, R15
XORL R12, R15
ADDL R15, R14
ADDL R13, R14
ADDL $0x5a827999, R14
ADDL R8, R14
ROLL $0x1e, R10
// Round 7.
MOVL 28(CX), R8
BSWAPL R8
MOVL R8, 28(SP)
MOVL R14, R13
ROLL $0x05, R13
MOVL R11, R15
XORL R10, R15
ANDL R9, R15
XORL R11, R15
ADDL R15, R13
ADDL R12, R13
ADDL $0x5a827999, R13
ADDL R8, R13
ROLL $0x1e, R9
// Round 8.
MOVL 32(CX), R8
BSWAPL R8
MOVL R8, 32(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R10, R15
XORL R9, R15
ANDL R14, R15
XORL R10, R15
ADDL R15, R12
ADDL R11, R12
ADDL $0x5a827999, R12
ADDL R8, R12
ROLL $0x1e, R14
// Round 9.
MOVL 36(CX), R8
BSWAPL R8
MOVL R8, 36(SP)
MOVL R12, R11
ROLL $0x05, R11
MOVL R9, R15
XORL R14, R15
ANDL R13, R15
XORL R9, R15
ADDL R15, R11
ADDL R10, R11
ADDL $0x5a827999, R11
ADDL R8, R11
ROLL $0x1e, R13
// Round 10.
MOVL 40(CX), R8
BSWAPL R8
MOVL R8, 40(SP)
MOVL R11, R10
ROLL $0x05, R10
MOVL R14, R15
XORL R13, R15
ANDL R12, R15
XORL R14, R15
ADDL R15, R10
ADDL R9, R10
ADDL $0x5a827999, R10
ADDL R8, R10
ROLL $0x1e, R12
// Round 11.
MOVL 44(CX), R8
BSWAPL R8
MOVL R8, 44(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R13, R15
XORL R12, R15
ANDL R11, R15
XORL R13, R15
ADDL R15, R9
ADDL R14, R9
ADDL $0x5a827999, R9
ADDL R8, R9
ROLL $0x1e, R11
// Round 12.
MOVL 48(CX), R8
BSWAPL R8
MOVL R8, 48(SP)
MOVL R9, R14
ROLL $0x05, R14
MOVL R12, R15
XORL R11, R15
ANDL R10, R15
XORL R12, R15
ADDL R15, R14
ADDL R13, R14
ADDL $0x5a827999, R14
ADDL R8, R14
ROLL $0x1e, R10
// Round 13.
MOVL 52(CX), R8
BSWAPL R8
MOVL R8, 52(SP)
MOVL R14, R13
ROLL $0x05, R13
MOVL R11, R15
XORL R10, R15
ANDL R9, R15
XORL R11, R15
ADDL R15, R13
ADDL R12, R13
ADDL $0x5a827999, R13
ADDL R8, R13
ROLL $0x1e, R9
// Round 14.
MOVL 56(CX), R8
BSWAPL R8
MOVL R8, 56(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R10, R15
XORL R9, R15
ANDL R14, R15
XORL R10, R15
ADDL R15, R12
ADDL R11, R12
ADDL $0x5a827999, R12
ADDL R8, R12
ROLL $0x1e, R14
// Round 15.
MOVL 60(CX), CX
BSWAPL CX
MOVL CX, 60(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R9, R11
XORL R14, R11
ANDL R13, R11
XORL R9, R11
ADDL R11, R8
ADDL R10, R8
ADDL $0x5a827999, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 16.
MOVL 52(SP), CX
XORL 32(SP), CX
XORL 8(SP), CX
XORL (SP), CX
ROLL $0x01, CX
MOVL CX, (SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R14, R11
XORL R13, R11
ANDL R12, R11
XORL R14, R11
ADDL R11, R10
ADDL R9, R10
ADDL $0x5a827999, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 17.
MOVL 56(SP), CX
XORL 36(SP), CX
XORL 12(SP), CX
XORL 4(SP), CX
ROLL $0x01, CX
MOVL CX, 4(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R13, R11
XORL R12, R11
ANDL R8, R11
XORL R13, R11
ADDL R11, R9
ADDL R14, R9
ADDL $0x5a827999, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 18.
MOVL 60(SP), CX
XORL 40(SP), CX
XORL 16(SP), CX
XORL 8(SP), CX
ROLL $0x01, CX
MOVL CX, 8(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R12, R14
XORL R8, R14
ANDL R10, R14
XORL R12, R14
ADDL R14, R11
ADDL R13, R11
ADDL $0x5a827999, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 19.
MOVL (SP), CX
XORL 44(SP), CX
XORL 20(SP), CX
XORL 12(SP), CX
ROLL $0x01, CX
MOVL CX, 12(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R8, R14
XORL R10, R14
ANDL R9, R14
XORL R8, R14
ADDL R14, R13
ADDL R12, R13
ADDL $0x5a827999, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 20.
MOVL 4(SP), CX
XORL 48(SP), CX
XORL 24(SP), CX
XORL 16(SP), CX
ROLL $0x01, CX
MOVL CX, 16(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
XORL R9, R14
XORL R10, R14
ADDL R14, R12
ADDL R8, R12
ADDL $0x6ed9eba1, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 21.
MOVL 8(SP), CX
XORL 52(SP), CX
XORL 28(SP), CX
XORL 20(SP), CX
ROLL $0x01, CX
MOVL CX, 20(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
XORL R11, R14
XORL R9, R14
ADDL R14, R8
ADDL R10, R8
ADDL $0x6ed9eba1, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 22.
MOVL 12(SP), CX
XORL 56(SP), CX
XORL 32(SP), CX
XORL 24(SP), CX
ROLL $0x01, CX
MOVL CX, 24(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
XORL R13, R14
XORL R11, R14
ADDL R14, R10
ADDL R9, R10
ADDL $0x6ed9eba1, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 23.
MOVL 16(SP), CX
XORL 60(SP), CX
XORL 36(SP), CX
XORL 28(SP), CX
ROLL $0x01, CX
MOVL CX, 28(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
XORL R12, R14
XORL R13, R14
ADDL R14, R9
ADDL R11, R9
ADDL $0x6ed9eba1, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 24.
MOVL 20(SP), CX
XORL (SP), CX
XORL 40(SP), CX
XORL 32(SP), CX
ROLL $0x01, CX
MOVL CX, 32(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
XORL R8, R14
XORL R12, R14
ADDL R14, R11
ADDL R13, R11
ADDL $0x6ed9eba1, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 25.
MOVL 24(SP), CX
XORL 4(SP), CX
XORL 44(SP), CX
XORL 36(SP), CX
ROLL $0x01, CX
MOVL CX, 36(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
XORL R10, R14
XORL R8, R14
ADDL R14, R13
ADDL R12, R13
ADDL $0x6ed9eba1, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 26.
MOVL 28(SP), CX
XORL 8(SP), CX
XORL 48(SP), CX
XORL 40(SP), CX
ROLL $0x01, CX
MOVL CX, 40(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
XORL R9, R14
XORL R10, R14
ADDL R14, R12
ADDL R8, R12
ADDL $0x6ed9eba1, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 27.
MOVL 32(SP), CX
XORL 12(SP), CX
XORL 52(SP), CX
XORL 44(SP), CX
ROLL $0x01, CX
MOVL CX, 44(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
XORL R11, R14
XORL R9, R14
ADDL R14, R8
ADDL R10, R8
ADDL $0x6ed9eba1, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 28.
MOVL 36(SP), CX
XORL 16(SP), CX
XORL 56(SP), CX
XORL 48(SP), CX
ROLL $0x01, CX
MOVL CX, 48(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
XORL R13, R14
XORL R11, R14
ADDL R14, R10
ADDL R9, R10
ADDL $0x6ed9eba1, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 29.
MOVL 40(SP), CX
XORL 20(SP), CX
XORL 60(SP), CX
XORL 52(SP), CX
ROLL $0x01, CX
MOVL CX, 52(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
XORL R12, R14
XORL R13, R14
ADDL R14, R9
ADDL R11, R9
ADDL $0x6ed9eba1, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 30.
MOVL 44(SP), CX
XORL 24(SP), CX
XORL (SP), CX
XORL 56(SP), CX
ROLL $0x01, CX
MOVL CX, 56(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
XORL R8, R14
XORL R12, R14
ADDL R14, R11
ADDL R13, R11
ADDL $0x6ed9eba1, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 31.
MOVL 48(SP), CX
XORL 28(SP), CX
XORL 4(SP), CX
XORL 60(SP), CX
ROLL $0x01, CX
MOVL CX, 60(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
XORL R10, R14
XORL R8, R14
ADDL R14, R13
ADDL R12, R13
ADDL $0x6ed9eba1, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 32.
MOVL 52(SP), CX
XORL 32(SP), CX
XORL 8(SP), CX
XORL (SP), CX
ROLL $0x01, CX
MOVL CX, (SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
XORL R9, R14
XORL R10, R14
ADDL R14, R12
ADDL R8, R12
ADDL $0x6ed9eba1, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 33.
MOVL 56(SP), CX
XORL 36(SP), CX
XORL 12(SP), CX
XORL 4(SP), CX
ROLL $0x01, CX
MOVL CX, 4(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
XORL R11, R14
XORL R9, R14
ADDL R14, R8
ADDL R10, R8
ADDL $0x6ed9eba1, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 34.
MOVL 60(SP), CX
XORL 40(SP), CX
XORL 16(SP), CX
XORL 8(SP), CX
ROLL $0x01, CX
MOVL CX, 8(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
XORL R13, R14
XORL R11, R14
ADDL R14, R10
ADDL R9, R10
ADDL $0x6ed9eba1, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 35.
MOVL (SP), CX
XORL 44(SP), CX
XORL 20(SP), CX
XORL 12(SP), CX
ROLL $0x01, CX
MOVL CX, 12(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
XORL R12, R14
XORL R13, R14
ADDL R14, R9
ADDL R11, R9
ADDL $0x6ed9eba1, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 36.
MOVL 4(SP), CX
XORL 48(SP), CX
XORL 24(SP), CX
XORL 16(SP), CX
ROLL $0x01, CX
MOVL CX, 16(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
XORL R8, R14
XORL R12, R14
ADDL R14, R11
ADDL R13, R11
ADDL $0x6ed9eba1, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 37.
MOVL 8(SP), CX
XORL 52(SP), CX
XORL 28(SP), CX
XORL 20(SP), CX
ROLL $0x01, CX
MOVL CX, 20(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
XORL R10, R14
XORL R8, R14
ADDL R14, R13
ADDL R12, R13
ADDL $0x6ed9eba1, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 38.
MOVL 12(SP), CX
XORL 56(SP), CX
XORL 32(SP), CX
XORL 24(SP), CX
ROLL $0x01, CX
MOVL CX, 24(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
XORL R9, R14
XORL R10, R14
ADDL R14, R12
ADDL R8, R12
ADDL $0x6ed9eba1, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 39.
MOVL 16(SP), CX
XORL 60(SP), CX
XORL 36(SP), CX
XORL 28(SP), CX
ROLL $0x01, CX
MOVL CX, 28(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
XORL R11, R14
XORL R9, R14
ADDL R14, R8
ADDL R10, R8
ADDL $0x6ed9eba1, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 40.
MOVL 20(SP), CX
XORL (SP), CX
XORL 40(SP), CX
XORL 32(SP), CX
ROLL $0x01, CX
MOVL CX, 32(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
ORL R13, R14
ANDL R11, R14
MOVL R12, R15
ANDL R13, R15
ORL R14, R15
ADDL R15, R10
ADDL R9, R10
ADDL $0x8f1bbcdc, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 41.
MOVL 24(SP), CX
XORL 4(SP), CX
XORL 44(SP), CX
XORL 36(SP), CX
ROLL $0x01, CX
MOVL CX, 36(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
ORL R12, R14
ANDL R13, R14
MOVL R8, R15
ANDL R12, R15
ORL R14, R15
ADDL R15, R9
ADDL R11, R9
ADDL $0x8f1bbcdc, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 42.
MOVL 28(SP), CX
XORL 8(SP), CX
XORL 48(SP), CX
XORL 40(SP), CX
ROLL $0x01, CX
MOVL CX, 40(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
ORL R8, R14
ANDL R12, R14
MOVL R10, R15
ANDL R8, R15
ORL R14, R15
ADDL R15, R11
ADDL R13, R11
ADDL $0x8f1bbcdc, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 43.
MOVL 32(SP), CX
XORL 12(SP), CX
XORL 52(SP), CX
XORL 44(SP), CX
ROLL $0x01, CX
MOVL CX, 44(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
ORL R10, R14
ANDL R8, R14
MOVL R9, R15
ANDL R10, R15
ORL R14, R15
ADDL R15, R13
ADDL R12, R13
ADDL $0x8f1bbcdc, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 44.
MOVL 36(SP), CX
XORL 16(SP), CX
XORL 56(SP), CX
XORL 48(SP), CX
ROLL $0x01, CX
MOVL CX, 48(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
ORL R9, R14
ANDL R10, R14
MOVL R11, R15
ANDL R9, R15
ORL R14, R15
ADDL R15, R12
ADDL R8, R12
ADDL $0x8f1bbcdc, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 45.
MOVL 40(SP), CX
XORL 20(SP), CX
XORL 60(SP), CX
XORL 52(SP), CX
ROLL $0x01, CX
MOVL CX, 52(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
ORL R11, R14
ANDL R9, R14
MOVL R13, R15
ANDL R11, R15
ORL R14, R15
ADDL R15, R8
ADDL R10, R8
ADDL $0x8f1bbcdc, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 46.
MOVL 44(SP), CX
XORL 24(SP), CX
XORL (SP), CX
XORL 56(SP), CX
ROLL $0x01, CX
MOVL CX, 56(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
ORL R13, R14
ANDL R11, R14
MOVL R12, R15
ANDL R13, R15
ORL R14, R15
ADDL R15, R10
ADDL R9, R10
ADDL $0x8f1bbcdc, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 47.
MOVL 48(SP), CX
XORL 28(SP), CX
XORL 4(SP), CX
XORL 60(SP), CX
ROLL $0x01, CX
MOVL CX, 60(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
ORL R12, R14
ANDL R13, R14
MOVL R8, R15
ANDL R12, R15
ORL R14, R15
ADDL R15, R9
ADDL R11, R9
ADDL $0x8f1bbcdc, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 48.
MOVL 52(SP), CX
XORL 32(SP), CX
XORL 8(SP), CX
XORL (SP), CX
ROLL $0x01, CX
MOVL CX, (SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
ORL R8, R14
ANDL R12, R14
MOVL R10, R15
ANDL R8, R15
ORL R14, R15
ADDL R15, R11
ADDL R13, R11
ADDL $0x8f1bbcdc, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 49.
MOVL 56(SP), CX
XORL 36(SP), CX
XORL 12(SP), CX
XORL 4(SP), CX
ROLL $0x01, CX
MOVL CX, 4(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
ORL R10, R14
ANDL R8, R14
MOVL R9, R15
ANDL R10, R15
ORL R14, R15
ADDL R15, R13
ADDL R12, R13
ADDL $0x8f1bbcdc, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 50.
MOVL 60(SP), CX
XORL 40(SP), CX
XORL 16(SP), CX
XORL 8(SP), CX
ROLL $0x01, CX
MOVL CX, 8(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
ORL R9, R14
ANDL R10, R14
MOVL R11, R15
ANDL R9, R15
ORL R14, R15
ADDL R15, R12
ADDL R8, R12
ADDL $0x8f1bbcdc, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 51.
MOVL (SP), CX
XORL 44(SP), CX
XORL 20(SP), CX
XORL 12(SP), CX
ROLL $0x01, CX
MOVL CX, 12(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
ORL R11, R14
ANDL R9, R14
MOVL R13, R15
ANDL R11, R15
ORL R14, R15
ADDL R15, R8
ADDL R10, R8
ADDL $0x8f1bbcdc, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 52.
MOVL 4(SP), CX
XORL 48(SP), CX
XORL 24(SP), CX
XORL 16(SP), CX
ROLL $0x01, CX
MOVL CX, 16(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
ORL R13, R14
ANDL R11, R14
MOVL R12, R15
ANDL R13, R15
ORL R14, R15
ADDL R15, R10
ADDL R9, R10
ADDL $0x8f1bbcdc, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 53.
MOVL 8(SP), CX
XORL 52(SP), CX
XORL 28(SP), CX
XORL 20(SP), CX
ROLL $0x01, CX
MOVL CX, 20(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
ORL R12, R14
ANDL R13, R14
MOVL R8, R15
ANDL R12, R15
ORL R14, R15
ADDL R15, R9
ADDL R11, R9
ADDL $0x8f1bbcdc, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 54.
MOVL 12(SP), CX
XORL 56(SP), CX
XORL 32(SP), CX
XORL 24(SP), CX
ROLL $0x01, CX
MOVL CX, 24(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
ORL R8, R14
ANDL R12, R14
MOVL R10, R15
ANDL R8, R15
ORL R14, R15
ADDL R15, R11
ADDL R13, R11
ADDL $0x8f1bbcdc, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 55.
MOVL 16(SP), CX
XORL 60(SP), CX
XORL 36(SP), CX
XORL 28(SP), CX
ROLL $0x01, CX
MOVL CX, 28(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
ORL R10, R14
ANDL R8, R14
MOVL R9, R15
ANDL R10, R15
ORL R14, R15
ADDL R15, R13
ADDL R12, R13
ADDL $0x8f1bbcdc, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 56.
MOVL 20(SP), CX
XORL (SP), CX
XORL 40(SP), CX
XORL 32(SP), CX
ROLL $0x01, CX
MOVL CX, 32(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
ORL R9, R14
ANDL R10, R14
MOVL R11, R15
ANDL R9, R15
ORL R14, R15
ADDL R15, R12
ADDL R8, R12
ADDL $0x8f1bbcdc, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 57.
MOVL 24(SP), CX
XORL 4(SP), CX
XORL 44(SP), CX
XORL 36(SP), CX
ROLL $0x01, CX
MOVL CX, 36(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
ORL R11, R14
ANDL R9, R14
MOVL R13, R15
ANDL R11, R15
ORL R14, R15
ADDL R15, R8
ADDL R10, R8
ADDL $0x8f1bbcdc, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 58.
MOVL 28(SP), CX
XORL 8(SP), CX
XORL 48(SP), CX
XORL 40(SP), CX
ROLL $0x01, CX
MOVL CX, 40(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
ORL R13, R14
ANDL R11, R14
MOVL R12, R15
ANDL R13, R15
ORL R14, R15
ADDL R15, R10
ADDL R9, R10
ADDL $0x8f1bbcdc, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 59.
MOVL 32(SP), CX
XORL 12(SP), CX
XORL 52(SP), CX
XORL 44(SP), CX
ROLL $0x01, CX
MOVL CX, 44(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
ORL R12, R14
ANDL R13, R14
MOVL R8, R15
ANDL R12, R15
ORL R14, R15
ADDL R15, R9
ADDL R11, R9
ADDL $0x8f1bbcdc, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 60.
MOVL 36(SP), CX
XORL 16(SP), CX
XORL 56(SP), CX
XORL 48(SP), CX
ROLL $0x01, CX
MOVL CX, 48(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
XORL R8, R14
XORL R12, R14
ADDL R14, R11
ADDL R13, R11
ADDL $0xca62c1d6, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 61.
MOVL 40(SP), CX
XORL 20(SP), CX
XORL 60(SP), CX
XORL 52(SP), CX
ROLL $0x01, CX
MOVL CX, 52(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
XORL R10, R14
XORL R8, R14
ADDL R14, R13
ADDL R12, R13
ADDL $0xca62c1d6, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 62.
MOVL 44(SP), CX
XORL 24(SP), CX
XORL (SP), CX
XORL 56(SP), CX
ROLL $0x01, CX
MOVL CX, 56(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
XORL R9, R14
XORL R10, R14
ADDL R14, R12
ADDL R8, R12
ADDL $0xca62c1d6, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 63.
MOVL 48(SP), CX
XORL 28(SP), CX
XORL 4(SP), CX
XORL 60(SP), CX
ROLL $0x01, CX
MOVL CX, 60(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
XORL R11, R14
XORL R9, R14
ADDL R14, R8
ADDL R10, R8
ADDL $0xca62c1d6, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 64.
MOVL 52(SP), CX
XORL 32(SP), CX
XORL 8(SP), CX
XORL (SP), CX
ROLL $0x01, CX
MOVL CX, (SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
XORL R13, R14
XORL R11, R14
ADDL R14, R10
ADDL R9, R10
ADDL $0xca62c1d6, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 65.
MOVL 56(SP), CX
XORL 36(SP), CX
XORL 12(SP), CX
XORL 4(SP), CX
ROLL $0x01, CX
MOVL CX, 4(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
XORL R12, R14
XORL R13, R14
ADDL R14, R9
ADDL R11, R9
ADDL $0xca62c1d6, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 66.
MOVL 60(SP), CX
XORL 40(SP), CX
XORL 16(SP), CX
XORL 8(SP), CX
ROLL $0x01, CX
MOVL CX, 8(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
XORL R8, R14
XORL R12, R14
ADDL R14, R11
ADDL R13, R11
ADDL $0xca62c1d6, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 67.
MOVL (SP), CX
XORL 44(SP), CX
XORL 20(SP), CX
XORL 12(SP), CX
ROLL $0x01, CX
MOVL CX, 12(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
XORL R10, R14
XORL R8, R14
ADDL R14, R13
ADDL R12, R13
ADDL $0xca62c1d6, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 68.
MOVL 4(SP), CX
XORL 48(SP), CX
XORL 24(SP), CX
XORL 16(SP), CX
ROLL $0x01, CX
MOVL CX, 16(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
XORL R9, R14
XORL R10, R14
ADDL R14, R12
ADDL R8, R12
ADDL $0xca62c1d6, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 69.
MOVL 8(SP), CX
XORL 52(SP), CX
XORL 28(SP), CX
XORL 20(SP), CX
ROLL $0x01, CX
MOVL CX, 20(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
XORL R11, R14
XORL R9, R14
ADDL R14, R8
ADDL R10, R8
ADDL $0xca62c1d6, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 70.
MOVL 12(SP), CX
XORL 56(SP), CX
XORL 32(SP), CX
XORL 24(SP), CX
ROLL $0x01, CX
MOVL CX, 24(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
XORL R13, R14
XORL R11, R14
ADDL R14, R10
ADDL R9, R10
ADDL $0xca62c1d6, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 71.
MOVL 16(SP), CX
XORL 60(SP), CX
XORL 36(SP), CX
XORL 28(SP), CX
ROLL $0x01, CX
MOVL CX, 28(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
XORL R12, R14
XORL R13, R14
ADDL R14, R9
ADDL R11, R9
ADDL $0xca62c1d6, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 72.
MOVL 20(SP), CX
XORL (SP), CX
XORL 40(SP), CX
XORL 32(SP), CX
ROLL $0x01, CX
MOVL CX, 32(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
XORL R8, R14
XORL R12, R14
ADDL R14, R11
ADDL R13, R11
ADDL $0xca62c1d6, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 73.
MOVL 24(SP), CX
XORL 4(SP), CX
XORL 44(SP), CX
XORL 36(SP), CX
ROLL $0x01, CX
MOVL CX, 36(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
XORL R10, R14
XORL R8, R14
ADDL R14, R13
ADDL R12, R13
ADDL $0xca62c1d6, R13
ADDL CX, R13
ROLL $0x1e, R9
// Round 74.
MOVL 28(SP), CX
XORL 8(SP), CX
XORL 48(SP), CX
XORL 40(SP), CX
ROLL $0x01, CX
MOVL CX, 40(SP)
MOVL R13, R12
ROLL $0x05, R12
MOVL R11, R14
XORL R9, R14
XORL R10, R14
ADDL R14, R12
ADDL R8, R12
ADDL $0xca62c1d6, R12
ADDL CX, R12
ROLL $0x1e, R11
// Round 75.
MOVL 32(SP), CX
XORL 12(SP), CX
XORL 52(SP), CX
XORL 44(SP), CX
ROLL $0x01, CX
MOVL CX, 44(SP)
MOVL R12, R8
ROLL $0x05, R8
MOVL R13, R14
XORL R11, R14
XORL R9, R14
ADDL R14, R8
ADDL R10, R8
ADDL $0xca62c1d6, R8
ADDL CX, R8
ROLL $0x1e, R13
// Round 76.
MOVL 36(SP), CX
XORL 16(SP), CX
XORL 56(SP), CX
XORL 48(SP), CX
ROLL $0x01, CX
MOVL CX, 48(SP)
MOVL R8, R10
ROLL $0x05, R10
MOVL R12, R14
XORL R13, R14
XORL R11, R14
ADDL R14, R10
ADDL R9, R10
ADDL $0xca62c1d6, R10
ADDL CX, R10
ROLL $0x1e, R12
// Round 77.
MOVL 40(SP), CX
XORL 20(SP), CX
XORL 60(SP), CX
XORL 52(SP), CX
ROLL $0x01, CX
MOVL CX, 52(SP)
MOVL R10, R9
ROLL $0x05, R9
MOVL R8, R14
XORL R12, R14
XORL R13, R14
ADDL R14, R9
ADDL R11, R9
ADDL $0xca62c1d6, R9
ADDL CX, R9
ROLL $0x1e, R8
// Round 78.
MOVL 44(SP), CX
XORL 24(SP), CX
XORL (SP), CX
XORL 56(SP), CX
ROLL $0x01, CX
MOVL CX, 56(SP)
MOVL R9, R11
ROLL $0x05, R11
MOVL R10, R14
XORL R8, R14
XORL R12, R14
ADDL R14, R11
ADDL R13, R11
ADDL $0xca62c1d6, R11
ADDL CX, R11
ROLL $0x1e, R10
// Round 79.
MOVL 48(SP), CX
XORL 28(SP), CX
XORL 4(SP), CX
XORL 60(SP), CX
ROLL $0x01, CX
MOVL CX, 60(SP)
MOVL R11, R13
ROLL $0x05, R13
MOVL R9, R14
XORL R10, R14
XORL R8, R14
ADDL R14, R13
ADDL R12, R13
ADDL $0xca62c1d6, R13
ADDL CX, R13
ROLL $0x1e, R9
// Final add.
ADDL R13, DX
ADDL R11, BX
ADDL R9, BP
ADDL R10, SI
ADDL R8, DI
// Store results back.
MOVL DX, (AX)
MOVL BX, 4(AX)
MOVL BP, 8(AX)
MOVL SI, 12(AX)
MOVL DI, 16(AX)
RET