1 .text
2 .globl	_bn_mul_comba8
3 .type	_bn_mul_comba8,@function
4 .align	4
5 _bn_mul_comba8:
6 L_bn_mul_comba8_begin:
7 	%ifdef __CET__
8 
9 .byte	243,15,30,251
10 	%endif
11 
12 	pushl	%esi
13 	movl	12(%esp),%esi
14 	pushl	%edi
15 	movl	20(%esp),%edi
16 	pushl	%ebp
17 	pushl	%ebx
18 	xorl	%ebx,%ebx
19 	movl	(%esi),%eax
20 	xorl	%ecx,%ecx
21 	movl	(%edi),%edx
22 	# ################## Calculate word 0
23 	xorl	%ebp,%ebp
24 	# mul a[0]*b[0]
25 	mull	%edx
26 	addl	%eax,%ebx
27 	movl	20(%esp),%eax
28 	adcl	%edx,%ecx
29 	movl	(%edi),%edx
30 	adcl	$0,%ebp
31 	movl	%ebx,(%eax)
32 	movl	4(%esi),%eax
33 	# saved r[0]
34 	# ################## Calculate word 1
35 	xorl	%ebx,%ebx
36 	# mul a[1]*b[0]
37 	mull	%edx
38 	addl	%eax,%ecx
39 	movl	(%esi),%eax
40 	adcl	%edx,%ebp
41 	movl	4(%edi),%edx
42 	adcl	$0,%ebx
43 	# mul a[0]*b[1]
44 	mull	%edx
45 	addl	%eax,%ecx
46 	movl	20(%esp),%eax
47 	adcl	%edx,%ebp
48 	movl	(%edi),%edx
49 	adcl	$0,%ebx
50 	movl	%ecx,4(%eax)
51 	movl	8(%esi),%eax
52 	# saved r[1]
53 	# ################## Calculate word 2
54 	xorl	%ecx,%ecx
55 	# mul a[2]*b[0]
56 	mull	%edx
57 	addl	%eax,%ebp
58 	movl	4(%esi),%eax
59 	adcl	%edx,%ebx
60 	movl	4(%edi),%edx
61 	adcl	$0,%ecx
62 	# mul a[1]*b[1]
63 	mull	%edx
64 	addl	%eax,%ebp
65 	movl	(%esi),%eax
66 	adcl	%edx,%ebx
67 	movl	8(%edi),%edx
68 	adcl	$0,%ecx
69 	# mul a[0]*b[2]
70 	mull	%edx
71 	addl	%eax,%ebp
72 	movl	20(%esp),%eax
73 	adcl	%edx,%ebx
74 	movl	(%edi),%edx
75 	adcl	$0,%ecx
76 	movl	%ebp,8(%eax)
77 	movl	12(%esi),%eax
78 	# saved r[2]
79 	# ################## Calculate word 3
80 	xorl	%ebp,%ebp
81 	# mul a[3]*b[0]
82 	mull	%edx
83 	addl	%eax,%ebx
84 	movl	8(%esi),%eax
85 	adcl	%edx,%ecx
86 	movl	4(%edi),%edx
87 	adcl	$0,%ebp
88 	# mul a[2]*b[1]
89 	mull	%edx
90 	addl	%eax,%ebx
91 	movl	4(%esi),%eax
92 	adcl	%edx,%ecx
93 	movl	8(%edi),%edx
94 	adcl	$0,%ebp
95 	# mul a[1]*b[2]
96 	mull	%edx
97 	addl	%eax,%ebx
98 	movl	(%esi),%eax
99 	adcl	%edx,%ecx
100 	movl	12(%edi),%edx
101 	adcl	$0,%ebp
102 	# mul a[0]*b[3]
103 	mull	%edx
104 	addl	%eax,%ebx
105 	movl	20(%esp),%eax
106 	adcl	%edx,%ecx
107 	movl	(%edi),%edx
108 	adcl	$0,%ebp
109 	movl	%ebx,12(%eax)
110 	movl	16(%esi),%eax
111 	# saved r[3]
112 	# ################## Calculate word 4
113 	xorl	%ebx,%ebx
114 	# mul a[4]*b[0]
115 	mull	%edx
116 	addl	%eax,%ecx
117 	movl	12(%esi),%eax
118 	adcl	%edx,%ebp
119 	movl	4(%edi),%edx
120 	adcl	$0,%ebx
121 	# mul a[3]*b[1]
122 	mull	%edx
123 	addl	%eax,%ecx
124 	movl	8(%esi),%eax
125 	adcl	%edx,%ebp
126 	movl	8(%edi),%edx
127 	adcl	$0,%ebx
128 	# mul a[2]*b[2]
129 	mull	%edx
130 	addl	%eax,%ecx
131 	movl	4(%esi),%eax
132 	adcl	%edx,%ebp
133 	movl	12(%edi),%edx
134 	adcl	$0,%ebx
135 	# mul a[1]*b[3]
136 	mull	%edx
137 	addl	%eax,%ecx
138 	movl	(%esi),%eax
139 	adcl	%edx,%ebp
140 	movl	16(%edi),%edx
141 	adcl	$0,%ebx
142 	# mul a[0]*b[4]
143 	mull	%edx
144 	addl	%eax,%ecx
145 	movl	20(%esp),%eax
146 	adcl	%edx,%ebp
147 	movl	(%edi),%edx
148 	adcl	$0,%ebx
149 	movl	%ecx,16(%eax)
150 	movl	20(%esi),%eax
151 	# saved r[4]
152 	# ################## Calculate word 5
153 	xorl	%ecx,%ecx
154 	# mul a[5]*b[0]
155 	mull	%edx
156 	addl	%eax,%ebp
157 	movl	16(%esi),%eax
158 	adcl	%edx,%ebx
159 	movl	4(%edi),%edx
160 	adcl	$0,%ecx
161 	# mul a[4]*b[1]
162 	mull	%edx
163 	addl	%eax,%ebp
164 	movl	12(%esi),%eax
165 	adcl	%edx,%ebx
166 	movl	8(%edi),%edx
167 	adcl	$0,%ecx
168 	# mul a[3]*b[2]
169 	mull	%edx
170 	addl	%eax,%ebp
171 	movl	8(%esi),%eax
172 	adcl	%edx,%ebx
173 	movl	12(%edi),%edx
174 	adcl	$0,%ecx
175 	# mul a[2]*b[3]
176 	mull	%edx
177 	addl	%eax,%ebp
178 	movl	4(%esi),%eax
179 	adcl	%edx,%ebx
180 	movl	16(%edi),%edx
181 	adcl	$0,%ecx
182 	# mul a[1]*b[4]
183 	mull	%edx
184 	addl	%eax,%ebp
185 	movl	(%esi),%eax
186 	adcl	%edx,%ebx
187 	movl	20(%edi),%edx
188 	adcl	$0,%ecx
189 	# mul a[0]*b[5]
190 	mull	%edx
191 	addl	%eax,%ebp
192 	movl	20(%esp),%eax
193 	adcl	%edx,%ebx
194 	movl	(%edi),%edx
195 	adcl	$0,%ecx
196 	movl	%ebp,20(%eax)
197 	movl	24(%esi),%eax
198 	# saved r[5]
199 	# ################## Calculate word 6
200 	xorl	%ebp,%ebp
201 	# mul a[6]*b[0]
202 	mull	%edx
203 	addl	%eax,%ebx
204 	movl	20(%esi),%eax
205 	adcl	%edx,%ecx
206 	movl	4(%edi),%edx
207 	adcl	$0,%ebp
208 	# mul a[5]*b[1]
209 	mull	%edx
210 	addl	%eax,%ebx
211 	movl	16(%esi),%eax
212 	adcl	%edx,%ecx
213 	movl	8(%edi),%edx
214 	adcl	$0,%ebp
215 	# mul a[4]*b[2]
216 	mull	%edx
217 	addl	%eax,%ebx
218 	movl	12(%esi),%eax
219 	adcl	%edx,%ecx
220 	movl	12(%edi),%edx
221 	adcl	$0,%ebp
222 	# mul a[3]*b[3]
223 	mull	%edx
224 	addl	%eax,%ebx
225 	movl	8(%esi),%eax
226 	adcl	%edx,%ecx
227 	movl	16(%edi),%edx
228 	adcl	$0,%ebp
229 	# mul a[2]*b[4]
230 	mull	%edx
231 	addl	%eax,%ebx
232 	movl	4(%esi),%eax
233 	adcl	%edx,%ecx
234 	movl	20(%edi),%edx
235 	adcl	$0,%ebp
236 	# mul a[1]*b[5]
237 	mull	%edx
238 	addl	%eax,%ebx
239 	movl	(%esi),%eax
240 	adcl	%edx,%ecx
241 	movl	24(%edi),%edx
242 	adcl	$0,%ebp
243 	# mul a[0]*b[6]
244 	mull	%edx
245 	addl	%eax,%ebx
246 	movl	20(%esp),%eax
247 	adcl	%edx,%ecx
248 	movl	(%edi),%edx
249 	adcl	$0,%ebp
250 	movl	%ebx,24(%eax)
251 	movl	28(%esi),%eax
252 	# saved r[6]
253 	# ################## Calculate word 7
254 	xorl	%ebx,%ebx
255 	# mul a[7]*b[0]
256 	mull	%edx
257 	addl	%eax,%ecx
258 	movl	24(%esi),%eax
259 	adcl	%edx,%ebp
260 	movl	4(%edi),%edx
261 	adcl	$0,%ebx
262 	# mul a[6]*b[1]
263 	mull	%edx
264 	addl	%eax,%ecx
265 	movl	20(%esi),%eax
266 	adcl	%edx,%ebp
267 	movl	8(%edi),%edx
268 	adcl	$0,%ebx
269 	# mul a[5]*b[2]
270 	mull	%edx
271 	addl	%eax,%ecx
272 	movl	16(%esi),%eax
273 	adcl	%edx,%ebp
274 	movl	12(%edi),%edx
275 	adcl	$0,%ebx
276 	# mul a[4]*b[3]
277 	mull	%edx
278 	addl	%eax,%ecx
279 	movl	12(%esi),%eax
280 	adcl	%edx,%ebp
281 	movl	16(%edi),%edx
282 	adcl	$0,%ebx
283 	# mul a[3]*b[4]
284 	mull	%edx
285 	addl	%eax,%ecx
286 	movl	8(%esi),%eax
287 	adcl	%edx,%ebp
288 	movl	20(%edi),%edx
289 	adcl	$0,%ebx
290 	# mul a[2]*b[5]
291 	mull	%edx
292 	addl	%eax,%ecx
293 	movl	4(%esi),%eax
294 	adcl	%edx,%ebp
295 	movl	24(%edi),%edx
296 	adcl	$0,%ebx
297 	# mul a[1]*b[6]
298 	mull	%edx
299 	addl	%eax,%ecx
300 	movl	(%esi),%eax
301 	adcl	%edx,%ebp
302 	movl	28(%edi),%edx
303 	adcl	$0,%ebx
304 	# mul a[0]*b[7]
305 	mull	%edx
306 	addl	%eax,%ecx
307 	movl	20(%esp),%eax
308 	adcl	%edx,%ebp
309 	movl	4(%edi),%edx
310 	adcl	$0,%ebx
311 	movl	%ecx,28(%eax)
312 	movl	28(%esi),%eax
313 	# saved r[7]
314 	# ################## Calculate word 8
315 	xorl	%ecx,%ecx
316 	# mul a[7]*b[1]
317 	mull	%edx
318 	addl	%eax,%ebp
319 	movl	24(%esi),%eax
320 	adcl	%edx,%ebx
321 	movl	8(%edi),%edx
322 	adcl	$0,%ecx
323 	# mul a[6]*b[2]
324 	mull	%edx
325 	addl	%eax,%ebp
326 	movl	20(%esi),%eax
327 	adcl	%edx,%ebx
328 	movl	12(%edi),%edx
329 	adcl	$0,%ecx
330 	# mul a[5]*b[3]
331 	mull	%edx
332 	addl	%eax,%ebp
333 	movl	16(%esi),%eax
334 	adcl	%edx,%ebx
335 	movl	16(%edi),%edx
336 	adcl	$0,%ecx
337 	# mul a[4]*b[4]
338 	mull	%edx
339 	addl	%eax,%ebp
340 	movl	12(%esi),%eax
341 	adcl	%edx,%ebx
342 	movl	20(%edi),%edx
343 	adcl	$0,%ecx
344 	# mul a[3]*b[5]
345 	mull	%edx
346 	addl	%eax,%ebp
347 	movl	8(%esi),%eax
348 	adcl	%edx,%ebx
349 	movl	24(%edi),%edx
350 	adcl	$0,%ecx
351 	# mul a[2]*b[6]
352 	mull	%edx
353 	addl	%eax,%ebp
354 	movl	4(%esi),%eax
355 	adcl	%edx,%ebx
356 	movl	28(%edi),%edx
357 	adcl	$0,%ecx
358 	# mul a[1]*b[7]
359 	mull	%edx
360 	addl	%eax,%ebp
361 	movl	20(%esp),%eax
362 	adcl	%edx,%ebx
363 	movl	8(%edi),%edx
364 	adcl	$0,%ecx
365 	movl	%ebp,32(%eax)
366 	movl	28(%esi),%eax
367 	# saved r[8]
368 	# ################## Calculate word 9
369 	xorl	%ebp,%ebp
370 	# mul a[7]*b[2]
371 	mull	%edx
372 	addl	%eax,%ebx
373 	movl	24(%esi),%eax
374 	adcl	%edx,%ecx
375 	movl	12(%edi),%edx
376 	adcl	$0,%ebp
377 	# mul a[6]*b[3]
378 	mull	%edx
379 	addl	%eax,%ebx
380 	movl	20(%esi),%eax
381 	adcl	%edx,%ecx
382 	movl	16(%edi),%edx
383 	adcl	$0,%ebp
384 	# mul a[5]*b[4]
385 	mull	%edx
386 	addl	%eax,%ebx
387 	movl	16(%esi),%eax
388 	adcl	%edx,%ecx
389 	movl	20(%edi),%edx
390 	adcl	$0,%ebp
391 	# mul a[4]*b[5]
392 	mull	%edx
393 	addl	%eax,%ebx
394 	movl	12(%esi),%eax
395 	adcl	%edx,%ecx
396 	movl	24(%edi),%edx
397 	adcl	$0,%ebp
398 	# mul a[3]*b[6]
399 	mull	%edx
400 	addl	%eax,%ebx
401 	movl	8(%esi),%eax
402 	adcl	%edx,%ecx
403 	movl	28(%edi),%edx
404 	adcl	$0,%ebp
405 	# mul a[2]*b[7]
406 	mull	%edx
407 	addl	%eax,%ebx
408 	movl	20(%esp),%eax
409 	adcl	%edx,%ecx
410 	movl	12(%edi),%edx
411 	adcl	$0,%ebp
412 	movl	%ebx,36(%eax)
413 	movl	28(%esi),%eax
414 	# saved r[9]
415 	# ################## Calculate word 10
416 	xorl	%ebx,%ebx
417 	# mul a[7]*b[3]
418 	mull	%edx
419 	addl	%eax,%ecx
420 	movl	24(%esi),%eax
421 	adcl	%edx,%ebp
422 	movl	16(%edi),%edx
423 	adcl	$0,%ebx
424 	# mul a[6]*b[4]
425 	mull	%edx
426 	addl	%eax,%ecx
427 	movl	20(%esi),%eax
428 	adcl	%edx,%ebp
429 	movl	20(%edi),%edx
430 	adcl	$0,%ebx
431 	# mul a[5]*b[5]
432 	mull	%edx
433 	addl	%eax,%ecx
434 	movl	16(%esi),%eax
435 	adcl	%edx,%ebp
436 	movl	24(%edi),%edx
437 	adcl	$0,%ebx
438 	# mul a[4]*b[6]
439 	mull	%edx
440 	addl	%eax,%ecx
441 	movl	12(%esi),%eax
442 	adcl	%edx,%ebp
443 	movl	28(%edi),%edx
444 	adcl	$0,%ebx
445 	# mul a[3]*b[7]
446 	mull	%edx
447 	addl	%eax,%ecx
448 	movl	20(%esp),%eax
449 	adcl	%edx,%ebp
450 	movl	16(%edi),%edx
451 	adcl	$0,%ebx
452 	movl	%ecx,40(%eax)
453 	movl	28(%esi),%eax
454 	# saved r[10]
455 	# ################## Calculate word 11
456 	xorl	%ecx,%ecx
457 	# mul a[7]*b[4]
458 	mull	%edx
459 	addl	%eax,%ebp
460 	movl	24(%esi),%eax
461 	adcl	%edx,%ebx
462 	movl	20(%edi),%edx
463 	adcl	$0,%ecx
464 	# mul a[6]*b[5]
465 	mull	%edx
466 	addl	%eax,%ebp
467 	movl	20(%esi),%eax
468 	adcl	%edx,%ebx
469 	movl	24(%edi),%edx
470 	adcl	$0,%ecx
471 	# mul a[5]*b[6]
472 	mull	%edx
473 	addl	%eax,%ebp
474 	movl	16(%esi),%eax
475 	adcl	%edx,%ebx
476 	movl	28(%edi),%edx
477 	adcl	$0,%ecx
478 	# mul a[4]*b[7]
479 	mull	%edx
480 	addl	%eax,%ebp
481 	movl	20(%esp),%eax
482 	adcl	%edx,%ebx
483 	movl	20(%edi),%edx
484 	adcl	$0,%ecx
485 	movl	%ebp,44(%eax)
486 	movl	28(%esi),%eax
487 	# saved r[11]
488 	# ################## Calculate word 12
489 	xorl	%ebp,%ebp
490 	# mul a[7]*b[5]
491 	mull	%edx
492 	addl	%eax,%ebx
493 	movl	24(%esi),%eax
494 	adcl	%edx,%ecx
495 	movl	24(%edi),%edx
496 	adcl	$0,%ebp
497 	# mul a[6]*b[6]
498 	mull	%edx
499 	addl	%eax,%ebx
500 	movl	20(%esi),%eax
501 	adcl	%edx,%ecx
502 	movl	28(%edi),%edx
503 	adcl	$0,%ebp
504 	# mul a[5]*b[7]
505 	mull	%edx
506 	addl	%eax,%ebx
507 	movl	20(%esp),%eax
508 	adcl	%edx,%ecx
509 	movl	24(%edi),%edx
510 	adcl	$0,%ebp
511 	movl	%ebx,48(%eax)
512 	movl	28(%esi),%eax
513 	# saved r[12]
514 	# ################## Calculate word 13
515 	xorl	%ebx,%ebx
516 	# mul a[7]*b[6]
517 	mull	%edx
518 	addl	%eax,%ecx
519 	movl	24(%esi),%eax
520 	adcl	%edx,%ebp
521 	movl	28(%edi),%edx
522 	adcl	$0,%ebx
523 	# mul a[6]*b[7]
524 	mull	%edx
525 	addl	%eax,%ecx
526 	movl	20(%esp),%eax
527 	adcl	%edx,%ebp
528 	movl	28(%edi),%edx
529 	adcl	$0,%ebx
530 	movl	%ecx,52(%eax)
531 	movl	28(%esi),%eax
532 	# saved r[13]
533 	# ################## Calculate word 14
534 	xorl	%ecx,%ecx
535 	# mul a[7]*b[7]
536 	mull	%edx
537 	addl	%eax,%ebp
538 	movl	20(%esp),%eax
539 	adcl	%edx,%ebx
540 	adcl	$0,%ecx
541 	movl	%ebp,56(%eax)
542 	# saved r[14]
543 	# save r[15]
544 	movl	%ebx,60(%eax)
545 	popl	%ebx
546 	popl	%ebp
547 	popl	%edi
548 	popl	%esi
549 	ret
550 .globl	_bn_mul_comba4
551 .type	_bn_mul_comba4,@function
552 .align	4
553 _bn_mul_comba4:
554 L_bn_mul_comba4_begin:
555 	%ifdef __CET__
556 
557 .byte	243,15,30,251
558 	%endif
559 
560 	pushl	%esi
561 	movl	12(%esp),%esi
562 	pushl	%edi
563 	movl	20(%esp),%edi
564 	pushl	%ebp
565 	pushl	%ebx
566 	xorl	%ebx,%ebx
567 	movl	(%esi),%eax
568 	xorl	%ecx,%ecx
569 	movl	(%edi),%edx
570 	# ################## Calculate word 0
571 	xorl	%ebp,%ebp
572 	# mul a[0]*b[0]
573 	mull	%edx
574 	addl	%eax,%ebx
575 	movl	20(%esp),%eax
576 	adcl	%edx,%ecx
577 	movl	(%edi),%edx
578 	adcl	$0,%ebp
579 	movl	%ebx,(%eax)
580 	movl	4(%esi),%eax
581 	# saved r[0]
582 	# ################## Calculate word 1
583 	xorl	%ebx,%ebx
584 	# mul a[1]*b[0]
585 	mull	%edx
586 	addl	%eax,%ecx
587 	movl	(%esi),%eax
588 	adcl	%edx,%ebp
589 	movl	4(%edi),%edx
590 	adcl	$0,%ebx
591 	# mul a[0]*b[1]
592 	mull	%edx
593 	addl	%eax,%ecx
594 	movl	20(%esp),%eax
595 	adcl	%edx,%ebp
596 	movl	(%edi),%edx
597 	adcl	$0,%ebx
598 	movl	%ecx,4(%eax)
599 	movl	8(%esi),%eax
600 	# saved r[1]
601 	# ################## Calculate word 2
602 	xorl	%ecx,%ecx
603 	# mul a[2]*b[0]
604 	mull	%edx
605 	addl	%eax,%ebp
606 	movl	4(%esi),%eax
607 	adcl	%edx,%ebx
608 	movl	4(%edi),%edx
609 	adcl	$0,%ecx
610 	# mul a[1]*b[1]
611 	mull	%edx
612 	addl	%eax,%ebp
613 	movl	(%esi),%eax
614 	adcl	%edx,%ebx
615 	movl	8(%edi),%edx
616 	adcl	$0,%ecx
617 	# mul a[0]*b[2]
618 	mull	%edx
619 	addl	%eax,%ebp
620 	movl	20(%esp),%eax
621 	adcl	%edx,%ebx
622 	movl	(%edi),%edx
623 	adcl	$0,%ecx
624 	movl	%ebp,8(%eax)
625 	movl	12(%esi),%eax
626 	# saved r[2]
627 	# ################## Calculate word 3
628 	xorl	%ebp,%ebp
629 	# mul a[3]*b[0]
630 	mull	%edx
631 	addl	%eax,%ebx
632 	movl	8(%esi),%eax
633 	adcl	%edx,%ecx
634 	movl	4(%edi),%edx
635 	adcl	$0,%ebp
636 	# mul a[2]*b[1]
637 	mull	%edx
638 	addl	%eax,%ebx
639 	movl	4(%esi),%eax
640 	adcl	%edx,%ecx
641 	movl	8(%edi),%edx
642 	adcl	$0,%ebp
643 	# mul a[1]*b[2]
644 	mull	%edx
645 	addl	%eax,%ebx
646 	movl	(%esi),%eax
647 	adcl	%edx,%ecx
648 	movl	12(%edi),%edx
649 	adcl	$0,%ebp
650 	# mul a[0]*b[3]
651 	mull	%edx
652 	addl	%eax,%ebx
653 	movl	20(%esp),%eax
654 	adcl	%edx,%ecx
655 	movl	4(%edi),%edx
656 	adcl	$0,%ebp
657 	movl	%ebx,12(%eax)
658 	movl	12(%esi),%eax
659 	# saved r[3]
660 	# ################## Calculate word 4
661 	xorl	%ebx,%ebx
662 	# mul a[3]*b[1]
663 	mull	%edx
664 	addl	%eax,%ecx
665 	movl	8(%esi),%eax
666 	adcl	%edx,%ebp
667 	movl	8(%edi),%edx
668 	adcl	$0,%ebx
669 	# mul a[2]*b[2]
670 	mull	%edx
671 	addl	%eax,%ecx
672 	movl	4(%esi),%eax
673 	adcl	%edx,%ebp
674 	movl	12(%edi),%edx
675 	adcl	$0,%ebx
676 	# mul a[1]*b[3]
677 	mull	%edx
678 	addl	%eax,%ecx
679 	movl	20(%esp),%eax
680 	adcl	%edx,%ebp
681 	movl	8(%edi),%edx
682 	adcl	$0,%ebx
683 	movl	%ecx,16(%eax)
684 	movl	12(%esi),%eax
685 	# saved r[4]
686 	# ################## Calculate word 5
687 	xorl	%ecx,%ecx
688 	# mul a[3]*b[2]
689 	mull	%edx
690 	addl	%eax,%ebp
691 	movl	8(%esi),%eax
692 	adcl	%edx,%ebx
693 	movl	12(%edi),%edx
694 	adcl	$0,%ecx
695 	# mul a[2]*b[3]
696 	mull	%edx
697 	addl	%eax,%ebp
698 	movl	20(%esp),%eax
699 	adcl	%edx,%ebx
700 	movl	12(%edi),%edx
701 	adcl	$0,%ecx
702 	movl	%ebp,20(%eax)
703 	movl	12(%esi),%eax
704 	# saved r[5]
705 	# ################## Calculate word 6
706 	xorl	%ebp,%ebp
707 	# mul a[3]*b[3]
708 	mull	%edx
709 	addl	%eax,%ebx
710 	movl	20(%esp),%eax
711 	adcl	%edx,%ecx
712 	adcl	$0,%ebp
713 	movl	%ebx,24(%eax)
714 	# saved r[6]
715 	# save r[7]
716 	movl	%ecx,28(%eax)
717 	popl	%ebx
718 	popl	%ebp
719 	popl	%edi
720 	popl	%esi
721 	ret
722 .globl	_bn_sqr_comba8
723 .type	_bn_sqr_comba8,@function
724 .align	4
725 _bn_sqr_comba8:
726 L_bn_sqr_comba8_begin:
727 	%ifdef __CET__
728 
729 .byte	243,15,30,251
730 	%endif
731 
732 	pushl	%esi
733 	pushl	%edi
734 	pushl	%ebp
735 	pushl	%ebx
736 	movl	20(%esp),%edi
737 	movl	24(%esp),%esi
738 	xorl	%ebx,%ebx
739 	xorl	%ecx,%ecx
740 	movl	(%esi),%eax
741 	# ############### Calculate word 0
742 	xorl	%ebp,%ebp
743 	# sqr a[0]*a[0]
744 	mull	%eax
745 	addl	%eax,%ebx
746 	adcl	%edx,%ecx
747 	movl	(%esi),%edx
748 	adcl	$0,%ebp
749 	movl	%ebx,(%edi)
750 	movl	4(%esi),%eax
751 	# saved r[0]
752 	# ############### Calculate word 1
753 	xorl	%ebx,%ebx
754 	# sqr a[1]*a[0]
755 	mull	%edx
756 	addl	%eax,%eax
757 	adcl	%edx,%edx
758 	adcl	$0,%ebx
759 	addl	%eax,%ecx
760 	adcl	%edx,%ebp
761 	movl	8(%esi),%eax
762 	adcl	$0,%ebx
763 	movl	%ecx,4(%edi)
764 	movl	(%esi),%edx
765 	# saved r[1]
766 	# ############### Calculate word 2
767 	xorl	%ecx,%ecx
768 	# sqr a[2]*a[0]
769 	mull	%edx
770 	addl	%eax,%eax
771 	adcl	%edx,%edx
772 	adcl	$0,%ecx
773 	addl	%eax,%ebp
774 	adcl	%edx,%ebx
775 	movl	4(%esi),%eax
776 	adcl	$0,%ecx
777 	# sqr a[1]*a[1]
778 	mull	%eax
779 	addl	%eax,%ebp
780 	adcl	%edx,%ebx
781 	movl	(%esi),%edx
782 	adcl	$0,%ecx
783 	movl	%ebp,8(%edi)
784 	movl	12(%esi),%eax
785 	# saved r[2]
786 	# ############### Calculate word 3
787 	xorl	%ebp,%ebp
788 	# sqr a[3]*a[0]
789 	mull	%edx
790 	addl	%eax,%eax
791 	adcl	%edx,%edx
792 	adcl	$0,%ebp
793 	addl	%eax,%ebx
794 	adcl	%edx,%ecx
795 	movl	8(%esi),%eax
796 	adcl	$0,%ebp
797 	movl	4(%esi),%edx
798 	# sqr a[2]*a[1]
799 	mull	%edx
800 	addl	%eax,%eax
801 	adcl	%edx,%edx
802 	adcl	$0,%ebp
803 	addl	%eax,%ebx
804 	adcl	%edx,%ecx
805 	movl	16(%esi),%eax
806 	adcl	$0,%ebp
807 	movl	%ebx,12(%edi)
808 	movl	(%esi),%edx
809 	# saved r[3]
810 	# ############### Calculate word 4
811 	xorl	%ebx,%ebx
812 	# sqr a[4]*a[0]
813 	mull	%edx
814 	addl	%eax,%eax
815 	adcl	%edx,%edx
816 	adcl	$0,%ebx
817 	addl	%eax,%ecx
818 	adcl	%edx,%ebp
819 	movl	12(%esi),%eax
820 	adcl	$0,%ebx
821 	movl	4(%esi),%edx
822 	# sqr a[3]*a[1]
823 	mull	%edx
824 	addl	%eax,%eax
825 	adcl	%edx,%edx
826 	adcl	$0,%ebx
827 	addl	%eax,%ecx
828 	adcl	%edx,%ebp
829 	movl	8(%esi),%eax
830 	adcl	$0,%ebx
831 	# sqr a[2]*a[2]
832 	mull	%eax
833 	addl	%eax,%ecx
834 	adcl	%edx,%ebp
835 	movl	(%esi),%edx
836 	adcl	$0,%ebx
837 	movl	%ecx,16(%edi)
838 	movl	20(%esi),%eax
839 	# saved r[4]
840 	# ############### Calculate word 5
841 	xorl	%ecx,%ecx
842 	# sqr a[5]*a[0]
843 	mull	%edx
844 	addl	%eax,%eax
845 	adcl	%edx,%edx
846 	adcl	$0,%ecx
847 	addl	%eax,%ebp
848 	adcl	%edx,%ebx
849 	movl	16(%esi),%eax
850 	adcl	$0,%ecx
851 	movl	4(%esi),%edx
852 	# sqr a[4]*a[1]
853 	mull	%edx
854 	addl	%eax,%eax
855 	adcl	%edx,%edx
856 	adcl	$0,%ecx
857 	addl	%eax,%ebp
858 	adcl	%edx,%ebx
859 	movl	12(%esi),%eax
860 	adcl	$0,%ecx
861 	movl	8(%esi),%edx
862 	# sqr a[3]*a[2]
863 	mull	%edx
864 	addl	%eax,%eax
865 	adcl	%edx,%edx
866 	adcl	$0,%ecx
867 	addl	%eax,%ebp
868 	adcl	%edx,%ebx
869 	movl	24(%esi),%eax
870 	adcl	$0,%ecx
871 	movl	%ebp,20(%edi)
872 	movl	(%esi),%edx
873 	# saved r[5]
874 	# ############### Calculate word 6
875 	xorl	%ebp,%ebp
876 	# sqr a[6]*a[0]
877 	mull	%edx
878 	addl	%eax,%eax
879 	adcl	%edx,%edx
880 	adcl	$0,%ebp
881 	addl	%eax,%ebx
882 	adcl	%edx,%ecx
883 	movl	20(%esi),%eax
884 	adcl	$0,%ebp
885 	movl	4(%esi),%edx
886 	# sqr a[5]*a[1]
887 	mull	%edx
888 	addl	%eax,%eax
889 	adcl	%edx,%edx
890 	adcl	$0,%ebp
891 	addl	%eax,%ebx
892 	adcl	%edx,%ecx
893 	movl	16(%esi),%eax
894 	adcl	$0,%ebp
895 	movl	8(%esi),%edx
896 	# sqr a[4]*a[2]
897 	mull	%edx
898 	addl	%eax,%eax
899 	adcl	%edx,%edx
900 	adcl	$0,%ebp
901 	addl	%eax,%ebx
902 	adcl	%edx,%ecx
903 	movl	12(%esi),%eax
904 	adcl	$0,%ebp
905 	# sqr a[3]*a[3]
906 	mull	%eax
907 	addl	%eax,%ebx
908 	adcl	%edx,%ecx
909 	movl	(%esi),%edx
910 	adcl	$0,%ebp
911 	movl	%ebx,24(%edi)
912 	movl	28(%esi),%eax
913 	# saved r[6]
914 	# ############### Calculate word 7
915 	xorl	%ebx,%ebx
916 	# sqr a[7]*a[0]
917 	mull	%edx
918 	addl	%eax,%eax
919 	adcl	%edx,%edx
920 	adcl	$0,%ebx
921 	addl	%eax,%ecx
922 	adcl	%edx,%ebp
923 	movl	24(%esi),%eax
924 	adcl	$0,%ebx
925 	movl	4(%esi),%edx
926 	# sqr a[6]*a[1]
927 	mull	%edx
928 	addl	%eax,%eax
929 	adcl	%edx,%edx
930 	adcl	$0,%ebx
931 	addl	%eax,%ecx
932 	adcl	%edx,%ebp
933 	movl	20(%esi),%eax
934 	adcl	$0,%ebx
935 	movl	8(%esi),%edx
936 	# sqr a[5]*a[2]
937 	mull	%edx
938 	addl	%eax,%eax
939 	adcl	%edx,%edx
940 	adcl	$0,%ebx
941 	addl	%eax,%ecx
942 	adcl	%edx,%ebp
943 	movl	16(%esi),%eax
944 	adcl	$0,%ebx
945 	movl	12(%esi),%edx
946 	# sqr a[4]*a[3]
947 	mull	%edx
948 	addl	%eax,%eax
949 	adcl	%edx,%edx
950 	adcl	$0,%ebx
951 	addl	%eax,%ecx
952 	adcl	%edx,%ebp
953 	movl	28(%esi),%eax
954 	adcl	$0,%ebx
955 	movl	%ecx,28(%edi)
956 	movl	4(%esi),%edx
957 	# saved r[7]
958 	# ############### Calculate word 8
959 	xorl	%ecx,%ecx
960 	# sqr a[7]*a[1]
961 	mull	%edx
962 	addl	%eax,%eax
963 	adcl	%edx,%edx
964 	adcl	$0,%ecx
965 	addl	%eax,%ebp
966 	adcl	%edx,%ebx
967 	movl	24(%esi),%eax
968 	adcl	$0,%ecx
969 	movl	8(%esi),%edx
970 	# sqr a[6]*a[2]
971 	mull	%edx
972 	addl	%eax,%eax
973 	adcl	%edx,%edx
974 	adcl	$0,%ecx
975 	addl	%eax,%ebp
976 	adcl	%edx,%ebx
977 	movl	20(%esi),%eax
978 	adcl	$0,%ecx
979 	movl	12(%esi),%edx
980 	# sqr a[5]*a[3]
981 	mull	%edx
982 	addl	%eax,%eax
983 	adcl	%edx,%edx
984 	adcl	$0,%ecx
985 	addl	%eax,%ebp
986 	adcl	%edx,%ebx
987 	movl	16(%esi),%eax
988 	adcl	$0,%ecx
989 	# sqr a[4]*a[4]
990 	mull	%eax
991 	addl	%eax,%ebp
992 	adcl	%edx,%ebx
993 	movl	8(%esi),%edx
994 	adcl	$0,%ecx
995 	movl	%ebp,32(%edi)
996 	movl	28(%esi),%eax
997 	# saved r[8]
998 	# ############### Calculate word 9
999 	xorl	%ebp,%ebp
1000 	# sqr a[7]*a[2]
1001 	mull	%edx
1002 	addl	%eax,%eax
1003 	adcl	%edx,%edx
1004 	adcl	$0,%ebp
1005 	addl	%eax,%ebx
1006 	adcl	%edx,%ecx
1007 	movl	24(%esi),%eax
1008 	adcl	$0,%ebp
1009 	movl	12(%esi),%edx
1010 	# sqr a[6]*a[3]
1011 	mull	%edx
1012 	addl	%eax,%eax
1013 	adcl	%edx,%edx
1014 	adcl	$0,%ebp
1015 	addl	%eax,%ebx
1016 	adcl	%edx,%ecx
1017 	movl	20(%esi),%eax
1018 	adcl	$0,%ebp
1019 	movl	16(%esi),%edx
1020 	# sqr a[5]*a[4]
1021 	mull	%edx
1022 	addl	%eax,%eax
1023 	adcl	%edx,%edx
1024 	adcl	$0,%ebp
1025 	addl	%eax,%ebx
1026 	adcl	%edx,%ecx
1027 	movl	28(%esi),%eax
1028 	adcl	$0,%ebp
1029 	movl	%ebx,36(%edi)
1030 	movl	12(%esi),%edx
1031 	# saved r[9]
1032 	# ############### Calculate word 10
1033 	xorl	%ebx,%ebx
1034 	# sqr a[7]*a[3]
1035 	mull	%edx
1036 	addl	%eax,%eax
1037 	adcl	%edx,%edx
1038 	adcl	$0,%ebx
1039 	addl	%eax,%ecx
1040 	adcl	%edx,%ebp
1041 	movl	24(%esi),%eax
1042 	adcl	$0,%ebx
1043 	movl	16(%esi),%edx
1044 	# sqr a[6]*a[4]
1045 	mull	%edx
1046 	addl	%eax,%eax
1047 	adcl	%edx,%edx
1048 	adcl	$0,%ebx
1049 	addl	%eax,%ecx
1050 	adcl	%edx,%ebp
1051 	movl	20(%esi),%eax
1052 	adcl	$0,%ebx
1053 	# sqr a[5]*a[5]
1054 	mull	%eax
1055 	addl	%eax,%ecx
1056 	adcl	%edx,%ebp
1057 	movl	16(%esi),%edx
1058 	adcl	$0,%ebx
1059 	movl	%ecx,40(%edi)
1060 	movl	28(%esi),%eax
1061 	# saved r[10]
1062 	# ############### Calculate word 11
1063 	xorl	%ecx,%ecx
1064 	# sqr a[7]*a[4]
1065 	mull	%edx
1066 	addl	%eax,%eax
1067 	adcl	%edx,%edx
1068 	adcl	$0,%ecx
1069 	addl	%eax,%ebp
1070 	adcl	%edx,%ebx
1071 	movl	24(%esi),%eax
1072 	adcl	$0,%ecx
1073 	movl	20(%esi),%edx
1074 	# sqr a[6]*a[5]
1075 	mull	%edx
1076 	addl	%eax,%eax
1077 	adcl	%edx,%edx
1078 	adcl	$0,%ecx
1079 	addl	%eax,%ebp
1080 	adcl	%edx,%ebx
1081 	movl	28(%esi),%eax
1082 	adcl	$0,%ecx
1083 	movl	%ebp,44(%edi)
1084 	movl	20(%esi),%edx
1085 	# saved r[11]
1086 	# ############### Calculate word 12
1087 	xorl	%ebp,%ebp
1088 	# sqr a[7]*a[5]
1089 	mull	%edx
1090 	addl	%eax,%eax
1091 	adcl	%edx,%edx
1092 	adcl	$0,%ebp
1093 	addl	%eax,%ebx
1094 	adcl	%edx,%ecx
1095 	movl	24(%esi),%eax
1096 	adcl	$0,%ebp
1097 	# sqr a[6]*a[6]
1098 	mull	%eax
1099 	addl	%eax,%ebx
1100 	adcl	%edx,%ecx
1101 	movl	24(%esi),%edx
1102 	adcl	$0,%ebp
1103 	movl	%ebx,48(%edi)
1104 	movl	28(%esi),%eax
1105 	# saved r[12]
1106 	# ############### Calculate word 13
1107 	xorl	%ebx,%ebx
1108 	# sqr a[7]*a[6]
1109 	mull	%edx
1110 	addl	%eax,%eax
1111 	adcl	%edx,%edx
1112 	adcl	$0,%ebx
1113 	addl	%eax,%ecx
1114 	adcl	%edx,%ebp
1115 	movl	28(%esi),%eax
1116 	adcl	$0,%ebx
1117 	movl	%ecx,52(%edi)
1118 	# saved r[13]
1119 	# ############### Calculate word 14
1120 	xorl	%ecx,%ecx
1121 	# sqr a[7]*a[7]
1122 	mull	%eax
1123 	addl	%eax,%ebp
1124 	adcl	%edx,%ebx
1125 	adcl	$0,%ecx
1126 	movl	%ebp,56(%edi)
1127 	# saved r[14]
1128 	movl	%ebx,60(%edi)
1129 	popl	%ebx
1130 	popl	%ebp
1131 	popl	%edi
1132 	popl	%esi
1133 	ret
1134 .globl	_bn_sqr_comba4
1135 .type	_bn_sqr_comba4,@function
1136 .align	4
1137 _bn_sqr_comba4:
1138 L_bn_sqr_comba4_begin:
1139 	%ifdef __CET__
1140 
1141 .byte	243,15,30,251
1142 	%endif
1143 
1144 	pushl	%esi
1145 	pushl	%edi
1146 	pushl	%ebp
1147 	pushl	%ebx
1148 	movl	20(%esp),%edi
1149 	movl	24(%esp),%esi
1150 	xorl	%ebx,%ebx
1151 	xorl	%ecx,%ecx
1152 	movl	(%esi),%eax
1153 	# ############### Calculate word 0
1154 	xorl	%ebp,%ebp
1155 	# sqr a[0]*a[0]
1156 	mull	%eax
1157 	addl	%eax,%ebx
1158 	adcl	%edx,%ecx
1159 	movl	(%esi),%edx
1160 	adcl	$0,%ebp
1161 	movl	%ebx,(%edi)
1162 	movl	4(%esi),%eax
1163 	# saved r[0]
1164 	# ############### Calculate word 1
1165 	xorl	%ebx,%ebx
1166 	# sqr a[1]*a[0]
1167 	mull	%edx
1168 	addl	%eax,%eax
1169 	adcl	%edx,%edx
1170 	adcl	$0,%ebx
1171 	addl	%eax,%ecx
1172 	adcl	%edx,%ebp
1173 	movl	8(%esi),%eax
1174 	adcl	$0,%ebx
1175 	movl	%ecx,4(%edi)
1176 	movl	(%esi),%edx
1177 	# saved r[1]
1178 	# ############### Calculate word 2
1179 	xorl	%ecx,%ecx
1180 	# sqr a[2]*a[0]
1181 	mull	%edx
1182 	addl	%eax,%eax
1183 	adcl	%edx,%edx
1184 	adcl	$0,%ecx
1185 	addl	%eax,%ebp
1186 	adcl	%edx,%ebx
1187 	movl	4(%esi),%eax
1188 	adcl	$0,%ecx
1189 	# sqr a[1]*a[1]
1190 	mull	%eax
1191 	addl	%eax,%ebp
1192 	adcl	%edx,%ebx
1193 	movl	(%esi),%edx
1194 	adcl	$0,%ecx
1195 	movl	%ebp,8(%edi)
1196 	movl	12(%esi),%eax
1197 	# saved r[2]
1198 	# ############### Calculate word 3
1199 	xorl	%ebp,%ebp
1200 	# sqr a[3]*a[0]
1201 	mull	%edx
1202 	addl	%eax,%eax
1203 	adcl	%edx,%edx
1204 	adcl	$0,%ebp
1205 	addl	%eax,%ebx
1206 	adcl	%edx,%ecx
1207 	movl	8(%esi),%eax
1208 	adcl	$0,%ebp
1209 	movl	4(%esi),%edx
1210 	# sqr a[2]*a[1]
1211 	mull	%edx
1212 	addl	%eax,%eax
1213 	adcl	%edx,%edx
1214 	adcl	$0,%ebp
1215 	addl	%eax,%ebx
1216 	adcl	%edx,%ecx
1217 	movl	12(%esi),%eax
1218 	adcl	$0,%ebp
1219 	movl	%ebx,12(%edi)
1220 	movl	4(%esi),%edx
1221 	# saved r[3]
1222 	# ############### Calculate word 4
1223 	xorl	%ebx,%ebx
1224 	# sqr a[3]*a[1]
1225 	mull	%edx
1226 	addl	%eax,%eax
1227 	adcl	%edx,%edx
1228 	adcl	$0,%ebx
1229 	addl	%eax,%ecx
1230 	adcl	%edx,%ebp
1231 	movl	8(%esi),%eax
1232 	adcl	$0,%ebx
1233 	# sqr a[2]*a[2]
1234 	mull	%eax
1235 	addl	%eax,%ecx
1236 	adcl	%edx,%ebp
1237 	movl	8(%esi),%edx
1238 	adcl	$0,%ebx
1239 	movl	%ecx,16(%edi)
1240 	movl	12(%esi),%eax
1241 	# saved r[4]
1242 	# ############### Calculate word 5
1243 	xorl	%ecx,%ecx
1244 	# sqr a[3]*a[2]
1245 	mull	%edx
1246 	addl	%eax,%eax
1247 	adcl	%edx,%edx
1248 	adcl	$0,%ecx
1249 	addl	%eax,%ebp
1250 	adcl	%edx,%ebx
1251 	movl	12(%esi),%eax
1252 	adcl	$0,%ecx
1253 	movl	%ebp,20(%edi)
1254 	# saved r[5]
1255 	# ############### Calculate word 6
1256 	xorl	%ebp,%ebp
1257 	# sqr a[3]*a[3]
1258 	mull	%eax
1259 	addl	%eax,%ebx
1260 	adcl	%edx,%ecx
1261 	adcl	$0,%ebp
1262 	movl	%ebx,24(%edi)
1263 	# saved r[6]
1264 	movl	%ecx,28(%edi)
1265 	popl	%ebx
1266 	popl	%ebp
1267 	popl	%edi
1268 	popl	%esi
1269 	ret
1270