blob: f1e7ea4f63e28db02386ab5afa17fe12709fa975 [file] [log] [blame]
Pete Bentleya5c947b2019-08-09 14:24:27 +00001# This file is generated from a similarly-named Perl script in the BoringSSL
2# source tree. Do not edit by hand.
3
4#if defined(__has_feature)
5#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
6#define OPENSSL_NO_ASM
7#endif
8#endif
9
10#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM)
11#if defined(BORINGSSL_PREFIX)
12#include <boringssl_prefix_symbols_asm.h>
13#endif
14.text
15
16
17L$p434x2:
18.quad 0xFFFFFFFFFFFFFFFE
19.quad 0xFFFFFFFFFFFFFFFF
20.quad 0xFB82ECF5C5FFFFFF
21.quad 0xF78CB8F062B15D47
22.quad 0xD9F8BFAD038A40AC
23.quad 0x0004683E4E2EE688
24
25
26L$p434p1:
27.quad 0xFDC1767AE3000000
28.quad 0x7BC65C783158AEA3
29.quad 0x6CFC5FD681C52056
30.quad 0x0002341F27177344
31
32
33.private_extern _OPENSSL_ia32cap_P
34.globl _sike_fpadd
35.private_extern _sike_fpadd
36
37_sike_fpadd:
38
39 pushq %r12
40
41
42 pushq %r13
43
44
45 pushq %r14
46
47
48
49 xorq %rax,%rax
50
51 movq 0(%rdi),%r8
52 addq 0(%rsi),%r8
53 movq 8(%rdi),%r9
54 adcq 8(%rsi),%r9
55 movq 16(%rdi),%r10
56 adcq 16(%rsi),%r10
57 movq 24(%rdi),%r11
58 adcq 24(%rsi),%r11
59 movq 32(%rdi),%r12
60 adcq 32(%rsi),%r12
61 movq 40(%rdi),%r13
62 adcq 40(%rsi),%r13
63 movq 48(%rdi),%r14
64 adcq 48(%rsi),%r14
65
66 movq L$p434x2(%rip),%rcx
67 subq %rcx,%r8
68 movq 8+L$p434x2(%rip),%rcx
69 sbbq %rcx,%r9
70 sbbq %rcx,%r10
71 movq 16+L$p434x2(%rip),%rcx
72 sbbq %rcx,%r11
73 movq 24+L$p434x2(%rip),%rcx
74 sbbq %rcx,%r12
75 movq 32+L$p434x2(%rip),%rcx
76 sbbq %rcx,%r13
77 movq 40+L$p434x2(%rip),%rcx
78 sbbq %rcx,%r14
79
80 sbbq $0,%rax
81
82 movq L$p434x2(%rip),%rdi
83 andq %rax,%rdi
84 movq 8+L$p434x2(%rip),%rsi
85 andq %rax,%rsi
86 movq 16+L$p434x2(%rip),%rcx
87 andq %rax,%rcx
88
89 addq %rdi,%r8
90 movq %r8,0(%rdx)
91 adcq %rsi,%r9
92 movq %r9,8(%rdx)
93 adcq %rsi,%r10
94 movq %r10,16(%rdx)
95 adcq %rcx,%r11
96 movq %r11,24(%rdx)
97
98 setc %cl
99 movq 24+L$p434x2(%rip),%r8
100 andq %rax,%r8
101 movq 32+L$p434x2(%rip),%r9
102 andq %rax,%r9
103 movq 40+L$p434x2(%rip),%r10
104 andq %rax,%r10
105 btq $0,%rcx
106
107 adcq %r8,%r12
108 movq %r12,32(%rdx)
109 adcq %r9,%r13
110 movq %r13,40(%rdx)
111 adcq %r10,%r14
112 movq %r14,48(%rdx)
113
114 popq %r14
115
116 popq %r13
117
118 popq %r12
119
120 .byte 0xf3,0xc3
121
122.globl _sike_cswap_asm
123.private_extern _sike_cswap_asm
124
125_sike_cswap_asm:
126
127
128 movq %rdx,%xmm3
129
130
131
132
133
134 pshufd $68,%xmm3,%xmm3
135
136 movdqu 0(%rdi),%xmm0
137 movdqu 0(%rsi),%xmm1
138 movdqa %xmm1,%xmm2
139 pxor %xmm0,%xmm2
140 pand %xmm3,%xmm2
141 pxor %xmm2,%xmm0
142 pxor %xmm2,%xmm1
143 movdqu %xmm0,0(%rdi)
144 movdqu %xmm1,0(%rsi)
145
146 movdqu 16(%rdi),%xmm0
147 movdqu 16(%rsi),%xmm1
148 movdqa %xmm1,%xmm2
149 pxor %xmm0,%xmm2
150 pand %xmm3,%xmm2
151 pxor %xmm2,%xmm0
152 pxor %xmm2,%xmm1
153 movdqu %xmm0,16(%rdi)
154 movdqu %xmm1,16(%rsi)
155
156 movdqu 32(%rdi),%xmm0
157 movdqu 32(%rsi),%xmm1
158 movdqa %xmm1,%xmm2
159 pxor %xmm0,%xmm2
160 pand %xmm3,%xmm2
161 pxor %xmm2,%xmm0
162 pxor %xmm2,%xmm1
163 movdqu %xmm0,32(%rdi)
164 movdqu %xmm1,32(%rsi)
165
166 movdqu 48(%rdi),%xmm0
167 movdqu 48(%rsi),%xmm1
168 movdqa %xmm1,%xmm2
169 pxor %xmm0,%xmm2
170 pand %xmm3,%xmm2
171 pxor %xmm2,%xmm0
172 pxor %xmm2,%xmm1
173 movdqu %xmm0,48(%rdi)
174 movdqu %xmm1,48(%rsi)
175
176 movdqu 64(%rdi),%xmm0
177 movdqu 64(%rsi),%xmm1
178 movdqa %xmm1,%xmm2
179 pxor %xmm0,%xmm2
180 pand %xmm3,%xmm2
181 pxor %xmm2,%xmm0
182 pxor %xmm2,%xmm1
183 movdqu %xmm0,64(%rdi)
184 movdqu %xmm1,64(%rsi)
185
186 movdqu 80(%rdi),%xmm0
187 movdqu 80(%rsi),%xmm1
188 movdqa %xmm1,%xmm2
189 pxor %xmm0,%xmm2
190 pand %xmm3,%xmm2
191 pxor %xmm2,%xmm0
192 pxor %xmm2,%xmm1
193 movdqu %xmm0,80(%rdi)
194 movdqu %xmm1,80(%rsi)
195
196 movdqu 96(%rdi),%xmm0
197 movdqu 96(%rsi),%xmm1
198 movdqa %xmm1,%xmm2
199 pxor %xmm0,%xmm2
200 pand %xmm3,%xmm2
201 pxor %xmm2,%xmm0
202 pxor %xmm2,%xmm1
203 movdqu %xmm0,96(%rdi)
204 movdqu %xmm1,96(%rsi)
205
206 movdqu 112(%rdi),%xmm0
207 movdqu 112(%rsi),%xmm1
208 movdqa %xmm1,%xmm2
209 pxor %xmm0,%xmm2
210 pand %xmm3,%xmm2
211 pxor %xmm2,%xmm0
212 pxor %xmm2,%xmm1
213 movdqu %xmm0,112(%rdi)
214 movdqu %xmm1,112(%rsi)
215
216 movdqu 128(%rdi),%xmm0
217 movdqu 128(%rsi),%xmm1
218 movdqa %xmm1,%xmm2
219 pxor %xmm0,%xmm2
220 pand %xmm3,%xmm2
221 pxor %xmm2,%xmm0
222 pxor %xmm2,%xmm1
223 movdqu %xmm0,128(%rdi)
224 movdqu %xmm1,128(%rsi)
225
226 movdqu 144(%rdi),%xmm0
227 movdqu 144(%rsi),%xmm1
228 movdqa %xmm1,%xmm2
229 pxor %xmm0,%xmm2
230 pand %xmm3,%xmm2
231 pxor %xmm2,%xmm0
232 pxor %xmm2,%xmm1
233 movdqu %xmm0,144(%rdi)
234 movdqu %xmm1,144(%rsi)
235
236 movdqu 160(%rdi),%xmm0
237 movdqu 160(%rsi),%xmm1
238 movdqa %xmm1,%xmm2
239 pxor %xmm0,%xmm2
240 pand %xmm3,%xmm2
241 pxor %xmm2,%xmm0
242 pxor %xmm2,%xmm1
243 movdqu %xmm0,160(%rdi)
244 movdqu %xmm1,160(%rsi)
245
246 movdqu 176(%rdi),%xmm0
247 movdqu 176(%rsi),%xmm1
248 movdqa %xmm1,%xmm2
249 pxor %xmm0,%xmm2
250 pand %xmm3,%xmm2
251 pxor %xmm2,%xmm0
252 pxor %xmm2,%xmm1
253 movdqu %xmm0,176(%rdi)
254 movdqu %xmm1,176(%rsi)
255
256 movdqu 192(%rdi),%xmm0
257 movdqu 192(%rsi),%xmm1
258 movdqa %xmm1,%xmm2
259 pxor %xmm0,%xmm2
260 pand %xmm3,%xmm2
261 pxor %xmm2,%xmm0
262 pxor %xmm2,%xmm1
263 movdqu %xmm0,192(%rdi)
264 movdqu %xmm1,192(%rsi)
265
266 movdqu 208(%rdi),%xmm0
267 movdqu 208(%rsi),%xmm1
268 movdqa %xmm1,%xmm2
269 pxor %xmm0,%xmm2
270 pand %xmm3,%xmm2
271 pxor %xmm2,%xmm0
272 pxor %xmm2,%xmm1
273 movdqu %xmm0,208(%rdi)
274 movdqu %xmm1,208(%rsi)
275
276 .byte 0xf3,0xc3
277.globl _sike_fpsub
278.private_extern _sike_fpsub
279
280_sike_fpsub:
281
282 pushq %r12
283
284
285 pushq %r13
286
287
288 pushq %r14
289
290
291
292 xorq %rax,%rax
293
294 movq 0(%rdi),%r8
295 subq 0(%rsi),%r8
296 movq 8(%rdi),%r9
297 sbbq 8(%rsi),%r9
298 movq 16(%rdi),%r10
299 sbbq 16(%rsi),%r10
300 movq 24(%rdi),%r11
301 sbbq 24(%rsi),%r11
302 movq 32(%rdi),%r12
303 sbbq 32(%rsi),%r12
304 movq 40(%rdi),%r13
305 sbbq 40(%rsi),%r13
306 movq 48(%rdi),%r14
307 sbbq 48(%rsi),%r14
308
309 sbbq $0x0,%rax
310
311 movq L$p434x2(%rip),%rdi
312 andq %rax,%rdi
313 movq 8+L$p434x2(%rip),%rsi
314 andq %rax,%rsi
315 movq 16+L$p434x2(%rip),%rcx
316 andq %rax,%rcx
317
318 addq %rdi,%r8
319 movq %r8,0(%rdx)
320 adcq %rsi,%r9
321 movq %r9,8(%rdx)
322 adcq %rsi,%r10
323 movq %r10,16(%rdx)
324 adcq %rcx,%r11
325 movq %r11,24(%rdx)
326
327 setc %cl
328 movq 24+L$p434x2(%rip),%r8
329 andq %rax,%r8
330 movq 32+L$p434x2(%rip),%r9
331 andq %rax,%r9
332 movq 40+L$p434x2(%rip),%r10
333 andq %rax,%r10
334 btq $0x0,%rcx
335
336 adcq %r8,%r12
337 adcq %r9,%r13
338 adcq %r10,%r14
339 movq %r12,32(%rdx)
340 movq %r13,40(%rdx)
341 movq %r14,48(%rdx)
342
343 popq %r14
344
345 popq %r13
346
347 popq %r12
348
349 .byte 0xf3,0xc3
350
351.globl _sike_mpadd_asm
352.private_extern _sike_mpadd_asm
353
354_sike_mpadd_asm:
355
356 movq 0(%rdi),%r8;
357 movq 8(%rdi),%r9
358 movq 16(%rdi),%r10
359 movq 24(%rdi),%r11
360 movq 32(%rdi),%rcx
361 addq 0(%rsi),%r8
362 adcq 8(%rsi),%r9
363 adcq 16(%rsi),%r10
364 adcq 24(%rsi),%r11
365 adcq 32(%rsi),%rcx
366 movq %r8,0(%rdx)
367 movq %r9,8(%rdx)
368 movq %r10,16(%rdx)
369 movq %r11,24(%rdx)
370 movq %rcx,32(%rdx)
371
372 movq 40(%rdi),%r8
373 movq 48(%rdi),%r9
374 adcq 40(%rsi),%r8
375 adcq 48(%rsi),%r9
376 movq %r8,40(%rdx)
377 movq %r9,48(%rdx)
378 .byte 0xf3,0xc3
379
380.globl _sike_mpsubx2_asm
381.private_extern _sike_mpsubx2_asm
382
383_sike_mpsubx2_asm:
384
385 xorq %rax,%rax
386
387 movq 0(%rdi),%r8
388 movq 8(%rdi),%r9
389 movq 16(%rdi),%r10
390 movq 24(%rdi),%r11
391 movq 32(%rdi),%rcx
392 subq 0(%rsi),%r8
393 sbbq 8(%rsi),%r9
394 sbbq 16(%rsi),%r10
395 sbbq 24(%rsi),%r11
396 sbbq 32(%rsi),%rcx
397 movq %r8,0(%rdx)
398 movq %r9,8(%rdx)
399 movq %r10,16(%rdx)
400 movq %r11,24(%rdx)
401 movq %rcx,32(%rdx)
402
403 movq 40(%rdi),%r8
404 movq 48(%rdi),%r9
405 movq 56(%rdi),%r10
406 movq 64(%rdi),%r11
407 movq 72(%rdi),%rcx
408 sbbq 40(%rsi),%r8
409 sbbq 48(%rsi),%r9
410 sbbq 56(%rsi),%r10
411 sbbq 64(%rsi),%r11
412 sbbq 72(%rsi),%rcx
413 movq %r8,40(%rdx)
414 movq %r9,48(%rdx)
415 movq %r10,56(%rdx)
416 movq %r11,64(%rdx)
417 movq %rcx,72(%rdx)
418
419 movq 80(%rdi),%r8
420 movq 88(%rdi),%r9
421 movq 96(%rdi),%r10
422 movq 104(%rdi),%r11
423 sbbq 80(%rsi),%r8
424 sbbq 88(%rsi),%r9
425 sbbq 96(%rsi),%r10
426 sbbq 104(%rsi),%r11
427 sbbq $0x0,%rax
428 movq %r8,80(%rdx)
429 movq %r9,88(%rdx)
430 movq %r10,96(%rdx)
431 movq %r11,104(%rdx)
432 .byte 0xf3,0xc3
433
434.globl _sike_mpdblsubx2_asm
435.private_extern _sike_mpdblsubx2_asm
436
437_sike_mpdblsubx2_asm:
438
439 pushq %r12
440
441
442 pushq %r13
443
444
445
446 xorq %rax,%rax
447
448
449 movq 0(%rdx),%r8
450 movq 8(%rdx),%r9
451 movq 16(%rdx),%r10
452 movq 24(%rdx),%r11
453 movq 32(%rdx),%r12
454 movq 40(%rdx),%r13
455 movq 48(%rdx),%rcx
456 subq 0(%rdi),%r8
457 sbbq 8(%rdi),%r9
458 sbbq 16(%rdi),%r10
459 sbbq 24(%rdi),%r11
460 sbbq 32(%rdi),%r12
461 sbbq 40(%rdi),%r13
462 sbbq 48(%rdi),%rcx
463 adcq $0x0,%rax
464
465
466 subq 0(%rsi),%r8
467 sbbq 8(%rsi),%r9
468 sbbq 16(%rsi),%r10
469 sbbq 24(%rsi),%r11
470 sbbq 32(%rsi),%r12
471 sbbq 40(%rsi),%r13
472 sbbq 48(%rsi),%rcx
473 adcq $0x0,%rax
474
475
476 movq %r8,0(%rdx)
477 movq %r9,8(%rdx)
478 movq %r10,16(%rdx)
479 movq %r11,24(%rdx)
480 movq %r12,32(%rdx)
481 movq %r13,40(%rdx)
482 movq %rcx,48(%rdx)
483
484
485 movq 56(%rdx),%r8
486 movq 64(%rdx),%r9
487 movq 72(%rdx),%r10
488 movq 80(%rdx),%r11
489 movq 88(%rdx),%r12
490 movq 96(%rdx),%r13
491 movq 104(%rdx),%rcx
492
493 subq %rax,%r8
494 sbbq 56(%rdi),%r8
495 sbbq 64(%rdi),%r9
496 sbbq 72(%rdi),%r10
497 sbbq 80(%rdi),%r11
498 sbbq 88(%rdi),%r12
499 sbbq 96(%rdi),%r13
500 sbbq 104(%rdi),%rcx
501
502
503 subq 56(%rsi),%r8
504 sbbq 64(%rsi),%r9
505 sbbq 72(%rsi),%r10
506 sbbq 80(%rsi),%r11
507 sbbq 88(%rsi),%r12
508 sbbq 96(%rsi),%r13
509 sbbq 104(%rsi),%rcx
510
511
512 movq %r8,56(%rdx)
513 movq %r9,64(%rdx)
514 movq %r10,72(%rdx)
515 movq %r11,80(%rdx)
516 movq %r12,88(%rdx)
517 movq %r13,96(%rdx)
518 movq %rcx,104(%rdx)
519
520 popq %r13
521
522 popq %r12
523
524 .byte 0xf3,0xc3
525
526
527L$rdc_bdw:
528
529
530
531
532
533
534
535
536 xorq %rax,%rax
537 movq 0+0(%rdi),%rdx
538 mulxq 0+L$p434p1(%rip),%r8,%r9
539 mulxq 8+L$p434p1(%rip),%r12,%r10
540 mulxq 16+L$p434p1(%rip),%r13,%r11
541
542 adoxq %r12,%r9
543 adoxq %r13,%r10
544
545 mulxq 24+L$p434p1(%rip),%r13,%r12
546 adoxq %r13,%r11
547 adoxq %rax,%r12
548
549 xorq %rax,%rax
550 movq 0+8(%rdi),%rdx
551 mulxq 0+L$p434p1(%rip),%r13,%rcx
552 adcxq %r13,%r9
553 adcxq %rcx,%r10
554
555 mulxq 8+L$p434p1(%rip),%rcx,%r13
556 adcxq %r13,%r11
557 adoxq %rcx,%r10
558
559 mulxq 16+L$p434p1(%rip),%rcx,%r13
560 adcxq %r13,%r12
561 adoxq %rcx,%r11
562
563 mulxq 24+L$p434p1(%rip),%rcx,%r13
564 adcxq %rax,%r13
565 adoxq %rcx,%r12
566 adoxq %rax,%r13
567
568 xorq %rcx,%rcx
569 addq 24(%rdi),%r8
570 adcq 32(%rdi),%r9
571 adcq 40(%rdi),%r10
572 adcq 48(%rdi),%r11
573 adcq 56(%rdi),%r12
574 adcq 64(%rdi),%r13
575 adcq 72(%rdi),%rcx
576 movq %r8,24(%rdi)
577 movq %r9,32(%rdi)
578 movq %r10,40(%rdi)
579 movq %r11,48(%rdi)
580 movq %r12,56(%rdi)
581 movq %r13,64(%rdi)
582 movq %rcx,72(%rdi)
583 movq 80(%rdi),%r8
584 movq 88(%rdi),%r9
585 movq 96(%rdi),%r10
586 movq 104(%rdi),%r11
587 adcq $0x0,%r8
588 adcq $0x0,%r9
589 adcq $0x0,%r10
590 adcq $0x0,%r11
591 movq %r8,80(%rdi)
592 movq %r9,88(%rdi)
593 movq %r10,96(%rdi)
594 movq %r11,104(%rdi)
595
596 xorq %rax,%rax
597 movq 16+0(%rdi),%rdx
598 mulxq 0+L$p434p1(%rip),%r8,%r9
599 mulxq 8+L$p434p1(%rip),%r12,%r10
600 mulxq 16+L$p434p1(%rip),%r13,%r11
601
602 adoxq %r12,%r9
603 adoxq %r13,%r10
604
605 mulxq 24+L$p434p1(%rip),%r13,%r12
606 adoxq %r13,%r11
607 adoxq %rax,%r12
608
609 xorq %rax,%rax
610 movq 16+8(%rdi),%rdx
611 mulxq 0+L$p434p1(%rip),%r13,%rcx
612 adcxq %r13,%r9
613 adcxq %rcx,%r10
614
615 mulxq 8+L$p434p1(%rip),%rcx,%r13
616 adcxq %r13,%r11
617 adoxq %rcx,%r10
618
619 mulxq 16+L$p434p1(%rip),%rcx,%r13
620 adcxq %r13,%r12
621 adoxq %rcx,%r11
622
623 mulxq 24+L$p434p1(%rip),%rcx,%r13
624 adcxq %rax,%r13
625 adoxq %rcx,%r12
626 adoxq %rax,%r13
627
628 xorq %rcx,%rcx
629 addq 40(%rdi),%r8
630 adcq 48(%rdi),%r9
631 adcq 56(%rdi),%r10
632 adcq 64(%rdi),%r11
633 adcq 72(%rdi),%r12
634 adcq 80(%rdi),%r13
635 adcq 88(%rdi),%rcx
636 movq %r8,40(%rdi)
637 movq %r9,48(%rdi)
638 movq %r10,56(%rdi)
639 movq %r11,64(%rdi)
640 movq %r12,72(%rdi)
641 movq %r13,80(%rdi)
642 movq %rcx,88(%rdi)
643 movq 96(%rdi),%r8
644 movq 104(%rdi),%r9
645 adcq $0x0,%r8
646 adcq $0x0,%r9
647 movq %r8,96(%rdi)
648 movq %r9,104(%rdi)
649
650 xorq %rax,%rax
651 movq 32+0(%rdi),%rdx
652 mulxq 0+L$p434p1(%rip),%r8,%r9
653 mulxq 8+L$p434p1(%rip),%r12,%r10
654 mulxq 16+L$p434p1(%rip),%r13,%r11
655
656 adoxq %r12,%r9
657 adoxq %r13,%r10
658
659 mulxq 24+L$p434p1(%rip),%r13,%r12
660 adoxq %r13,%r11
661 adoxq %rax,%r12
662
663 xorq %rax,%rax
664 movq 32+8(%rdi),%rdx
665 mulxq 0+L$p434p1(%rip),%r13,%rcx
666 adcxq %r13,%r9
667 adcxq %rcx,%r10
668
669 mulxq 8+L$p434p1(%rip),%rcx,%r13
670 adcxq %r13,%r11
671 adoxq %rcx,%r10
672
673 mulxq 16+L$p434p1(%rip),%rcx,%r13
674 adcxq %r13,%r12
675 adoxq %rcx,%r11
676
677 mulxq 24+L$p434p1(%rip),%rcx,%r13
678 adcxq %rax,%r13
679 adoxq %rcx,%r12
680 adoxq %rax,%r13
681
682 xorq %rcx,%rcx
683 addq 56(%rdi),%r8
684 adcq 64(%rdi),%r9
685 adcq 72(%rdi),%r10
686 adcq 80(%rdi),%r11
687 adcq 88(%rdi),%r12
688 adcq 96(%rdi),%r13
689 adcq 104(%rdi),%rcx
690 movq %r8,0(%rsi)
691 movq %r9,8(%rsi)
692 movq %r10,72(%rdi)
693 movq %r11,80(%rdi)
694 movq %r12,88(%rdi)
695 movq %r13,96(%rdi)
696 movq %rcx,104(%rdi)
697
698 xorq %rax,%rax
699 movq 48(%rdi),%rdx
700 mulxq 0+L$p434p1(%rip),%r8,%r9
701 mulxq 8+L$p434p1(%rip),%r12,%r10
702 mulxq 16+L$p434p1(%rip),%r13,%r11
703
704 adoxq %r12,%r9
705 adoxq %r13,%r10
706
707 mulxq 24+L$p434p1(%rip),%r13,%r12
708 adoxq %r13,%r11
709 adoxq %rax,%r12
710
711 addq 72(%rdi),%r8
712 adcq 80(%rdi),%r9
713 adcq 88(%rdi),%r10
714 adcq 96(%rdi),%r11
715 adcq 104(%rdi),%r12
716 movq %r8,16(%rsi)
717 movq %r9,24(%rsi)
718 movq %r10,32(%rsi)
719 movq %r11,40(%rsi)
720 movq %r12,48(%rsi)
721
722
723 popq %r15
724
725
726 popq %r14
727
728
729 popq %r13
730
731
732 popq %r12
733
734
735 .byte 0xf3,0xc3
736
737.globl _sike_fprdc
738.private_extern _sike_fprdc
739
740_sike_fprdc:
741
742 pushq %r12
743
744
745 pushq %r13
746
747
748 pushq %r14
749
750
751 pushq %r15
752
753
754
755
756
757 leaq _OPENSSL_ia32cap_P(%rip),%rcx
758 movq 8(%rcx),%rcx
759 andl $0x80100,%ecx
760 cmpl $0x80100,%ecx
761 je L$rdc_bdw
762
763
764
765
766 movq 0+0(%rdi),%r14
767 movq 0+L$p434p1(%rip),%rax
768 mulq %r14
769 xorq %r10,%r10
770 movq %rax,%r8
771 movq %rdx,%r9
772
773
774 movq 8+L$p434p1(%rip),%rax
775 mulq %r14
776 xorq %r11,%r11
777 addq %rax,%r9
778 adcq %rdx,%r10
779
780
781 movq 0+8(%rdi),%rcx
782 movq 0+L$p434p1(%rip),%rax
783 mulq %rcx
784 addq %rax,%r9
785 adcq %rdx,%r10
786 adcq $0x0,%r11
787
788
789 xorq %r12,%r12
790 movq 16+L$p434p1(%rip),%rax
791 mulq %r14
792 addq %rax,%r10
793 adcq %rdx,%r11
794 adcq $0x0,%r12
795
796
797 movq 8+L$p434p1(%rip),%rax
798 mulq %rcx
799 addq %rax,%r10
800 adcq %rdx,%r11
801 adcq $0x0,%r12
802
803
804 movq 24+L$p434p1(%rip),%rax
805 mulq %r14
806 xorq %r13,%r13
807 addq %rax,%r11
808 adcq %rdx,%r12
809 adcq $0x0,%r13
810
811
812 movq 16+L$p434p1(%rip),%rax
813 mulq %rcx
814 addq %rax,%r11
815 adcq %rdx,%r12
816 adcq $0x0,%r13
817
818
819 movq 24+L$p434p1(%rip),%rax
820 mulq %rcx
821 addq %rax,%r12
822 adcq %rdx,%r13
823
824
825 xorq %rcx,%rcx
826 addq 24(%rdi),%r8
827 adcq 32(%rdi),%r9
828 adcq 40(%rdi),%r10
829 adcq 48(%rdi),%r11
830 adcq 56(%rdi),%r12
831 adcq 64(%rdi),%r13
832 adcq 72(%rdi),%rcx
833 movq %r8,24(%rdi)
834 movq %r9,32(%rdi)
835 movq %r10,40(%rdi)
836 movq %r11,48(%rdi)
837 movq %r12,56(%rdi)
838 movq %r13,64(%rdi)
839 movq %rcx,72(%rdi)
840 movq 80(%rdi),%r8
841 movq 88(%rdi),%r9
842 movq 96(%rdi),%r10
843 movq 104(%rdi),%r11
844 adcq $0x0,%r8
845 adcq $0x0,%r9
846 adcq $0x0,%r10
847 adcq $0x0,%r11
848 movq %r8,80(%rdi)
849 movq %r9,88(%rdi)
850 movq %r10,96(%rdi)
851 movq %r11,104(%rdi)
852
853
854 movq 16+0(%rdi),%r14
855 movq 0+L$p434p1(%rip),%rax
856 mulq %r14
857 xorq %r10,%r10
858 movq %rax,%r8
859 movq %rdx,%r9
860
861
862 movq 8+L$p434p1(%rip),%rax
863 mulq %r14
864 xorq %r11,%r11
865 addq %rax,%r9
866 adcq %rdx,%r10
867
868
869 movq 16+8(%rdi),%rcx
870 movq 0+L$p434p1(%rip),%rax
871 mulq %rcx
872 addq %rax,%r9
873 adcq %rdx,%r10
874 adcq $0x0,%r11
875
876
877 xorq %r12,%r12
878 movq 16+L$p434p1(%rip),%rax
879 mulq %r14
880 addq %rax,%r10
881 adcq %rdx,%r11
882 adcq $0x0,%r12
883
884
885 movq 8+L$p434p1(%rip),%rax
886 mulq %rcx
887 addq %rax,%r10
888 adcq %rdx,%r11
889 adcq $0x0,%r12
890
891
892 movq 24+L$p434p1(%rip),%rax
893 mulq %r14
894 xorq %r13,%r13
895 addq %rax,%r11
896 adcq %rdx,%r12
897 adcq $0x0,%r13
898
899
900 movq 16+L$p434p1(%rip),%rax
901 mulq %rcx
902 addq %rax,%r11
903 adcq %rdx,%r12
904 adcq $0x0,%r13
905
906
907 movq 24+L$p434p1(%rip),%rax
908 mulq %rcx
909 addq %rax,%r12
910 adcq %rdx,%r13
911
912
913 xorq %rcx,%rcx
914 addq 40(%rdi),%r8
915 adcq 48(%rdi),%r9
916 adcq 56(%rdi),%r10
917 adcq 64(%rdi),%r11
918 adcq 72(%rdi),%r12
919 adcq 80(%rdi),%r13
920 adcq 88(%rdi),%rcx
921 movq %r8,40(%rdi)
922 movq %r9,48(%rdi)
923 movq %r10,56(%rdi)
924 movq %r11,64(%rdi)
925 movq %r12,72(%rdi)
926 movq %r13,80(%rdi)
927 movq %rcx,88(%rdi)
928 movq 96(%rdi),%r8
929 movq 104(%rdi),%r9
930 adcq $0x0,%r8
931 adcq $0x0,%r9
932 movq %r8,96(%rdi)
933 movq %r9,104(%rdi)
934
935
936 movq 32+0(%rdi),%r14
937 movq 0+L$p434p1(%rip),%rax
938 mulq %r14
939 xorq %r10,%r10
940 movq %rax,%r8
941 movq %rdx,%r9
942
943
944 movq 8+L$p434p1(%rip),%rax
945 mulq %r14
946 xorq %r11,%r11
947 addq %rax,%r9
948 adcq %rdx,%r10
949
950
951 movq 32+8(%rdi),%rcx
952 movq 0+L$p434p1(%rip),%rax
953 mulq %rcx
954 addq %rax,%r9
955 adcq %rdx,%r10
956 adcq $0x0,%r11
957
958
959 xorq %r12,%r12
960 movq 16+L$p434p1(%rip),%rax
961 mulq %r14
962 addq %rax,%r10
963 adcq %rdx,%r11
964 adcq $0x0,%r12
965
966
967 movq 8+L$p434p1(%rip),%rax
968 mulq %rcx
969 addq %rax,%r10
970 adcq %rdx,%r11
971 adcq $0x0,%r12
972
973
974 movq 24+L$p434p1(%rip),%rax
975 mulq %r14
976 xorq %r13,%r13
977 addq %rax,%r11
978 adcq %rdx,%r12
979 adcq $0x0,%r13
980
981
982 movq 16+L$p434p1(%rip),%rax
983 mulq %rcx
984 addq %rax,%r11
985 adcq %rdx,%r12
986 adcq $0x0,%r13
987
988
989 movq 24+L$p434p1(%rip),%rax
990 mulq %rcx
991 addq %rax,%r12
992 adcq %rdx,%r13
993
994
995 xorq %rcx,%rcx
996 addq 56(%rdi),%r8
997 adcq 64(%rdi),%r9
998 adcq 72(%rdi),%r10
999 adcq 80(%rdi),%r11
1000 adcq 88(%rdi),%r12
1001 adcq 96(%rdi),%r13
1002 adcq 104(%rdi),%rcx
1003 movq %r8,0(%rsi)
1004 movq %r9,8(%rsi)
1005 movq %r10,72(%rdi)
1006 movq %r11,80(%rdi)
1007 movq %r12,88(%rdi)
1008 movq %r13,96(%rdi)
1009 movq %rcx,104(%rdi)
1010
1011 movq 48(%rdi),%r13
1012
1013 xorq %r10,%r10
1014 movq 0+L$p434p1(%rip),%rax
1015 mulq %r13
1016 movq %rax,%r8
1017 movq %rdx,%r9
1018
1019 xorq %r11,%r11
1020 movq 8+L$p434p1(%rip),%rax
1021 mulq %r13
1022 addq %rax,%r9
1023 adcq %rdx,%r10
1024
1025 xorq %r12,%r12
1026 movq 16+L$p434p1(%rip),%rax
1027 mulq %r13
1028 addq %rax,%r10
1029 adcq %rdx,%r11
1030
1031 movq 24+L$p434p1(%rip),%rax
1032 mulq %r13
1033 addq %rax,%r11
1034 adcq %rdx,%r12
1035
1036 addq 72(%rdi),%r8
1037 adcq 80(%rdi),%r9
1038 adcq 88(%rdi),%r10
1039 adcq 96(%rdi),%r11
1040 adcq 104(%rdi),%r12
1041 movq %r8,16(%rsi)
1042 movq %r9,24(%rsi)
1043 movq %r10,32(%rsi)
1044 movq %r11,40(%rsi)
1045 movq %r12,48(%rsi)
1046
1047
1048 popq %r15
1049
1050 popq %r14
1051
1052 popq %r13
1053
1054 popq %r12
1055
1056 .byte 0xf3,0xc3
1057
1058L$mul_bdw:
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068 movq %rdx,%rcx
1069 xorq %rax,%rax
1070
1071
1072 movq 0(%rdi),%r8
1073 movq 8(%rdi),%r9
1074 movq 16(%rdi),%r10
1075 movq 24(%rdi),%r11
1076
1077 pushq %rbx
1078
1079
1080 pushq %rbp
1081
1082
1083 subq $96,%rsp
1084
1085
1086 addq 32(%rdi),%r8
1087 adcq 40(%rdi),%r9
1088 adcq 48(%rdi),%r10
1089 adcq $0x0,%r11
1090 sbbq $0x0,%rax
1091 movq %r8,0(%rsp)
1092 movq %r9,8(%rsp)
1093 movq %r10,16(%rsp)
1094 movq %r11,24(%rsp)
1095
1096
1097 xorq %rbx,%rbx
1098 movq 0(%rsi),%r12
1099 movq 8(%rsi),%r13
1100 movq 16(%rsi),%r14
1101 movq 24(%rsi),%r15
1102 addq 32(%rsi),%r12
1103 adcq 40(%rsi),%r13
1104 adcq 48(%rsi),%r14
1105 adcq $0x0,%r15
1106 sbbq $0x0,%rbx
1107 movq %r12,32(%rsp)
1108 movq %r13,40(%rsp)
1109 movq %r14,48(%rsp)
1110 movq %r15,56(%rsp)
1111
1112
1113 andq %rax,%r12
1114 andq %rax,%r13
1115 andq %rax,%r14
1116 andq %rax,%r15
1117
1118
1119 andq %rbx,%r8
1120 andq %rbx,%r9
1121 andq %rbx,%r10
1122 andq %rbx,%r11
1123
1124
1125 addq %r12,%r8
1126 adcq %r13,%r9
1127 adcq %r14,%r10
1128 adcq %r15,%r11
1129 movq %r8,64(%rsp)
1130 movq %r9,72(%rsp)
1131 movq %r10,80(%rsp)
1132 movq %r11,88(%rsp)
1133
1134
1135 movq 0+0(%rsp),%rdx
1136 mulxq 32+0(%rsp),%r9,%r8
1137 movq %r9,0+0(%rsp)
1138 mulxq 32+8(%rsp),%r10,%r9
1139 xorq %rax,%rax
1140 adoxq %r10,%r8
1141 mulxq 32+16(%rsp),%r11,%r10
1142 adoxq %r11,%r9
1143 mulxq 32+24(%rsp),%r12,%r11
1144 adoxq %r12,%r10
1145
1146 movq 0+8(%rsp),%rdx
1147 mulxq 32+0(%rsp),%r12,%r13
1148 adoxq %rax,%r11
1149 xorq %rax,%rax
1150 mulxq 32+8(%rsp),%r15,%r14
1151 adoxq %r8,%r12
1152 movq %r12,0+8(%rsp)
1153 adcxq %r15,%r13
1154 mulxq 32+16(%rsp),%rbx,%r15
1155 adcxq %rbx,%r14
1156 adoxq %r9,%r13
1157 mulxq 32+24(%rsp),%rbp,%rbx
1158 adcxq %rbp,%r15
1159 adcxq %rax,%rbx
1160 adoxq %r10,%r14
1161
1162 movq 0+16(%rsp),%rdx
1163 mulxq 32+0(%rsp),%r8,%r9
1164 adoxq %r11,%r15
1165 adoxq %rax,%rbx
1166 xorq %rax,%rax
1167 mulxq 32+8(%rsp),%r11,%r10
1168 adoxq %r13,%r8
1169 movq %r8,0+16(%rsp)
1170 adcxq %r11,%r9
1171 mulxq 32+16(%rsp),%r12,%r11
1172 adcxq %r12,%r10
1173 adoxq %r14,%r9
1174 mulxq 32+24(%rsp),%rbp,%r12
1175 adcxq %rbp,%r11
1176 adcxq %rax,%r12
1177
1178 adoxq %r15,%r10
1179 adoxq %rbx,%r11
1180 adoxq %rax,%r12
1181
1182 movq 0+24(%rsp),%rdx
1183 mulxq 32+0(%rsp),%r8,%r13
1184 xorq %rax,%rax
1185 mulxq 32+8(%rsp),%r15,%r14
1186 adcxq %r15,%r13
1187 adoxq %r8,%r9
1188 mulxq 32+16(%rsp),%rbx,%r15
1189 adcxq %rbx,%r14
1190 adoxq %r13,%r10
1191 mulxq 32+24(%rsp),%rbp,%rbx
1192 adcxq %rbp,%r15
1193 adcxq %rax,%rbx
1194 adoxq %r14,%r11
1195 adoxq %r15,%r12
1196 adoxq %rax,%rbx
1197 movq %r9,0+24(%rsp)
1198 movq %r10,0+32(%rsp)
1199 movq %r11,0+40(%rsp)
1200 movq %r12,0+48(%rsp)
1201 movq %rbx,0+56(%rsp)
1202
1203
1204
1205 movq 0+0(%rdi),%rdx
1206 mulxq 0+0(%rsi),%r9,%r8
1207 movq %r9,0+0(%rcx)
1208 mulxq 0+8(%rsi),%r10,%r9
1209 xorq %rax,%rax
1210 adoxq %r10,%r8
1211 mulxq 0+16(%rsi),%r11,%r10
1212 adoxq %r11,%r9
1213 mulxq 0+24(%rsi),%r12,%r11
1214 adoxq %r12,%r10
1215
1216 movq 0+8(%rdi),%rdx
1217 mulxq 0+0(%rsi),%r12,%r13
1218 adoxq %rax,%r11
1219 xorq %rax,%rax
1220 mulxq 0+8(%rsi),%r15,%r14
1221 adoxq %r8,%r12
1222 movq %r12,0+8(%rcx)
1223 adcxq %r15,%r13
1224 mulxq 0+16(%rsi),%rbx,%r15
1225 adcxq %rbx,%r14
1226 adoxq %r9,%r13
1227 mulxq 0+24(%rsi),%rbp,%rbx
1228 adcxq %rbp,%r15
1229 adcxq %rax,%rbx
1230 adoxq %r10,%r14
1231
1232 movq 0+16(%rdi),%rdx
1233 mulxq 0+0(%rsi),%r8,%r9
1234 adoxq %r11,%r15
1235 adoxq %rax,%rbx
1236 xorq %rax,%rax
1237 mulxq 0+8(%rsi),%r11,%r10
1238 adoxq %r13,%r8
1239 movq %r8,0+16(%rcx)
1240 adcxq %r11,%r9
1241 mulxq 0+16(%rsi),%r12,%r11
1242 adcxq %r12,%r10
1243 adoxq %r14,%r9
1244 mulxq 0+24(%rsi),%rbp,%r12
1245 adcxq %rbp,%r11
1246 adcxq %rax,%r12
1247
1248 adoxq %r15,%r10
1249 adoxq %rbx,%r11
1250 adoxq %rax,%r12
1251
1252 movq 0+24(%rdi),%rdx
1253 mulxq 0+0(%rsi),%r8,%r13
1254 xorq %rax,%rax
1255 mulxq 0+8(%rsi),%r15,%r14
1256 adcxq %r15,%r13
1257 adoxq %r8,%r9
1258 mulxq 0+16(%rsi),%rbx,%r15
1259 adcxq %rbx,%r14
1260 adoxq %r13,%r10
1261 mulxq 0+24(%rsi),%rbp,%rbx
1262 adcxq %rbp,%r15
1263 adcxq %rax,%rbx
1264 adoxq %r14,%r11
1265 adoxq %r15,%r12
1266 adoxq %rax,%rbx
1267 movq %r9,0+24(%rcx)
1268 movq %r10,0+32(%rcx)
1269 movq %r11,0+40(%rcx)
1270 movq %r12,0+48(%rcx)
1271 movq %rbx,0+56(%rcx)
1272
1273
1274
1275 movq 32+0(%rdi),%rdx
1276 mulxq 32+0(%rsi),%r9,%r8
1277 movq %r9,64+0(%rcx)
1278 mulxq 32+8(%rsi),%r10,%r9
1279 xorq %rax,%rax
1280 adoxq %r10,%r8
1281 mulxq 32+16(%rsi),%r11,%r10
1282 adoxq %r11,%r9
1283
1284 movq 32+8(%rdi),%rdx
1285 mulxq 32+0(%rsi),%r12,%r11
1286 adoxq %rax,%r10
1287 xorq %rax,%rax
1288
1289 mulxq 32+8(%rsi),%r14,%r13
1290 adoxq %r8,%r12
1291 movq %r12,64+8(%rcx)
1292 adcxq %r14,%r11
1293
1294 mulxq 32+16(%rsi),%r8,%r14
1295 adoxq %r9,%r11
1296 adcxq %r8,%r13
1297 adcxq %rax,%r14
1298 adoxq %r10,%r13
1299
1300 movq 32+16(%rdi),%rdx
1301 mulxq 32+0(%rsi),%r8,%r9
1302 adoxq %rax,%r14
1303 xorq %rax,%rax
1304
1305 mulxq 32+8(%rsi),%r10,%r12
1306 adoxq %r11,%r8
1307 movq %r8,64+16(%rcx)
1308 adcxq %r13,%r9
1309
1310 mulxq 32+16(%rsi),%r11,%r8
1311 adcxq %r14,%r12
1312 adcxq %rax,%r8
1313 adoxq %r10,%r9
1314 adoxq %r12,%r11
1315 adoxq %rax,%r8
1316 movq %r9,64+24(%rcx)
1317 movq %r11,64+32(%rcx)
1318 movq %r8,64+40(%rcx)
1319
1320
1321
1322
1323 movq 64(%rsp),%r8
1324 movq 72(%rsp),%r9
1325 movq 80(%rsp),%r10
1326 movq 88(%rsp),%r11
1327
1328 movq 32(%rsp),%rax
1329 addq %rax,%r8
1330 movq 40(%rsp),%rax
1331 adcq %rax,%r9
1332 movq 48(%rsp),%rax
1333 adcq %rax,%r10
1334 movq 56(%rsp),%rax
1335 adcq %rax,%r11
1336
1337
1338 movq 0(%rsp),%r12
1339 movq 8(%rsp),%r13
1340 movq 16(%rsp),%r14
1341 movq 24(%rsp),%r15
1342 subq 0(%rcx),%r12
1343 sbbq 8(%rcx),%r13
1344 sbbq 16(%rcx),%r14
1345 sbbq 24(%rcx),%r15
1346 sbbq 32(%rcx),%r8
1347 sbbq 40(%rcx),%r9
1348 sbbq 48(%rcx),%r10
1349 sbbq 56(%rcx),%r11
1350
1351
1352 subq 64(%rcx),%r12
1353 sbbq 72(%rcx),%r13
1354 sbbq 80(%rcx),%r14
1355 sbbq 88(%rcx),%r15
1356 sbbq 96(%rcx),%r8
1357 sbbq 104(%rcx),%r9
1358 sbbq $0x0,%r10
1359 sbbq $0x0,%r11
1360
1361 addq 32(%rcx),%r12
1362 movq %r12,32(%rcx)
1363 adcq 40(%rcx),%r13
1364 movq %r13,40(%rcx)
1365 adcq 48(%rcx),%r14
1366 movq %r14,48(%rcx)
1367 adcq 56(%rcx),%r15
1368 movq %r15,56(%rcx)
1369 adcq 64(%rcx),%r8
1370 movq %r8,64(%rcx)
1371 adcq 72(%rcx),%r9
1372 movq %r9,72(%rcx)
1373 adcq 80(%rcx),%r10
1374 movq %r10,80(%rcx)
1375 adcq 88(%rcx),%r11
1376 movq %r11,88(%rcx)
1377 movq 96(%rcx),%r12
1378 adcq $0x0,%r12
1379 movq %r12,96(%rcx)
1380 movq 104(%rcx),%r13
1381 adcq $0x0,%r13
1382 movq %r13,104(%rcx)
1383
1384 addq $96,%rsp
1385
1386 popq %rbp
1387
1388
1389 popq %rbx
1390
1391
1392
1393
1394 popq %r15
1395
1396
1397 popq %r14
1398
1399
1400 popq %r13
1401
1402
1403 popq %r12
1404
1405
1406 .byte 0xf3,0xc3
1407
1408
1409.globl _sike_mpmul
1410.private_extern _sike_mpmul
1411
1412_sike_mpmul:
1413
1414 pushq %r12
1415
1416
1417 pushq %r13
1418
1419
1420 pushq %r14
1421
1422
1423 pushq %r15
1424
1425
1426
1427
1428
1429 leaq _OPENSSL_ia32cap_P(%rip),%rcx
1430 movq 8(%rcx),%rcx
1431 andl $0x80100,%ecx
1432 cmpl $0x80100,%ecx
1433 je L$mul_bdw
1434
1435
1436
1437 movq %rdx,%rcx
1438
1439 subq $112,%rsp
1440
1441
1442
1443 xorq %rax,%rax
1444 movq 32(%rdi),%r8
1445 movq 40(%rdi),%r9
1446 movq 48(%rdi),%r10
1447 xorq %r11,%r11
1448 addq 0(%rdi),%r8
1449 adcq 8(%rdi),%r9
1450 adcq 16(%rdi),%r10
1451 adcq 24(%rdi),%r11
1452
1453 sbbq $0,%rax
1454 movq %rax,64(%rsp)
1455
1456 movq %r8,0(%rcx)
1457 movq %r9,8(%rcx)
1458 movq %r10,16(%rcx)
1459 movq %r11,24(%rcx)
1460
1461
1462 xorq %rdx,%rdx
1463 movq 32(%rsi),%r12
1464 movq 40(%rsi),%r13
1465 movq 48(%rsi),%r14
1466 xorq %r15,%r15
1467 addq 0(%rsi),%r12
1468 adcq 8(%rsi),%r13
1469 adcq 16(%rsi),%r14
1470 adcq 24(%rsi),%r15
1471 sbbq $0x0,%rdx
1472
1473 movq %rdx,72(%rsp)
1474
1475
1476 movq (%rcx),%rax
1477 mulq %r12
1478 movq %rax,(%rsp)
1479 movq %rdx,%r8
1480
1481 xorq %r9,%r9
1482 movq (%rcx),%rax
1483 mulq %r13
1484 addq %rax,%r8
1485 adcq %rdx,%r9
1486
1487 xorq %r10,%r10
1488 movq 8(%rcx),%rax
1489 mulq %r12
1490 addq %rax,%r8
1491 movq %r8,8(%rsp)
1492 adcq %rdx,%r9
1493 adcq $0x0,%r10
1494
1495 xorq %r8,%r8
1496 movq (%rcx),%rax
1497 mulq %r14
1498 addq %rax,%r9
1499 adcq %rdx,%r10
1500 adcq $0x0,%r8
1501
1502 movq 16(%rcx),%rax
1503 mulq %r12
1504 addq %rax,%r9
1505 adcq %rdx,%r10
1506 adcq $0x0,%r8
1507
1508 movq 8(%rcx),%rax
1509 mulq %r13
1510 addq %rax,%r9
1511 movq %r9,16(%rsp)
1512 adcq %rdx,%r10
1513 adcq $0x0,%r8
1514
1515 xorq %r9,%r9
1516 movq (%rcx),%rax
1517 mulq %r15
1518 addq %rax,%r10
1519 adcq %rdx,%r8
1520 adcq $0x0,%r9
1521
1522 movq 24(%rcx),%rax
1523 mulq %r12
1524 addq %rax,%r10
1525 adcq %rdx,%r8
1526 adcq $0x0,%r9
1527
1528 movq 8(%rcx),%rax
1529 mulq %r14
1530 addq %rax,%r10
1531 adcq %rdx,%r8
1532 adcq $0x0,%r9
1533
1534 movq 16(%rcx),%rax
1535 mulq %r13
1536 addq %rax,%r10
1537 movq %r10,24(%rsp)
1538 adcq %rdx,%r8
1539 adcq $0x0,%r9
1540
1541 xorq %r10,%r10
1542 movq 8(%rcx),%rax
1543 mulq %r15
1544 addq %rax,%r8
1545 adcq %rdx,%r9
1546 adcq $0x0,%r10
1547
1548 movq 24(%rcx),%rax
1549 mulq %r13
1550 addq %rax,%r8
1551 adcq %rdx,%r9
1552 adcq $0x0,%r10
1553
1554 movq 16(%rcx),%rax
1555 mulq %r14
1556 addq %rax,%r8
1557 movq %r8,32(%rsp)
1558 adcq %rdx,%r9
1559 adcq $0x0,%r10
1560
1561 xorq %r11,%r11
1562 movq 16(%rcx),%rax
1563 mulq %r15
1564 addq %rax,%r9
1565 adcq %rdx,%r10
1566 adcq $0x0,%r11
1567
1568 movq 24(%rcx),%rax
1569 mulq %r14
1570 addq %rax,%r9
1571 movq %r9,40(%rsp)
1572 adcq %rdx,%r10
1573 adcq $0x0,%r11
1574
1575 movq 24(%rcx),%rax
1576 mulq %r15
1577 addq %rax,%r10
1578 movq %r10,48(%rsp)
1579 adcq %rdx,%r11
1580 movq %r11,56(%rsp)
1581
1582
1583 movq 64(%rsp),%rax
1584 andq %rax,%r12
1585 andq %rax,%r13
1586 andq %rax,%r14
1587 andq %rax,%r15
1588
1589
1590 movq 72(%rsp),%rax
1591 movq 0(%rcx),%r8
1592 andq %rax,%r8
1593 movq 8(%rcx),%r9
1594 andq %rax,%r9
1595 movq 16(%rcx),%r10
1596 andq %rax,%r10
1597 movq 24(%rcx),%r11
1598 andq %rax,%r11
1599
1600
1601 addq %r8,%r12
1602 adcq %r9,%r13
1603 adcq %r10,%r14
1604 adcq %r11,%r15
1605
1606
1607 movq 32(%rsp),%rax
1608 addq %rax,%r12
1609 movq 40(%rsp),%rax
1610 adcq %rax,%r13
1611 movq 48(%rsp),%rax
1612 adcq %rax,%r14
1613 movq 56(%rsp),%rax
1614 adcq %rax,%r15
1615 movq %r12,80(%rsp)
1616 movq %r13,88(%rsp)
1617 movq %r14,96(%rsp)
1618 movq %r15,104(%rsp)
1619
1620
1621 movq (%rdi),%r11
1622 movq (%rsi),%rax
1623 mulq %r11
1624 xorq %r9,%r9
1625 movq %rax,(%rcx)
1626 movq %rdx,%r8
1627
1628 movq 16(%rdi),%r14
1629 movq 8(%rsi),%rax
1630 mulq %r11
1631 xorq %r10,%r10
1632 addq %rax,%r8
1633 adcq %rdx,%r9
1634
1635 movq 8(%rdi),%r12
1636 movq (%rsi),%rax
1637 mulq %r12
1638 addq %rax,%r8
1639 movq %r8,8(%rcx)
1640 adcq %rdx,%r9
1641 adcq $0x0,%r10
1642
1643 xorq %r8,%r8
1644 movq 16(%rsi),%rax
1645 mulq %r11
1646 addq %rax,%r9
1647 adcq %rdx,%r10
1648 adcq $0x0,%r8
1649
1650 movq (%rsi),%r13
1651 movq %r14,%rax
1652 mulq %r13
1653 addq %rax,%r9
1654 adcq %rdx,%r10
1655 adcq $0x0,%r8
1656
1657 movq 8(%rsi),%rax
1658 mulq %r12
1659 addq %rax,%r9
1660 movq %r9,16(%rcx)
1661 adcq %rdx,%r10
1662 adcq $0x0,%r8
1663
1664 xorq %r9,%r9
1665 movq 24(%rsi),%rax
1666 mulq %r11
1667 movq 24(%rdi),%r15
1668 addq %rax,%r10
1669 adcq %rdx,%r8
1670 adcq $0x0,%r9
1671
1672 movq %r15,%rax
1673 mulq %r13
1674 addq %rax,%r10
1675 adcq %rdx,%r8
1676 adcq $0x0,%r9
1677
1678 movq 16(%rsi),%rax
1679 mulq %r12
1680 addq %rax,%r10
1681 adcq %rdx,%r8
1682 adcq $0x0,%r9
1683
1684 movq 8(%rsi),%rax
1685 mulq %r14
1686 addq %rax,%r10
1687 movq %r10,24(%rcx)
1688 adcq %rdx,%r8
1689 adcq $0x0,%r9
1690
1691 xorq %r10,%r10
1692 movq 24(%rsi),%rax
1693 mulq %r12
1694 addq %rax,%r8
1695 adcq %rdx,%r9
1696 adcq $0x0,%r10
1697
1698 movq 8(%rsi),%rax
1699 mulq %r15
1700 addq %rax,%r8
1701 adcq %rdx,%r9
1702 adcq $0x0,%r10
1703
1704 movq 16(%rsi),%rax
1705 mulq %r14
1706 addq %rax,%r8
1707 movq %r8,32(%rcx)
1708 adcq %rdx,%r9
1709 adcq $0x0,%r10
1710
1711 xorq %r8,%r8
1712 movq 24(%rsi),%rax
1713 mulq %r14
1714 addq %rax,%r9
1715 adcq %rdx,%r10
1716 adcq $0x0,%r8
1717
1718 movq 16(%rsi),%rax
1719 mulq %r15
1720 addq %rax,%r9
1721 movq %r9,40(%rcx)
1722 adcq %rdx,%r10
1723 adcq $0x0,%r8
1724
1725 movq 24(%rsi),%rax
1726 mulq %r15
1727 addq %rax,%r10
1728 movq %r10,48(%rcx)
1729 adcq %rdx,%r8
1730 movq %r8,56(%rcx)
1731
1732
1733
1734 movq 32(%rdi),%r11
1735 movq 32(%rsi),%rax
1736 mulq %r11
1737 xorq %r9,%r9
1738 movq %rax,64(%rcx)
1739 movq %rdx,%r8
1740
1741 movq 48(%rdi),%r14
1742 movq 40(%rsi),%rax
1743 mulq %r11
1744 xorq %r10,%r10
1745 addq %rax,%r8
1746 adcq %rdx,%r9
1747
1748 movq 40(%rdi),%r12
1749 movq 32(%rsi),%rax
1750 mulq %r12
1751 addq %rax,%r8
1752 movq %r8,72(%rcx)
1753 adcq %rdx,%r9
1754 adcq $0x0,%r10
1755
1756 xorq %r8,%r8
1757 movq 48(%rsi),%rax
1758 mulq %r11
1759 addq %rax,%r9
1760 adcq %rdx,%r10
1761 adcq $0x0,%r8
1762
1763 movq 32(%rsi),%r13
1764 movq %r14,%rax
1765 mulq %r13
1766 addq %rax,%r9
1767 adcq %rdx,%r10
1768 adcq $0x0,%r8
1769
1770 movq 40(%rsi),%rax
1771 mulq %r12
1772 addq %rax,%r9
1773 movq %r9,80(%rcx)
1774 adcq %rdx,%r10
1775 adcq $0x0,%r8
1776
1777 movq 48(%rsi),%rax
1778 mulq %r12
1779 xorq %r12,%r12
1780 addq %rax,%r10
1781 adcq %rdx,%r8
1782 adcq $0x0,%r12
1783
1784 movq 40(%rsi),%rax
1785 mulq %r14
1786 addq %rax,%r10
1787 adcq %rdx,%r8
1788 adcq $0x0,%r12
1789 movq %r10,88(%rcx)
1790
1791 movq 48(%rsi),%rax
1792 mulq %r14
1793 addq %rax,%r8
1794 adcq $0x0,%r12
1795 movq %r8,96(%rcx)
1796
1797 addq %r12,%rdx
1798
1799
1800 movq 0(%rsp),%r8
1801 subq 0(%rcx),%r8
1802 movq 8(%rsp),%r9
1803 sbbq 8(%rcx),%r9
1804 movq 16(%rsp),%r10
1805 sbbq 16(%rcx),%r10
1806 movq 24(%rsp),%r11
1807 sbbq 24(%rcx),%r11
1808 movq 80(%rsp),%r12
1809 sbbq 32(%rcx),%r12
1810 movq 88(%rsp),%r13
1811 sbbq 40(%rcx),%r13
1812 movq 96(%rsp),%r14
1813 sbbq 48(%rcx),%r14
1814 movq 104(%rsp),%r15
1815 sbbq 56(%rcx),%r15
1816
1817
1818 movq 64(%rcx),%rax
1819 subq %rax,%r8
1820 movq 72(%rcx),%rax
1821 sbbq %rax,%r9
1822 movq 80(%rcx),%rax
1823 sbbq %rax,%r10
1824 movq 88(%rcx),%rax
1825 sbbq %rax,%r11
1826 movq 96(%rcx),%rax
1827 sbbq %rax,%r12
1828 sbbq %rdx,%r13
1829 sbbq $0x0,%r14
1830 sbbq $0x0,%r15
1831
1832
1833 addq 32(%rcx),%r8
1834 movq %r8,32(%rcx)
1835 adcq 40(%rcx),%r9
1836 movq %r9,40(%rcx)
1837 adcq 48(%rcx),%r10
1838 movq %r10,48(%rcx)
1839 adcq 56(%rcx),%r11
1840 movq %r11,56(%rcx)
1841 adcq 64(%rcx),%r12
1842 movq %r12,64(%rcx)
1843 adcq 72(%rcx),%r13
1844 movq %r13,72(%rcx)
1845 adcq 80(%rcx),%r14
1846 movq %r14,80(%rcx)
1847 adcq 88(%rcx),%r15
1848 movq %r15,88(%rcx)
1849 movq 96(%rcx),%r12
1850 adcq $0x0,%r12
1851 movq %r12,96(%rcx)
1852 adcq $0x0,%rdx
1853 movq %rdx,104(%rcx)
1854
1855 addq $112,%rsp
1856
1857
1858
1859 popq %r15
1860
1861 popq %r14
1862
1863 popq %r13
1864
1865 popq %r12
1866
1867 .byte 0xf3,0xc3
1868
1869#endif