Module Name: src
Committed By: christos
Date: Sun Mar 4 04:00:45 UTC 2018
Added Files:
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha: Makefile
alpha-mont.S alphacpuid.S asm.h crypto.inc ghash-alpha.S modes.inc
regdef.h sha.inc sha1-alpha.S
Log Message:
Alpha Stuff
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/Makefile \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alpha-mont.S \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alphacpuid.S \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/asm.h \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/crypto.inc \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/ghash-alpha.S \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/modes.inc \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/regdef.h \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha.inc \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha1-alpha.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Added files:
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/Makefile
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/Makefile:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/Makefile Sat Mar 3 23:00:45 2018
@@ -0,0 +1,15 @@
+# $NetBSD: Makefile,v 1.1 2018/03/04 04:00:45 christos Exp $
+
+.include "bsd.own.mk"
+
+CRYPTODIST=${NETBSDSRCDIR}/crypto
+.include "${NETBSDSRCDIR}/crypto/Makefile.openssl"
+
+regen:
+ for i in $$(find ${OPENSSLSRC} -name \*alpha\*.pl); do \
+ case $$i in \
+ (*) perl -I${OPENSSLSRC}/crypto/perlasm \
+ -I${OPENSSLSRC}/crypto/bn/asm $$i linux /dev/stdout \
+ > $$(basename $$i .pl).S;; \
+ esac; \
+ done
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alpha-mont.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alpha-mont.S:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alpha-mont.S Sat Mar 3 23:00:45 2018
@@ -0,0 +1,274 @@
+#ifdef __linux__
+#include <asm/regdef.h>
+#else
+#include <asm.h>
+#include <regdef.h>
+#endif
+
+.text
+
+.set noat
+.set noreorder
+
+.globl bn_mul_mont
+.align 5
+.ent bn_mul_mont
+bn_mul_mont:
+ lda sp,-48(sp)
+ stq ra,0(sp)
+ stq s3,8(sp)
+ stq s4,16(sp)
+ stq s5,24(sp)
+ stq fp,32(sp)
+ mov sp,fp
+ .mask 0x0400f000,-48
+ .frame fp,48,ra
+ .prologue 0
+
+ .align 4
+ .set reorder
+ sextl a5,a5
+ mov 0,v0
+ cmplt a5,4,AT
+ bne AT,.Lexit
+
+ ldq t1,0(a1) # ap[0]
+ s8addq a5,16,AT
+ ldq t4,8(a1)
+ subq sp,AT,sp
+ ldq t5,0(a2) # bp[0]
+ lda AT,-4096(zero) # mov -4096,AT
+ ldq a4,0(a4)
+ and sp,AT,sp
+
+ mulq t1,t5,t0
+ ldq t3,0(a3) # np[0]
+ umulh t1,t5,t1
+ ldq t6,8(a3)
+
+ mulq t0,a4,s5
+
+ mulq t3,s5,t2
+ umulh t3,s5,t3
+
+ addq t2,t0,t2
+ cmpult t2,t0,AT
+ addq t3,AT,t3
+
+ mulq t4,t5,t8
+ mov 2,s4
+ umulh t4,t5,t9
+ mov sp,t7
+
+ mulq t6,s5,t10
+ s8addq s4,a1,t4
+ umulh t6,s5,t11
+ s8addq s4,a3,t6
+.align 4
+.L1st:
+ .set noreorder
+ ldq t4,0(t4)
+ addl s4,1,s4
+ ldq t6,0(t6)
+ lda t7,8(t7)
+
+ addq t8,t1,t0
+ mulq t4,t5,t8
+ cmpult t0,t1,AT
+ addq t10,t3,t2
+
+ mulq t6,s5,t10
+ addq t9,AT,t1
+ cmpult t2,t3,v0
+ cmplt s4,a5,t12
+
+ umulh t4,t5,t9
+ addq t11,v0,t3
+ addq t2,t0,t2
+ s8addq s4,a1,t4
+
+ umulh t6,s5,t11
+ cmpult t2,t0,v0
+ addq t3,v0,t3
+ s8addq s4,a3,t6
+
+ stq t2,-8(t7)
+ nop
+ unop
+ bne t12,.L1st
+ .set reorder
+
+ addq t8,t1,t0
+ addq t10,t3,t2
+ cmpult t0,t1,AT
+ cmpult t2,t3,v0
+ addq t9,AT,t1
+ addq t11,v0,t3
+
+ addq t2,t0,t2
+ cmpult t2,t0,v0
+ addq t3,v0,t3
+
+ stq t2,0(t7)
+
+ addq t3,t1,t3
+ cmpult t3,t1,AT
+ stq t3,8(t7)
+ stq AT,16(t7)
+
+ mov 1,s3
+.align 4
+.Louter:
+ s8addq s3,a2,t5
+ ldq t1,0(a1)
+ ldq t4,8(a1)
+ ldq t5,0(t5)
+ ldq t3,0(a3)
+ ldq t6,8(a3)
+ ldq t12,0(sp)
+
+ mulq t1,t5,t0
+ umulh t1,t5,t1
+
+ addq t0,t12,t0
+ cmpult t0,t12,AT
+ addq t1,AT,t1
+
+ mulq t0,a4,s5
+
+ mulq t3,s5,t2
+ umulh t3,s5,t3
+
+ addq t2,t0,t2
+ cmpult t2,t0,AT
+ mov 2,s4
+ addq t3,AT,t3
+
+ mulq t4,t5,t8
+ mov sp,t7
+ umulh t4,t5,t9
+
+ mulq t6,s5,t10
+ s8addq s4,a1,t4
+ umulh t6,s5,t11
+.align 4
+.Linner:
+ .set noreorder
+ ldq t12,8(t7) #L0
+ nop #U1
+ ldq t4,0(t4) #L1
+ s8addq s4,a3,t6 #U0
+
+ ldq t6,0(t6) #L0
+ nop #U1
+ addq t8,t1,t0 #L1
+ lda t7,8(t7)
+
+ mulq t4,t5,t8 #U1
+ cmpult t0,t1,AT #L0
+ addq t10,t3,t2 #L1
+ addl s4,1,s4
+
+ mulq t6,s5,t10 #U1
+ addq t9,AT,t1 #L0
+ addq t0,t12,t0 #L1
+ cmpult t2,t3,v0 #U0
+
+ umulh t4,t5,t9 #U1
+ cmpult t0,t12,AT #L0
+ addq t2,t0,t2 #L1
+ addq t11,v0,t3 #U0
+
+ umulh t6,s5,t11 #U1
+ s8addq s4,a1,t4 #L0
+ cmpult t2,t0,v0 #L1
+ cmplt s4,a5,t12 #U0 # borrow t12
+
+ addq t1,AT,t1 #L0
+ addq t3,v0,t3 #U1
+ stq t2,-8(t7) #L1
+ bne t12,.Linner #U0
+ .set reorder
+
+ ldq t12,8(t7)
+ addq t8,t1,t0
+ addq t10,t3,t2
+ cmpult t0,t1,AT
+ cmpult t2,t3,v0
+ addq t9,AT,t1
+ addq t11,v0,t3
+
+ addq t0,t12,t0
+ cmpult t0,t12,AT
+ addq t1,AT,t1
+
+ ldq t12,16(t7)
+ addq t2,t0,s4
+ cmpult s4,t0,v0
+ addq t3,v0,t3
+
+ addq t3,t1,t2
+ stq s4,0(t7)
+ cmpult t2,t1,t3
+ addq t2,t12,t2
+ cmpult t2,t12,AT
+ addl s3,1,s3
+ addq t3,AT,t3
+ stq t2,8(t7)
+ cmplt s3,a5,t12 # borrow t12
+ stq t3,16(t7)
+ bne t12,.Louter
+
+ s8addq a5,sp,t12 # &tp[num]
+ mov a0,a2 # put rp aside
+ mov sp,t7
+ mov sp,a1
+ mov 0,t1 # clear borrow bit
+
+.align 4
+.Lsub: ldq t0,0(t7)
+ ldq t2,0(a3)
+ lda t7,8(t7)
+ lda a3,8(a3)
+ subq t0,t2,t2 # tp[i]-np[i]
+ cmpult t0,t2,AT
+ subq t2,t1,t0
+ cmpult t2,t0,t1
+ or t1,AT,t1
+ stq t0,0(a0)
+ cmpult t7,t12,v0
+ lda a0,8(a0)
+ bne v0,.Lsub
+
+ subq t3,t1,t1 # handle upmost overflow bit
+ mov sp,t7
+ mov a2,a0 # restore rp
+
+ and sp,t1,a1
+ bic a2,t1,a2
+ bis a2,a1,a1 # ap=borrow?tp:rp
+
+.align 4
+.Lcopy: ldq t4,0(a1) # copy or in-place refresh
+ lda t7,8(t7)
+ lda a0,8(a0)
+ lda a1,8(a1)
+ stq zero,-8(t7) # zap tp
+ cmpult t7,t12,AT
+ stq t4,-8(a0)
+ bne AT,.Lcopy
+ mov 1,v0
+
+.Lexit:
+ .set noreorder
+ mov fp,sp
+ /*ldq ra,0(sp)*/
+ ldq s3,8(sp)
+ ldq s4,16(sp)
+ ldq s5,24(sp)
+ ldq fp,32(sp)
+ lda sp,48(sp)
+ ret (ra)
+.end bn_mul_mont
+.ascii "Montgomery Multiplication for Alpha, CRYPTOGAMS by <[email protected]>"
+.align 2
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alphacpuid.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alphacpuid.S:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alphacpuid.S Sat Mar 3 23:00:45 2018
@@ -0,0 +1,232 @@
+.text
+
+.set noat
+
+.globl OPENSSL_cpuid_setup
+.ent OPENSSL_cpuid_setup
+OPENSSL_cpuid_setup:
+ .frame $30,0,$26
+ .prologue 0
+ ret ($26)
+.end OPENSSL_cpuid_setup
+
+.globl OPENSSL_wipe_cpu
+.ent OPENSSL_wipe_cpu
+OPENSSL_wipe_cpu:
+ .frame $30,0,$26
+ .prologue 0
+ clr $1
+ clr $2
+ clr $3
+ clr $4
+ clr $5
+ clr $6
+ clr $7
+ clr $8
+ clr $16
+ clr $17
+ clr $18
+ clr $19
+ clr $20
+ clr $21
+ clr $22
+ clr $23
+ clr $24
+ clr $25
+ clr $27
+ clr $at
+ clr $29
+ fclr $f0
+ fclr $f1
+ fclr $f10
+ fclr $f11
+ fclr $f12
+ fclr $f13
+ fclr $f14
+ fclr $f15
+ fclr $f16
+ fclr $f17
+ fclr $f18
+ fclr $f19
+ fclr $f20
+ fclr $f21
+ fclr $f22
+ fclr $f23
+ fclr $f24
+ fclr $f25
+ fclr $f26
+ fclr $f27
+ fclr $f28
+ fclr $f29
+ fclr $f30
+ mov $sp,$0
+ ret ($26)
+.end OPENSSL_wipe_cpu
+
+.globl OPENSSL_atomic_add
+.ent OPENSSL_atomic_add
+OPENSSL_atomic_add:
+ .frame $30,0,$26
+ .prologue 0
+1: ldl_l $0,0($16)
+ addl $0,$17,$1
+ stl_c $1,0($16)
+ beq $1,1b
+ addl $0,$17,$0
+ ret ($26)
+.end OPENSSL_atomic_add
+
+.globl OPENSSL_rdtsc
+.ent OPENSSL_rdtsc
+OPENSSL_rdtsc:
+ .frame $30,0,$26
+ .prologue 0
+ rpcc $0
+ ret ($26)
+.end OPENSSL_rdtsc
+
+.globl OPENSSL_cleanse
+.ent OPENSSL_cleanse
+OPENSSL_cleanse:
+ .frame $30,0,$26
+ .prologue 0
+ beq $17,.Ldone
+ and $16,7,$0
+ bic $17,7,$at
+ beq $at,.Little
+ beq $0,.Laligned
+
+.Little:
+ subq $0,8,$0
+ ldq_u $1,0($16)
+ mov $16,$2
+.Lalign:
+ mskbl $1,$16,$1
+ lda $16,1($16)
+ subq $17,1,$17
+ addq $0,1,$0
+ beq $17,.Lout
+ bne $0,.Lalign
+.Lout: stq_u $1,0($2)
+ beq $17,.Ldone
+ bic $17,7,$at
+ beq $at,.Little
+
+.Laligned:
+ stq $31,0($16)
+ subq $17,8,$17
+ lda $16,8($16)
+ bic $17,7,$at
+ bne $at,.Laligned
+ bne $17,.Little
+.Ldone: ret ($26)
+.end OPENSSL_cleanse
+
+.globl CRYPTO_memcmp
+.ent CRYPTO_memcmp
+CRYPTO_memcmp:
+ .frame $30,0,$26
+ .prologue 0
+ xor $0,$0,$0
+ beq $18,.Lno_data
+
+ xor $1,$1,$1
+ nop
+.Loop_cmp:
+ ldq_u $2,0($16)
+ subq $18,1,$18
+ ldq_u $3,0($17)
+ extbl $2,$16,$2
+ lda $16,1($16)
+ extbl $3,$17,$3
+ lda $17,1($17)
+ xor $3,$2,$2
+ or $2,$0,$0
+ bne $18,.Loop_cmp
+
+ subq $31,$0,$0
+ srl $0,63,$0
+.Lno_data:
+ ret ($26)
+.end CRYPTO_memcmp
+.globl OPENSSL_instrument_bus
+.ent OPENSSL_instrument_bus
+OPENSSL_instrument_bus:
+ .frame $30,0,$26
+ .prologue 0
+ mov $17,$0
+
+ rpcc $20
+ mov 0,$21
+
+ ecb ($16)
+ ldl_l $19,0($16)
+ addl $21,$19,$19
+ mov $19,$21
+ stl_c $19,0($16)
+ stl $21,0($16)
+
+.Loop: rpcc $19
+ subq $19,$20,$21
+ mov $19,$20
+
+ ecb ($16)
+ ldl_l $19,0($16)
+ addl $21,$19,$19
+ mov $19,$21
+ stl_c $19,0($16)
+ stl $21,0($16)
+
+ subl $17,1,$17
+ lda $16,4($16)
+ bne $17,.Loop
+
+ ret ($26)
+.end OPENSSL_instrument_bus
+
+.globl OPENSSL_instrument_bus2
+.ent OPENSSL_instrument_bus2
+OPENSSL_instrument_bus2:
+ .frame $30,0,$26
+ .prologue 0
+ mov $17,$0
+
+ rpcc $20
+ mov 0,$21
+
+ ecb ($16)
+ ldl_l $19,0($16)
+ addl $21,$19,$19
+ mov $19,$21
+ stl_c $19,0($16)
+ stl $21,0($16)
+
+ rpcc $19
+ subq $19,$20,$21
+ mov $19,$20
+ mov $21,$22
+.Loop2:
+ ecb ($16)
+ ldl_l $19,0($16)
+ addl $21,$19,$19
+ mov $19,$21
+ stl_c $19,0($16)
+ stl $21,0($16)
+
+ subl $18,1,$18
+ beq $18,.Ldone2
+
+ rpcc $19
+ subq $19,$20,$21
+ mov $19,$20
+ subq $22,$21,$19
+ mov $21,$22
+ cmovne $19,1,$19
+ subl $17,$19,$17
+ s4addq $19,$16,$16
+ bne $17,.Loop2
+
+.Ldone2:
+ subl $0,$17,$0
+ ret ($26)
+.end OPENSSL_instrument_bus2
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/crypto.inc
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/crypto.inc:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/crypto.inc Sat Mar 3 23:00:45 2018
@@ -0,0 +1,10 @@
+.PATH.S: ${.PARSEDIR}
+
+ASMDIR:=${.PARSEDIR}
+
+CPUID_SRCS += alpha-mont.S alphacpuid.S
+CPUID = yes
+CPPFLAGS += -DOPENSSL_BN_ASM_MONT -I${ASMDIR}
+
+.include "../../crypto.inc"
+
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/ghash-alpha.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/ghash-alpha.S:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/ghash-alpha.S Sat Mar 3 23:00:45 2018
@@ -0,0 +1,576 @@
+#ifdef __linux__
+#include <asm/regdef.h>
+#else
+#include <asm.h>
+#include <regdef.h>
+#endif
+
+.text
+
+.set noat
+.set noreorder
+.globl gcm_gmult_4bit
+.align 4
+.ent gcm_gmult_4bit
+gcm_gmult_4bit:
+ .frame sp,0,ra
+ .prologue 0
+
+ ldq t11,8(a0)
+ ldq t10,0(a0)
+
+ bsr t0,picmeup
+ nop
+.align 4
+ extbl t11,7,a4
+ and a4,0xf0,a5
+ sll a4,4,a4
+ and a4,0xf0,a4
+
+ addq a4,a1,a4
+ ldq t9,8(a4)
+ addq a5,a1,a5
+ ldq t8,0(a4)
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ lda v0,6(zero)
+ extbl t11,6,a4
+
+ ldq t6,8(a5)
+ s8addq t12,AT,t12
+ ldq t5,0(a5)
+ srl t9,4,t9
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+ and a4,0xf0,a5
+
+ xor t6,t9,t9
+ sll a4,4,a4
+ xor t5,t8,t8
+ and a4,0xf0,a4
+
+ addq a4,a1,a4
+ ldq t4,8(a4)
+ addq a5,a1,a5
+ ldq t3,0(a4)
+
+.Looplo1:
+ and t9,0x0f,t12
+ sll t8,60,t0
+ subq v0,1,v0
+ srl t9,4,t9
+
+ ldq t6,8(a5)
+ xor t7,t8,t8
+ ldq t5,0(a5)
+ s8addq t12,AT,t12
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+ extbl t11,v0,a4
+
+ and a4,0xf0,a5
+ xor t3,t8,t8
+ xor t4,t9,t9
+ sll a4,4,a4
+
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ and a4,0xf0,a4
+ srl t9,4,t9
+
+ s8addq t12,AT,t12
+ xor t7,t8,t8
+ addq a4,a1,a4
+ addq a5,a1,a5
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ ldq t4,8(a4)
+ xor t0,t9,t9
+
+ xor t6,t9,t9
+ xor t5,t8,t8
+ ldq t3,0(a4)
+ bne v0,.Looplo1
+
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ lda v0,7(zero)
+ srl t9,4,t9
+
+ ldq t6,8(a5)
+ xor t7,t8,t8
+ ldq t5,0(a5)
+ s8addq t12,AT,t12
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+ extbl t10,v0,a4
+
+ and a4,0xf0,a5
+ xor t3,t8,t8
+ xor t4,t9,t9
+ sll a4,4,a4
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ and a4,0xf0,a4
+ srl t9,4,t9
+
+ s8addq t12,AT,t12
+ xor t7,t8,t8
+ addq a4,a1,a4
+ addq a5,a1,a5
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ ldq t4,8(a4)
+ xor t0,t9,t9
+
+ xor t6,t9,t9
+ xor t5,t8,t8
+ ldq t3,0(a4)
+ unop
+
+
+.Loophi1:
+ and t9,0x0f,t12
+ sll t8,60,t0
+ subq v0,1,v0
+ srl t9,4,t9
+
+ ldq t6,8(a5)
+ xor t7,t8,t8
+ ldq t5,0(a5)
+ s8addq t12,AT,t12
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+ extbl t10,v0,a4
+
+ and a4,0xf0,a5
+ xor t3,t8,t8
+ xor t4,t9,t9
+ sll a4,4,a4
+
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ and a4,0xf0,a4
+ srl t9,4,t9
+
+ s8addq t12,AT,t12
+ xor t7,t8,t8
+ addq a4,a1,a4
+ addq a5,a1,a5
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ ldq t4,8(a4)
+ xor t0,t9,t9
+
+ xor t6,t9,t9
+ xor t5,t8,t8
+ ldq t3,0(a4)
+ bne v0,.Loophi1
+
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ srl t9,4,t9
+
+ ldq t6,8(a5)
+ xor t7,t8,t8
+ ldq t5,0(a5)
+ s8addq t12,AT,t12
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+
+ xor t4,t9,t9
+ xor t3,t8,t8
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ srl t9,4,t9
+
+ s8addq t12,AT,t12
+ xor t7,t8,t8
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t6,t9,t9
+ xor t5,t8,t8
+ xor t0,t9,t9
+ xor t7,t8,t8
+ srl t9,24,t0 # byte swap
+ srl t9,8,t1
+
+ sll t9,8,t2
+ sll t9,24,t9
+ zapnot t0,0x11,t0
+ zapnot t1,0x22,t1
+
+ zapnot t9,0x88,t9
+ or t0,t1,t0
+ zapnot t2,0x44,t2
+
+ or t9,t0,t9
+ srl t8,24,t0
+ srl t8,8,t1
+
+ or t9,t2,t9
+ sll t8,8,t2
+ sll t8,24,t8
+
+ srl t9,32,t11
+ sll t9,32,t9
+
+ zapnot t0,0x11,t0
+ zapnot t1,0x22,t1
+ or t9,t11,t11
+
+ zapnot t8,0x88,t8
+ or t0,t1,t0
+ zapnot t2,0x44,t2
+
+ or t8,t0,t8
+ or t8,t2,t8
+
+ srl t8,32,t10
+ sll t8,32,t8
+
+ or t8,t10,t10
+ stq t11,8(a0)
+ stq t10,0(a0)
+
+ ret (ra)
+.end gcm_gmult_4bit
+.globl gcm_ghash_4bit
+.align 4
+.ent gcm_ghash_4bit
+gcm_ghash_4bit:
+ lda sp,-32(sp)
+ stq ra,0(sp)
+ stq s0,8(sp)
+ stq s1,16(sp)
+ .mask 0x04000600,-32
+ .frame sp,32,ra
+ .prologue 0
+
+ ldq_u s0,0(a2)
+ ldq_u t3,7(a2)
+ ldq_u s1,8(a2)
+ ldq_u t4,15(a2)
+ ldq t10,0(a0)
+ ldq t11,8(a0)
+
+ bsr t0,picmeup
+ nop
+
+.Louter:
+ extql s0,a2,s0
+ extqh t3,a2,t3
+ or s0,t3,s0
+ lda a2,16(a2)
+
+ extql s1,a2,s1
+ extqh t4,a2,t4
+ or s1,t4,s1
+ subq a3,16,a3
+
+ xor t11,s1,t11
+ xor t10,s0,t10
+.align 4
+ extbl t11,7,a4
+ and a4,0xf0,a5
+ sll a4,4,a4
+ and a4,0xf0,a4
+
+ addq a4,a1,a4
+ ldq t9,8(a4)
+ addq a5,a1,a5
+ ldq t8,0(a4)
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ lda v0,6(zero)
+ extbl t11,6,a4
+
+ ldq t6,8(a5)
+ s8addq t12,AT,t12
+ ldq t5,0(a5)
+ srl t9,4,t9
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+ and a4,0xf0,a5
+
+ xor t6,t9,t9
+ sll a4,4,a4
+ xor t5,t8,t8
+ and a4,0xf0,a4
+
+ addq a4,a1,a4
+ ldq t4,8(a4)
+ addq a5,a1,a5
+ ldq t3,0(a4)
+
+.Looplo2:
+ and t9,0x0f,t12
+ sll t8,60,t0
+ subq v0,1,v0
+ srl t9,4,t9
+
+ ldq t6,8(a5)
+ xor t7,t8,t8
+ ldq t5,0(a5)
+ s8addq t12,AT,t12
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+ extbl t11,v0,a4
+
+ and a4,0xf0,a5
+ xor t3,t8,t8
+ xor t4,t9,t9
+ sll a4,4,a4
+
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ and a4,0xf0,a4
+ srl t9,4,t9
+
+ s8addq t12,AT,t12
+ xor t7,t8,t8
+ addq a4,a1,a4
+ addq a5,a1,a5
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ ldq t4,8(a4)
+ xor t0,t9,t9
+
+ xor t6,t9,t9
+ xor t5,t8,t8
+ ldq t3,0(a4)
+ bne v0,.Looplo2
+
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ lda v0,7(zero)
+ srl t9,4,t9
+
+ ldq t6,8(a5)
+ xor t7,t8,t8
+ ldq t5,0(a5)
+ s8addq t12,AT,t12
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+ extbl t10,v0,a4
+
+ and a4,0xf0,a5
+ xor t3,t8,t8
+ xor t4,t9,t9
+ sll a4,4,a4
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ and a4,0xf0,a4
+ srl t9,4,t9
+
+ s8addq t12,AT,t12
+ xor t7,t8,t8
+ addq a4,a1,a4
+ addq a5,a1,a5
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ ldq t4,8(a4)
+ xor t0,t9,t9
+
+ xor t6,t9,t9
+ xor t5,t8,t8
+ ldq t3,0(a4)
+ unop
+
+
+.Loophi2:
+ and t9,0x0f,t12
+ sll t8,60,t0
+ subq v0,1,v0
+ srl t9,4,t9
+
+ ldq t6,8(a5)
+ xor t7,t8,t8
+ ldq t5,0(a5)
+ s8addq t12,AT,t12
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+ extbl t10,v0,a4
+
+ and a4,0xf0,a5
+ xor t3,t8,t8
+ xor t4,t9,t9
+ sll a4,4,a4
+
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ and a4,0xf0,a4
+ srl t9,4,t9
+
+ s8addq t12,AT,t12
+ xor t7,t8,t8
+ addq a4,a1,a4
+ addq a5,a1,a5
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ ldq t4,8(a4)
+ xor t0,t9,t9
+
+ xor t6,t9,t9
+ xor t5,t8,t8
+ ldq t3,0(a4)
+ bne v0,.Loophi2
+
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ srl t9,4,t9
+
+ ldq t6,8(a5)
+ xor t7,t8,t8
+ ldq t5,0(a5)
+ s8addq t12,AT,t12
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t0,t9,t9
+
+ xor t4,t9,t9
+ xor t3,t8,t8
+
+ and t9,0x0f,t12
+ sll t8,60,t0
+ srl t9,4,t9
+
+ s8addq t12,AT,t12
+ xor t7,t8,t8
+
+ ldq t7,0(t12)
+ srl t8,4,t8
+ xor t6,t9,t9
+ xor t5,t8,t8
+ xor t0,t9,t9
+ xor t7,t8,t8
+ srl t9,24,t0 # byte swap
+ srl t9,8,t1
+
+ sll t9,8,t2
+ sll t9,24,t9
+ zapnot t0,0x11,t0
+ zapnot t1,0x22,t1
+
+ zapnot t9,0x88,t9
+ or t0,t1,t0
+ zapnot t2,0x44,t2
+
+ or t9,t0,t9
+ srl t8,24,t0
+ srl t8,8,t1
+
+ or t9,t2,t9
+ sll t8,8,t2
+ sll t8,24,t8
+
+ srl t9,32,t11
+ sll t9,32,t9
+ beq a3,.Ldone
+
+ zapnot t0,0x11,t0
+ zapnot t1,0x22,t1
+ or t9,t11,t11
+ ldq_u s0,0(a2)
+
+ zapnot t8,0x88,t8
+ or t0,t1,t0
+ zapnot t2,0x44,t2
+ ldq_u t3,7(a2)
+
+ or t8,t0,t8
+ or t8,t2,t8
+ ldq_u s1,8(a2)
+ ldq_u t4,15(a2)
+
+ srl t8,32,t10
+ sll t8,32,t8
+
+ or t8,t10,t10
+ br zero,.Louter
+
+.Ldone:
+ zapnot t0,0x11,t0
+ zapnot t1,0x22,t1
+ or t9,t11,t11
+
+ zapnot t8,0x88,t8
+ or t0,t1,t0
+ zapnot t2,0x44,t2
+
+ or t8,t0,t8
+ or t8,t2,t8
+
+ srl t8,32,t10
+ sll t8,32,t8
+
+ or t8,t10,t10
+
+ stq t11,8(a0)
+ stq t10,0(a0)
+
+ .set noreorder
+ /*ldq ra,0(sp)*/
+ ldq s0,8(sp)
+ ldq s1,16(sp)
+ lda sp,32(sp)
+ ret (ra)
+.end gcm_ghash_4bit
+
+.align 4
+.ent picmeup
+picmeup:
+ .frame sp,0,t0
+ .prologue 0
+ br AT,.Lpic
+.Lpic: lda AT,12(AT)
+ ret (t0)
+.end picmeup
+ nop
+rem_4bit:
+ .long 0,0x0000<<16, 0,0x1C20<<16, 0,0x3840<<16, 0,0x2460<<16
+ .long 0,0x7080<<16, 0,0x6CA0<<16, 0,0x48C0<<16, 0,0x54E0<<16
+ .long 0,0xE100<<16, 0,0xFD20<<16, 0,0xD940<<16, 0,0xC560<<16
+ .long 0,0x9180<<16, 0,0x8DA0<<16, 0,0xA9C0<<16, 0,0xB5E0<<16
+.ascii "GHASH for Alpha, CRYPTOGAMS by <[email protected]>"
+.align 4
+
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/modes.inc
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/modes.inc:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/modes.inc Sat Mar 3 23:00:45 2018
@@ -0,0 +1,6 @@
+.PATH.S: ${.PARSEDIR}
+
+MODES_SRCS += ghash-alpha.S
+MODESCPPFLAGS = -DGHASH_ASM
+
+.include "../../modes.inc"
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/regdef.h
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/regdef.h:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/regdef.h Sat Mar 3 23:00:45 2018
@@ -0,0 +1,49 @@
+#define v0 $0
+
+#define t0 $1
+#define t1 $2
+#define t2 $3
+#define t3 $4
+#define t4 $5
+#define t5 $6
+#define t6 $7
+#define t7 $8
+
+#define s0 $9
+#define s1 $10
+#define s2 $11
+#define s3 $12
+#define s4 $13
+#define s5 $14
+#define s6 $15
+#define fp s6
+
+#define a0 $16
+#define a1 $17
+#define a2 $18
+#define a3 $19
+#define a4 $20
+#define a5 $21
+
+#define t8 $22
+#define t9 $23
+#define t10 $24
+#define t11 $25
+#define ra $26
+#define t12 $27
+
+#define pv t12
+#define AT $at
+#define gp $29
+#define sp $30
+#define zero $31
+
+#define ta t10
+#define tb t11
+#define tc t12
+#define td AT
+
+#define te a5
+#define tf a4
+#define tg a3
+#define th v0
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha.inc
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha.inc:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha.inc Sat Mar 3 23:00:45 2018
@@ -0,0 +1,6 @@
+.PATH.S: ${.PARSEDIR}
+
+SHA_SRCS = sha1-alpha.S
+SHACPPFLAGS = -DSHA1_ASM
+
+.include "../../sha.inc"
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha1-alpha.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha1-alpha.S:1.1
--- /dev/null Sat Mar 3 23:00:45 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha1-alpha.S Sat Mar 3 23:00:45 2018
@@ -0,0 +1,2175 @@
+#ifdef __linux__
+#include <asm/regdef.h>
+#else
+#include <asm.h>
+#include <regdef.h>
+#endif
+
+.text
+
+.set noat
+.set noreorder
+.globl sha1_block_data_order
+.align 5
+.ent sha1_block_data_order
+sha1_block_data_order:
+ lda sp,-64(sp)
+ stq ra,0(sp)
+ stq s0,8(sp)
+ stq s1,16(sp)
+ stq s2,24(sp)
+ stq s3,32(sp)
+ stq s4,40(sp)
+ stq s5,48(sp)
+ stq fp,56(sp)
+ .mask 0x0400fe00,-64
+ .frame sp,64,ra
+ .prologue 0
+
+ ldl a3,0(a0)
+ ldl a4,4(a0)
+ sll a2,6,a2
+ ldl a5,8(a0)
+ ldl t8,12(a0)
+ ldl t9,16(a0)
+ addq a1,a2,a2
+
+.Lloop:
+ .set noreorder
+ ldah AT,23170(zero)
+ zapnot a4,0xf,a4
+ lda AT,31129(AT) # K_00_19
+ ldq_u $0,0+0(a1)
+ ldq_u $1,0+7(a1)
+ ldq_u $2,(0+2)*4+0(a1)
+ ldq_u $3,(0+2)*4+7(a1)
+ extql $0,a1,$0
+ extqh $1,a1,$1
+
+ or $1,$0,$0 # pair of 32-bit values are fetched
+
+ srl $0,24,t10 # vectorized byte swap
+ srl $0,8,ra
+
+ sll $0,8,t12
+ sll $0,24,$0
+ zapnot t10,0x11,t10
+ zapnot ra,0x22,ra
+
+ zapnot $0,0x88,$0
+ or t10,ra,t10
+ zapnot t12,0x44,t12
+ sll a3,5,t11
+
+ or $0,t10,$0
+ addl AT,t9,t9
+ and a4,a5,ra
+ zapnot a3,0xf,a3
+
+ or $0,t12,$0
+ srl a3,27,t10
+ bic t8,a4,t12
+ sll a4,30,a4
+
+ extll $0,4,$1 # extract upper half
+ or ra,t12,ra
+ addl $0,t9,t9
+
+ addl t11,t9,t9
+ srl a4,32,t12
+ zapnot $0,0xf,$0
+
+ addl t10,t9,t9
+ addl ra,t9,t9
+ or t12,a4,a4
+ sll t9,5,t11
+ addl AT,t8,t8
+ and a3,a4,ra
+ zapnot t9,0xf,t9
+
+ srl t9,27,t10
+ addl $1,t8,t8
+ bic a5,a3,t12
+ sll a3,30,a3
+
+ or ra,t12,ra
+ addl t11,t8,t8
+ srl a3,32,t12
+ zapnot $1,0xf,$1
+
+ addl t10,t8,t8
+ addl ra,t8,t8
+ or t12,a3,a3
+ ldq_u $4,(2+2)*4+0(a1)
+ ldq_u $5,(2+2)*4+7(a1)
+ extql $2,a1,$2
+ extqh $3,a1,$3
+
+ or $3,$2,$2 # pair of 32-bit values are fetched
+
+ srl $2,24,t10 # vectorized byte swap
+ srl $2,8,ra
+
+ sll $2,8,t12
+ sll $2,24,$2
+ zapnot t10,0x11,t10
+ zapnot ra,0x22,ra
+
+ zapnot $2,0x88,$2
+ or t10,ra,t10
+ zapnot t12,0x44,t12
+ sll t8,5,t11
+
+ or $2,t10,$2
+ addl AT,a5,a5
+ and t9,a3,ra
+ zapnot t8,0xf,t8
+
+ or $2,t12,$2
+ srl t8,27,t10
+ bic a4,t9,t12
+ sll t9,30,t9
+
+ extll $2,4,$3 # extract upper half
+ or ra,t12,ra
+ addl $2,a5,a5
+
+ addl t11,a5,a5
+ srl t9,32,t12
+ zapnot $2,0xf,$2
+
+ addl t10,a5,a5
+ addl ra,a5,a5
+ or t12,t9,t9
+ sll a5,5,t11
+ addl AT,a4,a4
+ and t8,t9,ra
+ zapnot a5,0xf,a5
+
+ srl a5,27,t10
+ addl $3,a4,a4
+ bic a3,t8,t12
+ sll t8,30,t8
+
+ or ra,t12,ra
+ addl t11,a4,a4
+ srl t8,32,t12
+ zapnot $3,0xf,$3
+
+ addl t10,a4,a4
+ addl ra,a4,a4
+ or t12,t8,t8
+ ldq_u $6,(4+2)*4+0(a1)
+ ldq_u $7,(4+2)*4+7(a1)
+ extql $4,a1,$4
+ extqh $5,a1,$5
+
+ or $5,$4,$4 # pair of 32-bit values are fetched
+
+ srl $4,24,t10 # vectorized byte swap
+ srl $4,8,ra
+
+ sll $4,8,t12
+ sll $4,24,$4
+ zapnot t10,0x11,t10
+ zapnot ra,0x22,ra
+
+ zapnot $4,0x88,$4
+ or t10,ra,t10
+ zapnot t12,0x44,t12
+ sll a4,5,t11
+
+ or $4,t10,$4
+ addl AT,a3,a3
+ and a5,t8,ra
+ zapnot a4,0xf,a4
+
+ or $4,t12,$4
+ srl a4,27,t10
+ bic t9,a5,t12
+ sll a5,30,a5
+
+ extll $4,4,$5 # extract upper half
+ or ra,t12,ra
+ addl $4,a3,a3
+
+ addl t11,a3,a3
+ srl a5,32,t12
+ zapnot $4,0xf,$4
+
+ addl t10,a3,a3
+ addl ra,a3,a3
+ or t12,a5,a5
+ sll a3,5,t11
+ addl AT,t9,t9
+ and a4,a5,ra
+ zapnot a3,0xf,a3
+
+ srl a3,27,t10
+ addl $5,t9,t9
+ bic t8,a4,t12
+ sll a4,30,a4
+
+ or ra,t12,ra
+ addl t11,t9,t9
+ srl a4,32,t12
+ zapnot $5,0xf,$5
+
+ addl t10,t9,t9
+ addl ra,t9,t9
+ or t12,a4,a4
+ ldq_u $8,(6+2)*4+0(a1)
+ ldq_u $9,(6+2)*4+7(a1)
+ extql $6,a1,$6
+ extqh $7,a1,$7
+
+ or $7,$6,$6 # pair of 32-bit values are fetched
+
+ srl $6,24,t10 # vectorized byte swap
+ srl $6,8,ra
+
+ sll $6,8,t12
+ sll $6,24,$6
+ zapnot t10,0x11,t10
+ zapnot ra,0x22,ra
+
+ zapnot $6,0x88,$6
+ or t10,ra,t10
+ zapnot t12,0x44,t12
+ sll t9,5,t11
+
+ or $6,t10,$6
+ addl AT,t8,t8
+ and a3,a4,ra
+ zapnot t9,0xf,t9
+
+ or $6,t12,$6
+ srl t9,27,t10
+ bic a5,a3,t12
+ sll a3,30,a3
+
+ extll $6,4,$7 # extract upper half
+ or ra,t12,ra
+ addl $6,t8,t8
+
+ addl t11,t8,t8
+ srl a3,32,t12
+ zapnot $6,0xf,$6
+
+ addl t10,t8,t8
+ addl ra,t8,t8
+ or t12,a3,a3
+ sll t8,5,t11
+ addl AT,a5,a5
+ and t9,a3,ra
+ zapnot t8,0xf,t8
+
+ srl t8,27,t10
+ addl $7,a5,a5
+ bic a4,t9,t12
+ sll t9,30,t9
+
+ or ra,t12,ra
+ addl t11,a5,a5
+ srl t9,32,t12
+ zapnot $7,0xf,$7
+
+ addl t10,a5,a5
+ addl ra,a5,a5
+ or t12,t9,t9
+ ldq_u $10,(8+2)*4+0(a1)
+ ldq_u $11,(8+2)*4+7(a1)
+ extql $8,a1,$8
+ extqh $9,a1,$9
+
+ or $9,$8,$8 # pair of 32-bit values are fetched
+
+ srl $8,24,t10 # vectorized byte swap
+ srl $8,8,ra
+
+ sll $8,8,t12
+ sll $8,24,$8
+ zapnot t10,0x11,t10
+ zapnot ra,0x22,ra
+
+ zapnot $8,0x88,$8
+ or t10,ra,t10
+ zapnot t12,0x44,t12
+ sll a5,5,t11
+
+ or $8,t10,$8
+ addl AT,a4,a4
+ and t8,t9,ra
+ zapnot a5,0xf,a5
+
+ or $8,t12,$8
+ srl a5,27,t10
+ bic a3,t8,t12
+ sll t8,30,t8
+
+ extll $8,4,$9 # extract upper half
+ or ra,t12,ra
+ addl $8,a4,a4
+
+ addl t11,a4,a4
+ srl t8,32,t12
+ zapnot $8,0xf,$8
+
+ addl t10,a4,a4
+ addl ra,a4,a4
+ or t12,t8,t8
+ sll a4,5,t11
+ addl AT,a3,a3
+ and a5,t8,ra
+ zapnot a4,0xf,a4
+
+ srl a4,27,t10
+ addl $9,a3,a3
+ bic t9,a5,t12
+ sll a5,30,a5
+
+ or ra,t12,ra
+ addl t11,a3,a3
+ srl a5,32,t12
+ zapnot $9,0xf,$9
+
+ addl t10,a3,a3
+ addl ra,a3,a3
+ or t12,a5,a5
+ ldq_u $12,(10+2)*4+0(a1)
+ ldq_u $13,(10+2)*4+7(a1)
+ extql $10,a1,$10
+ extqh $11,a1,$11
+
+ or $11,$10,$10 # pair of 32-bit values are fetched
+
+ srl $10,24,t10 # vectorized byte swap
+ srl $10,8,ra
+
+ sll $10,8,t12
+ sll $10,24,$10
+ zapnot t10,0x11,t10
+ zapnot ra,0x22,ra
+
+ zapnot $10,0x88,$10
+ or t10,ra,t10
+ zapnot t12,0x44,t12
+ sll a3,5,t11
+
+ or $10,t10,$10
+ addl AT,t9,t9
+ and a4,a5,ra
+ zapnot a3,0xf,a3
+
+ or $10,t12,$10
+ srl a3,27,t10
+ bic t8,a4,t12
+ sll a4,30,a4
+
+ extll $10,4,$11 # extract upper half
+ or ra,t12,ra
+ addl $10,t9,t9
+
+ addl t11,t9,t9
+ srl a4,32,t12
+ zapnot $10,0xf,$10
+
+ addl t10,t9,t9
+ addl ra,t9,t9
+ or t12,a4,a4
+ sll t9,5,t11
+ addl AT,t8,t8
+ and a3,a4,ra
+ zapnot t9,0xf,t9
+
+ srl t9,27,t10
+ addl $11,t8,t8
+ bic a5,a3,t12
+ sll a3,30,a3
+
+ or ra,t12,ra
+ addl t11,t8,t8
+ srl a3,32,t12
+ zapnot $11,0xf,$11
+
+ addl t10,t8,t8
+ addl ra,t8,t8
+ or t12,a3,a3
+ ldq_u $14,(12+2)*4+0(a1)
+ ldq_u $15,(12+2)*4+7(a1)
+ extql $12,a1,$12
+ extqh $13,a1,$13
+
+ or $13,$12,$12 # pair of 32-bit values are fetched
+
+ srl $12,24,t10 # vectorized byte swap
+ srl $12,8,ra
+
+ sll $12,8,t12
+ sll $12,24,$12
+ zapnot t10,0x11,t10
+ zapnot ra,0x22,ra
+
+ zapnot $12,0x88,$12
+ or t10,ra,t10
+ zapnot t12,0x44,t12
+ sll t8,5,t11
+
+ or $12,t10,$12
+ addl AT,a5,a5
+ and t9,a3,ra
+ zapnot t8,0xf,t8
+
+ or $12,t12,$12
+ srl t8,27,t10
+ bic a4,t9,t12
+ sll t9,30,t9
+
+ extll $12,4,$13 # extract upper half
+ or ra,t12,ra
+ addl $12,a5,a5
+
+ addl t11,a5,a5
+ srl t9,32,t12
+ zapnot $12,0xf,$12
+
+ addl t10,a5,a5
+ addl ra,a5,a5
+ or t12,t9,t9
+ sll a5,5,t11
+ addl AT,a4,a4
+ and t8,t9,ra
+ zapnot a5,0xf,a5
+
+ srl a5,27,t10
+ addl $13,a4,a4
+ bic a3,t8,t12
+ sll t8,30,t8
+
+ or ra,t12,ra
+ addl t11,a4,a4
+ srl t8,32,t12
+ zapnot $13,0xf,$13
+
+ addl t10,a4,a4
+ addl ra,a4,a4
+ or t12,t8,t8
+ extql $14,a1,$14
+ extqh $15,a1,$15
+
+ or $15,$14,$14 # pair of 32-bit values are fetched
+
+ srl $14,24,t10 # vectorized byte swap
+ srl $14,8,ra
+
+ sll $14,8,t12
+ sll $14,24,$14
+ zapnot t10,0x11,t10
+ zapnot ra,0x22,ra
+
+ zapnot $14,0x88,$14
+ or t10,ra,t10
+ zapnot t12,0x44,t12
+ sll a4,5,t11
+
+ or $14,t10,$14
+ addl AT,a3,a3
+ and a5,t8,ra
+ zapnot a4,0xf,a4
+
+ or $14,t12,$14
+ srl a4,27,t10
+ bic t9,a5,t12
+ sll a5,30,a5
+
+ extll $14,4,$15 # extract upper half
+ or ra,t12,ra
+ addl $14,a3,a3
+
+ addl t11,a3,a3
+ srl a5,32,t12
+ zapnot $14,0xf,$14
+
+ addl t10,a3,a3
+ addl ra,a3,a3
+ or t12,a5,a5
+ sll a3,5,t11
+ addl AT,t9,t9
+ and a4,a5,ra
+ xor $2,$0,$0
+
+ zapnot a3,0xf,a3
+ addl $15,t9,t9
+ bic t8,a4,t12
+ xor $8,$0,$0
+
+ srl a3,27,t10
+ addl t11,t9,t9
+ or ra,t12,ra
+ xor $13,$0,$0
+
+ sll a4,30,a4
+ addl t10,t9,t9
+ srl $0,31,t11
+
+ addl ra,t9,t9
+ srl a4,32,t12
+ addl $0,$0,$0
+
+ or t12,a4,a4
+ zapnot $15,0xf,$15
+ or t11,$0,$0
+ sll t9,5,t11
+ addl AT,t8,t8
+ and a3,a4,ra
+ xor $3,$1,$1
+
+ zapnot t9,0xf,t9
+ addl $0,t8,t8
+ bic a5,a3,t12
+ xor $9,$1,$1
+
+ srl t9,27,t10
+ addl t11,t8,t8
+ or ra,t12,ra
+ xor $14,$1,$1
+
+ sll a3,30,a3
+ addl t10,t8,t8
+ srl $1,31,t11
+
+ addl ra,t8,t8
+ srl a3,32,t12
+ addl $1,$1,$1
+
+ or t12,a3,a3
+ zapnot $0,0xf,$0
+ or t11,$1,$1
+ sll t8,5,t11
+ addl AT,a5,a5
+ and t9,a3,ra
+ xor $4,$2,$2
+
+ zapnot t8,0xf,t8
+ addl $1,a5,a5
+ bic a4,t9,t12
+ xor $10,$2,$2
+
+ srl t8,27,t10
+ addl t11,a5,a5
+ or ra,t12,ra
+ xor $15,$2,$2
+
+ sll t9,30,t9
+ addl t10,a5,a5
+ srl $2,31,t11
+
+ addl ra,a5,a5
+ srl t9,32,t12
+ addl $2,$2,$2
+
+ or t12,t9,t9
+ zapnot $1,0xf,$1
+ or t11,$2,$2
+ sll a5,5,t11
+ addl AT,a4,a4
+ and t8,t9,ra
+ xor $5,$3,$3
+
+ zapnot a5,0xf,a5
+ addl $2,a4,a4
+ bic a3,t8,t12
+ xor $11,$3,$3
+
+ srl a5,27,t10
+ addl t11,a4,a4
+ or ra,t12,ra
+ xor $0,$3,$3
+
+ sll t8,30,t8
+ addl t10,a4,a4
+ srl $3,31,t11
+
+ addl ra,a4,a4
+ srl t8,32,t12
+ addl $3,$3,$3
+
+ or t12,t8,t8
+ zapnot $2,0xf,$2
+ or t11,$3,$3
+ sll a4,5,t11
+ addl AT,a3,a3
+ and a5,t8,ra
+ xor $6,$4,$4
+
+ zapnot a4,0xf,a4
+ addl $3,a3,a3
+ bic t9,a5,t12
+ xor $12,$4,$4
+
+ srl a4,27,t10
+ addl t11,a3,a3
+ or ra,t12,ra
+ xor $1,$4,$4
+
+ sll a5,30,a5
+ addl t10,a3,a3
+ srl $4,31,t11
+
+ addl ra,a3,a3
+ srl a5,32,t12
+ addl $4,$4,$4
+
+ or t12,a5,a5
+ zapnot $3,0xf,$3
+ or t11,$4,$4
+ ldah AT,28378(zero)
+ lda AT,-5215(AT) # K_20_39
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $7,$5,$5
+
+ sll a4,30,t12
+ addl t11,t9,t9
+ xor a4,a5,ra
+ xor $13,$5,$5
+
+ srl a4,2,a4
+ addl $4,t9,t9
+ xor t8,ra,ra
+ xor $2,$5,$5
+
+ srl $5,31,t11
+ addl ra,t9,t9
+ srl a3,27,t10
+ addl $5,$5,$5
+
+ or t12,a4,a4
+ addl t10,t9,t9
+ or t11,$5,$5
+ zapnot $4,0xf,$4
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $8,$6,$6
+
+ sll a3,30,t12
+ addl t11,t8,t8
+ xor a3,a4,ra
+ xor $14,$6,$6
+
+ srl a3,2,a3
+ addl $5,t8,t8
+ xor a5,ra,ra
+ xor $3,$6,$6
+
+ srl $6,31,t11
+ addl ra,t8,t8
+ srl t9,27,t10
+ addl $6,$6,$6
+
+ or t12,a3,a3
+ addl t10,t8,t8
+ or t11,$6,$6
+ zapnot $5,0xf,$5
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $9,$7,$7
+
+ sll t9,30,t12
+ addl t11,a5,a5
+ xor t9,a3,ra
+ xor $15,$7,$7
+
+ srl t9,2,t9
+ addl $6,a5,a5
+ xor a4,ra,ra
+ xor $4,$7,$7
+
+ srl $7,31,t11
+ addl ra,a5,a5
+ srl t8,27,t10
+ addl $7,$7,$7
+
+ or t12,t9,t9
+ addl t10,a5,a5
+ or t11,$7,$7
+ zapnot $6,0xf,$6
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $10,$8,$8
+
+ sll t8,30,t12
+ addl t11,a4,a4
+ xor t8,t9,ra
+ xor $0,$8,$8
+
+ srl t8,2,t8
+ addl $7,a4,a4
+ xor a3,ra,ra
+ xor $5,$8,$8
+
+ srl $8,31,t11
+ addl ra,a4,a4
+ srl a5,27,t10
+ addl $8,$8,$8
+
+ or t12,t8,t8
+ addl t10,a4,a4
+ or t11,$8,$8
+ zapnot $7,0xf,$7
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $11,$9,$9
+
+ sll a5,30,t12
+ addl t11,a3,a3
+ xor a5,t8,ra
+ xor $1,$9,$9
+
+ srl a5,2,a5
+ addl $8,a3,a3
+ xor t9,ra,ra
+ xor $6,$9,$9
+
+ srl $9,31,t11
+ addl ra,a3,a3
+ srl a4,27,t10
+ addl $9,$9,$9
+
+ or t12,a5,a5
+ addl t10,a3,a3
+ or t11,$9,$9
+ zapnot $8,0xf,$8
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $12,$10,$10
+
+ sll a4,30,t12
+ addl t11,t9,t9
+ xor a4,a5,ra
+ xor $2,$10,$10
+
+ srl a4,2,a4
+ addl $9,t9,t9
+ xor t8,ra,ra
+ xor $7,$10,$10
+
+ srl $10,31,t11
+ addl ra,t9,t9
+ srl a3,27,t10
+ addl $10,$10,$10
+
+ or t12,a4,a4
+ addl t10,t9,t9
+ or t11,$10,$10
+ zapnot $9,0xf,$9
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $13,$11,$11
+
+ sll a3,30,t12
+ addl t11,t8,t8
+ xor a3,a4,ra
+ xor $3,$11,$11
+
+ srl a3,2,a3
+ addl $10,t8,t8
+ xor a5,ra,ra
+ xor $8,$11,$11
+
+ srl $11,31,t11
+ addl ra,t8,t8
+ srl t9,27,t10
+ addl $11,$11,$11
+
+ or t12,a3,a3
+ addl t10,t8,t8
+ or t11,$11,$11
+ zapnot $10,0xf,$10
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $14,$12,$12
+
+ sll t9,30,t12
+ addl t11,a5,a5
+ xor t9,a3,ra
+ xor $4,$12,$12
+
+ srl t9,2,t9
+ addl $11,a5,a5
+ xor a4,ra,ra
+ xor $9,$12,$12
+
+ srl $12,31,t11
+ addl ra,a5,a5
+ srl t8,27,t10
+ addl $12,$12,$12
+
+ or t12,t9,t9
+ addl t10,a5,a5
+ or t11,$12,$12
+ zapnot $11,0xf,$11
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $15,$13,$13
+
+ sll t8,30,t12
+ addl t11,a4,a4
+ xor t8,t9,ra
+ xor $5,$13,$13
+
+ srl t8,2,t8
+ addl $12,a4,a4
+ xor a3,ra,ra
+ xor $10,$13,$13
+
+ srl $13,31,t11
+ addl ra,a4,a4
+ srl a5,27,t10
+ addl $13,$13,$13
+
+ or t12,t8,t8
+ addl t10,a4,a4
+ or t11,$13,$13
+ zapnot $12,0xf,$12
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $0,$14,$14
+
+ sll a5,30,t12
+ addl t11,a3,a3
+ xor a5,t8,ra
+ xor $6,$14,$14
+
+ srl a5,2,a5
+ addl $13,a3,a3
+ xor t9,ra,ra
+ xor $11,$14,$14
+
+ srl $14,31,t11
+ addl ra,a3,a3
+ srl a4,27,t10
+ addl $14,$14,$14
+
+ or t12,a5,a5
+ addl t10,a3,a3
+ or t11,$14,$14
+ zapnot $13,0xf,$13
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $1,$15,$15
+
+ sll a4,30,t12
+ addl t11,t9,t9
+ xor a4,a5,ra
+ xor $7,$15,$15
+
+ srl a4,2,a4
+ addl $14,t9,t9
+ xor t8,ra,ra
+ xor $12,$15,$15
+
+ srl $15,31,t11
+ addl ra,t9,t9
+ srl a3,27,t10
+ addl $15,$15,$15
+
+ or t12,a4,a4
+ addl t10,t9,t9
+ or t11,$15,$15
+ zapnot $14,0xf,$14
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $2,$0,$0
+
+ sll a3,30,t12
+ addl t11,t8,t8
+ xor a3,a4,ra
+ xor $8,$0,$0
+
+ srl a3,2,a3
+ addl $15,t8,t8
+ xor a5,ra,ra
+ xor $13,$0,$0
+
+ srl $0,31,t11
+ addl ra,t8,t8
+ srl t9,27,t10
+ addl $0,$0,$0
+
+ or t12,a3,a3
+ addl t10,t8,t8
+ or t11,$0,$0
+ zapnot $15,0xf,$15
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $3,$1,$1
+
+ sll t9,30,t12
+ addl t11,a5,a5
+ xor t9,a3,ra
+ xor $9,$1,$1
+
+ srl t9,2,t9
+ addl $0,a5,a5
+ xor a4,ra,ra
+ xor $14,$1,$1
+
+ srl $1,31,t11
+ addl ra,a5,a5
+ srl t8,27,t10
+ addl $1,$1,$1
+
+ or t12,t9,t9
+ addl t10,a5,a5
+ or t11,$1,$1
+ zapnot $0,0xf,$0
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $4,$2,$2
+
+ sll t8,30,t12
+ addl t11,a4,a4
+ xor t8,t9,ra
+ xor $10,$2,$2
+
+ srl t8,2,t8
+ addl $1,a4,a4
+ xor a3,ra,ra
+ xor $15,$2,$2
+
+ srl $2,31,t11
+ addl ra,a4,a4
+ srl a5,27,t10
+ addl $2,$2,$2
+
+ or t12,t8,t8
+ addl t10,a4,a4
+ or t11,$2,$2
+ zapnot $1,0xf,$1
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $5,$3,$3
+
+ sll a5,30,t12
+ addl t11,a3,a3
+ xor a5,t8,ra
+ xor $11,$3,$3
+
+ srl a5,2,a5
+ addl $2,a3,a3
+ xor t9,ra,ra
+ xor $0,$3,$3
+
+ srl $3,31,t11
+ addl ra,a3,a3
+ srl a4,27,t10
+ addl $3,$3,$3
+
+ or t12,a5,a5
+ addl t10,a3,a3
+ or t11,$3,$3
+ zapnot $2,0xf,$2
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $6,$4,$4
+
+ sll a4,30,t12
+ addl t11,t9,t9
+ xor a4,a5,ra
+ xor $12,$4,$4
+
+ srl a4,2,a4
+ addl $3,t9,t9
+ xor t8,ra,ra
+ xor $1,$4,$4
+
+ srl $4,31,t11
+ addl ra,t9,t9
+ srl a3,27,t10
+ addl $4,$4,$4
+
+ or t12,a4,a4
+ addl t10,t9,t9
+ or t11,$4,$4
+ zapnot $3,0xf,$3
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $7,$5,$5
+
+ sll a3,30,t12
+ addl t11,t8,t8
+ xor a3,a4,ra
+ xor $13,$5,$5
+
+ srl a3,2,a3
+ addl $4,t8,t8
+ xor a5,ra,ra
+ xor $2,$5,$5
+
+ srl $5,31,t11
+ addl ra,t8,t8
+ srl t9,27,t10
+ addl $5,$5,$5
+
+ or t12,a3,a3
+ addl t10,t8,t8
+ or t11,$5,$5
+ zapnot $4,0xf,$4
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $8,$6,$6
+
+ sll t9,30,t12
+ addl t11,a5,a5
+ xor t9,a3,ra
+ xor $14,$6,$6
+
+ srl t9,2,t9
+ addl $5,a5,a5
+ xor a4,ra,ra
+ xor $3,$6,$6
+
+ srl $6,31,t11
+ addl ra,a5,a5
+ srl t8,27,t10
+ addl $6,$6,$6
+
+ or t12,t9,t9
+ addl t10,a5,a5
+ or t11,$6,$6
+ zapnot $5,0xf,$5
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $9,$7,$7
+
+ sll t8,30,t12
+ addl t11,a4,a4
+ xor t8,t9,ra
+ xor $15,$7,$7
+
+ srl t8,2,t8
+ addl $6,a4,a4
+ xor a3,ra,ra
+ xor $4,$7,$7
+
+ srl $7,31,t11
+ addl ra,a4,a4
+ srl a5,27,t10
+ addl $7,$7,$7
+
+ or t12,t8,t8
+ addl t10,a4,a4
+ or t11,$7,$7
+ zapnot $6,0xf,$6
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $10,$8,$8
+
+ sll a5,30,t12
+ addl t11,a3,a3
+ xor a5,t8,ra
+ xor $0,$8,$8
+
+ srl a5,2,a5
+ addl $7,a3,a3
+ xor t9,ra,ra
+ xor $5,$8,$8
+
+ srl $8,31,t11
+ addl ra,a3,a3
+ srl a4,27,t10
+ addl $8,$8,$8
+
+ or t12,a5,a5
+ addl t10,a3,a3
+ or t11,$8,$8
+ zapnot $7,0xf,$7
+ ldah AT,-28900(zero)
+ lda AT,-17188(AT) # K_40_59
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $11,$9,$9
+
+ srl a3,27,t10
+ and a4,a5,ra
+ and a4,t8,t12
+ xor $1,$9,$9
+
+ sll a4,30,a4
+ addl t11,t9,t9
+ xor $6,$9,$9
+
+ srl $9,31,t11
+ addl t10,t9,t9
+ or ra,t12,ra
+ and a5,t8,t12
+
+ or ra,t12,ra
+ srl a4,32,t12
+ addl $8,t9,t9
+ addl $9,$9,$9
+
+ or t12,a4,a4
+ addl ra,t9,t9
+ or t11,$9,$9
+ zapnot $8,0xf,$8
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $12,$10,$10
+
+ srl t9,27,t10
+ and a3,a4,ra
+ and a3,a5,t12
+ xor $2,$10,$10
+
+ sll a3,30,a3
+ addl t11,t8,t8
+ xor $7,$10,$10
+
+ srl $10,31,t11
+ addl t10,t8,t8
+ or ra,t12,ra
+ and a4,a5,t12
+
+ or ra,t12,ra
+ srl a3,32,t12
+ addl $9,t8,t8
+ addl $10,$10,$10
+
+ or t12,a3,a3
+ addl ra,t8,t8
+ or t11,$10,$10
+ zapnot $9,0xf,$9
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $13,$11,$11
+
+ srl t8,27,t10
+ and t9,a3,ra
+ and t9,a4,t12
+ xor $3,$11,$11
+
+ sll t9,30,t9
+ addl t11,a5,a5
+ xor $8,$11,$11
+
+ srl $11,31,t11
+ addl t10,a5,a5
+ or ra,t12,ra
+ and a3,a4,t12
+
+ or ra,t12,ra
+ srl t9,32,t12
+ addl $10,a5,a5
+ addl $11,$11,$11
+
+ or t12,t9,t9
+ addl ra,a5,a5
+ or t11,$11,$11
+ zapnot $10,0xf,$10
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $14,$12,$12
+
+ srl a5,27,t10
+ and t8,t9,ra
+ and t8,a3,t12
+ xor $4,$12,$12
+
+ sll t8,30,t8
+ addl t11,a4,a4
+ xor $9,$12,$12
+
+ srl $12,31,t11
+ addl t10,a4,a4
+ or ra,t12,ra
+ and t9,a3,t12
+
+ or ra,t12,ra
+ srl t8,32,t12
+ addl $11,a4,a4
+ addl $12,$12,$12
+
+ or t12,t8,t8
+ addl ra,a4,a4
+ or t11,$12,$12
+ zapnot $11,0xf,$11
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $15,$13,$13
+
+ srl a4,27,t10
+ and a5,t8,ra
+ and a5,t9,t12
+ xor $5,$13,$13
+
+ sll a5,30,a5
+ addl t11,a3,a3
+ xor $10,$13,$13
+
+ srl $13,31,t11
+ addl t10,a3,a3
+ or ra,t12,ra
+ and t8,t9,t12
+
+ or ra,t12,ra
+ srl a5,32,t12
+ addl $12,a3,a3
+ addl $13,$13,$13
+
+ or t12,a5,a5
+ addl ra,a3,a3
+ or t11,$13,$13
+ zapnot $12,0xf,$12
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $0,$14,$14
+
+ srl a3,27,t10
+ and a4,a5,ra
+ and a4,t8,t12
+ xor $6,$14,$14
+
+ sll a4,30,a4
+ addl t11,t9,t9
+ xor $11,$14,$14
+
+ srl $14,31,t11
+ addl t10,t9,t9
+ or ra,t12,ra
+ and a5,t8,t12
+
+ or ra,t12,ra
+ srl a4,32,t12
+ addl $13,t9,t9
+ addl $14,$14,$14
+
+ or t12,a4,a4
+ addl ra,t9,t9
+ or t11,$14,$14
+ zapnot $13,0xf,$13
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $1,$15,$15
+
+ srl t9,27,t10
+ and a3,a4,ra
+ and a3,a5,t12
+ xor $7,$15,$15
+
+ sll a3,30,a3
+ addl t11,t8,t8
+ xor $12,$15,$15
+
+ srl $15,31,t11
+ addl t10,t8,t8
+ or ra,t12,ra
+ and a4,a5,t12
+
+ or ra,t12,ra
+ srl a3,32,t12
+ addl $14,t8,t8
+ addl $15,$15,$15
+
+ or t12,a3,a3
+ addl ra,t8,t8
+ or t11,$15,$15
+ zapnot $14,0xf,$14
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $2,$0,$0
+
+ srl t8,27,t10
+ and t9,a3,ra
+ and t9,a4,t12
+ xor $8,$0,$0
+
+ sll t9,30,t9
+ addl t11,a5,a5
+ xor $13,$0,$0
+
+ srl $0,31,t11
+ addl t10,a5,a5
+ or ra,t12,ra
+ and a3,a4,t12
+
+ or ra,t12,ra
+ srl t9,32,t12
+ addl $15,a5,a5
+ addl $0,$0,$0
+
+ or t12,t9,t9
+ addl ra,a5,a5
+ or t11,$0,$0
+ zapnot $15,0xf,$15
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $3,$1,$1
+
+ srl a5,27,t10
+ and t8,t9,ra
+ and t8,a3,t12
+ xor $9,$1,$1
+
+ sll t8,30,t8
+ addl t11,a4,a4
+ xor $14,$1,$1
+
+ srl $1,31,t11
+ addl t10,a4,a4
+ or ra,t12,ra
+ and t9,a3,t12
+
+ or ra,t12,ra
+ srl t8,32,t12
+ addl $0,a4,a4
+ addl $1,$1,$1
+
+ or t12,t8,t8
+ addl ra,a4,a4
+ or t11,$1,$1
+ zapnot $0,0xf,$0
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $4,$2,$2
+
+ srl a4,27,t10
+ and a5,t8,ra
+ and a5,t9,t12
+ xor $10,$2,$2
+
+ sll a5,30,a5
+ addl t11,a3,a3
+ xor $15,$2,$2
+
+ srl $2,31,t11
+ addl t10,a3,a3
+ or ra,t12,ra
+ and t8,t9,t12
+
+ or ra,t12,ra
+ srl a5,32,t12
+ addl $1,a3,a3
+ addl $2,$2,$2
+
+ or t12,a5,a5
+ addl ra,a3,a3
+ or t11,$2,$2
+ zapnot $1,0xf,$1
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $5,$3,$3
+
+ srl a3,27,t10
+ and a4,a5,ra
+ and a4,t8,t12
+ xor $11,$3,$3
+
+ sll a4,30,a4
+ addl t11,t9,t9
+ xor $0,$3,$3
+
+ srl $3,31,t11
+ addl t10,t9,t9
+ or ra,t12,ra
+ and a5,t8,t12
+
+ or ra,t12,ra
+ srl a4,32,t12
+ addl $2,t9,t9
+ addl $3,$3,$3
+
+ or t12,a4,a4
+ addl ra,t9,t9
+ or t11,$3,$3
+ zapnot $2,0xf,$2
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $6,$4,$4
+
+ srl t9,27,t10
+ and a3,a4,ra
+ and a3,a5,t12
+ xor $12,$4,$4
+
+ sll a3,30,a3
+ addl t11,t8,t8
+ xor $1,$4,$4
+
+ srl $4,31,t11
+ addl t10,t8,t8
+ or ra,t12,ra
+ and a4,a5,t12
+
+ or ra,t12,ra
+ srl a3,32,t12
+ addl $3,t8,t8
+ addl $4,$4,$4
+
+ or t12,a3,a3
+ addl ra,t8,t8
+ or t11,$4,$4
+ zapnot $3,0xf,$3
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $7,$5,$5
+
+ srl t8,27,t10
+ and t9,a3,ra
+ and t9,a4,t12
+ xor $13,$5,$5
+
+ sll t9,30,t9
+ addl t11,a5,a5
+ xor $2,$5,$5
+
+ srl $5,31,t11
+ addl t10,a5,a5
+ or ra,t12,ra
+ and a3,a4,t12
+
+ or ra,t12,ra
+ srl t9,32,t12
+ addl $4,a5,a5
+ addl $5,$5,$5
+
+ or t12,t9,t9
+ addl ra,a5,a5
+ or t11,$5,$5
+ zapnot $4,0xf,$4
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $8,$6,$6
+
+ srl a5,27,t10
+ and t8,t9,ra
+ and t8,a3,t12
+ xor $14,$6,$6
+
+ sll t8,30,t8
+ addl t11,a4,a4
+ xor $3,$6,$6
+
+ srl $6,31,t11
+ addl t10,a4,a4
+ or ra,t12,ra
+ and t9,a3,t12
+
+ or ra,t12,ra
+ srl t8,32,t12
+ addl $5,a4,a4
+ addl $6,$6,$6
+
+ or t12,t8,t8
+ addl ra,a4,a4
+ or t11,$6,$6
+ zapnot $5,0xf,$5
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $9,$7,$7
+
+ srl a4,27,t10
+ and a5,t8,ra
+ and a5,t9,t12
+ xor $15,$7,$7
+
+ sll a5,30,a5
+ addl t11,a3,a3
+ xor $4,$7,$7
+
+ srl $7,31,t11
+ addl t10,a3,a3
+ or ra,t12,ra
+ and t8,t9,t12
+
+ or ra,t12,ra
+ srl a5,32,t12
+ addl $6,a3,a3
+ addl $7,$7,$7
+
+ or t12,a5,a5
+ addl ra,a3,a3
+ or t11,$7,$7
+ zapnot $6,0xf,$6
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $10,$8,$8
+
+ srl a3,27,t10
+ and a4,a5,ra
+ and a4,t8,t12
+ xor $0,$8,$8
+
+ sll a4,30,a4
+ addl t11,t9,t9
+ xor $5,$8,$8
+
+ srl $8,31,t11
+ addl t10,t9,t9
+ or ra,t12,ra
+ and a5,t8,t12
+
+ or ra,t12,ra
+ srl a4,32,t12
+ addl $7,t9,t9
+ addl $8,$8,$8
+
+ or t12,a4,a4
+ addl ra,t9,t9
+ or t11,$8,$8
+ zapnot $7,0xf,$7
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $11,$9,$9
+
+ srl t9,27,t10
+ and a3,a4,ra
+ and a3,a5,t12
+ xor $1,$9,$9
+
+ sll a3,30,a3
+ addl t11,t8,t8
+ xor $6,$9,$9
+
+ srl $9,31,t11
+ addl t10,t8,t8
+ or ra,t12,ra
+ and a4,a5,t12
+
+ or ra,t12,ra
+ srl a3,32,t12
+ addl $8,t8,t8
+ addl $9,$9,$9
+
+ or t12,a3,a3
+ addl ra,t8,t8
+ or t11,$9,$9
+ zapnot $8,0xf,$8
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $12,$10,$10
+
+ srl t8,27,t10
+ and t9,a3,ra
+ and t9,a4,t12
+ xor $2,$10,$10
+
+ sll t9,30,t9
+ addl t11,a5,a5
+ xor $7,$10,$10
+
+ srl $10,31,t11
+ addl t10,a5,a5
+ or ra,t12,ra
+ and a3,a4,t12
+
+ or ra,t12,ra
+ srl t9,32,t12
+ addl $9,a5,a5
+ addl $10,$10,$10
+
+ or t12,t9,t9
+ addl ra,a5,a5
+ or t11,$10,$10
+ zapnot $9,0xf,$9
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $13,$11,$11
+
+ srl a5,27,t10
+ and t8,t9,ra
+ and t8,a3,t12
+ xor $3,$11,$11
+
+ sll t8,30,t8
+ addl t11,a4,a4
+ xor $8,$11,$11
+
+ srl $11,31,t11
+ addl t10,a4,a4
+ or ra,t12,ra
+ and t9,a3,t12
+
+ or ra,t12,ra
+ srl t8,32,t12
+ addl $10,a4,a4
+ addl $11,$11,$11
+
+ or t12,t8,t8
+ addl ra,a4,a4
+ or t11,$11,$11
+ zapnot $10,0xf,$10
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $14,$12,$12
+
+ srl a4,27,t10
+ and a5,t8,ra
+ and a5,t9,t12
+ xor $4,$12,$12
+
+ sll a5,30,a5
+ addl t11,a3,a3
+ xor $9,$12,$12
+
+ srl $12,31,t11
+ addl t10,a3,a3
+ or ra,t12,ra
+ and t8,t9,t12
+
+ or ra,t12,ra
+ srl a5,32,t12
+ addl $11,a3,a3
+ addl $12,$12,$12
+
+ or t12,a5,a5
+ addl ra,a3,a3
+ or t11,$12,$12
+ zapnot $11,0xf,$11
+ ldah AT,-13725(zero)
+ lda AT,-15914(AT) # K_60_79
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $15,$13,$13
+
+ sll a4,30,t12
+ addl t11,t9,t9
+ xor a4,a5,ra
+ xor $5,$13,$13
+
+ srl a4,2,a4
+ addl $12,t9,t9
+ xor t8,ra,ra
+ xor $10,$13,$13
+
+ srl $13,31,t11
+ addl ra,t9,t9
+ srl a3,27,t10
+ addl $13,$13,$13
+
+ or t12,a4,a4
+ addl t10,t9,t9
+ or t11,$13,$13
+ zapnot $12,0xf,$12
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $0,$14,$14
+
+ sll a3,30,t12
+ addl t11,t8,t8
+ xor a3,a4,ra
+ xor $6,$14,$14
+
+ srl a3,2,a3
+ addl $13,t8,t8
+ xor a5,ra,ra
+ xor $11,$14,$14
+
+ srl $14,31,t11
+ addl ra,t8,t8
+ srl t9,27,t10
+ addl $14,$14,$14
+
+ or t12,a3,a3
+ addl t10,t8,t8
+ or t11,$14,$14
+ zapnot $13,0xf,$13
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $1,$15,$15
+
+ sll t9,30,t12
+ addl t11,a5,a5
+ xor t9,a3,ra
+ xor $7,$15,$15
+
+ srl t9,2,t9
+ addl $14,a5,a5
+ xor a4,ra,ra
+ xor $12,$15,$15
+
+ srl $15,31,t11
+ addl ra,a5,a5
+ srl t8,27,t10
+ addl $15,$15,$15
+
+ or t12,t9,t9
+ addl t10,a5,a5
+ or t11,$15,$15
+ zapnot $14,0xf,$14
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $2,$0,$0
+
+ sll t8,30,t12
+ addl t11,a4,a4
+ xor t8,t9,ra
+ xor $8,$0,$0
+
+ srl t8,2,t8
+ addl $15,a4,a4
+ xor a3,ra,ra
+ xor $13,$0,$0
+
+ srl $0,31,t11
+ addl ra,a4,a4
+ srl a5,27,t10
+ addl $0,$0,$0
+
+ or t12,t8,t8
+ addl t10,a4,a4
+ or t11,$0,$0
+ zapnot $15,0xf,$15
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $3,$1,$1
+
+ sll a5,30,t12
+ addl t11,a3,a3
+ xor a5,t8,ra
+ xor $9,$1,$1
+
+ srl a5,2,a5
+ addl $0,a3,a3
+ xor t9,ra,ra
+ xor $14,$1,$1
+
+ srl $1,31,t11
+ addl ra,a3,a3
+ srl a4,27,t10
+ addl $1,$1,$1
+
+ or t12,a5,a5
+ addl t10,a3,a3
+ or t11,$1,$1
+ zapnot $0,0xf,$0
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $4,$2,$2
+
+ sll a4,30,t12
+ addl t11,t9,t9
+ xor a4,a5,ra
+ xor $10,$2,$2
+
+ srl a4,2,a4
+ addl $1,t9,t9
+ xor t8,ra,ra
+ xor $15,$2,$2
+
+ srl $2,31,t11
+ addl ra,t9,t9
+ srl a3,27,t10
+ addl $2,$2,$2
+
+ or t12,a4,a4
+ addl t10,t9,t9
+ or t11,$2,$2
+ zapnot $1,0xf,$1
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $5,$3,$3
+
+ sll a3,30,t12
+ addl t11,t8,t8
+ xor a3,a4,ra
+ xor $11,$3,$3
+
+ srl a3,2,a3
+ addl $2,t8,t8
+ xor a5,ra,ra
+ xor $0,$3,$3
+
+ srl $3,31,t11
+ addl ra,t8,t8
+ srl t9,27,t10
+ addl $3,$3,$3
+
+ or t12,a3,a3
+ addl t10,t8,t8
+ or t11,$3,$3
+ zapnot $2,0xf,$2
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $6,$4,$4
+
+ sll t9,30,t12
+ addl t11,a5,a5
+ xor t9,a3,ra
+ xor $12,$4,$4
+
+ srl t9,2,t9
+ addl $3,a5,a5
+ xor a4,ra,ra
+ xor $1,$4,$4
+
+ srl $4,31,t11
+ addl ra,a5,a5
+ srl t8,27,t10
+ addl $4,$4,$4
+
+ or t12,t9,t9
+ addl t10,a5,a5
+ or t11,$4,$4
+ zapnot $3,0xf,$3
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $7,$5,$5
+
+ sll t8,30,t12
+ addl t11,a4,a4
+ xor t8,t9,ra
+ xor $13,$5,$5
+
+ srl t8,2,t8
+ addl $4,a4,a4
+ xor a3,ra,ra
+ xor $2,$5,$5
+
+ srl $5,31,t11
+ addl ra,a4,a4
+ srl a5,27,t10
+ addl $5,$5,$5
+
+ or t12,t8,t8
+ addl t10,a4,a4
+ or t11,$5,$5
+ zapnot $4,0xf,$4
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $8,$6,$6
+
+ sll a5,30,t12
+ addl t11,a3,a3
+ xor a5,t8,ra
+ xor $14,$6,$6
+
+ srl a5,2,a5
+ addl $5,a3,a3
+ xor t9,ra,ra
+ xor $3,$6,$6
+
+ srl $6,31,t11
+ addl ra,a3,a3
+ srl a4,27,t10
+ addl $6,$6,$6
+
+ or t12,a5,a5
+ addl t10,a3,a3
+ or t11,$6,$6
+ zapnot $5,0xf,$5
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $9,$7,$7
+
+ sll a4,30,t12
+ addl t11,t9,t9
+ xor a4,a5,ra
+ xor $15,$7,$7
+
+ srl a4,2,a4
+ addl $6,t9,t9
+ xor t8,ra,ra
+ xor $4,$7,$7
+
+ srl $7,31,t11
+ addl ra,t9,t9
+ srl a3,27,t10
+ addl $7,$7,$7
+
+ or t12,a4,a4
+ addl t10,t9,t9
+ or t11,$7,$7
+ zapnot $6,0xf,$6
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $10,$8,$8
+
+ sll a3,30,t12
+ addl t11,t8,t8
+ xor a3,a4,ra
+ xor $0,$8,$8
+
+ srl a3,2,a3
+ addl $7,t8,t8
+ xor a5,ra,ra
+ xor $5,$8,$8
+
+ srl $8,31,t11
+ addl ra,t8,t8
+ srl t9,27,t10
+ addl $8,$8,$8
+
+ or t12,a3,a3
+ addl t10,t8,t8
+ or t11,$8,$8
+ zapnot $7,0xf,$7
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $11,$9,$9
+
+ sll t9,30,t12
+ addl t11,a5,a5
+ xor t9,a3,ra
+ xor $1,$9,$9
+
+ srl t9,2,t9
+ addl $8,a5,a5
+ xor a4,ra,ra
+ xor $6,$9,$9
+
+ srl $9,31,t11
+ addl ra,a5,a5
+ srl t8,27,t10
+ addl $9,$9,$9
+
+ or t12,t9,t9
+ addl t10,a5,a5
+ or t11,$9,$9
+ zapnot $8,0xf,$8
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $12,$10,$10
+
+ sll t8,30,t12
+ addl t11,a4,a4
+ xor t8,t9,ra
+ xor $2,$10,$10
+
+ srl t8,2,t8
+ addl $9,a4,a4
+ xor a3,ra,ra
+ xor $7,$10,$10
+
+ srl $10,31,t11
+ addl ra,a4,a4
+ srl a5,27,t10
+ addl $10,$10,$10
+
+ or t12,t8,t8
+ addl t10,a4,a4
+ or t11,$10,$10
+ zapnot $9,0xf,$9
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ xor $13,$11,$11
+
+ sll a5,30,t12
+ addl t11,a3,a3
+ xor a5,t8,ra
+ xor $3,$11,$11
+
+ srl a5,2,a5
+ addl $10,a3,a3
+ xor t9,ra,ra
+ xor $8,$11,$11
+
+ srl $11,31,t11
+ addl ra,a3,a3
+ srl a4,27,t10
+ addl $11,$11,$11
+
+ or t12,a5,a5
+ addl t10,a3,a3
+ or t11,$11,$11
+ zapnot $10,0xf,$10
+ sll a3,5,t11
+ addl AT,t9,t9
+ zapnot a3,0xf,a3
+ xor $14,$12,$12
+
+ sll a4,30,t12
+ addl t11,t9,t9
+ xor a4,a5,ra
+ xor $4,$12,$12
+
+ srl a4,2,a4
+ addl $11,t9,t9
+ xor t8,ra,ra
+ xor $9,$12,$12
+
+ srl $12,31,t11
+ addl ra,t9,t9
+ srl a3,27,t10
+ addl $12,$12,$12
+
+ or t12,a4,a4
+ addl t10,t9,t9
+ or t11,$12,$12
+ zapnot $11,0xf,$11
+ sll t9,5,t11
+ addl AT,t8,t8
+ zapnot t9,0xf,t9
+ xor $15,$13,$13
+
+ sll a3,30,t12
+ addl t11,t8,t8
+ xor a3,a4,ra
+ xor $5,$13,$13
+
+ srl a3,2,a3
+ addl $12,t8,t8
+ xor a5,ra,ra
+ xor $10,$13,$13
+
+ srl $13,31,t11
+ addl ra,t8,t8
+ srl t9,27,t10
+ addl $13,$13,$13
+
+ or t12,a3,a3
+ addl t10,t8,t8
+ or t11,$13,$13
+ zapnot $12,0xf,$12
+ sll t8,5,t11
+ addl AT,a5,a5
+ zapnot t8,0xf,t8
+ xor $0,$14,$14
+
+ sll t9,30,t12
+ addl t11,a5,a5
+ xor t9,a3,ra
+ xor $6,$14,$14
+
+ srl t9,2,t9
+ addl $13,a5,a5
+ xor a4,ra,ra
+ xor $11,$14,$14
+
+ srl $14,31,t11
+ addl ra,a5,a5
+ srl t8,27,t10
+ addl $14,$14,$14
+
+ or t12,t9,t9
+ addl t10,a5,a5
+ or t11,$14,$14
+ sll a5,5,t11
+ addl AT,a4,a4
+ zapnot a5,0xf,a5
+ xor $1,$15,$15
+
+ sll t8,30,t12
+ addl t11,a4,a4
+ xor t8,t9,ra
+ xor $7,$15,$15
+
+ srl t8,2,t8
+ addl $14,a4,a4
+ xor a3,ra,ra
+ xor $12,$15,$15
+
+ srl $15,31,t11
+ addl ra,a4,a4
+ srl a5,27,t10
+ addl $15,$15,$15
+
+ or t12,t8,t8
+ addl t10,a4,a4
+ or t11,$15,$15
+ sll a4,5,t11
+ addl AT,a3,a3
+ zapnot a4,0xf,a4
+ ldl $0,0(a0)
+
+ sll a5,30,t12
+ addl t11,a3,a3
+ xor a5,t8,ra
+ ldl $1,4(a0)
+
+ srl a5,2,a5
+ addl $15,a3,a3
+ xor t9,ra,ra
+ ldl $2,8(a0)
+
+ srl a4,27,t10
+ addl ra,a3,a3
+ ldl $3,12(a0)
+
+ or t12,a5,a5
+ addl t10,a3,a3
+ ldl $4,16(a0)
+ addl $0,a3,a3
+ addl $1,a4,a4
+ addl $2,a5,a5
+ addl $3,t8,t8
+ addl $4,t9,t9
+ stl a3,0(a0)
+ stl a4,4(a0)
+ addq a1,64,a1
+ stl a5,8(a0)
+ stl t8,12(a0)
+ stl t9,16(a0)
+ cmpult a1,a2,t11
+ bne t11,.Lloop
+
+ .set noreorder
+ ldq ra,0(sp)
+ ldq s0,8(sp)
+ ldq s1,16(sp)
+ ldq s2,24(sp)
+ ldq s3,32(sp)
+ ldq s4,40(sp)
+ ldq s5,48(sp)
+ ldq fp,56(sp)
+ lda sp,64(sp)
+ ret (ra)
+.end sha1_block_data_order
+.ascii "SHA1 block transform for Alpha, CRYPTOGAMS by <[email protected]>"
+.align 2