serval-dna/nacl/nacl-20110221/crypto_scalarmult/curve25519/athlon/fromdouble.s
Daniel O'Connor bf9710fd5a Unpacked nacl-20110221 after processing by nacl-prepare-sources.
This only affects build_android, if nacl-gcc-prep is run then build/`uname -s` will be created.
2012-02-27 12:40:14 +10:30

196 lines
3.8 KiB
ArmAsm

.text
.p2align 5
.globl _crypto_scalarmult_curve25519_athlon_fromdouble
.globl crypto_scalarmult_curve25519_athlon_fromdouble
_crypto_scalarmult_curve25519_athlon_fromdouble:
crypto_scalarmult_curve25519_athlon_fromdouble:
mov %esp,%eax
and $31,%eax
add $192,%eax
sub %eax,%esp
movl %ebp,0(%esp)
movl 8(%esp,%eax),%ecx
fldl 0(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out0offset
fstpl 96(%esp)
fldl 8(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out1offset
fstpl 104(%esp)
fldl 16(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out2offset
fstpl 112(%esp)
fldl 24(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out3offset
fstpl 120(%esp)
fldl 32(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out4offset
fstpl 128(%esp)
fldl 40(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out5offset
fstpl 136(%esp)
fldl 48(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out6offset
fstpl 144(%esp)
fldl 56(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out7offset
fstpl 152(%esp)
fldl 64(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out8offset
fstpl 160(%esp)
fldl 72(%ecx)
faddl crypto_scalarmult_curve25519_athlon_out9offset
fstpl 168(%esp)
movl 96(%esp),%ecx
movl %ecx,4(%esp)
movl 104(%esp),%ecx
shl $26,%ecx
movl %ecx,40(%esp)
movl 104(%esp),%ecx
shr $6,%ecx
movl %ecx,8(%esp)
movl 112(%esp),%ecx
shl $19,%ecx
movl %ecx,44(%esp)
movl 112(%esp),%ecx
shr $13,%ecx
movl %ecx,12(%esp)
movl 120(%esp),%ecx
shl $13,%ecx
movl %ecx,48(%esp)
movl 120(%esp),%ecx
shr $19,%ecx
movl %ecx,16(%esp)
movl 128(%esp),%ecx
shl $6,%ecx
movl %ecx,52(%esp)
movl 128(%esp),%ecx
shr $26,%ecx
movl 136(%esp),%edx
add %edx,%ecx
movl %ecx,20(%esp)
movl 144(%esp),%ecx
shl $25,%ecx
movl %ecx,56(%esp)
movl 144(%esp),%ecx
shr $7,%ecx
movl %ecx,24(%esp)
movl 152(%esp),%ecx
shl $19,%ecx
movl %ecx,60(%esp)
movl 152(%esp),%ecx
shr $13,%ecx
movl %ecx,28(%esp)
movl 160(%esp),%ecx
shl $12,%ecx
movl %ecx,64(%esp)
movl 160(%esp),%ecx
shr $20,%ecx
movl %ecx,32(%esp)
movl 168(%esp),%ecx
shl $6,%ecx
movl %ecx,68(%esp)
movl 168(%esp),%ecx
shr $26,%ecx
movl %ecx,36(%esp)
mov $0,%ecx
movl %ecx,72(%esp)
movl 4(%esp),%ecx
addl 40(%esp),%ecx
movl %ecx,4(%esp)
movl 8(%esp),%ecx
adcl 44(%esp),%ecx
movl %ecx,8(%esp)
movl 12(%esp),%ecx
adcl 48(%esp),%ecx
movl %ecx,12(%esp)
movl 16(%esp),%ecx
adcl 52(%esp),%ecx
movl %ecx,16(%esp)
movl 20(%esp),%ecx
adcl 56(%esp),%ecx
movl %ecx,20(%esp)
movl 24(%esp),%ecx
adcl 60(%esp),%ecx
movl %ecx,24(%esp)
movl 28(%esp),%ecx
adcl 64(%esp),%ecx
movl %ecx,28(%esp)
movl 32(%esp),%ecx
adcl 68(%esp),%ecx
movl %ecx,32(%esp)
movl 36(%esp),%ecx
adcl 72(%esp),%ecx
movl %ecx,36(%esp)
movl 4(%esp),%ecx
adc $0x13,%ecx
movl %ecx,40(%esp)
movl 8(%esp),%ecx
adc $0,%ecx
movl %ecx,44(%esp)
movl 12(%esp),%ecx
adc $0,%ecx
movl %ecx,48(%esp)
movl 16(%esp),%ecx
adc $0,%ecx
movl %ecx,52(%esp)
movl 20(%esp),%ecx
adc $0,%ecx
movl %ecx,56(%esp)
movl 24(%esp),%ecx
adc $0,%ecx
movl %ecx,60(%esp)
movl 28(%esp),%ecx
adc $0,%ecx
movl %ecx,64(%esp)
movl 32(%esp),%ecx
adc $0x80000000,%ecx
movl %ecx,68(%esp)
movl 36(%esp),%ebp
adc $0xffffffff,%ebp
and $0x80000000,%ebp
sar $31,%ebp
movl 4(%esp,%eax),%ecx
movl 4(%esp),%edx
xorl 40(%esp),%edx
and %ebp,%edx
xorl 40(%esp),%edx
movl %edx,0(%ecx)
movl 8(%esp),%edx
xorl 44(%esp),%edx
and %ebp,%edx
xorl 44(%esp),%edx
movl %edx,4(%ecx)
movl 12(%esp),%edx
xorl 48(%esp),%edx
and %ebp,%edx
xorl 48(%esp),%edx
movl %edx,8(%ecx)
movl 16(%esp),%edx
xorl 52(%esp),%edx
and %ebp,%edx
xorl 52(%esp),%edx
movl %edx,12(%ecx)
movl 20(%esp),%edx
xorl 56(%esp),%edx
and %ebp,%edx
xorl 56(%esp),%edx
movl %edx,16(%ecx)
movl 24(%esp),%edx
xorl 60(%esp),%edx
and %ebp,%edx
xorl 60(%esp),%edx
movl %edx,20(%ecx)
movl 28(%esp),%edx
xorl 64(%esp),%edx
and %ebp,%edx
xorl 64(%esp),%edx
movl %edx,24(%ecx)
movl 32(%esp),%edx
xorl 68(%esp),%edx
and %ebp,%edx
xorl 68(%esp),%edx
movl %edx,28(%ecx)
movl 0(%esp),%ebp
add %eax,%esp
ret