1 .text
2 .globl	_bn_mul_add_words
3 .type	_bn_mul_add_words,@function
4 .align	4
5 _bn_mul_add_words:
6 L_bn_mul_add_words_begin:
7 	%ifdef __CET__
8 
9 .byte	243,15,30,251
10 	%endif
11 
12 	call	L000PIC_me_up
13 L000PIC_me_up:
14 	popl	%eax
15 	leal	__GLOBAL_OFFSET_TABLE_+[.-L000PIC_me_up](%eax),%eax
16 	movl	_OPENSSL_ia32cap_P@GOT(%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	4,0x90
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	2,0x90
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	4,0x90
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	4,0x90
123 L007maw_loop:
124 	# Round 0
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 	# Round 4
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 	# Round 8
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 	# Round 12
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 	# Round 16
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 	# Round 20
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 	# Round 24
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 	# Round 28
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 	# Tail Round 0
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 	# Tail Round 1
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 	# Tail Round 2
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 	# Tail Round 3
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 	# Tail Round 4
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 	# Tail Round 5
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 	# Tail Round 6
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 .globl	_bn_mul_words
291 .type	_bn_mul_words,@function
292 .align	4
293 _bn_mul_words:
294 L_bn_mul_words_begin:
295 	%ifdef __CET__
296 
297 .byte	243,15,30,251
298 	%endif
299 
300 	call	L010PIC_me_up
301 L010PIC_me_up:
302 	popl	%eax
303 	leal	__GLOBAL_OFFSET_TABLE_+[.-L010PIC_me_up](%eax),%eax
304 	movl	_OPENSSL_ia32cap_P@GOT(%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	4,0x90
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	4,0x90
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 	# Round 0
342 	movl	(%ebx),%eax
343 	mull	%ecx
344 	addl	%esi,%eax
345 	adcl	$0,%edx
346 	movl	%eax,(%edi)
347 	movl	%edx,%esi
348 	# Round 4
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 	# Round 8
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 	# Round 12
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 	# Round 16
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 	# Round 20
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 	# Round 24
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 	# Round 28
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 	# Tail Round 0
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 	# Tail Round 1
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 	# Tail Round 2
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 	# Tail Round 3
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 	# Tail Round 4
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 	# Tail Round 5
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 	# Tail Round 6
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 .globl	_bn_sqr_words
478 .type	_bn_sqr_words,@function
479 .align	4
480 _bn_sqr_words:
481 L_bn_sqr_words_begin:
482 	%ifdef __CET__
483 
484 .byte	243,15,30,251
485 	%endif
486 
487 	call	L017PIC_me_up
488 L017PIC_me_up:
489 	popl	%eax
490 	leal	__GLOBAL_OFFSET_TABLE_+[.-L017PIC_me_up](%eax),%eax
491 	movl	_OPENSSL_ia32cap_P@GOT(%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	4,0x90
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	4,0x90
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 	# Round 0
522 	movl	(%edi),%eax
523 	mull	%eax
524 	movl	%eax,(%esi)
525 	movl	%edx,4(%esi)
526 	# Round 4
527 	movl	4(%edi),%eax
528 	mull	%eax
529 	movl	%eax,8(%esi)
530 	movl	%edx,12(%esi)
531 	# Round 8
532 	movl	8(%edi),%eax
533 	mull	%eax
534 	movl	%eax,16(%esi)
535 	movl	%edx,20(%esi)
536 	# Round 12
537 	movl	12(%edi),%eax
538 	mull	%eax
539 	movl	%eax,24(%esi)
540 	movl	%edx,28(%esi)
541 	# Round 16
542 	movl	16(%edi),%eax
543 	mull	%eax
544 	movl	%eax,32(%esi)
545 	movl	%edx,36(%esi)
546 	# Round 20
547 	movl	20(%edi),%eax
548 	mull	%eax
549 	movl	%eax,40(%esi)
550 	movl	%edx,44(%esi)
551 	# Round 24
552 	movl	24(%edi),%eax
553 	mull	%eax
554 	movl	%eax,48(%esi)
555 	movl	%edx,52(%esi)
556 	# Round 28
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 	# Tail Round 0
571 	movl	(%edi),%eax
572 	mull	%eax
573 	movl	%eax,(%esi)
574 	decl	%ebx
575 	movl	%edx,4(%esi)
576 	jz	L022sw_end
577 	# Tail Round 1
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 	# Tail Round 2
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 	# Tail Round 3
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 	# Tail Round 4
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 	# Tail Round 5
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 	# Tail Round 6
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 .globl	_bn_div_words
624 .type	_bn_div_words,@function
625 .align	4
626 _bn_div_words:
627 L_bn_div_words_begin:
628 	%ifdef __CET__
629 
630 .byte	243,15,30,251
631 	%endif
632 
633 	movl	4(%esp),%edx
634 	movl	8(%esp),%eax
635 	movl	12(%esp),%ecx
636 	divl	%ecx
637 	ret
638 .globl	_bn_add_words
639 .type	_bn_add_words,@function
640 .align	4
641 _bn_add_words:
642 L_bn_add_words_begin:
643 	%ifdef __CET__
644 
645 .byte	243,15,30,251
646 	%endif
647 
648 	pushl	%ebp
649 	pushl	%ebx
650 	pushl	%esi
651 	pushl	%edi
652 
653 	movl	20(%esp),%ebx
654 	movl	24(%esp),%esi
655 	movl	28(%esp),%edi
656 	movl	32(%esp),%ebp
657 	xorl	%eax,%eax
658 	andl	$4294967288,%ebp
659 	jz	L023aw_finish
660 L024aw_loop:
661 	# Round 0
662 	movl	(%esi),%ecx
663 	movl	(%edi),%edx
664 	addl	%eax,%ecx
665 	movl	$0,%eax
666 	adcl	%eax,%eax
667 	addl	%edx,%ecx
668 	adcl	$0,%eax
669 	movl	%ecx,(%ebx)
670 	# Round 1
671 	movl	4(%esi),%ecx
672 	movl	4(%edi),%edx
673 	addl	%eax,%ecx
674 	movl	$0,%eax
675 	adcl	%eax,%eax
676 	addl	%edx,%ecx
677 	adcl	$0,%eax
678 	movl	%ecx,4(%ebx)
679 	# Round 2
680 	movl	8(%esi),%ecx
681 	movl	8(%edi),%edx
682 	addl	%eax,%ecx
683 	movl	$0,%eax
684 	adcl	%eax,%eax
685 	addl	%edx,%ecx
686 	adcl	$0,%eax
687 	movl	%ecx,8(%ebx)
688 	# Round 3
689 	movl	12(%esi),%ecx
690 	movl	12(%edi),%edx
691 	addl	%eax,%ecx
692 	movl	$0,%eax
693 	adcl	%eax,%eax
694 	addl	%edx,%ecx
695 	adcl	$0,%eax
696 	movl	%ecx,12(%ebx)
697 	# Round 4
698 	movl	16(%esi),%ecx
699 	movl	16(%edi),%edx
700 	addl	%eax,%ecx
701 	movl	$0,%eax
702 	adcl	%eax,%eax
703 	addl	%edx,%ecx
704 	adcl	$0,%eax
705 	movl	%ecx,16(%ebx)
706 	# Round 5
707 	movl	20(%esi),%ecx
708 	movl	20(%edi),%edx
709 	addl	%eax,%ecx
710 	movl	$0,%eax
711 	adcl	%eax,%eax
712 	addl	%edx,%ecx
713 	adcl	$0,%eax
714 	movl	%ecx,20(%ebx)
715 	# Round 6
716 	movl	24(%esi),%ecx
717 	movl	24(%edi),%edx
718 	addl	%eax,%ecx
719 	movl	$0,%eax
720 	adcl	%eax,%eax
721 	addl	%edx,%ecx
722 	adcl	$0,%eax
723 	movl	%ecx,24(%ebx)
724 	# Round 7
725 	movl	28(%esi),%ecx
726 	movl	28(%edi),%edx
727 	addl	%eax,%ecx
728 	movl	$0,%eax
729 	adcl	%eax,%eax
730 	addl	%edx,%ecx
731 	adcl	$0,%eax
732 	movl	%ecx,28(%ebx)
733 
734 	addl	$32,%esi
735 	addl	$32,%edi
736 	addl	$32,%ebx
737 	subl	$8,%ebp
738 	jnz	L024aw_loop
739 L023aw_finish:
740 	movl	32(%esp),%ebp
741 	andl	$7,%ebp
742 	jz	L025aw_end
743 	# Tail Round 0
744 	movl	(%esi),%ecx
745 	movl	(%edi),%edx
746 	addl	%eax,%ecx
747 	movl	$0,%eax
748 	adcl	%eax,%eax
749 	addl	%edx,%ecx
750 	adcl	$0,%eax
751 	decl	%ebp
752 	movl	%ecx,(%ebx)
753 	jz	L025aw_end
754 	# Tail Round 1
755 	movl	4(%esi),%ecx
756 	movl	4(%edi),%edx
757 	addl	%eax,%ecx
758 	movl	$0,%eax
759 	adcl	%eax,%eax
760 	addl	%edx,%ecx
761 	adcl	$0,%eax
762 	decl	%ebp
763 	movl	%ecx,4(%ebx)
764 	jz	L025aw_end
765 	# Tail Round 2
766 	movl	8(%esi),%ecx
767 	movl	8(%edi),%edx
768 	addl	%eax,%ecx
769 	movl	$0,%eax
770 	adcl	%eax,%eax
771 	addl	%edx,%ecx
772 	adcl	$0,%eax
773 	decl	%ebp
774 	movl	%ecx,8(%ebx)
775 	jz	L025aw_end
776 	# Tail Round 3
777 	movl	12(%esi),%ecx
778 	movl	12(%edi),%edx
779 	addl	%eax,%ecx
780 	movl	$0,%eax
781 	adcl	%eax,%eax
782 	addl	%edx,%ecx
783 	adcl	$0,%eax
784 	decl	%ebp
785 	movl	%ecx,12(%ebx)
786 	jz	L025aw_end
787 	# Tail Round 4
788 	movl	16(%esi),%ecx
789 	movl	16(%edi),%edx
790 	addl	%eax,%ecx
791 	movl	$0,%eax
792 	adcl	%eax,%eax
793 	addl	%edx,%ecx
794 	adcl	$0,%eax
795 	decl	%ebp
796 	movl	%ecx,16(%ebx)
797 	jz	L025aw_end
798 	# Tail Round 5
799 	movl	20(%esi),%ecx
800 	movl	20(%edi),%edx
801 	addl	%eax,%ecx
802 	movl	$0,%eax
803 	adcl	%eax,%eax
804 	addl	%edx,%ecx
805 	adcl	$0,%eax
806 	decl	%ebp
807 	movl	%ecx,20(%ebx)
808 	jz	L025aw_end
809 	# Tail Round 6
810 	movl	24(%esi),%ecx
811 	movl	24(%edi),%edx
812 	addl	%eax,%ecx
813 	movl	$0,%eax
814 	adcl	%eax,%eax
815 	addl	%edx,%ecx
816 	adcl	$0,%eax
817 	movl	%ecx,24(%ebx)
818 L025aw_end:
819 	popl	%edi
820 	popl	%esi
821 	popl	%ebx
822 	popl	%ebp
823 	ret
824 .globl	_bn_sub_words
825 .type	_bn_sub_words,@function
826 .align	4
827 _bn_sub_words:
828 L_bn_sub_words_begin:
829 	%ifdef __CET__
830 
831 .byte	243,15,30,251
832 	%endif
833 
834 	pushl	%ebp
835 	pushl	%ebx
836 	pushl	%esi
837 	pushl	%edi
838 
839 	movl	20(%esp),%ebx
840 	movl	24(%esp),%esi
841 	movl	28(%esp),%edi
842 	movl	32(%esp),%ebp
843 	xorl	%eax,%eax
844 	andl	$4294967288,%ebp
845 	jz	L026aw_finish
846 L027aw_loop:
847 	# Round 0
848 	movl	(%esi),%ecx
849 	movl	(%edi),%edx
850 	subl	%eax,%ecx
851 	movl	$0,%eax
852 	adcl	%eax,%eax
853 	subl	%edx,%ecx
854 	adcl	$0,%eax
855 	movl	%ecx,(%ebx)
856 	# Round 1
857 	movl	4(%esi),%ecx
858 	movl	4(%edi),%edx
859 	subl	%eax,%ecx
860 	movl	$0,%eax
861 	adcl	%eax,%eax
862 	subl	%edx,%ecx
863 	adcl	$0,%eax
864 	movl	%ecx,4(%ebx)
865 	# Round 2
866 	movl	8(%esi),%ecx
867 	movl	8(%edi),%edx
868 	subl	%eax,%ecx
869 	movl	$0,%eax
870 	adcl	%eax,%eax
871 	subl	%edx,%ecx
872 	adcl	$0,%eax
873 	movl	%ecx,8(%ebx)
874 	# Round 3
875 	movl	12(%esi),%ecx
876 	movl	12(%edi),%edx
877 	subl	%eax,%ecx
878 	movl	$0,%eax
879 	adcl	%eax,%eax
880 	subl	%edx,%ecx
881 	adcl	$0,%eax
882 	movl	%ecx,12(%ebx)
883 	# Round 4
884 	movl	16(%esi),%ecx
885 	movl	16(%edi),%edx
886 	subl	%eax,%ecx
887 	movl	$0,%eax
888 	adcl	%eax,%eax
889 	subl	%edx,%ecx
890 	adcl	$0,%eax
891 	movl	%ecx,16(%ebx)
892 	# Round 5
893 	movl	20(%esi),%ecx
894 	movl	20(%edi),%edx
895 	subl	%eax,%ecx
896 	movl	$0,%eax
897 	adcl	%eax,%eax
898 	subl	%edx,%ecx
899 	adcl	$0,%eax
900 	movl	%ecx,20(%ebx)
901 	# Round 6
902 	movl	24(%esi),%ecx
903 	movl	24(%edi),%edx
904 	subl	%eax,%ecx
905 	movl	$0,%eax
906 	adcl	%eax,%eax
907 	subl	%edx,%ecx
908 	adcl	$0,%eax
909 	movl	%ecx,24(%ebx)
910 	# Round 7
911 	movl	28(%esi),%ecx
912 	movl	28(%edi),%edx
913 	subl	%eax,%ecx
914 	movl	$0,%eax
915 	adcl	%eax,%eax
916 	subl	%edx,%ecx
917 	adcl	$0,%eax
918 	movl	%ecx,28(%ebx)
919 
920 	addl	$32,%esi
921 	addl	$32,%edi
922 	addl	$32,%ebx
923 	subl	$8,%ebp
924 	jnz	L027aw_loop
925 L026aw_finish:
926 	movl	32(%esp),%ebp
927 	andl	$7,%ebp
928 	jz	L028aw_end
929 	# Tail Round 0
930 	movl	(%esi),%ecx
931 	movl	(%edi),%edx
932 	subl	%eax,%ecx
933 	movl	$0,%eax
934 	adcl	%eax,%eax
935 	subl	%edx,%ecx
936 	adcl	$0,%eax
937 	decl	%ebp
938 	movl	%ecx,(%ebx)
939 	jz	L028aw_end
940 	# Tail Round 1
941 	movl	4(%esi),%ecx
942 	movl	4(%edi),%edx
943 	subl	%eax,%ecx
944 	movl	$0,%eax
945 	adcl	%eax,%eax
946 	subl	%edx,%ecx
947 	adcl	$0,%eax
948 	decl	%ebp
949 	movl	%ecx,4(%ebx)
950 	jz	L028aw_end
951 	# Tail Round 2
952 	movl	8(%esi),%ecx
953 	movl	8(%edi),%edx
954 	subl	%eax,%ecx
955 	movl	$0,%eax
956 	adcl	%eax,%eax
957 	subl	%edx,%ecx
958 	adcl	$0,%eax
959 	decl	%ebp
960 	movl	%ecx,8(%ebx)
961 	jz	L028aw_end
962 	# Tail Round 3
963 	movl	12(%esi),%ecx
964 	movl	12(%edi),%edx
965 	subl	%eax,%ecx
966 	movl	$0,%eax
967 	adcl	%eax,%eax
968 	subl	%edx,%ecx
969 	adcl	$0,%eax
970 	decl	%ebp
971 	movl	%ecx,12(%ebx)
972 	jz	L028aw_end
973 	# Tail Round 4
974 	movl	16(%esi),%ecx
975 	movl	16(%edi),%edx
976 	subl	%eax,%ecx
977 	movl	$0,%eax
978 	adcl	%eax,%eax
979 	subl	%edx,%ecx
980 	adcl	$0,%eax
981 	decl	%ebp
982 	movl	%ecx,16(%ebx)
983 	jz	L028aw_end
984 	# Tail Round 5
985 	movl	20(%esi),%ecx
986 	movl	20(%edi),%edx
987 	subl	%eax,%ecx
988 	movl	$0,%eax
989 	adcl	%eax,%eax
990 	subl	%edx,%ecx
991 	adcl	$0,%eax
992 	decl	%ebp
993 	movl	%ecx,20(%ebx)
994 	jz	L028aw_end
995 	# Tail Round 6
996 	movl	24(%esi),%ecx
997 	movl	24(%edi),%edx
998 	subl	%eax,%ecx
999 	movl	$0,%eax
1000 	adcl	%eax,%eax
1001 	subl	%edx,%ecx
1002 	adcl	$0,%eax
1003 	movl	%ecx,24(%ebx)
1004 L028aw_end:
1005 	popl	%edi
1006 	popl	%esi
1007 	popl	%ebx
1008 	popl	%ebp
1009 	ret
1010 .globl	_bn_sub_part_words
1011 .type	_bn_sub_part_words,@function
1012 .align	4
1013 _bn_sub_part_words:
1014 L_bn_sub_part_words_begin:
1015 	%ifdef __CET__
1016 
1017 .byte	243,15,30,251
1018 	%endif
1019 
1020 	pushl	%ebp
1021 	pushl	%ebx
1022 	pushl	%esi
1023 	pushl	%edi
1024 
1025 	movl	20(%esp),%ebx
1026 	movl	24(%esp),%esi
1027 	movl	28(%esp),%edi
1028 	movl	32(%esp),%ebp
1029 	xorl	%eax,%eax
1030 	andl	$4294967288,%ebp
1031 	jz	L029aw_finish
1032 L030aw_loop:
1033 	# Round 0
1034 	movl	(%esi),%ecx
1035 	movl	(%edi),%edx
1036 	subl	%eax,%ecx
1037 	movl	$0,%eax
1038 	adcl	%eax,%eax
1039 	subl	%edx,%ecx
1040 	adcl	$0,%eax
1041 	movl	%ecx,(%ebx)
1042 	# Round 1
1043 	movl	4(%esi),%ecx
1044 	movl	4(%edi),%edx
1045 	subl	%eax,%ecx
1046 	movl	$0,%eax
1047 	adcl	%eax,%eax
1048 	subl	%edx,%ecx
1049 	adcl	$0,%eax
1050 	movl	%ecx,4(%ebx)
1051 	# Round 2
1052 	movl	8(%esi),%ecx
1053 	movl	8(%edi),%edx
1054 	subl	%eax,%ecx
1055 	movl	$0,%eax
1056 	adcl	%eax,%eax
1057 	subl	%edx,%ecx
1058 	adcl	$0,%eax
1059 	movl	%ecx,8(%ebx)
1060 	# Round 3
1061 	movl	12(%esi),%ecx
1062 	movl	12(%edi),%edx
1063 	subl	%eax,%ecx
1064 	movl	$0,%eax
1065 	adcl	%eax,%eax
1066 	subl	%edx,%ecx
1067 	adcl	$0,%eax
1068 	movl	%ecx,12(%ebx)
1069 	# Round 4
1070 	movl	16(%esi),%ecx
1071 	movl	16(%edi),%edx
1072 	subl	%eax,%ecx
1073 	movl	$0,%eax
1074 	adcl	%eax,%eax
1075 	subl	%edx,%ecx
1076 	adcl	$0,%eax
1077 	movl	%ecx,16(%ebx)
1078 	# Round 5
1079 	movl	20(%esi),%ecx
1080 	movl	20(%edi),%edx
1081 	subl	%eax,%ecx
1082 	movl	$0,%eax
1083 	adcl	%eax,%eax
1084 	subl	%edx,%ecx
1085 	adcl	$0,%eax
1086 	movl	%ecx,20(%ebx)
1087 	# Round 6
1088 	movl	24(%esi),%ecx
1089 	movl	24(%edi),%edx
1090 	subl	%eax,%ecx
1091 	movl	$0,%eax
1092 	adcl	%eax,%eax
1093 	subl	%edx,%ecx
1094 	adcl	$0,%eax
1095 	movl	%ecx,24(%ebx)
1096 	# Round 7
1097 	movl	28(%esi),%ecx
1098 	movl	28(%edi),%edx
1099 	subl	%eax,%ecx
1100 	movl	$0,%eax
1101 	adcl	%eax,%eax
1102 	subl	%edx,%ecx
1103 	adcl	$0,%eax
1104 	movl	%ecx,28(%ebx)
1105 
1106 	addl	$32,%esi
1107 	addl	$32,%edi
1108 	addl	$32,%ebx
1109 	subl	$8,%ebp
1110 	jnz	L030aw_loop
1111 L029aw_finish:
1112 	movl	32(%esp),%ebp
1113 	andl	$7,%ebp
1114 	jz	L031aw_end
1115 	# Tail Round 0
1116 	movl	(%esi),%ecx
1117 	movl	(%edi),%edx
1118 	subl	%eax,%ecx
1119 	movl	$0,%eax
1120 	adcl	%eax,%eax
1121 	subl	%edx,%ecx
1122 	adcl	$0,%eax
1123 	movl	%ecx,(%ebx)
1124 	addl	$4,%esi
1125 	addl	$4,%edi
1126 	addl	$4,%ebx
1127 	decl	%ebp
1128 	jz	L031aw_end
1129 	# Tail Round 1
1130 	movl	(%esi),%ecx
1131 	movl	(%edi),%edx
1132 	subl	%eax,%ecx
1133 	movl	$0,%eax
1134 	adcl	%eax,%eax
1135 	subl	%edx,%ecx
1136 	adcl	$0,%eax
1137 	movl	%ecx,(%ebx)
1138 	addl	$4,%esi
1139 	addl	$4,%edi
1140 	addl	$4,%ebx
1141 	decl	%ebp
1142 	jz	L031aw_end
1143 	# Tail Round 2
1144 	movl	(%esi),%ecx
1145 	movl	(%edi),%edx
1146 	subl	%eax,%ecx
1147 	movl	$0,%eax
1148 	adcl	%eax,%eax
1149 	subl	%edx,%ecx
1150 	adcl	$0,%eax
1151 	movl	%ecx,(%ebx)
1152 	addl	$4,%esi
1153 	addl	$4,%edi
1154 	addl	$4,%ebx
1155 	decl	%ebp
1156 	jz	L031aw_end
1157 	# Tail Round 3
1158 	movl	(%esi),%ecx
1159 	movl	(%edi),%edx
1160 	subl	%eax,%ecx
1161 	movl	$0,%eax
1162 	adcl	%eax,%eax
1163 	subl	%edx,%ecx
1164 	adcl	$0,%eax
1165 	movl	%ecx,(%ebx)
1166 	addl	$4,%esi
1167 	addl	$4,%edi
1168 	addl	$4,%ebx
1169 	decl	%ebp
1170 	jz	L031aw_end
1171 	# Tail Round 4
1172 	movl	(%esi),%ecx
1173 	movl	(%edi),%edx
1174 	subl	%eax,%ecx
1175 	movl	$0,%eax
1176 	adcl	%eax,%eax
1177 	subl	%edx,%ecx
1178 	adcl	$0,%eax
1179 	movl	%ecx,(%ebx)
1180 	addl	$4,%esi
1181 	addl	$4,%edi
1182 	addl	$4,%ebx
1183 	decl	%ebp
1184 	jz	L031aw_end
1185 	# Tail Round 5
1186 	movl	(%esi),%ecx
1187 	movl	(%edi),%edx
1188 	subl	%eax,%ecx
1189 	movl	$0,%eax
1190 	adcl	%eax,%eax
1191 	subl	%edx,%ecx
1192 	adcl	$0,%eax
1193 	movl	%ecx,(%ebx)
1194 	addl	$4,%esi
1195 	addl	$4,%edi
1196 	addl	$4,%ebx
1197 	decl	%ebp
1198 	jz	L031aw_end
1199 	# Tail Round 6
1200 	movl	(%esi),%ecx
1201 	movl	(%edi),%edx
1202 	subl	%eax,%ecx
1203 	movl	$0,%eax
1204 	adcl	%eax,%eax
1205 	subl	%edx,%ecx
1206 	adcl	$0,%eax
1207 	movl	%ecx,(%ebx)
1208 	addl	$4,%esi
1209 	addl	$4,%edi
1210 	addl	$4,%ebx
1211 L031aw_end:
1212 	cmpl	$0,36(%esp)
1213 	je	L032pw_end
1214 	movl	36(%esp),%ebp
1215 	cmpl	$0,%ebp
1216 	je	L032pw_end
1217 	jge	L033pw_pos
1218 	# pw_neg
1219 	movl	$0,%edx
1220 	subl	%ebp,%edx
1221 	movl	%edx,%ebp
1222 	andl	$4294967288,%ebp
1223 	jz	L034pw_neg_finish
1224 L035pw_neg_loop:
1225 	# dl<0 Round 0
1226 	movl	$0,%ecx
1227 	movl	(%edi),%edx
1228 	subl	%eax,%ecx
1229 	movl	$0,%eax
1230 	adcl	%eax,%eax
1231 	subl	%edx,%ecx
1232 	adcl	$0,%eax
1233 	movl	%ecx,(%ebx)
1234 	# dl<0 Round 1
1235 	movl	$0,%ecx
1236 	movl	4(%edi),%edx
1237 	subl	%eax,%ecx
1238 	movl	$0,%eax
1239 	adcl	%eax,%eax
1240 	subl	%edx,%ecx
1241 	adcl	$0,%eax
1242 	movl	%ecx,4(%ebx)
1243 	# dl<0 Round 2
1244 	movl	$0,%ecx
1245 	movl	8(%edi),%edx
1246 	subl	%eax,%ecx
1247 	movl	$0,%eax
1248 	adcl	%eax,%eax
1249 	subl	%edx,%ecx
1250 	adcl	$0,%eax
1251 	movl	%ecx,8(%ebx)
1252 	# dl<0 Round 3
1253 	movl	$0,%ecx
1254 	movl	12(%edi),%edx
1255 	subl	%eax,%ecx
1256 	movl	$0,%eax
1257 	adcl	%eax,%eax
1258 	subl	%edx,%ecx
1259 	adcl	$0,%eax
1260 	movl	%ecx,12(%ebx)
1261 	# dl<0 Round 4
1262 	movl	$0,%ecx
1263 	movl	16(%edi),%edx
1264 	subl	%eax,%ecx
1265 	movl	$0,%eax
1266 	adcl	%eax,%eax
1267 	subl	%edx,%ecx
1268 	adcl	$0,%eax
1269 	movl	%ecx,16(%ebx)
1270 	# dl<0 Round 5
1271 	movl	$0,%ecx
1272 	movl	20(%edi),%edx
1273 	subl	%eax,%ecx
1274 	movl	$0,%eax
1275 	adcl	%eax,%eax
1276 	subl	%edx,%ecx
1277 	adcl	$0,%eax
1278 	movl	%ecx,20(%ebx)
1279 	# dl<0 Round 6
1280 	movl	$0,%ecx
1281 	movl	24(%edi),%edx
1282 	subl	%eax,%ecx
1283 	movl	$0,%eax
1284 	adcl	%eax,%eax
1285 	subl	%edx,%ecx
1286 	adcl	$0,%eax
1287 	movl	%ecx,24(%ebx)
1288 	# dl<0 Round 7
1289 	movl	$0,%ecx
1290 	movl	28(%edi),%edx
1291 	subl	%eax,%ecx
1292 	movl	$0,%eax
1293 	adcl	%eax,%eax
1294 	subl	%edx,%ecx
1295 	adcl	$0,%eax
1296 	movl	%ecx,28(%ebx)
1297 
1298 	addl	$32,%edi
1299 	addl	$32,%ebx
1300 	subl	$8,%ebp
1301 	jnz	L035pw_neg_loop
1302 L034pw_neg_finish:
1303 	movl	36(%esp),%edx
1304 	movl	$0,%ebp
1305 	subl	%edx,%ebp
1306 	andl	$7,%ebp
1307 	jz	L032pw_end
1308 	# dl<0 Tail Round 0
1309 	movl	$0,%ecx
1310 	movl	(%edi),%edx
1311 	subl	%eax,%ecx
1312 	movl	$0,%eax
1313 	adcl	%eax,%eax
1314 	subl	%edx,%ecx
1315 	adcl	$0,%eax
1316 	decl	%ebp
1317 	movl	%ecx,(%ebx)
1318 	jz	L032pw_end
1319 	# dl<0 Tail Round 1
1320 	movl	$0,%ecx
1321 	movl	4(%edi),%edx
1322 	subl	%eax,%ecx
1323 	movl	$0,%eax
1324 	adcl	%eax,%eax
1325 	subl	%edx,%ecx
1326 	adcl	$0,%eax
1327 	decl	%ebp
1328 	movl	%ecx,4(%ebx)
1329 	jz	L032pw_end
1330 	# dl<0 Tail Round 2
1331 	movl	$0,%ecx
1332 	movl	8(%edi),%edx
1333 	subl	%eax,%ecx
1334 	movl	$0,%eax
1335 	adcl	%eax,%eax
1336 	subl	%edx,%ecx
1337 	adcl	$0,%eax
1338 	decl	%ebp
1339 	movl	%ecx,8(%ebx)
1340 	jz	L032pw_end
1341 	# dl<0 Tail Round 3
1342 	movl	$0,%ecx
1343 	movl	12(%edi),%edx
1344 	subl	%eax,%ecx
1345 	movl	$0,%eax
1346 	adcl	%eax,%eax
1347 	subl	%edx,%ecx
1348 	adcl	$0,%eax
1349 	decl	%ebp
1350 	movl	%ecx,12(%ebx)
1351 	jz	L032pw_end
1352 	# dl<0 Tail Round 4
1353 	movl	$0,%ecx
1354 	movl	16(%edi),%edx
1355 	subl	%eax,%ecx
1356 	movl	$0,%eax
1357 	adcl	%eax,%eax
1358 	subl	%edx,%ecx
1359 	adcl	$0,%eax
1360 	decl	%ebp
1361 	movl	%ecx,16(%ebx)
1362 	jz	L032pw_end
1363 	# dl<0 Tail Round 5
1364 	movl	$0,%ecx
1365 	movl	20(%edi),%edx
1366 	subl	%eax,%ecx
1367 	movl	$0,%eax
1368 	adcl	%eax,%eax
1369 	subl	%edx,%ecx
1370 	adcl	$0,%eax
1371 	decl	%ebp
1372 	movl	%ecx,20(%ebx)
1373 	jz	L032pw_end
1374 	# dl<0 Tail Round 6
1375 	movl	$0,%ecx
1376 	movl	24(%edi),%edx
1377 	subl	%eax,%ecx
1378 	movl	$0,%eax
1379 	adcl	%eax,%eax
1380 	subl	%edx,%ecx
1381 	adcl	$0,%eax
1382 	movl	%ecx,24(%ebx)
1383 	jmp	L032pw_end
1384 L033pw_pos:
1385 	andl	$4294967288,%ebp
1386 	jz	L036pw_pos_finish
1387 L037pw_pos_loop:
1388 	# dl>0 Round 0
1389 	movl	(%esi),%ecx
1390 	subl	%eax,%ecx
1391 	movl	%ecx,(%ebx)
1392 	jnc	L038pw_nc0
1393 	# dl>0 Round 1
1394 	movl	4(%esi),%ecx
1395 	subl	%eax,%ecx
1396 	movl	%ecx,4(%ebx)
1397 	jnc	L039pw_nc1
1398 	# dl>0 Round 2
1399 	movl	8(%esi),%ecx
1400 	subl	%eax,%ecx
1401 	movl	%ecx,8(%ebx)
1402 	jnc	L040pw_nc2
1403 	# dl>0 Round 3
1404 	movl	12(%esi),%ecx
1405 	subl	%eax,%ecx
1406 	movl	%ecx,12(%ebx)
1407 	jnc	L041pw_nc3
1408 	# dl>0 Round 4
1409 	movl	16(%esi),%ecx
1410 	subl	%eax,%ecx
1411 	movl	%ecx,16(%ebx)
1412 	jnc	L042pw_nc4
1413 	# dl>0 Round 5
1414 	movl	20(%esi),%ecx
1415 	subl	%eax,%ecx
1416 	movl	%ecx,20(%ebx)
1417 	jnc	L043pw_nc5
1418 	# dl>0 Round 6
1419 	movl	24(%esi),%ecx
1420 	subl	%eax,%ecx
1421 	movl	%ecx,24(%ebx)
1422 	jnc	L044pw_nc6
1423 	# dl>0 Round 7
1424 	movl	28(%esi),%ecx
1425 	subl	%eax,%ecx
1426 	movl	%ecx,28(%ebx)
1427 	jnc	L045pw_nc7
1428 
1429 	addl	$32,%esi
1430 	addl	$32,%ebx
1431 	subl	$8,%ebp
1432 	jnz	L037pw_pos_loop
1433 L036pw_pos_finish:
1434 	movl	36(%esp),%ebp
1435 	andl	$7,%ebp
1436 	jz	L032pw_end
1437 	# dl>0 Tail Round 0
1438 	movl	(%esi),%ecx
1439 	subl	%eax,%ecx
1440 	movl	%ecx,(%ebx)
1441 	jnc	L046pw_tail_nc0
1442 	decl	%ebp
1443 	jz	L032pw_end
1444 	# dl>0 Tail Round 1
1445 	movl	4(%esi),%ecx
1446 	subl	%eax,%ecx
1447 	movl	%ecx,4(%ebx)
1448 	jnc	L047pw_tail_nc1
1449 	decl	%ebp
1450 	jz	L032pw_end
1451 	# dl>0 Tail Round 2
1452 	movl	8(%esi),%ecx
1453 	subl	%eax,%ecx
1454 	movl	%ecx,8(%ebx)
1455 	jnc	L048pw_tail_nc2
1456 	decl	%ebp
1457 	jz	L032pw_end
1458 	# dl>0 Tail Round 3
1459 	movl	12(%esi),%ecx
1460 	subl	%eax,%ecx
1461 	movl	%ecx,12(%ebx)
1462 	jnc	L049pw_tail_nc3
1463 	decl	%ebp
1464 	jz	L032pw_end
1465 	# dl>0 Tail Round 4
1466 	movl	16(%esi),%ecx
1467 	subl	%eax,%ecx
1468 	movl	%ecx,16(%ebx)
1469 	jnc	L050pw_tail_nc4
1470 	decl	%ebp
1471 	jz	L032pw_end
1472 	# dl>0 Tail Round 5
1473 	movl	20(%esi),%ecx
1474 	subl	%eax,%ecx
1475 	movl	%ecx,20(%ebx)
1476 	jnc	L051pw_tail_nc5
1477 	decl	%ebp
1478 	jz	L032pw_end
1479 	# dl>0 Tail Round 6
1480 	movl	24(%esi),%ecx
1481 	subl	%eax,%ecx
1482 	movl	%ecx,24(%ebx)
1483 	jnc	L052pw_tail_nc6
1484 	movl	$1,%eax
1485 	jmp	L032pw_end
1486 L053pw_nc_loop:
1487 	movl	(%esi),%ecx
1488 	movl	%ecx,(%ebx)
1489 L038pw_nc0:
1490 	movl	4(%esi),%ecx
1491 	movl	%ecx,4(%ebx)
1492 L039pw_nc1:
1493 	movl	8(%esi),%ecx
1494 	movl	%ecx,8(%ebx)
1495 L040pw_nc2:
1496 	movl	12(%esi),%ecx
1497 	movl	%ecx,12(%ebx)
1498 L041pw_nc3:
1499 	movl	16(%esi),%ecx
1500 	movl	%ecx,16(%ebx)
1501 L042pw_nc4:
1502 	movl	20(%esi),%ecx
1503 	movl	%ecx,20(%ebx)
1504 L043pw_nc5:
1505 	movl	24(%esi),%ecx
1506 	movl	%ecx,24(%ebx)
1507 L044pw_nc6:
1508 	movl	28(%esi),%ecx
1509 	movl	%ecx,28(%ebx)
1510 L045pw_nc7:
1511 
1512 	addl	$32,%esi
1513 	addl	$32,%ebx
1514 	subl	$8,%ebp
1515 	jnz	L053pw_nc_loop
1516 	movl	36(%esp),%ebp
1517 	andl	$7,%ebp
1518 	jz	L054pw_nc_end
1519 	movl	(%esi),%ecx
1520 	movl	%ecx,(%ebx)
1521 L046pw_tail_nc0:
1522 	decl	%ebp
1523 	jz	L054pw_nc_end
1524 	movl	4(%esi),%ecx
1525 	movl	%ecx,4(%ebx)
1526 L047pw_tail_nc1:
1527 	decl	%ebp
1528 	jz	L054pw_nc_end
1529 	movl	8(%esi),%ecx
1530 	movl	%ecx,8(%ebx)
1531 L048pw_tail_nc2:
1532 	decl	%ebp
1533 	jz	L054pw_nc_end
1534 	movl	12(%esi),%ecx
1535 	movl	%ecx,12(%ebx)
1536 L049pw_tail_nc3:
1537 	decl	%ebp
1538 	jz	L054pw_nc_end
1539 	movl	16(%esi),%ecx
1540 	movl	%ecx,16(%ebx)
1541 L050pw_tail_nc4:
1542 	decl	%ebp
1543 	jz	L054pw_nc_end
1544 	movl	20(%esi),%ecx
1545 	movl	%ecx,20(%ebx)
1546 L051pw_tail_nc5:
1547 	decl	%ebp
1548 	jz	L054pw_nc_end
1549 	movl	24(%esi),%ecx
1550 	movl	%ecx,24(%ebx)
1551 L052pw_tail_nc6:
1552 L054pw_nc_end:
1553 	movl	$0,%eax
1554 L032pw_end:
1555 	popl	%edi
1556 	popl	%esi
1557 	popl	%ebx
1558 	popl	%ebp
1559 	ret
1560 .comm	_OPENSSL_ia32cap_P,16
1561