Ticket #71: curve25519_1.darcs.patch

File curve25519_1.darcs.patch, 124.2 KB (added by xueyumusic, at 2011-03-24T12:00:22Z)

python wrapper on DJB's curve25519 lib

Line 
11 patch for repository http://tahoe-lafs.org/source/pycryptopp/trunk:
2
3Thu Mar 24 19:51:17 Öйú±ê׼ʱ¼ä 2011  xueyu7452@gmail.com
4  * curve25519_1.darcs.patch
5
6New patches:
7
8[curve25519_1.darcs.patch
9xueyu7452@gmail.com**20110324115117
10 Ignore-this: 7a03713116c9c500e5effd93dde622d6
11] {
12addfile ./create.sh
13hunk ./create.sh 1
14+#!/bin/sh
15+
16+cd ./curve25519-20050915
17+pwd
18+rm -f *.o curve25519.a
19+env CC='gcc -O2' make
20+cp curve25519.a ../
21+cd ../
22+pwd
23+
24adddir ./curve25519-20050915
25addfile ./curve25519-20050915/FILES
26hunk ./curve25519-20050915/FILES 1
27+FILES
28+FILES.lib
29+Makefile
30+Makefile.lib
31+test-curve25519.c
32+curve25519-speed.c
33+speedreport.do
34+cpucycles.a.do
35+cpucycles.h.do
36+cpucycles_athlon.h
37+cpucycles_athlon.s
38+curve25519.a.do
39+curve25519.h.do
40+curve25519.impl.do
41+curve25519.impl.check.c
42+x86cpuid.c
43+curve25519_athlon.h
44+curve25519_athlon.c
45+curve25519_athlon_const.s
46+curve25519_athlon_fromdouble.s
47+curve25519_athlon_init.s
48+curve25519_athlon_mainloop.s
49+curve25519_athlon_mult.s
50+curve25519_athlon_square.s
51+curve25519_athlon_todouble.s
52addfile ./curve25519-20050915/FILES.lib
53hunk ./curve25519-20050915/FILES.lib 1
54+curve25519.a.do
55+curve25519.h.do
56+curve25519.impl.do
57+curve25519.impl.check.c
58+x86cpuid.c
59+curve25519_athlon.h
60+curve25519_athlon.c
61+curve25519_athlon_const.s
62+curve25519_athlon_fromdouble.s
63+curve25519_athlon_init.s
64+curve25519_athlon_mainloop.s
65+curve25519_athlon_mult.s
66+curve25519_athlon_square.s
67+curve25519_athlon_todouble.s
68addfile ./curve25519-20050915/Makefile
69hunk ./curve25519-20050915/Makefile 1
70+# curve25519 Makefile version 20050915
71+# D. J. Bernstein
72+# Public domain.
73+
74+
75+# Test programs:
76+
77+default: test-curve25519
78+
79+speedreport: speedreport.do \
80+curve25519.h cpucycles.h \
81+curve25519-speed test-curve25519
82+       sh speedreport.do > speedreport
83+
84+test-curve25519: test-curve25519.o curve25519.a
85+       $(CC) -o test-curve25519 test-curve25519.o curve25519.a
86+
87+test-curve25519.o: test-curve25519.c \
88+curve25519_athlon.h \
89+curve25519.h
90+       $(CC) -c test-curve25519.c
91+
92+curve25519-speed: curve25519-speed.o curve25519.a cpucycles.a
93+       $(CC) -o curve25519-speed curve25519-speed.o curve25519.a cpucycles.a
94+
95+curve25519-speed.o: curve25519-speed.c \
96+curve25519_athlon.h \
97+curve25519.h
98+       $(CC) -c curve25519-speed.c
99+
100+cpucycles.h: curve25519.impl \
101+cpucycles.h.do
102+       sh -e cpucycles.h.do > cpucycles.h.new
103+       mv cpucycles.h.new cpucycles.h
104+
105+cpucycles.a: curve25519.impl \
106+cpucycles_athlon.h \
107+cpucycles_athlon.s \
108+cpucycles.a.do
109+       sh -e cpucycles.a.do $(CC) > cpucycles.a.new
110+       mv cpucycles.a.new cpucycles.a
111+
112+
113+# The curve25519 library:
114+
115+curve25519: curve25519.a curve25519.h
116+
117+curve25519.h: curve25519.impl \
118+curve25519.h.do
119+       sh -e curve25519.h.do > curve25519.h.new
120+       mv curve25519.h.new curve25519.h
121+
122+curve25519.a: curve25519.impl \
123+curve25519.a.do \
124+curve25519_athlon.h \
125+curve25519_athlon.c \
126+curve25519_athlon_const.s \
127+curve25519_athlon_fromdouble.s \
128+curve25519_athlon_init.s \
129+curve25519_athlon_mainloop.s \
130+curve25519_athlon_mult.s \
131+curve25519_athlon_square.s \
132+curve25519_athlon_todouble.s
133+       sh -e curve25519.a.do $(CC) > curve25519.a.new
134+       mv curve25519.a.new curve25519.a
135+
136+curve25519.impl: \
137+curve25519.impl.do \
138+x86cpuid.c \
139+curve25519.impl.check.c \
140+curve25519_athlon.h \
141+curve25519_athlon.c \
142+curve25519_athlon_const.s \
143+curve25519_athlon_fromdouble.s \
144+curve25519_athlon_init.s \
145+curve25519_athlon_mainloop.s \
146+curve25519_athlon_mult.s \
147+curve25519_athlon_square.s \
148+curve25519_athlon_todouble.s
149+       sh -e curve25519.impl.do $(CC) > curve25519.impl.new
150+       mv curve25519.impl.new curve25519.impl
151addfile ./curve25519-20050915/Makefile.lib
152hunk ./curve25519-20050915/Makefile.lib 1
153+
154+# curve25519 Makefile.lib version 20050915
155+# D. J. Bernstein
156+# Public domain.
157+
158+curve25519: curve25519.a curve25519.h
159+
160+curve25519.h: curve25519.impl \
161+curve25519.h.do
162+       sh -e curve25519.h.do > curve25519.h.new
163+       mv curve25519.h.new curve25519.h
164+
165+curve25519.a: curve25519.impl \
166+curve25519.a.do \
167+curve25519_athlon.h \
168+curve25519_athlon.c \
169+curve25519_athlon_const.s \
170+curve25519_athlon_fromdouble.s \
171+curve25519_athlon_init.s \
172+curve25519_athlon_mainloop.s \
173+curve25519_athlon_mult.s \
174+curve25519_athlon_square.s \
175+curve25519_athlon_todouble.s
176+       sh -e curve25519.a.do $(CC) > curve25519.a.new
177+       mv curve25519.a.new curve25519.a
178+
179+curve25519.impl: \
180+curve25519.impl.do \
181+x86cpuid.c \
182+curve25519.impl.check.c \
183+curve25519_athlon.h \
184+curve25519_athlon.c \
185+curve25519_athlon_const.s \
186+curve25519_athlon_fromdouble.s \
187+curve25519_athlon_init.s \
188+curve25519_athlon_mainloop.s \
189+curve25519_athlon_mult.s \
190+curve25519_athlon_square.s \
191+curve25519_athlon_todouble.s
192+       sh -e curve25519.impl.do $(CC) > curve25519.impl.new
193+       mv curve25519.impl.new curve25519.impl
194addfile ./curve25519-20050915/cpucycles.a.do
195hunk ./curve25519-20050915/cpucycles.a.do 1
196+# cpucycles.a.do version 20050915
197+# D. J. Bernstein
198+# Public domain.
199+
200+rm -f cpucyclestmp.a
201+
202+impl=`cat curve25519.impl`
203+
204+case $impl in
205+  athlon)
206+    $* -c cpucycles_${impl}.s
207+    ar cr cpucyclestmp.a cpucycles_${impl}.o
208+    ;;
209+  *) echo 'unknown implementation' >&2; exit 1 ;;
210+esac
211+
212+ranlib cpucyclestmp.a >/dev/null 2>/dev/null || :
213+cat cpucyclestmp.a
214+rm cpucyclestmp.a
215addfile ./curve25519-20050915/cpucycles.h.do
216hunk ./curve25519-20050915/cpucycles.h.do 1
217+# cpucycles.h.do version 20050915
218+# D. J. Bernstein
219+# Public domain.
220+
221+case `cat curve25519.impl` in
222+  athlon) echo '#include "cpucycles_athlon.h"' ;;
223+  *) echo 'unknown implementation' >&2; exit 1 ;;
224+esac
225addfile ./curve25519-20050915/cpucycles_athlon.h
226hunk ./curve25519-20050915/cpucycles_athlon.h 1
227+/*
228+cpucycles_athlon.h version 20050218
229+D. J. Bernstein
230+Public domain.
231+*/
232+
233+#ifndef CPUCYCLES_ATHLON_H
234+#define CPUCYCLES_ATHLON_H
235+
236+extern long long cpucycles_athlon(void);
237+
238+#ifndef cpucycles_implementation
239+#define cpucycles_implementation "cpucycles_athlon"
240+#define cpucycles cpucycles_athlon
241+#endif
242+
243+#endif
244addfile ./curve25519-20050915/cpucycles_athlon.s
245hunk ./curve25519-20050915/cpucycles_athlon.s 1
246+# cpucycles_athlon.s version 20050218
247+# D. J. Bernstein
248+# Public domain.
249+
250+.text
251+.p2align 4,0x90
252+.globl cpucycles_athlon
253+.globl _cpucycles_athlon
254+cpucycles_athlon:
255+_cpucycles_athlon:
256+.byte 15
257+.byte 49
258+ret
259addfile ./curve25519-20050915/curve25519-speed.c
260hunk ./curve25519-20050915/curve25519-speed.c 1
261+/*
262+curve25519-speed.c version 20050915
263+D. J. Bernstein
264+Public domain.
265+*/
266+
267+#include <time.h>
268+#include <sys/time.h>
269+#include <stdio.h>
270+#include "curve25519.h"
271+#include "cpucycles.h"
272+
273+long long tstart;  struct timeval tvstart;
274+long long tfinish; struct timeval tvfinish;
275+
276+long long t[21];
277+long long buf[16384];
278+
279+main()
280+{
281+  unsigned char *ek;
282+  unsigned char *e;
283+  unsigned char *k;
284+  int i;
285+  int j;
286+
287+  printf("%s %s\n",curve25519_implementation,cpucycles_implementation);
288+  tstart = cpucycles(); gettimeofday(&tvstart,0);
289+
290+  for (i = 0;i < sizeof buf;++i) i[(char *) buf] = random();
291+
292+  for (j = 0;j < 10;++j) {
293+    ek = (unsigned char *) buf;
294+    e = ek + 32;
295+    k = e + 32;
296+    for (i = 0;i <= 20;++i) t[i] = cpucycles();
297+    for (i = 0;i <= 20;++i) {
298+      t[i] = cpucycles();
299+      curve25519(ek,e,k);
300+      ek += 128;
301+      e += 128;
302+      k += 128;
303+    }
304+    for (i = 0;i < 20;++i) printf(" %5lld",t[i + 1] - t[i]);
305+    printf("\n");
306+    fflush(stdout);
307+    for (i = 0;i < sizeof buf - 128;++i) i[(char *) buf] = i[128 + (char *) buf];
308+  }
309+
310+  tfinish = cpucycles(); gettimeofday(&tvfinish,0);
311+  printf("%lld cycles\n"
312+    ,tfinish - tstart);
313+  printf("%lld usecs\n"
314+    ,(tvfinish.tv_sec - tvstart.tv_sec) * 1000000LL + (tvfinish.tv_usec - tvstart.tv_usec));
315+  printf("%f MHz\n"
316+    ,(tfinish - tstart) * 1.0 / ((tvfinish.tv_sec - tvstart.tv_sec) * 1000000LL + (tvfinish.tv_usec - tvstart.tv_usec)));
317+
318+  return 0;
319+
320+}
321addfile ./curve25519-20050915/curve25519.a.do
322hunk ./curve25519-20050915/curve25519.a.do 1
323+# curve25519.a.do version 20050915
324+# D. J. Bernstein
325+# Public domain.
326+
327+rm -f curve25519tmp.a
328+
329+impl=`cat curve25519.impl`
330+
331+case ${impl} in
332+  athlon)
333+    $* -c curve25519_${impl}.c
334+    $* -c curve25519_${impl}_const.s
335+    $* -c curve25519_${impl}_fromdouble.s
336+    $* -c curve25519_${impl}_init.s
337+    $* -c curve25519_${impl}_mainloop.s
338+    $* -c curve25519_${impl}_mult.s
339+    $* -c curve25519_${impl}_square.s
340+    $* -c curve25519_${impl}_todouble.s
341+    ar cr curve25519tmp.a \
342+      curve25519_${impl}.o \
343+      curve25519_${impl}_const.o \
344+      curve25519_${impl}_fromdouble.o \
345+      curve25519_${impl}_init.o \
346+      curve25519_${impl}_mainloop.o \
347+      curve25519_${impl}_mult.o \
348+      curve25519_${impl}_square.o \
349+      curve25519_${impl}_todouble.o
350+    ;;
351+  *) echo 'unknown implementation' >&2; exit 1 ;;
352+esac
353+
354+ranlib curve25519tmp.a >/dev/null 2>/dev/null || :
355+cat curve25519tmp.a
356+rm curve25519tmp.a
357addfile ./curve25519-20050915/curve25519.h.do
358hunk ./curve25519-20050915/curve25519.h.do 1
359+# curve25519.h.do version 20050915
360+# D. J. Bernstein
361+# Public domain.
362+
363+case `cat curve25519.impl` in
364+  athlon) echo '#include "curve25519_athlon.h"' ;;
365+  *) echo 'unknown implementation' >&2; exit 1 ;;
366+esac
367addfile ./curve25519-20050915/curve25519.impl.check.c
368hunk ./curve25519-20050915/curve25519.impl.check.c 1
369+/*
370+curve25519.impl.check.c version 20050915
371+D. J. Bernstein
372+Public domain.
373+*/
374+
375+#include "curve25519.impl.check.h"
376+
377+unsigned char e1k[32];
378+unsigned char e2k[32];
379+unsigned char e1e2k[32];
380+unsigned char e2e1k[32];
381+unsigned char e1[32] = {3};
382+unsigned char e2[32] = {5};
383+unsigned char k[32] = {9};
384+
385+unsigned char exp[32] = {
386+  0xbe,0x4c,0x62,0x08,0x29,0x3f,0x81,0x1a,
387+  0x15,0x4b,0x9c,0x42,0xf7,0x87,0xdd,0x90,
388+  0x9f,0x07,0x5c,0x61,0x1b,0x82,0xc3,0x03,
389+  0x50,0xed,0xc9,0xfe,0x6e,0x83,0xad,0x4a,
390+};
391+
392+main()
393+{
394+  int loop;
395+  int i;
396+
397+  for (loop = 0;loop < 10;++loop) {
398+    curve25519(e1k,e1,k);
399+    curve25519(e2e1k,e2,e1k);
400+    curve25519(e2k,e2,k);
401+    curve25519(e1e2k,e1,e2k);
402+    for (i = 0;i < 32;++i) if (e1e2k[i] != e2e1k[i]) return 1;
403+    for (i = 0;i < 32;++i) e1[i] ^= e2k[i];
404+    for (i = 0;i < 32;++i) e2[i] ^= e1k[i];
405+    for (i = 0;i < 32;++i) k[i] ^= e1e2k[i];
406+  }
407+  for (i = 0;i < 32;++i) if (e1e2k[i] != exp[i]) return 1;
408+
409+  return 0;
410+}
411addfile ./curve25519-20050915/curve25519.impl.do
412hunk ./curve25519-20050915/curve25519.impl.do 1
413+# curve25519.impl.do version 20050915
414+# D. J. Bernstein
415+# Public domain.
416+
417+echo '#include "curve25519_athlon.h"' > curve25519.impl.check.h
418+if gcc -o x86cpuid x86cpuid.c >/dev/null 2>&1 \
419+&& ./x86cpuid > x86cpuid.out \
420+&& $* -o curve25519.impl.check curve25519.impl.check.c \
421+curve25519_athlon.c \
422+curve25519_athlon_const.s \
423+curve25519_athlon_fromdouble.s \
424+curve25519_athlon_init.s \
425+curve25519_athlon_mainloop.s \
426+curve25519_athlon_mult.s \
427+curve25519_athlon_square.s \
428+curve25519_athlon_todouble.s \
429+>/dev/null 2>&1 \
430+&& ./curve25519.impl.check
431+then
432+  echo athlon
433+  exit 0
434+fi
435+
436+echo 'curve25519.impl.do: fatal: all tests failed! unsupported platform or compiler' >&2
437+exit 1
438addfile ./curve25519-20050915/curve25519_athlon.c
439hunk ./curve25519-20050915/curve25519_athlon.c 1
440+#include "curve25519_athlon.h"
441+
442+#define mult curve25519_mult
443+#define square curve25519_square
444+
445+void curve25519_athlon_recip(double out[10],const double z[10])
446+{
447+  double z2[10];
448+  double z9[10];
449+  double z11[10];
450+  double z2_5_0[10];
451+  double z2_10_0[10];
452+  double z2_20_0[10];
453+  double z2_50_0[10];
454+  double z2_100_0[10];
455+  double t0[10];
456+  double t1[10];
457+  int i;
458+
459+  /* 2 */ square(z2,z);
460+  /* 4 */ square(t1,z2);
461+  /* 8 */ square(t0,t1);
462+  /* 9 */ mult(z9,t0,z);
463+  /* 11 */ mult(z11,z9,z2);
464+  /* 22 */ square(t0,z11);
465+  /* 2^5 - 2^0 = 31 */ mult(z2_5_0,t0,z9);
466+
467+  /* 2^6 - 2^1 */ square(t0,z2_5_0);
468+  /* 2^7 - 2^2 */ square(t1,t0);
469+  /* 2^8 - 2^3 */ square(t0,t1);
470+  /* 2^9 - 2^4 */ square(t1,t0);
471+  /* 2^10 - 2^5 */ square(t0,t1);
472+  /* 2^10 - 2^0 */ mult(z2_10_0,t0,z2_5_0);
473+
474+  /* 2^11 - 2^1 */ square(t0,z2_10_0);
475+  /* 2^12 - 2^2 */ square(t1,t0);
476+  /* 2^20 - 2^10 */ for (i = 2;i < 10;i += 2) { square(t0,t1); square(t1,t0); }
477+  /* 2^20 - 2^0 */ mult(z2_20_0,t1,z2_10_0);
478+
479+  /* 2^21 - 2^1 */ square(t0,z2_20_0);
480+  /* 2^22 - 2^2 */ square(t1,t0);
481+  /* 2^40 - 2^20 */ for (i = 2;i < 20;i += 2) { square(t0,t1); square(t1,t0); }
482+  /* 2^40 - 2^0 */ mult(t0,t1,z2_20_0);
483+
484+  /* 2^41 - 2^1 */ square(t1,t0);
485+  /* 2^42 - 2^2 */ square(t0,t1);
486+  /* 2^50 - 2^10 */ for (i = 2;i < 10;i += 2) { square(t1,t0); square(t0,t1); }
487+  /* 2^50 - 2^0 */ mult(z2_50_0,t0,z2_10_0);
488+
489+  /* 2^51 - 2^1 */ square(t0,z2_50_0);
490+  /* 2^52 - 2^2 */ square(t1,t0);
491+  /* 2^100 - 2^50 */ for (i = 2;i < 50;i += 2) { square(t0,t1); square(t1,t0); }
492+  /* 2^100 - 2^0 */ mult(z2_100_0,t1,z2_50_0);
493+
494+  /* 2^101 - 2^1 */ square(t1,z2_100_0);
495+  /* 2^102 - 2^2 */ square(t0,t1);
496+  /* 2^200 - 2^100 */ for (i = 2;i < 100;i += 2) { square(t1,t0); square(t0,t1); }
497+  /* 2^200 - 2^0 */ mult(t1,t0,z2_100_0);
498+
499+  /* 2^201 - 2^1 */ square(t0,t1);
500+  /* 2^202 - 2^2 */ square(t1,t0);
501+  /* 2^250 - 2^50 */ for (i = 2;i < 50;i += 2) { square(t0,t1); square(t1,t0); }
502+  /* 2^250 - 2^0 */ mult(t0,t1,z2_50_0);
503+
504+  /* 2^251 - 2^1 */ square(t1,t0);
505+  /* 2^252 - 2^2 */ square(t0,t1);
506+  /* 2^253 - 2^3 */ square(t1,t0);
507+  /* 2^254 - 2^4 */ square(t0,t1);
508+  /* 2^255 - 2^5 */ square(t1,t0);
509+  /* 2^255 - 21 */ mult(out,t1,z11);
510+}
511+
512+void curve25519_athlon(unsigned char ek[32],
513+  const unsigned char e[32],
514+  const unsigned char k[32])
515+{
516+  double work[30];
517+  curve25519_athlon_init();
518+  curve25519_athlon_todouble(work,k);
519+  curve25519_athlon_mainloop(work,e);
520+  curve25519_athlon_recip(work + 10,work + 10);
521+  mult(work + 20,work,work + 10);
522+  curve25519_athlon_fromdouble(ek,work + 20);
523+}
524addfile ./curve25519-20050915/curve25519_athlon.h
525hunk ./curve25519-20050915/curve25519_athlon.h 1
526+/*
527+curve25519_athlon.h version 20050915
528+D. J. Bernstein
529+Public domain.
530+*/
531+
532+#ifndef CURVE25519_ATHLON
533+#define CURVE25519_ATHLON
534+
535+extern void curve25519_athlon(unsigned char *,const unsigned char *,const unsigned char *);
536+
537+/* internal functions, exposed purely for testing */
538+extern void curve25519_athlon_init(void);
539+extern void curve25519_athlon_mainloop(double *,const unsigned char *);
540+extern void curve25519_athlon_recip(double *,const double *);
541+extern void curve25519_athlon_square(double *,const double *);
542+extern void curve25519_athlon_mult(double *,const double *,const double *);
543+extern void curve25519_athlon_todouble(double *,const unsigned char *);
544+extern void curve25519_athlon_fromdouble(unsigned char *,const double *);
545+
546+#ifndef curve25519_implementation
547+#define curve25519_implementation "curve25519_athlon"
548+#define curve25519 curve25519_athlon
549+#define curve25519_init curve25519_athlon_init
550+#define curve25519_mainloop curve25519_athlon_mainloop
551+#define curve25519_recip curve25519_athlon_recip
552+#define curve25519_square curve25519_athlon_square
553+#define curve25519_mult curve25519_athlon_mult
554+#define curve25519_todouble curve25519_athlon_todouble
555+#define curve25519_fromdouble curve25519_athlon_fromdouble
556+#endif
557+
558+#endif
559addfile ./curve25519-20050915/curve25519_athlon_const.s
560hunk ./curve25519-20050915/curve25519_athlon_const.s 1
561+.data
562+.section .rodata
563+.p2align 5
564+
565+.globl curve25519_athlon_scale
566+.globl curve25519_athlon_121665
567+.globl curve25519_athlon_alpha26
568+.globl curve25519_athlon_alpha51
569+.globl curve25519_athlon_alpha77
570+.globl curve25519_athlon_alpha102
571+.globl curve25519_athlon_alpha128
572+.globl curve25519_athlon_alpha153
573+.globl curve25519_athlon_alpha179
574+.globl curve25519_athlon_alpha204
575+.globl curve25519_athlon_alpha230
576+.globl curve25519_athlon_alpha255
577+.globl curve25519_athlon_in0offset
578+.globl curve25519_athlon_in1offset
579+.globl curve25519_athlon_in2offset
580+.globl curve25519_athlon_in3offset
581+.globl curve25519_athlon_in4offset
582+.globl curve25519_athlon_in5offset
583+.globl curve25519_athlon_in6offset
584+.globl curve25519_athlon_in7offset
585+.globl curve25519_athlon_in8offset
586+.globl curve25519_athlon_in9offset
587+.globl curve25519_athlon_out0offset
588+.globl curve25519_athlon_out1offset
589+.globl curve25519_athlon_out2offset
590+.globl curve25519_athlon_out3offset
591+.globl curve25519_athlon_out4offset
592+.globl curve25519_athlon_out5offset
593+.globl curve25519_athlon_out6offset
594+.globl curve25519_athlon_out7offset
595+.globl curve25519_athlon_out8offset
596+.globl curve25519_athlon_out9offset
597+.globl curve25519_athlon_two0
598+.globl curve25519_athlon_two1
599+.globl curve25519_athlon_zero
600+.globl curve25519_athlon_rounding
601+
602+curve25519_athlon_scale:
603+       .long 0x0,0x30430000
604+curve25519_athlon_121665:
605+       .long 0x0,0x40fdb410
606+curve25519_athlon_in0offset:
607+       .long 0x0,0x43300000
608+curve25519_athlon_in1offset:
609+       .long 0x0,0x45300000
610+curve25519_athlon_in2offset:
611+       .long 0x0,0x46b00000
612+curve25519_athlon_in3offset:
613+       .long 0x0,0x48300000
614+curve25519_athlon_in4offset:
615+       .long 0x0,0x49b00000
616+curve25519_athlon_in5offset:
617+       .long 0x0,0x4b300000
618+curve25519_athlon_in6offset:
619+       .long 0x0,0x4d300000
620+curve25519_athlon_in7offset:
621+       .long 0x0,0x4eb00000
622+curve25519_athlon_in8offset:
623+       .long 0x0,0x50300000
624+curve25519_athlon_in9offset:
625+       .long 0x0,0x51b00000
626+curve25519_athlon_alpha26:
627+       .long 0x0,0x45880000
628+curve25519_athlon_alpha51:
629+       .long 0x0,0x47180000
630+curve25519_athlon_alpha77:
631+       .long 0x0,0x48b80000
632+curve25519_athlon_alpha102:
633+       .long 0x0,0x4a480000
634+curve25519_athlon_alpha128:
635+       .long 0x0,0x4be80000
636+curve25519_athlon_alpha153:
637+       .long 0x0,0x4d780000
638+curve25519_athlon_alpha179:
639+       .long 0x0,0x4f180000
640+curve25519_athlon_alpha204:
641+       .long 0x0,0x50a80000
642+curve25519_athlon_alpha230:
643+       .long 0x0,0x52480000
644+curve25519_athlon_alpha255:
645+       .long 0x0,0x53d80000
646+curve25519_athlon_two0:
647+       .long 0x0,0x3ff00000
648+curve25519_athlon_two1:
649+       .long 0x0,0x40000000
650+curve25519_athlon_zero:
651+       .long 0x0,0x0
652+curve25519_athlon_out0offset:
653+       .long 0x1fffffed,0x43380000
654+curve25519_athlon_out1offset:
655+       .long 0xffffff8,0x44d80000
656+curve25519_athlon_out2offset:
657+       .long 0x1ffffff8,0x46680000
658+curve25519_athlon_out3offset:
659+       .long 0xffffff8,0x48080000
660+curve25519_athlon_out4offset:
661+       .long 0x1ffffff8,0x49980000
662+curve25519_athlon_out5offset:
663+       .long 0xffffff8,0x4b380000
664+curve25519_athlon_out6offset:
665+       .long 0x1ffffff8,0x4cc80000
666+curve25519_athlon_out7offset:
667+       .long 0xffffff8,0x4e680000
668+curve25519_athlon_out8offset:
669+       .long 0x1ffffff8,0x4ff80000
670+curve25519_athlon_out9offset:
671+       .long 0x1fffff8,0x51980000
672+curve25519_athlon_rounding:
673+       .byte 0x7f
674+       .byte 0x13
675addfile ./curve25519-20050915/curve25519_athlon_fromdouble.s
676hunk ./curve25519-20050915/curve25519_athlon_fromdouble.s 1
677+.text
678+.p2align 5
679+.globl _curve25519_athlon_fromdouble
680+.globl curve25519_athlon_fromdouble
681+_curve25519_athlon_fromdouble:
682+curve25519_athlon_fromdouble:
683+mov %esp,%eax
684+and $31,%eax
685+add $192,%eax
686+sub %eax,%esp
687+movl %ebp,0(%esp)
688+movl 8(%esp,%eax),%ecx
689+fldl 0(%ecx)
690+faddl curve25519_athlon_out0offset
691+fstpl 96(%esp)
692+fldl 8(%ecx)
693+faddl curve25519_athlon_out1offset
694+fstpl 104(%esp)
695+fldl 16(%ecx)
696+faddl curve25519_athlon_out2offset
697+fstpl 112(%esp)
698+fldl 24(%ecx)
699+faddl curve25519_athlon_out3offset
700+fstpl 120(%esp)
701+fldl 32(%ecx)
702+faddl curve25519_athlon_out4offset
703+fstpl 128(%esp)
704+fldl 40(%ecx)
705+faddl curve25519_athlon_out5offset
706+fstpl 136(%esp)
707+fldl 48(%ecx)
708+faddl curve25519_athlon_out6offset
709+fstpl 144(%esp)
710+fldl 56(%ecx)
711+faddl curve25519_athlon_out7offset
712+fstpl 152(%esp)
713+fldl 64(%ecx)
714+faddl curve25519_athlon_out8offset
715+fstpl 160(%esp)
716+fldl 72(%ecx)
717+faddl curve25519_athlon_out9offset
718+fstpl 168(%esp)
719+movl 96(%esp),%ecx
720+movl %ecx,4(%esp)
721+movl 104(%esp),%ecx
722+shl  $26,%ecx
723+movl %ecx,40(%esp)
724+movl 104(%esp),%ecx
725+shr  $6,%ecx
726+movl %ecx,8(%esp)
727+movl 112(%esp),%ecx
728+shl  $19,%ecx
729+movl %ecx,44(%esp)
730+movl 112(%esp),%ecx
731+shr  $13,%ecx
732+movl %ecx,12(%esp)
733+movl 120(%esp),%ecx
734+shl  $13,%ecx
735+movl %ecx,48(%esp)
736+movl 120(%esp),%ecx
737+shr  $19,%ecx
738+movl %ecx,16(%esp)
739+movl 128(%esp),%ecx
740+shl  $6,%ecx
741+movl %ecx,52(%esp)
742+movl 128(%esp),%ecx
743+shr  $26,%ecx
744+movl 136(%esp),%edx
745+add  %edx,%ecx
746+movl %ecx,20(%esp)
747+movl 144(%esp),%ecx
748+shl  $25,%ecx
749+movl %ecx,56(%esp)
750+movl 144(%esp),%ecx
751+shr  $7,%ecx
752+movl %ecx,24(%esp)
753+movl 152(%esp),%ecx
754+shl  $19,%ecx
755+movl %ecx,60(%esp)
756+movl 152(%esp),%ecx
757+shr  $13,%ecx
758+movl %ecx,28(%esp)
759+movl 160(%esp),%ecx
760+shl  $12,%ecx
761+movl %ecx,64(%esp)
762+movl 160(%esp),%ecx
763+shr  $20,%ecx
764+movl %ecx,32(%esp)
765+movl 168(%esp),%ecx
766+shl  $6,%ecx
767+movl %ecx,68(%esp)
768+movl 168(%esp),%ecx
769+shr  $26,%ecx
770+movl %ecx,36(%esp)
771+mov  $0,%ecx
772+movl %ecx,72(%esp)
773+movl 4(%esp),%ecx
774+addl 40(%esp),%ecx
775+movl %ecx,4(%esp)
776+movl 8(%esp),%ecx
777+adcl 44(%esp),%ecx
778+movl %ecx,8(%esp)
779+movl 12(%esp),%ecx
780+adcl 48(%esp),%ecx
781+movl %ecx,12(%esp)
782+movl 16(%esp),%ecx
783+adcl 52(%esp),%ecx
784+movl %ecx,16(%esp)
785+movl 20(%esp),%ecx
786+adcl 56(%esp),%ecx
787+movl %ecx,20(%esp)
788+movl 24(%esp),%ecx
789+adcl 60(%esp),%ecx
790+movl %ecx,24(%esp)
791+movl 28(%esp),%ecx
792+adcl 64(%esp),%ecx
793+movl %ecx,28(%esp)
794+movl 32(%esp),%ecx
795+adcl 68(%esp),%ecx
796+movl %ecx,32(%esp)
797+movl 36(%esp),%ecx
798+adcl 72(%esp),%ecx
799+movl %ecx,36(%esp)
800+movl 4(%esp),%ecx
801+adc  $0x13,%ecx
802+movl %ecx,40(%esp)
803+movl 8(%esp),%ecx
804+adc  $0,%ecx
805+movl %ecx,44(%esp)
806+movl 12(%esp),%ecx
807+adc  $0,%ecx
808+movl %ecx,48(%esp)
809+movl 16(%esp),%ecx
810+adc  $0,%ecx
811+movl %ecx,52(%esp)
812+movl 20(%esp),%ecx
813+adc  $0,%ecx
814+movl %ecx,56(%esp)
815+movl 24(%esp),%ecx
816+adc  $0,%ecx
817+movl %ecx,60(%esp)
818+movl 28(%esp),%ecx
819+adc  $0,%ecx
820+movl %ecx,64(%esp)
821+movl 32(%esp),%ecx
822+adc  $0x80000000,%ecx
823+movl %ecx,68(%esp)
824+movl 36(%esp),%ebp
825+adc  $0xffffffff,%ebp
826+and  $0x80000000,%ebp
827+sar  $31,%ebp
828+movl 4(%esp,%eax),%ecx
829+movl 4(%esp),%edx
830+xorl 40(%esp),%edx
831+and  %ebp,%edx
832+xorl 40(%esp),%edx
833+movl %edx,0(%ecx)
834+movl 8(%esp),%edx
835+xorl 44(%esp),%edx
836+and  %ebp,%edx
837+xorl 44(%esp),%edx
838+movl %edx,4(%ecx)
839+movl 12(%esp),%edx
840+xorl 48(%esp),%edx
841+and  %ebp,%edx
842+xorl 48(%esp),%edx
843+movl %edx,8(%ecx)
844+movl 16(%esp),%edx
845+xorl 52(%esp),%edx
846+and  %ebp,%edx
847+xorl 52(%esp),%edx
848+movl %edx,12(%ecx)
849+movl 20(%esp),%edx
850+xorl 56(%esp),%edx
851+and  %ebp,%edx
852+xorl 56(%esp),%edx
853+movl %edx,16(%ecx)
854+movl 24(%esp),%edx
855+xorl 60(%esp),%edx
856+and  %ebp,%edx
857+xorl 60(%esp),%edx
858+movl %edx,20(%ecx)
859+movl 28(%esp),%edx
860+xorl 64(%esp),%edx
861+and  %ebp,%edx
862+xorl 64(%esp),%edx
863+movl %edx,24(%ecx)
864+movl 32(%esp),%edx
865+xorl 68(%esp),%edx
866+and  %ebp,%edx
867+xorl 68(%esp),%edx
868+movl %edx,28(%ecx)
869+movl 0(%esp),%ebp
870+add %eax,%esp
871+ret
872addfile ./curve25519-20050915/curve25519_athlon_init.s
873hunk ./curve25519-20050915/curve25519_athlon_init.s 1
874+.text
875+.p2align 5
876+.globl _curve25519_athlon_init
877+.globl curve25519_athlon_init
878+_curve25519_athlon_init:
879+curve25519_athlon_init:
880+mov %esp,%eax
881+and $31,%eax
882+add $0,%eax
883+sub %eax,%esp
884+fldcw curve25519_athlon_rounding
885+add %eax,%esp
886+ret
887addfile ./curve25519-20050915/curve25519_athlon_mainloop.s
888hunk ./curve25519-20050915/curve25519_athlon_mainloop.s 1
889+.text
890+.p2align 5
891+.globl _curve25519_athlon_mainloop
892+.globl curve25519_athlon_mainloop
893+_curve25519_athlon_mainloop:
894+curve25519_athlon_mainloop:
895+mov %esp,%eax
896+and $31,%eax
897+add $704,%eax
898+sub %eax,%esp
899+lea 256(%esp),%edx
900+lea 512(%esp),%ecx
901+fldl curve25519_athlon_two0
902+fldl curve25519_athlon_zero
903+movl %eax,160(%ecx)
904+movl %ebx,164(%ecx)
905+movl %esi,168(%ecx)
906+movl %edi,172(%ecx)
907+movl %ebp,176(%ecx)
908+movl 4(%esp,%eax),%ebx
909+fxch %st(1)
910+fstl 0(%esp)
911+fxch %st(1)
912+fstl 8(%esp)
913+fstl 16(%esp)
914+fstl 24(%esp)
915+fstl 32(%esp)
916+fstl 40(%esp)
917+fstl 48(%esp)
918+fstl -120(%edx)
919+fstl -112(%edx)
920+fstl -104(%edx)
921+fstl -96(%edx)
922+fstl -88(%edx)
923+fstl -80(%edx)
924+fstl -72(%edx)
925+fstl -64(%edx)
926+fstl -56(%edx)
927+fstl -48(%edx)
928+fstl -40(%edx)
929+fstl -32(%edx)
930+fstl -24(%edx)
931+fxch %st(1)
932+fstpl 64(%edx)
933+fstl 72(%edx)
934+fstl 80(%edx)
935+fstl 88(%edx)
936+fstl 96(%edx)
937+fstl 104(%edx)
938+fstl 112(%edx)
939+fstl 120(%edx)
940+fstl -128(%ecx)
941+fstpl -120(%ecx)
942+fldl 0(%ebx)
943+fldl 8(%ebx)
944+fldl 16(%ebx)
945+fldl 24(%ebx)
946+fxch %st(3)
947+fstl -16(%edx)
948+fstpl 56(%esp)
949+fldl 32(%ebx)
950+fxch %st(2)
951+fstl -8(%edx)
952+fstpl 64(%esp)
953+fldl 40(%ebx)
954+fxch %st(1)
955+fstl 0(%edx)
956+fstpl 72(%esp)
957+fldl 48(%ebx)
958+fxch %st(3)
959+fstl 8(%edx)
960+fstpl 80(%esp)
961+fldl 56(%ebx)
962+fxch %st(2)
963+fstl 16(%edx)
964+fstpl 88(%esp)
965+fldl 64(%ebx)
966+fxch %st(1)
967+fstl 24(%edx)
968+fstpl 96(%esp)
969+fldl 72(%ebx)
970+fxch %st(3)
971+fstl 32(%edx)
972+fstpl 104(%esp)
973+fxch %st(1)
974+fstl 40(%edx)
975+fstpl 112(%esp)
976+fstl 48(%edx)
977+fstpl 120(%esp)
978+fstl 56(%edx)
979+fstpl -128(%edx)
980+movl 8(%esp,%eax),%ebx
981+mov  $28,%edi
982+mov  $31,%ebp
983+movl 28(%ebx),%esi
984+rol  $1,%esi
985+._morebytes:
986+movl %edi,188(%ecx)
987+._morebits:
988+rol  $1,%esi
989+movl %esi,180(%ecx)
990+movl %ebp,184(%ecx)
991+and  $1,%esi
992+movl  $0x43300000,-108(%ecx)
993+movl %esi,-112(%ecx)
994+fldl -96(%edx)
995+fldl 0(%esp)
996+fadd %st(0),%st(1)
997+fsubl -96(%edx)
998+fldl 64(%edx)
999+fldl -16(%edx)
1000+fadd %st(0),%st(1)
1001+fsubl 64(%edx)
1002+fldl -88(%edx)
1003+fldl 8(%esp)
1004+fadd %st(0),%st(1)
1005+fsubl -88(%edx)
1006+fxch %st(5)
1007+fstpl 0(%esp)
1008+fxch %st(3)
1009+fstpl -96(%edx)
1010+fldl 72(%edx)
1011+fldl -8(%edx)
1012+fadd %st(0),%st(1)
1013+fsubl 72(%edx)
1014+fxch %st(3)
1015+fstpl -16(%edx)
1016+fxch %st(1)
1017+fstpl 64(%edx)
1018+fldl -80(%edx)
1019+fldl 16(%esp)
1020+fadd %st(0),%st(1)
1021+fsubl -80(%edx)
1022+fxch %st(4)
1023+fstpl 8(%esp)
1024+fxch %st(4)
1025+fstpl -88(%edx)
1026+fldl 80(%edx)
1027+fldl 0(%edx)
1028+fadd %st(0),%st(1)
1029+fsubl 80(%edx)
1030+fxch %st(2)
1031+fstpl -8(%edx)
1032+fxch %st(2)
1033+fstpl 72(%edx)
1034+fldl -72(%edx)
1035+fldl 24(%esp)
1036+fadd %st(0),%st(1)
1037+fsubl -72(%edx)
1038+fxch %st(5)
1039+fstpl 16(%esp)
1040+fxch %st(3)
1041+fstpl -80(%edx)
1042+fldl 88(%edx)
1043+fldl 8(%edx)
1044+fadd %st(0),%st(1)
1045+fsubl 88(%edx)
1046+fxch %st(3)
1047+fstpl 0(%edx)
1048+fxch %st(1)
1049+fstpl 80(%edx)
1050+fldl -64(%edx)
1051+fldl 32(%esp)
1052+fadd %st(0),%st(1)
1053+fsubl -64(%edx)
1054+fxch %st(4)
1055+fstpl 24(%esp)
1056+fxch %st(4)
1057+fstpl -72(%edx)
1058+fldl 96(%edx)
1059+fldl 16(%edx)
1060+fadd %st(0),%st(1)
1061+fsubl 96(%edx)
1062+fxch %st(2)
1063+fstpl 8(%edx)
1064+fxch %st(2)
1065+fstpl 88(%edx)
1066+fldl -56(%edx)
1067+fldl 40(%esp)
1068+fadd %st(0),%st(1)
1069+fsubl -56(%edx)
1070+fxch %st(5)
1071+fstpl 32(%esp)
1072+fxch %st(3)
1073+fstpl -64(%edx)
1074+fldl 104(%edx)
1075+fldl 24(%edx)
1076+fadd %st(0),%st(1)
1077+fsubl 104(%edx)
1078+fxch %st(3)
1079+fstpl 16(%edx)
1080+fxch %st(1)
1081+fstpl 96(%edx)
1082+fldl -48(%edx)
1083+fldl 48(%esp)
1084+fadd %st(0),%st(1)
1085+fsubl -48(%edx)
1086+fxch %st(4)
1087+fstpl 40(%esp)
1088+fxch %st(4)
1089+fstpl -56(%edx)
1090+fldl 112(%edx)
1091+fldl 32(%edx)
1092+fadd %st(0),%st(1)
1093+fsubl 112(%edx)
1094+fxch %st(2)
1095+fstpl 24(%edx)
1096+fxch %st(2)
1097+fstpl 104(%edx)
1098+fldl -40(%edx)
1099+fldl -120(%edx)
1100+fadd %st(0),%st(1)
1101+fsubl -40(%edx)
1102+fxch %st(5)
1103+fstpl 48(%esp)
1104+fxch %st(3)
1105+fstpl -48(%edx)
1106+fldl 120(%edx)
1107+fldl 40(%edx)
1108+fadd %st(0),%st(1)
1109+fsubl 120(%edx)
1110+fxch %st(3)
1111+fstpl 32(%edx)
1112+fxch %st(1)
1113+fstpl 112(%edx)
1114+fldl -32(%edx)
1115+fldl -112(%edx)
1116+fadd %st(0),%st(1)
1117+fsubl -32(%edx)
1118+fxch %st(4)
1119+fstpl -120(%edx)
1120+fxch %st(4)
1121+fstpl -40(%edx)
1122+fldl -128(%ecx)
1123+fldl 48(%edx)
1124+fadd %st(0),%st(1)
1125+fsubl -128(%ecx)
1126+fxch %st(2)
1127+fstpl 40(%edx)
1128+fxch %st(2)
1129+fstpl 120(%edx)
1130+fldl -24(%edx)
1131+fldl -104(%edx)
1132+fadd %st(0),%st(1)
1133+fsubl -24(%edx)
1134+fxch %st(5)
1135+fstpl -112(%edx)
1136+fxch %st(3)
1137+fstpl -32(%edx)
1138+fldl -120(%ecx)
1139+fldl 56(%edx)
1140+fadd %st(0),%st(1)
1141+fsubl -120(%ecx)
1142+fxch %st(3)
1143+fstpl 48(%edx)
1144+fxch %st(1)
1145+fstpl -128(%ecx)
1146+fldl -112(%ecx)
1147+fsubl curve25519_athlon_in0offset
1148+fldl curve25519_athlon_two0
1149+fsub %st(1),%st(0)
1150+fxch %st(4)
1151+fstpl -104(%edx)
1152+fxch %st(4)
1153+fstpl -24(%edx)
1154+fstpl 56(%edx)
1155+fstpl -120(%ecx)
1156+fxch %st(1)
1157+fstl 136(%ecx)
1158+fldl 0(%esp)
1159+fmul %st(2),%st(0)
1160+fldl -16(%edx)
1161+fmul %st(2),%st(0)
1162+faddp %st(0),%st(1)
1163+fldl 8(%esp)
1164+fmul %st(3),%st(0)
1165+fldl -8(%edx)
1166+fmul %st(3),%st(0)
1167+faddp %st(0),%st(1)
1168+fldl 16(%esp)
1169+fmul %st(4),%st(0)
1170+fldl 0(%edx)
1171+fmul %st(4),%st(0)
1172+faddp %st(0),%st(1)
1173+fldl 24(%esp)
1174+fmul %st(5),%st(0)
1175+fldl 8(%edx)
1176+fmul %st(5),%st(0)
1177+faddp %st(0),%st(1)
1178+fxch %st(3)
1179+fstpl -112(%ecx)
1180+fldl 32(%esp)
1181+fmul %st(5),%st(0)
1182+fldl 16(%edx)
1183+fmul %st(5),%st(0)
1184+faddp %st(0),%st(1)
1185+fxch %st(2)
1186+fstpl -104(%ecx)
1187+fldl 40(%esp)
1188+fmul %st(5),%st(0)
1189+fldl 24(%edx)
1190+fmul %st(5),%st(0)
1191+faddp %st(0),%st(1)
1192+fxch %st(1)
1193+fstpl -96(%ecx)
1194+fldl 48(%esp)
1195+fmul %st(5),%st(0)
1196+fldl 32(%edx)
1197+fmul %st(5),%st(0)
1198+faddp %st(0),%st(1)
1199+fxch %st(3)
1200+fstpl -88(%ecx)
1201+fldl -120(%edx)
1202+fmul %st(5),%st(0)
1203+fldl 40(%edx)
1204+fmul %st(5),%st(0)
1205+faddp %st(0),%st(1)
1206+fxch %st(2)
1207+fstpl -80(%ecx)
1208+fldl -112(%edx)
1209+fmul %st(5),%st(0)
1210+fldl 48(%edx)
1211+fmul %st(5),%st(0)
1212+faddp %st(0),%st(1)
1213+fxch %st(1)
1214+fstpl -72(%ecx)
1215+fldl -104(%edx)
1216+fmul %st(5),%st(0)
1217+fldl 56(%edx)
1218+fmul %st(5),%st(0)
1219+faddp %st(0),%st(1)
1220+fxch %st(3)
1221+fstpl -64(%ecx)
1222+fldl -96(%edx)
1223+fmul %st(5),%st(0)
1224+fldl 64(%edx)
1225+fmul %st(5),%st(0)
1226+faddp %st(0),%st(1)
1227+fxch %st(2)
1228+fstpl -56(%ecx)
1229+fldl -88(%edx)
1230+fmul %st(5),%st(0)
1231+fldl 72(%edx)
1232+fmul %st(5),%st(0)
1233+faddp %st(0),%st(1)
1234+fxch %st(1)
1235+fstpl -48(%ecx)
1236+fldl -80(%edx)
1237+fmul %st(5),%st(0)
1238+fldl 80(%edx)
1239+fmul %st(5),%st(0)
1240+faddp %st(0),%st(1)
1241+fxch %st(3)
1242+fstpl -40(%ecx)
1243+fldl -72(%edx)
1244+fmul %st(5),%st(0)
1245+fldl 88(%edx)
1246+fmul %st(5),%st(0)
1247+faddp %st(0),%st(1)
1248+fxch %st(2)
1249+fstpl -32(%ecx)
1250+fldl -64(%edx)
1251+fmul %st(5),%st(0)
1252+fldl 96(%edx)
1253+fmul %st(5),%st(0)
1254+faddp %st(0),%st(1)
1255+fxch %st(1)
1256+fstpl -24(%ecx)
1257+fldl -56(%edx)
1258+fmul %st(5),%st(0)
1259+fldl 104(%edx)
1260+fmul %st(5),%st(0)
1261+faddp %st(0),%st(1)
1262+fxch %st(3)
1263+fstpl -16(%ecx)
1264+fldl -48(%edx)
1265+fmul %st(5),%st(0)
1266+fldl 112(%edx)
1267+fmul %st(5),%st(0)
1268+faddp %st(0),%st(1)
1269+fxch %st(2)
1270+fstpl -8(%ecx)
1271+fldl -40(%edx)
1272+fmul %st(5),%st(0)
1273+fldl 120(%edx)
1274+fmul %st(5),%st(0)
1275+faddp %st(0),%st(1)
1276+fxch %st(1)
1277+fstpl 0(%ecx)
1278+fldl -32(%edx)
1279+fmul %st(5),%st(0)
1280+fldl -128(%ecx)
1281+fmul %st(5),%st(0)
1282+faddp %st(0),%st(1)
1283+fxch %st(3)
1284+fstpl 8(%ecx)
1285+fldl -24(%edx)
1286+fmulp %st(0),%st(5)
1287+fldl -120(%ecx)
1288+fmulp %st(0),%st(4)
1289+fxch %st(3)
1290+faddp %st(0),%st(4)
1291+fstpl 16(%ecx)
1292+fxch %st(1)
1293+fstpl 24(%ecx)
1294+fstpl 32(%ecx)
1295+fstpl 40(%ecx)
1296+fldl -24(%edx)
1297+fmull 56(%edx)
1298+fmull curve25519_athlon_scale
1299+fldl -96(%edx)
1300+fmull 48(%edx)
1301+faddp %st(0),%st(1)
1302+fldl -88(%edx)
1303+fmull 40(%edx)
1304+faddp %st(0),%st(1)
1305+fldl -96(%edx)
1306+fmull 56(%edx)
1307+fldl -80(%edx)
1308+fmull 32(%edx)
1309+faddp %st(0),%st(2)
1310+fldl -88(%edx)
1311+fmull 48(%edx)
1312+faddp %st(0),%st(1)
1313+fldl -72(%edx)
1314+fmull 24(%edx)
1315+faddp %st(0),%st(2)
1316+fldl -80(%edx)
1317+fmull 40(%edx)
1318+faddp %st(0),%st(1)
1319+fldl -64(%edx)
1320+fmull 16(%edx)
1321+faddp %st(0),%st(2)
1322+fldl -72(%edx)
1323+fmull 32(%edx)
1324+faddp %st(0),%st(1)
1325+fldl -88(%edx)
1326+fmull 56(%edx)
1327+fldl -56(%edx)
1328+fmull 8(%edx)
1329+faddp %st(0),%st(3)
1330+fldl -64(%edx)
1331+fmull 24(%edx)
1332+faddp %st(0),%st(2)
1333+fldl -80(%edx)
1334+fmull 48(%edx)
1335+faddp %st(0),%st(1)
1336+fldl -48(%edx)
1337+fmull 0(%edx)
1338+faddp %st(0),%st(3)
1339+fldl -56(%edx)
1340+fmull 16(%edx)
1341+faddp %st(0),%st(2)
1342+fldl -72(%edx)
1343+fmull 40(%edx)
1344+faddp %st(0),%st(1)
1345+fldl -40(%edx)
1346+fmull -8(%edx)
1347+faddp %st(0),%st(3)
1348+fldl -48(%edx)
1349+fmull 8(%edx)
1350+faddp %st(0),%st(2)
1351+fldl -64(%edx)
1352+fmull 32(%edx)
1353+faddp %st(0),%st(1)
1354+fldl -32(%edx)
1355+fmull -16(%edx)
1356+faddp %st(0),%st(3)
1357+fldl -40(%edx)
1358+fmull 0(%edx)
1359+faddp %st(0),%st(2)
1360+fldl -56(%edx)
1361+fmull 24(%edx)
1362+faddp %st(0),%st(1)
1363+fldl -80(%edx)
1364+fmull 56(%edx)
1365+fldl -48(%edx)
1366+fmull 16(%edx)
1367+faddp %st(0),%st(2)
1368+fldl -32(%edx)
1369+fmull -8(%edx)
1370+faddp %st(0),%st(3)
1371+fldl curve25519_athlon_alpha230
1372+fadd %st(4),%st(0)
1373+fldl -72(%edx)
1374+fmull 48(%edx)
1375+faddp %st(0),%st(2)
1376+fldl -40(%edx)
1377+fmull 8(%edx)
1378+faddp %st(0),%st(3)
1379+fldl -24(%edx)
1380+fmull -16(%edx)
1381+faddp %st(0),%st(4)
1382+fsubl curve25519_athlon_alpha230
1383+fldl -64(%edx)
1384+fmull 40(%edx)
1385+faddp %st(0),%st(2)
1386+fldl -72(%edx)
1387+fmull 56(%edx)
1388+fldl -32(%edx)
1389+fmull 0(%edx)
1390+faddp %st(0),%st(4)
1391+fxch %st(1)
1392+fadd %st(0),%st(4)
1393+fldl -56(%edx)
1394+fmull 32(%edx)
1395+faddp %st(0),%st(3)
1396+fldl -64(%edx)
1397+fmull 48(%edx)
1398+faddp %st(0),%st(2)
1399+fsubrp %st(0),%st(5)
1400+fldl curve25519_athlon_alpha255
1401+fadd %st(4),%st(0)
1402+fldl -48(%edx)
1403+fmull 24(%edx)
1404+faddp %st(0),%st(3)
1405+fldl -56(%edx)
1406+fmull 40(%edx)
1407+faddp %st(0),%st(2)
1408+fldl -24(%edx)
1409+fmull -8(%edx)
1410+faddp %st(0),%st(4)
1411+fsubl curve25519_athlon_alpha255
1412+fldl -40(%edx)
1413+fmull 16(%edx)
1414+faddp %st(0),%st(3)
1415+fldl -64(%edx)
1416+fmull 56(%edx)
1417+fldl -48(%edx)
1418+fmull 32(%edx)
1419+faddp %st(0),%st(3)
1420+fldl -32(%edx)
1421+fmull 8(%edx)
1422+faddp %st(0),%st(4)
1423+fxch %st(1)
1424+fadd %st(0),%st(4)
1425+fsubrp %st(0),%st(5)
1426+fxch %st(5)
1427+fstpl 64(%ecx)
1428+fldl -56(%edx)
1429+fmull 48(%edx)
1430+faddp %st(0),%st(5)
1431+fldl -40(%edx)
1432+fmull 24(%edx)
1433+faddp %st(0),%st(1)
1434+fldl -24(%edx)
1435+fmull 0(%edx)
1436+faddp %st(0),%st(2)
1437+fxch %st(2)
1438+fmull curve25519_athlon_scale
1439+fldl -48(%edx)
1440+fmull 40(%edx)
1441+faddp %st(0),%st(5)
1442+fldl -32(%edx)
1443+fmull 16(%edx)
1444+faddp %st(0),%st(3)
1445+fxch %st(1)
1446+fmull curve25519_athlon_scale
1447+fldl -96(%edx)
1448+fmull -16(%edx)
1449+faddp %st(0),%st(2)
1450+fxch %st(3)
1451+fstpl 72(%ecx)
1452+fldl -56(%edx)
1453+fmull 56(%edx)
1454+fldl -40(%edx)
1455+fmull 32(%edx)
1456+faddp %st(0),%st(5)
1457+fldl -24(%edx)
1458+fmull 8(%edx)
1459+faddp %st(0),%st(3)
1460+fldl -96(%edx)
1461+fmull -8(%edx)
1462+faddp %st(0),%st(4)
1463+fldl curve25519_athlon_alpha26
1464+fadd %st(2),%st(0)
1465+fldl -48(%edx)
1466+fmull 48(%edx)
1467+faddp %st(0),%st(2)
1468+fldl -32(%edx)
1469+fmull 24(%edx)
1470+faddp %st(0),%st(6)
1471+fxch %st(3)
1472+fmull curve25519_athlon_scale
1473+fldl -88(%edx)
1474+fmull -16(%edx)
1475+faddp %st(0),%st(5)
1476+fxch %st(3)
1477+fsubl curve25519_athlon_alpha26
1478+fldl -40(%edx)
1479+fmull 40(%edx)
1480+faddp %st(0),%st(2)
1481+fldl -24(%edx)
1482+fmull 16(%edx)
1483+faddp %st(0),%st(6)
1484+fldl -96(%edx)
1485+fmull 0(%edx)
1486+faddp %st(0),%st(4)
1487+fadd %st(0),%st(4)
1488+fsubrp %st(0),%st(2)
1489+fldl -48(%edx)
1490+fmull 56(%edx)
1491+fldl -32(%edx)
1492+fmull 32(%edx)
1493+faddp %st(0),%st(2)
1494+fxch %st(5)
1495+fmull curve25519_athlon_scale
1496+fldl -88(%edx)
1497+fmull -8(%edx)
1498+faddp %st(0),%st(4)
1499+fldl curve25519_athlon_alpha51
1500+fadd %st(5),%st(0)
1501+fldl -40(%edx)
1502+fmull 48(%edx)
1503+faddp %st(0),%st(7)
1504+fldl -24(%edx)
1505+fmull 24(%edx)
1506+faddp %st(0),%st(3)
1507+fldl -96(%edx)
1508+fmull 8(%edx)
1509+faddp %st(0),%st(2)
1510+fldl -80(%edx)
1511+fmull -16(%edx)
1512+faddp %st(0),%st(5)
1513+fsubl curve25519_athlon_alpha51
1514+fxch %st(3)
1515+fstpl 48(%ecx)
1516+fldl -32(%edx)
1517+fmull 40(%edx)
1518+faddp %st(0),%st(6)
1519+fxch %st(1)
1520+fmull curve25519_athlon_scale
1521+fldl -88(%edx)
1522+fmull 0(%edx)
1523+faddp %st(0),%st(2)
1524+fxch %st(2)
1525+fadd %st(0),%st(3)
1526+fsubrp %st(0),%st(4)
1527+fldl -40(%edx)
1528+fmull 56(%edx)
1529+fldl -24(%edx)
1530+fmull 32(%edx)
1531+faddp %st(0),%st(6)
1532+fldl -96(%edx)
1533+fmull 16(%edx)
1534+faddp %st(0),%st(3)
1535+fldl -80(%edx)
1536+fmull -8(%edx)
1537+faddp %st(0),%st(2)
1538+fldl curve25519_athlon_alpha77
1539+fadd %st(4),%st(0)
1540+fldl -32(%edx)
1541+fmull 48(%edx)
1542+faddp %st(0),%st(2)
1543+fxch %st(6)
1544+fmull curve25519_athlon_scale
1545+fldl -88(%edx)
1546+fmull 8(%edx)
1547+faddp %st(0),%st(4)
1548+fldl -72(%edx)
1549+fmull -16(%edx)
1550+faddp %st(0),%st(3)
1551+fxch %st(6)
1552+fsubl curve25519_athlon_alpha77
1553+fxch %st(5)
1554+fstpl 56(%ecx)
1555+fldl -24(%edx)
1556+fmull 40(%edx)
1557+faddp %st(0),%st(1)
1558+fldl -96(%edx)
1559+fmull 24(%edx)
1560+faddp %st(0),%st(6)
1561+fldl -80(%edx)
1562+fmull 0(%edx)
1563+faddp %st(0),%st(3)
1564+fxch %st(4)
1565+fadd %st(0),%st(1)
1566+fsubrp %st(0),%st(3)
1567+fldl -32(%edx)
1568+fmull 56(%edx)
1569+fxch %st(4)
1570+fmull curve25519_athlon_scale
1571+fldl -88(%edx)
1572+fmull 16(%edx)
1573+faddp %st(0),%st(6)
1574+fldl -72(%edx)
1575+fmull -8(%edx)
1576+faddp %st(0),%st(3)
1577+fldl curve25519_athlon_alpha102
1578+fadd %st(2),%st(0)
1579+fldl -24(%edx)
1580+fmull 48(%edx)
1581+faddp %st(0),%st(6)
1582+fldl -96(%edx)
1583+fmull 32(%edx)
1584+faddp %st(0),%st(2)
1585+fldl -80(%edx)
1586+fmull 8(%edx)
1587+faddp %st(0),%st(7)
1588+fldl -64(%edx)
1589+fmull -16(%edx)
1590+faddp %st(0),%st(4)
1591+fsubl curve25519_athlon_alpha102
1592+fxch %st(4)
1593+fstpl -24(%edx)
1594+fxch %st(4)
1595+fmull curve25519_athlon_scale
1596+fldl -88(%edx)
1597+fmull 24(%edx)
1598+faddp %st(0),%st(5)
1599+fldl -72(%edx)
1600+fmull 0(%edx)
1601+faddp %st(0),%st(6)
1602+fxch %st(3)
1603+fadd %st(0),%st(2)
1604+fsubrp %st(0),%st(1)
1605+fldl -96(%edx)
1606+fmull 40(%edx)
1607+faddp %st(0),%st(3)
1608+fldl -80(%edx)
1609+fmull 16(%edx)
1610+faddp %st(0),%st(4)
1611+fldl -64(%edx)
1612+fmull -8(%edx)
1613+faddp %st(0),%st(5)
1614+fldl curve25519_athlon_alpha128
1615+fadd %st(2),%st(0)
1616+fldl -88(%edx)
1617+fmull 32(%edx)
1618+faddp %st(0),%st(4)
1619+fldl -72(%edx)
1620+fmull 8(%edx)
1621+faddp %st(0),%st(5)
1622+fldl -56(%edx)
1623+fmull -16(%edx)
1624+faddp %st(0),%st(6)
1625+fsubl curve25519_athlon_alpha128
1626+fxch %st(1)
1627+fstpl -96(%edx)
1628+fldl -80(%edx)
1629+fmull 24(%edx)
1630+faddp %st(0),%st(3)
1631+fldl -64(%edx)
1632+fmull 0(%edx)
1633+faddp %st(0),%st(4)
1634+fadd %st(0),%st(4)
1635+fsubrp %st(0),%st(1)
1636+fstpl -88(%edx)
1637+fldl -72(%edx)
1638+fmull 16(%edx)
1639+faddp %st(0),%st(1)
1640+fldl -56(%edx)
1641+fmull -8(%edx)
1642+faddp %st(0),%st(2)
1643+fldl curve25519_athlon_alpha153
1644+fadd %st(3),%st(0)
1645+fldl -64(%edx)
1646+fmull 8(%edx)
1647+faddp %st(0),%st(2)
1648+fldl -48(%edx)
1649+fmull -16(%edx)
1650+faddp %st(0),%st(3)
1651+fsubl curve25519_athlon_alpha153
1652+fldl -56(%edx)
1653+fmull 0(%edx)
1654+faddp %st(0),%st(2)
1655+fadd %st(0),%st(2)
1656+fsubrp %st(0),%st(3)
1657+fxch %st(2)
1658+fstpl -80(%edx)
1659+fldl -48(%edx)
1660+fmull -8(%edx)
1661+faddp %st(0),%st(2)
1662+fldl curve25519_athlon_alpha179
1663+fadd %st(1),%st(0)
1664+fldl -40(%edx)
1665+fmull -16(%edx)
1666+faddp %st(0),%st(3)
1667+fsubl curve25519_athlon_alpha179
1668+fldl 64(%ecx)
1669+fldl 72(%ecx)
1670+fxch %st(2)
1671+fadd %st(0),%st(4)
1672+fsubrp %st(0),%st(3)
1673+fldl curve25519_athlon_alpha204
1674+fadd %st(4),%st(0)
1675+fsubl curve25519_athlon_alpha204
1676+fadd %st(0),%st(1)
1677+fsubrp %st(0),%st(4)
1678+fldl curve25519_athlon_alpha230
1679+fadd %st(1),%st(0)
1680+fsubl curve25519_athlon_alpha230
1681+fsubr %st(0),%st(1)
1682+faddp %st(0),%st(2)
1683+fxch %st(2)
1684+fstpl -72(%edx)
1685+fxch %st(2)
1686+fstpl -64(%edx)
1687+fstpl -56(%edx)
1688+fstpl -48(%edx)
1689+fldl -104(%edx)
1690+fmull -120(%ecx)
1691+fmull curve25519_athlon_scale
1692+fldl 0(%esp)
1693+fmull -128(%ecx)
1694+faddp %st(0),%st(1)
1695+fldl 8(%esp)
1696+fmull 120(%edx)
1697+faddp %st(0),%st(1)
1698+fldl 0(%esp)
1699+fmull -120(%ecx)
1700+fldl 16(%esp)
1701+fmull 112(%edx)
1702+faddp %st(0),%st(2)
1703+fldl 8(%esp)
1704+fmull -128(%ecx)
1705+faddp %st(0),%st(1)
1706+fldl 24(%esp)
1707+fmull 104(%edx)
1708+faddp %st(0),%st(2)
1709+fldl 16(%esp)
1710+fmull 120(%edx)
1711+faddp %st(0),%st(1)
1712+fldl 32(%esp)
1713+fmull 96(%edx)
1714+faddp %st(0),%st(2)
1715+fldl 24(%esp)
1716+fmull 112(%edx)
1717+faddp %st(0),%st(1)
1718+fldl 8(%esp)
1719+fmull -120(%ecx)
1720+fldl 40(%esp)
1721+fmull 88(%edx)
1722+faddp %st(0),%st(3)
1723+fldl 32(%esp)
1724+fmull 104(%edx)
1725+faddp %st(0),%st(2)
1726+fldl 16(%esp)
1727+fmull -128(%ecx)
1728+faddp %st(0),%st(1)
1729+fldl 48(%esp)
1730+fmull 80(%edx)
1731+faddp %st(0),%st(3)
1732+fldl 40(%esp)
1733+fmull 96(%edx)
1734+faddp %st(0),%st(2)
1735+fldl 24(%esp)
1736+fmull 120(%edx)
1737+faddp %st(0),%st(1)
1738+fldl -120(%edx)
1739+fmull 72(%edx)
1740+faddp %st(0),%st(3)
1741+fldl 48(%esp)
1742+fmull 88(%edx)
1743+faddp %st(0),%st(2)
1744+fldl 32(%esp)
1745+fmull 112(%edx)
1746+faddp %st(0),%st(1)
1747+fldl -112(%edx)
1748+fmull 64(%edx)
1749+faddp %st(0),%st(3)
1750+fldl -120(%edx)
1751+fmull 80(%edx)
1752+faddp %st(0),%st(2)
1753+fldl 40(%esp)
1754+fmull 104(%edx)
1755+faddp %st(0),%st(1)
1756+fldl 16(%esp)
1757+fmull -120(%ecx)
1758+fldl 48(%esp)
1759+fmull 96(%edx)
1760+faddp %st(0),%st(2)
1761+fldl -112(%edx)
1762+fmull 72(%edx)
1763+faddp %st(0),%st(3)
1764+fldl curve25519_athlon_alpha230
1765+fadd %st(4),%st(0)
1766+fldl 24(%esp)
1767+fmull -128(%ecx)
1768+faddp %st(0),%st(2)
1769+fldl -120(%edx)
1770+fmull 88(%edx)
1771+faddp %st(0),%st(3)
1772+fldl -104(%edx)
1773+fmull 64(%edx)
1774+faddp %st(0),%st(4)
1775+fsubl curve25519_athlon_alpha230
1776+fldl 32(%esp)
1777+fmull 120(%edx)
1778+faddp %st(0),%st(2)
1779+fldl 24(%esp)
1780+fmull -120(%ecx)
1781+fldl -112(%edx)
1782+fmull 80(%edx)
1783+faddp %st(0),%st(4)
1784+fxch %st(1)
1785+fadd %st(0),%st(4)
1786+fldl 40(%esp)
1787+fmull 112(%edx)
1788+faddp %st(0),%st(3)
1789+fldl 32(%esp)
1790+fmull -128(%ecx)
1791+faddp %st(0),%st(2)
1792+fsubrp %st(0),%st(5)
1793+fldl curve25519_athlon_alpha255
1794+fadd %st(4),%st(0)
1795+fldl 48(%esp)
1796+fmull 104(%edx)
1797+faddp %st(0),%st(3)
1798+fldl 40(%esp)
1799+fmull 120(%edx)
1800+faddp %st(0),%st(2)
1801+fldl -104(%edx)
1802+fmull 72(%edx)
1803+faddp %st(0),%st(4)
1804+fsubl curve25519_athlon_alpha255
1805+fldl -120(%edx)
1806+fmull 96(%edx)
1807+faddp %st(0),%st(3)
1808+fldl 32(%esp)
1809+fmull -120(%ecx)
1810+fldl 48(%esp)
1811+fmull 112(%edx)
1812+faddp %st(0),%st(3)
1813+fldl -112(%edx)
1814+fmull 88(%edx)
1815+faddp %st(0),%st(4)
1816+fxch %st(1)
1817+fadd %st(0),%st(4)
1818+fsubrp %st(0),%st(5)
1819+fxch %st(5)
1820+fstpl 8(%edx)
1821+fldl 40(%esp)
1822+fmull -128(%ecx)
1823+faddp %st(0),%st(5)
1824+fldl -120(%edx)
1825+fmull 104(%edx)
1826+faddp %st(0),%st(1)
1827+fldl -104(%edx)
1828+fmull 80(%edx)
1829+faddp %st(0),%st(2)
1830+fxch %st(2)
1831+fmull curve25519_athlon_scale
1832+fldl 48(%esp)
1833+fmull 120(%edx)
1834+faddp %st(0),%st(5)
1835+fldl -112(%edx)
1836+fmull 96(%edx)
1837+faddp %st(0),%st(3)
1838+fxch %st(1)
1839+fmull curve25519_athlon_scale
1840+fldl 0(%esp)
1841+fmull 64(%edx)
1842+faddp %st(0),%st(2)
1843+fxch %st(3)
1844+fstpl 16(%edx)
1845+fldl 40(%esp)
1846+fmull -120(%ecx)
1847+fldl -120(%edx)
1848+fmull 112(%edx)
1849+faddp %st(0),%st(5)
1850+fldl -104(%edx)
1851+fmull 88(%edx)
1852+faddp %st(0),%st(3)
1853+fldl 0(%esp)
1854+fmull 72(%edx)
1855+faddp %st(0),%st(4)
1856+fldl curve25519_athlon_alpha26
1857+fadd %st(2),%st(0)
1858+fldl 48(%esp)
1859+fmull -128(%ecx)
1860+faddp %st(0),%st(2)
1861+fldl -112(%edx)
1862+fmull 104(%edx)
1863+faddp %st(0),%st(6)
1864+fxch %st(3)
1865+fmull curve25519_athlon_scale
1866+fldl 8(%esp)
1867+fmull 64(%edx)
1868+faddp %st(0),%st(5)
1869+fxch %st(3)
1870+fsubl curve25519_athlon_alpha26
1871+fldl -120(%edx)
1872+fmull 120(%edx)
1873+faddp %st(0),%st(2)
1874+fldl -104(%edx)
1875+fmull 96(%edx)
1876+faddp %st(0),%st(6)
1877+fldl 0(%esp)
1878+fmull 80(%edx)
1879+faddp %st(0),%st(4)
1880+fadd %st(0),%st(4)
1881+fsubrp %st(0),%st(2)
1882+fldl 48(%esp)
1883+fmull -120(%ecx)
1884+fldl -112(%edx)
1885+fmull 112(%edx)
1886+faddp %st(0),%st(2)
1887+fxch %st(5)
1888+fmull curve25519_athlon_scale
1889+fldl 8(%esp)
1890+fmull 72(%edx)
1891+faddp %st(0),%st(4)
1892+fldl curve25519_athlon_alpha51
1893+fadd %st(5),%st(0)
1894+fldl -120(%edx)
1895+fmull -128(%ecx)
1896+faddp %st(0),%st(7)
1897+fldl -104(%edx)
1898+fmull 104(%edx)
1899+faddp %st(0),%st(3)
1900+fldl 0(%esp)
1901+fmull 88(%edx)
1902+faddp %st(0),%st(2)
1903+fldl 16(%esp)
1904+fmull 64(%edx)
1905+faddp %st(0),%st(5)
1906+fsubl curve25519_athlon_alpha51
1907+fxch %st(3)
1908+fstpl -40(%edx)
1909+fldl -112(%edx)
1910+fmull 120(%edx)
1911+faddp %st(0),%st(6)
1912+fxch %st(1)
1913+fmull curve25519_athlon_scale
1914+fldl 8(%esp)
1915+fmull 80(%edx)
1916+faddp %st(0),%st(2)
1917+fxch %st(2)
1918+fadd %st(0),%st(3)
1919+fsubrp %st(0),%st(4)
1920+fldl -120(%edx)
1921+fmull -120(%ecx)
1922+fldl -104(%edx)
1923+fmull 112(%edx)
1924+faddp %st(0),%st(6)
1925+fldl 0(%esp)
1926+fmull 96(%edx)
1927+faddp %st(0),%st(3)
1928+fldl 16(%esp)
1929+fmull 72(%edx)
1930+faddp %st(0),%st(2)
1931+fldl curve25519_athlon_alpha77
1932+fadd %st(4),%st(0)
1933+fldl -112(%edx)
1934+fmull -128(%ecx)
1935+faddp %st(0),%st(2)
1936+fxch %st(6)
1937+fmull curve25519_athlon_scale
1938+fldl 8(%esp)
1939+fmull 88(%edx)
1940+faddp %st(0),%st(4)
1941+fldl 24(%esp)
1942+fmull 64(%edx)
1943+faddp %st(0),%st(3)
1944+fxch %st(6)
1945+fsubl curve25519_athlon_alpha77
1946+fxch %st(5)
1947+fstpl -32(%edx)
1948+fldl -104(%edx)
1949+fmull 120(%edx)
1950+faddp %st(0),%st(1)
1951+fldl 0(%esp)
1952+fmull 104(%edx)
1953+faddp %st(0),%st(6)
1954+fldl 16(%esp)
1955+fmull 80(%edx)
1956+faddp %st(0),%st(3)
1957+fxch %st(4)
1958+fadd %st(0),%st(1)
1959+fsubrp %st(0),%st(3)
1960+fldl -112(%edx)
1961+fmull -120(%ecx)
1962+fxch %st(4)
1963+fmull curve25519_athlon_scale
1964+fldl 8(%esp)
1965+fmull 96(%edx)
1966+faddp %st(0),%st(6)
1967+fldl 24(%esp)
1968+fmull 72(%edx)
1969+faddp %st(0),%st(3)
1970+fldl curve25519_athlon_alpha102
1971+fadd %st(2),%st(0)
1972+fldl -104(%edx)
1973+fmull -128(%ecx)
1974+faddp %st(0),%st(6)
1975+fldl 0(%esp)
1976+fmull 112(%edx)
1977+faddp %st(0),%st(2)
1978+fldl 16(%esp)
1979+fmull 88(%edx)
1980+faddp %st(0),%st(7)
1981+fldl 32(%esp)
1982+fmull 64(%edx)
1983+faddp %st(0),%st(4)
1984+fsubl curve25519_athlon_alpha102
1985+fxch %st(4)
1986+fstpl -104(%edx)
1987+fxch %st(4)
1988+fmull curve25519_athlon_scale
1989+fldl 8(%esp)
1990+fmull 104(%edx)
1991+faddp %st(0),%st(5)
1992+fldl 24(%esp)
1993+fmull 80(%edx)
1994+faddp %st(0),%st(6)
1995+fxch %st(3)
1996+fadd %st(0),%st(2)
1997+fsubrp %st(0),%st(1)
1998+fldl 0(%esp)
1999+fmull 120(%edx)
2000+faddp %st(0),%st(3)
2001+fldl 16(%esp)
2002+fmull 96(%edx)
2003+faddp %st(0),%st(4)
2004+fldl 32(%esp)
2005+fmull 72(%edx)
2006+faddp %st(0),%st(5)
2007+fldl curve25519_athlon_alpha128
2008+fadd %st(2),%st(0)
2009+fldl 8(%esp)
2010+fmull 112(%edx)
2011+faddp %st(0),%st(4)
2012+fldl 24(%esp)
2013+fmull 88(%edx)
2014+faddp %st(0),%st(5)
2015+fldl 40(%esp)
2016+fmull 64(%edx)
2017+faddp %st(0),%st(6)
2018+fsubl curve25519_athlon_alpha128
2019+fxch %st(1)
2020+fstpl -16(%edx)
2021+fldl 16(%esp)
2022+fmull 104(%edx)
2023+faddp %st(0),%st(3)
2024+fldl 32(%esp)
2025+fmull 80(%edx)
2026+faddp %st(0),%st(4)
2027+fadd %st(0),%st(4)
2028+fsubrp %st(0),%st(1)
2029+fstpl -8(%edx)
2030+fldl 24(%esp)
2031+fmull 96(%edx)
2032+faddp %st(0),%st(1)
2033+fldl 40(%esp)
2034+fmull 72(%edx)
2035+faddp %st(0),%st(2)
2036+fldl curve25519_athlon_alpha153
2037+fadd %st(3),%st(0)
2038+fldl 32(%esp)
2039+fmull 88(%edx)
2040+faddp %st(0),%st(2)
2041+fldl 48(%esp)
2042+fmull 64(%edx)
2043+faddp %st(0),%st(3)
2044+fsubl curve25519_athlon_alpha153
2045+fldl 40(%esp)
2046+fmull 80(%edx)
2047+faddp %st(0),%st(2)
2048+fadd %st(0),%st(2)
2049+fsubrp %st(0),%st(3)
2050+fxch %st(2)
2051+fstpl 0(%edx)
2052+fldl 48(%esp)
2053+fmull 72(%edx)
2054+faddp %st(0),%st(2)
2055+fldl curve25519_athlon_alpha179
2056+fadd %st(1),%st(0)
2057+fldl -120(%edx)
2058+fmull 64(%edx)
2059+faddp %st(0),%st(3)
2060+fsubl curve25519_athlon_alpha179
2061+fldl 8(%edx)
2062+fldl 16(%edx)
2063+fxch %st(2)
2064+fadd %st(0),%st(4)
2065+fsubrp %st(0),%st(3)
2066+fldl curve25519_athlon_alpha204
2067+fadd %st(4),%st(0)
2068+fsubl curve25519_athlon_alpha204
2069+fadd %st(0),%st(1)
2070+fsubrp %st(0),%st(4)
2071+fldl curve25519_athlon_alpha230
2072+fadd %st(1),%st(0)
2073+fsubl curve25519_athlon_alpha230
2074+fsubr %st(0),%st(1)
2075+faddp %st(0),%st(2)
2076+fxch %st(2)
2077+fstpl 8(%edx)
2078+fxch %st(2)
2079+fstpl 16(%edx)
2080+fstpl 24(%edx)
2081+fstpl 32(%edx)
2082+fldl -40(%ecx)
2083+fmul %st(0),%st(0)
2084+fldl -112(%ecx)
2085+fadd %st(0),%st(0)
2086+fldl -104(%ecx)
2087+fadd %st(0),%st(0)
2088+fldl -96(%ecx)
2089+fadd %st(0),%st(0)
2090+fldl -56(%ecx)
2091+fxch %st(4)
2092+fmull curve25519_athlon_scale
2093+fldl -40(%ecx)
2094+fmul %st(4),%st(0)
2095+fldl -48(%ecx)
2096+fmul %st(4),%st(0)
2097+faddp %st(0),%st(1)
2098+fxch %st(4)
2099+fstl 0(%esp)
2100+fxch %st(3)
2101+fstl 8(%esp)
2102+fxch %st(3)
2103+fmull -48(%ecx)
2104+faddp %st(0),%st(1)
2105+fldl -64(%ecx)
2106+fxch %st(5)
2107+fmul %st(0),%st(3)
2108+fxch %st(3)
2109+faddp %st(0),%st(1)
2110+fxch %st(2)
2111+fadd %st(0),%st(0)
2112+fldl -56(%ecx)
2113+fmul %st(2),%st(0)
2114+faddp %st(0),%st(4)
2115+fxch %st(1)
2116+fstl 16(%esp)
2117+fldl -72(%ecx)
2118+fxch %st(5)
2119+fmul %st(0),%st(1)
2120+fxch %st(1)
2121+faddp %st(0),%st(3)
2122+fadd %st(0),%st(0)
2123+fstpl 48(%esp)
2124+fldl -88(%ecx)
2125+fadd %st(0),%st(0)
2126+fstl 24(%esp)
2127+fldl -64(%ecx)
2128+fmul %st(1),%st(0)
2129+faddp %st(0),%st(4)
2130+fmul %st(4),%st(0)
2131+faddp %st(0),%st(2)
2132+fxch %st(3)
2133+fadd %st(0),%st(0)
2134+fstpl 40(%esp)
2135+fldl -80(%ecx)
2136+fmul %st(0),%st(0)
2137+faddp %st(0),%st(1)
2138+fldl curve25519_athlon_alpha230
2139+fadd %st(1),%st(0)
2140+fsubl curve25519_athlon_alpha230
2141+fsubr %st(0),%st(1)
2142+fldl 8(%esp)
2143+fldl -40(%ecx)
2144+fmul %st(0),%st(1)
2145+fldl 16(%esp)
2146+fmul %st(0),%st(1)
2147+fldl -48(%ecx)
2148+fmul %st(0),%st(1)
2149+fxch %st(1)
2150+faddp %st(0),%st(3)
2151+fldl 24(%esp)
2152+fmul %st(0),%st(1)
2153+fxch %st(1)
2154+faddp %st(0),%st(2)
2155+fldl -80(%ecx)
2156+fadd %st(0),%st(0)
2157+fstl 32(%esp)
2158+fmull -72(%ecx)
2159+faddp %st(0),%st(6)
2160+fxch %st(3)
2161+faddp %st(0),%st(5)
2162+fldl curve25519_athlon_alpha255
2163+fadd %st(5),%st(0)
2164+fsubl curve25519_athlon_alpha255
2165+fsubr %st(0),%st(5)
2166+fldl -56(%ecx)
2167+fmul %st(0),%st(4)
2168+fxch %st(4)
2169+faddp %st(0),%st(3)
2170+fldl 32(%esp)
2171+fmul %st(0),%st(4)
2172+fxch %st(4)
2173+faddp %st(0),%st(2)
2174+fldl -64(%ecx)
2175+fmul %st(0),%st(4)
2176+fxch %st(4)
2177+faddp %st(0),%st(3)
2178+fxch %st(3)
2179+fmull 40(%esp)
2180+faddp %st(0),%st(1)
2181+fxch %st(3)
2182+fstpl -120(%edx)
2183+fldl -72(%ecx)
2184+fmul %st(0),%st(0)
2185+faddp %st(0),%st(1)
2186+fxch %st(2)
2187+fmull curve25519_athlon_scale
2188+fxch %st(3)
2189+fstpl -112(%edx)
2190+faddp %st(0),%st(1)
2191+fmull curve25519_athlon_scale
2192+fldl 24(%esp)
2193+fmull -40(%ecx)
2194+fldl -112(%ecx)
2195+fmul %st(0),%st(0)
2196+faddp %st(0),%st(2)
2197+fldl 32(%esp)
2198+fmull -48(%ecx)
2199+faddp %st(0),%st(1)
2200+fldl 0(%esp)
2201+fmull -104(%ecx)
2202+faddp %st(0),%st(3)
2203+fldl 40(%esp)
2204+fmull -56(%ecx)
2205+faddp %st(0),%st(1)
2206+fldl curve25519_athlon_alpha26
2207+fadd %st(2),%st(0)
2208+fsubl curve25519_athlon_alpha26
2209+fsubr %st(0),%st(2)
2210+faddp %st(0),%st(3)
2211+fldl curve25519_athlon_alpha51
2212+fadd %st(3),%st(0)
2213+fsubl curve25519_athlon_alpha51
2214+fsubr %st(0),%st(3)
2215+fldl -64(%ecx)
2216+fmul %st(0),%st(0)
2217+faddp %st(0),%st(2)
2218+fxch %st(1)
2219+fmull curve25519_athlon_scale
2220+fldl 0(%esp)
2221+fmull -96(%ecx)
2222+faddp %st(0),%st(1)
2223+fldl -104(%ecx)
2224+fmul %st(0),%st(0)
2225+faddp %st(0),%st(1)
2226+faddp %st(0),%st(1)
2227+fldl curve25519_athlon_alpha77
2228+fadd %st(1),%st(0)
2229+fsubl curve25519_athlon_alpha77
2230+fsubr %st(0),%st(1)
2231+fxch %st(2)
2232+fstpl 64(%edx)
2233+fldl 32(%esp)
2234+fmull -40(%ecx)
2235+fldl 40(%esp)
2236+fmull -48(%ecx)
2237+faddp %st(0),%st(1)
2238+fldl 48(%esp)
2239+fmull -56(%ecx)
2240+faddp %st(0),%st(1)
2241+fmull curve25519_athlon_scale
2242+fldl 0(%esp)
2243+fmull -88(%ecx)
2244+faddp %st(0),%st(1)
2245+fldl 8(%esp)
2246+fmull -96(%ecx)
2247+faddp %st(0),%st(1)
2248+faddp %st(0),%st(2)
2249+fldl curve25519_athlon_alpha102
2250+fadd %st(2),%st(0)
2251+fsubl curve25519_athlon_alpha102
2252+fsubr %st(0),%st(2)
2253+fxch %st(3)
2254+fstpl 72(%edx)
2255+fldl 40(%esp)
2256+fmull -40(%ecx)
2257+fldl 48(%esp)
2258+fmull -48(%ecx)
2259+faddp %st(0),%st(1)
2260+fldl -56(%ecx)
2261+fmul %st(0),%st(0)
2262+faddp %st(0),%st(1)
2263+fmull curve25519_athlon_scale
2264+fldl 0(%esp)
2265+fmull -80(%ecx)
2266+faddp %st(0),%st(1)
2267+fldl 8(%esp)
2268+fmull -88(%ecx)
2269+faddp %st(0),%st(1)
2270+fldl -96(%ecx)
2271+fmul %st(0),%st(0)
2272+faddp %st(0),%st(1)
2273+faddp %st(0),%st(3)
2274+fldl curve25519_athlon_alpha128
2275+fadd %st(3),%st(0)
2276+fsubl curve25519_athlon_alpha128
2277+fsubr %st(0),%st(3)
2278+fxch %st(1)
2279+fstpl 80(%edx)
2280+fldl 48(%esp)
2281+fldl -40(%ecx)
2282+fmul %st(0),%st(1)
2283+fmul %st(5),%st(0)
2284+fxch %st(5)
2285+fmull -48(%ecx)
2286+faddp %st(0),%st(1)
2287+fmull curve25519_athlon_scale
2288+fldl 0(%esp)
2289+fmull -72(%ecx)
2290+faddp %st(0),%st(1)
2291+fldl 8(%esp)
2292+fmull -80(%ecx)
2293+faddp %st(0),%st(1)
2294+fldl 16(%esp)
2295+fmull -88(%ecx)
2296+faddp %st(0),%st(1)
2297+faddp %st(0),%st(1)
2298+fldl curve25519_athlon_alpha153
2299+fadd %st(1),%st(0)
2300+fsubl curve25519_athlon_alpha153
2301+fsubr %st(0),%st(1)
2302+fxch %st(2)
2303+fstpl 88(%edx)
2304+fldl -48(%ecx)
2305+fmul %st(0),%st(0)
2306+faddp %st(0),%st(4)
2307+fxch %st(3)
2308+fmull curve25519_athlon_scale
2309+fldl 0(%esp)
2310+fmull -64(%ecx)
2311+faddp %st(0),%st(1)
2312+fldl 8(%esp)
2313+fmull -72(%ecx)
2314+faddp %st(0),%st(1)
2315+fldl 16(%esp)
2316+fmull -80(%ecx)
2317+faddp %st(0),%st(1)
2318+fldl -88(%ecx)
2319+fmul %st(0),%st(0)
2320+faddp %st(0),%st(1)
2321+faddp %st(0),%st(1)
2322+fldl curve25519_athlon_alpha179
2323+fadd %st(1),%st(0)
2324+fsubl curve25519_athlon_alpha179
2325+fsubr %st(0),%st(1)
2326+fldl -48(%ecx)
2327+fadd %st(0),%st(0)
2328+fmull -40(%ecx)
2329+fmull curve25519_athlon_scale
2330+fldl 0(%esp)
2331+fmull -56(%ecx)
2332+faddp %st(0),%st(1)
2333+fldl 8(%esp)
2334+fmull -64(%ecx)
2335+faddp %st(0),%st(1)
2336+fldl 16(%esp)
2337+fmull -72(%ecx)
2338+faddp %st(0),%st(1)
2339+fldl 24(%esp)
2340+fmull -80(%ecx)
2341+faddp %st(0),%st(1)
2342+faddp %st(0),%st(1)
2343+fldl curve25519_athlon_alpha204
2344+fadd %st(1),%st(0)
2345+fsubl curve25519_athlon_alpha204
2346+fsubr %st(0),%st(1)
2347+fldl -120(%edx)
2348+faddp %st(0),%st(1)
2349+fldl curve25519_athlon_alpha230
2350+fadd %st(1),%st(0)
2351+fldl -112(%edx)
2352+fxch %st(1)
2353+fsubl curve25519_athlon_alpha230
2354+fsubr %st(0),%st(2)
2355+faddp %st(0),%st(1)
2356+fxch %st(4)
2357+fstpl 96(%edx)
2358+fxch %st(4)
2359+fstpl 104(%edx)
2360+fxch %st(1)
2361+fstpl 112(%edx)
2362+fstpl 120(%edx)
2363+fxch %st(1)
2364+fstpl -128(%ecx)
2365+fstpl -120(%ecx)
2366+fldl 40(%ecx)
2367+fmul %st(0),%st(0)
2368+fldl -32(%ecx)
2369+fadd %st(0),%st(0)
2370+fldl -24(%ecx)
2371+fadd %st(0),%st(0)
2372+fldl -16(%ecx)
2373+fadd %st(0),%st(0)
2374+fldl 24(%ecx)
2375+fxch %st(4)
2376+fmull curve25519_athlon_scale
2377+fldl 40(%ecx)
2378+fmul %st(4),%st(0)
2379+fldl 32(%ecx)
2380+fmul %st(4),%st(0)
2381+faddp %st(0),%st(1)
2382+fxch %st(4)
2383+fstl 0(%esp)
2384+fxch %st(3)
2385+fstl 8(%esp)
2386+fxch %st(3)
2387+fmull 32(%ecx)
2388+faddp %st(0),%st(1)
2389+fldl 16(%ecx)
2390+fxch %st(5)
2391+fmul %st(0),%st(3)
2392+fxch %st(3)
2393+faddp %st(0),%st(1)
2394+fxch %st(2)
2395+fadd %st(0),%st(0)
2396+fldl 24(%ecx)
2397+fmul %st(2),%st(0)
2398+faddp %st(0),%st(4)
2399+fxch %st(1)
2400+fstl 16(%esp)
2401+fldl 8(%ecx)
2402+fxch %st(5)
2403+fmul %st(0),%st(1)
2404+fxch %st(1)
2405+faddp %st(0),%st(3)
2406+fadd %st(0),%st(0)
2407+fstpl 48(%esp)
2408+fldl -8(%ecx)
2409+fadd %st(0),%st(0)
2410+fstl 24(%esp)
2411+fldl 16(%ecx)
2412+fmul %st(1),%st(0)
2413+faddp %st(0),%st(4)
2414+fmul %st(4),%st(0)
2415+faddp %st(0),%st(2)
2416+fxch %st(3)
2417+fadd %st(0),%st(0)
2418+fstpl 40(%esp)
2419+fldl 0(%ecx)
2420+fmul %st(0),%st(0)
2421+faddp %st(0),%st(1)
2422+fldl curve25519_athlon_alpha230
2423+fadd %st(1),%st(0)
2424+fsubl curve25519_athlon_alpha230
2425+fsubr %st(0),%st(1)
2426+fldl 8(%esp)
2427+fldl 40(%ecx)
2428+fmul %st(0),%st(1)
2429+fldl 16(%esp)
2430+fmul %st(0),%st(1)
2431+fldl 32(%ecx)
2432+fmul %st(0),%st(1)
2433+fxch %st(1)
2434+faddp %st(0),%st(3)
2435+fldl 24(%esp)
2436+fmul %st(0),%st(1)
2437+fxch %st(1)
2438+faddp %st(0),%st(2)
2439+fldl 0(%ecx)
2440+fadd %st(0),%st(0)
2441+fstl 32(%esp)
2442+fmull 8(%ecx)
2443+faddp %st(0),%st(6)
2444+fxch %st(3)
2445+faddp %st(0),%st(5)
2446+fldl curve25519_athlon_alpha255
2447+fadd %st(5),%st(0)
2448+fsubl curve25519_athlon_alpha255
2449+fsubr %st(0),%st(5)
2450+fldl 24(%ecx)
2451+fmul %st(0),%st(4)
2452+fxch %st(4)
2453+faddp %st(0),%st(3)
2454+fldl 32(%esp)
2455+fmul %st(0),%st(4)
2456+fxch %st(4)
2457+faddp %st(0),%st(2)
2458+fldl 16(%ecx)
2459+fmul %st(0),%st(4)
2460+fxch %st(4)
2461+faddp %st(0),%st(3)
2462+fxch %st(3)
2463+fmull 40(%esp)
2464+faddp %st(0),%st(1)
2465+fxch %st(3)
2466+fstpl -120(%edx)
2467+fldl 8(%ecx)
2468+fmul %st(0),%st(0)
2469+faddp %st(0),%st(1)
2470+fxch %st(2)
2471+fmull curve25519_athlon_scale
2472+fxch %st(3)
2473+fstpl -112(%edx)
2474+faddp %st(0),%st(1)
2475+fmull curve25519_athlon_scale
2476+fldl 24(%esp)
2477+fmull 40(%ecx)
2478+fldl -32(%ecx)
2479+fmul %st(0),%st(0)
2480+faddp %st(0),%st(2)
2481+fldl 32(%esp)
2482+fmull 32(%ecx)
2483+faddp %st(0),%st(1)
2484+fldl 0(%esp)
2485+fmull -24(%ecx)
2486+faddp %st(0),%st(3)
2487+fldl 40(%esp)
2488+fmull 24(%ecx)
2489+faddp %st(0),%st(1)
2490+fldl curve25519_athlon_alpha26
2491+fadd %st(2),%st(0)
2492+fsubl curve25519_athlon_alpha26
2493+fsubr %st(0),%st(2)
2494+faddp %st(0),%st(3)
2495+fldl curve25519_athlon_alpha51
2496+fadd %st(3),%st(0)
2497+fsubl curve25519_athlon_alpha51
2498+fsubr %st(0),%st(3)
2499+fldl 16(%ecx)
2500+fmul %st(0),%st(0)
2501+faddp %st(0),%st(2)
2502+fxch %st(1)
2503+fmull curve25519_athlon_scale
2504+fldl 0(%esp)
2505+fmull -16(%ecx)
2506+faddp %st(0),%st(1)
2507+fldl -24(%ecx)
2508+fmul %st(0),%st(0)
2509+faddp %st(0),%st(1)
2510+faddp %st(0),%st(1)
2511+fldl curve25519_athlon_alpha77
2512+fadd %st(1),%st(0)
2513+fsubl curve25519_athlon_alpha77
2514+fsubr %st(0),%st(1)
2515+fxch %st(2)
2516+fstpl -112(%ecx)
2517+fldl 32(%esp)
2518+fmull 40(%ecx)
2519+fldl 40(%esp)
2520+fmull 32(%ecx)
2521+faddp %st(0),%st(1)
2522+fldl 48(%esp)
2523+fmull 24(%ecx)
2524+faddp %st(0),%st(1)
2525+fmull curve25519_athlon_scale
2526+fldl 0(%esp)
2527+fmull -8(%ecx)
2528+faddp %st(0),%st(1)
2529+fldl 8(%esp)
2530+fmull -16(%ecx)
2531+faddp %st(0),%st(1)
2532+faddp %st(0),%st(2)
2533+fldl curve25519_athlon_alpha102
2534+fadd %st(2),%st(0)
2535+fsubl curve25519_athlon_alpha102
2536+fsubr %st(0),%st(2)
2537+fxch %st(3)
2538+fstpl -104(%ecx)
2539+fldl 40(%esp)
2540+fmull 40(%ecx)
2541+fldl 48(%esp)
2542+fmull 32(%ecx)
2543+faddp %st(0),%st(1)
2544+fldl 24(%ecx)
2545+fmul %st(0),%st(0)
2546+faddp %st(0),%st(1)
2547+fmull curve25519_athlon_scale
2548+fldl 0(%esp)
2549+fmull 0(%ecx)
2550+faddp %st(0),%st(1)
2551+fldl 8(%esp)
2552+fmull -8(%ecx)
2553+faddp %st(0),%st(1)
2554+fldl -16(%ecx)
2555+fmul %st(0),%st(0)
2556+faddp %st(0),%st(1)
2557+faddp %st(0),%st(3)
2558+fldl curve25519_athlon_alpha128
2559+fadd %st(3),%st(0)
2560+fsubl curve25519_athlon_alpha128
2561+fsubr %st(0),%st(3)
2562+fxch %st(1)
2563+fstpl -96(%ecx)
2564+fldl 48(%esp)
2565+fldl 40(%ecx)
2566+fmul %st(0),%st(1)
2567+fmul %st(5),%st(0)
2568+fxch %st(5)
2569+fmull 32(%ecx)
2570+faddp %st(0),%st(1)
2571+fmull curve25519_athlon_scale
2572+fldl 0(%esp)
2573+fmull 8(%ecx)
2574+faddp %st(0),%st(1)
2575+fldl 8(%esp)
2576+fmull 0(%ecx)
2577+faddp %st(0),%st(1)
2578+fldl 16(%esp)
2579+fmull -8(%ecx)
2580+faddp %st(0),%st(1)
2581+faddp %st(0),%st(1)
2582+fldl curve25519_athlon_alpha153
2583+fadd %st(1),%st(0)
2584+fsubl curve25519_athlon_alpha153
2585+fsubr %st(0),%st(1)
2586+fxch %st(2)
2587+fstpl -88(%ecx)
2588+fldl 32(%ecx)
2589+fmul %st(0),%st(0)
2590+faddp %st(0),%st(4)
2591+fxch %st(3)
2592+fmull curve25519_athlon_scale
2593+fldl 0(%esp)
2594+fmull 16(%ecx)
2595+faddp %st(0),%st(1)
2596+fldl 8(%esp)
2597+fmull 8(%ecx)
2598+faddp %st(0),%st(1)
2599+fldl 16(%esp)
2600+fmull 0(%ecx)
2601+faddp %st(0),%st(1)
2602+fldl -8(%ecx)
2603+fmul %st(0),%st(0)
2604+faddp %st(0),%st(1)
2605+faddp %st(0),%st(1)
2606+fldl curve25519_athlon_alpha179
2607+fadd %st(1),%st(0)
2608+fsubl curve25519_athlon_alpha179
2609+fsubr %st(0),%st(1)
2610+fldl 32(%ecx)
2611+fadd %st(0),%st(0)
2612+fmull 40(%ecx)
2613+fmull curve25519_athlon_scale
2614+fldl 0(%esp)
2615+fmull 24(%ecx)
2616+faddp %st(0),%st(1)
2617+fldl 8(%esp)
2618+fmull 16(%ecx)
2619+faddp %st(0),%st(1)
2620+fldl 16(%esp)
2621+fmull 8(%ecx)
2622+faddp %st(0),%st(1)
2623+fldl 24(%esp)
2624+fmull 0(%ecx)
2625+faddp %st(0),%st(1)
2626+faddp %st(0),%st(1)
2627+fldl curve25519_athlon_alpha204
2628+fadd %st(1),%st(0)
2629+fsubl curve25519_athlon_alpha204
2630+fsubr %st(0),%st(1)
2631+fldl -120(%edx)
2632+faddp %st(0),%st(1)
2633+fldl curve25519_athlon_alpha230
2634+fadd %st(1),%st(0)
2635+fldl -112(%edx)
2636+fxch %st(1)
2637+fsubl curve25519_athlon_alpha230
2638+fsubr %st(0),%st(2)
2639+faddp %st(0),%st(1)
2640+fxch %st(4)
2641+fstpl -80(%ecx)
2642+fxch %st(4)
2643+fstpl -72(%ecx)
2644+fxch %st(1)
2645+fstpl -64(%ecx)
2646+fstpl -56(%ecx)
2647+fxch %st(1)
2648+fstpl -48(%ecx)
2649+fstpl -40(%ecx)
2650+fldl -40(%edx)
2651+fldl 48(%ecx)
2652+fadd %st(0),%st(1)
2653+fsubl -40(%edx)
2654+fxch %st(1)
2655+fstpl -120(%edx)
2656+fstpl -40(%edx)
2657+fldl -32(%edx)
2658+fldl 56(%ecx)
2659+fadd %st(0),%st(1)
2660+fsubl -32(%edx)
2661+fxch %st(1)
2662+fstpl -112(%edx)
2663+fstpl -32(%edx)
2664+fldl -104(%edx)
2665+fldl -24(%edx)
2666+fadd %st(0),%st(1)
2667+fsubl -104(%edx)
2668+fxch %st(1)
2669+fstpl -104(%edx)
2670+fstpl -24(%edx)
2671+fldl -16(%edx)
2672+fldl -96(%edx)
2673+fadd %st(0),%st(1)
2674+fsubl -16(%edx)
2675+fxch %st(1)
2676+fstpl -96(%edx)
2677+fstpl -16(%edx)
2678+fldl -8(%edx)
2679+fldl -88(%edx)
2680+fadd %st(0),%st(1)
2681+fsubl -8(%edx)
2682+fxch %st(1)
2683+fstpl -88(%edx)
2684+fstpl -8(%edx)
2685+fldl 0(%edx)
2686+fldl -80(%edx)
2687+fadd %st(0),%st(1)
2688+fsubl 0(%edx)
2689+fxch %st(1)
2690+fstpl -80(%edx)
2691+fstpl 0(%edx)
2692+fldl 8(%edx)
2693+fldl -72(%edx)
2694+fadd %st(0),%st(1)
2695+fsubl 8(%edx)
2696+fxch %st(1)
2697+fstpl -72(%edx)
2698+fstpl 8(%edx)
2699+fldl 16(%edx)
2700+fldl -64(%edx)
2701+fadd %st(0),%st(1)
2702+fsubl 16(%edx)
2703+fxch %st(1)
2704+fstpl -64(%edx)
2705+fstpl 16(%edx)
2706+fldl 24(%edx)
2707+fldl -56(%edx)
2708+fadd %st(0),%st(1)
2709+fsubl 24(%edx)
2710+fxch %st(1)
2711+fstpl -56(%edx)
2712+fstpl 24(%edx)
2713+fldl 32(%edx)
2714+fldl -48(%edx)
2715+fadd %st(0),%st(1)
2716+fsubl 32(%edx)
2717+fxch %st(1)
2718+fstpl -48(%edx)
2719+fstpl 32(%edx)
2720+fldl 64(%edx)
2721+fsubl -112(%ecx)
2722+fstpl -32(%ecx)
2723+fldl 72(%edx)
2724+fsubl -104(%ecx)
2725+fstpl -24(%ecx)
2726+fldl 80(%edx)
2727+fsubl -96(%ecx)
2728+fstpl -16(%ecx)
2729+fldl 88(%edx)
2730+fsubl -88(%ecx)
2731+fstpl -8(%ecx)
2732+fldl 96(%edx)
2733+fsubl -80(%ecx)
2734+fstpl 0(%ecx)
2735+fldl 104(%edx)
2736+fsubl -72(%ecx)
2737+fstpl 8(%ecx)
2738+fldl 112(%edx)
2739+fsubl -64(%ecx)
2740+fstpl 16(%ecx)
2741+fldl 120(%edx)
2742+fsubl -56(%ecx)
2743+fstpl 24(%ecx)
2744+fldl -128(%ecx)
2745+fsubl -48(%ecx)
2746+fstpl 32(%ecx)
2747+fldl -120(%ecx)
2748+fsubl -40(%ecx)
2749+fstpl 40(%ecx)
2750+fldl -48(%edx)
2751+fmul %st(0),%st(0)
2752+fldl -120(%edx)
2753+fadd %st(0),%st(0)
2754+fldl -112(%edx)
2755+fadd %st(0),%st(0)
2756+fldl -104(%edx)
2757+fadd %st(0),%st(0)
2758+fldl -64(%edx)
2759+fxch %st(4)
2760+fmull curve25519_athlon_scale
2761+fldl -48(%edx)
2762+fmul %st(4),%st(0)
2763+fldl -56(%edx)
2764+fmul %st(4),%st(0)
2765+faddp %st(0),%st(1)
2766+fxch %st(4)
2767+fstl 0(%esp)
2768+fxch %st(3)
2769+fstl 8(%esp)
2770+fxch %st(3)
2771+fmull -56(%edx)
2772+faddp %st(0),%st(1)
2773+fldl -72(%edx)
2774+fxch %st(5)
2775+fmul %st(0),%st(3)
2776+fxch %st(3)
2777+faddp %st(0),%st(1)
2778+fxch %st(2)
2779+fadd %st(0),%st(0)
2780+fldl -64(%edx)
2781+fmul %st(2),%st(0)
2782+faddp %st(0),%st(4)
2783+fxch %st(1)
2784+fstl 16(%esp)
2785+fldl -80(%edx)
2786+fxch %st(5)
2787+fmul %st(0),%st(1)
2788+fxch %st(1)
2789+faddp %st(0),%st(3)
2790+fadd %st(0),%st(0)
2791+fstpl 48(%esp)
2792+fldl -96(%edx)
2793+fadd %st(0),%st(0)
2794+fstl 24(%esp)
2795+fldl -72(%edx)
2796+fmul %st(1),%st(0)
2797+faddp %st(0),%st(4)
2798+fmul %st(4),%st(0)
2799+faddp %st(0),%st(2)
2800+fxch %st(3)
2801+fadd %st(0),%st(0)
2802+fstpl 40(%esp)
2803+fldl -88(%edx)
2804+fmul %st(0),%st(0)
2805+faddp %st(0),%st(1)
2806+fldl curve25519_athlon_alpha230
2807+fadd %st(1),%st(0)
2808+fsubl curve25519_athlon_alpha230
2809+fsubr %st(0),%st(1)
2810+fldl 8(%esp)
2811+fldl -48(%edx)
2812+fmul %st(0),%st(1)
2813+fldl 16(%esp)
2814+fmul %st(0),%st(1)
2815+fldl -56(%edx)
2816+fmul %st(0),%st(1)
2817+fxch %st(1)
2818+faddp %st(0),%st(3)
2819+fldl 24(%esp)
2820+fmul %st(0),%st(1)
2821+fxch %st(1)
2822+faddp %st(0),%st(2)
2823+fldl -88(%edx)
2824+fadd %st(0),%st(0)
2825+fstl 32(%esp)
2826+fmull -80(%edx)
2827+faddp %st(0),%st(6)
2828+fxch %st(3)
2829+faddp %st(0),%st(5)
2830+fldl curve25519_athlon_alpha255
2831+fadd %st(5),%st(0)
2832+fsubl curve25519_athlon_alpha255
2833+fsubr %st(0),%st(5)
2834+fldl -64(%edx)
2835+fmul %st(0),%st(4)
2836+fxch %st(4)
2837+faddp %st(0),%st(3)
2838+fldl 32(%esp)
2839+fmul %st(0),%st(4)
2840+fxch %st(4)
2841+faddp %st(0),%st(2)
2842+fldl -72(%edx)
2843+fmul %st(0),%st(4)
2844+fxch %st(4)
2845+faddp %st(0),%st(3)
2846+fxch %st(3)
2847+fmull 40(%esp)
2848+faddp %st(0),%st(1)
2849+fxch %st(3)
2850+fstpl 48(%edx)
2851+fldl -80(%edx)
2852+fmul %st(0),%st(0)
2853+faddp %st(0),%st(1)
2854+fxch %st(2)
2855+fmull curve25519_athlon_scale
2856+fxch %st(3)
2857+fstpl 56(%edx)
2858+faddp %st(0),%st(1)
2859+fmull curve25519_athlon_scale
2860+fldl 24(%esp)
2861+fmull -48(%edx)
2862+fldl -120(%edx)
2863+fmul %st(0),%st(0)
2864+faddp %st(0),%st(2)
2865+fldl 32(%esp)
2866+fmull -56(%edx)
2867+faddp %st(0),%st(1)
2868+fldl 0(%esp)
2869+fmull -112(%edx)
2870+faddp %st(0),%st(3)
2871+fldl 40(%esp)
2872+fmull -64(%edx)
2873+faddp %st(0),%st(1)
2874+fldl curve25519_athlon_alpha26
2875+fadd %st(2),%st(0)
2876+fsubl curve25519_athlon_alpha26
2877+fsubr %st(0),%st(2)
2878+faddp %st(0),%st(3)
2879+fldl curve25519_athlon_alpha51
2880+fadd %st(3),%st(0)
2881+fsubl curve25519_athlon_alpha51
2882+fsubr %st(0),%st(3)
2883+fldl -72(%edx)
2884+fmul %st(0),%st(0)
2885+faddp %st(0),%st(2)
2886+fxch %st(1)
2887+fmull curve25519_athlon_scale
2888+fldl 0(%esp)
2889+fmull -104(%edx)
2890+faddp %st(0),%st(1)
2891+fldl -112(%edx)
2892+fmul %st(0),%st(0)
2893+faddp %st(0),%st(1)
2894+faddp %st(0),%st(1)
2895+fldl curve25519_athlon_alpha77
2896+fadd %st(1),%st(0)
2897+fsubl curve25519_athlon_alpha77
2898+fsubr %st(0),%st(1)
2899+fxch %st(2)
2900+fstpl -120(%edx)
2901+fldl 32(%esp)
2902+fmull -48(%edx)
2903+fldl 40(%esp)
2904+fmull -56(%edx)
2905+faddp %st(0),%st(1)
2906+fldl 48(%esp)
2907+fmull -64(%edx)
2908+faddp %st(0),%st(1)
2909+fmull curve25519_athlon_scale
2910+fldl 0(%esp)
2911+fmull -96(%edx)
2912+faddp %st(0),%st(1)
2913+fldl 8(%esp)
2914+fmull -104(%edx)
2915+faddp %st(0),%st(1)
2916+faddp %st(0),%st(2)
2917+fldl curve25519_athlon_alpha102
2918+fadd %st(2),%st(0)
2919+fsubl curve25519_athlon_alpha102
2920+fsubr %st(0),%st(2)
2921+fxch %st(3)
2922+fstpl -112(%edx)
2923+fldl 40(%esp)
2924+fmull -48(%edx)
2925+fldl 48(%esp)
2926+fmull -56(%edx)
2927+faddp %st(0),%st(1)
2928+fldl -64(%edx)
2929+fmul %st(0),%st(0)
2930+faddp %st(0),%st(1)
2931+fmull curve25519_athlon_scale
2932+fldl 0(%esp)
2933+fmull -88(%edx)
2934+faddp %st(0),%st(1)
2935+fldl 8(%esp)
2936+fmull -96(%edx)
2937+faddp %st(0),%st(1)
2938+fldl -104(%edx)
2939+fmul %st(0),%st(0)
2940+faddp %st(0),%st(1)
2941+faddp %st(0),%st(3)
2942+fldl curve25519_athlon_alpha128
2943+fadd %st(3),%st(0)
2944+fsubl curve25519_athlon_alpha128
2945+fsubr %st(0),%st(3)
2946+fxch %st(1)
2947+fstpl -104(%edx)
2948+fldl 48(%esp)
2949+fldl -48(%edx)
2950+fmul %st(0),%st(1)
2951+fmul %st(5),%st(0)
2952+fxch %st(5)
2953+fmull -56(%edx)
2954+faddp %st(0),%st(1)
2955+fmull curve25519_athlon_scale
2956+fldl 0(%esp)
2957+fmull -80(%edx)
2958+faddp %st(0),%st(1)
2959+fldl 8(%esp)
2960+fmull -88(%edx)
2961+faddp %st(0),%st(1)
2962+fldl 16(%esp)
2963+fmull -96(%edx)
2964+faddp %st(0),%st(1)
2965+faddp %st(0),%st(1)
2966+fldl curve25519_athlon_alpha153
2967+fadd %st(1),%st(0)
2968+fsubl curve25519_athlon_alpha153
2969+fsubr %st(0),%st(1)
2970+fxch %st(2)
2971+fstpl 40(%edx)
2972+fldl -56(%edx)
2973+fmul %st(0),%st(0)
2974+faddp %st(0),%st(4)
2975+fxch %st(3)
2976+fmull curve25519_athlon_scale
2977+fldl 0(%esp)
2978+fmull -72(%edx)
2979+faddp %st(0),%st(1)
2980+fldl 8(%esp)
2981+fmull -80(%edx)
2982+faddp %st(0),%st(1)
2983+fldl 16(%esp)
2984+fmull -88(%edx)
2985+faddp %st(0),%st(1)
2986+fldl -96(%edx)
2987+fmul %st(0),%st(0)
2988+faddp %st(0),%st(1)
2989+faddp %st(0),%st(1)
2990+fldl curve25519_athlon_alpha179
2991+fadd %st(1),%st(0)
2992+fsubl curve25519_athlon_alpha179
2993+fsubr %st(0),%st(1)
2994+fldl -56(%edx)
2995+fadd %st(0),%st(0)
2996+fmull -48(%edx)
2997+fmull curve25519_athlon_scale
2998+fldl 0(%esp)
2999+fmull -64(%edx)
3000+faddp %st(0),%st(1)
3001+fldl 8(%esp)
3002+fmull -72(%edx)
3003+faddp %st(0),%st(1)
3004+fldl 16(%esp)
3005+fmull -80(%edx)
3006+faddp %st(0),%st(1)
3007+fldl 24(%esp)
3008+fmull -88(%edx)
3009+faddp %st(0),%st(1)
3010+faddp %st(0),%st(1)
3011+fldl curve25519_athlon_alpha204
3012+fadd %st(1),%st(0)
3013+fsubl curve25519_athlon_alpha204
3014+fsubr %st(0),%st(1)
3015+fldl 48(%edx)
3016+faddp %st(0),%st(1)
3017+fldl curve25519_athlon_alpha230
3018+fadd %st(1),%st(0)
3019+fldl 56(%edx)
3020+fxch %st(1)
3021+fsubl curve25519_athlon_alpha230
3022+fsubr %st(0),%st(2)
3023+faddp %st(0),%st(1)
3024+fxch %st(4)
3025+fstpl -96(%edx)
3026+fxch %st(4)
3027+fstpl -88(%edx)
3028+fxch %st(1)
3029+fstpl -80(%edx)
3030+fstpl -72(%edx)
3031+fxch %st(1)
3032+fstpl -64(%edx)
3033+fstpl -56(%edx)
3034+fldl 32(%edx)
3035+fmul %st(0),%st(0)
3036+fldl -40(%edx)
3037+fadd %st(0),%st(0)
3038+fldl -32(%edx)
3039+fadd %st(0),%st(0)
3040+fldl -24(%edx)
3041+fadd %st(0),%st(0)
3042+fldl 16(%edx)
3043+fxch %st(4)
3044+fmull curve25519_athlon_scale
3045+fldl 32(%edx)
3046+fmul %st(4),%st(0)
3047+fldl 24(%edx)
3048+fmul %st(4),%st(0)
3049+faddp %st(0),%st(1)
3050+fxch %st(4)
3051+fstl 0(%esp)
3052+fxch %st(3)
3053+fstl 8(%esp)
3054+fxch %st(3)
3055+fmull 24(%edx)
3056+faddp %st(0),%st(1)
3057+fldl 8(%edx)
3058+fxch %st(5)
3059+fmul %st(0),%st(3)
3060+fxch %st(3)
3061+faddp %st(0),%st(1)
3062+fxch %st(2)
3063+fadd %st(0),%st(0)
3064+fldl 16(%edx)
3065+fmul %st(2),%st(0)
3066+faddp %st(0),%st(4)
3067+fxch %st(1)
3068+fstl 16(%esp)
3069+fldl 0(%edx)
3070+fxch %st(5)
3071+fmul %st(0),%st(1)
3072+fxch %st(1)
3073+faddp %st(0),%st(3)
3074+fadd %st(0),%st(0)
3075+fstpl 48(%esp)
3076+fldl -16(%edx)
3077+fadd %st(0),%st(0)
3078+fstl 24(%esp)
3079+fldl 8(%edx)
3080+fmul %st(1),%st(0)
3081+faddp %st(0),%st(4)
3082+fmul %st(4),%st(0)
3083+faddp %st(0),%st(2)
3084+fxch %st(3)
3085+fadd %st(0),%st(0)
3086+fstpl 40(%esp)
3087+fldl -8(%edx)
3088+fmul %st(0),%st(0)
3089+faddp %st(0),%st(1)
3090+fldl curve25519_athlon_alpha230
3091+fadd %st(1),%st(0)
3092+fsubl curve25519_athlon_alpha230
3093+fsubr %st(0),%st(1)
3094+fldl 8(%esp)
3095+fldl 32(%edx)
3096+fmul %st(0),%st(1)
3097+fldl 16(%esp)
3098+fmul %st(0),%st(1)
3099+fldl 24(%edx)
3100+fmul %st(0),%st(1)
3101+fxch %st(1)
3102+faddp %st(0),%st(3)
3103+fldl 24(%esp)
3104+fmul %st(0),%st(1)
3105+fxch %st(1)
3106+faddp %st(0),%st(2)
3107+fldl -8(%edx)
3108+fadd %st(0),%st(0)
3109+fstl 32(%esp)
3110+fmull 0(%edx)
3111+faddp %st(0),%st(6)
3112+fxch %st(3)
3113+faddp %st(0),%st(5)
3114+fldl curve25519_athlon_alpha255
3115+fadd %st(5),%st(0)
3116+fsubl curve25519_athlon_alpha255
3117+fsubr %st(0),%st(5)
3118+fldl 16(%edx)
3119+fmul %st(0),%st(4)
3120+fxch %st(4)
3121+faddp %st(0),%st(3)
3122+fldl 32(%esp)
3123+fmul %st(0),%st(4)
3124+fxch %st(4)
3125+faddp %st(0),%st(2)
3126+fldl 8(%edx)
3127+fmul %st(0),%st(4)
3128+fxch %st(4)
3129+faddp %st(0),%st(3)
3130+fxch %st(3)
3131+fmull 40(%esp)
3132+faddp %st(0),%st(1)
3133+fxch %st(3)
3134+fstpl -48(%edx)
3135+fldl 0(%edx)
3136+fmul %st(0),%st(0)
3137+faddp %st(0),%st(1)
3138+fxch %st(2)
3139+fmull curve25519_athlon_scale
3140+fxch %st(3)
3141+fstpl 48(%edx)
3142+faddp %st(0),%st(1)
3143+fmull curve25519_athlon_scale
3144+fldl 24(%esp)
3145+fmull 32(%edx)
3146+fldl -40(%edx)
3147+fmul %st(0),%st(0)
3148+faddp %st(0),%st(2)
3149+fldl 32(%esp)
3150+fmull 24(%edx)
3151+faddp %st(0),%st(1)
3152+fldl 0(%esp)
3153+fmull -32(%edx)
3154+faddp %st(0),%st(3)
3155+fldl 40(%esp)
3156+fmull 16(%edx)
3157+faddp %st(0),%st(1)
3158+fldl curve25519_athlon_alpha26
3159+fadd %st(2),%st(0)
3160+fsubl curve25519_athlon_alpha26
3161+fsubr %st(0),%st(2)
3162+faddp %st(0),%st(3)
3163+fldl curve25519_athlon_alpha51
3164+fadd %st(3),%st(0)
3165+fsubl curve25519_athlon_alpha51
3166+fsubr %st(0),%st(3)
3167+fldl 8(%edx)
3168+fmul %st(0),%st(0)
3169+faddp %st(0),%st(2)
3170+fxch %st(1)
3171+fmull curve25519_athlon_scale
3172+fldl 0(%esp)
3173+fmull -24(%edx)
3174+faddp %st(0),%st(1)
3175+fldl -32(%edx)
3176+fmul %st(0),%st(0)
3177+faddp %st(0),%st(1)
3178+faddp %st(0),%st(1)
3179+fldl curve25519_athlon_alpha77
3180+fadd %st(1),%st(0)
3181+fsubl curve25519_athlon_alpha77
3182+fsubr %st(0),%st(1)
3183+fxch %st(2)
3184+fstpl 56(%ecx)
3185+fldl 32(%esp)
3186+fmull 32(%edx)
3187+fldl 40(%esp)
3188+fmull 24(%edx)
3189+faddp %st(0),%st(1)
3190+fldl 48(%esp)
3191+fmull 16(%edx)
3192+faddp %st(0),%st(1)
3193+fmull curve25519_athlon_scale
3194+fldl 0(%esp)
3195+fmull -16(%edx)
3196+faddp %st(0),%st(1)
3197+fldl 8(%esp)
3198+fmull -24(%edx)
3199+faddp %st(0),%st(1)
3200+faddp %st(0),%st(2)
3201+fldl curve25519_athlon_alpha102
3202+fadd %st(2),%st(0)
3203+fsubl curve25519_athlon_alpha102
3204+fsubr %st(0),%st(2)
3205+fxch %st(3)
3206+fstpl 64(%ecx)
3207+fldl 40(%esp)
3208+fmull 32(%edx)
3209+fldl 48(%esp)
3210+fmull 24(%edx)
3211+faddp %st(0),%st(1)
3212+fldl 16(%edx)
3213+fmul %st(0),%st(0)
3214+faddp %st(0),%st(1)
3215+fmull curve25519_athlon_scale
3216+fldl 0(%esp)
3217+fmull -8(%edx)
3218+faddp %st(0),%st(1)
3219+fldl 8(%esp)
3220+fmull -16(%edx)
3221+faddp %st(0),%st(1)
3222+fldl -24(%edx)
3223+fmul %st(0),%st(0)
3224+faddp %st(0),%st(1)
3225+faddp %st(0),%st(3)
3226+fldl curve25519_athlon_alpha128
3227+fadd %st(3),%st(0)
3228+fsubl curve25519_athlon_alpha128
3229+fsubr %st(0),%st(3)
3230+fxch %st(1)
3231+fstpl 72(%ecx)
3232+fldl 48(%esp)
3233+fldl 32(%edx)
3234+fmul %st(0),%st(1)
3235+fmul %st(5),%st(0)
3236+fxch %st(5)
3237+fmull 24(%edx)
3238+faddp %st(0),%st(1)
3239+fmull curve25519_athlon_scale
3240+fldl 0(%esp)
3241+fmull 0(%edx)
3242+faddp %st(0),%st(1)
3243+fldl 8(%esp)
3244+fmull -8(%edx)
3245+faddp %st(0),%st(1)
3246+fldl 16(%esp)
3247+fmull -16(%edx)
3248+faddp %st(0),%st(1)
3249+faddp %st(0),%st(1)
3250+fldl curve25519_athlon_alpha153
3251+fadd %st(1),%st(0)
3252+fsubl curve25519_athlon_alpha153
3253+fsubr %st(0),%st(1)
3254+fxch %st(2)
3255+fstpl 80(%ecx)
3256+fldl 24(%edx)
3257+fmul %st(0),%st(0)
3258+faddp %st(0),%st(4)
3259+fxch %st(3)
3260+fmull curve25519_athlon_scale
3261+fldl 0(%esp)
3262+fmull 8(%edx)
3263+faddp %st(0),%st(1)
3264+fldl 8(%esp)
3265+fmull 0(%edx)
3266+faddp %st(0),%st(1)
3267+fldl 16(%esp)
3268+fmull -8(%edx)
3269+faddp %st(0),%st(1)
3270+fldl -16(%edx)
3271+fmul %st(0),%st(0)
3272+faddp %st(0),%st(1)
3273+faddp %st(0),%st(1)
3274+fldl curve25519_athlon_alpha179
3275+fadd %st(1),%st(0)
3276+fsubl curve25519_athlon_alpha179
3277+fsubr %st(0),%st(1)
3278+fldl 24(%edx)
3279+fadd %st(0),%st(0)
3280+fmull 32(%edx)
3281+fmull curve25519_athlon_scale
3282+fldl 0(%esp)
3283+fmull 16(%edx)
3284+faddp %st(0),%st(1)
3285+fldl 8(%esp)
3286+fmull 8(%edx)
3287+faddp %st(0),%st(1)
3288+fldl 16(%esp)
3289+fmull 0(%edx)
3290+faddp %st(0),%st(1)
3291+fldl 24(%esp)
3292+fmull -8(%edx)
3293+faddp %st(0),%st(1)
3294+faddp %st(0),%st(1)
3295+fldl curve25519_athlon_alpha204
3296+fadd %st(1),%st(0)
3297+fsubl curve25519_athlon_alpha204
3298+fsubr %st(0),%st(1)
3299+fldl -48(%edx)
3300+faddp %st(0),%st(1)
3301+fldl curve25519_athlon_alpha230
3302+fadd %st(1),%st(0)
3303+fldl 48(%edx)
3304+fxch %st(1)
3305+fsubl curve25519_athlon_alpha230
3306+fsubr %st(0),%st(2)
3307+faddp %st(0),%st(1)
3308+fxch %st(4)
3309+fstpl 88(%ecx)
3310+fxch %st(4)
3311+fstpl 96(%ecx)
3312+fxch %st(1)
3313+fstpl 104(%ecx)
3314+fstpl 112(%ecx)
3315+fxch %st(1)
3316+fstpl 120(%ecx)
3317+fstpl 128(%ecx)
3318+fldl 32(%ecx)
3319+fmull curve25519_athlon_121665
3320+fldl curve25519_athlon_alpha230
3321+fadd %st(1),%st(0)
3322+fsubl curve25519_athlon_alpha230
3323+fldl 40(%ecx)
3324+fmull curve25519_athlon_121665
3325+fadd %st(1),%st(0)
3326+fxch %st(1)
3327+fsubrp %st(0),%st(2)
3328+fxch %st(1)
3329+fstpl 0(%esp)
3330+fldl curve25519_athlon_alpha255
3331+fadd %st(1),%st(0)
3332+fsubl curve25519_athlon_alpha255
3333+fsubr %st(0),%st(1)
3334+fmull curve25519_athlon_scale
3335+fxch %st(1)
3336+fstpl 8(%esp)
3337+fldl -32(%ecx)
3338+fmull curve25519_athlon_121665
3339+faddp %st(0),%st(1)
3340+fldl curve25519_athlon_alpha26
3341+fadd %st(1),%st(0)
3342+fsubl curve25519_athlon_alpha26
3343+fldl -24(%ecx)
3344+fmull curve25519_athlon_121665
3345+fadd %st(1),%st(0)
3346+fxch %st(1)
3347+fsubrp %st(0),%st(2)
3348+fxch %st(1)
3349+fstpl -48(%edx)
3350+fldl curve25519_athlon_alpha51
3351+fadd %st(1),%st(0)
3352+fsubl curve25519_athlon_alpha51
3353+fldl -16(%ecx)
3354+fmull curve25519_athlon_121665
3355+fadd %st(1),%st(0)
3356+fxch %st(1)
3357+fsubrp %st(0),%st(2)
3358+fxch %st(1)
3359+fstpl -40(%edx)
3360+fldl curve25519_athlon_alpha77
3361+fadd %st(1),%st(0)
3362+fsubl curve25519_athlon_alpha77
3363+fldl -8(%ecx)
3364+fmull curve25519_athlon_121665
3365+fadd %st(1),%st(0)
3366+fxch %st(1)
3367+fsubrp %st(0),%st(2)
3368+fxch %st(1)
3369+fstpl -32(%edx)
3370+fldl curve25519_athlon_alpha102
3371+fadd %st(1),%st(0)
3372+fsubl curve25519_athlon_alpha102
3373+fldl 0(%ecx)
3374+fmull curve25519_athlon_121665
3375+fadd %st(1),%st(0)
3376+fxch %st(1)
3377+fsubrp %st(0),%st(2)
3378+fxch %st(1)
3379+fstpl -24(%edx)
3380+fldl curve25519_athlon_alpha128
3381+fadd %st(1),%st(0)
3382+fsubl curve25519_athlon_alpha128
3383+fldl 8(%ecx)
3384+fmull curve25519_athlon_121665
3385+fadd %st(1),%st(0)
3386+fxch %st(1)
3387+fsubrp %st(0),%st(2)
3388+fxch %st(1)
3389+fstpl -16(%edx)
3390+fldl curve25519_athlon_alpha153
3391+fadd %st(1),%st(0)
3392+fsubl curve25519_athlon_alpha153
3393+fldl 16(%ecx)
3394+fmull curve25519_athlon_121665
3395+fadd %st(1),%st(0)
3396+fxch %st(1)
3397+fsubrp %st(0),%st(2)
3398+fxch %st(1)
3399+fstpl -8(%edx)
3400+fldl curve25519_athlon_alpha179
3401+fadd %st(1),%st(0)
3402+fsubl curve25519_athlon_alpha179
3403+fldl 24(%ecx)
3404+fmull curve25519_athlon_121665
3405+fadd %st(1),%st(0)
3406+fxch %st(1)
3407+fsubrp %st(0),%st(2)
3408+fxch %st(1)
3409+fstpl 0(%edx)
3410+fldl curve25519_athlon_alpha204
3411+fadd %st(1),%st(0)
3412+fsubl curve25519_athlon_alpha204
3413+fldl 0(%esp)
3414+fadd %st(1),%st(0)
3415+fxch %st(1)
3416+fsubrp %st(0),%st(2)
3417+fxch %st(1)
3418+fstpl 8(%edx)
3419+fldl curve25519_athlon_alpha230
3420+fadd %st(1),%st(0)
3421+fsubl curve25519_athlon_alpha230
3422+fldl 8(%esp)
3423+fadd %st(1),%st(0)
3424+fxch %st(1)
3425+fsubrp %st(0),%st(2)
3426+fxch %st(1)
3427+fstpl 16(%edx)
3428+fstpl 48(%ecx)
3429+fldl -120(%ecx)
3430+fmull -40(%ecx)
3431+fmull curve25519_athlon_scale
3432+fldl 64(%edx)
3433+fmull -48(%ecx)
3434+faddp %st(0),%st(1)
3435+fldl 72(%edx)
3436+fmull -56(%ecx)
3437+faddp %st(0),%st(1)
3438+fldl 64(%edx)
3439+fmull -40(%ecx)
3440+fldl 80(%edx)
3441+fmull -64(%ecx)
3442+faddp %st(0),%st(2)
3443+fldl 72(%edx)
3444+fmull -48(%ecx)
3445+faddp %st(0),%st(1)
3446+fldl 88(%edx)
3447+fmull -72(%ecx)
3448+faddp %st(0),%st(2)
3449+fldl 80(%edx)
3450+fmull -56(%ecx)
3451+faddp %st(0),%st(1)
3452+fldl 96(%edx)
3453+fmull -80(%ecx)
3454+faddp %st(0),%st(2)
3455+fldl 88(%edx)
3456+fmull -64(%ecx)
3457+faddp %st(0),%st(1)
3458+fldl 72(%edx)
3459+fmull -40(%ecx)
3460+fldl 104(%edx)
3461+fmull -88(%ecx)
3462+faddp %st(0),%st(3)
3463+fldl 96(%edx)
3464+fmull -72(%ecx)
3465+faddp %st(0),%st(2)
3466+fldl 80(%edx)
3467+fmull -48(%ecx)
3468+faddp %st(0),%st(1)
3469+fldl 112(%edx)
3470+fmull -96(%ecx)
3471+faddp %st(0),%st(3)
3472+fldl 104(%edx)
3473+fmull -80(%ecx)
3474+faddp %st(0),%st(2)
3475+fldl 88(%edx)
3476+fmull -56(%ecx)
3477+faddp %st(0),%st(1)
3478+fldl 120(%edx)
3479+fmull -104(%ecx)
3480+faddp %st(0),%st(3)
3481+fldl 112(%edx)
3482+fmull -88(%ecx)
3483+faddp %st(0),%st(2)
3484+fldl 96(%edx)
3485+fmull -64(%ecx)
3486+faddp %st(0),%st(1)
3487+fldl -128(%ecx)
3488+fmull -112(%ecx)
3489+faddp %st(0),%st(3)
3490+fldl 120(%edx)
3491+fmull -96(%ecx)
3492+faddp %st(0),%st(2)
3493+fldl 104(%edx)
3494+fmull -72(%ecx)
3495+faddp %st(0),%st(1)
3496+fldl 80(%edx)
3497+fmull -40(%ecx)
3498+fldl 112(%edx)
3499+fmull -80(%ecx)
3500+faddp %st(0),%st(2)
3501+fldl -128(%ecx)
3502+fmull -104(%ecx)
3503+faddp %st(0),%st(3)
3504+fldl curve25519_athlon_alpha230
3505+fadd %st(4),%st(0)
3506+fldl 88(%edx)
3507+fmull -48(%ecx)
3508+faddp %st(0),%st(2)
3509+fldl 120(%edx)
3510+fmull -88(%ecx)
3511+faddp %st(0),%st(3)
3512+fldl -120(%ecx)
3513+fmull -112(%ecx)
3514+faddp %st(0),%st(4)
3515+fsubl curve25519_athlon_alpha230
3516+fldl 96(%edx)
3517+fmull -56(%ecx)
3518+faddp %st(0),%st(2)
3519+fldl 88(%edx)
3520+fmull -40(%ecx)
3521+fldl -128(%ecx)
3522+fmull -96(%ecx)
3523+faddp %st(0),%st(4)
3524+fxch %st(1)
3525+fadd %st(0),%st(4)
3526+fldl 104(%edx)
3527+fmull -64(%ecx)
3528+faddp %st(0),%st(3)
3529+fldl 96(%edx)
3530+fmull -48(%ecx)
3531+faddp %st(0),%st(2)
3532+fsubrp %st(0),%st(5)
3533+fldl curve25519_athlon_alpha255
3534+fadd %st(4),%st(0)
3535+fldl 112(%edx)
3536+fmull -72(%ecx)
3537+faddp %st(0),%st(3)
3538+fldl 104(%edx)
3539+fmull -56(%ecx)
3540+faddp %st(0),%st(2)
3541+fldl -120(%ecx)
3542+fmull -104(%ecx)
3543+faddp %st(0),%st(4)
3544+fsubl curve25519_athlon_alpha255
3545+fldl 120(%edx)
3546+fmull -80(%ecx)
3547+faddp %st(0),%st(3)
3548+fldl 96(%edx)
3549+fmull -40(%ecx)
3550+fldl 112(%edx)
3551+fmull -64(%ecx)
3552+faddp %st(0),%st(3)
3553+fldl -128(%ecx)
3554+fmull -88(%ecx)
3555+faddp %st(0),%st(4)
3556+fxch %st(1)
3557+fadd %st(0),%st(4)
3558+fsubrp %st(0),%st(5)
3559+fxch %st(5)
3560+fstpl 0(%esp)
3561+fldl 104(%edx)
3562+fmull -48(%ecx)
3563+faddp %st(0),%st(5)
3564+fldl 120(%edx)
3565+fmull -72(%ecx)
3566+faddp %st(0),%st(1)
3567+fldl -120(%ecx)
3568+fmull -96(%ecx)
3569+faddp %st(0),%st(2)
3570+fxch %st(2)
3571+fmull curve25519_athlon_scale
3572+fldl 112(%edx)
3573+fmull -56(%ecx)
3574+faddp %st(0),%st(5)
3575+fldl -128(%ecx)
3576+fmull -80(%ecx)
3577+faddp %st(0),%st(3)
3578+fxch %st(1)
3579+fmull curve25519_athlon_scale
3580+fldl 64(%edx)
3581+fmull -112(%ecx)
3582+faddp %st(0),%st(2)
3583+fxch %st(3)
3584+fstpl 8(%esp)
3585+fldl 104(%edx)
3586+fmull -40(%ecx)
3587+fldl 120(%edx)
3588+fmull -64(%ecx)
3589+faddp %st(0),%st(5)
3590+fldl -120(%ecx)
3591+fmull -88(%ecx)
3592+faddp %st(0),%st(3)
3593+fldl 64(%edx)
3594+fmull -104(%ecx)
3595+faddp %st(0),%st(4)
3596+fldl curve25519_athlon_alpha26
3597+fadd %st(2),%st(0)
3598+fldl 112(%edx)
3599+fmull -48(%ecx)
3600+faddp %st(0),%st(2)
3601+fldl -128(%ecx)
3602+fmull -72(%ecx)
3603+faddp %st(0),%st(6)
3604+fxch %st(3)
3605+fmull curve25519_athlon_scale
3606+fldl 72(%edx)
3607+fmull -112(%ecx)
3608+faddp %st(0),%st(5)
3609+fxch %st(3)
3610+fsubl curve25519_athlon_alpha26
3611+fldl 120(%edx)
3612+fmull -56(%ecx)
3613+faddp %st(0),%st(2)
3614+fldl -120(%ecx)
3615+fmull -80(%ecx)
3616+faddp %st(0),%st(6)
3617+fldl 64(%edx)
3618+fmull -96(%ecx)
3619+faddp %st(0),%st(4)
3620+fadd %st(0),%st(4)
3621+fsubrp %st(0),%st(2)
3622+fldl 112(%edx)
3623+fmull -40(%ecx)
3624+fldl -128(%ecx)
3625+fmull -64(%ecx)
3626+faddp %st(0),%st(2)
3627+fxch %st(5)
3628+fmull curve25519_athlon_scale
3629+fldl 72(%edx)
3630+fmull -104(%ecx)
3631+faddp %st(0),%st(4)
3632+fldl curve25519_athlon_alpha51
3633+fadd %st(5),%st(0)
3634+fldl 120(%edx)
3635+fmull -48(%ecx)
3636+faddp %st(0),%st(7)
3637+fldl -120(%ecx)
3638+fmull -72(%ecx)
3639+faddp %st(0),%st(3)
3640+fldl 64(%edx)
3641+fmull -88(%ecx)
3642+faddp %st(0),%st(2)
3643+fldl 80(%edx)
3644+fmull -112(%ecx)
3645+faddp %st(0),%st(5)
3646+fsubl curve25519_athlon_alpha51
3647+fxch %st(3)
3648+fstpl 16(%esp)
3649+fldl -128(%ecx)
3650+fmull -56(%ecx)
3651+faddp %st(0),%st(6)
3652+fxch %st(1)
3653+fmull curve25519_athlon_scale
3654+fldl 72(%edx)
3655+fmull -96(%ecx)
3656+faddp %st(0),%st(2)
3657+fxch %st(2)
3658+fadd %st(0),%st(3)
3659+fsubrp %st(0),%st(4)
3660+fldl 120(%edx)
3661+fmull -40(%ecx)
3662+fldl -120(%ecx)
3663+fmull -64(%ecx)
3664+faddp %st(0),%st(6)
3665+fldl 64(%edx)
3666+fmull -80(%ecx)
3667+faddp %st(0),%st(3)
3668+fldl 80(%edx)
3669+fmull -104(%ecx)
3670+faddp %st(0),%st(2)
3671+fldl curve25519_athlon_alpha77
3672+fadd %st(4),%st(0)
3673+fldl -128(%ecx)
3674+fmull -48(%ecx)
3675+faddp %st(0),%st(2)
3676+fxch %st(6)
3677+fmull curve25519_athlon_scale
3678+fldl 72(%edx)
3679+fmull -88(%ecx)
3680+faddp %st(0),%st(4)
3681+fldl 88(%edx)
3682+fmull -112(%ecx)
3683+faddp %st(0),%st(3)
3684+fxch %st(6)
3685+fsubl curve25519_athlon_alpha77
3686+fxch %st(5)
3687+fstpl 24(%esp)
3688+fldl -120(%ecx)
3689+fmull -56(%ecx)
3690+faddp %st(0),%st(1)
3691+fldl 64(%edx)
3692+fmull -72(%ecx)
3693+faddp %st(0),%st(6)
3694+fldl 80(%edx)
3695+fmull -96(%ecx)
3696+faddp %st(0),%st(3)
3697+fxch %st(4)
3698+fadd %st(0),%st(1)
3699+fsubrp %st(0),%st(3)
3700+fldl -128(%ecx)
3701+fmull -40(%ecx)
3702+fxch %st(4)
3703+fmull curve25519_athlon_scale
3704+fldl 72(%edx)
3705+fmull -80(%ecx)
3706+faddp %st(0),%st(6)
3707+fldl 88(%edx)
3708+fmull -104(%ecx)
3709+faddp %st(0),%st(3)
3710+fldl curve25519_athlon_alpha102
3711+fadd %st(2),%st(0)
3712+fldl -120(%ecx)
3713+fmull -48(%ecx)
3714+faddp %st(0),%st(6)
3715+fldl 64(%edx)
3716+fmull -64(%ecx)
3717+faddp %st(0),%st(2)
3718+fldl 80(%edx)
3719+fmull -88(%ecx)
3720+faddp %st(0),%st(7)
3721+fldl 96(%edx)
3722+fmull -112(%ecx)
3723+faddp %st(0),%st(4)
3724+fsubl curve25519_athlon_alpha102
3725+fxch %st(4)
3726+fstpl 32(%esp)
3727+fxch %st(4)
3728+fmull curve25519_athlon_scale
3729+fldl 72(%edx)
3730+fmull -72(%ecx)
3731+faddp %st(0),%st(5)
3732+fldl 88(%edx)
3733+fmull -96(%ecx)
3734+faddp %st(0),%st(6)
3735+fxch %st(3)
3736+fadd %st(0),%st(2)
3737+fsubrp %st(0),%st(1)
3738+fldl 64(%edx)
3739+fmull -56(%ecx)
3740+faddp %st(0),%st(3)
3741+fldl 80(%edx)
3742+fmull -80(%ecx)
3743+faddp %st(0),%st(4)
3744+fldl 96(%edx)
3745+fmull -104(%ecx)
3746+faddp %st(0),%st(5)
3747+fldl curve25519_athlon_alpha128
3748+fadd %st(2),%st(0)
3749+fldl 72(%edx)
3750+fmull -64(%ecx)
3751+faddp %st(0),%st(4)
3752+fldl 88(%edx)
3753+fmull -88(%ecx)
3754+faddp %st(0),%st(5)
3755+fldl 104(%edx)
3756+fmull -112(%ecx)
3757+faddp %st(0),%st(6)
3758+fsubl curve25519_athlon_alpha128
3759+fxch %st(1)
3760+fstpl 40(%esp)
3761+fldl 80(%edx)
3762+fmull -72(%ecx)
3763+faddp %st(0),%st(3)
3764+fldl 96(%edx)
3765+fmull -96(%ecx)
3766+faddp %st(0),%st(4)
3767+fadd %st(0),%st(4)
3768+fsubrp %st(0),%st(1)
3769+fstpl 48(%esp)
3770+fldl 88(%edx)
3771+fmull -80(%ecx)
3772+faddp %st(0),%st(1)
3773+fldl 104(%edx)
3774+fmull -104(%ecx)
3775+faddp %st(0),%st(2)
3776+fldl curve25519_athlon_alpha153
3777+fadd %st(3),%st(0)
3778+fldl 96(%edx)
3779+fmull -88(%ecx)
3780+faddp %st(0),%st(2)
3781+fldl 112(%edx)
3782+fmull -112(%ecx)
3783+faddp %st(0),%st(3)
3784+fsubl curve25519_athlon_alpha153
3785+fldl 104(%edx)
3786+fmull -96(%ecx)
3787+faddp %st(0),%st(2)
3788+fadd %st(0),%st(2)
3789+fsubrp %st(0),%st(3)
3790+fxch %st(2)
3791+fstpl 24(%edx)
3792+fldl 112(%edx)
3793+fmull -104(%ecx)
3794+faddp %st(0),%st(2)
3795+fldl curve25519_athlon_alpha179
3796+fadd %st(1),%st(0)
3797+fldl 120(%edx)
3798+fmull -112(%ecx)
3799+faddp %st(0),%st(3)
3800+fsubl curve25519_athlon_alpha179
3801+fldl 0(%esp)
3802+fldl 8(%esp)
3803+fxch %st(2)
3804+fadd %st(0),%st(4)
3805+fsubrp %st(0),%st(3)
3806+fldl curve25519_athlon_alpha204
3807+fadd %st(4),%st(0)
3808+fsubl curve25519_athlon_alpha204
3809+fadd %st(0),%st(1)
3810+fsubrp %st(0),%st(4)
3811+fldl curve25519_athlon_alpha230
3812+fadd %st(1),%st(0)
3813+fsubl curve25519_athlon_alpha230
3814+fsubr %st(0),%st(1)
3815+faddp %st(0),%st(2)
3816+fxch %st(2)
3817+fstpl 32(%edx)
3818+fxch %st(2)
3819+fstpl 48(%edx)
3820+fstpl 56(%edx)
3821+fstpl -112(%ecx)
3822+fldl -48(%edx)
3823+faddl 64(%edx)
3824+fstpl -104(%ecx)
3825+fldl -40(%edx)
3826+faddl 72(%edx)
3827+fstpl -96(%ecx)
3828+fldl -32(%edx)
3829+faddl 80(%edx)
3830+fstpl -88(%ecx)
3831+fldl -24(%edx)
3832+faddl 88(%edx)
3833+fstpl -80(%ecx)
3834+fldl -16(%edx)
3835+faddl 96(%edx)
3836+fstpl -16(%edx)
3837+fldl -8(%edx)
3838+faddl 104(%edx)
3839+fstpl -8(%edx)
3840+fldl 0(%edx)
3841+faddl 112(%edx)
3842+fstpl 0(%edx)
3843+fldl 8(%edx)
3844+faddl 120(%edx)
3845+fstpl 8(%edx)
3846+fldl 16(%edx)
3847+faddl -128(%ecx)
3848+fstpl 16(%edx)
3849+fldl 48(%ecx)
3850+faddl -120(%ecx)
3851+fstpl 80(%edx)
3852+fldl 128(%ecx)
3853+fmull -128(%edx)
3854+fmull curve25519_athlon_scale
3855+fldl 56(%ecx)
3856+fmull 120(%esp)
3857+faddp %st(0),%st(1)
3858+fldl 64(%ecx)
3859+fmull 112(%esp)
3860+faddp %st(0),%st(1)
3861+fldl 56(%ecx)
3862+fmull -128(%edx)
3863+fldl 72(%ecx)
3864+fmull 104(%esp)
3865+faddp %st(0),%st(2)
3866+fldl 64(%ecx)
3867+fmull 120(%esp)
3868+faddp %st(0),%st(1)
3869+fldl 80(%ecx)
3870+fmull 96(%esp)
3871+faddp %st(0),%st(2)
3872+fldl 72(%ecx)
3873+fmull 112(%esp)
3874+faddp %st(0),%st(1)
3875+fldl 88(%ecx)
3876+fmull 88(%esp)
3877+faddp %st(0),%st(2)
3878+fldl 80(%ecx)
3879+fmull 104(%esp)
3880+faddp %st(0),%st(1)
3881+fldl 64(%ecx)
3882+fmull -128(%edx)
3883+fldl 96(%ecx)
3884+fmull 80(%esp)
3885+faddp %st(0),%st(3)
3886+fldl 88(%ecx)
3887+fmull 96(%esp)
3888+faddp %st(0),%st(2)
3889+fldl 72(%ecx)
3890+fmull 120(%esp)
3891+faddp %st(0),%st(1)
3892+fldl 104(%ecx)
3893+fmull 72(%esp)
3894+faddp %st(0),%st(3)
3895+fldl 96(%ecx)
3896+fmull 88(%esp)
3897+faddp %st(0),%st(2)
3898+fldl 80(%ecx)
3899+fmull 112(%esp)
3900+faddp %st(0),%st(1)
3901+fldl 112(%ecx)
3902+fmull 64(%esp)
3903+faddp %st(0),%st(3)
3904+fldl 104(%ecx)
3905+fmull 80(%esp)
3906+faddp %st(0),%st(2)
3907+fldl 88(%ecx)
3908+fmull 104(%esp)
3909+faddp %st(0),%st(1)
3910+fldl 120(%ecx)
3911+fmull 56(%esp)
3912+faddp %st(0),%st(3)
3913+fldl 112(%ecx)
3914+fmull 72(%esp)
3915+faddp %st(0),%st(2)
3916+fldl 96(%ecx)
3917+fmull 96(%esp)
3918+faddp %st(0),%st(1)
3919+fldl 72(%ecx)
3920+fmull -128(%edx)
3921+fldl 104(%ecx)
3922+fmull 88(%esp)
3923+faddp %st(0),%st(2)
3924+fldl 120(%ecx)
3925+fmull 64(%esp)
3926+faddp %st(0),%st(3)
3927+fldl curve25519_athlon_alpha230
3928+fadd %st(4),%st(0)
3929+fldl 80(%ecx)
3930+fmull 120(%esp)
3931+faddp %st(0),%st(2)
3932+fldl 112(%ecx)
3933+fmull 80(%esp)
3934+faddp %st(0),%st(3)
3935+fldl 128(%ecx)
3936+fmull 56(%esp)
3937+faddp %st(0),%st(4)
3938+fsubl curve25519_athlon_alpha230
3939+fldl 88(%ecx)
3940+fmull 112(%esp)
3941+faddp %st(0),%st(2)
3942+fldl 80(%ecx)
3943+fmull -128(%edx)
3944+fldl 120(%ecx)
3945+fmull 72(%esp)
3946+faddp %st(0),%st(4)
3947+fxch %st(1)
3948+fadd %st(0),%st(4)
3949+fldl 96(%ecx)
3950+fmull 104(%esp)
3951+faddp %st(0),%st(3)
3952+fldl 88(%ecx)
3953+fmull 120(%esp)
3954+faddp %st(0),%st(2)
3955+fsubrp %st(0),%st(5)
3956+fldl curve25519_athlon_alpha255
3957+fadd %st(4),%st(0)
3958+fldl 104(%ecx)
3959+fmull 96(%esp)
3960+faddp %st(0),%st(3)
3961+fldl 96(%ecx)
3962+fmull 112(%esp)
3963+faddp %st(0),%st(2)
3964+fldl 128(%ecx)
3965+fmull 64(%esp)
3966+faddp %st(0),%st(4)
3967+fsubl curve25519_athlon_alpha255
3968+fldl 112(%ecx)
3969+fmull 88(%esp)
3970+faddp %st(0),%st(3)
3971+fldl 88(%ecx)
3972+fmull -128(%edx)
3973+fldl 104(%ecx)
3974+fmull 104(%esp)
3975+faddp %st(0),%st(3)
3976+fldl 120(%ecx)
3977+fmull 80(%esp)
3978+faddp %st(0),%st(4)
3979+fxch %st(1)
3980+fadd %st(0),%st(4)
3981+fsubrp %st(0),%st(5)
3982+fxch %st(5)
3983+fstpl 0(%esp)
3984+fldl 96(%ecx)
3985+fmull 120(%esp)
3986+faddp %st(0),%st(5)
3987+fldl 112(%ecx)
3988+fmull 96(%esp)
3989+faddp %st(0),%st(1)
3990+fldl 128(%ecx)
3991+fmull 72(%esp)
3992+faddp %st(0),%st(2)
3993+fxch %st(2)
3994+fmull curve25519_athlon_scale
3995+fldl 104(%ecx)
3996+fmull 112(%esp)
3997+faddp %st(0),%st(5)
3998+fldl 120(%ecx)
3999+fmull 88(%esp)
4000+faddp %st(0),%st(3)
4001+fxch %st(1)
4002+fmull curve25519_athlon_scale
4003+fldl 56(%ecx)
4004+fmull 56(%esp)
4005+faddp %st(0),%st(2)
4006+fxch %st(3)
4007+fstpl 8(%esp)
4008+fldl 96(%ecx)
4009+fmull -128(%edx)
4010+fldl 112(%ecx)
4011+fmull 104(%esp)
4012+faddp %st(0),%st(5)
4013+fldl 128(%ecx)
4014+fmull 80(%esp)
4015+faddp %st(0),%st(3)
4016+fldl 56(%ecx)
4017+fmull 64(%esp)
4018+faddp %st(0),%st(4)
4019+fldl curve25519_athlon_alpha26
4020+fadd %st(2),%st(0)
4021+fldl 104(%ecx)
4022+fmull 120(%esp)
4023+faddp %st(0),%st(2)
4024+fldl 120(%ecx)
4025+fmull 96(%esp)
4026+faddp %st(0),%st(6)
4027+fxch %st(3)
4028+fmull curve25519_athlon_scale
4029+fldl 64(%ecx)
4030+fmull 56(%esp)
4031+faddp %st(0),%st(5)
4032+fxch %st(3)
4033+fsubl curve25519_athlon_alpha26
4034+fldl 112(%ecx)
4035+fmull 112(%esp)
4036+faddp %st(0),%st(2)
4037+fldl 128(%ecx)
4038+fmull 88(%esp)
4039+faddp %st(0),%st(6)
4040+fldl 56(%ecx)
4041+fmull 72(%esp)
4042+faddp %st(0),%st(4)
4043+fadd %st(0),%st(4)
4044+fsubrp %st(0),%st(2)
4045+fldl 104(%ecx)
4046+fmull -128(%edx)
4047+fldl 120(%ecx)
4048+fmull 104(%esp)
4049+faddp %st(0),%st(2)
4050+fxch %st(5)
4051+fmull curve25519_athlon_scale
4052+fldl 64(%ecx)
4053+fmull 64(%esp)
4054+faddp %st(0),%st(4)
4055+fldl curve25519_athlon_alpha51
4056+fadd %st(5),%st(0)
4057+fldl 112(%ecx)
4058+fmull 120(%esp)
4059+faddp %st(0),%st(7)
4060+fldl 128(%ecx)
4061+fmull 96(%esp)
4062+faddp %st(0),%st(3)
4063+fldl 56(%ecx)
4064+fmull 80(%esp)
4065+faddp %st(0),%st(2)
4066+fldl 72(%ecx)
4067+fmull 56(%esp)
4068+faddp %st(0),%st(5)
4069+fsubl curve25519_athlon_alpha51
4070+fxch %st(3)
4071+fstpl -48(%edx)
4072+fldl 120(%ecx)
4073+fmull 112(%esp)
4074+faddp %st(0),%st(6)
4075+fxch %st(1)
4076+fmull curve25519_athlon_scale
4077+fldl 64(%ecx)
4078+fmull 72(%esp)
4079+faddp %st(0),%st(2)
4080+fxch %st(2)
4081+fadd %st(0),%st(3)
4082+fsubrp %st(0),%st(4)
4083+fldl 112(%ecx)
4084+fmull -128(%edx)
4085+fldl 128(%ecx)
4086+fmull 104(%esp)
4087+faddp %st(0),%st(6)
4088+fldl 56(%ecx)
4089+fmull 88(%esp)
4090+faddp %st(0),%st(3)
4091+fldl 72(%ecx)
4092+fmull 64(%esp)
4093+faddp %st(0),%st(2)
4094+fldl curve25519_athlon_alpha77
4095+fadd %st(4),%st(0)
4096+fldl 120(%ecx)
4097+fmull 120(%esp)
4098+faddp %st(0),%st(2)
4099+fxch %st(6)
4100+fmull curve25519_athlon_scale
4101+fldl 64(%ecx)
4102+fmull 80(%esp)
4103+faddp %st(0),%st(4)
4104+fldl 80(%ecx)
4105+fmull 56(%esp)
4106+faddp %st(0),%st(3)
4107+fxch %st(6)
4108+fsubl curve25519_athlon_alpha77
4109+fxch %st(5)
4110+fstpl -40(%edx)
4111+fldl 128(%ecx)
4112+fmull 112(%esp)
4113+faddp %st(0),%st(1)
4114+fldl 56(%ecx)
4115+fmull 96(%esp)
4116+faddp %st(0),%st(6)
4117+fldl 72(%ecx)
4118+fmull 72(%esp)
4119+faddp %st(0),%st(3)
4120+fxch %st(4)
4121+fadd %st(0),%st(1)
4122+fsubrp %st(0),%st(3)
4123+fldl 120(%ecx)
4124+fmull -128(%edx)
4125+fxch %st(4)
4126+fmull curve25519_athlon_scale
4127+fldl 64(%ecx)
4128+fmull 88(%esp)
4129+faddp %st(0),%st(6)
4130+fldl 80(%ecx)
4131+fmull 64(%esp)
4132+faddp %st(0),%st(3)
4133+fldl curve25519_athlon_alpha102
4134+fadd %st(2),%st(0)
4135+fldl 128(%ecx)
4136+fmull 120(%esp)
4137+faddp %st(0),%st(6)
4138+fldl 56(%ecx)
4139+fmull 104(%esp)
4140+faddp %st(0),%st(2)
4141+fldl 72(%ecx)
4142+fmull 80(%esp)
4143+faddp %st(0),%st(7)
4144+fldl 88(%ecx)
4145+fmull 56(%esp)
4146+faddp %st(0),%st(4)
4147+fsubl curve25519_athlon_alpha102
4148+fxch %st(4)
4149+fstpl -32(%edx)
4150+fxch %st(4)
4151+fmull curve25519_athlon_scale
4152+fldl 64(%ecx)
4153+fmull 96(%esp)
4154+faddp %st(0),%st(5)
4155+fldl 80(%ecx)
4156+fmull 72(%esp)
4157+faddp %st(0),%st(6)
4158+fxch %st(3)
4159+fadd %st(0),%st(2)
4160+fsubrp %st(0),%st(1)
4161+fldl 56(%ecx)
4162+fmull 112(%esp)
4163+faddp %st(0),%st(3)
4164+fldl 72(%ecx)
4165+fmull 88(%esp)
4166+faddp %st(0),%st(4)
4167+fldl 88(%ecx)
4168+fmull 64(%esp)
4169+faddp %st(0),%st(5)
4170+fldl curve25519_athlon_alpha128
4171+fadd %st(2),%st(0)
4172+fldl 64(%ecx)
4173+fmull 104(%esp)
4174+faddp %st(0),%st(4)
4175+fldl 80(%ecx)
4176+fmull 80(%esp)
4177+faddp %st(0),%st(5)
4178+fldl 96(%ecx)
4179+fmull 56(%esp)
4180+faddp %st(0),%st(6)
4181+fsubl curve25519_athlon_alpha128
4182+fxch %st(1)
4183+fstpl -24(%edx)
4184+fldl 72(%ecx)
4185+fmull 96(%esp)
4186+faddp %st(0),%st(3)
4187+fldl 88(%ecx)
4188+fmull 72(%esp)
4189+faddp %st(0),%st(4)
4190+fadd %st(0),%st(4)
4191+fsubrp %st(0),%st(1)
4192+fstpl 96(%edx)
4193+fldl 80(%ecx)
4194+fmull 88(%esp)
4195+faddp %st(0),%st(1)
4196+fldl 96(%ecx)
4197+fmull 64(%esp)
4198+faddp %st(0),%st(2)
4199+fldl curve25519_athlon_alpha153
4200+fadd %st(3),%st(0)
4201+fldl 88(%ecx)
4202+fmull 80(%esp)
4203+faddp %st(0),%st(2)
4204+fldl 104(%ecx)
4205+fmull 56(%esp)
4206+faddp %st(0),%st(3)
4207+fsubl curve25519_athlon_alpha153
4208+fldl 96(%ecx)
4209+fmull 72(%esp)
4210+faddp %st(0),%st(2)
4211+fadd %st(0),%st(2)
4212+fsubrp %st(0),%st(3)
4213+fxch %st(2)
4214+fstpl 104(%edx)
4215+fldl 104(%ecx)
4216+fmull 64(%esp)
4217+faddp %st(0),%st(2)
4218+fldl curve25519_athlon_alpha179
4219+fadd %st(1),%st(0)
4220+fldl 112(%ecx)
4221+fmull 56(%esp)
4222+faddp %st(0),%st(3)
4223+fsubl curve25519_athlon_alpha179
4224+fldl 0(%esp)
4225+fldl 8(%esp)
4226+fxch %st(2)
4227+fadd %st(0),%st(4)
4228+fsubrp %st(0),%st(3)
4229+fldl curve25519_athlon_alpha204
4230+fadd %st(4),%st(0)
4231+fsubl curve25519_athlon_alpha204
4232+fadd %st(0),%st(1)
4233+fsubrp %st(0),%st(4)
4234+fldl curve25519_athlon_alpha230
4235+fadd %st(1),%st(0)
4236+fsubl curve25519_athlon_alpha230
4237+fsubr %st(0),%st(1)
4238+faddp %st(0),%st(2)
4239+fxch %st(2)
4240+fstpl 112(%edx)
4241+fxch %st(2)
4242+fstpl 120(%edx)
4243+fstpl -128(%ecx)
4244+fstpl -120(%ecx)
4245+fldl 80(%edx)
4246+fmull 40(%ecx)
4247+fmull curve25519_athlon_scale
4248+fldl -104(%ecx)
4249+fmull 32(%ecx)
4250+faddp %st(0),%st(1)
4251+fldl -96(%ecx)
4252+fmull 24(%ecx)
4253+faddp %st(0),%st(1)
4254+fldl -104(%ecx)
4255+fmull 40(%ecx)
4256+fldl -88(%ecx)
4257+fmull 16(%ecx)
4258+faddp %st(0),%st(2)
4259+fldl -96(%ecx)
4260+fmull 32(%ecx)
4261+faddp %st(0),%st(1)
4262+fldl -80(%ecx)
4263+fmull 8(%ecx)
4264+faddp %st(0),%st(2)
4265+fldl -88(%ecx)
4266+fmull 24(%ecx)
4267+faddp %st(0),%st(1)
4268+fldl -16(%edx)
4269+fmull 0(%ecx)
4270+faddp %st(0),%st(2)
4271+fldl -80(%ecx)
4272+fmull 16(%ecx)
4273+faddp %st(0),%st(1)
4274+fldl -96(%ecx)
4275+fmull 40(%ecx)
4276+fldl -8(%edx)
4277+fmull -8(%ecx)
4278+faddp %st(0),%st(3)
4279+fldl -16(%edx)
4280+fmull 8(%ecx)
4281+faddp %st(0),%st(2)
4282+fldl -88(%ecx)
4283+fmull 32(%ecx)
4284+faddp %st(0),%st(1)
4285+fldl 0(%edx)
4286+fmull -16(%ecx)
4287+faddp %st(0),%st(3)
4288+fldl -8(%edx)
4289+fmull 0(%ecx)
4290+faddp %st(0),%st(2)
4291+fldl -80(%ecx)
4292+fmull 24(%ecx)
4293+faddp %st(0),%st(1)
4294+fldl 8(%edx)
4295+fmull -24(%ecx)
4296+faddp %st(0),%st(3)
4297+fldl 0(%edx)
4298+fmull -8(%ecx)
4299+faddp %st(0),%st(2)
4300+fldl -16(%edx)
4301+fmull 16(%ecx)
4302+faddp %st(0),%st(1)
4303+fldl 16(%edx)
4304+fmull -32(%ecx)
4305+faddp %st(0),%st(3)
4306+fldl 8(%edx)
4307+fmull -16(%ecx)
4308+faddp %st(0),%st(2)
4309+fldl -8(%edx)
4310+fmull 8(%ecx)
4311+faddp %st(0),%st(1)
4312+fldl -88(%ecx)
4313+fmull 40(%ecx)
4314+fldl 0(%edx)
4315+fmull 0(%ecx)
4316+faddp %st(0),%st(2)
4317+fldl 16(%edx)
4318+fmull -24(%ecx)
4319+faddp %st(0),%st(3)
4320+fldl curve25519_athlon_alpha230
4321+fadd %st(4),%st(0)
4322+fldl -80(%ecx)
4323+fmull 32(%ecx)
4324+faddp %st(0),%st(2)
4325+fldl 8(%edx)
4326+fmull -8(%ecx)
4327+faddp %st(0),%st(3)
4328+fldl 80(%edx)
4329+fmull -32(%ecx)
4330+faddp %st(0),%st(4)
4331+fsubl curve25519_athlon_alpha230
4332+fldl -16(%edx)
4333+fmull 24(%ecx)
4334+faddp %st(0),%st(2)
4335+fldl -80(%ecx)
4336+fmull 40(%ecx)
4337+fldl 16(%edx)
4338+fmull -16(%ecx)
4339+faddp %st(0),%st(4)
4340+fxch %st(1)
4341+fadd %st(0),%st(4)
4342+fldl -8(%edx)
4343+fmull 16(%ecx)
4344+faddp %st(0),%st(3)
4345+fldl -16(%edx)
4346+fmull 32(%ecx)
4347+faddp %st(0),%st(2)
4348+fsubrp %st(0),%st(5)
4349+fldl curve25519_athlon_alpha255
4350+fadd %st(4),%st(0)
4351+fldl 0(%edx)
4352+fmull 8(%ecx)
4353+faddp %st(0),%st(3)
4354+fldl -8(%edx)
4355+fmull 24(%ecx)
4356+faddp %st(0),%st(2)
4357+fldl 80(%edx)
4358+fmull -24(%ecx)
4359+faddp %st(0),%st(4)
4360+fsubl curve25519_athlon_alpha255
4361+fldl 8(%edx)
4362+fmull 0(%ecx)
4363+faddp %st(0),%st(3)
4364+fldl -16(%edx)
4365+fmull 40(%ecx)
4366+fldl 0(%edx)
4367+fmull 16(%ecx)
4368+faddp %st(0),%st(3)
4369+fldl 16(%edx)
4370+fmull -8(%ecx)
4371+faddp %st(0),%st(4)
4372+fxch %st(1)
4373+fadd %st(0),%st(4)
4374+fsubrp %st(0),%st(5)
4375+fxch %st(5)
4376+fstpl 0(%esp)
4377+fldl -8(%edx)
4378+fmull 32(%ecx)
4379+faddp %st(0),%st(5)
4380+fldl 8(%edx)
4381+fmull 8(%ecx)
4382+faddp %st(0),%st(1)
4383+fldl 80(%edx)
4384+fmull -16(%ecx)
4385+faddp %st(0),%st(2)
4386+fxch %st(2)
4387+fmull curve25519_athlon_scale
4388+fldl 0(%edx)
4389+fmull 24(%ecx)
4390+faddp %st(0),%st(5)
4391+fldl 16(%edx)
4392+fmull 0(%ecx)
4393+faddp %st(0),%st(3)
4394+fxch %st(1)
4395+fmull curve25519_athlon_scale
4396+fldl -104(%ecx)
4397+fmull -32(%ecx)
4398+faddp %st(0),%st(2)
4399+fxch %st(3)
4400+fstpl 8(%esp)
4401+fldl -8(%edx)
4402+fmull 40(%ecx)
4403+fldl 8(%edx)
4404+fmull 16(%ecx)
4405+faddp %st(0),%st(5)
4406+fldl 80(%edx)
4407+fmull -8(%ecx)
4408+faddp %st(0),%st(3)
4409+fldl -104(%ecx)
4410+fmull -24(%ecx)
4411+faddp %st(0),%st(4)
4412+fldl curve25519_athlon_alpha26
4413+fadd %st(2),%st(0)
4414+fldl 0(%edx)
4415+fmull 32(%ecx)
4416+faddp %st(0),%st(2)
4417+fldl 16(%edx)
4418+fmull 8(%ecx)
4419+faddp %st(0),%st(6)
4420+fxch %st(3)
4421+fmull curve25519_athlon_scale
4422+fldl -96(%ecx)
4423+fmull -32(%ecx)
4424+faddp %st(0),%st(5)
4425+fxch %st(3)
4426+fsubl curve25519_athlon_alpha26
4427+fldl 8(%edx)
4428+fmull 24(%ecx)
4429+faddp %st(0),%st(2)
4430+fldl 80(%edx)
4431+fmull 0(%ecx)
4432+faddp %st(0),%st(6)
4433+fldl -104(%ecx)
4434+fmull -16(%ecx)
4435+faddp %st(0),%st(4)
4436+fadd %st(0),%st(4)
4437+fsubrp %st(0),%st(2)
4438+fldl 0(%edx)
4439+fmull 40(%ecx)
4440+fldl 16(%edx)
4441+fmull 16(%ecx)
4442+faddp %st(0),%st(2)
4443+fxch %st(5)
4444+fmull curve25519_athlon_scale
4445+fldl -96(%ecx)
4446+fmull -24(%ecx)
4447+faddp %st(0),%st(4)
4448+fldl curve25519_athlon_alpha51
4449+fadd %st(5),%st(0)
4450+fldl 8(%edx)
4451+fmull 32(%ecx)
4452+faddp %st(0),%st(7)
4453+fldl 80(%edx)
4454+fmull 8(%ecx)
4455+faddp %st(0),%st(3)
4456+fldl -104(%ecx)
4457+fmull -8(%ecx)
4458+faddp %st(0),%st(2)
4459+fldl -88(%ecx)
4460+fmull -32(%ecx)
4461+faddp %st(0),%st(5)
4462+fsubl curve25519_athlon_alpha51
4463+fxch %st(3)
4464+fstpl 64(%edx)
4465+fldl 16(%edx)
4466+fmull 24(%ecx)
4467+faddp %st(0),%st(6)
4468+fxch %st(1)
4469+fmull curve25519_athlon_scale
4470+fldl -96(%ecx)
4471+fmull -16(%ecx)
4472+faddp %st(0),%st(2)
4473+fxch %st(2)
4474+fadd %st(0),%st(3)
4475+fsubrp %st(0),%st(4)
4476+fldl 8(%edx)
4477+fmull 40(%ecx)
4478+fldl 80(%edx)
4479+fmull 16(%ecx)
4480+faddp %st(0),%st(6)
4481+fldl -104(%ecx)
4482+fmull 0(%ecx)
4483+faddp %st(0),%st(3)
4484+fldl -88(%ecx)
4485+fmull -24(%ecx)
4486+faddp %st(0),%st(2)
4487+fldl curve25519_athlon_alpha77
4488+fadd %st(4),%st(0)
4489+fldl 16(%edx)
4490+fmull 32(%ecx)
4491+faddp %st(0),%st(2)
4492+fxch %st(6)
4493+fmull curve25519_athlon_scale
4494+fldl -96(%ecx)
4495+fmull -8(%ecx)
4496+faddp %st(0),%st(4)
4497+fldl -80(%ecx)
4498+fmull -32(%ecx)
4499+faddp %st(0),%st(3)
4500+fxch %st(6)
4501+fsubl curve25519_athlon_alpha77
4502+fxch %st(5)
4503+fstpl 72(%edx)
4504+fldl 80(%edx)
4505+fmull 24(%ecx)
4506+faddp %st(0),%st(1)
4507+fldl -104(%ecx)
4508+fmull 8(%ecx)
4509+faddp %st(0),%st(6)
4510+fldl -88(%ecx)
4511+fmull -16(%ecx)
4512+faddp %st(0),%st(3)
4513+fxch %st(4)
4514+fadd %st(0),%st(1)
4515+fsubrp %st(0),%st(3)
4516+fldl 16(%edx)
4517+fmull 40(%ecx)
4518+fxch %st(4)
4519+fmull curve25519_athlon_scale
4520+fldl -96(%ecx)
4521+fmull 0(%ecx)
4522+faddp %st(0),%st(6)
4523+fldl -80(%ecx)
4524+fmull -24(%ecx)
4525+faddp %st(0),%st(3)
4526+fldl curve25519_athlon_alpha102
4527+fadd %st(2),%st(0)
4528+fldl 80(%edx)
4529+fmull 32(%ecx)
4530+faddp %st(0),%st(6)
4531+fldl -104(%ecx)
4532+fmull 16(%ecx)
4533+faddp %st(0),%st(2)
4534+fldl -88(%ecx)
4535+fmull -8(%ecx)
4536+faddp %st(0),%st(7)
4537+fldl -16(%edx)
4538+fmull -32(%ecx)
4539+faddp %st(0),%st(4)
4540+fsubl curve25519_athlon_alpha102
4541+fxch %st(4)
4542+fstpl 80(%edx)
4543+fxch %st(4)
4544+fmull curve25519_athlon_scale
4545+fldl -96(%ecx)
4546+fmull 8(%ecx)
4547+faddp %st(0),%st(5)
4548+fldl -80(%ecx)
4549+fmull -16(%ecx)
4550+faddp %st(0),%st(6)
4551+fxch %st(3)
4552+fadd %st(0),%st(2)
4553+fsubrp %st(0),%st(1)
4554+fldl -104(%ecx)
4555+fmull 24(%ecx)
4556+faddp %st(0),%st(3)
4557+fldl -88(%ecx)
4558+fmull 0(%ecx)
4559+faddp %st(0),%st(4)
4560+fldl -16(%edx)
4561+fmull -24(%ecx)
4562+faddp %st(0),%st(5)
4563+fldl curve25519_athlon_alpha128
4564+fadd %st(2),%st(0)
4565+fldl -96(%ecx)
4566+fmull 16(%ecx)
4567+faddp %st(0),%st(4)
4568+fldl -80(%ecx)
4569+fmull -8(%ecx)
4570+faddp %st(0),%st(5)
4571+fldl -8(%edx)
4572+fmull -32(%ecx)
4573+faddp %st(0),%st(6)
4574+fsubl curve25519_athlon_alpha128
4575+fxch %st(1)
4576+fstpl 88(%edx)
4577+fldl -88(%ecx)
4578+fmull 8(%ecx)
4579+faddp %st(0),%st(3)
4580+fldl -16(%edx)
4581+fmull -16(%ecx)
4582+faddp %st(0),%st(4)
4583+fadd %st(0),%st(4)
4584+fsubrp %st(0),%st(1)
4585+fstpl -104(%ecx)
4586+fldl -80(%ecx)
4587+fmull 0(%ecx)
4588+faddp %st(0),%st(1)
4589+fldl -8(%edx)
4590+fmull -24(%ecx)
4591+faddp %st(0),%st(2)
4592+fldl curve25519_athlon_alpha153
4593+fadd %st(3),%st(0)
4594+fldl -16(%edx)
4595+fmull -8(%ecx)
4596+faddp %st(0),%st(2)
4597+fldl 0(%edx)
4598+fmull -32(%ecx)
4599+faddp %st(0),%st(3)
4600+fsubl curve25519_athlon_alpha153
4601+fldl -8(%edx)
4602+fmull -16(%ecx)
4603+faddp %st(0),%st(2)
4604+fadd %st(0),%st(2)
4605+fsubrp %st(0),%st(3)
4606+fxch %st(2)
4607+fstpl -96(%ecx)
4608+fldl 0(%edx)
4609+fmull -24(%ecx)
4610+faddp %st(0),%st(2)
4611+fldl curve25519_athlon_alpha179
4612+fadd %st(1),%st(0)
4613+fldl 8(%edx)
4614+fmull -32(%ecx)
4615+faddp %st(0),%st(3)
4616+fsubl curve25519_athlon_alpha179
4617+fldl 0(%esp)
4618+fldl 8(%esp)
4619+fxch %st(2)
4620+fadd %st(0),%st(4)
4621+fsubrp %st(0),%st(3)
4622+fldl curve25519_athlon_alpha204
4623+fadd %st(4),%st(0)
4624+fsubl curve25519_athlon_alpha204
4625+fadd %st(0),%st(1)
4626+fsubrp %st(0),%st(4)
4627+fldl curve25519_athlon_alpha230
4628+fadd %st(1),%st(0)
4629+fsubl curve25519_athlon_alpha230
4630+fsubr %st(0),%st(1)
4631+faddp %st(0),%st(2)
4632+fxch %st(2)
4633+fstpl -88(%ecx)
4634+fxch %st(2)
4635+fstpl -80(%ecx)
4636+fstpl -72(%ecx)
4637+fstpl -64(%ecx)
4638+fldl 136(%ecx)
4639+fldl -120(%edx)
4640+fldl 16(%esp)
4641+fsubr %st(1),%st(0)
4642+fmul %st(2),%st(0)
4643+fsubr %st(0),%st(1)
4644+faddl 16(%esp)
4645+fxch %st(1)
4646+fstpl -16(%edx)
4647+fstpl 0(%esp)
4648+fldl -112(%edx)
4649+fldl 24(%esp)
4650+fsubr %st(1),%st(0)
4651+fmul %st(2),%st(0)
4652+fsubr %st(0),%st(1)
4653+faddl 24(%esp)
4654+fxch %st(1)
4655+fstpl -8(%edx)
4656+fstpl 8(%esp)
4657+fldl -104(%edx)
4658+fldl 32(%esp)
4659+fsubr %st(1),%st(0)
4660+fmul %st(2),%st(0)
4661+fsubr %st(0),%st(1)
4662+faddl 32(%esp)
4663+fxch %st(1)
4664+fstpl 0(%edx)
4665+fstpl 16(%esp)
4666+fldl 40(%edx)
4667+fldl 40(%esp)
4668+fsubr %st(1),%st(0)
4669+fmul %st(2),%st(0)
4670+fsubr %st(0),%st(1)
4671+faddl 40(%esp)
4672+fxch %st(1)
4673+fstpl 8(%edx)
4674+fstpl 24(%esp)
4675+fldl -96(%edx)
4676+fldl 48(%esp)
4677+fsubr %st(1),%st(0)
4678+fmul %st(2),%st(0)
4679+fsubr %st(0),%st(1)
4680+faddl 48(%esp)
4681+fxch %st(1)
4682+fstpl 16(%edx)
4683+fstpl 32(%esp)
4684+fldl -88(%edx)
4685+fldl 24(%edx)
4686+fsubr %st(1),%st(0)
4687+fmul %st(2),%st(0)
4688+fsubr %st(0),%st(1)
4689+faddl 24(%edx)
4690+fxch %st(1)
4691+fstpl 24(%edx)
4692+fstpl 40(%esp)
4693+fldl -80(%edx)
4694+fldl 32(%edx)
4695+fsubr %st(1),%st(0)
4696+fmul %st(2),%st(0)
4697+fsubr %st(0),%st(1)
4698+faddl 32(%edx)
4699+fxch %st(1)
4700+fstpl 32(%edx)
4701+fstpl 48(%esp)
4702+fldl -72(%edx)
4703+fldl 48(%edx)
4704+fsubr %st(1),%st(0)
4705+fmul %st(2),%st(0)
4706+fsubr %st(0),%st(1)
4707+faddl 48(%edx)
4708+fxch %st(1)
4709+fstpl 40(%edx)
4710+fstpl -120(%edx)
4711+fldl -64(%edx)
4712+fldl 56(%edx)
4713+fsubr %st(1),%st(0)
4714+fmul %st(2),%st(0)
4715+fsubr %st(0),%st(1)
4716+faddl 56(%edx)
4717+fxch %st(1)
4718+fstpl 48(%edx)
4719+fstpl -112(%edx)
4720+fldl -56(%edx)
4721+fldl -112(%ecx)
4722+fsubr %st(1),%st(0)
4723+fmul %st(2),%st(0)
4724+fsubr %st(0),%st(1)
4725+faddl -112(%ecx)
4726+fxch %st(1)
4727+fstpl 56(%edx)
4728+fstpl -104(%edx)
4729+fldl -48(%edx)
4730+fldl 64(%edx)
4731+fsubr %st(1),%st(0)
4732+fmul %st(2),%st(0)
4733+fsubr %st(0),%st(1)
4734+faddl 64(%edx)
4735+fxch %st(1)
4736+fstpl 64(%edx)
4737+fstpl -96(%edx)
4738+fldl -40(%edx)
4739+fldl 72(%edx)
4740+fsubr %st(1),%st(0)
4741+fmul %st(2),%st(0)
4742+fsubr %st(0),%st(1)
4743+faddl 72(%edx)
4744+fxch %st(1)
4745+fstpl 72(%edx)
4746+fstpl -88(%edx)
4747+fldl -32(%edx)
4748+fldl 80(%edx)
4749+fsubr %st(1),%st(0)
4750+fmul %st(2),%st(0)
4751+fsubr %st(0),%st(1)
4752+faddl 80(%edx)
4753+fxch %st(1)
4754+fstpl 80(%edx)
4755+fstpl -80(%edx)
4756+fldl -24(%edx)
4757+fldl 88(%edx)
4758+fsubr %st(1),%st(0)
4759+fmul %st(2),%st(0)
4760+fsubr %st(0),%st(1)
4761+faddl 88(%edx)
4762+fxch %st(1)
4763+fstpl 88(%edx)
4764+fstpl -72(%edx)
4765+fldl 96(%edx)
4766+fldl -104(%ecx)
4767+fsubr %st(1),%st(0)
4768+fmul %st(2),%st(0)
4769+fsubr %st(0),%st(1)
4770+faddl -104(%ecx)
4771+fxch %st(1)
4772+fstpl 96(%edx)
4773+fstpl -64(%edx)
4774+fldl 104(%edx)
4775+fldl -96(%ecx)
4776+fsubr %st(1),%st(0)
4777+fmul %st(2),%st(0)
4778+fsubr %st(0),%st(1)
4779+faddl -96(%ecx)
4780+fxch %st(1)
4781+fstpl 104(%edx)
4782+fstpl -56(%edx)
4783+fldl 112(%edx)
4784+fldl -88(%ecx)
4785+fsubr %st(1),%st(0)
4786+fmul %st(2),%st(0)
4787+fsubr %st(0),%st(1)
4788+faddl -88(%ecx)
4789+fxch %st(1)
4790+fstpl 112(%edx)
4791+fstpl -48(%edx)
4792+fldl 120(%edx)
4793+fldl -80(%ecx)
4794+fsubr %st(1),%st(0)
4795+fmul %st(2),%st(0)
4796+fsubr %st(0),%st(1)
4797+faddl -80(%ecx)
4798+fxch %st(1)
4799+fstpl 120(%edx)
4800+fstpl -40(%edx)
4801+fldl -128(%ecx)
4802+fldl -72(%ecx)
4803+fsubr %st(1),%st(0)
4804+fmul %st(2),%st(0)
4805+fsubr %st(0),%st(1)
4806+faddl -72(%ecx)
4807+fxch %st(1)
4808+fstpl -128(%ecx)
4809+fstpl -32(%edx)
4810+fldl -120(%ecx)
4811+fldl -64(%ecx)
4812+fsubr %st(1),%st(0)
4813+fmulp %st(0),%st(2)
4814+fsub %st(1),%st(0)
4815+fxch %st(1)
4816+faddl -64(%ecx)
4817+fxch %st(1)
4818+fstpl -120(%ecx)
4819+fstpl -24(%edx)
4820+movl 180(%ecx),%esi
4821+movl 184(%ecx),%ebp
4822+sub  $1,%ebp
4823+ja ._morebits
4824+movl 188(%ecx),%edi
4825+sub  $4,%edi
4826+jb ._done
4827+movl (%ebx,%edi),%esi
4828+mov  $32,%ebp
4829+jmp ._morebytes
4830+._done:
4831+movl 4(%esp,%eax),%eax
4832+fldl 0(%esp)
4833+fstpl 0(%eax)
4834+fldl 8(%esp)
4835+fstpl 8(%eax)
4836+fldl 16(%esp)
4837+fstpl 16(%eax)
4838+fldl 24(%esp)
4839+fstpl 24(%eax)
4840+fldl 32(%esp)
4841+fstpl 32(%eax)
4842+fldl 40(%esp)
4843+fstpl 40(%eax)
4844+fldl 48(%esp)
4845+fstpl 48(%eax)
4846+fldl -120(%edx)
4847+fstpl 56(%eax)
4848+fldl -112(%edx)
4849+fstpl 64(%eax)
4850+fldl -104(%edx)
4851+fstpl 72(%eax)
4852+fldl -96(%edx)
4853+fstpl 80(%eax)
4854+fldl -88(%edx)
4855+fstpl 88(%eax)
4856+fldl -80(%edx)
4857+fstpl 96(%eax)
4858+fldl -72(%edx)
4859+fstpl 104(%eax)
4860+fldl -64(%edx)
4861+fstpl 112(%eax)
4862+fldl -56(%edx)
4863+fstpl 120(%eax)
4864+fldl -48(%edx)
4865+fstpl 128(%eax)
4866+fldl -40(%edx)
4867+fstpl 136(%eax)
4868+fldl -32(%edx)
4869+fstpl 144(%eax)
4870+fldl -24(%edx)
4871+fstpl 152(%eax)
4872+movl 160(%ecx),%eax
4873+movl 164(%ecx),%ebx
4874+movl 168(%ecx),%esi
4875+movl 172(%ecx),%edi
4876+movl 176(%ecx),%ebp
4877+add %eax,%esp
4878+ret
4879addfile ./curve25519-20050915/curve25519_athlon_mult.s
4880hunk ./curve25519-20050915/curve25519_athlon_mult.s 1
4881+.text
4882+.p2align 5
4883+.globl _curve25519_athlon_mult
4884+.globl curve25519_athlon_mult
4885+_curve25519_athlon_mult:
4886+curve25519_athlon_mult:
4887+mov %esp,%eax
4888+and $31,%eax
4889+add $32,%eax
4890+sub %eax,%esp
4891+movl %ebp,0(%esp)
4892+movl 4(%esp,%eax),%ecx
4893+movl 8(%esp,%eax),%edx
4894+movl 12(%esp,%eax),%ebp
4895+fldl 72(%edx)
4896+fmull 72(%ebp)
4897+fmull curve25519_athlon_scale
4898+fldl 0(%edx)
4899+fmull 64(%ebp)
4900+faddp %st(0),%st(1)
4901+fldl 8(%edx)
4902+fmull 56(%ebp)
4903+faddp %st(0),%st(1)
4904+fldl 0(%edx)
4905+fmull 72(%ebp)
4906+fldl 16(%edx)
4907+fmull 48(%ebp)
4908+faddp %st(0),%st(2)
4909+fldl 8(%edx)
4910+fmull 64(%ebp)
4911+faddp %st(0),%st(1)
4912+fldl 24(%edx)
4913+fmull 40(%ebp)
4914+faddp %st(0),%st(2)
4915+fldl 16(%edx)
4916+fmull 56(%ebp)
4917+faddp %st(0),%st(1)
4918+fldl 32(%edx)
4919+fmull 32(%ebp)
4920+faddp %st(0),%st(2)
4921+fldl 24(%edx)
4922+fmull 48(%ebp)
4923+faddp %st(0),%st(1)
4924+fldl 8(%edx)
4925+fmull 72(%ebp)
4926+fldl 40(%edx)
4927+fmull 24(%ebp)
4928+faddp %st(0),%st(3)
4929+fldl 32(%edx)
4930+fmull 40(%ebp)
4931+faddp %st(0),%st(2)
4932+fldl 16(%edx)
4933+fmull 64(%ebp)
4934+faddp %st(0),%st(1)
4935+fldl 48(%edx)
4936+fmull 16(%ebp)
4937+faddp %st(0),%st(3)
4938+fldl 40(%edx)
4939+fmull 32(%ebp)
4940+faddp %st(0),%st(2)
4941+fldl 24(%edx)
4942+fmull 56(%ebp)
4943+faddp %st(0),%st(1)
4944+fldl 56(%edx)
4945+fmull 8(%ebp)
4946+faddp %st(0),%st(3)
4947+fldl 48(%edx)
4948+fmull 24(%ebp)
4949+faddp %st(0),%st(2)
4950+fldl 32(%edx)
4951+fmull 48(%ebp)
4952+faddp %st(0),%st(1)
4953+fldl 64(%edx)
4954+fmull 0(%ebp)
4955+faddp %st(0),%st(3)
4956+fldl 56(%edx)
4957+fmull 16(%ebp)
4958+faddp %st(0),%st(2)
4959+fldl 40(%edx)
4960+fmull 40(%ebp)
4961+faddp %st(0),%st(1)
4962+fldl 16(%edx)
4963+fmull 72(%ebp)
4964+fldl 48(%edx)
4965+fmull 32(%ebp)
4966+faddp %st(0),%st(2)
4967+fldl 64(%edx)
4968+fmull 8(%ebp)
4969+faddp %st(0),%st(3)
4970+fldl curve25519_athlon_alpha230
4971+fadd %st(4),%st(0)
4972+fldl 24(%edx)
4973+fmull 64(%ebp)
4974+faddp %st(0),%st(2)
4975+fldl 56(%edx)
4976+fmull 24(%ebp)
4977+faddp %st(0),%st(3)
4978+fldl 72(%edx)
4979+fmull 0(%ebp)
4980+faddp %st(0),%st(4)
4981+fsubl curve25519_athlon_alpha230
4982+fldl 32(%edx)
4983+fmull 56(%ebp)
4984+faddp %st(0),%st(2)
4985+fldl 24(%edx)
4986+fmull 72(%ebp)
4987+fldl 64(%edx)
4988+fmull 16(%ebp)
4989+faddp %st(0),%st(4)
4990+fxch %st(1)
4991+fadd %st(0),%st(4)
4992+fldl 40(%edx)
4993+fmull 48(%ebp)
4994+faddp %st(0),%st(3)
4995+fldl 32(%edx)
4996+fmull 64(%ebp)
4997+faddp %st(0),%st(2)
4998+fsubrp %st(0),%st(5)
4999+fldl curve25519_athlon_alpha255
5000+fadd %st(4),%st(0)
5001+fldl 48(%edx)
5002+fmull 40(%ebp)
5003+faddp %st(0),%st(3)
5004+fldl 40(%edx)
5005+fmull 56(%ebp)
5006+faddp %st(0),%st(2)
5007+fldl 72(%edx)
5008+fmull 8(%ebp)
5009+faddp %st(0),%st(4)
5010+fsubl curve25519_athlon_alpha255
5011+fldl 56(%edx)
5012+fmull 32(%ebp)
5013+faddp %st(0),%st(3)
5014+fldl 32(%edx)
5015+fmull 72(%ebp)
5016+fldl 48(%edx)
5017+fmull 48(%ebp)
5018+faddp %st(0),%st(3)
5019+fldl 64(%edx)
5020+fmull 24(%ebp)
5021+faddp %st(0),%st(4)
5022+fxch %st(1)
5023+fadd %st(0),%st(4)
5024+fsubrp %st(0),%st(5)
5025+fxch %st(5)
5026+fstpl 64(%ecx)
5027+fldl 40(%edx)
5028+fmull 64(%ebp)
5029+faddp %st(0),%st(5)
5030+fldl 56(%edx)
5031+fmull 40(%ebp)
5032+faddp %st(0),%st(1)
5033+fldl 72(%edx)
5034+fmull 16(%ebp)
5035+faddp %st(0),%st(2)
5036+fxch %st(2)
5037+fmull curve25519_athlon_scale
5038+fldl 48(%edx)
5039+fmull 56(%ebp)
5040+faddp %st(0),%st(5)
5041+fldl 64(%edx)
5042+fmull 32(%ebp)
5043+faddp %st(0),%st(3)
5044+fxch %st(1)
5045+fmull curve25519_athlon_scale
5046+fldl 0(%edx)
5047+fmull 0(%ebp)
5048+faddp %st(0),%st(2)
5049+fxch %st(3)
5050+fstpl 72(%ecx)
5051+fldl 40(%edx)
5052+fmull 72(%ebp)
5053+fldl 56(%edx)
5054+fmull 48(%ebp)
5055+faddp %st(0),%st(5)
5056+fldl 72(%edx)
5057+fmull 24(%ebp)
5058+faddp %st(0),%st(3)
5059+fldl 0(%edx)
5060+fmull 8(%ebp)
5061+faddp %st(0),%st(4)
5062+fldl curve25519_athlon_alpha26
5063+fadd %st(2),%st(0)
5064+fldl 48(%edx)
5065+fmull 64(%ebp)
5066+faddp %st(0),%st(2)
5067+fldl 64(%edx)
5068+fmull 40(%ebp)
5069+faddp %st(0),%st(6)
5070+fxch %st(3)
5071+fmull curve25519_athlon_scale
5072+fldl 8(%edx)
5073+fmull 0(%ebp)
5074+faddp %st(0),%st(5)
5075+fxch %st(3)
5076+fsubl curve25519_athlon_alpha26
5077+fldl 56(%edx)
5078+fmull 56(%ebp)
5079+faddp %st(0),%st(2)
5080+fldl 72(%edx)
5081+fmull 32(%ebp)
5082+faddp %st(0),%st(6)
5083+fldl 0(%edx)
5084+fmull 16(%ebp)
5085+faddp %st(0),%st(4)
5086+fadd %st(0),%st(4)
5087+fsubrp %st(0),%st(2)
5088+fldl 48(%edx)
5089+fmull 72(%ebp)
5090+fldl 64(%edx)
5091+fmull 48(%ebp)
5092+faddp %st(0),%st(2)
5093+fxch %st(5)
5094+fmull curve25519_athlon_scale
5095+fldl 8(%edx)
5096+fmull 8(%ebp)
5097+faddp %st(0),%st(4)
5098+fldl curve25519_athlon_alpha51
5099+fadd %st(5),%st(0)
5100+fldl 56(%edx)
5101+fmull 64(%ebp)
5102+faddp %st(0),%st(7)
5103+fldl 72(%edx)
5104+fmull 40(%ebp)
5105+faddp %st(0),%st(3)
5106+fldl 0(%edx)
5107+fmull 24(%ebp)
5108+faddp %st(0),%st(2)
5109+fldl 16(%edx)
5110+fmull 0(%ebp)
5111+faddp %st(0),%st(5)
5112+fsubl curve25519_athlon_alpha51
5113+fxch %st(3)
5114+fstpl 0(%ecx)
5115+fldl 64(%edx)
5116+fmull 56(%ebp)
5117+faddp %st(0),%st(6)
5118+fxch %st(1)
5119+fmull curve25519_athlon_scale
5120+fldl 8(%edx)
5121+fmull 16(%ebp)
5122+faddp %st(0),%st(2)
5123+fxch %st(2)
5124+fadd %st(0),%st(3)
5125+fsubrp %st(0),%st(4)
5126+fldl 56(%edx)
5127+fmull 72(%ebp)
5128+fldl 72(%edx)
5129+fmull 48(%ebp)
5130+faddp %st(0),%st(6)
5131+fldl 0(%edx)
5132+fmull 32(%ebp)
5133+faddp %st(0),%st(3)
5134+fldl 16(%edx)
5135+fmull 8(%ebp)
5136+faddp %st(0),%st(2)
5137+fldl curve25519_athlon_alpha77
5138+fadd %st(4),%st(0)
5139+fldl 64(%edx)
5140+fmull 64(%ebp)
5141+faddp %st(0),%st(2)
5142+fxch %st(6)
5143+fmull curve25519_athlon_scale
5144+fldl 8(%edx)
5145+fmull 24(%ebp)
5146+faddp %st(0),%st(4)
5147+fldl 24(%edx)
5148+fmull 0(%ebp)
5149+faddp %st(0),%st(3)
5150+fxch %st(6)
5151+fsubl curve25519_athlon_alpha77
5152+fxch %st(5)
5153+fstpl 8(%ecx)
5154+fldl 72(%edx)
5155+fmull 56(%ebp)
5156+faddp %st(0),%st(1)
5157+fldl 0(%edx)
5158+fmull 40(%ebp)
5159+faddp %st(0),%st(6)
5160+fldl 16(%edx)
5161+fmull 16(%ebp)
5162+faddp %st(0),%st(3)
5163+fxch %st(4)
5164+fadd %st(0),%st(1)
5165+fsubrp %st(0),%st(3)
5166+fldl 64(%edx)
5167+fmull 72(%ebp)
5168+fxch %st(4)
5169+fmull curve25519_athlon_scale
5170+fldl 8(%edx)
5171+fmull 32(%ebp)
5172+faddp %st(0),%st(6)
5173+fldl 24(%edx)
5174+fmull 8(%ebp)
5175+faddp %st(0),%st(3)
5176+fldl curve25519_athlon_alpha102
5177+fadd %st(2),%st(0)
5178+fldl 72(%edx)
5179+fmull 64(%ebp)
5180+faddp %st(0),%st(6)
5181+fldl 0(%edx)
5182+fmull 48(%ebp)
5183+faddp %st(0),%st(2)
5184+fldl 16(%edx)
5185+fmull 24(%ebp)
5186+faddp %st(0),%st(7)
5187+fldl 32(%edx)
5188+fmull 0(%ebp)
5189+faddp %st(0),%st(4)
5190+fsubl curve25519_athlon_alpha102
5191+fxch %st(4)
5192+fstpl 16(%ecx)
5193+fxch %st(4)
5194+fmull curve25519_athlon_scale
5195+fldl 8(%edx)
5196+fmull 40(%ebp)
5197+faddp %st(0),%st(5)
5198+fldl 24(%edx)
5199+fmull 16(%ebp)
5200+faddp %st(0),%st(6)
5201+fxch %st(3)
5202+fadd %st(0),%st(2)
5203+fsubrp %st(0),%st(1)
5204+fldl 0(%edx)
5205+fmull 56(%ebp)
5206+faddp %st(0),%st(3)
5207+fldl 16(%edx)
5208+fmull 32(%ebp)
5209+faddp %st(0),%st(4)
5210+fldl 32(%edx)
5211+fmull 8(%ebp)
5212+faddp %st(0),%st(5)
5213+fldl curve25519_athlon_alpha128
5214+fadd %st(2),%st(0)
5215+fldl 8(%edx)
5216+fmull 48(%ebp)
5217+faddp %st(0),%st(4)
5218+fldl 24(%edx)
5219+fmull 24(%ebp)
5220+faddp %st(0),%st(5)
5221+fldl 40(%edx)
5222+fmull 0(%ebp)
5223+faddp %st(0),%st(6)
5224+fsubl curve25519_athlon_alpha128
5225+fxch %st(1)
5226+fstpl 24(%ecx)
5227+fldl 16(%edx)
5228+fmull 40(%ebp)
5229+faddp %st(0),%st(3)
5230+fldl 32(%edx)
5231+fmull 16(%ebp)
5232+faddp %st(0),%st(4)
5233+fadd %st(0),%st(4)
5234+fsubrp %st(0),%st(1)
5235+fstpl 32(%ecx)
5236+fldl 24(%edx)
5237+fmull 32(%ebp)
5238+faddp %st(0),%st(1)
5239+fldl 40(%edx)
5240+fmull 8(%ebp)
5241+faddp %st(0),%st(2)
5242+fldl curve25519_athlon_alpha153
5243+fadd %st(3),%st(0)
5244+fldl 32(%edx)
5245+fmull 24(%ebp)
5246+faddp %st(0),%st(2)
5247+fldl 48(%edx)
5248+fmull 0(%ebp)
5249+faddp %st(0),%st(3)
5250+fsubl curve25519_athlon_alpha153
5251+fldl 40(%edx)
5252+fmull 16(%ebp)
5253+faddp %st(0),%st(2)
5254+fadd %st(0),%st(2)
5255+fsubrp %st(0),%st(3)
5256+fxch %st(2)
5257+fstpl 40(%ecx)
5258+fldl 48(%edx)
5259+fmull 8(%ebp)
5260+faddp %st(0),%st(2)
5261+fldl curve25519_athlon_alpha179
5262+fadd %st(1),%st(0)
5263+fldl 56(%edx)
5264+fmull 0(%ebp)
5265+faddp %st(0),%st(3)
5266+fsubl curve25519_athlon_alpha179
5267+fldl 64(%ecx)
5268+fldl 72(%ecx)
5269+fxch %st(2)
5270+fadd %st(0),%st(4)
5271+fsubrp %st(0),%st(3)
5272+fldl curve25519_athlon_alpha204
5273+fadd %st(4),%st(0)
5274+fsubl curve25519_athlon_alpha204
5275+fadd %st(0),%st(1)
5276+fsubrp %st(0),%st(4)
5277+fldl curve25519_athlon_alpha230
5278+fadd %st(1),%st(0)
5279+fsubl curve25519_athlon_alpha230
5280+fsubr %st(0),%st(1)
5281+faddp %st(0),%st(2)
5282+fxch %st(2)
5283+fstpl 48(%ecx)
5284+fxch %st(2)
5285+fstpl 56(%ecx)
5286+fstpl 64(%ecx)
5287+fstpl 72(%ecx)
5288+movl 0(%esp),%ebp
5289+add %eax,%esp
5290+ret
5291addfile ./curve25519-20050915/curve25519_athlon_square.s
5292hunk ./curve25519-20050915/curve25519_athlon_square.s 1
5293+.text
5294+.p2align 5
5295+.globl _curve25519_athlon_square
5296+.globl curve25519_athlon_square
5297+_curve25519_athlon_square:
5298+curve25519_athlon_square:
5299+mov %esp,%eax
5300+and $31,%eax
5301+add $64,%eax
5302+sub %eax,%esp
5303+movl 8(%esp,%eax),%edx
5304+movl 4(%esp,%eax),%ecx
5305+fldl 72(%edx)
5306+fmul %st(0),%st(0)
5307+fldl 0(%edx)
5308+fadd %st(0),%st(0)
5309+fldl 8(%edx)
5310+fadd %st(0),%st(0)
5311+fldl 16(%edx)
5312+fadd %st(0),%st(0)
5313+fldl 56(%edx)
5314+fxch %st(4)
5315+fmull curve25519_athlon_scale
5316+fldl 72(%edx)
5317+fmul %st(4),%st(0)
5318+fldl 64(%edx)
5319+fmul %st(4),%st(0)
5320+faddp %st(0),%st(1)
5321+fxch %st(4)
5322+fstl 0(%esp)
5323+fxch %st(3)
5324+fstl 8(%esp)
5325+fxch %st(3)
5326+fmull 64(%edx)
5327+faddp %st(0),%st(1)
5328+fldl 48(%edx)
5329+fxch %st(5)
5330+fmul %st(0),%st(3)
5331+fxch %st(3)
5332+faddp %st(0),%st(1)
5333+fxch %st(2)
5334+fadd %st(0),%st(0)
5335+fldl 56(%edx)
5336+fmul %st(2),%st(0)
5337+faddp %st(0),%st(4)
5338+fxch %st(1)
5339+fstl 16(%esp)
5340+fldl 40(%edx)
5341+fxch %st(5)
5342+fmul %st(0),%st(1)
5343+fxch %st(1)
5344+faddp %st(0),%st(3)
5345+fadd %st(0),%st(0)
5346+fstpl 48(%esp)
5347+fldl 24(%edx)
5348+fadd %st(0),%st(0)
5349+fstl 24(%esp)
5350+fldl 48(%edx)
5351+fmul %st(1),%st(0)
5352+faddp %st(0),%st(4)
5353+fmul %st(4),%st(0)
5354+faddp %st(0),%st(2)
5355+fxch %st(3)
5356+fadd %st(0),%st(0)
5357+fstpl 40(%esp)
5358+fldl 32(%edx)
5359+fmul %st(0),%st(0)
5360+faddp %st(0),%st(1)
5361+fldl curve25519_athlon_alpha230
5362+fadd %st(1),%st(0)
5363+fsubl curve25519_athlon_alpha230
5364+fsubr %st(0),%st(1)
5365+fldl 8(%esp)
5366+fldl 72(%edx)
5367+fmul %st(0),%st(1)
5368+fldl 16(%esp)
5369+fmul %st(0),%st(1)
5370+fldl 64(%edx)
5371+fmul %st(0),%st(1)
5372+fxch %st(1)
5373+faddp %st(0),%st(3)
5374+fldl 24(%esp)
5375+fmul %st(0),%st(1)
5376+fxch %st(1)
5377+faddp %st(0),%st(2)
5378+fldl 32(%edx)
5379+fadd %st(0),%st(0)
5380+fstl 32(%esp)
5381+fmull 40(%edx)
5382+faddp %st(0),%st(6)
5383+fxch %st(3)
5384+faddp %st(0),%st(5)
5385+fldl curve25519_athlon_alpha255
5386+fadd %st(5),%st(0)
5387+fsubl curve25519_athlon_alpha255
5388+fsubr %st(0),%st(5)
5389+fldl 56(%edx)
5390+fmul %st(0),%st(4)
5391+fxch %st(4)
5392+faddp %st(0),%st(3)
5393+fldl 32(%esp)
5394+fmul %st(0),%st(4)
5395+fxch %st(4)
5396+faddp %st(0),%st(2)
5397+fldl 48(%edx)
5398+fmul %st(0),%st(4)
5399+fxch %st(4)
5400+faddp %st(0),%st(3)
5401+fxch %st(3)
5402+fmull 40(%esp)
5403+faddp %st(0),%st(1)
5404+fxch %st(3)
5405+fstpl 64(%ecx)
5406+fldl 40(%edx)
5407+fmul %st(0),%st(0)
5408+faddp %st(0),%st(1)
5409+fxch %st(2)
5410+fmull curve25519_athlon_scale
5411+fxch %st(3)
5412+fstpl 72(%ecx)
5413+faddp %st(0),%st(1)
5414+fmull curve25519_athlon_scale
5415+fldl 24(%esp)
5416+fmull 72(%edx)
5417+fldl 0(%edx)
5418+fmul %st(0),%st(0)
5419+faddp %st(0),%st(2)
5420+fldl 32(%esp)
5421+fmull 64(%edx)
5422+faddp %st(0),%st(1)
5423+fldl 0(%esp)
5424+fmull 8(%edx)
5425+faddp %st(0),%st(3)
5426+fldl 40(%esp)
5427+fmull 56(%edx)
5428+faddp %st(0),%st(1)
5429+fldl curve25519_athlon_alpha26
5430+fadd %st(2),%st(0)
5431+fsubl curve25519_athlon_alpha26
5432+fsubr %st(0),%st(2)
5433+faddp %st(0),%st(3)
5434+fldl curve25519_athlon_alpha51
5435+fadd %st(3),%st(0)
5436+fsubl curve25519_athlon_alpha51
5437+fsubr %st(0),%st(3)
5438+fldl 48(%edx)
5439+fmul %st(0),%st(0)
5440+faddp %st(0),%st(2)
5441+fxch %st(1)
5442+fmull curve25519_athlon_scale
5443+fldl 0(%esp)
5444+fmull 16(%edx)
5445+faddp %st(0),%st(1)
5446+fldl 8(%edx)
5447+fmul %st(0),%st(0)
5448+faddp %st(0),%st(1)
5449+faddp %st(0),%st(1)
5450+fldl curve25519_athlon_alpha77
5451+fadd %st(1),%st(0)
5452+fsubl curve25519_athlon_alpha77
5453+fsubr %st(0),%st(1)
5454+fxch %st(2)
5455+fstpl 0(%ecx)
5456+fldl 32(%esp)
5457+fmull 72(%edx)
5458+fldl 40(%esp)
5459+fmull 64(%edx)
5460+faddp %st(0),%st(1)
5461+fldl 48(%esp)
5462+fmull 56(%edx)
5463+faddp %st(0),%st(1)
5464+fmull curve25519_athlon_scale
5465+fldl 0(%esp)
5466+fmull 24(%edx)
5467+faddp %st(0),%st(1)
5468+fldl 8(%esp)
5469+fmull 16(%edx)
5470+faddp %st(0),%st(1)
5471+faddp %st(0),%st(2)
5472+fldl curve25519_athlon_alpha102
5473+fadd %st(2),%st(0)
5474+fsubl curve25519_athlon_alpha102
5475+fsubr %st(0),%st(2)
5476+fxch %st(3)
5477+fstpl 8(%ecx)
5478+fldl 40(%esp)
5479+fmull 72(%edx)
5480+fldl 48(%esp)
5481+fmull 64(%edx)
5482+faddp %st(0),%st(1)
5483+fldl 56(%edx)
5484+fmul %st(0),%st(0)
5485+faddp %st(0),%st(1)
5486+fmull curve25519_athlon_scale
5487+fldl 0(%esp)
5488+fmull 32(%edx)
5489+faddp %st(0),%st(1)
5490+fldl 8(%esp)
5491+fmull 24(%edx)
5492+faddp %st(0),%st(1)
5493+fldl 16(%edx)
5494+fmul %st(0),%st(0)
5495+faddp %st(0),%st(1)
5496+faddp %st(0),%st(3)
5497+fldl curve25519_athlon_alpha128
5498+fadd %st(3),%st(0)
5499+fsubl curve25519_athlon_alpha128
5500+fsubr %st(0),%st(3)
5501+fxch %st(1)
5502+fstpl 16(%ecx)
5503+fldl 48(%esp)
5504+fldl 72(%edx)
5505+fmul %st(0),%st(1)
5506+fmul %st(5),%st(0)
5507+fxch %st(5)
5508+fmull 64(%edx)
5509+faddp %st(0),%st(1)
5510+fmull curve25519_athlon_scale
5511+fldl 0(%esp)
5512+fmull 40(%edx)
5513+faddp %st(0),%st(1)
5514+fldl 8(%esp)
5515+fmull 32(%edx)
5516+faddp %st(0),%st(1)
5517+fldl 16(%esp)
5518+fmull 24(%edx)
5519+faddp %st(0),%st(1)
5520+faddp %st(0),%st(1)
5521+fldl curve25519_athlon_alpha153
5522+fadd %st(1),%st(0)
5523+fsubl curve25519_athlon_alpha153
5524+fsubr %st(0),%st(1)
5525+fxch %st(2)
5526+fstpl 24(%ecx)
5527+fldl 64(%edx)
5528+fmul %st(0),%st(0)
5529+faddp %st(0),%st(4)
5530+fxch %st(3)
5531+fmull curve25519_athlon_scale
5532+fldl 0(%esp)
5533+fmull 48(%edx)
5534+faddp %st(0),%st(1)
5535+fldl 8(%esp)
5536+fmull 40(%edx)
5537+faddp %st(0),%st(1)
5538+fldl 16(%esp)
5539+fmull 32(%edx)
5540+faddp %st(0),%st(1)
5541+fldl 24(%edx)
5542+fmul %st(0),%st(0)
5543+faddp %st(0),%st(1)
5544+faddp %st(0),%st(1)
5545+fldl curve25519_athlon_alpha179
5546+fadd %st(1),%st(0)
5547+fsubl curve25519_athlon_alpha179
5548+fsubr %st(0),%st(1)
5549+fldl 64(%edx)
5550+fadd %st(0),%st(0)
5551+fmull 72(%edx)
5552+fmull curve25519_athlon_scale
5553+fldl 0(%esp)
5554+fmull 56(%edx)
5555+faddp %st(0),%st(1)
5556+fldl 8(%esp)
5557+fmull 48(%edx)
5558+faddp %st(0),%st(1)
5559+fldl 16(%esp)
5560+fmull 40(%edx)
5561+faddp %st(0),%st(1)
5562+fldl 24(%esp)
5563+fmull 32(%edx)
5564+faddp %st(0),%st(1)
5565+faddp %st(0),%st(1)
5566+fldl curve25519_athlon_alpha204
5567+fadd %st(1),%st(0)
5568+fsubl curve25519_athlon_alpha204
5569+fsubr %st(0),%st(1)
5570+fldl 64(%ecx)
5571+faddp %st(0),%st(1)
5572+fldl curve25519_athlon_alpha230
5573+fadd %st(1),%st(0)
5574+fldl 72(%ecx)
5575+fxch %st(1)
5576+fsubl curve25519_athlon_alpha230
5577+fsubr %st(0),%st(2)
5578+faddp %st(0),%st(1)
5579+fxch %st(4)
5580+fstpl 32(%ecx)
5581+fxch %st(4)
5582+fstpl 40(%ecx)
5583+fxch %st(1)
5584+fstpl 48(%ecx)
5585+fstpl 56(%ecx)
5586+fxch %st(1)
5587+fstpl 64(%ecx)
5588+fstpl 72(%ecx)
5589+add %eax,%esp
5590+ret
5591addfile ./curve25519-20050915/curve25519_athlon_todouble.s
5592hunk ./curve25519-20050915/curve25519_athlon_todouble.s 1
5593+.text
5594+.p2align 5
5595+.globl _curve25519_athlon_todouble
5596+.globl curve25519_athlon_todouble
5597+_curve25519_athlon_todouble:
5598+curve25519_athlon_todouble:
5599+mov %esp,%eax
5600+and $31,%eax
5601+add $96,%eax
5602+sub %eax,%esp
5603+movl 8(%esp,%eax),%ecx
5604+movl 0(%ecx),%edx
5605+movl  $0x43300000,4(%esp)
5606+movl %edx,0(%esp)
5607+movl 4(%ecx),%edx
5608+and  $0xffffff,%edx
5609+movl  $0x45300000,12(%esp)
5610+movl %edx,8(%esp)
5611+movl 7(%ecx),%edx
5612+and  $0xffffff,%edx
5613+movl  $0x46b00000,20(%esp)
5614+movl %edx,16(%esp)
5615+movl 10(%ecx),%edx
5616+and  $0xffffff,%edx
5617+movl  $0x48300000,28(%esp)
5618+movl %edx,24(%esp)
5619+movl 13(%ecx),%edx
5620+and  $0xffffff,%edx
5621+movl  $0x49b00000,36(%esp)
5622+movl %edx,32(%esp)
5623+movl 16(%ecx),%edx
5624+movl  $0x4b300000,44(%esp)
5625+movl %edx,40(%esp)
5626+movl 20(%ecx),%edx
5627+and  $0xffffff,%edx
5628+movl  $0x4d300000,52(%esp)
5629+movl %edx,48(%esp)
5630+movl 23(%ecx),%edx
5631+and  $0xffffff,%edx
5632+movl  $0x4eb00000,60(%esp)
5633+movl %edx,56(%esp)
5634+movl 26(%ecx),%edx
5635+and  $0xffffff,%edx
5636+movl  $0x50300000,68(%esp)
5637+movl %edx,64(%esp)
5638+movl 28(%ecx),%ecx
5639+shr  $8,%ecx
5640+and  $0x7fffff,%ecx
5641+movl  $0x51b00000,76(%esp)
5642+movl %ecx,72(%esp)
5643+movl 4(%esp,%eax),%ecx
5644+fldl 72(%esp)
5645+fsubl curve25519_athlon_in9offset
5646+fldl curve25519_athlon_alpha255
5647+fadd %st(1),%st(0)
5648+fsubl curve25519_athlon_alpha255
5649+fsubr %st(0),%st(1)
5650+fldl 0(%esp)
5651+fsubl curve25519_athlon_in0offset
5652+fxch %st(1)
5653+fmull curve25519_athlon_scale
5654+faddp %st(0),%st(1)
5655+fldl curve25519_athlon_alpha26
5656+fadd %st(1),%st(0)
5657+fsubl curve25519_athlon_alpha26
5658+fsubr %st(0),%st(1)
5659+fxch %st(1)
5660+fstpl 0(%ecx)
5661+fldl 8(%esp)
5662+fsubl curve25519_athlon_in1offset
5663+faddp %st(0),%st(1)
5664+fldl curve25519_athlon_alpha51
5665+fadd %st(1),%st(0)
5666+fsubl curve25519_athlon_alpha51
5667+fsubr %st(0),%st(1)
5668+fxch %st(1)
5669+fstpl 8(%ecx)
5670+fldl 16(%esp)
5671+fsubl curve25519_athlon_in2offset
5672+faddp %st(0),%st(1)
5673+fldl curve25519_athlon_alpha77
5674+fadd %st(1),%st(0)
5675+fsubl curve25519_athlon_alpha77
5676+fsubr %st(0),%st(1)
5677+fxch %st(1)
5678+fstpl 16(%ecx)
5679+fldl 24(%esp)
5680+fsubl curve25519_athlon_in3offset
5681+faddp %st(0),%st(1)
5682+fldl curve25519_athlon_alpha102
5683+fadd %st(1),%st(0)
5684+fsubl curve25519_athlon_alpha102
5685+fsubr %st(0),%st(1)
5686+fxch %st(1)
5687+fstpl 24(%ecx)
5688+fldl 32(%esp)
5689+fsubl curve25519_athlon_in4offset
5690+faddp %st(0),%st(1)
5691+fldl curve25519_athlon_alpha128
5692+fadd %st(1),%st(0)
5693+fsubl curve25519_athlon_alpha128
5694+fsubr %st(0),%st(1)
5695+fxch %st(1)
5696+fstpl 32(%ecx)
5697+fldl 40(%esp)
5698+fsubl curve25519_athlon_in5offset
5699+faddp %st(0),%st(1)
5700+fldl curve25519_athlon_alpha153
5701+fadd %st(1),%st(0)
5702+fsubl curve25519_athlon_alpha153
5703+fsubr %st(0),%st(1)
5704+fxch %st(1)
5705+fstpl 40(%ecx)
5706+fldl 48(%esp)
5707+fsubl curve25519_athlon_in6offset
5708+faddp %st(0),%st(1)
5709+fldl curve25519_athlon_alpha179
5710+fadd %st(1),%st(0)
5711+fsubl curve25519_athlon_alpha179
5712+fsubr %st(0),%st(1)
5713+fxch %st(1)
5714+fstpl 48(%ecx)
5715+fldl 56(%esp)
5716+fsubl curve25519_athlon_in7offset
5717+faddp %st(0),%st(1)
5718+fldl curve25519_athlon_alpha204
5719+fadd %st(1),%st(0)
5720+fsubl curve25519_athlon_alpha204
5721+fsubr %st(0),%st(1)
5722+fxch %st(1)
5723+fstpl 56(%ecx)
5724+fldl 64(%esp)
5725+fsubl curve25519_athlon_in8offset
5726+faddp %st(0),%st(1)
5727+fldl curve25519_athlon_alpha230
5728+fadd %st(1),%st(0)
5729+fsubl curve25519_athlon_alpha230
5730+fsubr %st(0),%st(1)
5731+fxch %st(1)
5732+fstpl 64(%ecx)
5733+faddp %st(0),%st(1)
5734+fstpl 72(%ecx)
5735+add %eax,%esp
5736+ret
5737addfile ./curve25519-20050915/speedreport.do
5738hunk ./curve25519-20050915/speedreport.do 1
5739+# Public domain.
5740+
5741+exec 2>&1
5742+echo 'curve25519 speedreport version 20050915'
5743+echo ''
5744+echo '% uname -a'
5745+uname -a
5746+echo '% echo "$CC"'
5747+echo "$CC"
5748+echo '% gcc --version'
5749+gcc --version
5750+echo '% cat /proc/cpuinfo'
5751+cat /proc/cpuinfo
5752+echo '% sysctl -a hw.model'
5753+sysctl -a hw.model
5754+echo '% /usr/sbin/psrinfo -v'
5755+/usr/sbin/psrinfo -v
5756+echo '% cat x86cpuid.out'
5757+cat x86cpuid.out
5758+echo '% cat curve25519.h cpucycles.h'
5759+cat curve25519.h
5760+echo '% echo _____; ./curve25519-speed; echo _____'
5761+echo _____; ./curve25519-speed; echo _____
5762+echo '% ./test-curve25519 | head -123456 | tail -1'
5763+./test-curve25519 | head -123456 | tail -1
5764addfile ./curve25519-20050915/test-curve25519.c
5765hunk ./curve25519-20050915/test-curve25519.c 1
5766+/*
5767+test-curve25519 version 20050915
5768+D. J. Bernstein
5769+Public domain.
5770+*/
5771+
5772+#include <stdio.h>
5773+#include "curve25519.h"
5774+
5775+void doit(unsigned char *ek,unsigned char *e,unsigned char *k)
5776+{
5777+  int i;
5778+  for (i = 0;i < 32;++i) printf("%02x",(unsigned int) e[i]); printf(" ");
5779+  for (i = 0;i < 32;++i) printf("%02x",(unsigned int) k[i]); printf(" ");
5780+  curve25519(ek,e,k);
5781+  for (i = 0;i < 32;++i) printf("%02x",(unsigned int) ek[i]); printf("\n");
5782+}
5783+
5784+unsigned char e1k[32];
5785+unsigned char e2k[32];
5786+unsigned char e1e2k[32];
5787+unsigned char e2e1k[32];
5788+unsigned char e1[32] = {3};
5789+unsigned char e2[32] = {5};
5790+unsigned char k[32] = {9};
5791+
5792+main()
5793+{
5794+  int loop;
5795+  int i;
5796+
5797+  for (loop = 0;loop < 1000000000;++loop) {
5798+    doit(e1k,e1,k);
5799+    doit(e2e1k,e2,e1k);
5800+    doit(e2k,e2,k);
5801+    doit(e1e2k,e1,e2k);
5802+    for (i = 0;i < 32;++i) if (e1e2k[i] != e2e1k[i]) printf("fail\n");
5803+    for (i = 0;i < 32;++i) e1[i] ^= e2k[i];
5804+    for (i = 0;i < 32;++i) e2[i] ^= e1k[i];
5805+    for (i = 0;i < 32;++i) k[i] ^= e1e2k[i];
5806+  }
5807+
5808+  return 0;
5809+}
5810addfile ./curve25519-20050915/x86cpuid.c
5811hunk ./curve25519-20050915/x86cpuid.c 1
5812+#include <signal.h>
5813+
5814+void nope()
5815+{
5816+  exit(1);
5817+}
5818+
5819+int main()
5820+{
5821+  unsigned long x[4];
5822+  unsigned long y[4];
5823+  int i;
5824+  int j;
5825+  char c;
5826+
5827+  signal(SIGILL,nope);
5828+
5829+  x[0] = 0;
5830+  x[1] = 0;
5831+  x[2] = 0;
5832+  x[3] = 0;
5833+
5834+  asm volatile(".byte 15;.byte 162" : "=a"(x[0]),"=b"(x[1]),"=c"(x[3]),"=d"(x[2]) : "0"(0) );
5835+  if (!x[0]) return 0;
5836+  asm volatile(".byte 15;.byte 162" : "=a"(y[0]),"=b"(y[1]),"=c"(y[2]),"=d"(y[3]) : "0"(1) );
5837+
5838+  for (i = 1;i < 4;++i)
5839+    for (j = 0;j < 4;++j) {
5840+      c = x[i] >> (8 * j);
5841+      if (c < 32) c = 32;
5842+      if (c > 126) c = 126;
5843+      putchar(c);
5844+    }
5845+
5846+  printf("-%08x-%08x\n",y[0],y[3]);
5847+
5848+  return 0;
5849+}
5850hunk ./pycryptopp/_pycryptoppmodule.cpp 7
5851 #include "publickey/rsamodule.hpp"
5852 #include "hash/sha256module.hpp"
5853 #include "cipher/aesmodule.hpp"
5854+#include "publickey/curve25519module.hpp"
5855 
5856 /* from Crypto++ */
5857 #ifdef DISABLE_EMBEDDED_CRYPTOPP
5858hunk ./pycryptopp/_pycryptoppmodule.cpp 63
5859     init_rsa(module);
5860     init_sha256(module);
5861     init_aes(module);
5862+    init_curve25519(module);
5863+
5864 }
5865hunk ./pycryptopp/publickey/__init__.py 1
5866-import ecdsa, rsa
5867+import ecdsa, rsa, curve25519
5868 
5869hunk ./pycryptopp/publickey/__init__.py 3
5870-quiet_pyflakes=[ecdsa, rsa]
5871+quiet_pyflakes=[ecdsa, rsa, curve25519]
5872addfile ./pycryptopp/publickey/curve25519.py
5873hunk ./pycryptopp/publickey/curve25519.py 1
5874+from pycryptopp import _import_my_names
5875+
5876+CURVE25519=None
5877+
5878+_import_my_names(globals(), "curve25519_")
5879+
5880+del _import_my_names
5881+
5882+#print "hello, curve25519"
5883+
5884+def startup():
5885+    from binascii import a2b_hex, b2a_hex
5886+    curve25519 = CURVE25519()
5887+    result1 = curve25519.curve25519("\x03"*32, "\x09"*32)
5888+    #print b2a_hex(result1),'\n'
5889+    result2 = curve25519.curve25519("\x05"*32, result1)
5890+    #print b2a_hex(result2),'\n'
5891+    result3 = curve25519.curve25519("\x05"*32, "\x09"*32)
5892+    #print b2a_hex(result3),'\n'
5893+    result4 = curve25519.curve25519("\x03"*32, result3)
5894+    #print b2a_hex(result4),'\n'
5895+    if b2a_hex(result2) != b2a_hex(result4):
5896+        raise Error("pycryotpp failed to startup self-test of curve25519")
5897+
5898+   
5899+startup()
5900+
5901+
5902addfile ./pycryptopp/publickey/curve25519module.cpp
5903hunk ./pycryptopp/publickey/curve25519module.cpp 1
5904+/**
5905+ * cureve25519.cpp -- Python wrappers around DJB's curve25519
5906+ */
5907+
5908+#define PY_SSIZE_T_CLEAN   
5909+#include <Python.h>
5910+#if (PY_VERSION_HEX < 0x02050000)
5911+typedef int Py_ssize_t;
5912+#endif
5913+
5914+extern "C" {
5915+
5916+extern void curve25519_athlon(unsigned char *,const unsigned char *,const unsigned char *);
5917+
5918+/* internal functions, exposed purely for testing */
5919+extern void curve25519_athlon_init(void);
5920+extern void curve25519_athlon_mainloop(double *,const unsigned char *);
5921+extern void curve25519_athlon_recip(double *,const double *);
5922+extern void curve25519_athlon_square(double *,const double *);
5923+extern void curve25519_athlon_mult(double *,const double *,const double *);
5924+extern void curve25519_athlon_todouble(double *,const unsigned char *);
5925+extern void curve25519_athlon_fromdouble(unsigned char *,const double *);
5926+
5927+#ifndef curve25519_implementation
5928+#define curve25519_implementation "curve25519_athlon"
5929+#define curve25519 curve25519_athlon
5930+#define curve25519_init curve25519_athlon_init
5931+#define curve25519_mainloop curve25519_athlon_mainloop
5932+#define curve25519_recip curve25519_athlon_recip
5933+#define curve25519_square curve25519_athlon_square
5934+#define curve25519_mult curve25519_athlon_mult
5935+#define curve25519_todouble curve25519_athlon_todouble
5936+#define curve25519_fromdouble curve25519_athlon_fromdouble
5937+#endif
5938+}
5939+
5940+#include "curve25519module.hpp"
5941+
5942+/* from DJB's curve25519 */
5943+//#include <embeddedcryptopp/curve25519.h>
5944+
5945+static const char* const curve25519__doc__ = "need to complete afterwards";
5946+static const char* const CURVE25519_process__doc__ = "the function needs to complete afterwards";
5947+static PyObject *curve25519_error;
5948+
5949+typedef struct {
5950+    PyObject_HEAD
5951+    void curve25519_compute(unsigned char ek[32], const unsigned char e[32], const unsigned char k[32]);
5952+} CURVE25519;
5953+
5954+void CURVE25519::curve25519_compute(unsigned char ek[32], const unsigned char e[32], const unsigned char k[32]) {
5955+    curve25519(ek, e, k);
5956+}
5957+
5958+static PyObject *
5959+CURVE25519_process(CURVE25519* self, PyObject* args)
5960+{
5961+    const unsigned char* e, *k;
5962+    PyStringObject* ek = reinterpret_cast<PyStringObject*>(PyString_FromStringAndSize(NULL,32));
5963+    Py_ssize_t esize, ksize;
5964+    if (!PyArg_ParseTuple(args, "t#t#", &e, &esize, &k, &ksize)) {
5965+        return NULL;
5966+    }
5967+    if (esize != 32 || ksize != 32) {
5968+        PyErr_Format(curve25519_error, "Precondition violation: seed is required to be of length 32, but it was %zd and %zd", esize, ksize);
5969+       return NULL;
5970+    }
5971+    self->curve25519_compute(reinterpret_cast<unsigned char*>(PyString_AS_STRING(ek)), e, k);
5972+    return reinterpret_cast<PyObject*>(ek);
5973+}
5974+
5975+static PyMethodDef CURVE25519_methods[] = {
5976+    {"curve25519",reinterpret_cast<PyCFunction>(CURVE25519_process),METH_VARARGS,CURVE25519_process__doc__},
5977+    {NULL},
5978+};
5979+static void
5980+CURVE25519_dealloc(PyObject* self) {
5981+   self->ob_type->tp_free(self);
5982+}
5983+
5984+static PyObject*
5985+CURVE25519_new(PyTypeObject* type, PyObject *args, PyObject *kwdict) {
5986+    CURVE25519* self = reinterpret_cast<CURVE25519*>(type->tp_alloc(type,0));
5987+    if (!self)
5988+       return NULL;
5989+    return reinterpret_cast<PyObject*>(self);
5990+}
5991+
5992+static int
5993+CURVE25519_init(PyObject* self,PyObject *args, PyObject *kwdict) {
5994+   return 0;
5995+}
5996+
5997+static PyTypeObject CURVE25519_type = {
5998+    PyObject_HEAD_INIT(NULL)
5999+    0,                          /*ob_size*/
6000+    "_curve25519.CURVE25519",   /*tp_name*/
6001+    sizeof(CURVE25519),         /*tp_basicsize*/
6002+    0,                          /*tp_itemsize*/
6003+    CURVE25519_dealloc,          /*tp_dealloc*/
6004+    0,                          /*tp_print*/
6005+    0,                          /*tp_getattr*/
6006+    0,                          /*tp_setattr*/
6007+    0,                          /*tp_compare*/
6008+    0,                          /*tp_repr*/
6009+    0,                          /*tp_as_number*/
6010+    0,                          /*tp_as_sequence*/
6011+    0,                          /*tp_as_mapping*/
6012+    0,                          /*tp_hash*/
6013+    0,                          /*tp_call*/
6014+    0,                          /*tp_str*/
6015+    0,                          /*tp_getattro*/
6016+    0,                          /*tp_setattro*/
6017+    0,                          /*tp_as_buffer*/
6018+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/
6019+    curve25519__doc__,          /*tp_doc*/
6020+    0,                          /*tp_traverse*/
6021+    0,                          /*tp_clear*/
6022+    0,                          /*tp_richcompare*/
6023+    0,                          /*tp_weaklistoffset*/
6024+    0,                          /*tp_iter*/
6025+    0,                          /*tp_iternext*/
6026+    CURVE25519_methods,         /*tp_methods*/
6027+    0,                          /*tp_members*/
6028+    0,                          /*tp_getset*/
6029+    0,                          /*tp_base*/
6030+    0,                          /*tp_dict*/
6031+    0,                          /*tp_descr_get*/
6032+    0,                          /*tp_descr_set*/
6033+    0,                          /*tp_dictoffset*/
6034+    CURVE25519_init,            /*tp_init*/
6035+    0,                          /*tp_alloc*/
6036+    CURVE25519_new,             /*tp_new*/
6037+};
6038+
6039+void
6040+init_curve25519(PyObject*const module) {
6041+    //CURVE25519_type.tp_new = PyType_GenericNew;
6042+    if (PyType_Ready(&CURVE25519_type) < 0)
6043+        return;
6044+    Py_INCREF(&CURVE25519_type);
6045+    PyModule_AddObject(module, "curve25519_CURVE25519", (PyObject *)&CURVE25519_type);
6046+
6047+    curve25519_error = PyErr_NewException(const_cast<char*>("_curve25519.Error"), NULL, NULL);
6048+    PyModule_AddObject(module,"curve25519_Error", curve25519_error);
6049+
6050+    PyModule_AddStringConstant(module, "curve25519__doc__", const_cast<char*>(curve25519__doc__));
6051+}
6052addfile ./pycryptopp/publickey/curve25519module.hpp
6053hunk ./pycryptopp/publickey/curve25519module.hpp 1
6054+#ifndef __INCL_CURVE25519MODULE_HPP
6055+#define __INCL_CURVE25519MODULE_HPP
6056+
6057+void
6058+init_curve25519(PyObject* module);
6059+
6060+#endif
6061addfile ./pycryptopp/test/test_curve25519.py
6062hunk ./pycryptopp/test/test_curve25519.py 1
6063+#!/usr/bin/env python
6064+
6065+import unittest
6066+
6067+from binascii import a2b_hex, b2a_hex
6068+
6069+global VERBOSE
6070+VERBOSE=False
6071+
6072+from pycryptopp.publickey import curve25519
6073+
6074+def doit(e, k):
6075+    #print b2a_hex(e)
6076+    #print b2a_hex(k)
6077+    res = curve25519.CURVE25519()
6078+    result = res.curve25519(e,k)
6079+    #print b2a_hex(result)
6080+    return result
6081+
6082+class CURVE25519(unittest.TestCase):
6083+
6084+    def test_from_djb_curve25519lib(self):
6085+       e1 = "\x03"*32;
6086+        e2 = "\x05"*32;
6087+        k = "\x09"*32;
6088+       
6089+       for loop in range(1000):
6090+           e1k = doit(e1,k)
6091+           e2e1k = doit(e2, e1k)
6092+           e2k = doit(e2,k)
6093+           e1e2k = doit(e1, e2k)
6094+           if b2a_hex(e1e2k) != b2a_hex(e2e1k):
6095+               print "fail"
6096+           self.failUnlessEqual(b2a_hex(e1e2k), b2a_hex(e2e1k))
6097+         
6098+           e1 = "".join(chr(ord(e1[i]) ^ ord(e2k[i])) for i in range(32))
6099+           e2 = "".join(chr(ord(e2[i]) ^ ord(e1k[i])) for i in range(32))
6100+           k = "".join(chr(ord(k[i]) ^ ord(e1e2k[i])) for i in range(32))
6101+
6102+
6103+if __name__ == "__main__":
6104+    unittest.main()
6105+
6106hunk ./setup.py 104
6107     # Build the bundled Crypto++ library which is included by source
6108     # code in the pycryptopp tree and link against it.
6109     include_dirs.append(".")
6110+   # library_dirs.append(".")
6111+   # libraries.append("curve25519")
6112 
6113     if 'sunos' in platform.system().lower():
6114         extra_compile_args.append('-Wa,--divide') # allow use of "/" operator
6115hunk ./setup.py 136
6116 
6117     extra_srcs.extend(cryptopp_src)
6118 
6119+try:
6120+    res = subprocess.Popen(['./create.sh'])
6121+    res.wait()
6122+except EnvironmentError:
6123+    pass
6124+
6125 # In either case, we must provide a value for CRYPTOPP_DISABLE_ASM that
6126 # matches the one used when Crypto++ was originally compiled. The Crypto++
6127 # GNUmakefile tests the assembler version and only enables assembly for
6128hunk ./setup.py 206
6129         print "unable to find version in %s" % (VERSIONFILE,)
6130         raise RuntimeError("if %s.py exists, it is required to be well-formed" % (VERSIONFILE,))
6131 
6132-srcs = ['pycryptopp/_pycryptoppmodule.cpp', 'pycryptopp/publickey/rsamodule.cpp', 'pycryptopp/hash/sha256module.cpp', 'pycryptopp/cipher/aesmodule.cpp']
6133+srcs = ['pycryptopp/_pycryptoppmodule.cpp', 'pycryptopp/publickey/rsamodule.cpp', 'pycryptopp/hash/sha256module.cpp', 'pycryptopp/cipher/aesmodule.cpp', 'pycryptopp/publickey/curve25519module.cpp']
6134 if ECDSA:
6135     srcs.append('pycryptopp/publickey/ecdsamodule.cpp')
6136 if TEST_DOUBLE_LOAD:
6137hunk ./setup.py 213
6138     srcs.append('_testdoubleloadmodule.cpp', )
6139 
6140 ext_modules.append(
6141-    Extension('pycryptopp._pycryptopp', extra_srcs + srcs, include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries, extra_link_args=extra_link_args, extra_compile_args=extra_compile_args, define_macros=define_macros, undef_macros=undef_macros)
6142+    Extension('pycryptopp._pycryptopp', extra_srcs + srcs, include_dirs=include_dirs, library_dirs=library_dirs, libraries=libraries, extra_link_args=extra_link_args, extra_compile_args=extra_compile_args, define_macros=define_macros, undef_macros=undef_macros, extra_objects=['curve25519.a'])
6143     )
6144 
6145 if TEST_DOUBLE_LOAD:
6146}
6147
6148Context:
6149
6150[TAG pycryptopp-0.5.29
6151zooko@zooko.com**20110128081307
6152 Ignore-this: a187f9f5fc53bcf698ef857333c75cb3
6153]
6154Patch bundle hash:
61556f8677e11cc1f2df1a9c0c1b7b44fae05f42f172