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