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