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