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