]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/amd64/x25519-x86_64.S
MFC: r364822, r364823
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / amd64 / x25519-x86_64.S
1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from x25519-x86_64.pl. */
3 .text   
4
5 .globl  x25519_fe51_mul
6 .type   x25519_fe51_mul,@function
7 .align  32
8 x25519_fe51_mul:
9 .cfi_startproc  
10         pushq   %rbp
11 .cfi_adjust_cfa_offset  8
12 .cfi_offset     %rbp,-16
13         pushq   %rbx
14 .cfi_adjust_cfa_offset  8
15 .cfi_offset     %rbx,-24
16         pushq   %r12
17 .cfi_adjust_cfa_offset  8
18 .cfi_offset     %r12,-32
19         pushq   %r13
20 .cfi_adjust_cfa_offset  8
21 .cfi_offset     %r13,-40
22         pushq   %r14
23 .cfi_adjust_cfa_offset  8
24 .cfi_offset     %r14,-48
25         pushq   %r15
26 .cfi_adjust_cfa_offset  8
27 .cfi_offset     %r15,-56
28         leaq    -40(%rsp),%rsp
29 .cfi_adjust_cfa_offset  40
30 .Lfe51_mul_body:
31
32         movq    0(%rsi),%rax
33         movq    0(%rdx),%r11
34         movq    8(%rdx),%r12
35         movq    16(%rdx),%r13
36         movq    24(%rdx),%rbp
37         movq    32(%rdx),%r14
38
39         movq    %rdi,32(%rsp)
40         movq    %rax,%rdi
41         mulq    %r11
42         movq    %r11,0(%rsp)
43         movq    %rax,%rbx
44         movq    %rdi,%rax
45         movq    %rdx,%rcx
46         mulq    %r12
47         movq    %r12,8(%rsp)
48         movq    %rax,%r8
49         movq    %rdi,%rax
50         leaq    (%r14,%r14,8),%r15
51         movq    %rdx,%r9
52         mulq    %r13
53         movq    %r13,16(%rsp)
54         movq    %rax,%r10
55         movq    %rdi,%rax
56         leaq    (%r14,%r15,2),%rdi
57         movq    %rdx,%r11
58         mulq    %rbp
59         movq    %rax,%r12
60         movq    0(%rsi),%rax
61         movq    %rdx,%r13
62         mulq    %r14
63         movq    %rax,%r14
64         movq    8(%rsi),%rax
65         movq    %rdx,%r15
66
67         mulq    %rdi
68         addq    %rax,%rbx
69         movq    16(%rsi),%rax
70         adcq    %rdx,%rcx
71         mulq    %rdi
72         addq    %rax,%r8
73         movq    24(%rsi),%rax
74         adcq    %rdx,%r9
75         mulq    %rdi
76         addq    %rax,%r10
77         movq    32(%rsi),%rax
78         adcq    %rdx,%r11
79         mulq    %rdi
80         imulq   $19,%rbp,%rdi
81         addq    %rax,%r12
82         movq    8(%rsi),%rax
83         adcq    %rdx,%r13
84         mulq    %rbp
85         movq    16(%rsp),%rbp
86         addq    %rax,%r14
87         movq    16(%rsi),%rax
88         adcq    %rdx,%r15
89
90         mulq    %rdi
91         addq    %rax,%rbx
92         movq    24(%rsi),%rax
93         adcq    %rdx,%rcx
94         mulq    %rdi
95         addq    %rax,%r8
96         movq    32(%rsi),%rax
97         adcq    %rdx,%r9
98         mulq    %rdi
99         imulq   $19,%rbp,%rdi
100         addq    %rax,%r10
101         movq    8(%rsi),%rax
102         adcq    %rdx,%r11
103         mulq    %rbp
104         addq    %rax,%r12
105         movq    16(%rsi),%rax
106         adcq    %rdx,%r13
107         mulq    %rbp
108         movq    8(%rsp),%rbp
109         addq    %rax,%r14
110         movq    24(%rsi),%rax
111         adcq    %rdx,%r15
112
113         mulq    %rdi
114         addq    %rax,%rbx
115         movq    32(%rsi),%rax
116         adcq    %rdx,%rcx
117         mulq    %rdi
118         addq    %rax,%r8
119         movq    8(%rsi),%rax
120         adcq    %rdx,%r9
121         mulq    %rbp
122         imulq   $19,%rbp,%rdi
123         addq    %rax,%r10
124         movq    16(%rsi),%rax
125         adcq    %rdx,%r11
126         mulq    %rbp
127         addq    %rax,%r12
128         movq    24(%rsi),%rax
129         adcq    %rdx,%r13
130         mulq    %rbp
131         movq    0(%rsp),%rbp
132         addq    %rax,%r14
133         movq    32(%rsi),%rax
134         adcq    %rdx,%r15
135
136         mulq    %rdi
137         addq    %rax,%rbx
138         movq    8(%rsi),%rax
139         adcq    %rdx,%rcx
140         mulq    %rbp
141         addq    %rax,%r8
142         movq    16(%rsi),%rax
143         adcq    %rdx,%r9
144         mulq    %rbp
145         addq    %rax,%r10
146         movq    24(%rsi),%rax
147         adcq    %rdx,%r11
148         mulq    %rbp
149         addq    %rax,%r12
150         movq    32(%rsi),%rax
151         adcq    %rdx,%r13
152         mulq    %rbp
153         addq    %rax,%r14
154         adcq    %rdx,%r15
155
156         movq    32(%rsp),%rdi
157         jmp     .Lreduce51
158 .Lfe51_mul_epilogue:
159 .cfi_endproc    
160 .size   x25519_fe51_mul,.-x25519_fe51_mul
161
162 .globl  x25519_fe51_sqr
163 .type   x25519_fe51_sqr,@function
164 .align  32
165 x25519_fe51_sqr:
166 .cfi_startproc  
167         pushq   %rbp
168 .cfi_adjust_cfa_offset  8
169 .cfi_offset     %rbp,-16
170         pushq   %rbx
171 .cfi_adjust_cfa_offset  8
172 .cfi_offset     %rbx,-24
173         pushq   %r12
174 .cfi_adjust_cfa_offset  8
175 .cfi_offset     %r12,-32
176         pushq   %r13
177 .cfi_adjust_cfa_offset  8
178 .cfi_offset     %r13,-40
179         pushq   %r14
180 .cfi_adjust_cfa_offset  8
181 .cfi_offset     %r14,-48
182         pushq   %r15
183 .cfi_adjust_cfa_offset  8
184 .cfi_offset     %r15,-56
185         leaq    -40(%rsp),%rsp
186 .cfi_adjust_cfa_offset  40
187 .Lfe51_sqr_body:
188
189         movq    0(%rsi),%rax
190         movq    16(%rsi),%r15
191         movq    32(%rsi),%rbp
192
193         movq    %rdi,32(%rsp)
194         leaq    (%rax,%rax,1),%r14
195         mulq    %rax
196         movq    %rax,%rbx
197         movq    8(%rsi),%rax
198         movq    %rdx,%rcx
199         mulq    %r14
200         movq    %rax,%r8
201         movq    %r15,%rax
202         movq    %r15,0(%rsp)
203         movq    %rdx,%r9
204         mulq    %r14
205         movq    %rax,%r10
206         movq    24(%rsi),%rax
207         movq    %rdx,%r11
208         imulq   $19,%rbp,%rdi
209         mulq    %r14
210         movq    %rax,%r12
211         movq    %rbp,%rax
212         movq    %rdx,%r13
213         mulq    %r14
214         movq    %rax,%r14
215         movq    %rbp,%rax
216         movq    %rdx,%r15
217
218         mulq    %rdi
219         addq    %rax,%r12
220         movq    8(%rsi),%rax
221         adcq    %rdx,%r13
222
223         movq    24(%rsi),%rsi
224         leaq    (%rax,%rax,1),%rbp
225         mulq    %rax
226         addq    %rax,%r10
227         movq    0(%rsp),%rax
228         adcq    %rdx,%r11
229         mulq    %rbp
230         addq    %rax,%r12
231         movq    %rbp,%rax
232         adcq    %rdx,%r13
233         mulq    %rsi
234         addq    %rax,%r14
235         movq    %rbp,%rax
236         adcq    %rdx,%r15
237         imulq   $19,%rsi,%rbp
238         mulq    %rdi
239         addq    %rax,%rbx
240         leaq    (%rsi,%rsi,1),%rax
241         adcq    %rdx,%rcx
242
243         mulq    %rdi
244         addq    %rax,%r10
245         movq    %rsi,%rax
246         adcq    %rdx,%r11
247         mulq    %rbp
248         addq    %rax,%r8
249         movq    0(%rsp),%rax
250         adcq    %rdx,%r9
251
252         leaq    (%rax,%rax,1),%rsi
253         mulq    %rax
254         addq    %rax,%r14
255         movq    %rbp,%rax
256         adcq    %rdx,%r15
257         mulq    %rsi
258         addq    %rax,%rbx
259         movq    %rsi,%rax
260         adcq    %rdx,%rcx
261         mulq    %rdi
262         addq    %rax,%r8
263         adcq    %rdx,%r9
264
265         movq    32(%rsp),%rdi
266         jmp     .Lreduce51
267
268 .align  32
269 .Lreduce51:
270         movq    $0x7ffffffffffff,%rbp
271
272         movq    %r10,%rdx
273         shrq    $51,%r10
274         shlq    $13,%r11
275         andq    %rbp,%rdx
276         orq     %r10,%r11
277         addq    %r11,%r12
278         adcq    $0,%r13
279
280         movq    %rbx,%rax
281         shrq    $51,%rbx
282         shlq    $13,%rcx
283         andq    %rbp,%rax
284         orq     %rbx,%rcx
285         addq    %rcx,%r8
286         adcq    $0,%r9
287
288         movq    %r12,%rbx
289         shrq    $51,%r12
290         shlq    $13,%r13
291         andq    %rbp,%rbx
292         orq     %r12,%r13
293         addq    %r13,%r14
294         adcq    $0,%r15
295
296         movq    %r8,%rcx
297         shrq    $51,%r8
298         shlq    $13,%r9
299         andq    %rbp,%rcx
300         orq     %r8,%r9
301         addq    %r9,%rdx
302
303         movq    %r14,%r10
304         shrq    $51,%r14
305         shlq    $13,%r15
306         andq    %rbp,%r10
307         orq     %r14,%r15
308
309         leaq    (%r15,%r15,8),%r14
310         leaq    (%r15,%r14,2),%r15
311         addq    %r15,%rax
312
313         movq    %rdx,%r8
314         andq    %rbp,%rdx
315         shrq    $51,%r8
316         addq    %r8,%rbx
317
318         movq    %rax,%r9
319         andq    %rbp,%rax
320         shrq    $51,%r9
321         addq    %r9,%rcx
322
323         movq    %rax,0(%rdi)
324         movq    %rcx,8(%rdi)
325         movq    %rdx,16(%rdi)
326         movq    %rbx,24(%rdi)
327         movq    %r10,32(%rdi)
328
329         movq    40(%rsp),%r15
330 .cfi_restore    %r15
331         movq    48(%rsp),%r14
332 .cfi_restore    %r14
333         movq    56(%rsp),%r13
334 .cfi_restore    %r13
335         movq    64(%rsp),%r12
336 .cfi_restore    %r12
337         movq    72(%rsp),%rbx
338 .cfi_restore    %rbx
339         movq    80(%rsp),%rbp
340 .cfi_restore    %rbp
341         leaq    88(%rsp),%rsp
342 .cfi_adjust_cfa_offset  88
343 .Lfe51_sqr_epilogue:
344         .byte   0xf3,0xc3
345 .cfi_endproc    
346 .size   x25519_fe51_sqr,.-x25519_fe51_sqr
347
348 .globl  x25519_fe51_mul121666
349 .type   x25519_fe51_mul121666,@function
350 .align  32
351 x25519_fe51_mul121666:
352 .cfi_startproc  
353         pushq   %rbp
354 .cfi_adjust_cfa_offset  8
355 .cfi_offset     %rbp,-16
356         pushq   %rbx
357 .cfi_adjust_cfa_offset  8
358 .cfi_offset     %rbx,-24
359         pushq   %r12
360 .cfi_adjust_cfa_offset  8
361 .cfi_offset     %r12,-32
362         pushq   %r13
363 .cfi_adjust_cfa_offset  8
364 .cfi_offset     %r13,-40
365         pushq   %r14
366 .cfi_adjust_cfa_offset  8
367 .cfi_offset     %r14,-48
368         pushq   %r15
369 .cfi_adjust_cfa_offset  8
370 .cfi_offset     %r15,-56
371         leaq    -40(%rsp),%rsp
372 .cfi_adjust_cfa_offset  40
373 .Lfe51_mul121666_body:
374         movl    $121666,%eax
375
376         mulq    0(%rsi)
377         movq    %rax,%rbx
378         movl    $121666,%eax
379         movq    %rdx,%rcx
380         mulq    8(%rsi)
381         movq    %rax,%r8
382         movl    $121666,%eax
383         movq    %rdx,%r9
384         mulq    16(%rsi)
385         movq    %rax,%r10
386         movl    $121666,%eax
387         movq    %rdx,%r11
388         mulq    24(%rsi)
389         movq    %rax,%r12
390         movl    $121666,%eax
391         movq    %rdx,%r13
392         mulq    32(%rsi)
393         movq    %rax,%r14
394         movq    %rdx,%r15
395
396         jmp     .Lreduce51
397 .Lfe51_mul121666_epilogue:
398 .cfi_endproc    
399 .size   x25519_fe51_mul121666,.-x25519_fe51_mul121666
400
401 .globl  x25519_fe64_eligible
402 .type   x25519_fe64_eligible,@function
403 .align  32
404 x25519_fe64_eligible:
405 .cfi_startproc  
406         movl    OPENSSL_ia32cap_P+8(%rip),%ecx
407         xorl    %eax,%eax
408         andl    $0x80100,%ecx
409         cmpl    $0x80100,%ecx
410         cmovel  %ecx,%eax
411         .byte   0xf3,0xc3
412 .cfi_endproc    
413 .size   x25519_fe64_eligible,.-x25519_fe64_eligible
414
415 .globl  x25519_fe64_mul
416 .type   x25519_fe64_mul,@function
417 .align  32
418 x25519_fe64_mul:
419 .cfi_startproc  
420         pushq   %rbp
421 .cfi_adjust_cfa_offset  8
422 .cfi_offset     %rbp,-16
423         pushq   %rbx
424 .cfi_adjust_cfa_offset  8
425 .cfi_offset     %rbx,-24
426         pushq   %r12
427 .cfi_adjust_cfa_offset  8
428 .cfi_offset     %r12,-32
429         pushq   %r13
430 .cfi_adjust_cfa_offset  8
431 .cfi_offset     %r13,-40
432         pushq   %r14
433 .cfi_adjust_cfa_offset  8
434 .cfi_offset     %r14,-48
435         pushq   %r15
436 .cfi_adjust_cfa_offset  8
437 .cfi_offset     %r15,-56
438         pushq   %rdi
439 .cfi_adjust_cfa_offset  8
440 .cfi_offset     %rdi,-64
441         leaq    -16(%rsp),%rsp
442 .cfi_adjust_cfa_offset  16
443 .Lfe64_mul_body:
444
445         movq    %rdx,%rax
446         movq    0(%rdx),%rbp
447         movq    0(%rsi),%rdx
448         movq    8(%rax),%rcx
449         movq    16(%rax),%r14
450         movq    24(%rax),%r15
451
452         mulxq   %rbp,%r8,%rax
453         xorl    %edi,%edi
454         mulxq   %rcx,%r9,%rbx
455         adcxq   %rax,%r9
456         mulxq   %r14,%r10,%rax
457         adcxq   %rbx,%r10
458         mulxq   %r15,%r11,%r12
459         movq    8(%rsi),%rdx
460         adcxq   %rax,%r11
461         movq    %r14,(%rsp)
462         adcxq   %rdi,%r12
463
464         mulxq   %rbp,%rax,%rbx
465         adoxq   %rax,%r9
466         adcxq   %rbx,%r10
467         mulxq   %rcx,%rax,%rbx
468         adoxq   %rax,%r10
469         adcxq   %rbx,%r11
470         mulxq   %r14,%rax,%rbx
471         adoxq   %rax,%r11
472         adcxq   %rbx,%r12
473         mulxq   %r15,%rax,%r13
474         movq    16(%rsi),%rdx
475         adoxq   %rax,%r12
476         adcxq   %rdi,%r13
477         adoxq   %rdi,%r13
478
479         mulxq   %rbp,%rax,%rbx
480         adcxq   %rax,%r10
481         adoxq   %rbx,%r11
482         mulxq   %rcx,%rax,%rbx
483         adcxq   %rax,%r11
484         adoxq   %rbx,%r12
485         mulxq   %r14,%rax,%rbx
486         adcxq   %rax,%r12
487         adoxq   %rbx,%r13
488         mulxq   %r15,%rax,%r14
489         movq    24(%rsi),%rdx
490         adcxq   %rax,%r13
491         adoxq   %rdi,%r14
492         adcxq   %rdi,%r14
493
494         mulxq   %rbp,%rax,%rbx
495         adoxq   %rax,%r11
496         adcxq   %rbx,%r12
497         mulxq   %rcx,%rax,%rbx
498         adoxq   %rax,%r12
499         adcxq   %rbx,%r13
500         mulxq   (%rsp),%rax,%rbx
501         adoxq   %rax,%r13
502         adcxq   %rbx,%r14
503         mulxq   %r15,%rax,%r15
504         movl    $38,%edx
505         adoxq   %rax,%r14
506         adcxq   %rdi,%r15
507         adoxq   %rdi,%r15
508
509         jmp     .Lreduce64
510 .Lfe64_mul_epilogue:
511 .cfi_endproc    
512 .size   x25519_fe64_mul,.-x25519_fe64_mul
513
514 .globl  x25519_fe64_sqr
515 .type   x25519_fe64_sqr,@function
516 .align  32
517 x25519_fe64_sqr:
518 .cfi_startproc  
519         pushq   %rbp
520 .cfi_adjust_cfa_offset  8
521 .cfi_offset     %rbp,-16
522         pushq   %rbx
523 .cfi_adjust_cfa_offset  8
524 .cfi_offset     %rbx,-24
525         pushq   %r12
526 .cfi_adjust_cfa_offset  8
527 .cfi_offset     %r12,-32
528         pushq   %r13
529 .cfi_adjust_cfa_offset  8
530 .cfi_offset     %r13,-40
531         pushq   %r14
532 .cfi_adjust_cfa_offset  8
533 .cfi_offset     %r14,-48
534         pushq   %r15
535 .cfi_adjust_cfa_offset  8
536 .cfi_offset     %r15,-56
537         pushq   %rdi
538 .cfi_adjust_cfa_offset  8
539 .cfi_offset     %rdi,-64
540         leaq    -16(%rsp),%rsp
541 .cfi_adjust_cfa_offset  16
542 .Lfe64_sqr_body:
543
544         movq    0(%rsi),%rdx
545         movq    8(%rsi),%rcx
546         movq    16(%rsi),%rbp
547         movq    24(%rsi),%rsi
548
549
550         mulxq   %rdx,%r8,%r15
551         mulxq   %rcx,%r9,%rax
552         xorl    %edi,%edi
553         mulxq   %rbp,%r10,%rbx
554         adcxq   %rax,%r10
555         mulxq   %rsi,%r11,%r12
556         movq    %rcx,%rdx
557         adcxq   %rbx,%r11
558         adcxq   %rdi,%r12
559
560
561         mulxq   %rbp,%rax,%rbx
562         adoxq   %rax,%r11
563         adcxq   %rbx,%r12
564         mulxq   %rsi,%rax,%r13
565         movq    %rbp,%rdx
566         adoxq   %rax,%r12
567         adcxq   %rdi,%r13
568
569
570         mulxq   %rsi,%rax,%r14
571         movq    %rcx,%rdx
572         adoxq   %rax,%r13
573         adcxq   %rdi,%r14
574         adoxq   %rdi,%r14
575
576         adcxq   %r9,%r9
577         adoxq   %r15,%r9
578         adcxq   %r10,%r10
579         mulxq   %rdx,%rax,%rbx
580         movq    %rbp,%rdx
581         adcxq   %r11,%r11
582         adoxq   %rax,%r10
583         adcxq   %r12,%r12
584         adoxq   %rbx,%r11
585         mulxq   %rdx,%rax,%rbx
586         movq    %rsi,%rdx
587         adcxq   %r13,%r13
588         adoxq   %rax,%r12
589         adcxq   %r14,%r14
590         adoxq   %rbx,%r13
591         mulxq   %rdx,%rax,%r15
592         movl    $38,%edx
593         adoxq   %rax,%r14
594         adcxq   %rdi,%r15
595         adoxq   %rdi,%r15
596         jmp     .Lreduce64
597
598 .align  32
599 .Lreduce64:
600         mulxq   %r12,%rax,%rbx
601         adcxq   %rax,%r8
602         adoxq   %rbx,%r9
603         mulxq   %r13,%rax,%rbx
604         adcxq   %rax,%r9
605         adoxq   %rbx,%r10
606         mulxq   %r14,%rax,%rbx
607         adcxq   %rax,%r10
608         adoxq   %rbx,%r11
609         mulxq   %r15,%rax,%r12
610         adcxq   %rax,%r11
611         adoxq   %rdi,%r12
612         adcxq   %rdi,%r12
613
614         movq    16(%rsp),%rdi
615         imulq   %rdx,%r12
616
617         addq    %r12,%r8
618         adcq    $0,%r9
619         adcq    $0,%r10
620         adcq    $0,%r11
621
622         sbbq    %rax,%rax
623         andq    $38,%rax
624
625         addq    %rax,%r8
626         movq    %r9,8(%rdi)
627         movq    %r10,16(%rdi)
628         movq    %r11,24(%rdi)
629         movq    %r8,0(%rdi)
630
631         movq    24(%rsp),%r15
632 .cfi_restore    %r15
633         movq    32(%rsp),%r14
634 .cfi_restore    %r14
635         movq    40(%rsp),%r13
636 .cfi_restore    %r13
637         movq    48(%rsp),%r12
638 .cfi_restore    %r12
639         movq    56(%rsp),%rbx
640 .cfi_restore    %rbx
641         movq    64(%rsp),%rbp
642 .cfi_restore    %rbp
643         leaq    72(%rsp),%rsp
644 .cfi_adjust_cfa_offset  88
645 .Lfe64_sqr_epilogue:
646         .byte   0xf3,0xc3
647 .cfi_endproc    
648 .size   x25519_fe64_sqr,.-x25519_fe64_sqr
649
650 .globl  x25519_fe64_mul121666
651 .type   x25519_fe64_mul121666,@function
652 .align  32
653 x25519_fe64_mul121666:
654 .Lfe64_mul121666_body:
655 .cfi_startproc  
656         movl    $121666,%edx
657         mulxq   0(%rsi),%r8,%rcx
658         mulxq   8(%rsi),%r9,%rax
659         addq    %rcx,%r9
660         mulxq   16(%rsi),%r10,%rcx
661         adcq    %rax,%r10
662         mulxq   24(%rsi),%r11,%rax
663         adcq    %rcx,%r11
664         adcq    $0,%rax
665
666         imulq   $38,%rax,%rax
667
668         addq    %rax,%r8
669         adcq    $0,%r9
670         adcq    $0,%r10
671         adcq    $0,%r11
672
673         sbbq    %rax,%rax
674         andq    $38,%rax
675
676         addq    %rax,%r8
677         movq    %r9,8(%rdi)
678         movq    %r10,16(%rdi)
679         movq    %r11,24(%rdi)
680         movq    %r8,0(%rdi)
681
682 .Lfe64_mul121666_epilogue:
683         .byte   0xf3,0xc3
684 .cfi_endproc    
685 .size   x25519_fe64_mul121666,.-x25519_fe64_mul121666
686
687 .globl  x25519_fe64_add
688 .type   x25519_fe64_add,@function
689 .align  32
690 x25519_fe64_add:
691 .Lfe64_add_body:
692 .cfi_startproc  
693         movq    0(%rsi),%r8
694         movq    8(%rsi),%r9
695         movq    16(%rsi),%r10
696         movq    24(%rsi),%r11
697
698         addq    0(%rdx),%r8
699         adcq    8(%rdx),%r9
700         adcq    16(%rdx),%r10
701         adcq    24(%rdx),%r11
702
703         sbbq    %rax,%rax
704         andq    $38,%rax
705
706         addq    %rax,%r8
707         adcq    $0,%r9
708         adcq    $0,%r10
709         movq    %r9,8(%rdi)
710         adcq    $0,%r11
711         movq    %r10,16(%rdi)
712         sbbq    %rax,%rax
713         movq    %r11,24(%rdi)
714         andq    $38,%rax
715
716         addq    %rax,%r8
717         movq    %r8,0(%rdi)
718
719 .Lfe64_add_epilogue:
720         .byte   0xf3,0xc3
721 .cfi_endproc    
722 .size   x25519_fe64_add,.-x25519_fe64_add
723
724 .globl  x25519_fe64_sub
725 .type   x25519_fe64_sub,@function
726 .align  32
727 x25519_fe64_sub:
728 .Lfe64_sub_body:
729 .cfi_startproc  
730         movq    0(%rsi),%r8
731         movq    8(%rsi),%r9
732         movq    16(%rsi),%r10
733         movq    24(%rsi),%r11
734
735         subq    0(%rdx),%r8
736         sbbq    8(%rdx),%r9
737         sbbq    16(%rdx),%r10
738         sbbq    24(%rdx),%r11
739
740         sbbq    %rax,%rax
741         andq    $38,%rax
742
743         subq    %rax,%r8
744         sbbq    $0,%r9
745         sbbq    $0,%r10
746         movq    %r9,8(%rdi)
747         sbbq    $0,%r11
748         movq    %r10,16(%rdi)
749         sbbq    %rax,%rax
750         movq    %r11,24(%rdi)
751         andq    $38,%rax
752
753         subq    %rax,%r8
754         movq    %r8,0(%rdi)
755
756 .Lfe64_sub_epilogue:
757         .byte   0xf3,0xc3
758 .cfi_endproc    
759 .size   x25519_fe64_sub,.-x25519_fe64_sub
760
761 .globl  x25519_fe64_tobytes
762 .type   x25519_fe64_tobytes,@function
763 .align  32
764 x25519_fe64_tobytes:
765 .Lfe64_to_body:
766 .cfi_startproc  
767         movq    0(%rsi),%r8
768         movq    8(%rsi),%r9
769         movq    16(%rsi),%r10
770         movq    24(%rsi),%r11
771
772
773         leaq    (%r11,%r11,1),%rax
774         sarq    $63,%r11
775         shrq    $1,%rax
776         andq    $19,%r11
777         addq    $19,%r11
778
779         addq    %r11,%r8
780         adcq    $0,%r9
781         adcq    $0,%r10
782         adcq    $0,%rax
783
784         leaq    (%rax,%rax,1),%r11
785         sarq    $63,%rax
786         shrq    $1,%r11
787         notq    %rax
788         andq    $19,%rax
789
790         subq    %rax,%r8
791         sbbq    $0,%r9
792         sbbq    $0,%r10
793         sbbq    $0,%r11
794
795         movq    %r8,0(%rdi)
796         movq    %r9,8(%rdi)
797         movq    %r10,16(%rdi)
798         movq    %r11,24(%rdi)
799
800 .Lfe64_to_epilogue:
801         .byte   0xf3,0xc3
802 .cfi_endproc    
803 .size   x25519_fe64_tobytes,.-x25519_fe64_tobytes
804 .byte   88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101,115,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0