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