VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.3/crypto/genasm-macosx/bn-586.S@ 102427

Last change on this file since 102427 was 97372, checked in by vboxsync, 2 years ago

libs: Switch to openssl-3.0.7, bugref:10317

File size: 21.6 KB
Line 
1.text
2.globl _bn_mul_add_words
3.align 4
4_bn_mul_add_words:
5L_bn_mul_add_words_begin:
6 #ifdef __CET__
7
8.byte 243,15,30,251
9 #endif
10
11 pushl %ebp
12 pushl %ebx
13 pushl %esi
14 pushl %edi
15
16 xorl %esi,%esi
17 movl 20(%esp),%edi
18 movl 28(%esp),%ecx
19 movl 24(%esp),%ebx
20 andl $4294967288,%ecx
21 movl 32(%esp),%ebp
22 pushl %ecx
23 jz L000maw_finish
24.align 4,0x90
25L001maw_loop:
26 # Round 0
27 movl (%ebx),%eax
28 mull %ebp
29 addl %esi,%eax
30 adcl $0,%edx
31 addl (%edi),%eax
32 adcl $0,%edx
33 movl %eax,(%edi)
34 movl %edx,%esi
35 # Round 4
36 movl 4(%ebx),%eax
37 mull %ebp
38 addl %esi,%eax
39 adcl $0,%edx
40 addl 4(%edi),%eax
41 adcl $0,%edx
42 movl %eax,4(%edi)
43 movl %edx,%esi
44 # Round 8
45 movl 8(%ebx),%eax
46 mull %ebp
47 addl %esi,%eax
48 adcl $0,%edx
49 addl 8(%edi),%eax
50 adcl $0,%edx
51 movl %eax,8(%edi)
52 movl %edx,%esi
53 # Round 12
54 movl 12(%ebx),%eax
55 mull %ebp
56 addl %esi,%eax
57 adcl $0,%edx
58 addl 12(%edi),%eax
59 adcl $0,%edx
60 movl %eax,12(%edi)
61 movl %edx,%esi
62 # Round 16
63 movl 16(%ebx),%eax
64 mull %ebp
65 addl %esi,%eax
66 adcl $0,%edx
67 addl 16(%edi),%eax
68 adcl $0,%edx
69 movl %eax,16(%edi)
70 movl %edx,%esi
71 # Round 20
72 movl 20(%ebx),%eax
73 mull %ebp
74 addl %esi,%eax
75 adcl $0,%edx
76 addl 20(%edi),%eax
77 adcl $0,%edx
78 movl %eax,20(%edi)
79 movl %edx,%esi
80 # Round 24
81 movl 24(%ebx),%eax
82 mull %ebp
83 addl %esi,%eax
84 adcl $0,%edx
85 addl 24(%edi),%eax
86 adcl $0,%edx
87 movl %eax,24(%edi)
88 movl %edx,%esi
89 # Round 28
90 movl 28(%ebx),%eax
91 mull %ebp
92 addl %esi,%eax
93 adcl $0,%edx
94 addl 28(%edi),%eax
95 adcl $0,%edx
96 movl %eax,28(%edi)
97 movl %edx,%esi
98
99 subl $8,%ecx
100 leal 32(%ebx),%ebx
101 leal 32(%edi),%edi
102 jnz L001maw_loop
103L000maw_finish:
104 movl 32(%esp),%ecx
105 andl $7,%ecx
106 jnz L002maw_finish2
107 jmp L003maw_end
108L002maw_finish2:
109 # Tail Round 0
110 movl (%ebx),%eax
111 mull %ebp
112 addl %esi,%eax
113 adcl $0,%edx
114 addl (%edi),%eax
115 adcl $0,%edx
116 decl %ecx
117 movl %eax,(%edi)
118 movl %edx,%esi
119 jz L003maw_end
120 # Tail Round 1
121 movl 4(%ebx),%eax
122 mull %ebp
123 addl %esi,%eax
124 adcl $0,%edx
125 addl 4(%edi),%eax
126 adcl $0,%edx
127 decl %ecx
128 movl %eax,4(%edi)
129 movl %edx,%esi
130 jz L003maw_end
131 # Tail Round 2
132 movl 8(%ebx),%eax
133 mull %ebp
134 addl %esi,%eax
135 adcl $0,%edx
136 addl 8(%edi),%eax
137 adcl $0,%edx
138 decl %ecx
139 movl %eax,8(%edi)
140 movl %edx,%esi
141 jz L003maw_end
142 # Tail Round 3
143 movl 12(%ebx),%eax
144 mull %ebp
145 addl %esi,%eax
146 adcl $0,%edx
147 addl 12(%edi),%eax
148 adcl $0,%edx
149 decl %ecx
150 movl %eax,12(%edi)
151 movl %edx,%esi
152 jz L003maw_end
153 # Tail Round 4
154 movl 16(%ebx),%eax
155 mull %ebp
156 addl %esi,%eax
157 adcl $0,%edx
158 addl 16(%edi),%eax
159 adcl $0,%edx
160 decl %ecx
161 movl %eax,16(%edi)
162 movl %edx,%esi
163 jz L003maw_end
164 # Tail Round 5
165 movl 20(%ebx),%eax
166 mull %ebp
167 addl %esi,%eax
168 adcl $0,%edx
169 addl 20(%edi),%eax
170 adcl $0,%edx
171 decl %ecx
172 movl %eax,20(%edi)
173 movl %edx,%esi
174 jz L003maw_end
175 # Tail Round 6
176 movl 24(%ebx),%eax
177 mull %ebp
178 addl %esi,%eax
179 adcl $0,%edx
180 addl 24(%edi),%eax
181 adcl $0,%edx
182 movl %eax,24(%edi)
183 movl %edx,%esi
184L003maw_end:
185 movl %esi,%eax
186 popl %ecx
187 popl %edi
188 popl %esi
189 popl %ebx
190 popl %ebp
191 ret
192.globl _bn_mul_words
193.align 4
194_bn_mul_words:
195L_bn_mul_words_begin:
196 #ifdef __CET__
197
198.byte 243,15,30,251
199 #endif
200
201 pushl %ebp
202 pushl %ebx
203 pushl %esi
204 pushl %edi
205
206 xorl %esi,%esi
207 movl 20(%esp),%edi
208 movl 24(%esp),%ebx
209 movl 28(%esp),%ebp
210 movl 32(%esp),%ecx
211 andl $4294967288,%ebp
212 jz L004mw_finish
213L005mw_loop:
214 # Round 0
215 movl (%ebx),%eax
216 mull %ecx
217 addl %esi,%eax
218 adcl $0,%edx
219 movl %eax,(%edi)
220 movl %edx,%esi
221 # Round 4
222 movl 4(%ebx),%eax
223 mull %ecx
224 addl %esi,%eax
225 adcl $0,%edx
226 movl %eax,4(%edi)
227 movl %edx,%esi
228 # Round 8
229 movl 8(%ebx),%eax
230 mull %ecx
231 addl %esi,%eax
232 adcl $0,%edx
233 movl %eax,8(%edi)
234 movl %edx,%esi
235 # Round 12
236 movl 12(%ebx),%eax
237 mull %ecx
238 addl %esi,%eax
239 adcl $0,%edx
240 movl %eax,12(%edi)
241 movl %edx,%esi
242 # Round 16
243 movl 16(%ebx),%eax
244 mull %ecx
245 addl %esi,%eax
246 adcl $0,%edx
247 movl %eax,16(%edi)
248 movl %edx,%esi
249 # Round 20
250 movl 20(%ebx),%eax
251 mull %ecx
252 addl %esi,%eax
253 adcl $0,%edx
254 movl %eax,20(%edi)
255 movl %edx,%esi
256 # Round 24
257 movl 24(%ebx),%eax
258 mull %ecx
259 addl %esi,%eax
260 adcl $0,%edx
261 movl %eax,24(%edi)
262 movl %edx,%esi
263 # Round 28
264 movl 28(%ebx),%eax
265 mull %ecx
266 addl %esi,%eax
267 adcl $0,%edx
268 movl %eax,28(%edi)
269 movl %edx,%esi
270
271 addl $32,%ebx
272 addl $32,%edi
273 subl $8,%ebp
274 jz L004mw_finish
275 jmp L005mw_loop
276L004mw_finish:
277 movl 28(%esp),%ebp
278 andl $7,%ebp
279 jnz L006mw_finish2
280 jmp L007mw_end
281L006mw_finish2:
282 # Tail Round 0
283 movl (%ebx),%eax
284 mull %ecx
285 addl %esi,%eax
286 adcl $0,%edx
287 movl %eax,(%edi)
288 movl %edx,%esi
289 decl %ebp
290 jz L007mw_end
291 # Tail Round 1
292 movl 4(%ebx),%eax
293 mull %ecx
294 addl %esi,%eax
295 adcl $0,%edx
296 movl %eax,4(%edi)
297 movl %edx,%esi
298 decl %ebp
299 jz L007mw_end
300 # Tail Round 2
301 movl 8(%ebx),%eax
302 mull %ecx
303 addl %esi,%eax
304 adcl $0,%edx
305 movl %eax,8(%edi)
306 movl %edx,%esi
307 decl %ebp
308 jz L007mw_end
309 # Tail Round 3
310 movl 12(%ebx),%eax
311 mull %ecx
312 addl %esi,%eax
313 adcl $0,%edx
314 movl %eax,12(%edi)
315 movl %edx,%esi
316 decl %ebp
317 jz L007mw_end
318 # Tail Round 4
319 movl 16(%ebx),%eax
320 mull %ecx
321 addl %esi,%eax
322 adcl $0,%edx
323 movl %eax,16(%edi)
324 movl %edx,%esi
325 decl %ebp
326 jz L007mw_end
327 # Tail Round 5
328 movl 20(%ebx),%eax
329 mull %ecx
330 addl %esi,%eax
331 adcl $0,%edx
332 movl %eax,20(%edi)
333 movl %edx,%esi
334 decl %ebp
335 jz L007mw_end
336 # Tail Round 6
337 movl 24(%ebx),%eax
338 mull %ecx
339 addl %esi,%eax
340 adcl $0,%edx
341 movl %eax,24(%edi)
342 movl %edx,%esi
343L007mw_end:
344 movl %esi,%eax
345 popl %edi
346 popl %esi
347 popl %ebx
348 popl %ebp
349 ret
350.globl _bn_sqr_words
351.align 4
352_bn_sqr_words:
353L_bn_sqr_words_begin:
354 #ifdef __CET__
355
356.byte 243,15,30,251
357 #endif
358
359 pushl %ebp
360 pushl %ebx
361 pushl %esi
362 pushl %edi
363
364 movl 20(%esp),%esi
365 movl 24(%esp),%edi
366 movl 28(%esp),%ebx
367 andl $4294967288,%ebx
368 jz L008sw_finish
369L009sw_loop:
370 # Round 0
371 movl (%edi),%eax
372 mull %eax
373 movl %eax,(%esi)
374 movl %edx,4(%esi)
375 # Round 4
376 movl 4(%edi),%eax
377 mull %eax
378 movl %eax,8(%esi)
379 movl %edx,12(%esi)
380 # Round 8
381 movl 8(%edi),%eax
382 mull %eax
383 movl %eax,16(%esi)
384 movl %edx,20(%esi)
385 # Round 12
386 movl 12(%edi),%eax
387 mull %eax
388 movl %eax,24(%esi)
389 movl %edx,28(%esi)
390 # Round 16
391 movl 16(%edi),%eax
392 mull %eax
393 movl %eax,32(%esi)
394 movl %edx,36(%esi)
395 # Round 20
396 movl 20(%edi),%eax
397 mull %eax
398 movl %eax,40(%esi)
399 movl %edx,44(%esi)
400 # Round 24
401 movl 24(%edi),%eax
402 mull %eax
403 movl %eax,48(%esi)
404 movl %edx,52(%esi)
405 # Round 28
406 movl 28(%edi),%eax
407 mull %eax
408 movl %eax,56(%esi)
409 movl %edx,60(%esi)
410
411 addl $32,%edi
412 addl $64,%esi
413 subl $8,%ebx
414 jnz L009sw_loop
415L008sw_finish:
416 movl 28(%esp),%ebx
417 andl $7,%ebx
418 jz L010sw_end
419 # Tail Round 0
420 movl (%edi),%eax
421 mull %eax
422 movl %eax,(%esi)
423 decl %ebx
424 movl %edx,4(%esi)
425 jz L010sw_end
426 # Tail Round 1
427 movl 4(%edi),%eax
428 mull %eax
429 movl %eax,8(%esi)
430 decl %ebx
431 movl %edx,12(%esi)
432 jz L010sw_end
433 # Tail Round 2
434 movl 8(%edi),%eax
435 mull %eax
436 movl %eax,16(%esi)
437 decl %ebx
438 movl %edx,20(%esi)
439 jz L010sw_end
440 # Tail Round 3
441 movl 12(%edi),%eax
442 mull %eax
443 movl %eax,24(%esi)
444 decl %ebx
445 movl %edx,28(%esi)
446 jz L010sw_end
447 # Tail Round 4
448 movl 16(%edi),%eax
449 mull %eax
450 movl %eax,32(%esi)
451 decl %ebx
452 movl %edx,36(%esi)
453 jz L010sw_end
454 # Tail Round 5
455 movl 20(%edi),%eax
456 mull %eax
457 movl %eax,40(%esi)
458 decl %ebx
459 movl %edx,44(%esi)
460 jz L010sw_end
461 # Tail Round 6
462 movl 24(%edi),%eax
463 mull %eax
464 movl %eax,48(%esi)
465 movl %edx,52(%esi)
466L010sw_end:
467 popl %edi
468 popl %esi
469 popl %ebx
470 popl %ebp
471 ret
472.globl _bn_div_words
473.align 4
474_bn_div_words:
475L_bn_div_words_begin:
476 #ifdef __CET__
477
478.byte 243,15,30,251
479 #endif
480
481 movl 4(%esp),%edx
482 movl 8(%esp),%eax
483 movl 12(%esp),%ecx
484 divl %ecx
485 ret
486.globl _bn_add_words
487.align 4
488_bn_add_words:
489L_bn_add_words_begin:
490 #ifdef __CET__
491
492.byte 243,15,30,251
493 #endif
494
495 pushl %ebp
496 pushl %ebx
497 pushl %esi
498 pushl %edi
499
500 movl 20(%esp),%ebx
501 movl 24(%esp),%esi
502 movl 28(%esp),%edi
503 movl 32(%esp),%ebp
504 xorl %eax,%eax
505 andl $4294967288,%ebp
506 jz L011aw_finish
507L012aw_loop:
508 # Round 0
509 movl (%esi),%ecx
510 movl (%edi),%edx
511 addl %eax,%ecx
512 movl $0,%eax
513 adcl %eax,%eax
514 addl %edx,%ecx
515 adcl $0,%eax
516 movl %ecx,(%ebx)
517 # Round 1
518 movl 4(%esi),%ecx
519 movl 4(%edi),%edx
520 addl %eax,%ecx
521 movl $0,%eax
522 adcl %eax,%eax
523 addl %edx,%ecx
524 adcl $0,%eax
525 movl %ecx,4(%ebx)
526 # Round 2
527 movl 8(%esi),%ecx
528 movl 8(%edi),%edx
529 addl %eax,%ecx
530 movl $0,%eax
531 adcl %eax,%eax
532 addl %edx,%ecx
533 adcl $0,%eax
534 movl %ecx,8(%ebx)
535 # Round 3
536 movl 12(%esi),%ecx
537 movl 12(%edi),%edx
538 addl %eax,%ecx
539 movl $0,%eax
540 adcl %eax,%eax
541 addl %edx,%ecx
542 adcl $0,%eax
543 movl %ecx,12(%ebx)
544 # Round 4
545 movl 16(%esi),%ecx
546 movl 16(%edi),%edx
547 addl %eax,%ecx
548 movl $0,%eax
549 adcl %eax,%eax
550 addl %edx,%ecx
551 adcl $0,%eax
552 movl %ecx,16(%ebx)
553 # Round 5
554 movl 20(%esi),%ecx
555 movl 20(%edi),%edx
556 addl %eax,%ecx
557 movl $0,%eax
558 adcl %eax,%eax
559 addl %edx,%ecx
560 adcl $0,%eax
561 movl %ecx,20(%ebx)
562 # Round 6
563 movl 24(%esi),%ecx
564 movl 24(%edi),%edx
565 addl %eax,%ecx
566 movl $0,%eax
567 adcl %eax,%eax
568 addl %edx,%ecx
569 adcl $0,%eax
570 movl %ecx,24(%ebx)
571 # Round 7
572 movl 28(%esi),%ecx
573 movl 28(%edi),%edx
574 addl %eax,%ecx
575 movl $0,%eax
576 adcl %eax,%eax
577 addl %edx,%ecx
578 adcl $0,%eax
579 movl %ecx,28(%ebx)
580
581 addl $32,%esi
582 addl $32,%edi
583 addl $32,%ebx
584 subl $8,%ebp
585 jnz L012aw_loop
586L011aw_finish:
587 movl 32(%esp),%ebp
588 andl $7,%ebp
589 jz L013aw_end
590 # Tail Round 0
591 movl (%esi),%ecx
592 movl (%edi),%edx
593 addl %eax,%ecx
594 movl $0,%eax
595 adcl %eax,%eax
596 addl %edx,%ecx
597 adcl $0,%eax
598 decl %ebp
599 movl %ecx,(%ebx)
600 jz L013aw_end
601 # Tail Round 1
602 movl 4(%esi),%ecx
603 movl 4(%edi),%edx
604 addl %eax,%ecx
605 movl $0,%eax
606 adcl %eax,%eax
607 addl %edx,%ecx
608 adcl $0,%eax
609 decl %ebp
610 movl %ecx,4(%ebx)
611 jz L013aw_end
612 # Tail Round 2
613 movl 8(%esi),%ecx
614 movl 8(%edi),%edx
615 addl %eax,%ecx
616 movl $0,%eax
617 adcl %eax,%eax
618 addl %edx,%ecx
619 adcl $0,%eax
620 decl %ebp
621 movl %ecx,8(%ebx)
622 jz L013aw_end
623 # Tail Round 3
624 movl 12(%esi),%ecx
625 movl 12(%edi),%edx
626 addl %eax,%ecx
627 movl $0,%eax
628 adcl %eax,%eax
629 addl %edx,%ecx
630 adcl $0,%eax
631 decl %ebp
632 movl %ecx,12(%ebx)
633 jz L013aw_end
634 # Tail Round 4
635 movl 16(%esi),%ecx
636 movl 16(%edi),%edx
637 addl %eax,%ecx
638 movl $0,%eax
639 adcl %eax,%eax
640 addl %edx,%ecx
641 adcl $0,%eax
642 decl %ebp
643 movl %ecx,16(%ebx)
644 jz L013aw_end
645 # Tail Round 5
646 movl 20(%esi),%ecx
647 movl 20(%edi),%edx
648 addl %eax,%ecx
649 movl $0,%eax
650 adcl %eax,%eax
651 addl %edx,%ecx
652 adcl $0,%eax
653 decl %ebp
654 movl %ecx,20(%ebx)
655 jz L013aw_end
656 # Tail Round 6
657 movl 24(%esi),%ecx
658 movl 24(%edi),%edx
659 addl %eax,%ecx
660 movl $0,%eax
661 adcl %eax,%eax
662 addl %edx,%ecx
663 adcl $0,%eax
664 movl %ecx,24(%ebx)
665L013aw_end:
666 popl %edi
667 popl %esi
668 popl %ebx
669 popl %ebp
670 ret
671.globl _bn_sub_words
672.align 4
673_bn_sub_words:
674L_bn_sub_words_begin:
675 #ifdef __CET__
676
677.byte 243,15,30,251
678 #endif
679
680 pushl %ebp
681 pushl %ebx
682 pushl %esi
683 pushl %edi
684
685 movl 20(%esp),%ebx
686 movl 24(%esp),%esi
687 movl 28(%esp),%edi
688 movl 32(%esp),%ebp
689 xorl %eax,%eax
690 andl $4294967288,%ebp
691 jz L014aw_finish
692L015aw_loop:
693 # Round 0
694 movl (%esi),%ecx
695 movl (%edi),%edx
696 subl %eax,%ecx
697 movl $0,%eax
698 adcl %eax,%eax
699 subl %edx,%ecx
700 adcl $0,%eax
701 movl %ecx,(%ebx)
702 # Round 1
703 movl 4(%esi),%ecx
704 movl 4(%edi),%edx
705 subl %eax,%ecx
706 movl $0,%eax
707 adcl %eax,%eax
708 subl %edx,%ecx
709 adcl $0,%eax
710 movl %ecx,4(%ebx)
711 # Round 2
712 movl 8(%esi),%ecx
713 movl 8(%edi),%edx
714 subl %eax,%ecx
715 movl $0,%eax
716 adcl %eax,%eax
717 subl %edx,%ecx
718 adcl $0,%eax
719 movl %ecx,8(%ebx)
720 # Round 3
721 movl 12(%esi),%ecx
722 movl 12(%edi),%edx
723 subl %eax,%ecx
724 movl $0,%eax
725 adcl %eax,%eax
726 subl %edx,%ecx
727 adcl $0,%eax
728 movl %ecx,12(%ebx)
729 # Round 4
730 movl 16(%esi),%ecx
731 movl 16(%edi),%edx
732 subl %eax,%ecx
733 movl $0,%eax
734 adcl %eax,%eax
735 subl %edx,%ecx
736 adcl $0,%eax
737 movl %ecx,16(%ebx)
738 # Round 5
739 movl 20(%esi),%ecx
740 movl 20(%edi),%edx
741 subl %eax,%ecx
742 movl $0,%eax
743 adcl %eax,%eax
744 subl %edx,%ecx
745 adcl $0,%eax
746 movl %ecx,20(%ebx)
747 # Round 6
748 movl 24(%esi),%ecx
749 movl 24(%edi),%edx
750 subl %eax,%ecx
751 movl $0,%eax
752 adcl %eax,%eax
753 subl %edx,%ecx
754 adcl $0,%eax
755 movl %ecx,24(%ebx)
756 # Round 7
757 movl 28(%esi),%ecx
758 movl 28(%edi),%edx
759 subl %eax,%ecx
760 movl $0,%eax
761 adcl %eax,%eax
762 subl %edx,%ecx
763 adcl $0,%eax
764 movl %ecx,28(%ebx)
765
766 addl $32,%esi
767 addl $32,%edi
768 addl $32,%ebx
769 subl $8,%ebp
770 jnz L015aw_loop
771L014aw_finish:
772 movl 32(%esp),%ebp
773 andl $7,%ebp
774 jz L016aw_end
775 # Tail Round 0
776 movl (%esi),%ecx
777 movl (%edi),%edx
778 subl %eax,%ecx
779 movl $0,%eax
780 adcl %eax,%eax
781 subl %edx,%ecx
782 adcl $0,%eax
783 decl %ebp
784 movl %ecx,(%ebx)
785 jz L016aw_end
786 # Tail Round 1
787 movl 4(%esi),%ecx
788 movl 4(%edi),%edx
789 subl %eax,%ecx
790 movl $0,%eax
791 adcl %eax,%eax
792 subl %edx,%ecx
793 adcl $0,%eax
794 decl %ebp
795 movl %ecx,4(%ebx)
796 jz L016aw_end
797 # Tail Round 2
798 movl 8(%esi),%ecx
799 movl 8(%edi),%edx
800 subl %eax,%ecx
801 movl $0,%eax
802 adcl %eax,%eax
803 subl %edx,%ecx
804 adcl $0,%eax
805 decl %ebp
806 movl %ecx,8(%ebx)
807 jz L016aw_end
808 # Tail Round 3
809 movl 12(%esi),%ecx
810 movl 12(%edi),%edx
811 subl %eax,%ecx
812 movl $0,%eax
813 adcl %eax,%eax
814 subl %edx,%ecx
815 adcl $0,%eax
816 decl %ebp
817 movl %ecx,12(%ebx)
818 jz L016aw_end
819 # Tail Round 4
820 movl 16(%esi),%ecx
821 movl 16(%edi),%edx
822 subl %eax,%ecx
823 movl $0,%eax
824 adcl %eax,%eax
825 subl %edx,%ecx
826 adcl $0,%eax
827 decl %ebp
828 movl %ecx,16(%ebx)
829 jz L016aw_end
830 # Tail Round 5
831 movl 20(%esi),%ecx
832 movl 20(%edi),%edx
833 subl %eax,%ecx
834 movl $0,%eax
835 adcl %eax,%eax
836 subl %edx,%ecx
837 adcl $0,%eax
838 decl %ebp
839 movl %ecx,20(%ebx)
840 jz L016aw_end
841 # Tail Round 6
842 movl 24(%esi),%ecx
843 movl 24(%edi),%edx
844 subl %eax,%ecx
845 movl $0,%eax
846 adcl %eax,%eax
847 subl %edx,%ecx
848 adcl $0,%eax
849 movl %ecx,24(%ebx)
850L016aw_end:
851 popl %edi
852 popl %esi
853 popl %ebx
854 popl %ebp
855 ret
856.globl _bn_sub_part_words
857.align 4
858_bn_sub_part_words:
859L_bn_sub_part_words_begin:
860 #ifdef __CET__
861
862.byte 243,15,30,251
863 #endif
864
865 pushl %ebp
866 pushl %ebx
867 pushl %esi
868 pushl %edi
869
870 movl 20(%esp),%ebx
871 movl 24(%esp),%esi
872 movl 28(%esp),%edi
873 movl 32(%esp),%ebp
874 xorl %eax,%eax
875 andl $4294967288,%ebp
876 jz L017aw_finish
877L018aw_loop:
878 # Round 0
879 movl (%esi),%ecx
880 movl (%edi),%edx
881 subl %eax,%ecx
882 movl $0,%eax
883 adcl %eax,%eax
884 subl %edx,%ecx
885 adcl $0,%eax
886 movl %ecx,(%ebx)
887 # Round 1
888 movl 4(%esi),%ecx
889 movl 4(%edi),%edx
890 subl %eax,%ecx
891 movl $0,%eax
892 adcl %eax,%eax
893 subl %edx,%ecx
894 adcl $0,%eax
895 movl %ecx,4(%ebx)
896 # Round 2
897 movl 8(%esi),%ecx
898 movl 8(%edi),%edx
899 subl %eax,%ecx
900 movl $0,%eax
901 adcl %eax,%eax
902 subl %edx,%ecx
903 adcl $0,%eax
904 movl %ecx,8(%ebx)
905 # Round 3
906 movl 12(%esi),%ecx
907 movl 12(%edi),%edx
908 subl %eax,%ecx
909 movl $0,%eax
910 adcl %eax,%eax
911 subl %edx,%ecx
912 adcl $0,%eax
913 movl %ecx,12(%ebx)
914 # Round 4
915 movl 16(%esi),%ecx
916 movl 16(%edi),%edx
917 subl %eax,%ecx
918 movl $0,%eax
919 adcl %eax,%eax
920 subl %edx,%ecx
921 adcl $0,%eax
922 movl %ecx,16(%ebx)
923 # Round 5
924 movl 20(%esi),%ecx
925 movl 20(%edi),%edx
926 subl %eax,%ecx
927 movl $0,%eax
928 adcl %eax,%eax
929 subl %edx,%ecx
930 adcl $0,%eax
931 movl %ecx,20(%ebx)
932 # Round 6
933 movl 24(%esi),%ecx
934 movl 24(%edi),%edx
935 subl %eax,%ecx
936 movl $0,%eax
937 adcl %eax,%eax
938 subl %edx,%ecx
939 adcl $0,%eax
940 movl %ecx,24(%ebx)
941 # Round 7
942 movl 28(%esi),%ecx
943 movl 28(%edi),%edx
944 subl %eax,%ecx
945 movl $0,%eax
946 adcl %eax,%eax
947 subl %edx,%ecx
948 adcl $0,%eax
949 movl %ecx,28(%ebx)
950
951 addl $32,%esi
952 addl $32,%edi
953 addl $32,%ebx
954 subl $8,%ebp
955 jnz L018aw_loop
956L017aw_finish:
957 movl 32(%esp),%ebp
958 andl $7,%ebp
959 jz L019aw_end
960 # Tail Round 0
961 movl (%esi),%ecx
962 movl (%edi),%edx
963 subl %eax,%ecx
964 movl $0,%eax
965 adcl %eax,%eax
966 subl %edx,%ecx
967 adcl $0,%eax
968 movl %ecx,(%ebx)
969 addl $4,%esi
970 addl $4,%edi
971 addl $4,%ebx
972 decl %ebp
973 jz L019aw_end
974 # Tail Round 1
975 movl (%esi),%ecx
976 movl (%edi),%edx
977 subl %eax,%ecx
978 movl $0,%eax
979 adcl %eax,%eax
980 subl %edx,%ecx
981 adcl $0,%eax
982 movl %ecx,(%ebx)
983 addl $4,%esi
984 addl $4,%edi
985 addl $4,%ebx
986 decl %ebp
987 jz L019aw_end
988 # Tail Round 2
989 movl (%esi),%ecx
990 movl (%edi),%edx
991 subl %eax,%ecx
992 movl $0,%eax
993 adcl %eax,%eax
994 subl %edx,%ecx
995 adcl $0,%eax
996 movl %ecx,(%ebx)
997 addl $4,%esi
998 addl $4,%edi
999 addl $4,%ebx
1000 decl %ebp
1001 jz L019aw_end
1002 # Tail Round 3
1003 movl (%esi),%ecx
1004 movl (%edi),%edx
1005 subl %eax,%ecx
1006 movl $0,%eax
1007 adcl %eax,%eax
1008 subl %edx,%ecx
1009 adcl $0,%eax
1010 movl %ecx,(%ebx)
1011 addl $4,%esi
1012 addl $4,%edi
1013 addl $4,%ebx
1014 decl %ebp
1015 jz L019aw_end
1016 # Tail Round 4
1017 movl (%esi),%ecx
1018 movl (%edi),%edx
1019 subl %eax,%ecx
1020 movl $0,%eax
1021 adcl %eax,%eax
1022 subl %edx,%ecx
1023 adcl $0,%eax
1024 movl %ecx,(%ebx)
1025 addl $4,%esi
1026 addl $4,%edi
1027 addl $4,%ebx
1028 decl %ebp
1029 jz L019aw_end
1030 # Tail Round 5
1031 movl (%esi),%ecx
1032 movl (%edi),%edx
1033 subl %eax,%ecx
1034 movl $0,%eax
1035 adcl %eax,%eax
1036 subl %edx,%ecx
1037 adcl $0,%eax
1038 movl %ecx,(%ebx)
1039 addl $4,%esi
1040 addl $4,%edi
1041 addl $4,%ebx
1042 decl %ebp
1043 jz L019aw_end
1044 # Tail Round 6
1045 movl (%esi),%ecx
1046 movl (%edi),%edx
1047 subl %eax,%ecx
1048 movl $0,%eax
1049 adcl %eax,%eax
1050 subl %edx,%ecx
1051 adcl $0,%eax
1052 movl %ecx,(%ebx)
1053 addl $4,%esi
1054 addl $4,%edi
1055 addl $4,%ebx
1056L019aw_end:
1057 cmpl $0,36(%esp)
1058 je L020pw_end
1059 movl 36(%esp),%ebp
1060 cmpl $0,%ebp
1061 je L020pw_end
1062 jge L021pw_pos
1063 # pw_neg
1064 movl $0,%edx
1065 subl %ebp,%edx
1066 movl %edx,%ebp
1067 andl $4294967288,%ebp
1068 jz L022pw_neg_finish
1069L023pw_neg_loop:
1070 # dl<0 Round 0
1071 movl $0,%ecx
1072 movl (%edi),%edx
1073 subl %eax,%ecx
1074 movl $0,%eax
1075 adcl %eax,%eax
1076 subl %edx,%ecx
1077 adcl $0,%eax
1078 movl %ecx,(%ebx)
1079 # dl<0 Round 1
1080 movl $0,%ecx
1081 movl 4(%edi),%edx
1082 subl %eax,%ecx
1083 movl $0,%eax
1084 adcl %eax,%eax
1085 subl %edx,%ecx
1086 adcl $0,%eax
1087 movl %ecx,4(%ebx)
1088 # dl<0 Round 2
1089 movl $0,%ecx
1090 movl 8(%edi),%edx
1091 subl %eax,%ecx
1092 movl $0,%eax
1093 adcl %eax,%eax
1094 subl %edx,%ecx
1095 adcl $0,%eax
1096 movl %ecx,8(%ebx)
1097 # dl<0 Round 3
1098 movl $0,%ecx
1099 movl 12(%edi),%edx
1100 subl %eax,%ecx
1101 movl $0,%eax
1102 adcl %eax,%eax
1103 subl %edx,%ecx
1104 adcl $0,%eax
1105 movl %ecx,12(%ebx)
1106 # dl<0 Round 4
1107 movl $0,%ecx
1108 movl 16(%edi),%edx
1109 subl %eax,%ecx
1110 movl $0,%eax
1111 adcl %eax,%eax
1112 subl %edx,%ecx
1113 adcl $0,%eax
1114 movl %ecx,16(%ebx)
1115 # dl<0 Round 5
1116 movl $0,%ecx
1117 movl 20(%edi),%edx
1118 subl %eax,%ecx
1119 movl $0,%eax
1120 adcl %eax,%eax
1121 subl %edx,%ecx
1122 adcl $0,%eax
1123 movl %ecx,20(%ebx)
1124 # dl<0 Round 6
1125 movl $0,%ecx
1126 movl 24(%edi),%edx
1127 subl %eax,%ecx
1128 movl $0,%eax
1129 adcl %eax,%eax
1130 subl %edx,%ecx
1131 adcl $0,%eax
1132 movl %ecx,24(%ebx)
1133 # dl<0 Round 7
1134 movl $0,%ecx
1135 movl 28(%edi),%edx
1136 subl %eax,%ecx
1137 movl $0,%eax
1138 adcl %eax,%eax
1139 subl %edx,%ecx
1140 adcl $0,%eax
1141 movl %ecx,28(%ebx)
1142
1143 addl $32,%edi
1144 addl $32,%ebx
1145 subl $8,%ebp
1146 jnz L023pw_neg_loop
1147L022pw_neg_finish:
1148 movl 36(%esp),%edx
1149 movl $0,%ebp
1150 subl %edx,%ebp
1151 andl $7,%ebp
1152 jz L020pw_end
1153 # dl<0 Tail Round 0
1154 movl $0,%ecx
1155 movl (%edi),%edx
1156 subl %eax,%ecx
1157 movl $0,%eax
1158 adcl %eax,%eax
1159 subl %edx,%ecx
1160 adcl $0,%eax
1161 decl %ebp
1162 movl %ecx,(%ebx)
1163 jz L020pw_end
1164 # dl<0 Tail Round 1
1165 movl $0,%ecx
1166 movl 4(%edi),%edx
1167 subl %eax,%ecx
1168 movl $0,%eax
1169 adcl %eax,%eax
1170 subl %edx,%ecx
1171 adcl $0,%eax
1172 decl %ebp
1173 movl %ecx,4(%ebx)
1174 jz L020pw_end
1175 # dl<0 Tail Round 2
1176 movl $0,%ecx
1177 movl 8(%edi),%edx
1178 subl %eax,%ecx
1179 movl $0,%eax
1180 adcl %eax,%eax
1181 subl %edx,%ecx
1182 adcl $0,%eax
1183 decl %ebp
1184 movl %ecx,8(%ebx)
1185 jz L020pw_end
1186 # dl<0 Tail Round 3
1187 movl $0,%ecx
1188 movl 12(%edi),%edx
1189 subl %eax,%ecx
1190 movl $0,%eax
1191 adcl %eax,%eax
1192 subl %edx,%ecx
1193 adcl $0,%eax
1194 decl %ebp
1195 movl %ecx,12(%ebx)
1196 jz L020pw_end
1197 # dl<0 Tail Round 4
1198 movl $0,%ecx
1199 movl 16(%edi),%edx
1200 subl %eax,%ecx
1201 movl $0,%eax
1202 adcl %eax,%eax
1203 subl %edx,%ecx
1204 adcl $0,%eax
1205 decl %ebp
1206 movl %ecx,16(%ebx)
1207 jz L020pw_end
1208 # dl<0 Tail Round 5
1209 movl $0,%ecx
1210 movl 20(%edi),%edx
1211 subl %eax,%ecx
1212 movl $0,%eax
1213 adcl %eax,%eax
1214 subl %edx,%ecx
1215 adcl $0,%eax
1216 decl %ebp
1217 movl %ecx,20(%ebx)
1218 jz L020pw_end
1219 # dl<0 Tail Round 6
1220 movl $0,%ecx
1221 movl 24(%edi),%edx
1222 subl %eax,%ecx
1223 movl $0,%eax
1224 adcl %eax,%eax
1225 subl %edx,%ecx
1226 adcl $0,%eax
1227 movl %ecx,24(%ebx)
1228 jmp L020pw_end
1229L021pw_pos:
1230 andl $4294967288,%ebp
1231 jz L024pw_pos_finish
1232L025pw_pos_loop:
1233 # dl>0 Round 0
1234 movl (%esi),%ecx
1235 subl %eax,%ecx
1236 movl %ecx,(%ebx)
1237 jnc L026pw_nc0
1238 # dl>0 Round 1
1239 movl 4(%esi),%ecx
1240 subl %eax,%ecx
1241 movl %ecx,4(%ebx)
1242 jnc L027pw_nc1
1243 # dl>0 Round 2
1244 movl 8(%esi),%ecx
1245 subl %eax,%ecx
1246 movl %ecx,8(%ebx)
1247 jnc L028pw_nc2
1248 # dl>0 Round 3
1249 movl 12(%esi),%ecx
1250 subl %eax,%ecx
1251 movl %ecx,12(%ebx)
1252 jnc L029pw_nc3
1253 # dl>0 Round 4
1254 movl 16(%esi),%ecx
1255 subl %eax,%ecx
1256 movl %ecx,16(%ebx)
1257 jnc L030pw_nc4
1258 # dl>0 Round 5
1259 movl 20(%esi),%ecx
1260 subl %eax,%ecx
1261 movl %ecx,20(%ebx)
1262 jnc L031pw_nc5
1263 # dl>0 Round 6
1264 movl 24(%esi),%ecx
1265 subl %eax,%ecx
1266 movl %ecx,24(%ebx)
1267 jnc L032pw_nc6
1268 # dl>0 Round 7
1269 movl 28(%esi),%ecx
1270 subl %eax,%ecx
1271 movl %ecx,28(%ebx)
1272 jnc L033pw_nc7
1273
1274 addl $32,%esi
1275 addl $32,%ebx
1276 subl $8,%ebp
1277 jnz L025pw_pos_loop
1278L024pw_pos_finish:
1279 movl 36(%esp),%ebp
1280 andl $7,%ebp
1281 jz L020pw_end
1282 # dl>0 Tail Round 0
1283 movl (%esi),%ecx
1284 subl %eax,%ecx
1285 movl %ecx,(%ebx)
1286 jnc L034pw_tail_nc0
1287 decl %ebp
1288 jz L020pw_end
1289 # dl>0 Tail Round 1
1290 movl 4(%esi),%ecx
1291 subl %eax,%ecx
1292 movl %ecx,4(%ebx)
1293 jnc L035pw_tail_nc1
1294 decl %ebp
1295 jz L020pw_end
1296 # dl>0 Tail Round 2
1297 movl 8(%esi),%ecx
1298 subl %eax,%ecx
1299 movl %ecx,8(%ebx)
1300 jnc L036pw_tail_nc2
1301 decl %ebp
1302 jz L020pw_end
1303 # dl>0 Tail Round 3
1304 movl 12(%esi),%ecx
1305 subl %eax,%ecx
1306 movl %ecx,12(%ebx)
1307 jnc L037pw_tail_nc3
1308 decl %ebp
1309 jz L020pw_end
1310 # dl>0 Tail Round 4
1311 movl 16(%esi),%ecx
1312 subl %eax,%ecx
1313 movl %ecx,16(%ebx)
1314 jnc L038pw_tail_nc4
1315 decl %ebp
1316 jz L020pw_end
1317 # dl>0 Tail Round 5
1318 movl 20(%esi),%ecx
1319 subl %eax,%ecx
1320 movl %ecx,20(%ebx)
1321 jnc L039pw_tail_nc5
1322 decl %ebp
1323 jz L020pw_end
1324 # dl>0 Tail Round 6
1325 movl 24(%esi),%ecx
1326 subl %eax,%ecx
1327 movl %ecx,24(%ebx)
1328 jnc L040pw_tail_nc6
1329 movl $1,%eax
1330 jmp L020pw_end
1331L041pw_nc_loop:
1332 movl (%esi),%ecx
1333 movl %ecx,(%ebx)
1334L026pw_nc0:
1335 movl 4(%esi),%ecx
1336 movl %ecx,4(%ebx)
1337L027pw_nc1:
1338 movl 8(%esi),%ecx
1339 movl %ecx,8(%ebx)
1340L028pw_nc2:
1341 movl 12(%esi),%ecx
1342 movl %ecx,12(%ebx)
1343L029pw_nc3:
1344 movl 16(%esi),%ecx
1345 movl %ecx,16(%ebx)
1346L030pw_nc4:
1347 movl 20(%esi),%ecx
1348 movl %ecx,20(%ebx)
1349L031pw_nc5:
1350 movl 24(%esi),%ecx
1351 movl %ecx,24(%ebx)
1352L032pw_nc6:
1353 movl 28(%esi),%ecx
1354 movl %ecx,28(%ebx)
1355L033pw_nc7:
1356
1357 addl $32,%esi
1358 addl $32,%ebx
1359 subl $8,%ebp
1360 jnz L041pw_nc_loop
1361 movl 36(%esp),%ebp
1362 andl $7,%ebp
1363 jz L042pw_nc_end
1364 movl (%esi),%ecx
1365 movl %ecx,(%ebx)
1366L034pw_tail_nc0:
1367 decl %ebp
1368 jz L042pw_nc_end
1369 movl 4(%esi),%ecx
1370 movl %ecx,4(%ebx)
1371L035pw_tail_nc1:
1372 decl %ebp
1373 jz L042pw_nc_end
1374 movl 8(%esi),%ecx
1375 movl %ecx,8(%ebx)
1376L036pw_tail_nc2:
1377 decl %ebp
1378 jz L042pw_nc_end
1379 movl 12(%esi),%ecx
1380 movl %ecx,12(%ebx)
1381L037pw_tail_nc3:
1382 decl %ebp
1383 jz L042pw_nc_end
1384 movl 16(%esi),%ecx
1385 movl %ecx,16(%ebx)
1386L038pw_tail_nc4:
1387 decl %ebp
1388 jz L042pw_nc_end
1389 movl 20(%esi),%ecx
1390 movl %ecx,20(%ebx)
1391L039pw_tail_nc5:
1392 decl %ebp
1393 jz L042pw_nc_end
1394 movl 24(%esi),%ecx
1395 movl %ecx,24(%ebx)
1396L040pw_tail_nc6:
1397L042pw_nc_end:
1398 movl $0,%eax
1399L020pw_end:
1400 popl %edi
1401 popl %esi
1402 popl %ebx
1403 popl %ebp
1404 ret
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette