1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from x86-mont.pl. */
3 #ifdef PIC
4 .text
5 .globl bn_mul_mont
6 .type bn_mul_mont,@function
7 .align 16
8 bn_mul_mont:
9 .L_bn_mul_mont_begin:
10 pushl %ebp
11 pushl %ebx
12 pushl %esi
13 pushl %edi
14 xorl %eax,%eax
15 movl 40(%esp),%edi
16 cmpl $4,%edi
17 jl .L000just_leave
18 leal 20(%esp),%esi
19 leal 24(%esp),%edx
20 addl $2,%edi
21 negl %edi
22 leal -32(%esp,%edi,4),%ebp
23 negl %edi
24 movl %ebp,%eax
25 subl %edx,%eax
26 andl $2047,%eax
27 subl %eax,%ebp
28 xorl %ebp,%edx
29 andl $2048,%edx
30 xorl $2048,%edx
31 subl %edx,%ebp
32 andl $-64,%ebp
33 movl %esp,%eax
34 subl %ebp,%eax
35 andl $-4096,%eax
36 movl %esp,%edx
37 leal (%ebp,%eax,1),%esp
38 movl (%esp),%eax
39 cmpl %ebp,%esp
40 ja .L001page_walk
41 jmp .L002page_walk_done
42 .align 16
43 .L001page_walk:
44 leal -4096(%esp),%esp
45 movl (%esp),%eax
46 cmpl %ebp,%esp
47 ja .L001page_walk
48 .L002page_walk_done:
49 movl (%esi),%eax
50 movl 4(%esi),%ebx
51 movl 8(%esi),%ecx
52 movl 12(%esi),%ebp
53 movl 16(%esi),%esi
54 movl (%esi),%esi
55 movl %eax,4(%esp)
56 movl %ebx,8(%esp)
57 movl %ecx,12(%esp)
58 movl %ebp,16(%esp)
59 movl %esi,20(%esp)
60 leal -3(%edi),%ebx
61 movl %edx,24(%esp)
62 call .L003PIC_me_up
63 .L003PIC_me_up:
64 popl %eax
65 leal OPENSSL_ia32cap_P-.L003PIC_me_up(%eax),%eax
66 btl $26,(%eax)
67 jnc .L004non_sse2
68 movl $-1,%eax
69 movd %eax,%mm7
70 movl 8(%esp),%esi
71 movl 12(%esp),%edi
72 movl 16(%esp),%ebp
73 xorl %edx,%edx
74 xorl %ecx,%ecx
75 movd (%edi),%mm4
76 movd (%esi),%mm5
77 movd (%ebp),%mm3
78 pmuludq %mm4,%mm5
79 movq %mm5,%mm2
80 movq %mm5,%mm0
81 pand %mm7,%mm0
82 pmuludq 20(%esp),%mm5
83 pmuludq %mm5,%mm3
84 paddq %mm0,%mm3
85 movd 4(%ebp),%mm1
86 movd 4(%esi),%mm0
87 psrlq $32,%mm2
88 psrlq $32,%mm3
89 incl %ecx
90 .align 16
91 .L0051st:
92 pmuludq %mm4,%mm0
93 pmuludq %mm5,%mm1
94 paddq %mm0,%mm2
95 paddq %mm1,%mm3
96 movq %mm2,%mm0
97 pand %mm7,%mm0
98 movd 4(%ebp,%ecx,4),%mm1
99 paddq %mm0,%mm3
100 movd 4(%esi,%ecx,4),%mm0
101 psrlq $32,%mm2
102 movd %mm3,28(%esp,%ecx,4)
103 psrlq $32,%mm3
104 leal 1(%ecx),%ecx
105 cmpl %ebx,%ecx
106 jl .L0051st
107 pmuludq %mm4,%mm0
108 pmuludq %mm5,%mm1
109 paddq %mm0,%mm2
110 paddq %mm1,%mm3
111 movq %mm2,%mm0
112 pand %mm7,%mm0
113 paddq %mm0,%mm3
114 movd %mm3,28(%esp,%ecx,4)
115 psrlq $32,%mm2
116 psrlq $32,%mm3
117 paddq %mm2,%mm3
118 movq %mm3,32(%esp,%ebx,4)
119 incl %edx
120 .L006outer:
121 xorl %ecx,%ecx
122 movd (%edi,%edx,4),%mm4
123 movd (%esi),%mm5
124 movd 32(%esp),%mm6
125 movd (%ebp),%mm3
126 pmuludq %mm4,%mm5
127 paddq %mm6,%mm5
128 movq %mm5,%mm0
129 movq %mm5,%mm2
130 pand %mm7,%mm0
131 pmuludq 20(%esp),%mm5
132 pmuludq %mm5,%mm3
133 paddq %mm0,%mm3
134 movd 36(%esp),%mm6
135 movd 4(%ebp),%mm1
136 movd 4(%esi),%mm0
137 psrlq $32,%mm2
138 psrlq $32,%mm3
139 paddq %mm6,%mm2
140 incl %ecx
141 decl %ebx
142 .L007inner:
143 pmuludq %mm4,%mm0
144 pmuludq %mm5,%mm1
145 paddq %mm0,%mm2
146 paddq %mm1,%mm3
147 movq %mm2,%mm0
148 movd 36(%esp,%ecx,4),%mm6
149 pand %mm7,%mm0
150 movd 4(%ebp,%ecx,4),%mm1
151 paddq %mm0,%mm3
152 movd 4(%esi,%ecx,4),%mm0
153 psrlq $32,%mm2
154 movd %mm3,28(%esp,%ecx,4)
155 psrlq $32,%mm3
156 paddq %mm6,%mm2
157 decl %ebx
158 leal 1(%ecx),%ecx
159 jnz .L007inner
160 movl %ecx,%ebx
161 pmuludq %mm4,%mm0
162 pmuludq %mm5,%mm1
163 paddq %mm0,%mm2
164 paddq %mm1,%mm3
165 movq %mm2,%mm0
166 pand %mm7,%mm0
167 paddq %mm0,%mm3
168 movd %mm3,28(%esp,%ecx,4)
169 psrlq $32,%mm2
170 psrlq $32,%mm3
171 movd 36(%esp,%ebx,4),%mm6
172 paddq %mm2,%mm3
173 paddq %mm6,%mm3
174 movq %mm3,32(%esp,%ebx,4)
175 leal 1(%edx),%edx
176 cmpl %ebx,%edx
177 jle .L006outer
178 emms
179 jmp .L008common_tail
180 .align 16
181 .L004non_sse2:
182 movl 8(%esp),%esi
183 leal 1(%ebx),%ebp
184 movl 12(%esp),%edi
185 xorl %ecx,%ecx
186 movl %esi,%edx
187 andl $1,%ebp
188 subl %edi,%edx
189 leal 4(%edi,%ebx,4),%eax
190 orl %edx,%ebp
191 movl (%edi),%edi
192 jz .L009bn_sqr_mont
193 movl %eax,28(%esp)
194 movl (%esi),%eax
195 xorl %edx,%edx
196 .align 16
197 .L010mull:
198 movl %edx,%ebp
199 mull %edi
200 addl %eax,%ebp
201 leal 1(%ecx),%ecx
202 adcl $0,%edx
203 movl (%esi,%ecx,4),%eax
204 cmpl %ebx,%ecx
205 movl %ebp,28(%esp,%ecx,4)
206 jl .L010mull
207 movl %edx,%ebp
208 mull %edi
209 movl 20(%esp),%edi
210 addl %ebp,%eax
211 movl 16(%esp),%esi
212 adcl $0,%edx
213 imull 32(%esp),%edi
214 movl %eax,32(%esp,%ebx,4)
215 xorl %ecx,%ecx
216 movl %edx,36(%esp,%ebx,4)
217 movl %ecx,40(%esp,%ebx,4)
218 movl (%esi),%eax
219 mull %edi
220 addl 32(%esp),%eax
221 movl 4(%esi),%eax
222 adcl $0,%edx
223 incl %ecx
224 jmp .L0112ndmadd
225 .align 16
226 .L0121stmadd:
227 movl %edx,%ebp
228 mull %edi
229 addl 32(%esp,%ecx,4),%ebp
230 leal 1(%ecx),%ecx
231 adcl $0,%edx
232 addl %eax,%ebp
233 movl (%esi,%ecx,4),%eax
234 adcl $0,%edx
235 cmpl %ebx,%ecx
236 movl %ebp,28(%esp,%ecx,4)
237 jl .L0121stmadd
238 movl %edx,%ebp
239 mull %edi
240 addl 32(%esp,%ebx,4),%eax
241 movl 20(%esp),%edi
242 adcl $0,%edx
243 movl 16(%esp),%esi
244 addl %eax,%ebp
245 adcl $0,%edx
246 imull 32(%esp),%edi
247 xorl %ecx,%ecx
248 addl 36(%esp,%ebx,4),%edx
249 movl %ebp,32(%esp,%ebx,4)
250 adcl $0,%ecx
251 movl (%esi),%eax
252 movl %edx,36(%esp,%ebx,4)
253 movl %ecx,40(%esp,%ebx,4)
254 mull %edi
255 addl 32(%esp),%eax
256 movl 4(%esi),%eax
257 adcl $0,%edx
258 movl $1,%ecx
259 .align 16
260 .L0112ndmadd:
261 movl %edx,%ebp
262 mull %edi
263 addl 32(%esp,%ecx,4),%ebp
264 leal 1(%ecx),%ecx
265 adcl $0,%edx
266 addl %eax,%ebp
267 movl (%esi,%ecx,4),%eax
268 adcl $0,%edx
269 cmpl %ebx,%ecx
270 movl %ebp,24(%esp,%ecx,4)
271 jl .L0112ndmadd
272 movl %edx,%ebp
273 mull %edi
274 addl 32(%esp,%ebx,4),%ebp
275 adcl $0,%edx
276 addl %eax,%ebp
277 adcl $0,%edx
278 movl %ebp,28(%esp,%ebx,4)
279 xorl %eax,%eax
280 movl 12(%esp),%ecx
281 addl 36(%esp,%ebx,4),%edx
282 adcl 40(%esp,%ebx,4),%eax
283 leal 4(%ecx),%ecx
284 movl %edx,32(%esp,%ebx,4)
285 cmpl 28(%esp),%ecx
286 movl %eax,36(%esp,%ebx,4)
287 je .L008common_tail
288 movl (%ecx),%edi
289 movl 8(%esp),%esi
290 movl %ecx,12(%esp)
291 xorl %ecx,%ecx
292 xorl %edx,%edx
293 movl (%esi),%eax
294 jmp .L0121stmadd
295 .align 16
296 .L009bn_sqr_mont:
297 movl %ebx,(%esp)
298 movl %ecx,12(%esp)
299 movl %edi,%eax
300 mull %edi
301 movl %eax,32(%esp)
302 movl %edx,%ebx
303 shrl $1,%edx
304 andl $1,%ebx
305 incl %ecx
306 .align 16
307 .L013sqr:
308 movl (%esi,%ecx,4),%eax
309 movl %edx,%ebp
310 mull %edi
311 addl %ebp,%eax
312 leal 1(%ecx),%ecx
313 adcl $0,%edx
314 leal (%ebx,%eax,2),%ebp
315 shrl $31,%eax
316 cmpl (%esp),%ecx
317 movl %eax,%ebx
318 movl %ebp,28(%esp,%ecx,4)
319 jl .L013sqr
320 movl (%esi,%ecx,4),%eax
321 movl %edx,%ebp
322 mull %edi
323 addl %ebp,%eax
324 movl 20(%esp),%edi
325 adcl $0,%edx
326 movl 16(%esp),%esi
327 leal (%ebx,%eax,2),%ebp
328 imull 32(%esp),%edi
329 shrl $31,%eax
330 movl %ebp,32(%esp,%ecx,4)
331 leal (%eax,%edx,2),%ebp
332 movl (%esi),%eax
333 shrl $31,%edx
334 movl %ebp,36(%esp,%ecx,4)
335 movl %edx,40(%esp,%ecx,4)
336 mull %edi
337 addl 32(%esp),%eax
338 movl %ecx,%ebx
339 adcl $0,%edx
340 movl 4(%esi),%eax
341 movl $1,%ecx
342 .align 16
343 .L0143rdmadd:
344 movl %edx,%ebp
345 mull %edi
346 addl 32(%esp,%ecx,4),%ebp
347 adcl $0,%edx
348 addl %eax,%ebp
349 movl 4(%esi,%ecx,4),%eax
350 adcl $0,%edx
351 movl %ebp,28(%esp,%ecx,4)
352 movl %edx,%ebp
353 mull %edi
354 addl 36(%esp,%ecx,4),%ebp
355 leal 2(%ecx),%ecx
356 adcl $0,%edx
357 addl %eax,%ebp
358 movl (%esi,%ecx,4),%eax
359 adcl $0,%edx
360 cmpl %ebx,%ecx
361 movl %ebp,24(%esp,%ecx,4)
362 jl .L0143rdmadd
363 movl %edx,%ebp
364 mull %edi
365 addl 32(%esp,%ebx,4),%ebp
366 adcl $0,%edx
367 addl %eax,%ebp
368 adcl $0,%edx
369 movl %ebp,28(%esp,%ebx,4)
370 movl 12(%esp),%ecx
371 xorl %eax,%eax
372 movl 8(%esp),%esi
373 addl 36(%esp,%ebx,4),%edx
374 adcl 40(%esp,%ebx,4),%eax
375 movl %edx,32(%esp,%ebx,4)
376 cmpl %ebx,%ecx
377 movl %eax,36(%esp,%ebx,4)
378 je .L008common_tail
379 movl 4(%esi,%ecx,4),%edi
380 leal 1(%ecx),%ecx
381 movl %edi,%eax
382 movl %ecx,12(%esp)
383 mull %edi
384 addl 32(%esp,%ecx,4),%eax
385 adcl $0,%edx
386 movl %eax,32(%esp,%ecx,4)
387 xorl %ebp,%ebp
388 cmpl %ebx,%ecx
389 leal 1(%ecx),%ecx
390 je .L015sqrlast
391 movl %edx,%ebx
392 shrl $1,%edx
393 andl $1,%ebx
394 .align 16
395 .L016sqradd:
396 movl (%esi,%ecx,4),%eax
397 movl %edx,%ebp
398 mull %edi
399 addl %ebp,%eax
400 leal (%eax,%eax,1),%ebp
401 adcl $0,%edx
402 shrl $31,%eax
403 addl 32(%esp,%ecx,4),%ebp
404 leal 1(%ecx),%ecx
405 adcl $0,%eax
406 addl %ebx,%ebp
407 adcl $0,%eax
408 cmpl (%esp),%ecx
409 movl %ebp,28(%esp,%ecx,4)
410 movl %eax,%ebx
411 jle .L016sqradd
412 movl %edx,%ebp
413 addl %edx,%edx
414 shrl $31,%ebp
415 addl %ebx,%edx
416 adcl $0,%ebp
417 .L015sqrlast:
418 movl 20(%esp),%edi
419 movl 16(%esp),%esi
420 imull 32(%esp),%edi
421 addl 32(%esp,%ecx,4),%edx
422 movl (%esi),%eax
423 adcl $0,%ebp
424 movl %edx,32(%esp,%ecx,4)
425 movl %ebp,36(%esp,%ecx,4)
426 mull %edi
427 addl 32(%esp),%eax
428 leal -1(%ecx),%ebx
429 adcl $0,%edx
430 movl $1,%ecx
431 movl 4(%esi),%eax
432 jmp .L0143rdmadd
433 .align 16
434 .L008common_tail:
435 movl 16(%esp),%ebp
436 movl 4(%esp),%edi
437 leal 32(%esp),%esi
438 movl (%esi),%eax
439 movl %ebx,%ecx
440 xorl %edx,%edx
441 .align 16
442 .L017sub:
443 sbbl (%ebp,%edx,4),%eax
444 movl %eax,(%edi,%edx,4)
445 decl %ecx
446 movl 4(%esi,%edx,4),%eax
447 leal 1(%edx),%edx
448 jge .L017sub
449 sbbl $0,%eax
450 movl $-1,%edx
451 xorl %eax,%edx
452 jmp .L018copy
453 .align 16
454 .L018copy:
455 movl 32(%esp,%ebx,4),%esi
456 movl (%edi,%ebx,4),%ebp
457 movl %ecx,32(%esp,%ebx,4)
458 andl %eax,%esi
459 andl %edx,%ebp
460 orl %esi,%ebp
461 movl %ebp,(%edi,%ebx,4)
462 decl %ebx
463 jge .L018copy
464 movl 24(%esp),%esp
465 movl $1,%eax
466 .L000just_leave:
467 popl %edi
468 popl %esi
469 popl %ebx
470 popl %ebp
471 ret
472 .size bn_mul_mont,.-.L_bn_mul_mont_begin
473 .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
474 .byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
475 .byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
476 .byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
477 .byte 111,114,103,62,0
478 .comm OPENSSL_ia32cap_P,16,4
479 #else
480 .text
481 .globl bn_mul_mont
482 .type bn_mul_mont,@function
483 .align 16
484 bn_mul_mont:
485 .L_bn_mul_mont_begin:
486 pushl %ebp
487 pushl %ebx
488 pushl %esi
489 pushl %edi
490 xorl %eax,%eax
491 movl 40(%esp),%edi
492 cmpl $4,%edi
493 jl .L000just_leave
494 leal 20(%esp),%esi
495 leal 24(%esp),%edx
496 addl $2,%edi
497 negl %edi
498 leal -32(%esp,%edi,4),%ebp
499 negl %edi
500 movl %ebp,%eax
501 subl %edx,%eax
502 andl $2047,%eax
503 subl %eax,%ebp
504 xorl %ebp,%edx
505 andl $2048,%edx
506 xorl $2048,%edx
507 subl %edx,%ebp
508 andl $-64,%ebp
509 movl %esp,%eax
510 subl %ebp,%eax
511 andl $-4096,%eax
512 movl %esp,%edx
513 leal (%ebp,%eax,1),%esp
514 movl (%esp),%eax
515 cmpl %ebp,%esp
516 ja .L001page_walk
517 jmp .L002page_walk_done
518 .align 16
519 .L001page_walk:
520 leal -4096(%esp),%esp
521 movl (%esp),%eax
522 cmpl %ebp,%esp
523 ja .L001page_walk
524 .L002page_walk_done:
525 movl (%esi),%eax
526 movl 4(%esi),%ebx
527 movl 8(%esi),%ecx
528 movl 12(%esi),%ebp
529 movl 16(%esi),%esi
530 movl (%esi),%esi
531 movl %eax,4(%esp)
532 movl %ebx,8(%esp)
533 movl %ecx,12(%esp)
534 movl %ebp,16(%esp)
535 movl %esi,20(%esp)
536 leal -3(%edi),%ebx
537 movl %edx,24(%esp)
538 leal OPENSSL_ia32cap_P,%eax
539 btl $26,(%eax)
540 jnc .L003non_sse2
541 movl $-1,%eax
542 movd %eax,%mm7
543 movl 8(%esp),%esi
544 movl 12(%esp),%edi
545 movl 16(%esp),%ebp
546 xorl %edx,%edx
547 xorl %ecx,%ecx
548 movd (%edi),%mm4
549 movd (%esi),%mm5
550 movd (%ebp),%mm3
551 pmuludq %mm4,%mm5
552 movq %mm5,%mm2
553 movq %mm5,%mm0
554 pand %mm7,%mm0
555 pmuludq 20(%esp),%mm5
556 pmuludq %mm5,%mm3
557 paddq %mm0,%mm3
558 movd 4(%ebp),%mm1
559 movd 4(%esi),%mm0
560 psrlq $32,%mm2
561 psrlq $32,%mm3
562 incl %ecx
563 .align 16
564 .L0041st:
565 pmuludq %mm4,%mm0
566 pmuludq %mm5,%mm1
567 paddq %mm0,%mm2
568 paddq %mm1,%mm3
569 movq %mm2,%mm0
570 pand %mm7,%mm0
571 movd 4(%ebp,%ecx,4),%mm1
572 paddq %mm0,%mm3
573 movd 4(%esi,%ecx,4),%mm0
574 psrlq $32,%mm2
575 movd %mm3,28(%esp,%ecx,4)
576 psrlq $32,%mm3
577 leal 1(%ecx),%ecx
578 cmpl %ebx,%ecx
579 jl .L0041st
580 pmuludq %mm4,%mm0
581 pmuludq %mm5,%mm1
582 paddq %mm0,%mm2
583 paddq %mm1,%mm3
584 movq %mm2,%mm0
585 pand %mm7,%mm0
586 paddq %mm0,%mm3
587 movd %mm3,28(%esp,%ecx,4)
588 psrlq $32,%mm2
589 psrlq $32,%mm3
590 paddq %mm2,%mm3
591 movq %mm3,32(%esp,%ebx,4)
592 incl %edx
593 .L005outer:
594 xorl %ecx,%ecx
595 movd (%edi,%edx,4),%mm4
596 movd (%esi),%mm5
597 movd 32(%esp),%mm6
598 movd (%ebp),%mm3
599 pmuludq %mm4,%mm5
600 paddq %mm6,%mm5
601 movq %mm5,%mm0
602 movq %mm5,%mm2
603 pand %mm7,%mm0
604 pmuludq 20(%esp),%mm5
605 pmuludq %mm5,%mm3
606 paddq %mm0,%mm3
607 movd 36(%esp),%mm6
608 movd 4(%ebp),%mm1
609 movd 4(%esi),%mm0
610 psrlq $32,%mm2
611 psrlq $32,%mm3
612 paddq %mm6,%mm2
613 incl %ecx
614 decl %ebx
615 .L006inner:
616 pmuludq %mm4,%mm0
617 pmuludq %mm5,%mm1
618 paddq %mm0,%mm2
619 paddq %mm1,%mm3
620 movq %mm2,%mm0
621 movd 36(%esp,%ecx,4),%mm6
622 pand %mm7,%mm0
623 movd 4(%ebp,%ecx,4),%mm1
624 paddq %mm0,%mm3
625 movd 4(%esi,%ecx,4),%mm0
626 psrlq $32,%mm2
627 movd %mm3,28(%esp,%ecx,4)
628 psrlq $32,%mm3
629 paddq %mm6,%mm2
630 decl %ebx
631 leal 1(%ecx),%ecx
632 jnz .L006inner
633 movl %ecx,%ebx
634 pmuludq %mm4,%mm0
635 pmuludq %mm5,%mm1
636 paddq %mm0,%mm2
637 paddq %mm1,%mm3
638 movq %mm2,%mm0
639 pand %mm7,%mm0
640 paddq %mm0,%mm3
641 movd %mm3,28(%esp,%ecx,4)
642 psrlq $32,%mm2
643 psrlq $32,%mm3
644 movd 36(%esp,%ebx,4),%mm6
645 paddq %mm2,%mm3
646 paddq %mm6,%mm3
647 movq %mm3,32(%esp,%ebx,4)
648 leal 1(%edx),%edx
649 cmpl %ebx,%edx
650 jle .L005outer
651 emms
652 jmp .L007common_tail
653 .align 16
654 .L003non_sse2:
655 movl 8(%esp),%esi
656 leal 1(%ebx),%ebp
657 movl 12(%esp),%edi
658 xorl %ecx,%ecx
659 movl %esi,%edx
660 andl $1,%ebp
661 subl %edi,%edx
662 leal 4(%edi,%ebx,4),%eax
663 orl %edx,%ebp
664 movl (%edi),%edi
665 jz .L008bn_sqr_mont
666 movl %eax,28(%esp)
667 movl (%esi),%eax
668 xorl %edx,%edx
669 .align 16
670 .L009mull:
671 movl %edx,%ebp
672 mull %edi
673 addl %eax,%ebp
674 leal 1(%ecx),%ecx
675 adcl $0,%edx
676 movl (%esi,%ecx,4),%eax
677 cmpl %ebx,%ecx
678 movl %ebp,28(%esp,%ecx,4)
679 jl .L009mull
680 movl %edx,%ebp
681 mull %edi
682 movl 20(%esp),%edi
683 addl %ebp,%eax
684 movl 16(%esp),%esi
685 adcl $0,%edx
686 imull 32(%esp),%edi
687 movl %eax,32(%esp,%ebx,4)
688 xorl %ecx,%ecx
689 movl %edx,36(%esp,%ebx,4)
690 movl %ecx,40(%esp,%ebx,4)
691 movl (%esi),%eax
692 mull %edi
693 addl 32(%esp),%eax
694 movl 4(%esi),%eax
695 adcl $0,%edx
696 incl %ecx
697 jmp .L0102ndmadd
698 .align 16
699 .L0111stmadd:
700 movl %edx,%ebp
701 mull %edi
702 addl 32(%esp,%ecx,4),%ebp
703 leal 1(%ecx),%ecx
704 adcl $0,%edx
705 addl %eax,%ebp
706 movl (%esi,%ecx,4),%eax
707 adcl $0,%edx
708 cmpl %ebx,%ecx
709 movl %ebp,28(%esp,%ecx,4)
710 jl .L0111stmadd
711 movl %edx,%ebp
712 mull %edi
713 addl 32(%esp,%ebx,4),%eax
714 movl 20(%esp),%edi
715 adcl $0,%edx
716 movl 16(%esp),%esi
717 addl %eax,%ebp
718 adcl $0,%edx
719 imull 32(%esp),%edi
720 xorl %ecx,%ecx
721 addl 36(%esp,%ebx,4),%edx
722 movl %ebp,32(%esp,%ebx,4)
723 adcl $0,%ecx
724 movl (%esi),%eax
725 movl %edx,36(%esp,%ebx,4)
726 movl %ecx,40(%esp,%ebx,4)
727 mull %edi
728 addl 32(%esp),%eax
729 movl 4(%esi),%eax
730 adcl $0,%edx
731 movl $1,%ecx
732 .align 16
733 .L0102ndmadd:
734 movl %edx,%ebp
735 mull %edi
736 addl 32(%esp,%ecx,4),%ebp
737 leal 1(%ecx),%ecx
738 adcl $0,%edx
739 addl %eax,%ebp
740 movl (%esi,%ecx,4),%eax
741 adcl $0,%edx
742 cmpl %ebx,%ecx
743 movl %ebp,24(%esp,%ecx,4)
744 jl .L0102ndmadd
745 movl %edx,%ebp
746 mull %edi
747 addl 32(%esp,%ebx,4),%ebp
748 adcl $0,%edx
749 addl %eax,%ebp
750 adcl $0,%edx
751 movl %ebp,28(%esp,%ebx,4)
752 xorl %eax,%eax
753 movl 12(%esp),%ecx
754 addl 36(%esp,%ebx,4),%edx
755 adcl 40(%esp,%ebx,4),%eax
756 leal 4(%ecx),%ecx
757 movl %edx,32(%esp,%ebx,4)
758 cmpl 28(%esp),%ecx
759 movl %eax,36(%esp,%ebx,4)
760 je .L007common_tail
761 movl (%ecx),%edi
762 movl 8(%esp),%esi
763 movl %ecx,12(%esp)
764 xorl %ecx,%ecx
765 xorl %edx,%edx
766 movl (%esi),%eax
767 jmp .L0111stmadd
768 .align 16
769 .L008bn_sqr_mont:
770 movl %ebx,(%esp)
771 movl %ecx,12(%esp)
772 movl %edi,%eax
773 mull %edi
774 movl %eax,32(%esp)
775 movl %edx,%ebx
776 shrl $1,%edx
777 andl $1,%ebx
778 incl %ecx
779 .align 16
780 .L012sqr:
781 movl (%esi,%ecx,4),%eax
782 movl %edx,%ebp
783 mull %edi
784 addl %ebp,%eax
785 leal 1(%ecx),%ecx
786 adcl $0,%edx
787 leal (%ebx,%eax,2),%ebp
788 shrl $31,%eax
789 cmpl (%esp),%ecx
790 movl %eax,%ebx
791 movl %ebp,28(%esp,%ecx,4)
792 jl .L012sqr
793 movl (%esi,%ecx,4),%eax
794 movl %edx,%ebp
795 mull %edi
796 addl %ebp,%eax
797 movl 20(%esp),%edi
798 adcl $0,%edx
799 movl 16(%esp),%esi
800 leal (%ebx,%eax,2),%ebp
801 imull 32(%esp),%edi
802 shrl $31,%eax
803 movl %ebp,32(%esp,%ecx,4)
804 leal (%eax,%edx,2),%ebp
805 movl (%esi),%eax
806 shrl $31,%edx
807 movl %ebp,36(%esp,%ecx,4)
808 movl %edx,40(%esp,%ecx,4)
809 mull %edi
810 addl 32(%esp),%eax
811 movl %ecx,%ebx
812 adcl $0,%edx
813 movl 4(%esi),%eax
814 movl $1,%ecx
815 .align 16
816 .L0133rdmadd:
817 movl %edx,%ebp
818 mull %edi
819 addl 32(%esp,%ecx,4),%ebp
820 adcl $0,%edx
821 addl %eax,%ebp
822 movl 4(%esi,%ecx,4),%eax
823 adcl $0,%edx
824 movl %ebp,28(%esp,%ecx,4)
825 movl %edx,%ebp
826 mull %edi
827 addl 36(%esp,%ecx,4),%ebp
828 leal 2(%ecx),%ecx
829 adcl $0,%edx
830 addl %eax,%ebp
831 movl (%esi,%ecx,4),%eax
832 adcl $0,%edx
833 cmpl %ebx,%ecx
834 movl %ebp,24(%esp,%ecx,4)
835 jl .L0133rdmadd
836 movl %edx,%ebp
837 mull %edi
838 addl 32(%esp,%ebx,4),%ebp
839 adcl $0,%edx
840 addl %eax,%ebp
841 adcl $0,%edx
842 movl %ebp,28(%esp,%ebx,4)
843 movl 12(%esp),%ecx
844 xorl %eax,%eax
845 movl 8(%esp),%esi
846 addl 36(%esp,%ebx,4),%edx
847 adcl 40(%esp,%ebx,4),%eax
848 movl %edx,32(%esp,%ebx,4)
849 cmpl %ebx,%ecx
850 movl %eax,36(%esp,%ebx,4)
851 je .L007common_tail
852 movl 4(%esi,%ecx,4),%edi
853 leal 1(%ecx),%ecx
854 movl %edi,%eax
855 movl %ecx,12(%esp)
856 mull %edi
857 addl 32(%esp,%ecx,4),%eax
858 adcl $0,%edx
859 movl %eax,32(%esp,%ecx,4)
860 xorl %ebp,%ebp
861 cmpl %ebx,%ecx
862 leal 1(%ecx),%ecx
863 je .L014sqrlast
864 movl %edx,%ebx
865 shrl $1,%edx
866 andl $1,%ebx
867 .align 16
868 .L015sqradd:
869 movl (%esi,%ecx,4),%eax
870 movl %edx,%ebp
871 mull %edi
872 addl %ebp,%eax
873 leal (%eax,%eax,1),%ebp
874 adcl $0,%edx
875 shrl $31,%eax
876 addl 32(%esp,%ecx,4),%ebp
877 leal 1(%ecx),%ecx
878 adcl $0,%eax
879 addl %ebx,%ebp
880 adcl $0,%eax
881 cmpl (%esp),%ecx
882 movl %ebp,28(%esp,%ecx,4)
883 movl %eax,%ebx
884 jle .L015sqradd
885 movl %edx,%ebp
886 addl %edx,%edx
887 shrl $31,%ebp
888 addl %ebx,%edx
889 adcl $0,%ebp
890 .L014sqrlast:
891 movl 20(%esp),%edi
892 movl 16(%esp),%esi
893 imull 32(%esp),%edi
894 addl 32(%esp,%ecx,4),%edx
895 movl (%esi),%eax
896 adcl $0,%ebp
897 movl %edx,32(%esp,%ecx,4)
898 movl %ebp,36(%esp,%ecx,4)
899 mull %edi
900 addl 32(%esp),%eax
901 leal -1(%ecx),%ebx
902 adcl $0,%edx
903 movl $1,%ecx
904 movl 4(%esi),%eax
905 jmp .L0133rdmadd
906 .align 16
907 .L007common_tail:
908 movl 16(%esp),%ebp
909 movl 4(%esp),%edi
910 leal 32(%esp),%esi
911 movl (%esi),%eax
912 movl %ebx,%ecx
913 xorl %edx,%edx
914 .align 16
915 .L016sub:
916 sbbl (%ebp,%edx,4),%eax
917 movl %eax,(%edi,%edx,4)
918 decl %ecx
919 movl 4(%esi,%edx,4),%eax
920 leal 1(%edx),%edx
921 jge .L016sub
922 sbbl $0,%eax
923 movl $-1,%edx
924 xorl %eax,%edx
925 jmp .L017copy
926 .align 16
927 .L017copy:
928 movl 32(%esp,%ebx,4),%esi
929 movl (%edi,%ebx,4),%ebp
930 movl %ecx,32(%esp,%ebx,4)
931 andl %eax,%esi
932 andl %edx,%ebp
933 orl %esi,%ebp
934 movl %ebp,(%edi,%ebx,4)
935 decl %ebx
936 jge .L017copy
937 movl 24(%esp),%esp
938 movl $1,%eax
939 .L000just_leave:
940 popl %edi
941 popl %esi
942 popl %ebx
943 popl %ebp
944 ret
945 .size bn_mul_mont,.-.L_bn_mul_mont_begin
946 .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
947 .byte 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
948 .byte 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
949 .byte 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
950 .byte 111,114,103,62,0
951 .comm OPENSSL_ia32cap_P,16,4
952 #endif
Cache object: 53c57dcc8428befd6c659a970fd7765c
|