Home | History | Annotate | Line # | Download | only in i386
      1 #include <machine/asm.h>
      2 .text
      3 .globl	bn_mul_add_words
      4 .type	bn_mul_add_words,@function
      5 .align	16
      6 bn_mul_add_words:
      7 .L_bn_mul_add_words_begin:
      8 	#ifdef __CET__
      9 
     10 .byte	243,15,30,251
     11 	#endif
     12 
     13 	call	.L000PIC_me_up
     14 .L000PIC_me_up:
     15 	popl	%eax
     16 	leal	OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax
     17 	btl	$26,(%eax)
     18 	jnc	.L001maw_non_sse2
     19 	movl	4(%esp),%eax
     20 	movl	8(%esp),%edx
     21 	movl	12(%esp),%ecx
     22 	movd	16(%esp),%mm0
     23 	pxor	%mm1,%mm1
     24 	jmp	.L002maw_sse2_entry
     25 .align	16
     26 .L003maw_sse2_unrolled:
     27 	movd	(%eax),%mm3
     28 	paddq	%mm3,%mm1
     29 	movd	(%edx),%mm2
     30 	pmuludq	%mm0,%mm2
     31 	movd	4(%edx),%mm4
     32 	pmuludq	%mm0,%mm4
     33 	movd	8(%edx),%mm6
     34 	pmuludq	%mm0,%mm6
     35 	movd	12(%edx),%mm7
     36 	pmuludq	%mm0,%mm7
     37 	paddq	%mm2,%mm1
     38 	movd	4(%eax),%mm3
     39 	paddq	%mm4,%mm3
     40 	movd	8(%eax),%mm5
     41 	paddq	%mm6,%mm5
     42 	movd	12(%eax),%mm4
     43 	paddq	%mm4,%mm7
     44 	movd	%mm1,(%eax)
     45 	movd	16(%edx),%mm2
     46 	pmuludq	%mm0,%mm2
     47 	psrlq	$32,%mm1
     48 	movd	20(%edx),%mm4
     49 	pmuludq	%mm0,%mm4
     50 	paddq	%mm3,%mm1
     51 	movd	24(%edx),%mm6
     52 	pmuludq	%mm0,%mm6
     53 	movd	%mm1,4(%eax)
     54 	psrlq	$32,%mm1
     55 	movd	28(%edx),%mm3
     56 	addl	$32,%edx
     57 	pmuludq	%mm0,%mm3
     58 	paddq	%mm5,%mm1
     59 	movd	16(%eax),%mm5
     60 	paddq	%mm5,%mm2
     61 	movd	%mm1,8(%eax)
     62 	psrlq	$32,%mm1
     63 	paddq	%mm7,%mm1
     64 	movd	20(%eax),%mm5
     65 	paddq	%mm5,%mm4
     66 	movd	%mm1,12(%eax)
     67 	psrlq	$32,%mm1
     68 	paddq	%mm2,%mm1
     69 	movd	24(%eax),%mm5
     70 	paddq	%mm5,%mm6
     71 	movd	%mm1,16(%eax)
     72 	psrlq	$32,%mm1
     73 	paddq	%mm4,%mm1
     74 	movd	28(%eax),%mm5
     75 	paddq	%mm5,%mm3
     76 	movd	%mm1,20(%eax)
     77 	psrlq	$32,%mm1
     78 	paddq	%mm6,%mm1
     79 	movd	%mm1,24(%eax)
     80 	psrlq	$32,%mm1
     81 	paddq	%mm3,%mm1
     82 	movd	%mm1,28(%eax)
     83 	leal	32(%eax),%eax
     84 	psrlq	$32,%mm1
     85 	subl	$8,%ecx
     86 	jz	.L004maw_sse2_exit
     87 .L002maw_sse2_entry:
     88 	testl	$4294967288,%ecx
     89 	jnz	.L003maw_sse2_unrolled
     90 .align	4
     91 .L005maw_sse2_loop:
     92 	movd	(%edx),%mm2
     93 	movd	(%eax),%mm3
     94 	pmuludq	%mm0,%mm2
     95 	leal	4(%edx),%edx
     96 	paddq	%mm3,%mm1
     97 	paddq	%mm2,%mm1
     98 	movd	%mm1,(%eax)
     99 	subl	$1,%ecx
    100 	psrlq	$32,%mm1
    101 	leal	4(%eax),%eax
    102 	jnz	.L005maw_sse2_loop
    103 .L004maw_sse2_exit:
    104 	movd	%mm1,%eax
    105 	emms
    106 	ret
    107 .align	16
    108 .L001maw_non_sse2:
    109 	pushl	%ebp
    110 	pushl	%ebx
    111 	pushl	%esi
    112 	pushl	%edi
    113 
    114 	xorl	%esi,%esi
    115 	movl	20(%esp),%edi
    116 	movl	28(%esp),%ecx
    117 	movl	24(%esp),%ebx
    118 	andl	$4294967288,%ecx
    119 	movl	32(%esp),%ebp
    120 	pushl	%ecx
    121 	jz	.L006maw_finish
    122 .align	16
    123 .L007maw_loop:
    124 
    125 	movl	(%ebx),%eax
    126 	mull	%ebp
    127 	addl	%esi,%eax
    128 	adcl	$0,%edx
    129 	addl	(%edi),%eax
    130 	adcl	$0,%edx
    131 	movl	%eax,(%edi)
    132 	movl	%edx,%esi
    133 
    134 	movl	4(%ebx),%eax
    135 	mull	%ebp
    136 	addl	%esi,%eax
    137 	adcl	$0,%edx
    138 	addl	4(%edi),%eax
    139 	adcl	$0,%edx
    140 	movl	%eax,4(%edi)
    141 	movl	%edx,%esi
    142 
    143 	movl	8(%ebx),%eax
    144 	mull	%ebp
    145 	addl	%esi,%eax
    146 	adcl	$0,%edx
    147 	addl	8(%edi),%eax
    148 	adcl	$0,%edx
    149 	movl	%eax,8(%edi)
    150 	movl	%edx,%esi
    151 
    152 	movl	12(%ebx),%eax
    153 	mull	%ebp
    154 	addl	%esi,%eax
    155 	adcl	$0,%edx
    156 	addl	12(%edi),%eax
    157 	adcl	$0,%edx
    158 	movl	%eax,12(%edi)
    159 	movl	%edx,%esi
    160 
    161 	movl	16(%ebx),%eax
    162 	mull	%ebp
    163 	addl	%esi,%eax
    164 	adcl	$0,%edx
    165 	addl	16(%edi),%eax
    166 	adcl	$0,%edx
    167 	movl	%eax,16(%edi)
    168 	movl	%edx,%esi
    169 
    170 	movl	20(%ebx),%eax
    171 	mull	%ebp
    172 	addl	%esi,%eax
    173 	adcl	$0,%edx
    174 	addl	20(%edi),%eax
    175 	adcl	$0,%edx
    176 	movl	%eax,20(%edi)
    177 	movl	%edx,%esi
    178 
    179 	movl	24(%ebx),%eax
    180 	mull	%ebp
    181 	addl	%esi,%eax
    182 	adcl	$0,%edx
    183 	addl	24(%edi),%eax
    184 	adcl	$0,%edx
    185 	movl	%eax,24(%edi)
    186 	movl	%edx,%esi
    187 
    188 	movl	28(%ebx),%eax
    189 	mull	%ebp
    190 	addl	%esi,%eax
    191 	adcl	$0,%edx
    192 	addl	28(%edi),%eax
    193 	adcl	$0,%edx
    194 	movl	%eax,28(%edi)
    195 	movl	%edx,%esi
    196 
    197 	subl	$8,%ecx
    198 	leal	32(%ebx),%ebx
    199 	leal	32(%edi),%edi
    200 	jnz	.L007maw_loop
    201 .L006maw_finish:
    202 	movl	32(%esp),%ecx
    203 	andl	$7,%ecx
    204 	jnz	.L008maw_finish2
    205 	jmp	.L009maw_end
    206 .L008maw_finish2:
    207 
    208 	movl	(%ebx),%eax
    209 	mull	%ebp
    210 	addl	%esi,%eax
    211 	adcl	$0,%edx
    212 	addl	(%edi),%eax
    213 	adcl	$0,%edx
    214 	decl	%ecx
    215 	movl	%eax,(%edi)
    216 	movl	%edx,%esi
    217 	jz	.L009maw_end
    218 
    219 	movl	4(%ebx),%eax
    220 	mull	%ebp
    221 	addl	%esi,%eax
    222 	adcl	$0,%edx
    223 	addl	4(%edi),%eax
    224 	adcl	$0,%edx
    225 	decl	%ecx
    226 	movl	%eax,4(%edi)
    227 	movl	%edx,%esi
    228 	jz	.L009maw_end
    229 
    230 	movl	8(%ebx),%eax
    231 	mull	%ebp
    232 	addl	%esi,%eax
    233 	adcl	$0,%edx
    234 	addl	8(%edi),%eax
    235 	adcl	$0,%edx
    236 	decl	%ecx
    237 	movl	%eax,8(%edi)
    238 	movl	%edx,%esi
    239 	jz	.L009maw_end
    240 
    241 	movl	12(%ebx),%eax
    242 	mull	%ebp
    243 	addl	%esi,%eax
    244 	adcl	$0,%edx
    245 	addl	12(%edi),%eax
    246 	adcl	$0,%edx
    247 	decl	%ecx
    248 	movl	%eax,12(%edi)
    249 	movl	%edx,%esi
    250 	jz	.L009maw_end
    251 
    252 	movl	16(%ebx),%eax
    253 	mull	%ebp
    254 	addl	%esi,%eax
    255 	adcl	$0,%edx
    256 	addl	16(%edi),%eax
    257 	adcl	$0,%edx
    258 	decl	%ecx
    259 	movl	%eax,16(%edi)
    260 	movl	%edx,%esi
    261 	jz	.L009maw_end
    262 
    263 	movl	20(%ebx),%eax
    264 	mull	%ebp
    265 	addl	%esi,%eax
    266 	adcl	$0,%edx
    267 	addl	20(%edi),%eax
    268 	adcl	$0,%edx
    269 	decl	%ecx
    270 	movl	%eax,20(%edi)
    271 	movl	%edx,%esi
    272 	jz	.L009maw_end
    273 
    274 	movl	24(%ebx),%eax
    275 	mull	%ebp
    276 	addl	%esi,%eax
    277 	adcl	$0,%edx
    278 	addl	24(%edi),%eax
    279 	adcl	$0,%edx
    280 	movl	%eax,24(%edi)
    281 	movl	%edx,%esi
    282 .L009maw_end:
    283 	movl	%esi,%eax
    284 	popl	%ecx
    285 	popl	%edi
    286 	popl	%esi
    287 	popl	%ebx
    288 	popl	%ebp
    289 	ret
    290 .size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
    291 .globl	bn_mul_words
    292 .type	bn_mul_words,@function
    293 .align	16
    294 bn_mul_words:
    295 .L_bn_mul_words_begin:
    296 	#ifdef __CET__
    297 
    298 .byte	243,15,30,251
    299 	#endif
    300 
    301 	call	.L010PIC_me_up
    302 .L010PIC_me_up:
    303 	popl	%eax
    304 	leal	OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax
    305 	btl	$26,(%eax)
    306 	jnc	.L011mw_non_sse2
    307 	movl	4(%esp),%eax
    308 	movl	8(%esp),%edx
    309 	movl	12(%esp),%ecx
    310 	movd	16(%esp),%mm0
    311 	pxor	%mm1,%mm1
    312 .align	16
    313 .L012mw_sse2_loop:
    314 	movd	(%edx),%mm2
    315 	pmuludq	%mm0,%mm2
    316 	leal	4(%edx),%edx
    317 	paddq	%mm2,%mm1
    318 	movd	%mm1,(%eax)
    319 	subl	$1,%ecx
    320 	psrlq	$32,%mm1
    321 	leal	4(%eax),%eax
    322 	jnz	.L012mw_sse2_loop
    323 	movd	%mm1,%eax
    324 	emms
    325 	ret
    326 .align	16
    327 .L011mw_non_sse2:
    328 	pushl	%ebp
    329 	pushl	%ebx
    330 	pushl	%esi
    331 	pushl	%edi
    332 
    333 	xorl	%esi,%esi
    334 	movl	20(%esp),%edi
    335 	movl	24(%esp),%ebx
    336 	movl	28(%esp),%ebp
    337 	movl	32(%esp),%ecx
    338 	andl	$4294967288,%ebp
    339 	jz	.L013mw_finish
    340 .L014mw_loop:
    341 
    342 	movl	(%ebx),%eax
    343 	mull	%ecx
    344 	addl	%esi,%eax
    345 	adcl	$0,%edx
    346 	movl	%eax,(%edi)
    347 	movl	%edx,%esi
    348 
    349 	movl	4(%ebx),%eax
    350 	mull	%ecx
    351 	addl	%esi,%eax
    352 	adcl	$0,%edx
    353 	movl	%eax,4(%edi)
    354 	movl	%edx,%esi
    355 
    356 	movl	8(%ebx),%eax
    357 	mull	%ecx
    358 	addl	%esi,%eax
    359 	adcl	$0,%edx
    360 	movl	%eax,8(%edi)
    361 	movl	%edx,%esi
    362 
    363 	movl	12(%ebx),%eax
    364 	mull	%ecx
    365 	addl	%esi,%eax
    366 	adcl	$0,%edx
    367 	movl	%eax,12(%edi)
    368 	movl	%edx,%esi
    369 
    370 	movl	16(%ebx),%eax
    371 	mull	%ecx
    372 	addl	%esi,%eax
    373 	adcl	$0,%edx
    374 	movl	%eax,16(%edi)
    375 	movl	%edx,%esi
    376 
    377 	movl	20(%ebx),%eax
    378 	mull	%ecx
    379 	addl	%esi,%eax
    380 	adcl	$0,%edx
    381 	movl	%eax,20(%edi)
    382 	movl	%edx,%esi
    383 
    384 	movl	24(%ebx),%eax
    385 	mull	%ecx
    386 	addl	%esi,%eax
    387 	adcl	$0,%edx
    388 	movl	%eax,24(%edi)
    389 	movl	%edx,%esi
    390 
    391 	movl	28(%ebx),%eax
    392 	mull	%ecx
    393 	addl	%esi,%eax
    394 	adcl	$0,%edx
    395 	movl	%eax,28(%edi)
    396 	movl	%edx,%esi
    397 
    398 	addl	$32,%ebx
    399 	addl	$32,%edi
    400 	subl	$8,%ebp
    401 	jz	.L013mw_finish
    402 	jmp	.L014mw_loop
    403 .L013mw_finish:
    404 	movl	28(%esp),%ebp
    405 	andl	$7,%ebp
    406 	jnz	.L015mw_finish2
    407 	jmp	.L016mw_end
    408 .L015mw_finish2:
    409 
    410 	movl	(%ebx),%eax
    411 	mull	%ecx
    412 	addl	%esi,%eax
    413 	adcl	$0,%edx
    414 	movl	%eax,(%edi)
    415 	movl	%edx,%esi
    416 	decl	%ebp
    417 	jz	.L016mw_end
    418 
    419 	movl	4(%ebx),%eax
    420 	mull	%ecx
    421 	addl	%esi,%eax
    422 	adcl	$0,%edx
    423 	movl	%eax,4(%edi)
    424 	movl	%edx,%esi
    425 	decl	%ebp
    426 	jz	.L016mw_end
    427 
    428 	movl	8(%ebx),%eax
    429 	mull	%ecx
    430 	addl	%esi,%eax
    431 	adcl	$0,%edx
    432 	movl	%eax,8(%edi)
    433 	movl	%edx,%esi
    434 	decl	%ebp
    435 	jz	.L016mw_end
    436 
    437 	movl	12(%ebx),%eax
    438 	mull	%ecx
    439 	addl	%esi,%eax
    440 	adcl	$0,%edx
    441 	movl	%eax,12(%edi)
    442 	movl	%edx,%esi
    443 	decl	%ebp
    444 	jz	.L016mw_end
    445 
    446 	movl	16(%ebx),%eax
    447 	mull	%ecx
    448 	addl	%esi,%eax
    449 	adcl	$0,%edx
    450 	movl	%eax,16(%edi)
    451 	movl	%edx,%esi
    452 	decl	%ebp
    453 	jz	.L016mw_end
    454 
    455 	movl	20(%ebx),%eax
    456 	mull	%ecx
    457 	addl	%esi,%eax
    458 	adcl	$0,%edx
    459 	movl	%eax,20(%edi)
    460 	movl	%edx,%esi
    461 	decl	%ebp
    462 	jz	.L016mw_end
    463 
    464 	movl	24(%ebx),%eax
    465 	mull	%ecx
    466 	addl	%esi,%eax
    467 	adcl	$0,%edx
    468 	movl	%eax,24(%edi)
    469 	movl	%edx,%esi
    470 .L016mw_end:
    471 	movl	%esi,%eax
    472 	popl	%edi
    473 	popl	%esi
    474 	popl	%ebx
    475 	popl	%ebp
    476 	ret
    477 .size	bn_mul_words,.-.L_bn_mul_words_begin
    478 .globl	bn_sqr_words
    479 .type	bn_sqr_words,@function
    480 .align	16
    481 bn_sqr_words:
    482 .L_bn_sqr_words_begin:
    483 	#ifdef __CET__
    484 
    485 .byte	243,15,30,251
    486 	#endif
    487 
    488 	call	.L017PIC_me_up
    489 .L017PIC_me_up:
    490 	popl	%eax
    491 	leal	OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax
    492 	btl	$26,(%eax)
    493 	jnc	.L018sqr_non_sse2
    494 	movl	4(%esp),%eax
    495 	movl	8(%esp),%edx
    496 	movl	12(%esp),%ecx
    497 .align	16
    498 .L019sqr_sse2_loop:
    499 	movd	(%edx),%mm0
    500 	pmuludq	%mm0,%mm0
    501 	leal	4(%edx),%edx
    502 	movq	%mm0,(%eax)
    503 	subl	$1,%ecx
    504 	leal	8(%eax),%eax
    505 	jnz	.L019sqr_sse2_loop
    506 	emms
    507 	ret
    508 .align	16
    509 .L018sqr_non_sse2:
    510 	pushl	%ebp
    511 	pushl	%ebx
    512 	pushl	%esi
    513 	pushl	%edi
    514 
    515 	movl	20(%esp),%esi
    516 	movl	24(%esp),%edi
    517 	movl	28(%esp),%ebx
    518 	andl	$4294967288,%ebx
    519 	jz	.L020sw_finish
    520 .L021sw_loop:
    521 
    522 	movl	(%edi),%eax
    523 	mull	%eax
    524 	movl	%eax,(%esi)
    525 	movl	%edx,4(%esi)
    526 
    527 	movl	4(%edi),%eax
    528 	mull	%eax
    529 	movl	%eax,8(%esi)
    530 	movl	%edx,12(%esi)
    531 
    532 	movl	8(%edi),%eax
    533 	mull	%eax
    534 	movl	%eax,16(%esi)
    535 	movl	%edx,20(%esi)
    536 
    537 	movl	12(%edi),%eax
    538 	mull	%eax
    539 	movl	%eax,24(%esi)
    540 	movl	%edx,28(%esi)
    541 
    542 	movl	16(%edi),%eax
    543 	mull	%eax
    544 	movl	%eax,32(%esi)
    545 	movl	%edx,36(%esi)
    546 
    547 	movl	20(%edi),%eax
    548 	mull	%eax
    549 	movl	%eax,40(%esi)
    550 	movl	%edx,44(%esi)
    551 
    552 	movl	24(%edi),%eax
    553 	mull	%eax
    554 	movl	%eax,48(%esi)
    555 	movl	%edx,52(%esi)
    556 
    557 	movl	28(%edi),%eax
    558 	mull	%eax
    559 	movl	%eax,56(%esi)
    560 	movl	%edx,60(%esi)
    561 
    562 	addl	$32,%edi
    563 	addl	$64,%esi
    564 	subl	$8,%ebx
    565 	jnz	.L021sw_loop
    566 .L020sw_finish:
    567 	movl	28(%esp),%ebx
    568 	andl	$7,%ebx
    569 	jz	.L022sw_end
    570 
    571 	movl	(%edi),%eax
    572 	mull	%eax
    573 	movl	%eax,(%esi)
    574 	decl	%ebx
    575 	movl	%edx,4(%esi)
    576 	jz	.L022sw_end
    577 
    578 	movl	4(%edi),%eax
    579 	mull	%eax
    580 	movl	%eax,8(%esi)
    581 	decl	%ebx
    582 	movl	%edx,12(%esi)
    583 	jz	.L022sw_end
    584 
    585 	movl	8(%edi),%eax
    586 	mull	%eax
    587 	movl	%eax,16(%esi)
    588 	decl	%ebx
    589 	movl	%edx,20(%esi)
    590 	jz	.L022sw_end
    591 
    592 	movl	12(%edi),%eax
    593 	mull	%eax
    594 	movl	%eax,24(%esi)
    595 	decl	%ebx
    596 	movl	%edx,28(%esi)
    597 	jz	.L022sw_end
    598 
    599 	movl	16(%edi),%eax
    600 	mull	%eax
    601 	movl	%eax,32(%esi)
    602 	decl	%ebx
    603 	movl	%edx,36(%esi)
    604 	jz	.L022sw_end
    605 
    606 	movl	20(%edi),%eax
    607 	mull	%eax
    608 	movl	%eax,40(%esi)
    609 	decl	%ebx
    610 	movl	%edx,44(%esi)
    611 	jz	.L022sw_end
    612 
    613 	movl	24(%edi),%eax
    614 	mull	%eax
    615 	movl	%eax,48(%esi)
    616 	movl	%edx,52(%esi)
    617 .L022sw_end:
    618 	popl	%edi
    619 	popl	%esi
    620 	popl	%ebx
    621 	popl	%ebp
    622 	ret
    623 .size	bn_sqr_words,.-.L_bn_sqr_words_begin
    624 .globl	bn_div_words
    625 .type	bn_div_words,@function
    626 .align	16
    627 bn_div_words:
    628 .L_bn_div_words_begin:
    629 	#ifdef __CET__
    630 
    631 .byte	243,15,30,251
    632 	#endif
    633 
    634 	movl	4(%esp),%edx
    635 	movl	8(%esp),%eax
    636 	movl	12(%esp),%ecx
    637 	divl	%ecx
    638 	ret
    639 .size	bn_div_words,.-.L_bn_div_words_begin
    640 .globl	bn_add_words
    641 .type	bn_add_words,@function
    642 .align	16
    643 bn_add_words:
    644 .L_bn_add_words_begin:
    645 	#ifdef __CET__
    646 
    647 .byte	243,15,30,251
    648 	#endif
    649 
    650 	pushl	%ebp
    651 	pushl	%ebx
    652 	pushl	%esi
    653 	pushl	%edi
    654 
    655 	movl	20(%esp),%ebx
    656 	movl	24(%esp),%esi
    657 	movl	28(%esp),%edi
    658 	movl	32(%esp),%ebp
    659 	xorl	%eax,%eax
    660 	andl	$4294967288,%ebp
    661 	jz	.L023aw_finish
    662 .L024aw_loop:
    663 
    664 	movl	(%esi),%ecx
    665 	movl	(%edi),%edx
    666 	addl	%eax,%ecx
    667 	movl	$0,%eax
    668 	adcl	%eax,%eax
    669 	addl	%edx,%ecx
    670 	adcl	$0,%eax
    671 	movl	%ecx,(%ebx)
    672 
    673 	movl	4(%esi),%ecx
    674 	movl	4(%edi),%edx
    675 	addl	%eax,%ecx
    676 	movl	$0,%eax
    677 	adcl	%eax,%eax
    678 	addl	%edx,%ecx
    679 	adcl	$0,%eax
    680 	movl	%ecx,4(%ebx)
    681 
    682 	movl	8(%esi),%ecx
    683 	movl	8(%edi),%edx
    684 	addl	%eax,%ecx
    685 	movl	$0,%eax
    686 	adcl	%eax,%eax
    687 	addl	%edx,%ecx
    688 	adcl	$0,%eax
    689 	movl	%ecx,8(%ebx)
    690 
    691 	movl	12(%esi),%ecx
    692 	movl	12(%edi),%edx
    693 	addl	%eax,%ecx
    694 	movl	$0,%eax
    695 	adcl	%eax,%eax
    696 	addl	%edx,%ecx
    697 	adcl	$0,%eax
    698 	movl	%ecx,12(%ebx)
    699 
    700 	movl	16(%esi),%ecx
    701 	movl	16(%edi),%edx
    702 	addl	%eax,%ecx
    703 	movl	$0,%eax
    704 	adcl	%eax,%eax
    705 	addl	%edx,%ecx
    706 	adcl	$0,%eax
    707 	movl	%ecx,16(%ebx)
    708 
    709 	movl	20(%esi),%ecx
    710 	movl	20(%edi),%edx
    711 	addl	%eax,%ecx
    712 	movl	$0,%eax
    713 	adcl	%eax,%eax
    714 	addl	%edx,%ecx
    715 	adcl	$0,%eax
    716 	movl	%ecx,20(%ebx)
    717 
    718 	movl	24(%esi),%ecx
    719 	movl	24(%edi),%edx
    720 	addl	%eax,%ecx
    721 	movl	$0,%eax
    722 	adcl	%eax,%eax
    723 	addl	%edx,%ecx
    724 	adcl	$0,%eax
    725 	movl	%ecx,24(%ebx)
    726 
    727 	movl	28(%esi),%ecx
    728 	movl	28(%edi),%edx
    729 	addl	%eax,%ecx
    730 	movl	$0,%eax
    731 	adcl	%eax,%eax
    732 	addl	%edx,%ecx
    733 	adcl	$0,%eax
    734 	movl	%ecx,28(%ebx)
    735 
    736 	addl	$32,%esi
    737 	addl	$32,%edi
    738 	addl	$32,%ebx
    739 	subl	$8,%ebp
    740 	jnz	.L024aw_loop
    741 .L023aw_finish:
    742 	movl	32(%esp),%ebp
    743 	andl	$7,%ebp
    744 	jz	.L025aw_end
    745 
    746 	movl	(%esi),%ecx
    747 	movl	(%edi),%edx
    748 	addl	%eax,%ecx
    749 	movl	$0,%eax
    750 	adcl	%eax,%eax
    751 	addl	%edx,%ecx
    752 	adcl	$0,%eax
    753 	decl	%ebp
    754 	movl	%ecx,(%ebx)
    755 	jz	.L025aw_end
    756 
    757 	movl	4(%esi),%ecx
    758 	movl	4(%edi),%edx
    759 	addl	%eax,%ecx
    760 	movl	$0,%eax
    761 	adcl	%eax,%eax
    762 	addl	%edx,%ecx
    763 	adcl	$0,%eax
    764 	decl	%ebp
    765 	movl	%ecx,4(%ebx)
    766 	jz	.L025aw_end
    767 
    768 	movl	8(%esi),%ecx
    769 	movl	8(%edi),%edx
    770 	addl	%eax,%ecx
    771 	movl	$0,%eax
    772 	adcl	%eax,%eax
    773 	addl	%edx,%ecx
    774 	adcl	$0,%eax
    775 	decl	%ebp
    776 	movl	%ecx,8(%ebx)
    777 	jz	.L025aw_end
    778 
    779 	movl	12(%esi),%ecx
    780 	movl	12(%edi),%edx
    781 	addl	%eax,%ecx
    782 	movl	$0,%eax
    783 	adcl	%eax,%eax
    784 	addl	%edx,%ecx
    785 	adcl	$0,%eax
    786 	decl	%ebp
    787 	movl	%ecx,12(%ebx)
    788 	jz	.L025aw_end
    789 
    790 	movl	16(%esi),%ecx
    791 	movl	16(%edi),%edx
    792 	addl	%eax,%ecx
    793 	movl	$0,%eax
    794 	adcl	%eax,%eax
    795 	addl	%edx,%ecx
    796 	adcl	$0,%eax
    797 	decl	%ebp
    798 	movl	%ecx,16(%ebx)
    799 	jz	.L025aw_end
    800 
    801 	movl	20(%esi),%ecx
    802 	movl	20(%edi),%edx
    803 	addl	%eax,%ecx
    804 	movl	$0,%eax
    805 	adcl	%eax,%eax
    806 	addl	%edx,%ecx
    807 	adcl	$0,%eax
    808 	decl	%ebp
    809 	movl	%ecx,20(%ebx)
    810 	jz	.L025aw_end
    811 
    812 	movl	24(%esi),%ecx
    813 	movl	24(%edi),%edx
    814 	addl	%eax,%ecx
    815 	movl	$0,%eax
    816 	adcl	%eax,%eax
    817 	addl	%edx,%ecx
    818 	adcl	$0,%eax
    819 	movl	%ecx,24(%ebx)
    820 .L025aw_end:
    821 	popl	%edi
    822 	popl	%esi
    823 	popl	%ebx
    824 	popl	%ebp
    825 	ret
    826 .size	bn_add_words,.-.L_bn_add_words_begin
    827 .globl	bn_sub_words
    828 .type	bn_sub_words,@function
    829 .align	16
    830 bn_sub_words:
    831 .L_bn_sub_words_begin:
    832 	#ifdef __CET__
    833 
    834 .byte	243,15,30,251
    835 	#endif
    836 
    837 	pushl	%ebp
    838 	pushl	%ebx
    839 	pushl	%esi
    840 	pushl	%edi
    841 
    842 	movl	20(%esp),%ebx
    843 	movl	24(%esp),%esi
    844 	movl	28(%esp),%edi
    845 	movl	32(%esp),%ebp
    846 	xorl	%eax,%eax
    847 	andl	$4294967288,%ebp
    848 	jz	.L026aw_finish
    849 .L027aw_loop:
    850 
    851 	movl	(%esi),%ecx
    852 	movl	(%edi),%edx
    853 	subl	%eax,%ecx
    854 	movl	$0,%eax
    855 	adcl	%eax,%eax
    856 	subl	%edx,%ecx
    857 	adcl	$0,%eax
    858 	movl	%ecx,(%ebx)
    859 
    860 	movl	4(%esi),%ecx
    861 	movl	4(%edi),%edx
    862 	subl	%eax,%ecx
    863 	movl	$0,%eax
    864 	adcl	%eax,%eax
    865 	subl	%edx,%ecx
    866 	adcl	$0,%eax
    867 	movl	%ecx,4(%ebx)
    868 
    869 	movl	8(%esi),%ecx
    870 	movl	8(%edi),%edx
    871 	subl	%eax,%ecx
    872 	movl	$0,%eax
    873 	adcl	%eax,%eax
    874 	subl	%edx,%ecx
    875 	adcl	$0,%eax
    876 	movl	%ecx,8(%ebx)
    877 
    878 	movl	12(%esi),%ecx
    879 	movl	12(%edi),%edx
    880 	subl	%eax,%ecx
    881 	movl	$0,%eax
    882 	adcl	%eax,%eax
    883 	subl	%edx,%ecx
    884 	adcl	$0,%eax
    885 	movl	%ecx,12(%ebx)
    886 
    887 	movl	16(%esi),%ecx
    888 	movl	16(%edi),%edx
    889 	subl	%eax,%ecx
    890 	movl	$0,%eax
    891 	adcl	%eax,%eax
    892 	subl	%edx,%ecx
    893 	adcl	$0,%eax
    894 	movl	%ecx,16(%ebx)
    895 
    896 	movl	20(%esi),%ecx
    897 	movl	20(%edi),%edx
    898 	subl	%eax,%ecx
    899 	movl	$0,%eax
    900 	adcl	%eax,%eax
    901 	subl	%edx,%ecx
    902 	adcl	$0,%eax
    903 	movl	%ecx,20(%ebx)
    904 
    905 	movl	24(%esi),%ecx
    906 	movl	24(%edi),%edx
    907 	subl	%eax,%ecx
    908 	movl	$0,%eax
    909 	adcl	%eax,%eax
    910 	subl	%edx,%ecx
    911 	adcl	$0,%eax
    912 	movl	%ecx,24(%ebx)
    913 
    914 	movl	28(%esi),%ecx
    915 	movl	28(%edi),%edx
    916 	subl	%eax,%ecx
    917 	movl	$0,%eax
    918 	adcl	%eax,%eax
    919 	subl	%edx,%ecx
    920 	adcl	$0,%eax
    921 	movl	%ecx,28(%ebx)
    922 
    923 	addl	$32,%esi
    924 	addl	$32,%edi
    925 	addl	$32,%ebx
    926 	subl	$8,%ebp
    927 	jnz	.L027aw_loop
    928 .L026aw_finish:
    929 	movl	32(%esp),%ebp
    930 	andl	$7,%ebp
    931 	jz	.L028aw_end
    932 
    933 	movl	(%esi),%ecx
    934 	movl	(%edi),%edx
    935 	subl	%eax,%ecx
    936 	movl	$0,%eax
    937 	adcl	%eax,%eax
    938 	subl	%edx,%ecx
    939 	adcl	$0,%eax
    940 	decl	%ebp
    941 	movl	%ecx,(%ebx)
    942 	jz	.L028aw_end
    943 
    944 	movl	4(%esi),%ecx
    945 	movl	4(%edi),%edx
    946 	subl	%eax,%ecx
    947 	movl	$0,%eax
    948 	adcl	%eax,%eax
    949 	subl	%edx,%ecx
    950 	adcl	$0,%eax
    951 	decl	%ebp
    952 	movl	%ecx,4(%ebx)
    953 	jz	.L028aw_end
    954 
    955 	movl	8(%esi),%ecx
    956 	movl	8(%edi),%edx
    957 	subl	%eax,%ecx
    958 	movl	$0,%eax
    959 	adcl	%eax,%eax
    960 	subl	%edx,%ecx
    961 	adcl	$0,%eax
    962 	decl	%ebp
    963 	movl	%ecx,8(%ebx)
    964 	jz	.L028aw_end
    965 
    966 	movl	12(%esi),%ecx
    967 	movl	12(%edi),%edx
    968 	subl	%eax,%ecx
    969 	movl	$0,%eax
    970 	adcl	%eax,%eax
    971 	subl	%edx,%ecx
    972 	adcl	$0,%eax
    973 	decl	%ebp
    974 	movl	%ecx,12(%ebx)
    975 	jz	.L028aw_end
    976 
    977 	movl	16(%esi),%ecx
    978 	movl	16(%edi),%edx
    979 	subl	%eax,%ecx
    980 	movl	$0,%eax
    981 	adcl	%eax,%eax
    982 	subl	%edx,%ecx
    983 	adcl	$0,%eax
    984 	decl	%ebp
    985 	movl	%ecx,16(%ebx)
    986 	jz	.L028aw_end
    987 
    988 	movl	20(%esi),%ecx
    989 	movl	20(%edi),%edx
    990 	subl	%eax,%ecx
    991 	movl	$0,%eax
    992 	adcl	%eax,%eax
    993 	subl	%edx,%ecx
    994 	adcl	$0,%eax
    995 	decl	%ebp
    996 	movl	%ecx,20(%ebx)
    997 	jz	.L028aw_end
    998 
    999 	movl	24(%esi),%ecx
   1000 	movl	24(%edi),%edx
   1001 	subl	%eax,%ecx
   1002 	movl	$0,%eax
   1003 	adcl	%eax,%eax
   1004 	subl	%edx,%ecx
   1005 	adcl	$0,%eax
   1006 	movl	%ecx,24(%ebx)
   1007 .L028aw_end:
   1008 	popl	%edi
   1009 	popl	%esi
   1010 	popl	%ebx
   1011 	popl	%ebp
   1012 	ret
   1013 .size	bn_sub_words,.-.L_bn_sub_words_begin
   1014 .globl	bn_sub_part_words
   1015 .type	bn_sub_part_words,@function
   1016 .align	16
   1017 bn_sub_part_words:
   1018 .L_bn_sub_part_words_begin:
   1019 	#ifdef __CET__
   1020 
   1021 .byte	243,15,30,251
   1022 	#endif
   1023 
   1024 	pushl	%ebp
   1025 	pushl	%ebx
   1026 	pushl	%esi
   1027 	pushl	%edi
   1028 
   1029 	movl	20(%esp),%ebx
   1030 	movl	24(%esp),%esi
   1031 	movl	28(%esp),%edi
   1032 	movl	32(%esp),%ebp
   1033 	xorl	%eax,%eax
   1034 	andl	$4294967288,%ebp
   1035 	jz	.L029aw_finish
   1036 .L030aw_loop:
   1037 
   1038 	movl	(%esi),%ecx
   1039 	movl	(%edi),%edx
   1040 	subl	%eax,%ecx
   1041 	movl	$0,%eax
   1042 	adcl	%eax,%eax
   1043 	subl	%edx,%ecx
   1044 	adcl	$0,%eax
   1045 	movl	%ecx,(%ebx)
   1046 
   1047 	movl	4(%esi),%ecx
   1048 	movl	4(%edi),%edx
   1049 	subl	%eax,%ecx
   1050 	movl	$0,%eax
   1051 	adcl	%eax,%eax
   1052 	subl	%edx,%ecx
   1053 	adcl	$0,%eax
   1054 	movl	%ecx,4(%ebx)
   1055 
   1056 	movl	8(%esi),%ecx
   1057 	movl	8(%edi),%edx
   1058 	subl	%eax,%ecx
   1059 	movl	$0,%eax
   1060 	adcl	%eax,%eax
   1061 	subl	%edx,%ecx
   1062 	adcl	$0,%eax
   1063 	movl	%ecx,8(%ebx)
   1064 
   1065 	movl	12(%esi),%ecx
   1066 	movl	12(%edi),%edx
   1067 	subl	%eax,%ecx
   1068 	movl	$0,%eax
   1069 	adcl	%eax,%eax
   1070 	subl	%edx,%ecx
   1071 	adcl	$0,%eax
   1072 	movl	%ecx,12(%ebx)
   1073 
   1074 	movl	16(%esi),%ecx
   1075 	movl	16(%edi),%edx
   1076 	subl	%eax,%ecx
   1077 	movl	$0,%eax
   1078 	adcl	%eax,%eax
   1079 	subl	%edx,%ecx
   1080 	adcl	$0,%eax
   1081 	movl	%ecx,16(%ebx)
   1082 
   1083 	movl	20(%esi),%ecx
   1084 	movl	20(%edi),%edx
   1085 	subl	%eax,%ecx
   1086 	movl	$0,%eax
   1087 	adcl	%eax,%eax
   1088 	subl	%edx,%ecx
   1089 	adcl	$0,%eax
   1090 	movl	%ecx,20(%ebx)
   1091 
   1092 	movl	24(%esi),%ecx
   1093 	movl	24(%edi),%edx
   1094 	subl	%eax,%ecx
   1095 	movl	$0,%eax
   1096 	adcl	%eax,%eax
   1097 	subl	%edx,%ecx
   1098 	adcl	$0,%eax
   1099 	movl	%ecx,24(%ebx)
   1100 
   1101 	movl	28(%esi),%ecx
   1102 	movl	28(%edi),%edx
   1103 	subl	%eax,%ecx
   1104 	movl	$0,%eax
   1105 	adcl	%eax,%eax
   1106 	subl	%edx,%ecx
   1107 	adcl	$0,%eax
   1108 	movl	%ecx,28(%ebx)
   1109 
   1110 	addl	$32,%esi
   1111 	addl	$32,%edi
   1112 	addl	$32,%ebx
   1113 	subl	$8,%ebp
   1114 	jnz	.L030aw_loop
   1115 .L029aw_finish:
   1116 	movl	32(%esp),%ebp
   1117 	andl	$7,%ebp
   1118 	jz	.L031aw_end
   1119 
   1120 	movl	(%esi),%ecx
   1121 	movl	(%edi),%edx
   1122 	subl	%eax,%ecx
   1123 	movl	$0,%eax
   1124 	adcl	%eax,%eax
   1125 	subl	%edx,%ecx
   1126 	adcl	$0,%eax
   1127 	movl	%ecx,(%ebx)
   1128 	addl	$4,%esi
   1129 	addl	$4,%edi
   1130 	addl	$4,%ebx
   1131 	decl	%ebp
   1132 	jz	.L031aw_end
   1133 
   1134 	movl	(%esi),%ecx
   1135 	movl	(%edi),%edx
   1136 	subl	%eax,%ecx
   1137 	movl	$0,%eax
   1138 	adcl	%eax,%eax
   1139 	subl	%edx,%ecx
   1140 	adcl	$0,%eax
   1141 	movl	%ecx,(%ebx)
   1142 	addl	$4,%esi
   1143 	addl	$4,%edi
   1144 	addl	$4,%ebx
   1145 	decl	%ebp
   1146 	jz	.L031aw_end
   1147 
   1148 	movl	(%esi),%ecx
   1149 	movl	(%edi),%edx
   1150 	subl	%eax,%ecx
   1151 	movl	$0,%eax
   1152 	adcl	%eax,%eax
   1153 	subl	%edx,%ecx
   1154 	adcl	$0,%eax
   1155 	movl	%ecx,(%ebx)
   1156 	addl	$4,%esi
   1157 	addl	$4,%edi
   1158 	addl	$4,%ebx
   1159 	decl	%ebp
   1160 	jz	.L031aw_end
   1161 
   1162 	movl	(%esi),%ecx
   1163 	movl	(%edi),%edx
   1164 	subl	%eax,%ecx
   1165 	movl	$0,%eax
   1166 	adcl	%eax,%eax
   1167 	subl	%edx,%ecx
   1168 	adcl	$0,%eax
   1169 	movl	%ecx,(%ebx)
   1170 	addl	$4,%esi
   1171 	addl	$4,%edi
   1172 	addl	$4,%ebx
   1173 	decl	%ebp
   1174 	jz	.L031aw_end
   1175 
   1176 	movl	(%esi),%ecx
   1177 	movl	(%edi),%edx
   1178 	subl	%eax,%ecx
   1179 	movl	$0,%eax
   1180 	adcl	%eax,%eax
   1181 	subl	%edx,%ecx
   1182 	adcl	$0,%eax
   1183 	movl	%ecx,(%ebx)
   1184 	addl	$4,%esi
   1185 	addl	$4,%edi
   1186 	addl	$4,%ebx
   1187 	decl	%ebp
   1188 	jz	.L031aw_end
   1189 
   1190 	movl	(%esi),%ecx
   1191 	movl	(%edi),%edx
   1192 	subl	%eax,%ecx
   1193 	movl	$0,%eax
   1194 	adcl	%eax,%eax
   1195 	subl	%edx,%ecx
   1196 	adcl	$0,%eax
   1197 	movl	%ecx,(%ebx)
   1198 	addl	$4,%esi
   1199 	addl	$4,%edi
   1200 	addl	$4,%ebx
   1201 	decl	%ebp
   1202 	jz	.L031aw_end
   1203 
   1204 	movl	(%esi),%ecx
   1205 	movl	(%edi),%edx
   1206 	subl	%eax,%ecx
   1207 	movl	$0,%eax
   1208 	adcl	%eax,%eax
   1209 	subl	%edx,%ecx
   1210 	adcl	$0,%eax
   1211 	movl	%ecx,(%ebx)
   1212 	addl	$4,%esi
   1213 	addl	$4,%edi
   1214 	addl	$4,%ebx
   1215 .L031aw_end:
   1216 	cmpl	$0,36(%esp)
   1217 	je	.L032pw_end
   1218 	movl	36(%esp),%ebp
   1219 	cmpl	$0,%ebp
   1220 	je	.L032pw_end
   1221 	jge	.L033pw_pos
   1222 
   1223 	movl	$0,%edx
   1224 	subl	%ebp,%edx
   1225 	movl	%edx,%ebp
   1226 	andl	$4294967288,%ebp
   1227 	jz	.L034pw_neg_finish
   1228 .L035pw_neg_loop:
   1229 
   1230 	movl	$0,%ecx
   1231 	movl	(%edi),%edx
   1232 	subl	%eax,%ecx
   1233 	movl	$0,%eax
   1234 	adcl	%eax,%eax
   1235 	subl	%edx,%ecx
   1236 	adcl	$0,%eax
   1237 	movl	%ecx,(%ebx)
   1238 
   1239 	movl	$0,%ecx
   1240 	movl	4(%edi),%edx
   1241 	subl	%eax,%ecx
   1242 	movl	$0,%eax
   1243 	adcl	%eax,%eax
   1244 	subl	%edx,%ecx
   1245 	adcl	$0,%eax
   1246 	movl	%ecx,4(%ebx)
   1247 
   1248 	movl	$0,%ecx
   1249 	movl	8(%edi),%edx
   1250 	subl	%eax,%ecx
   1251 	movl	$0,%eax
   1252 	adcl	%eax,%eax
   1253 	subl	%edx,%ecx
   1254 	adcl	$0,%eax
   1255 	movl	%ecx,8(%ebx)
   1256 
   1257 	movl	$0,%ecx
   1258 	movl	12(%edi),%edx
   1259 	subl	%eax,%ecx
   1260 	movl	$0,%eax
   1261 	adcl	%eax,%eax
   1262 	subl	%edx,%ecx
   1263 	adcl	$0,%eax
   1264 	movl	%ecx,12(%ebx)
   1265 
   1266 	movl	$0,%ecx
   1267 	movl	16(%edi),%edx
   1268 	subl	%eax,%ecx
   1269 	movl	$0,%eax
   1270 	adcl	%eax,%eax
   1271 	subl	%edx,%ecx
   1272 	adcl	$0,%eax
   1273 	movl	%ecx,16(%ebx)
   1274 
   1275 	movl	$0,%ecx
   1276 	movl	20(%edi),%edx
   1277 	subl	%eax,%ecx
   1278 	movl	$0,%eax
   1279 	adcl	%eax,%eax
   1280 	subl	%edx,%ecx
   1281 	adcl	$0,%eax
   1282 	movl	%ecx,20(%ebx)
   1283 
   1284 	movl	$0,%ecx
   1285 	movl	24(%edi),%edx
   1286 	subl	%eax,%ecx
   1287 	movl	$0,%eax
   1288 	adcl	%eax,%eax
   1289 	subl	%edx,%ecx
   1290 	adcl	$0,%eax
   1291 	movl	%ecx,24(%ebx)
   1292 
   1293 	movl	$0,%ecx
   1294 	movl	28(%edi),%edx
   1295 	subl	%eax,%ecx
   1296 	movl	$0,%eax
   1297 	adcl	%eax,%eax
   1298 	subl	%edx,%ecx
   1299 	adcl	$0,%eax
   1300 	movl	%ecx,28(%ebx)
   1301 
   1302 	addl	$32,%edi
   1303 	addl	$32,%ebx
   1304 	subl	$8,%ebp
   1305 	jnz	.L035pw_neg_loop
   1306 .L034pw_neg_finish:
   1307 	movl	36(%esp),%edx
   1308 	movl	$0,%ebp
   1309 	subl	%edx,%ebp
   1310 	andl	$7,%ebp
   1311 	jz	.L032pw_end
   1312 
   1313 	movl	$0,%ecx
   1314 	movl	(%edi),%edx
   1315 	subl	%eax,%ecx
   1316 	movl	$0,%eax
   1317 	adcl	%eax,%eax
   1318 	subl	%edx,%ecx
   1319 	adcl	$0,%eax
   1320 	decl	%ebp
   1321 	movl	%ecx,(%ebx)
   1322 	jz	.L032pw_end
   1323 
   1324 	movl	$0,%ecx
   1325 	movl	4(%edi),%edx
   1326 	subl	%eax,%ecx
   1327 	movl	$0,%eax
   1328 	adcl	%eax,%eax
   1329 	subl	%edx,%ecx
   1330 	adcl	$0,%eax
   1331 	decl	%ebp
   1332 	movl	%ecx,4(%ebx)
   1333 	jz	.L032pw_end
   1334 
   1335 	movl	$0,%ecx
   1336 	movl	8(%edi),%edx
   1337 	subl	%eax,%ecx
   1338 	movl	$0,%eax
   1339 	adcl	%eax,%eax
   1340 	subl	%edx,%ecx
   1341 	adcl	$0,%eax
   1342 	decl	%ebp
   1343 	movl	%ecx,8(%ebx)
   1344 	jz	.L032pw_end
   1345 
   1346 	movl	$0,%ecx
   1347 	movl	12(%edi),%edx
   1348 	subl	%eax,%ecx
   1349 	movl	$0,%eax
   1350 	adcl	%eax,%eax
   1351 	subl	%edx,%ecx
   1352 	adcl	$0,%eax
   1353 	decl	%ebp
   1354 	movl	%ecx,12(%ebx)
   1355 	jz	.L032pw_end
   1356 
   1357 	movl	$0,%ecx
   1358 	movl	16(%edi),%edx
   1359 	subl	%eax,%ecx
   1360 	movl	$0,%eax
   1361 	adcl	%eax,%eax
   1362 	subl	%edx,%ecx
   1363 	adcl	$0,%eax
   1364 	decl	%ebp
   1365 	movl	%ecx,16(%ebx)
   1366 	jz	.L032pw_end
   1367 
   1368 	movl	$0,%ecx
   1369 	movl	20(%edi),%edx
   1370 	subl	%eax,%ecx
   1371 	movl	$0,%eax
   1372 	adcl	%eax,%eax
   1373 	subl	%edx,%ecx
   1374 	adcl	$0,%eax
   1375 	decl	%ebp
   1376 	movl	%ecx,20(%ebx)
   1377 	jz	.L032pw_end
   1378 
   1379 	movl	$0,%ecx
   1380 	movl	24(%edi),%edx
   1381 	subl	%eax,%ecx
   1382 	movl	$0,%eax
   1383 	adcl	%eax,%eax
   1384 	subl	%edx,%ecx
   1385 	adcl	$0,%eax
   1386 	movl	%ecx,24(%ebx)
   1387 	jmp	.L032pw_end
   1388 .L033pw_pos:
   1389 	andl	$4294967288,%ebp
   1390 	jz	.L036pw_pos_finish
   1391 .L037pw_pos_loop:
   1392 
   1393 	movl	(%esi),%ecx
   1394 	subl	%eax,%ecx
   1395 	movl	%ecx,(%ebx)
   1396 	jnc	.L038pw_nc0
   1397 
   1398 	movl	4(%esi),%ecx
   1399 	subl	%eax,%ecx
   1400 	movl	%ecx,4(%ebx)
   1401 	jnc	.L039pw_nc1
   1402 
   1403 	movl	8(%esi),%ecx
   1404 	subl	%eax,%ecx
   1405 	movl	%ecx,8(%ebx)
   1406 	jnc	.L040pw_nc2
   1407 
   1408 	movl	12(%esi),%ecx
   1409 	subl	%eax,%ecx
   1410 	movl	%ecx,12(%ebx)
   1411 	jnc	.L041pw_nc3
   1412 
   1413 	movl	16(%esi),%ecx
   1414 	subl	%eax,%ecx
   1415 	movl	%ecx,16(%ebx)
   1416 	jnc	.L042pw_nc4
   1417 
   1418 	movl	20(%esi),%ecx
   1419 	subl	%eax,%ecx
   1420 	movl	%ecx,20(%ebx)
   1421 	jnc	.L043pw_nc5
   1422 
   1423 	movl	24(%esi),%ecx
   1424 	subl	%eax,%ecx
   1425 	movl	%ecx,24(%ebx)
   1426 	jnc	.L044pw_nc6
   1427 
   1428 	movl	28(%esi),%ecx
   1429 	subl	%eax,%ecx
   1430 	movl	%ecx,28(%ebx)
   1431 	jnc	.L045pw_nc7
   1432 
   1433 	addl	$32,%esi
   1434 	addl	$32,%ebx
   1435 	subl	$8,%ebp
   1436 	jnz	.L037pw_pos_loop
   1437 .L036pw_pos_finish:
   1438 	movl	36(%esp),%ebp
   1439 	andl	$7,%ebp
   1440 	jz	.L032pw_end
   1441 
   1442 	movl	(%esi),%ecx
   1443 	subl	%eax,%ecx
   1444 	movl	%ecx,(%ebx)
   1445 	jnc	.L046pw_tail_nc0
   1446 	decl	%ebp
   1447 	jz	.L032pw_end
   1448 
   1449 	movl	4(%esi),%ecx
   1450 	subl	%eax,%ecx
   1451 	movl	%ecx,4(%ebx)
   1452 	jnc	.L047pw_tail_nc1
   1453 	decl	%ebp
   1454 	jz	.L032pw_end
   1455 
   1456 	movl	8(%esi),%ecx
   1457 	subl	%eax,%ecx
   1458 	movl	%ecx,8(%ebx)
   1459 	jnc	.L048pw_tail_nc2
   1460 	decl	%ebp
   1461 	jz	.L032pw_end
   1462 
   1463 	movl	12(%esi),%ecx
   1464 	subl	%eax,%ecx
   1465 	movl	%ecx,12(%ebx)
   1466 	jnc	.L049pw_tail_nc3
   1467 	decl	%ebp
   1468 	jz	.L032pw_end
   1469 
   1470 	movl	16(%esi),%ecx
   1471 	subl	%eax,%ecx
   1472 	movl	%ecx,16(%ebx)
   1473 	jnc	.L050pw_tail_nc4
   1474 	decl	%ebp
   1475 	jz	.L032pw_end
   1476 
   1477 	movl	20(%esi),%ecx
   1478 	subl	%eax,%ecx
   1479 	movl	%ecx,20(%ebx)
   1480 	jnc	.L051pw_tail_nc5
   1481 	decl	%ebp
   1482 	jz	.L032pw_end
   1483 
   1484 	movl	24(%esi),%ecx
   1485 	subl	%eax,%ecx
   1486 	movl	%ecx,24(%ebx)
   1487 	jnc	.L052pw_tail_nc6
   1488 	movl	$1,%eax
   1489 	jmp	.L032pw_end
   1490 .L053pw_nc_loop:
   1491 	movl	(%esi),%ecx
   1492 	movl	%ecx,(%ebx)
   1493 .L038pw_nc0:
   1494 	movl	4(%esi),%ecx
   1495 	movl	%ecx,4(%ebx)
   1496 .L039pw_nc1:
   1497 	movl	8(%esi),%ecx
   1498 	movl	%ecx,8(%ebx)
   1499 .L040pw_nc2:
   1500 	movl	12(%esi),%ecx
   1501 	movl	%ecx,12(%ebx)
   1502 .L041pw_nc3:
   1503 	movl	16(%esi),%ecx
   1504 	movl	%ecx,16(%ebx)
   1505 .L042pw_nc4:
   1506 	movl	20(%esi),%ecx
   1507 	movl	%ecx,20(%ebx)
   1508 .L043pw_nc5:
   1509 	movl	24(%esi),%ecx
   1510 	movl	%ecx,24(%ebx)
   1511 .L044pw_nc6:
   1512 	movl	28(%esi),%ecx
   1513 	movl	%ecx,28(%ebx)
   1514 .L045pw_nc7:
   1515 
   1516 	addl	$32,%esi
   1517 	addl	$32,%ebx
   1518 	subl	$8,%ebp
   1519 	jnz	.L053pw_nc_loop
   1520 	movl	36(%esp),%ebp
   1521 	andl	$7,%ebp
   1522 	jz	.L054pw_nc_end
   1523 	movl	(%esi),%ecx
   1524 	movl	%ecx,(%ebx)
   1525 .L046pw_tail_nc0:
   1526 	decl	%ebp
   1527 	jz	.L054pw_nc_end
   1528 	movl	4(%esi),%ecx
   1529 	movl	%ecx,4(%ebx)
   1530 .L047pw_tail_nc1:
   1531 	decl	%ebp
   1532 	jz	.L054pw_nc_end
   1533 	movl	8(%esi),%ecx
   1534 	movl	%ecx,8(%ebx)
   1535 .L048pw_tail_nc2:
   1536 	decl	%ebp
   1537 	jz	.L054pw_nc_end
   1538 	movl	12(%esi),%ecx
   1539 	movl	%ecx,12(%ebx)
   1540 .L049pw_tail_nc3:
   1541 	decl	%ebp
   1542 	jz	.L054pw_nc_end
   1543 	movl	16(%esi),%ecx
   1544 	movl	%ecx,16(%ebx)
   1545 .L050pw_tail_nc4:
   1546 	decl	%ebp
   1547 	jz	.L054pw_nc_end
   1548 	movl	20(%esi),%ecx
   1549 	movl	%ecx,20(%ebx)
   1550 .L051pw_tail_nc5:
   1551 	decl	%ebp
   1552 	jz	.L054pw_nc_end
   1553 	movl	24(%esi),%ecx
   1554 	movl	%ecx,24(%ebx)
   1555 .L052pw_tail_nc6:
   1556 .L054pw_nc_end:
   1557 	movl	$0,%eax
   1558 .L032pw_end:
   1559 	popl	%edi
   1560 	popl	%esi
   1561 	popl	%ebx
   1562 	popl	%ebp
   1563 	ret
   1564 .size	bn_sub_part_words,.-.L_bn_sub_part_words_begin
   1565 .comm	OPENSSL_ia32cap_P,40,4
   1566 
   1567 	.section ".note.gnu.property", "a"
   1568 	.p2align 2
   1569 	.long 1f - 0f
   1570 	.long 4f - 1f
   1571 	.long 5
   1572 0:
   1573 	.asciz "GNU"
   1574 1:
   1575 	.p2align 2
   1576 	.long 0xc0000002
   1577 	.long 3f - 2f
   1578 2:
   1579 	.long 3
   1580 3:
   1581 	.p2align 2
   1582 4:
   1583