clarify the purpose of this project
[nyanglibc.git] / stdlib / mul_n.s
blob6f3332233a9c19b93cf5e172a71e3fbb5f2e5698
1 .text
2 .p2align 4,,15
3 .globl __mpn_impn_mul_n_basecase
4 .hidden __mpn_impn_mul_n_basecase
5 .type __mpn_impn_mul_n_basecase, @function
6 __mpn_impn_mul_n_basecase:
7 pushq %r15
8 pushq %r14
9 movq %rsi, %r14
10 pushq %r13
11 pushq %r12
12 movq %rcx, %r12
13 pushq %rbp
14 pushq %rbx
15 movq %rdx, %rbp
16 movq %rdi, %rbx
17 subq $8, %rsp
18 movq (%rdx), %rcx
19 cmpq $1, %rcx
20 ja .L2
21 je .L3
22 testq %r12, %r12
23 jle .L6
24 leaq (%rdi,%r12,8), %rdx
25 movq %rdi, %rax
26 .p2align 4,,10
27 .p2align 3
28 .L8:
29 movq $0, (%rax)
30 addq $8, %rax
31 cmpq %rax, %rdx
32 jne .L8
33 .L6:
34 xorl %eax, %eax
35 .L5:
36 leaq 0(,%r12,8), %r15
37 leaq (%rbx,%r15), %r13
38 addq $8, %rbx
39 cmpq $1, %r12
40 movq %rax, 0(%r13)
41 jle .L1
42 addq $8, %rbp
43 jmp .L12
44 .p2align 4,,10
45 .p2align 3
46 .L20:
47 movl $0, %eax
48 je .L19
49 .L11:
50 movq %rax, (%rbx,%r15)
51 addq $8, %rbx
52 addq $8, %rbp
53 cmpq %rbx, %r13
54 je .L1
55 .L12:
56 movq 0(%rbp), %rcx
57 cmpq $1, %rcx
58 jbe .L20
59 movq %r12, %rdx
60 movq %r14, %rsi
61 movq %rbx, %rdi
62 call __mpn_addmul_1
63 jmp .L11
64 .p2align 4,,10
65 .p2align 3
66 .L1:
67 addq $8, %rsp
68 popq %rbx
69 popq %rbp
70 popq %r12
71 popq %r13
72 popq %r14
73 popq %r15
74 ret
75 .p2align 4,,10
76 .p2align 3
77 .L19:
78 movq %r12, %rcx
79 movq %r14, %rdx
80 movq %rbx, %rsi
81 movq %rbx, %rdi
82 call __mpn_add_n
83 jmp .L11
84 .p2align 4,,10
85 .p2align 3
86 .L2:
87 movq %r12, %rdx
88 call __mpn_mul_1
89 jmp .L5
90 .p2align 4,,10
91 .p2align 3
92 .L3:
93 testq %r12, %r12
94 jle .L6
95 xorl %eax, %eax
96 .p2align 4,,10
97 .p2align 3
98 .L7:
99 movq (%r14,%rax,8), %rdx
100 movq %rdx, (%rbx,%rax,8)
101 addq $1, %rax
102 cmpq %rax, %r12
103 jne .L7
104 jmp .L6
105 .size __mpn_impn_mul_n_basecase, .-__mpn_impn_mul_n_basecase
106 .p2align 4,,15
107 .globl __mpn_impn_mul_n
108 .hidden __mpn_impn_mul_n
109 .type __mpn_impn_mul_n, @function
110 __mpn_impn_mul_n:
111 pushq %r15
112 pushq %r14
113 movq %rcx, %r14
114 pushq %r13
115 pushq %r12
116 movq %r8, %r12
117 pushq %rbp
118 pushq %rbx
119 movq %rdi, %rbp
120 subq $72, %rsp
121 andl $1, %ecx
122 movq %rsi, 8(%rsp)
123 movq %rdx, 16(%rsp)
124 je .L22
125 leaq -1(%r14), %rbx
126 cmpq $31, %rbx
127 jg .L23
128 movq %rbx, %rcx
129 call __mpn_impn_mul_n_basecase
130 .L24:
131 movq 16(%rsp), %r15
132 movq 8(%rsp), %r13
133 leaq 0(%rbp,%rbx,8), %r12
134 movq %rbx, %rdx
135 movq %r12, %rdi
136 movq (%r15,%rbx,8), %rcx
137 movq %r13, %rsi
138 call __mpn_addmul_1
139 movq %rbx, %rdx
140 movq %r15, %rsi
141 movq %r12, %rdi
142 salq $4, %rdx
143 movq %rax, 0(%rbp,%rdx)
144 movq 0(%r13,%rbx,8), %rcx
145 movq %r14, %rdx
146 addq %r14, %rbx
147 call __mpn_addmul_1
148 movq %rax, 0(%rbp,%rbx,8)
149 .L21:
150 addq $72, %rsp
151 popq %rbx
152 popq %rbp
153 popq %r12
154 popq %r13
155 popq %r14
156 popq %r15
158 .p2align 4,,10
159 .p2align 3
160 .L22:
161 movq %r14, %rbx
162 movq 16(%rsp), %rdx
163 movq 8(%rsp), %r15
164 sarq %rbx
165 leaq 0(,%rbx,8), %rax
166 addq %rax, %rdx
167 addq %rax, %r15
168 movq %rax, 32(%rsp)
169 leaq 0(,%r14,8), %rax
170 cmpq $31, %rbx
171 movq %rdx, 48(%rsp)
172 movq %rax, 56(%rsp)
173 leaq (%rdi,%rax), %r13
174 jg .L26
175 movq %rbx, %rcx
176 movq %r15, %rsi
177 movq %r13, %rdi
178 call __mpn_impn_mul_n_basecase
179 .L27:
180 movq 8(%rsp), %rsi
181 movq %rbx, %rdx
182 movq %r15, %rdi
183 call __mpn_cmp
184 testl %eax, %eax
185 movq %rbx, %rcx
186 js .L28
187 movq 8(%rsp), %rdx
188 movq %r15, %rsi
189 movq %rbp, %rdi
190 call __mpn_sub_n
191 movl $0, 40(%rsp)
192 .L29:
193 movq 48(%rsp), %r15
194 movq 16(%rsp), %rsi
195 movq %rbx, %rdx
196 movq %r15, %rdi
197 call __mpn_cmp
198 movq 32(%rsp), %rsi
199 testl %eax, %eax
200 movq %rbx, %rcx
201 leaq 0(%rbp,%rsi), %rdi
202 movq %rdi, 24(%rsp)
203 js .L30
204 movq 16(%rsp), %rdx
205 movq %r15, %rsi
206 call __mpn_sub_n
207 xorl $1, 40(%rsp)
208 cmpq $31, %rbx
209 jg .L32
210 .L69:
211 movq 24(%rsp), %rdx
212 movq %r12, %rdi
213 movq %rbx, %rcx
214 movq %rbp, %rsi
215 call __mpn_impn_mul_n_basecase
216 testq %rbx, %rbx
217 leaq (%rbx,%r14), %rdi
218 jle .L34
219 .L33:
220 leaq (%rbx,%r14), %rdi
221 movq %rbx, %rcx
222 movq %r13, %rax
223 subq %r14, %rcx
224 leaq 0(%rbp,%rdi,8), %rsi
225 .p2align 4,,10
226 .p2align 3
227 .L35:
228 movq (%rax), %rdx
229 movq %rdx, (%rax,%rcx,8)
230 addq $8, %rax
231 cmpq %rax, %rsi
232 jne .L35
233 .L34:
234 leaq 0(%rbp,%rdi,8), %r15
235 movq %rbx, %rcx
236 movq %r13, %rsi
237 movq %r13, %rdi
238 movq %r15, %rdx
239 call __mpn_add_n
240 movq %rax, 48(%rsp)
241 movl 40(%rsp), %eax
242 movq %r14, %rcx
243 movq 24(%rsp), %rdi
244 movq %r12, %rdx
245 testl %eax, %eax
246 movq %rdi, %rsi
247 je .L36
248 call __mpn_sub_n
249 movq 48(%rsp), %rsi
250 subq %rax, %rsi
251 cmpq $31, %rbx
252 movq %rsi, 40(%rsp)
253 jg .L38
254 .L68:
255 movq 16(%rsp), %rdx
256 movq 8(%rsp), %rsi
257 movq %rbx, %rcx
258 movq %r12, %rdi
259 call __mpn_impn_mul_n_basecase
260 .L39:
261 movq 24(%rsp), %rdi
262 movq %r12, %rdx
263 movq %r14, %rcx
264 movq %rdi, %rsi
265 call __mpn_add_n
266 movq 40(%rsp), %rdx
267 addq %rax, %rdx
268 je .L45
269 xorl %eax, %eax
270 addq (%r15), %rdx
271 setc %al
272 movq %rdx, (%r15)
273 testq %rax, %rax
274 je .L45
275 leaq -1(%rbx), %rcx
276 xorl %eax, %eax
277 jmp .L46
278 .p2align 4,,10
279 .p2align 3
280 .L47:
281 movq 8(%r15,%rax,8), %rdi
282 leaq 1(%rdi), %rdx
283 movq %rdx, 8(%r15,%rax,8)
284 addq $1, %rax
285 testq %rdx, %rdx
286 jne .L45
287 .L46:
288 cmpq %rax, %rcx
289 jne .L47
290 .p2align 4,,10
291 .p2align 3
292 .L45:
293 xorl %eax, %eax
294 testq %rbx, %rbx
295 jle .L42
296 .p2align 4,,10
297 .p2align 3
298 .L41:
299 movq (%r12,%rax,8), %rdx
300 movq %rdx, 0(%rbp,%rax,8)
301 addq $1, %rax
302 cmpq %rax, %rbx
303 jne .L41
304 .L42:
305 movq 32(%rsp), %rdx
306 movq 24(%rsp), %rdi
307 movq %rbx, %rcx
308 addq %r12, %rdx
309 movq %rdi, %rsi
310 call __mpn_add_n
311 testq %rax, %rax
312 je .L21
313 movq 0(%r13), %rax
314 xorl %edx, %edx
315 addq $1, %rax
316 jc .L67
317 .L49:
318 testq %rdx, %rdx
319 movq %rax, 0(%r13)
320 je .L21
321 leaq -1(%r14), %rax
322 xorl %edx, %edx
323 jmp .L52
324 .p2align 4,,10
325 .p2align 3
326 .L53:
327 movq 8(%r13,%rdx,8), %rdi
328 leaq 1(%rdi), %rcx
329 movq %rcx, 8(%r13,%rdx,8)
330 addq $1, %rdx
331 testq %rcx, %rcx
332 jne .L21
333 .L52:
334 cmpq %rax, %rdx
335 jne .L53
336 jmp .L21
337 .p2align 4,,10
338 .p2align 3
339 .L36:
340 call __mpn_add_n
341 addq 48(%rsp), %rax
342 cmpq $31, %rbx
343 movq %rax, 40(%rsp)
344 jle .L68
345 .L38:
346 movq 56(%rsp), %r8
347 movq 16(%rsp), %rdx
348 movq %rbx, %rcx
349 movq 8(%rsp), %rsi
350 movq %r12, %rdi
351 addq %r12, %r8
352 call __mpn_impn_mul_n
353 jmp .L39
354 .p2align 4,,10
355 .p2align 3
356 .L26:
357 movq 48(%rsp), %rdx
358 movq %rbx, %rcx
359 movq %r15, %rsi
360 movq %r13, %rdi
361 call __mpn_impn_mul_n
362 jmp .L27
363 .p2align 4,,10
364 .p2align 3
365 .L23:
366 movq 16(%rsp), %rdx
367 movq 8(%rsp), %rsi
368 movq %rbx, %rcx
369 call __mpn_impn_mul_n
370 jmp .L24
371 .p2align 4,,10
372 .p2align 3
373 .L30:
374 movq 48(%rsp), %rdx
375 movq 16(%rsp), %rsi
376 movq 24(%rsp), %rdi
377 call __mpn_sub_n
378 cmpq $31, %rbx
379 jle .L69
380 .L32:
381 movq 56(%rsp), %rax
382 movq 24(%rsp), %rdx
383 movq %rbx, %rcx
384 movq %rbp, %rsi
385 movq %r12, %rdi
386 leaq (%r12,%rax), %r8
387 call __mpn_impn_mul_n
388 jmp .L33
389 .p2align 4,,10
390 .p2align 3
391 .L28:
392 movq 8(%rsp), %rsi
393 movq %r15, %rdx
394 movq %rbp, %rdi
395 call __mpn_sub_n
396 movl $1, 40(%rsp)
397 jmp .L29
398 .L67:
399 movl $1, %edx
400 jmp .L49
401 .size __mpn_impn_mul_n, .-__mpn_impn_mul_n
402 .p2align 4,,15
403 .globl __mpn_impn_sqr_n_basecase
404 .hidden __mpn_impn_sqr_n_basecase
405 .type __mpn_impn_sqr_n_basecase, @function
406 __mpn_impn_sqr_n_basecase:
407 pushq %r15
408 pushq %r14
409 movq %rdi, %r14
410 pushq %r13
411 pushq %r12
412 movq %rdx, %r12
413 pushq %rbp
414 pushq %rbx
415 movq %rsi, %rbp
416 subq $8, %rsp
417 movq (%rsi), %rcx
418 cmpq $1, %rcx
419 ja .L71
420 je .L72
421 testq %rdx, %rdx
422 jle .L75
423 leaq (%rdi,%rdx,8), %rdx
424 movq %rdi, %rax
425 .p2align 4,,10
426 .p2align 3
427 .L77:
428 movq $0, (%rax)
429 addq $8, %rax
430 cmpq %rax, %rdx
431 jne .L77
432 .L75:
433 xorl %eax, %eax
434 .L74:
435 leaq 0(,%r12,8), %r13
436 cmpq $1, %r12
437 leaq (%r14,%r13), %r15
438 movq %rax, (%r15)
439 jle .L70
440 movl $8, %ebx
441 jmp .L81
442 .p2align 4,,10
443 .p2align 3
444 .L87:
445 movl $0, %eax
446 je .L86
447 .L80:
448 movq %rax, (%r15,%rbx)
449 addq $8, %rbx
450 cmpq %rbx, %r13
451 je .L70
452 .L81:
453 movq 0(%rbp,%rbx), %rcx
454 leaq (%r14,%rbx), %rdi
455 cmpq $1, %rcx
456 jbe .L87
457 movq %r12, %rdx
458 movq %rbp, %rsi
459 call __mpn_addmul_1
460 movq %rax, (%r15,%rbx)
461 addq $8, %rbx
462 cmpq %rbx, %r13
463 jne .L81
464 .L70:
465 addq $8, %rsp
466 popq %rbx
467 popq %rbp
468 popq %r12
469 popq %r13
470 popq %r14
471 popq %r15
473 .p2align 4,,10
474 .p2align 3
475 .L86:
476 movq %r12, %rcx
477 movq %rbp, %rdx
478 movq %rdi, %rsi
479 call __mpn_add_n
480 jmp .L80
481 .p2align 4,,10
482 .p2align 3
483 .L71:
484 call __mpn_mul_1
485 jmp .L74
486 .p2align 4,,10
487 .p2align 3
488 .L72:
489 testq %rdx, %rdx
490 jle .L75
491 xorl %eax, %eax
492 jmp .L76
493 .p2align 4,,10
494 .p2align 3
495 .L88:
496 movq 0(%rbp,%rax,8), %rcx
497 .L76:
498 movq %rcx, (%r14,%rax,8)
499 addq $1, %rax
500 cmpq %rax, %r12
501 jne .L88
502 jmp .L75
503 .size __mpn_impn_sqr_n_basecase, .-__mpn_impn_sqr_n_basecase
504 .p2align 4,,15
505 .globl __mpn_impn_sqr_n
506 .hidden __mpn_impn_sqr_n
507 .type __mpn_impn_sqr_n, @function
508 __mpn_impn_sqr_n:
509 pushq %r15
510 pushq %r14
511 movq %rcx, %r15
512 pushq %r13
513 pushq %r12
514 pushq %rbp
515 pushq %rbx
516 movq %rdx, %rbp
517 movq %rdi, %rbx
518 subq $56, %rsp
519 andl $1, %edx
520 movq %rsi, 8(%rsp)
521 je .L90
522 leaq -1(%rbp), %r13
523 cmpq $31, %r13
524 jg .L91
525 movq %r13, %rdx
526 call __mpn_impn_sqr_n_basecase
527 .L92:
528 movq 8(%rsp), %r12
529 leaq 0(,%r13,8), %r14
530 movq %r13, %rdx
531 leaq (%r12,%r14), %r15
532 addq %rbx, %r14
533 movq %r12, %rsi
534 movq %r14, %rdi
535 movq (%r15), %rcx
536 call __mpn_addmul_1
537 movq %r13, %rdx
538 movq %r12, %rsi
539 movq %r14, %rdi
540 salq $4, %rdx
541 movq %rax, (%rbx,%rdx)
542 movq (%r15), %rcx
543 movq %rbp, %rdx
544 addq %r13, %rbp
545 call __mpn_addmul_1
546 movq %rax, (%rbx,%rbp,8)
547 .L89:
548 addq $56, %rsp
549 popq %rbx
550 popq %rbp
551 popq %r12
552 popq %r13
553 popq %r14
554 popq %r15
556 .p2align 4,,10
557 .p2align 3
558 .L90:
559 movq %rbp, %r12
560 movq 8(%rsp), %r14
561 sarq %r12
562 leaq 0(,%r12,8), %rax
563 addq %rax, %r14
564 movq %rax, 24(%rsp)
565 leaq 0(,%rbp,8), %rax
566 cmpq $31, %r12
567 movq %rax, 40(%rsp)
568 leaq (%rdi,%rax), %r13
569 jg .L94
570 movq %r12, %rdx
571 movq %r14, %rsi
572 movq %r13, %rdi
573 call __mpn_impn_sqr_n_basecase
574 .L95:
575 movq 8(%rsp), %rsi
576 movq %r12, %rdx
577 movq %r14, %rdi
578 call __mpn_cmp
579 testl %eax, %eax
580 movq %r12, %rcx
581 js .L96
582 movq 8(%rsp), %rdx
583 movq %r14, %rsi
584 movq %rbx, %rdi
585 call __mpn_sub_n
586 cmpq $31, %r12
587 jg .L98
588 .L133:
589 movq %r12, %rdx
590 movq %rbx, %rsi
591 movq %r15, %rdi
592 call __mpn_impn_sqr_n_basecase
593 testq %r12, %r12
594 jle .L131
595 .L99:
596 leaq (%r12,%rbp), %rdi
597 movq %r12, %rcx
598 movq %r13, %rax
599 subq %rbp, %rcx
600 leaq (%rbx,%rdi,8), %rsi
601 .p2align 4,,10
602 .p2align 3
603 .L101:
604 movq (%rax), %rdx
605 movq %rdx, (%rax,%rcx,8)
606 addq $8, %rax
607 cmpq %rax, %rsi
608 jne .L101
609 leaq (%rbx,%rdi,8), %r14
610 movq %r12, %rcx
611 movq %r13, %rsi
612 movq %r13, %rdi
613 movq %r14, %rdx
614 call __mpn_add_n
615 movq 24(%rsp), %rsi
616 movq %r15, %rdx
617 movq %rax, 32(%rsp)
618 leaq (%rbx,%rsi), %rcx
619 movq %rcx, %rdi
620 movq %rcx, 16(%rsp)
621 movq %rbp, %rcx
622 movq %rdi, %rsi
623 call __mpn_sub_n
624 movq 32(%rsp), %rcx
625 subq %rax, %rcx
626 cmpq $31, %r12
627 movq %rcx, 32(%rsp)
628 jg .L102
629 .L118:
630 movq 8(%rsp), %rsi
631 movq %r12, %rdx
632 movq %r15, %rdi
633 call __mpn_impn_sqr_n_basecase
634 .L103:
635 movq 16(%rsp), %rdi
636 movq %rbp, %rcx
637 movq %r15, %rdx
638 movq %rdi, %rsi
639 call __mpn_add_n
640 addq 32(%rsp), %rax
641 je .L109
642 xorl %edx, %edx
643 addq (%r14), %rax
644 setc %dl
645 movq %rax, (%r14)
646 testq %rdx, %rdx
647 je .L109
648 leaq -1(%r12), %rcx
649 xorl %eax, %eax
650 jmp .L110
651 .p2align 4,,10
652 .p2align 3
653 .L111:
654 movq 8(%r14,%rax,8), %rsi
655 leaq 1(%rsi), %rdx
656 movq %rdx, 8(%r14,%rax,8)
657 addq $1, %rax
658 testq %rdx, %rdx
659 jne .L109
660 .L110:
661 cmpq %rax, %rcx
662 jne .L111
663 .p2align 4,,10
664 .p2align 3
665 .L109:
666 xorl %eax, %eax
667 testq %r12, %r12
668 jle .L106
669 .p2align 4,,10
670 .p2align 3
671 .L105:
672 movq (%r15,%rax,8), %rdx
673 movq %rdx, (%rbx,%rax,8)
674 addq $1, %rax
675 cmpq %rax, %r12
676 jne .L105
677 .L106:
678 movq 24(%rsp), %rdx
679 movq 16(%rsp), %rdi
680 movq %r12, %rcx
681 addq %r15, %rdx
682 movq %rdi, %rsi
683 call __mpn_add_n
684 testq %rax, %rax
685 je .L89
686 movq 0(%r13), %rax
687 xorl %edx, %edx
688 addq $1, %rax
689 jc .L132
690 .L113:
691 testq %rdx, %rdx
692 movq %rax, 0(%r13)
693 je .L89
694 subq $1, %rbp
695 xorl %eax, %eax
696 jmp .L116
697 .p2align 4,,10
698 .p2align 3
699 .L117:
700 movq 8(%r13,%rax,8), %rdi
701 leaq 1(%rdi), %rdx
702 movq %rdx, 8(%r13,%rax,8)
703 addq $1, %rax
704 testq %rdx, %rdx
705 jne .L89
706 .L116:
707 cmpq %rbp, %rax
708 jne .L117
709 jmp .L89
710 .p2align 4,,10
711 .p2align 3
712 .L94:
713 movq %r12, %rdx
714 movq %r14, %rsi
715 movq %r13, %rdi
716 call __mpn_impn_sqr_n
717 jmp .L95
718 .p2align 4,,10
719 .p2align 3
720 .L91:
721 movq 8(%rsp), %rsi
722 movq %r13, %rdx
723 call __mpn_impn_sqr_n
724 jmp .L92
725 .p2align 4,,10
726 .p2align 3
727 .L96:
728 movq 8(%rsp), %rsi
729 movq %r14, %rdx
730 movq %rbx, %rdi
731 call __mpn_sub_n
732 cmpq $31, %r12
733 jle .L133
734 .L98:
735 movq 40(%rsp), %rax
736 movq %r12, %rdx
737 movq %rbx, %rsi
738 movq %r15, %rdi
739 leaq (%r15,%rax), %rcx
740 call __mpn_impn_sqr_n
741 jmp .L99
742 .p2align 4,,10
743 .p2align 3
744 .L102:
745 movq 40(%rsp), %rcx
746 movq 8(%rsp), %rsi
747 movq %r12, %rdx
748 movq %r15, %rdi
749 addq %r15, %rcx
750 call __mpn_impn_sqr_n
751 jmp .L103
752 .p2align 4,,10
753 .p2align 3
754 .L131:
755 leaq (%r12,%rbp), %rax
756 movq %r12, %rcx
757 movq %r13, %rsi
758 movq %r13, %rdi
759 leaq (%rbx,%rax,8), %r14
760 movq %r14, %rdx
761 call __mpn_add_n
762 movq 24(%rsp), %rsi
763 movq %r15, %rdx
764 movq %rax, 32(%rsp)
765 leaq (%rbx,%rsi), %rcx
766 movq %rcx, %rdi
767 movq %rcx, 16(%rsp)
768 movq %rbp, %rcx
769 movq %rdi, %rsi
770 call __mpn_sub_n
771 movq 32(%rsp), %rcx
772 subq %rax, %rcx
773 movq %rcx, 32(%rsp)
774 jmp .L118
775 .L132:
776 movl $1, %edx
777 jmp .L113
778 .size __mpn_impn_sqr_n, .-__mpn_impn_sqr_n
779 .p2align 4,,15
780 .globl __mpn_mul_n
781 .type __mpn_mul_n, @function
782 __mpn_mul_n:
783 pushq %rbp
784 cmpq %rdx, %rsi
785 movq %rcx, %rax
786 movq %rsp, %rbp
787 je .L140
788 cmpq $31, %rcx
789 jle .L141
790 salq $4, %rcx
791 addq $16, %rcx
792 subq %rcx, %rsp
793 movq %rax, %rcx
794 leaq 15(%rsp), %r8
795 andq $-16, %r8
796 call __mpn_impn_mul_n
797 leave
799 .p2align 4,,10
800 .p2align 3
801 .L141:
802 call __mpn_impn_mul_n_basecase
803 leave
805 .p2align 4,,10
806 .p2align 3
807 .L140:
808 cmpq $31, %rcx
809 movq %rcx, %rdx
810 jg .L136
811 call __mpn_impn_sqr_n_basecase
812 leave
814 .p2align 4,,10
815 .p2align 3
816 .L136:
817 salq $4, %rdx
818 addq $16, %rdx
819 subq %rdx, %rsp
820 movq %rax, %rdx
821 leaq 15(%rsp), %rcx
822 andq $-16, %rcx
823 call __mpn_impn_sqr_n
824 leave
826 .size __mpn_mul_n, .-__mpn_mul_n
827 .hidden __mpn_sub_n
828 .hidden __mpn_cmp
829 .hidden __mpn_mul_1
830 .hidden __mpn_add_n
831 .hidden __mpn_addmul_1