.text
.p2align 5
.globl _crypto_scalarmult_curve25519_athlon_square
.globl crypto_scalarmult_curve25519_athlon_square
_crypto_scalarmult_curve25519_athlon_square:
crypto_scalarmult_curve25519_athlon_square:
mov %esp,%eax
and $31,%eax
add $64,%eax
sub %eax,%esp
movl 8(%esp,%eax),%edx
movl 4(%esp,%eax),%ecx
fldl 72(%edx)
fmul %st(0),%st(0)
fldl 0(%edx)
fadd %st(0),%st(0)
fldl 8(%edx)
fadd %st(0),%st(0)
fldl 16(%edx)
fadd %st(0),%st(0)
fldl 56(%edx)
fxch %st(4)
fmull crypto_scalarmult_curve25519_athlon_scale
fldl 72(%edx)
fmul %st(4),%st(0)
fldl 64(%edx)
fmul %st(4),%st(0)
faddp %st(0),%st(1)
fxch %st(4)
fstl 0(%esp)
fxch %st(3)
fstl 8(%esp)
fxch %st(3)
fmull 64(%edx)
faddp %st(0),%st(1)
fldl 48(%edx)
fxch %st(5)
fmul %st(0),%st(3)
fxch %st(3)
faddp %st(0),%st(1)
fxch %st(2)
fadd %st(0),%st(0)
fldl 56(%edx)
fmul %st(2),%st(0)
faddp %st(0),%st(4)
fxch %st(1)
fstl 16(%esp)
fldl 40(%edx)
fxch %st(5)
fmul %st(0),%st(1)
fxch %st(1)
faddp %st(0),%st(3)
fadd %st(0),%st(0)
fstpl 48(%esp)
fldl 24(%edx)
fadd %st(0),%st(0)
fstl 24(%esp)
fldl 48(%edx)
fmul %st(1),%st(0)
faddp %st(0),%st(4)
fmul %st(4),%st(0)
faddp %st(0),%st(2)
fxch %st(3)
fadd %st(0),%st(0)
fstpl 40(%esp)
fldl 32(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(1)
fldl crypto_scalarmult_curve25519_athlon_alpha230
fadd %st(1),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha230
fsubr %st(0),%st(1)
fldl 8(%esp)
fldl 72(%edx)
fmul %st(0),%st(1)
fldl 16(%esp)
fmul %st(0),%st(1)
fldl 64(%edx)
fmul %st(0),%st(1)
fxch %st(1)
faddp %st(0),%st(3)
fldl 24(%esp)
fmul %st(0),%st(1)
fxch %st(1)
faddp %st(0),%st(2)
fldl 32(%edx)
fadd %st(0),%st(0)
fstl 32(%esp)
fmull 40(%edx)
faddp %st(0),%st(6)
fxch %st(3)
faddp %st(0),%st(5)
fldl crypto_scalarmult_curve25519_athlon_alpha255
fadd %st(5),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha255
fsubr %st(0),%st(5)
fldl 56(%edx)
fmul %st(0),%st(4)
fxch %st(4)
faddp %st(0),%st(3)
fldl 32(%esp)
fmul %st(0),%st(4)
fxch %st(4)
faddp %st(0),%st(2)
fldl 48(%edx)
fmul %st(0),%st(4)
fxch %st(4)
faddp %st(0),%st(3)
fxch %st(3)
fmull 40(%esp)
faddp %st(0),%st(1)
fxch %st(3)
fstpl 64(%ecx)
fldl 40(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(1)
fxch %st(2)
fmull crypto_scalarmult_curve25519_athlon_scale
fxch %st(3)
fstpl 72(%ecx)
faddp %st(0),%st(1)
fmull crypto_scalarmult_curve25519_athlon_scale
fldl 24(%esp)
fmull 72(%edx)
fldl 0(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(2)
fldl 32(%esp)
fmull 64(%edx)
faddp %st(0),%st(1)
fldl 0(%esp)
fmull 8(%edx)
faddp %st(0),%st(3)
fldl 40(%esp)
fmull 56(%edx)
faddp %st(0),%st(1)
fldl crypto_scalarmult_curve25519_athlon_alpha26
fadd %st(2),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha26
fsubr %st(0),%st(2)
faddp %st(0),%st(3)
fldl crypto_scalarmult_curve25519_athlon_alpha51
fadd %st(3),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha51
fsubr %st(0),%st(3)
fldl 48(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(2)
fxch %st(1)
fmull crypto_scalarmult_curve25519_athlon_scale
fldl 0(%esp)
fmull 16(%edx)
faddp %st(0),%st(1)
fldl 8(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(1)
faddp %st(0),%st(1)
fldl crypto_scalarmult_curve25519_athlon_alpha77
fadd %st(1),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha77
fsubr %st(0),%st(1)
fxch %st(2)
fstpl 0(%ecx)
fldl 32(%esp)
fmull 72(%edx)
fldl 40(%esp)
fmull 64(%edx)
faddp %st(0),%st(1)
fldl 48(%esp)
fmull 56(%edx)
faddp %st(0),%st(1)
fmull crypto_scalarmult_curve25519_athlon_scale
fldl 0(%esp)
fmull 24(%edx)
faddp %st(0),%st(1)
fldl 8(%esp)
fmull 16(%edx)
faddp %st(0),%st(1)
faddp %st(0),%st(2)
fldl crypto_scalarmult_curve25519_athlon_alpha102
fadd %st(2),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha102
fsubr %st(0),%st(2)
fxch %st(3)
fstpl 8(%ecx)
fldl 40(%esp)
fmull 72(%edx)
fldl 48(%esp)
fmull 64(%edx)
faddp %st(0),%st(1)
fldl 56(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(1)
fmull crypto_scalarmult_curve25519_athlon_scale
fldl 0(%esp)
fmull 32(%edx)
faddp %st(0),%st(1)
fldl 8(%esp)
fmull 24(%edx)
faddp %st(0),%st(1)
fldl 16(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(1)
faddp %st(0),%st(3)
fldl crypto_scalarmult_curve25519_athlon_alpha128
fadd %st(3),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha128
fsubr %st(0),%st(3)
fxch %st(1)
fstpl 16(%ecx)
fldl 48(%esp)
fldl 72(%edx)
fmul %st(0),%st(1)
fmul %st(5),%st(0)
fxch %st(5)
fmull 64(%edx)
faddp %st(0),%st(1)
fmull crypto_scalarmult_curve25519_athlon_scale
fldl 0(%esp)
fmull 40(%edx)
faddp %st(0),%st(1)
fldl 8(%esp)
fmull 32(%edx)
faddp %st(0),%st(1)
fldl 16(%esp)
fmull 24(%edx)
faddp %st(0),%st(1)
faddp %st(0),%st(1)
fldl crypto_scalarmult_curve25519_athlon_alpha153
fadd %st(1),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha153
fsubr %st(0),%st(1)
fxch %st(2)
fstpl 24(%ecx)
fldl 64(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(4)
fxch %st(3)
fmull crypto_scalarmult_curve25519_athlon_scale
fldl 0(%esp)
fmull 48(%edx)
faddp %st(0),%st(1)
fldl 8(%esp)
fmull 40(%edx)
faddp %st(0),%st(1)
fldl 16(%esp)
fmull 32(%edx)
faddp %st(0),%st(1)
fldl 24(%edx)
fmul %st(0),%st(0)
faddp %st(0),%st(1)
faddp %st(0),%st(1)
fldl crypto_scalarmult_curve25519_athlon_alpha179
fadd %st(1),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha179
fsubr %st(0),%st(1)
fldl 64(%edx)
fadd %st(0),%st(0)
fmull 72(%edx)
fmull crypto_scalarmult_curve25519_athlon_scale
fldl 0(%esp)
fmull 56(%edx)
faddp %st(0),%st(1)
fldl 8(%esp)
fmull 48(%edx)
faddp %st(0),%st(1)
fldl 16(%esp)
fmull 40(%edx)
faddp %st(0),%st(1)
fldl 24(%esp)
fmull 32(%edx)
faddp %st(0),%st(1)
faddp %st(0),%st(1)
fldl crypto_scalarmult_curve25519_athlon_alpha204
fadd %st(1),%st(0)
fsubl crypto_scalarmult_curve25519_athlon_alpha204
fsubr %st(0),%st(1)
fldl 64(%ecx)
faddp %st(0),%st(1)
fldl crypto_scalarmult_curve25519_athlon_alpha230
fadd %st(1),%st(0)
fldl 72(%ecx)
fxch %st(1)
fsubl crypto_scalarmult_curve25519_athlon_alpha230
fsubr %st(0),%st(2)
faddp %st(0),%st(1)
fxch %st(4)
fstpl 32(%ecx)
fxch %st(4)
fstpl 40(%ecx)
fxch %st(1)
fstpl 48(%ecx)
fstpl 56(%ecx)
fxch %st(1)
fstpl 64(%ecx)
fstpl 72(%ecx)
add %eax,%esp
ret
