.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