.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