aboutsummaryrefslogtreecommitdiff
path: root/sys/crypto/openssl/amd64/keccak1600-x86_64.S
diff options
context:
space:
mode:
Diffstat (limited to 'sys/crypto/openssl/amd64/keccak1600-x86_64.S')
-rw-r--r--sys/crypto/openssl/amd64/keccak1600-x86_64.S15
1 files changed, 9 insertions, 6 deletions
diff --git a/sys/crypto/openssl/amd64/keccak1600-x86_64.S b/sys/crypto/openssl/amd64/keccak1600-x86_64.S
index c1ef7d098bdf..21ced52ca105 100644
--- a/sys/crypto/openssl/amd64/keccak1600-x86_64.S
+++ b/sys/crypto/openssl/amd64/keccak1600-x86_64.S
@@ -448,10 +448,12 @@ SHA3_squeeze:
.cfi_offset %r14,-32
shrq $3,%rcx
- movq %rdi,%r8
+ movq %rdi,%r9
movq %rsi,%r12
movq %rdx,%r13
movq %rcx,%r14
+ btl $0,%r8d
+ jc .Lnext_block
jmp .Loop_squeeze
.align 32
@@ -459,8 +461,8 @@ SHA3_squeeze:
cmpq $8,%r13
jb .Ltail_squeeze
- movq (%r8),%rax
- leaq 8(%r8),%r8
+ movq (%r9),%rax
+ leaq 8(%r9),%r9
movq %rax,(%r12)
leaq 8(%r12),%r12
subq $8,%r13
@@ -468,14 +470,14 @@ SHA3_squeeze:
subq $1,%rcx
jnz .Loop_squeeze
-
+.Lnext_block:
call KeccakF1600
- movq %rdi,%r8
+ movq %rdi,%r9
movq %r14,%rcx
jmp .Loop_squeeze
.Ltail_squeeze:
- movq %r8,%rsi
+ movq %r9,%rsi
movq %r12,%rdi
movq %r13,%rcx
.byte 0xf3,0xa4
@@ -493,6 +495,7 @@ SHA3_squeeze:
.byte 0xf3,0xc3
.cfi_endproc
.size SHA3_squeeze,.-SHA3_squeeze
+.section .rodata
.align 256
.quad 0,0,0,0,0,0,0,0
.type iotas,@object