xref: /freebsd/sys/crypto/openssl/i386/bn-586.S (revision 815b7436a7c6302365b6514194d27d41cb736227)
1/* Do not modify. This file is auto-generated from bn-586.pl. */
2#ifdef PIC
3.text
4.globl	bn_mul_add_words
5.type	bn_mul_add_words,@function
6.align	16
7bn_mul_add_words:
8.L_bn_mul_add_words_begin:
9	#ifdef __CET__
10
11.byte	243,15,30,251
12	#endif
13
14	call	.L000PIC_me_up
15.L000PIC_me_up:
16	popl	%eax
17	leal	OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax
18	btl	$26,(%eax)
19	jnc	.L001maw_non_sse2
20	movl	4(%esp),%eax
21	movl	8(%esp),%edx
22	movl	12(%esp),%ecx
23	movd	16(%esp),%mm0
24	pxor	%mm1,%mm1
25	jmp	.L002maw_sse2_entry
26.align	16
27.L003maw_sse2_unrolled:
28	movd	(%eax),%mm3
29	paddq	%mm3,%mm1
30	movd	(%edx),%mm2
31	pmuludq	%mm0,%mm2
32	movd	4(%edx),%mm4
33	pmuludq	%mm0,%mm4
34	movd	8(%edx),%mm6
35	pmuludq	%mm0,%mm6
36	movd	12(%edx),%mm7
37	pmuludq	%mm0,%mm7
38	paddq	%mm2,%mm1
39	movd	4(%eax),%mm3
40	paddq	%mm4,%mm3
41	movd	8(%eax),%mm5
42	paddq	%mm6,%mm5
43	movd	12(%eax),%mm4
44	paddq	%mm4,%mm7
45	movd	%mm1,(%eax)
46	movd	16(%edx),%mm2
47	pmuludq	%mm0,%mm2
48	psrlq	$32,%mm1
49	movd	20(%edx),%mm4
50	pmuludq	%mm0,%mm4
51	paddq	%mm3,%mm1
52	movd	24(%edx),%mm6
53	pmuludq	%mm0,%mm6
54	movd	%mm1,4(%eax)
55	psrlq	$32,%mm1
56	movd	28(%edx),%mm3
57	addl	$32,%edx
58	pmuludq	%mm0,%mm3
59	paddq	%mm5,%mm1
60	movd	16(%eax),%mm5
61	paddq	%mm5,%mm2
62	movd	%mm1,8(%eax)
63	psrlq	$32,%mm1
64	paddq	%mm7,%mm1
65	movd	20(%eax),%mm5
66	paddq	%mm5,%mm4
67	movd	%mm1,12(%eax)
68	psrlq	$32,%mm1
69	paddq	%mm2,%mm1
70	movd	24(%eax),%mm5
71	paddq	%mm5,%mm6
72	movd	%mm1,16(%eax)
73	psrlq	$32,%mm1
74	paddq	%mm4,%mm1
75	movd	28(%eax),%mm5
76	paddq	%mm5,%mm3
77	movd	%mm1,20(%eax)
78	psrlq	$32,%mm1
79	paddq	%mm6,%mm1
80	movd	%mm1,24(%eax)
81	psrlq	$32,%mm1
82	paddq	%mm3,%mm1
83	movd	%mm1,28(%eax)
84	leal	32(%eax),%eax
85	psrlq	$32,%mm1
86	subl	$8,%ecx
87	jz	.L004maw_sse2_exit
88.L002maw_sse2_entry:
89	testl	$4294967288,%ecx
90	jnz	.L003maw_sse2_unrolled
91.align	4
92.L005maw_sse2_loop:
93	movd	(%edx),%mm2
94	movd	(%eax),%mm3
95	pmuludq	%mm0,%mm2
96	leal	4(%edx),%edx
97	paddq	%mm3,%mm1
98	paddq	%mm2,%mm1
99	movd	%mm1,(%eax)
100	subl	$1,%ecx
101	psrlq	$32,%mm1
102	leal	4(%eax),%eax
103	jnz	.L005maw_sse2_loop
104.L004maw_sse2_exit:
105	movd	%mm1,%eax
106	emms
107	ret
108.align	16
109.L001maw_non_sse2:
110	pushl	%ebp
111	pushl	%ebx
112	pushl	%esi
113	pushl	%edi
114
115	xorl	%esi,%esi
116	movl	20(%esp),%edi
117	movl	28(%esp),%ecx
118	movl	24(%esp),%ebx
119	andl	$4294967288,%ecx
120	movl	32(%esp),%ebp
121	pushl	%ecx
122	jz	.L006maw_finish
123.align	16
124.L007maw_loop:
125
126	movl	(%ebx),%eax
127	mull	%ebp
128	addl	%esi,%eax
129	adcl	$0,%edx
130	addl	(%edi),%eax
131	adcl	$0,%edx
132	movl	%eax,(%edi)
133	movl	%edx,%esi
134
135	movl	4(%ebx),%eax
136	mull	%ebp
137	addl	%esi,%eax
138	adcl	$0,%edx
139	addl	4(%edi),%eax
140	adcl	$0,%edx
141	movl	%eax,4(%edi)
142	movl	%edx,%esi
143
144	movl	8(%ebx),%eax
145	mull	%ebp
146	addl	%esi,%eax
147	adcl	$0,%edx
148	addl	8(%edi),%eax
149	adcl	$0,%edx
150	movl	%eax,8(%edi)
151	movl	%edx,%esi
152
153	movl	12(%ebx),%eax
154	mull	%ebp
155	addl	%esi,%eax
156	adcl	$0,%edx
157	addl	12(%edi),%eax
158	adcl	$0,%edx
159	movl	%eax,12(%edi)
160	movl	%edx,%esi
161
162	movl	16(%ebx),%eax
163	mull	%ebp
164	addl	%esi,%eax
165	adcl	$0,%edx
166	addl	16(%edi),%eax
167	adcl	$0,%edx
168	movl	%eax,16(%edi)
169	movl	%edx,%esi
170
171	movl	20(%ebx),%eax
172	mull	%ebp
173	addl	%esi,%eax
174	adcl	$0,%edx
175	addl	20(%edi),%eax
176	adcl	$0,%edx
177	movl	%eax,20(%edi)
178	movl	%edx,%esi
179
180	movl	24(%ebx),%eax
181	mull	%ebp
182	addl	%esi,%eax
183	adcl	$0,%edx
184	addl	24(%edi),%eax
185	adcl	$0,%edx
186	movl	%eax,24(%edi)
187	movl	%edx,%esi
188
189	movl	28(%ebx),%eax
190	mull	%ebp
191	addl	%esi,%eax
192	adcl	$0,%edx
193	addl	28(%edi),%eax
194	adcl	$0,%edx
195	movl	%eax,28(%edi)
196	movl	%edx,%esi
197
198	subl	$8,%ecx
199	leal	32(%ebx),%ebx
200	leal	32(%edi),%edi
201	jnz	.L007maw_loop
202.L006maw_finish:
203	movl	32(%esp),%ecx
204	andl	$7,%ecx
205	jnz	.L008maw_finish2
206	jmp	.L009maw_end
207.L008maw_finish2:
208
209	movl	(%ebx),%eax
210	mull	%ebp
211	addl	%esi,%eax
212	adcl	$0,%edx
213	addl	(%edi),%eax
214	adcl	$0,%edx
215	decl	%ecx
216	movl	%eax,(%edi)
217	movl	%edx,%esi
218	jz	.L009maw_end
219
220	movl	4(%ebx),%eax
221	mull	%ebp
222	addl	%esi,%eax
223	adcl	$0,%edx
224	addl	4(%edi),%eax
225	adcl	$0,%edx
226	decl	%ecx
227	movl	%eax,4(%edi)
228	movl	%edx,%esi
229	jz	.L009maw_end
230
231	movl	8(%ebx),%eax
232	mull	%ebp
233	addl	%esi,%eax
234	adcl	$0,%edx
235	addl	8(%edi),%eax
236	adcl	$0,%edx
237	decl	%ecx
238	movl	%eax,8(%edi)
239	movl	%edx,%esi
240	jz	.L009maw_end
241
242	movl	12(%ebx),%eax
243	mull	%ebp
244	addl	%esi,%eax
245	adcl	$0,%edx
246	addl	12(%edi),%eax
247	adcl	$0,%edx
248	decl	%ecx
249	movl	%eax,12(%edi)
250	movl	%edx,%esi
251	jz	.L009maw_end
252
253	movl	16(%ebx),%eax
254	mull	%ebp
255	addl	%esi,%eax
256	adcl	$0,%edx
257	addl	16(%edi),%eax
258	adcl	$0,%edx
259	decl	%ecx
260	movl	%eax,16(%edi)
261	movl	%edx,%esi
262	jz	.L009maw_end
263
264	movl	20(%ebx),%eax
265	mull	%ebp
266	addl	%esi,%eax
267	adcl	$0,%edx
268	addl	20(%edi),%eax
269	adcl	$0,%edx
270	decl	%ecx
271	movl	%eax,20(%edi)
272	movl	%edx,%esi
273	jz	.L009maw_end
274
275	movl	24(%ebx),%eax
276	mull	%ebp
277	addl	%esi,%eax
278	adcl	$0,%edx
279	addl	24(%edi),%eax
280	adcl	$0,%edx
281	movl	%eax,24(%edi)
282	movl	%edx,%esi
283.L009maw_end:
284	movl	%esi,%eax
285	popl	%ecx
286	popl	%edi
287	popl	%esi
288	popl	%ebx
289	popl	%ebp
290	ret
291.size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
292.globl	bn_mul_words
293.type	bn_mul_words,@function
294.align	16
295bn_mul_words:
296.L_bn_mul_words_begin:
297	#ifdef __CET__
298
299.byte	243,15,30,251
300	#endif
301
302	call	.L010PIC_me_up
303.L010PIC_me_up:
304	popl	%eax
305	leal	OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax
306	btl	$26,(%eax)
307	jnc	.L011mw_non_sse2
308	movl	4(%esp),%eax
309	movl	8(%esp),%edx
310	movl	12(%esp),%ecx
311	movd	16(%esp),%mm0
312	pxor	%mm1,%mm1
313.align	16
314.L012mw_sse2_loop:
315	movd	(%edx),%mm2
316	pmuludq	%mm0,%mm2
317	leal	4(%edx),%edx
318	paddq	%mm2,%mm1
319	movd	%mm1,(%eax)
320	subl	$1,%ecx
321	psrlq	$32,%mm1
322	leal	4(%eax),%eax
323	jnz	.L012mw_sse2_loop
324	movd	%mm1,%eax
325	emms
326	ret
327.align	16
328.L011mw_non_sse2:
329	pushl	%ebp
330	pushl	%ebx
331	pushl	%esi
332	pushl	%edi
333
334	xorl	%esi,%esi
335	movl	20(%esp),%edi
336	movl	24(%esp),%ebx
337	movl	28(%esp),%ebp
338	movl	32(%esp),%ecx
339	andl	$4294967288,%ebp
340	jz	.L013mw_finish
341.L014mw_loop:
342
343	movl	(%ebx),%eax
344	mull	%ecx
345	addl	%esi,%eax
346	adcl	$0,%edx
347	movl	%eax,(%edi)
348	movl	%edx,%esi
349
350	movl	4(%ebx),%eax
351	mull	%ecx
352	addl	%esi,%eax
353	adcl	$0,%edx
354	movl	%eax,4(%edi)
355	movl	%edx,%esi
356
357	movl	8(%ebx),%eax
358	mull	%ecx
359	addl	%esi,%eax
360	adcl	$0,%edx
361	movl	%eax,8(%edi)
362	movl	%edx,%esi
363
364	movl	12(%ebx),%eax
365	mull	%ecx
366	addl	%esi,%eax
367	adcl	$0,%edx
368	movl	%eax,12(%edi)
369	movl	%edx,%esi
370
371	movl	16(%ebx),%eax
372	mull	%ecx
373	addl	%esi,%eax
374	adcl	$0,%edx
375	movl	%eax,16(%edi)
376	movl	%edx,%esi
377
378	movl	20(%ebx),%eax
379	mull	%ecx
380	addl	%esi,%eax
381	adcl	$0,%edx
382	movl	%eax,20(%edi)
383	movl	%edx,%esi
384
385	movl	24(%ebx),%eax
386	mull	%ecx
387	addl	%esi,%eax
388	adcl	$0,%edx
389	movl	%eax,24(%edi)
390	movl	%edx,%esi
391
392	movl	28(%ebx),%eax
393	mull	%ecx
394	addl	%esi,%eax
395	adcl	$0,%edx
396	movl	%eax,28(%edi)
397	movl	%edx,%esi
398
399	addl	$32,%ebx
400	addl	$32,%edi
401	subl	$8,%ebp
402	jz	.L013mw_finish
403	jmp	.L014mw_loop
404.L013mw_finish:
405	movl	28(%esp),%ebp
406	andl	$7,%ebp
407	jnz	.L015mw_finish2
408	jmp	.L016mw_end
409.L015mw_finish2:
410
411	movl	(%ebx),%eax
412	mull	%ecx
413	addl	%esi,%eax
414	adcl	$0,%edx
415	movl	%eax,(%edi)
416	movl	%edx,%esi
417	decl	%ebp
418	jz	.L016mw_end
419
420	movl	4(%ebx),%eax
421	mull	%ecx
422	addl	%esi,%eax
423	adcl	$0,%edx
424	movl	%eax,4(%edi)
425	movl	%edx,%esi
426	decl	%ebp
427	jz	.L016mw_end
428
429	movl	8(%ebx),%eax
430	mull	%ecx
431	addl	%esi,%eax
432	adcl	$0,%edx
433	movl	%eax,8(%edi)
434	movl	%edx,%esi
435	decl	%ebp
436	jz	.L016mw_end
437
438	movl	12(%ebx),%eax
439	mull	%ecx
440	addl	%esi,%eax
441	adcl	$0,%edx
442	movl	%eax,12(%edi)
443	movl	%edx,%esi
444	decl	%ebp
445	jz	.L016mw_end
446
447	movl	16(%ebx),%eax
448	mull	%ecx
449	addl	%esi,%eax
450	adcl	$0,%edx
451	movl	%eax,16(%edi)
452	movl	%edx,%esi
453	decl	%ebp
454	jz	.L016mw_end
455
456	movl	20(%ebx),%eax
457	mull	%ecx
458	addl	%esi,%eax
459	adcl	$0,%edx
460	movl	%eax,20(%edi)
461	movl	%edx,%esi
462	decl	%ebp
463	jz	.L016mw_end
464
465	movl	24(%ebx),%eax
466	mull	%ecx
467	addl	%esi,%eax
468	adcl	$0,%edx
469	movl	%eax,24(%edi)
470	movl	%edx,%esi
471.L016mw_end:
472	movl	%esi,%eax
473	popl	%edi
474	popl	%esi
475	popl	%ebx
476	popl	%ebp
477	ret
478.size	bn_mul_words,.-.L_bn_mul_words_begin
479.globl	bn_sqr_words
480.type	bn_sqr_words,@function
481.align	16
482bn_sqr_words:
483.L_bn_sqr_words_begin:
484	#ifdef __CET__
485
486.byte	243,15,30,251
487	#endif
488
489	call	.L017PIC_me_up
490.L017PIC_me_up:
491	popl	%eax
492	leal	OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax
493	btl	$26,(%eax)
494	jnc	.L018sqr_non_sse2
495	movl	4(%esp),%eax
496	movl	8(%esp),%edx
497	movl	12(%esp),%ecx
498.align	16
499.L019sqr_sse2_loop:
500	movd	(%edx),%mm0
501	pmuludq	%mm0,%mm0
502	leal	4(%edx),%edx
503	movq	%mm0,(%eax)
504	subl	$1,%ecx
505	leal	8(%eax),%eax
506	jnz	.L019sqr_sse2_loop
507	emms
508	ret
509.align	16
510.L018sqr_non_sse2:
511	pushl	%ebp
512	pushl	%ebx
513	pushl	%esi
514	pushl	%edi
515
516	movl	20(%esp),%esi
517	movl	24(%esp),%edi
518	movl	28(%esp),%ebx
519	andl	$4294967288,%ebx
520	jz	.L020sw_finish
521.L021sw_loop:
522
523	movl	(%edi),%eax
524	mull	%eax
525	movl	%eax,(%esi)
526	movl	%edx,4(%esi)
527
528	movl	4(%edi),%eax
529	mull	%eax
530	movl	%eax,8(%esi)
531	movl	%edx,12(%esi)
532
533	movl	8(%edi),%eax
534	mull	%eax
535	movl	%eax,16(%esi)
536	movl	%edx,20(%esi)
537
538	movl	12(%edi),%eax
539	mull	%eax
540	movl	%eax,24(%esi)
541	movl	%edx,28(%esi)
542
543	movl	16(%edi),%eax
544	mull	%eax
545	movl	%eax,32(%esi)
546	movl	%edx,36(%esi)
547
548	movl	20(%edi),%eax
549	mull	%eax
550	movl	%eax,40(%esi)
551	movl	%edx,44(%esi)
552
553	movl	24(%edi),%eax
554	mull	%eax
555	movl	%eax,48(%esi)
556	movl	%edx,52(%esi)
557
558	movl	28(%edi),%eax
559	mull	%eax
560	movl	%eax,56(%esi)
561	movl	%edx,60(%esi)
562
563	addl	$32,%edi
564	addl	$64,%esi
565	subl	$8,%ebx
566	jnz	.L021sw_loop
567.L020sw_finish:
568	movl	28(%esp),%ebx
569	andl	$7,%ebx
570	jz	.L022sw_end
571
572	movl	(%edi),%eax
573	mull	%eax
574	movl	%eax,(%esi)
575	decl	%ebx
576	movl	%edx,4(%esi)
577	jz	.L022sw_end
578
579	movl	4(%edi),%eax
580	mull	%eax
581	movl	%eax,8(%esi)
582	decl	%ebx
583	movl	%edx,12(%esi)
584	jz	.L022sw_end
585
586	movl	8(%edi),%eax
587	mull	%eax
588	movl	%eax,16(%esi)
589	decl	%ebx
590	movl	%edx,20(%esi)
591	jz	.L022sw_end
592
593	movl	12(%edi),%eax
594	mull	%eax
595	movl	%eax,24(%esi)
596	decl	%ebx
597	movl	%edx,28(%esi)
598	jz	.L022sw_end
599
600	movl	16(%edi),%eax
601	mull	%eax
602	movl	%eax,32(%esi)
603	decl	%ebx
604	movl	%edx,36(%esi)
605	jz	.L022sw_end
606
607	movl	20(%edi),%eax
608	mull	%eax
609	movl	%eax,40(%esi)
610	decl	%ebx
611	movl	%edx,44(%esi)
612	jz	.L022sw_end
613
614	movl	24(%edi),%eax
615	mull	%eax
616	movl	%eax,48(%esi)
617	movl	%edx,52(%esi)
618.L022sw_end:
619	popl	%edi
620	popl	%esi
621	popl	%ebx
622	popl	%ebp
623	ret
624.size	bn_sqr_words,.-.L_bn_sqr_words_begin
625.globl	bn_div_words
626.type	bn_div_words,@function
627.align	16
628bn_div_words:
629.L_bn_div_words_begin:
630	#ifdef __CET__
631
632.byte	243,15,30,251
633	#endif
634
635	movl	4(%esp),%edx
636	movl	8(%esp),%eax
637	movl	12(%esp),%ecx
638	divl	%ecx
639	ret
640.size	bn_div_words,.-.L_bn_div_words_begin
641.globl	bn_add_words
642.type	bn_add_words,@function
643.align	16
644bn_add_words:
645.L_bn_add_words_begin:
646	#ifdef __CET__
647
648.byte	243,15,30,251
649	#endif
650
651	pushl	%ebp
652	pushl	%ebx
653	pushl	%esi
654	pushl	%edi
655
656	movl	20(%esp),%ebx
657	movl	24(%esp),%esi
658	movl	28(%esp),%edi
659	movl	32(%esp),%ebp
660	xorl	%eax,%eax
661	andl	$4294967288,%ebp
662	jz	.L023aw_finish
663.L024aw_loop:
664
665	movl	(%esi),%ecx
666	movl	(%edi),%edx
667	addl	%eax,%ecx
668	movl	$0,%eax
669	adcl	%eax,%eax
670	addl	%edx,%ecx
671	adcl	$0,%eax
672	movl	%ecx,(%ebx)
673
674	movl	4(%esi),%ecx
675	movl	4(%edi),%edx
676	addl	%eax,%ecx
677	movl	$0,%eax
678	adcl	%eax,%eax
679	addl	%edx,%ecx
680	adcl	$0,%eax
681	movl	%ecx,4(%ebx)
682
683	movl	8(%esi),%ecx
684	movl	8(%edi),%edx
685	addl	%eax,%ecx
686	movl	$0,%eax
687	adcl	%eax,%eax
688	addl	%edx,%ecx
689	adcl	$0,%eax
690	movl	%ecx,8(%ebx)
691
692	movl	12(%esi),%ecx
693	movl	12(%edi),%edx
694	addl	%eax,%ecx
695	movl	$0,%eax
696	adcl	%eax,%eax
697	addl	%edx,%ecx
698	adcl	$0,%eax
699	movl	%ecx,12(%ebx)
700
701	movl	16(%esi),%ecx
702	movl	16(%edi),%edx
703	addl	%eax,%ecx
704	movl	$0,%eax
705	adcl	%eax,%eax
706	addl	%edx,%ecx
707	adcl	$0,%eax
708	movl	%ecx,16(%ebx)
709
710	movl	20(%esi),%ecx
711	movl	20(%edi),%edx
712	addl	%eax,%ecx
713	movl	$0,%eax
714	adcl	%eax,%eax
715	addl	%edx,%ecx
716	adcl	$0,%eax
717	movl	%ecx,20(%ebx)
718
719	movl	24(%esi),%ecx
720	movl	24(%edi),%edx
721	addl	%eax,%ecx
722	movl	$0,%eax
723	adcl	%eax,%eax
724	addl	%edx,%ecx
725	adcl	$0,%eax
726	movl	%ecx,24(%ebx)
727
728	movl	28(%esi),%ecx
729	movl	28(%edi),%edx
730	addl	%eax,%ecx
731	movl	$0,%eax
732	adcl	%eax,%eax
733	addl	%edx,%ecx
734	adcl	$0,%eax
735	movl	%ecx,28(%ebx)
736
737	addl	$32,%esi
738	addl	$32,%edi
739	addl	$32,%ebx
740	subl	$8,%ebp
741	jnz	.L024aw_loop
742.L023aw_finish:
743	movl	32(%esp),%ebp
744	andl	$7,%ebp
745	jz	.L025aw_end
746
747	movl	(%esi),%ecx
748	movl	(%edi),%edx
749	addl	%eax,%ecx
750	movl	$0,%eax
751	adcl	%eax,%eax
752	addl	%edx,%ecx
753	adcl	$0,%eax
754	decl	%ebp
755	movl	%ecx,(%ebx)
756	jz	.L025aw_end
757
758	movl	4(%esi),%ecx
759	movl	4(%edi),%edx
760	addl	%eax,%ecx
761	movl	$0,%eax
762	adcl	%eax,%eax
763	addl	%edx,%ecx
764	adcl	$0,%eax
765	decl	%ebp
766	movl	%ecx,4(%ebx)
767	jz	.L025aw_end
768
769	movl	8(%esi),%ecx
770	movl	8(%edi),%edx
771	addl	%eax,%ecx
772	movl	$0,%eax
773	adcl	%eax,%eax
774	addl	%edx,%ecx
775	adcl	$0,%eax
776	decl	%ebp
777	movl	%ecx,8(%ebx)
778	jz	.L025aw_end
779
780	movl	12(%esi),%ecx
781	movl	12(%edi),%edx
782	addl	%eax,%ecx
783	movl	$0,%eax
784	adcl	%eax,%eax
785	addl	%edx,%ecx
786	adcl	$0,%eax
787	decl	%ebp
788	movl	%ecx,12(%ebx)
789	jz	.L025aw_end
790
791	movl	16(%esi),%ecx
792	movl	16(%edi),%edx
793	addl	%eax,%ecx
794	movl	$0,%eax
795	adcl	%eax,%eax
796	addl	%edx,%ecx
797	adcl	$0,%eax
798	decl	%ebp
799	movl	%ecx,16(%ebx)
800	jz	.L025aw_end
801
802	movl	20(%esi),%ecx
803	movl	20(%edi),%edx
804	addl	%eax,%ecx
805	movl	$0,%eax
806	adcl	%eax,%eax
807	addl	%edx,%ecx
808	adcl	$0,%eax
809	decl	%ebp
810	movl	%ecx,20(%ebx)
811	jz	.L025aw_end
812
813	movl	24(%esi),%ecx
814	movl	24(%edi),%edx
815	addl	%eax,%ecx
816	movl	$0,%eax
817	adcl	%eax,%eax
818	addl	%edx,%ecx
819	adcl	$0,%eax
820	movl	%ecx,24(%ebx)
821.L025aw_end:
822	popl	%edi
823	popl	%esi
824	popl	%ebx
825	popl	%ebp
826	ret
827.size	bn_add_words,.-.L_bn_add_words_begin
828.globl	bn_sub_words
829.type	bn_sub_words,@function
830.align	16
831bn_sub_words:
832.L_bn_sub_words_begin:
833	#ifdef __CET__
834
835.byte	243,15,30,251
836	#endif
837
838	pushl	%ebp
839	pushl	%ebx
840	pushl	%esi
841	pushl	%edi
842
843	movl	20(%esp),%ebx
844	movl	24(%esp),%esi
845	movl	28(%esp),%edi
846	movl	32(%esp),%ebp
847	xorl	%eax,%eax
848	andl	$4294967288,%ebp
849	jz	.L026aw_finish
850.L027aw_loop:
851
852	movl	(%esi),%ecx
853	movl	(%edi),%edx
854	subl	%eax,%ecx
855	movl	$0,%eax
856	adcl	%eax,%eax
857	subl	%edx,%ecx
858	adcl	$0,%eax
859	movl	%ecx,(%ebx)
860
861	movl	4(%esi),%ecx
862	movl	4(%edi),%edx
863	subl	%eax,%ecx
864	movl	$0,%eax
865	adcl	%eax,%eax
866	subl	%edx,%ecx
867	adcl	$0,%eax
868	movl	%ecx,4(%ebx)
869
870	movl	8(%esi),%ecx
871	movl	8(%edi),%edx
872	subl	%eax,%ecx
873	movl	$0,%eax
874	adcl	%eax,%eax
875	subl	%edx,%ecx
876	adcl	$0,%eax
877	movl	%ecx,8(%ebx)
878
879	movl	12(%esi),%ecx
880	movl	12(%edi),%edx
881	subl	%eax,%ecx
882	movl	$0,%eax
883	adcl	%eax,%eax
884	subl	%edx,%ecx
885	adcl	$0,%eax
886	movl	%ecx,12(%ebx)
887
888	movl	16(%esi),%ecx
889	movl	16(%edi),%edx
890	subl	%eax,%ecx
891	movl	$0,%eax
892	adcl	%eax,%eax
893	subl	%edx,%ecx
894	adcl	$0,%eax
895	movl	%ecx,16(%ebx)
896
897	movl	20(%esi),%ecx
898	movl	20(%edi),%edx
899	subl	%eax,%ecx
900	movl	$0,%eax
901	adcl	%eax,%eax
902	subl	%edx,%ecx
903	adcl	$0,%eax
904	movl	%ecx,20(%ebx)
905
906	movl	24(%esi),%ecx
907	movl	24(%edi),%edx
908	subl	%eax,%ecx
909	movl	$0,%eax
910	adcl	%eax,%eax
911	subl	%edx,%ecx
912	adcl	$0,%eax
913	movl	%ecx,24(%ebx)
914
915	movl	28(%esi),%ecx
916	movl	28(%edi),%edx
917	subl	%eax,%ecx
918	movl	$0,%eax
919	adcl	%eax,%eax
920	subl	%edx,%ecx
921	adcl	$0,%eax
922	movl	%ecx,28(%ebx)
923
924	addl	$32,%esi
925	addl	$32,%edi
926	addl	$32,%ebx
927	subl	$8,%ebp
928	jnz	.L027aw_loop
929.L026aw_finish:
930	movl	32(%esp),%ebp
931	andl	$7,%ebp
932	jz	.L028aw_end
933
934	movl	(%esi),%ecx
935	movl	(%edi),%edx
936	subl	%eax,%ecx
937	movl	$0,%eax
938	adcl	%eax,%eax
939	subl	%edx,%ecx
940	adcl	$0,%eax
941	decl	%ebp
942	movl	%ecx,(%ebx)
943	jz	.L028aw_end
944
945	movl	4(%esi),%ecx
946	movl	4(%edi),%edx
947	subl	%eax,%ecx
948	movl	$0,%eax
949	adcl	%eax,%eax
950	subl	%edx,%ecx
951	adcl	$0,%eax
952	decl	%ebp
953	movl	%ecx,4(%ebx)
954	jz	.L028aw_end
955
956	movl	8(%esi),%ecx
957	movl	8(%edi),%edx
958	subl	%eax,%ecx
959	movl	$0,%eax
960	adcl	%eax,%eax
961	subl	%edx,%ecx
962	adcl	$0,%eax
963	decl	%ebp
964	movl	%ecx,8(%ebx)
965	jz	.L028aw_end
966
967	movl	12(%esi),%ecx
968	movl	12(%edi),%edx
969	subl	%eax,%ecx
970	movl	$0,%eax
971	adcl	%eax,%eax
972	subl	%edx,%ecx
973	adcl	$0,%eax
974	decl	%ebp
975	movl	%ecx,12(%ebx)
976	jz	.L028aw_end
977
978	movl	16(%esi),%ecx
979	movl	16(%edi),%edx
980	subl	%eax,%ecx
981	movl	$0,%eax
982	adcl	%eax,%eax
983	subl	%edx,%ecx
984	adcl	$0,%eax
985	decl	%ebp
986	movl	%ecx,16(%ebx)
987	jz	.L028aw_end
988
989	movl	20(%esi),%ecx
990	movl	20(%edi),%edx
991	subl	%eax,%ecx
992	movl	$0,%eax
993	adcl	%eax,%eax
994	subl	%edx,%ecx
995	adcl	$0,%eax
996	decl	%ebp
997	movl	%ecx,20(%ebx)
998	jz	.L028aw_end
999
1000	movl	24(%esi),%ecx
1001	movl	24(%edi),%edx
1002	subl	%eax,%ecx
1003	movl	$0,%eax
1004	adcl	%eax,%eax
1005	subl	%edx,%ecx
1006	adcl	$0,%eax
1007	movl	%ecx,24(%ebx)
1008.L028aw_end:
1009	popl	%edi
1010	popl	%esi
1011	popl	%ebx
1012	popl	%ebp
1013	ret
1014.size	bn_sub_words,.-.L_bn_sub_words_begin
1015.globl	bn_sub_part_words
1016.type	bn_sub_part_words,@function
1017.align	16
1018bn_sub_part_words:
1019.L_bn_sub_part_words_begin:
1020	#ifdef __CET__
1021
1022.byte	243,15,30,251
1023	#endif
1024
1025	pushl	%ebp
1026	pushl	%ebx
1027	pushl	%esi
1028	pushl	%edi
1029
1030	movl	20(%esp),%ebx
1031	movl	24(%esp),%esi
1032	movl	28(%esp),%edi
1033	movl	32(%esp),%ebp
1034	xorl	%eax,%eax
1035	andl	$4294967288,%ebp
1036	jz	.L029aw_finish
1037.L030aw_loop:
1038
1039	movl	(%esi),%ecx
1040	movl	(%edi),%edx
1041	subl	%eax,%ecx
1042	movl	$0,%eax
1043	adcl	%eax,%eax
1044	subl	%edx,%ecx
1045	adcl	$0,%eax
1046	movl	%ecx,(%ebx)
1047
1048	movl	4(%esi),%ecx
1049	movl	4(%edi),%edx
1050	subl	%eax,%ecx
1051	movl	$0,%eax
1052	adcl	%eax,%eax
1053	subl	%edx,%ecx
1054	adcl	$0,%eax
1055	movl	%ecx,4(%ebx)
1056
1057	movl	8(%esi),%ecx
1058	movl	8(%edi),%edx
1059	subl	%eax,%ecx
1060	movl	$0,%eax
1061	adcl	%eax,%eax
1062	subl	%edx,%ecx
1063	adcl	$0,%eax
1064	movl	%ecx,8(%ebx)
1065
1066	movl	12(%esi),%ecx
1067	movl	12(%edi),%edx
1068	subl	%eax,%ecx
1069	movl	$0,%eax
1070	adcl	%eax,%eax
1071	subl	%edx,%ecx
1072	adcl	$0,%eax
1073	movl	%ecx,12(%ebx)
1074
1075	movl	16(%esi),%ecx
1076	movl	16(%edi),%edx
1077	subl	%eax,%ecx
1078	movl	$0,%eax
1079	adcl	%eax,%eax
1080	subl	%edx,%ecx
1081	adcl	$0,%eax
1082	movl	%ecx,16(%ebx)
1083
1084	movl	20(%esi),%ecx
1085	movl	20(%edi),%edx
1086	subl	%eax,%ecx
1087	movl	$0,%eax
1088	adcl	%eax,%eax
1089	subl	%edx,%ecx
1090	adcl	$0,%eax
1091	movl	%ecx,20(%ebx)
1092
1093	movl	24(%esi),%ecx
1094	movl	24(%edi),%edx
1095	subl	%eax,%ecx
1096	movl	$0,%eax
1097	adcl	%eax,%eax
1098	subl	%edx,%ecx
1099	adcl	$0,%eax
1100	movl	%ecx,24(%ebx)
1101
1102	movl	28(%esi),%ecx
1103	movl	28(%edi),%edx
1104	subl	%eax,%ecx
1105	movl	$0,%eax
1106	adcl	%eax,%eax
1107	subl	%edx,%ecx
1108	adcl	$0,%eax
1109	movl	%ecx,28(%ebx)
1110
1111	addl	$32,%esi
1112	addl	$32,%edi
1113	addl	$32,%ebx
1114	subl	$8,%ebp
1115	jnz	.L030aw_loop
1116.L029aw_finish:
1117	movl	32(%esp),%ebp
1118	andl	$7,%ebp
1119	jz	.L031aw_end
1120
1121	movl	(%esi),%ecx
1122	movl	(%edi),%edx
1123	subl	%eax,%ecx
1124	movl	$0,%eax
1125	adcl	%eax,%eax
1126	subl	%edx,%ecx
1127	adcl	$0,%eax
1128	movl	%ecx,(%ebx)
1129	addl	$4,%esi
1130	addl	$4,%edi
1131	addl	$4,%ebx
1132	decl	%ebp
1133	jz	.L031aw_end
1134
1135	movl	(%esi),%ecx
1136	movl	(%edi),%edx
1137	subl	%eax,%ecx
1138	movl	$0,%eax
1139	adcl	%eax,%eax
1140	subl	%edx,%ecx
1141	adcl	$0,%eax
1142	movl	%ecx,(%ebx)
1143	addl	$4,%esi
1144	addl	$4,%edi
1145	addl	$4,%ebx
1146	decl	%ebp
1147	jz	.L031aw_end
1148
1149	movl	(%esi),%ecx
1150	movl	(%edi),%edx
1151	subl	%eax,%ecx
1152	movl	$0,%eax
1153	adcl	%eax,%eax
1154	subl	%edx,%ecx
1155	adcl	$0,%eax
1156	movl	%ecx,(%ebx)
1157	addl	$4,%esi
1158	addl	$4,%edi
1159	addl	$4,%ebx
1160	decl	%ebp
1161	jz	.L031aw_end
1162
1163	movl	(%esi),%ecx
1164	movl	(%edi),%edx
1165	subl	%eax,%ecx
1166	movl	$0,%eax
1167	adcl	%eax,%eax
1168	subl	%edx,%ecx
1169	adcl	$0,%eax
1170	movl	%ecx,(%ebx)
1171	addl	$4,%esi
1172	addl	$4,%edi
1173	addl	$4,%ebx
1174	decl	%ebp
1175	jz	.L031aw_end
1176
1177	movl	(%esi),%ecx
1178	movl	(%edi),%edx
1179	subl	%eax,%ecx
1180	movl	$0,%eax
1181	adcl	%eax,%eax
1182	subl	%edx,%ecx
1183	adcl	$0,%eax
1184	movl	%ecx,(%ebx)
1185	addl	$4,%esi
1186	addl	$4,%edi
1187	addl	$4,%ebx
1188	decl	%ebp
1189	jz	.L031aw_end
1190
1191	movl	(%esi),%ecx
1192	movl	(%edi),%edx
1193	subl	%eax,%ecx
1194	movl	$0,%eax
1195	adcl	%eax,%eax
1196	subl	%edx,%ecx
1197	adcl	$0,%eax
1198	movl	%ecx,(%ebx)
1199	addl	$4,%esi
1200	addl	$4,%edi
1201	addl	$4,%ebx
1202	decl	%ebp
1203	jz	.L031aw_end
1204
1205	movl	(%esi),%ecx
1206	movl	(%edi),%edx
1207	subl	%eax,%ecx
1208	movl	$0,%eax
1209	adcl	%eax,%eax
1210	subl	%edx,%ecx
1211	adcl	$0,%eax
1212	movl	%ecx,(%ebx)
1213	addl	$4,%esi
1214	addl	$4,%edi
1215	addl	$4,%ebx
1216.L031aw_end:
1217	cmpl	$0,36(%esp)
1218	je	.L032pw_end
1219	movl	36(%esp),%ebp
1220	cmpl	$0,%ebp
1221	je	.L032pw_end
1222	jge	.L033pw_pos
1223
1224	movl	$0,%edx
1225	subl	%ebp,%edx
1226	movl	%edx,%ebp
1227	andl	$4294967288,%ebp
1228	jz	.L034pw_neg_finish
1229.L035pw_neg_loop:
1230
1231	movl	$0,%ecx
1232	movl	(%edi),%edx
1233	subl	%eax,%ecx
1234	movl	$0,%eax
1235	adcl	%eax,%eax
1236	subl	%edx,%ecx
1237	adcl	$0,%eax
1238	movl	%ecx,(%ebx)
1239
1240	movl	$0,%ecx
1241	movl	4(%edi),%edx
1242	subl	%eax,%ecx
1243	movl	$0,%eax
1244	adcl	%eax,%eax
1245	subl	%edx,%ecx
1246	adcl	$0,%eax
1247	movl	%ecx,4(%ebx)
1248
1249	movl	$0,%ecx
1250	movl	8(%edi),%edx
1251	subl	%eax,%ecx
1252	movl	$0,%eax
1253	adcl	%eax,%eax
1254	subl	%edx,%ecx
1255	adcl	$0,%eax
1256	movl	%ecx,8(%ebx)
1257
1258	movl	$0,%ecx
1259	movl	12(%edi),%edx
1260	subl	%eax,%ecx
1261	movl	$0,%eax
1262	adcl	%eax,%eax
1263	subl	%edx,%ecx
1264	adcl	$0,%eax
1265	movl	%ecx,12(%ebx)
1266
1267	movl	$0,%ecx
1268	movl	16(%edi),%edx
1269	subl	%eax,%ecx
1270	movl	$0,%eax
1271	adcl	%eax,%eax
1272	subl	%edx,%ecx
1273	adcl	$0,%eax
1274	movl	%ecx,16(%ebx)
1275
1276	movl	$0,%ecx
1277	movl	20(%edi),%edx
1278	subl	%eax,%ecx
1279	movl	$0,%eax
1280	adcl	%eax,%eax
1281	subl	%edx,%ecx
1282	adcl	$0,%eax
1283	movl	%ecx,20(%ebx)
1284
1285	movl	$0,%ecx
1286	movl	24(%edi),%edx
1287	subl	%eax,%ecx
1288	movl	$0,%eax
1289	adcl	%eax,%eax
1290	subl	%edx,%ecx
1291	adcl	$0,%eax
1292	movl	%ecx,24(%ebx)
1293
1294	movl	$0,%ecx
1295	movl	28(%edi),%edx
1296	subl	%eax,%ecx
1297	movl	$0,%eax
1298	adcl	%eax,%eax
1299	subl	%edx,%ecx
1300	adcl	$0,%eax
1301	movl	%ecx,28(%ebx)
1302
1303	addl	$32,%edi
1304	addl	$32,%ebx
1305	subl	$8,%ebp
1306	jnz	.L035pw_neg_loop
1307.L034pw_neg_finish:
1308	movl	36(%esp),%edx
1309	movl	$0,%ebp
1310	subl	%edx,%ebp
1311	andl	$7,%ebp
1312	jz	.L032pw_end
1313
1314	movl	$0,%ecx
1315	movl	(%edi),%edx
1316	subl	%eax,%ecx
1317	movl	$0,%eax
1318	adcl	%eax,%eax
1319	subl	%edx,%ecx
1320	adcl	$0,%eax
1321	decl	%ebp
1322	movl	%ecx,(%ebx)
1323	jz	.L032pw_end
1324
1325	movl	$0,%ecx
1326	movl	4(%edi),%edx
1327	subl	%eax,%ecx
1328	movl	$0,%eax
1329	adcl	%eax,%eax
1330	subl	%edx,%ecx
1331	adcl	$0,%eax
1332	decl	%ebp
1333	movl	%ecx,4(%ebx)
1334	jz	.L032pw_end
1335
1336	movl	$0,%ecx
1337	movl	8(%edi),%edx
1338	subl	%eax,%ecx
1339	movl	$0,%eax
1340	adcl	%eax,%eax
1341	subl	%edx,%ecx
1342	adcl	$0,%eax
1343	decl	%ebp
1344	movl	%ecx,8(%ebx)
1345	jz	.L032pw_end
1346
1347	movl	$0,%ecx
1348	movl	12(%edi),%edx
1349	subl	%eax,%ecx
1350	movl	$0,%eax
1351	adcl	%eax,%eax
1352	subl	%edx,%ecx
1353	adcl	$0,%eax
1354	decl	%ebp
1355	movl	%ecx,12(%ebx)
1356	jz	.L032pw_end
1357
1358	movl	$0,%ecx
1359	movl	16(%edi),%edx
1360	subl	%eax,%ecx
1361	movl	$0,%eax
1362	adcl	%eax,%eax
1363	subl	%edx,%ecx
1364	adcl	$0,%eax
1365	decl	%ebp
1366	movl	%ecx,16(%ebx)
1367	jz	.L032pw_end
1368
1369	movl	$0,%ecx
1370	movl	20(%edi),%edx
1371	subl	%eax,%ecx
1372	movl	$0,%eax
1373	adcl	%eax,%eax
1374	subl	%edx,%ecx
1375	adcl	$0,%eax
1376	decl	%ebp
1377	movl	%ecx,20(%ebx)
1378	jz	.L032pw_end
1379
1380	movl	$0,%ecx
1381	movl	24(%edi),%edx
1382	subl	%eax,%ecx
1383	movl	$0,%eax
1384	adcl	%eax,%eax
1385	subl	%edx,%ecx
1386	adcl	$0,%eax
1387	movl	%ecx,24(%ebx)
1388	jmp	.L032pw_end
1389.L033pw_pos:
1390	andl	$4294967288,%ebp
1391	jz	.L036pw_pos_finish
1392.L037pw_pos_loop:
1393
1394	movl	(%esi),%ecx
1395	subl	%eax,%ecx
1396	movl	%ecx,(%ebx)
1397	jnc	.L038pw_nc0
1398
1399	movl	4(%esi),%ecx
1400	subl	%eax,%ecx
1401	movl	%ecx,4(%ebx)
1402	jnc	.L039pw_nc1
1403
1404	movl	8(%esi),%ecx
1405	subl	%eax,%ecx
1406	movl	%ecx,8(%ebx)
1407	jnc	.L040pw_nc2
1408
1409	movl	12(%esi),%ecx
1410	subl	%eax,%ecx
1411	movl	%ecx,12(%ebx)
1412	jnc	.L041pw_nc3
1413
1414	movl	16(%esi),%ecx
1415	subl	%eax,%ecx
1416	movl	%ecx,16(%ebx)
1417	jnc	.L042pw_nc4
1418
1419	movl	20(%esi),%ecx
1420	subl	%eax,%ecx
1421	movl	%ecx,20(%ebx)
1422	jnc	.L043pw_nc5
1423
1424	movl	24(%esi),%ecx
1425	subl	%eax,%ecx
1426	movl	%ecx,24(%ebx)
1427	jnc	.L044pw_nc6
1428
1429	movl	28(%esi),%ecx
1430	subl	%eax,%ecx
1431	movl	%ecx,28(%ebx)
1432	jnc	.L045pw_nc7
1433
1434	addl	$32,%esi
1435	addl	$32,%ebx
1436	subl	$8,%ebp
1437	jnz	.L037pw_pos_loop
1438.L036pw_pos_finish:
1439	movl	36(%esp),%ebp
1440	andl	$7,%ebp
1441	jz	.L032pw_end
1442
1443	movl	(%esi),%ecx
1444	subl	%eax,%ecx
1445	movl	%ecx,(%ebx)
1446	jnc	.L046pw_tail_nc0
1447	decl	%ebp
1448	jz	.L032pw_end
1449
1450	movl	4(%esi),%ecx
1451	subl	%eax,%ecx
1452	movl	%ecx,4(%ebx)
1453	jnc	.L047pw_tail_nc1
1454	decl	%ebp
1455	jz	.L032pw_end
1456
1457	movl	8(%esi),%ecx
1458	subl	%eax,%ecx
1459	movl	%ecx,8(%ebx)
1460	jnc	.L048pw_tail_nc2
1461	decl	%ebp
1462	jz	.L032pw_end
1463
1464	movl	12(%esi),%ecx
1465	subl	%eax,%ecx
1466	movl	%ecx,12(%ebx)
1467	jnc	.L049pw_tail_nc3
1468	decl	%ebp
1469	jz	.L032pw_end
1470
1471	movl	16(%esi),%ecx
1472	subl	%eax,%ecx
1473	movl	%ecx,16(%ebx)
1474	jnc	.L050pw_tail_nc4
1475	decl	%ebp
1476	jz	.L032pw_end
1477
1478	movl	20(%esi),%ecx
1479	subl	%eax,%ecx
1480	movl	%ecx,20(%ebx)
1481	jnc	.L051pw_tail_nc5
1482	decl	%ebp
1483	jz	.L032pw_end
1484
1485	movl	24(%esi),%ecx
1486	subl	%eax,%ecx
1487	movl	%ecx,24(%ebx)
1488	jnc	.L052pw_tail_nc6
1489	movl	$1,%eax
1490	jmp	.L032pw_end
1491.L053pw_nc_loop:
1492	movl	(%esi),%ecx
1493	movl	%ecx,(%ebx)
1494.L038pw_nc0:
1495	movl	4(%esi),%ecx
1496	movl	%ecx,4(%ebx)
1497.L039pw_nc1:
1498	movl	8(%esi),%ecx
1499	movl	%ecx,8(%ebx)
1500.L040pw_nc2:
1501	movl	12(%esi),%ecx
1502	movl	%ecx,12(%ebx)
1503.L041pw_nc3:
1504	movl	16(%esi),%ecx
1505	movl	%ecx,16(%ebx)
1506.L042pw_nc4:
1507	movl	20(%esi),%ecx
1508	movl	%ecx,20(%ebx)
1509.L043pw_nc5:
1510	movl	24(%esi),%ecx
1511	movl	%ecx,24(%ebx)
1512.L044pw_nc6:
1513	movl	28(%esi),%ecx
1514	movl	%ecx,28(%ebx)
1515.L045pw_nc7:
1516
1517	addl	$32,%esi
1518	addl	$32,%ebx
1519	subl	$8,%ebp
1520	jnz	.L053pw_nc_loop
1521	movl	36(%esp),%ebp
1522	andl	$7,%ebp
1523	jz	.L054pw_nc_end
1524	movl	(%esi),%ecx
1525	movl	%ecx,(%ebx)
1526.L046pw_tail_nc0:
1527	decl	%ebp
1528	jz	.L054pw_nc_end
1529	movl	4(%esi),%ecx
1530	movl	%ecx,4(%ebx)
1531.L047pw_tail_nc1:
1532	decl	%ebp
1533	jz	.L054pw_nc_end
1534	movl	8(%esi),%ecx
1535	movl	%ecx,8(%ebx)
1536.L048pw_tail_nc2:
1537	decl	%ebp
1538	jz	.L054pw_nc_end
1539	movl	12(%esi),%ecx
1540	movl	%ecx,12(%ebx)
1541.L049pw_tail_nc3:
1542	decl	%ebp
1543	jz	.L054pw_nc_end
1544	movl	16(%esi),%ecx
1545	movl	%ecx,16(%ebx)
1546.L050pw_tail_nc4:
1547	decl	%ebp
1548	jz	.L054pw_nc_end
1549	movl	20(%esi),%ecx
1550	movl	%ecx,20(%ebx)
1551.L051pw_tail_nc5:
1552	decl	%ebp
1553	jz	.L054pw_nc_end
1554	movl	24(%esi),%ecx
1555	movl	%ecx,24(%ebx)
1556.L052pw_tail_nc6:
1557.L054pw_nc_end:
1558	movl	$0,%eax
1559.L032pw_end:
1560	popl	%edi
1561	popl	%esi
1562	popl	%ebx
1563	popl	%ebp
1564	ret
1565.size	bn_sub_part_words,.-.L_bn_sub_part_words_begin
1566.comm	OPENSSL_ia32cap_P,16,4
1567
1568	.section ".note.gnu.property", "a"
1569	.p2align 2
1570	.long 1f - 0f
1571	.long 4f - 1f
1572	.long 5
15730:
1574	.asciz "GNU"
15751:
1576	.p2align 2
1577	.long 0xc0000002
1578	.long 3f - 2f
15792:
1580	.long 3
15813:
1582	.p2align 2
15834:
1584#else
1585.text
1586.globl	bn_mul_add_words
1587.type	bn_mul_add_words,@function
1588.align	16
1589bn_mul_add_words:
1590.L_bn_mul_add_words_begin:
1591	#ifdef __CET__
1592
1593.byte	243,15,30,251
1594	#endif
1595
1596	leal	OPENSSL_ia32cap_P,%eax
1597	btl	$26,(%eax)
1598	jnc	.L000maw_non_sse2
1599	movl	4(%esp),%eax
1600	movl	8(%esp),%edx
1601	movl	12(%esp),%ecx
1602	movd	16(%esp),%mm0
1603	pxor	%mm1,%mm1
1604	jmp	.L001maw_sse2_entry
1605.align	16
1606.L002maw_sse2_unrolled:
1607	movd	(%eax),%mm3
1608	paddq	%mm3,%mm1
1609	movd	(%edx),%mm2
1610	pmuludq	%mm0,%mm2
1611	movd	4(%edx),%mm4
1612	pmuludq	%mm0,%mm4
1613	movd	8(%edx),%mm6
1614	pmuludq	%mm0,%mm6
1615	movd	12(%edx),%mm7
1616	pmuludq	%mm0,%mm7
1617	paddq	%mm2,%mm1
1618	movd	4(%eax),%mm3
1619	paddq	%mm4,%mm3
1620	movd	8(%eax),%mm5
1621	paddq	%mm6,%mm5
1622	movd	12(%eax),%mm4
1623	paddq	%mm4,%mm7
1624	movd	%mm1,(%eax)
1625	movd	16(%edx),%mm2
1626	pmuludq	%mm0,%mm2
1627	psrlq	$32,%mm1
1628	movd	20(%edx),%mm4
1629	pmuludq	%mm0,%mm4
1630	paddq	%mm3,%mm1
1631	movd	24(%edx),%mm6
1632	pmuludq	%mm0,%mm6
1633	movd	%mm1,4(%eax)
1634	psrlq	$32,%mm1
1635	movd	28(%edx),%mm3
1636	addl	$32,%edx
1637	pmuludq	%mm0,%mm3
1638	paddq	%mm5,%mm1
1639	movd	16(%eax),%mm5
1640	paddq	%mm5,%mm2
1641	movd	%mm1,8(%eax)
1642	psrlq	$32,%mm1
1643	paddq	%mm7,%mm1
1644	movd	20(%eax),%mm5
1645	paddq	%mm5,%mm4
1646	movd	%mm1,12(%eax)
1647	psrlq	$32,%mm1
1648	paddq	%mm2,%mm1
1649	movd	24(%eax),%mm5
1650	paddq	%mm5,%mm6
1651	movd	%mm1,16(%eax)
1652	psrlq	$32,%mm1
1653	paddq	%mm4,%mm1
1654	movd	28(%eax),%mm5
1655	paddq	%mm5,%mm3
1656	movd	%mm1,20(%eax)
1657	psrlq	$32,%mm1
1658	paddq	%mm6,%mm1
1659	movd	%mm1,24(%eax)
1660	psrlq	$32,%mm1
1661	paddq	%mm3,%mm1
1662	movd	%mm1,28(%eax)
1663	leal	32(%eax),%eax
1664	psrlq	$32,%mm1
1665	subl	$8,%ecx
1666	jz	.L003maw_sse2_exit
1667.L001maw_sse2_entry:
1668	testl	$4294967288,%ecx
1669	jnz	.L002maw_sse2_unrolled
1670.align	4
1671.L004maw_sse2_loop:
1672	movd	(%edx),%mm2
1673	movd	(%eax),%mm3
1674	pmuludq	%mm0,%mm2
1675	leal	4(%edx),%edx
1676	paddq	%mm3,%mm1
1677	paddq	%mm2,%mm1
1678	movd	%mm1,(%eax)
1679	subl	$1,%ecx
1680	psrlq	$32,%mm1
1681	leal	4(%eax),%eax
1682	jnz	.L004maw_sse2_loop
1683.L003maw_sse2_exit:
1684	movd	%mm1,%eax
1685	emms
1686	ret
1687.align	16
1688.L000maw_non_sse2:
1689	pushl	%ebp
1690	pushl	%ebx
1691	pushl	%esi
1692	pushl	%edi
1693
1694	xorl	%esi,%esi
1695	movl	20(%esp),%edi
1696	movl	28(%esp),%ecx
1697	movl	24(%esp),%ebx
1698	andl	$4294967288,%ecx
1699	movl	32(%esp),%ebp
1700	pushl	%ecx
1701	jz	.L005maw_finish
1702.align	16
1703.L006maw_loop:
1704
1705	movl	(%ebx),%eax
1706	mull	%ebp
1707	addl	%esi,%eax
1708	adcl	$0,%edx
1709	addl	(%edi),%eax
1710	adcl	$0,%edx
1711	movl	%eax,(%edi)
1712	movl	%edx,%esi
1713
1714	movl	4(%ebx),%eax
1715	mull	%ebp
1716	addl	%esi,%eax
1717	adcl	$0,%edx
1718	addl	4(%edi),%eax
1719	adcl	$0,%edx
1720	movl	%eax,4(%edi)
1721	movl	%edx,%esi
1722
1723	movl	8(%ebx),%eax
1724	mull	%ebp
1725	addl	%esi,%eax
1726	adcl	$0,%edx
1727	addl	8(%edi),%eax
1728	adcl	$0,%edx
1729	movl	%eax,8(%edi)
1730	movl	%edx,%esi
1731
1732	movl	12(%ebx),%eax
1733	mull	%ebp
1734	addl	%esi,%eax
1735	adcl	$0,%edx
1736	addl	12(%edi),%eax
1737	adcl	$0,%edx
1738	movl	%eax,12(%edi)
1739	movl	%edx,%esi
1740
1741	movl	16(%ebx),%eax
1742	mull	%ebp
1743	addl	%esi,%eax
1744	adcl	$0,%edx
1745	addl	16(%edi),%eax
1746	adcl	$0,%edx
1747	movl	%eax,16(%edi)
1748	movl	%edx,%esi
1749
1750	movl	20(%ebx),%eax
1751	mull	%ebp
1752	addl	%esi,%eax
1753	adcl	$0,%edx
1754	addl	20(%edi),%eax
1755	adcl	$0,%edx
1756	movl	%eax,20(%edi)
1757	movl	%edx,%esi
1758
1759	movl	24(%ebx),%eax
1760	mull	%ebp
1761	addl	%esi,%eax
1762	adcl	$0,%edx
1763	addl	24(%edi),%eax
1764	adcl	$0,%edx
1765	movl	%eax,24(%edi)
1766	movl	%edx,%esi
1767
1768	movl	28(%ebx),%eax
1769	mull	%ebp
1770	addl	%esi,%eax
1771	adcl	$0,%edx
1772	addl	28(%edi),%eax
1773	adcl	$0,%edx
1774	movl	%eax,28(%edi)
1775	movl	%edx,%esi
1776
1777	subl	$8,%ecx
1778	leal	32(%ebx),%ebx
1779	leal	32(%edi),%edi
1780	jnz	.L006maw_loop
1781.L005maw_finish:
1782	movl	32(%esp),%ecx
1783	andl	$7,%ecx
1784	jnz	.L007maw_finish2
1785	jmp	.L008maw_end
1786.L007maw_finish2:
1787
1788	movl	(%ebx),%eax
1789	mull	%ebp
1790	addl	%esi,%eax
1791	adcl	$0,%edx
1792	addl	(%edi),%eax
1793	adcl	$0,%edx
1794	decl	%ecx
1795	movl	%eax,(%edi)
1796	movl	%edx,%esi
1797	jz	.L008maw_end
1798
1799	movl	4(%ebx),%eax
1800	mull	%ebp
1801	addl	%esi,%eax
1802	adcl	$0,%edx
1803	addl	4(%edi),%eax
1804	adcl	$0,%edx
1805	decl	%ecx
1806	movl	%eax,4(%edi)
1807	movl	%edx,%esi
1808	jz	.L008maw_end
1809
1810	movl	8(%ebx),%eax
1811	mull	%ebp
1812	addl	%esi,%eax
1813	adcl	$0,%edx
1814	addl	8(%edi),%eax
1815	adcl	$0,%edx
1816	decl	%ecx
1817	movl	%eax,8(%edi)
1818	movl	%edx,%esi
1819	jz	.L008maw_end
1820
1821	movl	12(%ebx),%eax
1822	mull	%ebp
1823	addl	%esi,%eax
1824	adcl	$0,%edx
1825	addl	12(%edi),%eax
1826	adcl	$0,%edx
1827	decl	%ecx
1828	movl	%eax,12(%edi)
1829	movl	%edx,%esi
1830	jz	.L008maw_end
1831
1832	movl	16(%ebx),%eax
1833	mull	%ebp
1834	addl	%esi,%eax
1835	adcl	$0,%edx
1836	addl	16(%edi),%eax
1837	adcl	$0,%edx
1838	decl	%ecx
1839	movl	%eax,16(%edi)
1840	movl	%edx,%esi
1841	jz	.L008maw_end
1842
1843	movl	20(%ebx),%eax
1844	mull	%ebp
1845	addl	%esi,%eax
1846	adcl	$0,%edx
1847	addl	20(%edi),%eax
1848	adcl	$0,%edx
1849	decl	%ecx
1850	movl	%eax,20(%edi)
1851	movl	%edx,%esi
1852	jz	.L008maw_end
1853
1854	movl	24(%ebx),%eax
1855	mull	%ebp
1856	addl	%esi,%eax
1857	adcl	$0,%edx
1858	addl	24(%edi),%eax
1859	adcl	$0,%edx
1860	movl	%eax,24(%edi)
1861	movl	%edx,%esi
1862.L008maw_end:
1863	movl	%esi,%eax
1864	popl	%ecx
1865	popl	%edi
1866	popl	%esi
1867	popl	%ebx
1868	popl	%ebp
1869	ret
1870.size	bn_mul_add_words,.-.L_bn_mul_add_words_begin
1871.globl	bn_mul_words
1872.type	bn_mul_words,@function
1873.align	16
1874bn_mul_words:
1875.L_bn_mul_words_begin:
1876	#ifdef __CET__
1877
1878.byte	243,15,30,251
1879	#endif
1880
1881	leal	OPENSSL_ia32cap_P,%eax
1882	btl	$26,(%eax)
1883	jnc	.L009mw_non_sse2
1884	movl	4(%esp),%eax
1885	movl	8(%esp),%edx
1886	movl	12(%esp),%ecx
1887	movd	16(%esp),%mm0
1888	pxor	%mm1,%mm1
1889.align	16
1890.L010mw_sse2_loop:
1891	movd	(%edx),%mm2
1892	pmuludq	%mm0,%mm2
1893	leal	4(%edx),%edx
1894	paddq	%mm2,%mm1
1895	movd	%mm1,(%eax)
1896	subl	$1,%ecx
1897	psrlq	$32,%mm1
1898	leal	4(%eax),%eax
1899	jnz	.L010mw_sse2_loop
1900	movd	%mm1,%eax
1901	emms
1902	ret
1903.align	16
1904.L009mw_non_sse2:
1905	pushl	%ebp
1906	pushl	%ebx
1907	pushl	%esi
1908	pushl	%edi
1909
1910	xorl	%esi,%esi
1911	movl	20(%esp),%edi
1912	movl	24(%esp),%ebx
1913	movl	28(%esp),%ebp
1914	movl	32(%esp),%ecx
1915	andl	$4294967288,%ebp
1916	jz	.L011mw_finish
1917.L012mw_loop:
1918
1919	movl	(%ebx),%eax
1920	mull	%ecx
1921	addl	%esi,%eax
1922	adcl	$0,%edx
1923	movl	%eax,(%edi)
1924	movl	%edx,%esi
1925
1926	movl	4(%ebx),%eax
1927	mull	%ecx
1928	addl	%esi,%eax
1929	adcl	$0,%edx
1930	movl	%eax,4(%edi)
1931	movl	%edx,%esi
1932
1933	movl	8(%ebx),%eax
1934	mull	%ecx
1935	addl	%esi,%eax
1936	adcl	$0,%edx
1937	movl	%eax,8(%edi)
1938	movl	%edx,%esi
1939
1940	movl	12(%ebx),%eax
1941	mull	%ecx
1942	addl	%esi,%eax
1943	adcl	$0,%edx
1944	movl	%eax,12(%edi)
1945	movl	%edx,%esi
1946
1947	movl	16(%ebx),%eax
1948	mull	%ecx
1949	addl	%esi,%eax
1950	adcl	$0,%edx
1951	movl	%eax,16(%edi)
1952	movl	%edx,%esi
1953
1954	movl	20(%ebx),%eax
1955	mull	%ecx
1956	addl	%esi,%eax
1957	adcl	$0,%edx
1958	movl	%eax,20(%edi)
1959	movl	%edx,%esi
1960
1961	movl	24(%ebx),%eax
1962	mull	%ecx
1963	addl	%esi,%eax
1964	adcl	$0,%edx
1965	movl	%eax,24(%edi)
1966	movl	%edx,%esi
1967
1968	movl	28(%ebx),%eax
1969	mull	%ecx
1970	addl	%esi,%eax
1971	adcl	$0,%edx
1972	movl	%eax,28(%edi)
1973	movl	%edx,%esi
1974
1975	addl	$32,%ebx
1976	addl	$32,%edi
1977	subl	$8,%ebp
1978	jz	.L011mw_finish
1979	jmp	.L012mw_loop
1980.L011mw_finish:
1981	movl	28(%esp),%ebp
1982	andl	$7,%ebp
1983	jnz	.L013mw_finish2
1984	jmp	.L014mw_end
1985.L013mw_finish2:
1986
1987	movl	(%ebx),%eax
1988	mull	%ecx
1989	addl	%esi,%eax
1990	adcl	$0,%edx
1991	movl	%eax,(%edi)
1992	movl	%edx,%esi
1993	decl	%ebp
1994	jz	.L014mw_end
1995
1996	movl	4(%ebx),%eax
1997	mull	%ecx
1998	addl	%esi,%eax
1999	adcl	$0,%edx
2000	movl	%eax,4(%edi)
2001	movl	%edx,%esi
2002	decl	%ebp
2003	jz	.L014mw_end
2004
2005	movl	8(%ebx),%eax
2006	mull	%ecx
2007	addl	%esi,%eax
2008	adcl	$0,%edx
2009	movl	%eax,8(%edi)
2010	movl	%edx,%esi
2011	decl	%ebp
2012	jz	.L014mw_end
2013
2014	movl	12(%ebx),%eax
2015	mull	%ecx
2016	addl	%esi,%eax
2017	adcl	$0,%edx
2018	movl	%eax,12(%edi)
2019	movl	%edx,%esi
2020	decl	%ebp
2021	jz	.L014mw_end
2022
2023	movl	16(%ebx),%eax
2024	mull	%ecx
2025	addl	%esi,%eax
2026	adcl	$0,%edx
2027	movl	%eax,16(%edi)
2028	movl	%edx,%esi
2029	decl	%ebp
2030	jz	.L014mw_end
2031
2032	movl	20(%ebx),%eax
2033	mull	%ecx
2034	addl	%esi,%eax
2035	adcl	$0,%edx
2036	movl	%eax,20(%edi)
2037	movl	%edx,%esi
2038	decl	%ebp
2039	jz	.L014mw_end
2040
2041	movl	24(%ebx),%eax
2042	mull	%ecx
2043	addl	%esi,%eax
2044	adcl	$0,%edx
2045	movl	%eax,24(%edi)
2046	movl	%edx,%esi
2047.L014mw_end:
2048	movl	%esi,%eax
2049	popl	%edi
2050	popl	%esi
2051	popl	%ebx
2052	popl	%ebp
2053	ret
2054.size	bn_mul_words,.-.L_bn_mul_words_begin
2055.globl	bn_sqr_words
2056.type	bn_sqr_words,@function
2057.align	16
2058bn_sqr_words:
2059.L_bn_sqr_words_begin:
2060	#ifdef __CET__
2061
2062.byte	243,15,30,251
2063	#endif
2064
2065	leal	OPENSSL_ia32cap_P,%eax
2066	btl	$26,(%eax)
2067	jnc	.L015sqr_non_sse2
2068	movl	4(%esp),%eax
2069	movl	8(%esp),%edx
2070	movl	12(%esp),%ecx
2071.align	16
2072.L016sqr_sse2_loop:
2073	movd	(%edx),%mm0
2074	pmuludq	%mm0,%mm0
2075	leal	4(%edx),%edx
2076	movq	%mm0,(%eax)
2077	subl	$1,%ecx
2078	leal	8(%eax),%eax
2079	jnz	.L016sqr_sse2_loop
2080	emms
2081	ret
2082.align	16
2083.L015sqr_non_sse2:
2084	pushl	%ebp
2085	pushl	%ebx
2086	pushl	%esi
2087	pushl	%edi
2088
2089	movl	20(%esp),%esi
2090	movl	24(%esp),%edi
2091	movl	28(%esp),%ebx
2092	andl	$4294967288,%ebx
2093	jz	.L017sw_finish
2094.L018sw_loop:
2095
2096	movl	(%edi),%eax
2097	mull	%eax
2098	movl	%eax,(%esi)
2099	movl	%edx,4(%esi)
2100
2101	movl	4(%edi),%eax
2102	mull	%eax
2103	movl	%eax,8(%esi)
2104	movl	%edx,12(%esi)
2105
2106	movl	8(%edi),%eax
2107	mull	%eax
2108	movl	%eax,16(%esi)
2109	movl	%edx,20(%esi)
2110
2111	movl	12(%edi),%eax
2112	mull	%eax
2113	movl	%eax,24(%esi)
2114	movl	%edx,28(%esi)
2115
2116	movl	16(%edi),%eax
2117	mull	%eax
2118	movl	%eax,32(%esi)
2119	movl	%edx,36(%esi)
2120
2121	movl	20(%edi),%eax
2122	mull	%eax
2123	movl	%eax,40(%esi)
2124	movl	%edx,44(%esi)
2125
2126	movl	24(%edi),%eax
2127	mull	%eax
2128	movl	%eax,48(%esi)
2129	movl	%edx,52(%esi)
2130
2131	movl	28(%edi),%eax
2132	mull	%eax
2133	movl	%eax,56(%esi)
2134	movl	%edx,60(%esi)
2135
2136	addl	$32,%edi
2137	addl	$64,%esi
2138	subl	$8,%ebx
2139	jnz	.L018sw_loop
2140.L017sw_finish:
2141	movl	28(%esp),%ebx
2142	andl	$7,%ebx
2143	jz	.L019sw_end
2144
2145	movl	(%edi),%eax
2146	mull	%eax
2147	movl	%eax,(%esi)
2148	decl	%ebx
2149	movl	%edx,4(%esi)
2150	jz	.L019sw_end
2151
2152	movl	4(%edi),%eax
2153	mull	%eax
2154	movl	%eax,8(%esi)
2155	decl	%ebx
2156	movl	%edx,12(%esi)
2157	jz	.L019sw_end
2158
2159	movl	8(%edi),%eax
2160	mull	%eax
2161	movl	%eax,16(%esi)
2162	decl	%ebx
2163	movl	%edx,20(%esi)
2164	jz	.L019sw_end
2165
2166	movl	12(%edi),%eax
2167	mull	%eax
2168	movl	%eax,24(%esi)
2169	decl	%ebx
2170	movl	%edx,28(%esi)
2171	jz	.L019sw_end
2172
2173	movl	16(%edi),%eax
2174	mull	%eax
2175	movl	%eax,32(%esi)
2176	decl	%ebx
2177	movl	%edx,36(%esi)
2178	jz	.L019sw_end
2179
2180	movl	20(%edi),%eax
2181	mull	%eax
2182	movl	%eax,40(%esi)
2183	decl	%ebx
2184	movl	%edx,44(%esi)
2185	jz	.L019sw_end
2186
2187	movl	24(%edi),%eax
2188	mull	%eax
2189	movl	%eax,48(%esi)
2190	movl	%edx,52(%esi)
2191.L019sw_end:
2192	popl	%edi
2193	popl	%esi
2194	popl	%ebx
2195	popl	%ebp
2196	ret
2197.size	bn_sqr_words,.-.L_bn_sqr_words_begin
2198.globl	bn_div_words
2199.type	bn_div_words,@function
2200.align	16
2201bn_div_words:
2202.L_bn_div_words_begin:
2203	#ifdef __CET__
2204
2205.byte	243,15,30,251
2206	#endif
2207
2208	movl	4(%esp),%edx
2209	movl	8(%esp),%eax
2210	movl	12(%esp),%ecx
2211	divl	%ecx
2212	ret
2213.size	bn_div_words,.-.L_bn_div_words_begin
2214.globl	bn_add_words
2215.type	bn_add_words,@function
2216.align	16
2217bn_add_words:
2218.L_bn_add_words_begin:
2219	#ifdef __CET__
2220
2221.byte	243,15,30,251
2222	#endif
2223
2224	pushl	%ebp
2225	pushl	%ebx
2226	pushl	%esi
2227	pushl	%edi
2228
2229	movl	20(%esp),%ebx
2230	movl	24(%esp),%esi
2231	movl	28(%esp),%edi
2232	movl	32(%esp),%ebp
2233	xorl	%eax,%eax
2234	andl	$4294967288,%ebp
2235	jz	.L020aw_finish
2236.L021aw_loop:
2237
2238	movl	(%esi),%ecx
2239	movl	(%edi),%edx
2240	addl	%eax,%ecx
2241	movl	$0,%eax
2242	adcl	%eax,%eax
2243	addl	%edx,%ecx
2244	adcl	$0,%eax
2245	movl	%ecx,(%ebx)
2246
2247	movl	4(%esi),%ecx
2248	movl	4(%edi),%edx
2249	addl	%eax,%ecx
2250	movl	$0,%eax
2251	adcl	%eax,%eax
2252	addl	%edx,%ecx
2253	adcl	$0,%eax
2254	movl	%ecx,4(%ebx)
2255
2256	movl	8(%esi),%ecx
2257	movl	8(%edi),%edx
2258	addl	%eax,%ecx
2259	movl	$0,%eax
2260	adcl	%eax,%eax
2261	addl	%edx,%ecx
2262	adcl	$0,%eax
2263	movl	%ecx,8(%ebx)
2264
2265	movl	12(%esi),%ecx
2266	movl	12(%edi),%edx
2267	addl	%eax,%ecx
2268	movl	$0,%eax
2269	adcl	%eax,%eax
2270	addl	%edx,%ecx
2271	adcl	$0,%eax
2272	movl	%ecx,12(%ebx)
2273
2274	movl	16(%esi),%ecx
2275	movl	16(%edi),%edx
2276	addl	%eax,%ecx
2277	movl	$0,%eax
2278	adcl	%eax,%eax
2279	addl	%edx,%ecx
2280	adcl	$0,%eax
2281	movl	%ecx,16(%ebx)
2282
2283	movl	20(%esi),%ecx
2284	movl	20(%edi),%edx
2285	addl	%eax,%ecx
2286	movl	$0,%eax
2287	adcl	%eax,%eax
2288	addl	%edx,%ecx
2289	adcl	$0,%eax
2290	movl	%ecx,20(%ebx)
2291
2292	movl	24(%esi),%ecx
2293	movl	24(%edi),%edx
2294	addl	%eax,%ecx
2295	movl	$0,%eax
2296	adcl	%eax,%eax
2297	addl	%edx,%ecx
2298	adcl	$0,%eax
2299	movl	%ecx,24(%ebx)
2300
2301	movl	28(%esi),%ecx
2302	movl	28(%edi),%edx
2303	addl	%eax,%ecx
2304	movl	$0,%eax
2305	adcl	%eax,%eax
2306	addl	%edx,%ecx
2307	adcl	$0,%eax
2308	movl	%ecx,28(%ebx)
2309
2310	addl	$32,%esi
2311	addl	$32,%edi
2312	addl	$32,%ebx
2313	subl	$8,%ebp
2314	jnz	.L021aw_loop
2315.L020aw_finish:
2316	movl	32(%esp),%ebp
2317	andl	$7,%ebp
2318	jz	.L022aw_end
2319
2320	movl	(%esi),%ecx
2321	movl	(%edi),%edx
2322	addl	%eax,%ecx
2323	movl	$0,%eax
2324	adcl	%eax,%eax
2325	addl	%edx,%ecx
2326	adcl	$0,%eax
2327	decl	%ebp
2328	movl	%ecx,(%ebx)
2329	jz	.L022aw_end
2330
2331	movl	4(%esi),%ecx
2332	movl	4(%edi),%edx
2333	addl	%eax,%ecx
2334	movl	$0,%eax
2335	adcl	%eax,%eax
2336	addl	%edx,%ecx
2337	adcl	$0,%eax
2338	decl	%ebp
2339	movl	%ecx,4(%ebx)
2340	jz	.L022aw_end
2341
2342	movl	8(%esi),%ecx
2343	movl	8(%edi),%edx
2344	addl	%eax,%ecx
2345	movl	$0,%eax
2346	adcl	%eax,%eax
2347	addl	%edx,%ecx
2348	adcl	$0,%eax
2349	decl	%ebp
2350	movl	%ecx,8(%ebx)
2351	jz	.L022aw_end
2352
2353	movl	12(%esi),%ecx
2354	movl	12(%edi),%edx
2355	addl	%eax,%ecx
2356	movl	$0,%eax
2357	adcl	%eax,%eax
2358	addl	%edx,%ecx
2359	adcl	$0,%eax
2360	decl	%ebp
2361	movl	%ecx,12(%ebx)
2362	jz	.L022aw_end
2363
2364	movl	16(%esi),%ecx
2365	movl	16(%edi),%edx
2366	addl	%eax,%ecx
2367	movl	$0,%eax
2368	adcl	%eax,%eax
2369	addl	%edx,%ecx
2370	adcl	$0,%eax
2371	decl	%ebp
2372	movl	%ecx,16(%ebx)
2373	jz	.L022aw_end
2374
2375	movl	20(%esi),%ecx
2376	movl	20(%edi),%edx
2377	addl	%eax,%ecx
2378	movl	$0,%eax
2379	adcl	%eax,%eax
2380	addl	%edx,%ecx
2381	adcl	$0,%eax
2382	decl	%ebp
2383	movl	%ecx,20(%ebx)
2384	jz	.L022aw_end
2385
2386	movl	24(%esi),%ecx
2387	movl	24(%edi),%edx
2388	addl	%eax,%ecx
2389	movl	$0,%eax
2390	adcl	%eax,%eax
2391	addl	%edx,%ecx
2392	adcl	$0,%eax
2393	movl	%ecx,24(%ebx)
2394.L022aw_end:
2395	popl	%edi
2396	popl	%esi
2397	popl	%ebx
2398	popl	%ebp
2399	ret
2400.size	bn_add_words,.-.L_bn_add_words_begin
2401.globl	bn_sub_words
2402.type	bn_sub_words,@function
2403.align	16
2404bn_sub_words:
2405.L_bn_sub_words_begin:
2406	#ifdef __CET__
2407
2408.byte	243,15,30,251
2409	#endif
2410
2411	pushl	%ebp
2412	pushl	%ebx
2413	pushl	%esi
2414	pushl	%edi
2415
2416	movl	20(%esp),%ebx
2417	movl	24(%esp),%esi
2418	movl	28(%esp),%edi
2419	movl	32(%esp),%ebp
2420	xorl	%eax,%eax
2421	andl	$4294967288,%ebp
2422	jz	.L023aw_finish
2423.L024aw_loop:
2424
2425	movl	(%esi),%ecx
2426	movl	(%edi),%edx
2427	subl	%eax,%ecx
2428	movl	$0,%eax
2429	adcl	%eax,%eax
2430	subl	%edx,%ecx
2431	adcl	$0,%eax
2432	movl	%ecx,(%ebx)
2433
2434	movl	4(%esi),%ecx
2435	movl	4(%edi),%edx
2436	subl	%eax,%ecx
2437	movl	$0,%eax
2438	adcl	%eax,%eax
2439	subl	%edx,%ecx
2440	adcl	$0,%eax
2441	movl	%ecx,4(%ebx)
2442
2443	movl	8(%esi),%ecx
2444	movl	8(%edi),%edx
2445	subl	%eax,%ecx
2446	movl	$0,%eax
2447	adcl	%eax,%eax
2448	subl	%edx,%ecx
2449	adcl	$0,%eax
2450	movl	%ecx,8(%ebx)
2451
2452	movl	12(%esi),%ecx
2453	movl	12(%edi),%edx
2454	subl	%eax,%ecx
2455	movl	$0,%eax
2456	adcl	%eax,%eax
2457	subl	%edx,%ecx
2458	adcl	$0,%eax
2459	movl	%ecx,12(%ebx)
2460
2461	movl	16(%esi),%ecx
2462	movl	16(%edi),%edx
2463	subl	%eax,%ecx
2464	movl	$0,%eax
2465	adcl	%eax,%eax
2466	subl	%edx,%ecx
2467	adcl	$0,%eax
2468	movl	%ecx,16(%ebx)
2469
2470	movl	20(%esi),%ecx
2471	movl	20(%edi),%edx
2472	subl	%eax,%ecx
2473	movl	$0,%eax
2474	adcl	%eax,%eax
2475	subl	%edx,%ecx
2476	adcl	$0,%eax
2477	movl	%ecx,20(%ebx)
2478
2479	movl	24(%esi),%ecx
2480	movl	24(%edi),%edx
2481	subl	%eax,%ecx
2482	movl	$0,%eax
2483	adcl	%eax,%eax
2484	subl	%edx,%ecx
2485	adcl	$0,%eax
2486	movl	%ecx,24(%ebx)
2487
2488	movl	28(%esi),%ecx
2489	movl	28(%edi),%edx
2490	subl	%eax,%ecx
2491	movl	$0,%eax
2492	adcl	%eax,%eax
2493	subl	%edx,%ecx
2494	adcl	$0,%eax
2495	movl	%ecx,28(%ebx)
2496
2497	addl	$32,%esi
2498	addl	$32,%edi
2499	addl	$32,%ebx
2500	subl	$8,%ebp
2501	jnz	.L024aw_loop
2502.L023aw_finish:
2503	movl	32(%esp),%ebp
2504	andl	$7,%ebp
2505	jz	.L025aw_end
2506
2507	movl	(%esi),%ecx
2508	movl	(%edi),%edx
2509	subl	%eax,%ecx
2510	movl	$0,%eax
2511	adcl	%eax,%eax
2512	subl	%edx,%ecx
2513	adcl	$0,%eax
2514	decl	%ebp
2515	movl	%ecx,(%ebx)
2516	jz	.L025aw_end
2517
2518	movl	4(%esi),%ecx
2519	movl	4(%edi),%edx
2520	subl	%eax,%ecx
2521	movl	$0,%eax
2522	adcl	%eax,%eax
2523	subl	%edx,%ecx
2524	adcl	$0,%eax
2525	decl	%ebp
2526	movl	%ecx,4(%ebx)
2527	jz	.L025aw_end
2528
2529	movl	8(%esi),%ecx
2530	movl	8(%edi),%edx
2531	subl	%eax,%ecx
2532	movl	$0,%eax
2533	adcl	%eax,%eax
2534	subl	%edx,%ecx
2535	adcl	$0,%eax
2536	decl	%ebp
2537	movl	%ecx,8(%ebx)
2538	jz	.L025aw_end
2539
2540	movl	12(%esi),%ecx
2541	movl	12(%edi),%edx
2542	subl	%eax,%ecx
2543	movl	$0,%eax
2544	adcl	%eax,%eax
2545	subl	%edx,%ecx
2546	adcl	$0,%eax
2547	decl	%ebp
2548	movl	%ecx,12(%ebx)
2549	jz	.L025aw_end
2550
2551	movl	16(%esi),%ecx
2552	movl	16(%edi),%edx
2553	subl	%eax,%ecx
2554	movl	$0,%eax
2555	adcl	%eax,%eax
2556	subl	%edx,%ecx
2557	adcl	$0,%eax
2558	decl	%ebp
2559	movl	%ecx,16(%ebx)
2560	jz	.L025aw_end
2561
2562	movl	20(%esi),%ecx
2563	movl	20(%edi),%edx
2564	subl	%eax,%ecx
2565	movl	$0,%eax
2566	adcl	%eax,%eax
2567	subl	%edx,%ecx
2568	adcl	$0,%eax
2569	decl	%ebp
2570	movl	%ecx,20(%ebx)
2571	jz	.L025aw_end
2572
2573	movl	24(%esi),%ecx
2574	movl	24(%edi),%edx
2575	subl	%eax,%ecx
2576	movl	$0,%eax
2577	adcl	%eax,%eax
2578	subl	%edx,%ecx
2579	adcl	$0,%eax
2580	movl	%ecx,24(%ebx)
2581.L025aw_end:
2582	popl	%edi
2583	popl	%esi
2584	popl	%ebx
2585	popl	%ebp
2586	ret
2587.size	bn_sub_words,.-.L_bn_sub_words_begin
2588.globl	bn_sub_part_words
2589.type	bn_sub_part_words,@function
2590.align	16
2591bn_sub_part_words:
2592.L_bn_sub_part_words_begin:
2593	#ifdef __CET__
2594
2595.byte	243,15,30,251
2596	#endif
2597
2598	pushl	%ebp
2599	pushl	%ebx
2600	pushl	%esi
2601	pushl	%edi
2602
2603	movl	20(%esp),%ebx
2604	movl	24(%esp),%esi
2605	movl	28(%esp),%edi
2606	movl	32(%esp),%ebp
2607	xorl	%eax,%eax
2608	andl	$4294967288,%ebp
2609	jz	.L026aw_finish
2610.L027aw_loop:
2611
2612	movl	(%esi),%ecx
2613	movl	(%edi),%edx
2614	subl	%eax,%ecx
2615	movl	$0,%eax
2616	adcl	%eax,%eax
2617	subl	%edx,%ecx
2618	adcl	$0,%eax
2619	movl	%ecx,(%ebx)
2620
2621	movl	4(%esi),%ecx
2622	movl	4(%edi),%edx
2623	subl	%eax,%ecx
2624	movl	$0,%eax
2625	adcl	%eax,%eax
2626	subl	%edx,%ecx
2627	adcl	$0,%eax
2628	movl	%ecx,4(%ebx)
2629
2630	movl	8(%esi),%ecx
2631	movl	8(%edi),%edx
2632	subl	%eax,%ecx
2633	movl	$0,%eax
2634	adcl	%eax,%eax
2635	subl	%edx,%ecx
2636	adcl	$0,%eax
2637	movl	%ecx,8(%ebx)
2638
2639	movl	12(%esi),%ecx
2640	movl	12(%edi),%edx
2641	subl	%eax,%ecx
2642	movl	$0,%eax
2643	adcl	%eax,%eax
2644	subl	%edx,%ecx
2645	adcl	$0,%eax
2646	movl	%ecx,12(%ebx)
2647
2648	movl	16(%esi),%ecx
2649	movl	16(%edi),%edx
2650	subl	%eax,%ecx
2651	movl	$0,%eax
2652	adcl	%eax,%eax
2653	subl	%edx,%ecx
2654	adcl	$0,%eax
2655	movl	%ecx,16(%ebx)
2656
2657	movl	20(%esi),%ecx
2658	movl	20(%edi),%edx
2659	subl	%eax,%ecx
2660	movl	$0,%eax
2661	adcl	%eax,%eax
2662	subl	%edx,%ecx
2663	adcl	$0,%eax
2664	movl	%ecx,20(%ebx)
2665
2666	movl	24(%esi),%ecx
2667	movl	24(%edi),%edx
2668	subl	%eax,%ecx
2669	movl	$0,%eax
2670	adcl	%eax,%eax
2671	subl	%edx,%ecx
2672	adcl	$0,%eax
2673	movl	%ecx,24(%ebx)
2674
2675	movl	28(%esi),%ecx
2676	movl	28(%edi),%edx
2677	subl	%eax,%ecx
2678	movl	$0,%eax
2679	adcl	%eax,%eax
2680	subl	%edx,%ecx
2681	adcl	$0,%eax
2682	movl	%ecx,28(%ebx)
2683
2684	addl	$32,%esi
2685	addl	$32,%edi
2686	addl	$32,%ebx
2687	subl	$8,%ebp
2688	jnz	.L027aw_loop
2689.L026aw_finish:
2690	movl	32(%esp),%ebp
2691	andl	$7,%ebp
2692	jz	.L028aw_end
2693
2694	movl	(%esi),%ecx
2695	movl	(%edi),%edx
2696	subl	%eax,%ecx
2697	movl	$0,%eax
2698	adcl	%eax,%eax
2699	subl	%edx,%ecx
2700	adcl	$0,%eax
2701	movl	%ecx,(%ebx)
2702	addl	$4,%esi
2703	addl	$4,%edi
2704	addl	$4,%ebx
2705	decl	%ebp
2706	jz	.L028aw_end
2707
2708	movl	(%esi),%ecx
2709	movl	(%edi),%edx
2710	subl	%eax,%ecx
2711	movl	$0,%eax
2712	adcl	%eax,%eax
2713	subl	%edx,%ecx
2714	adcl	$0,%eax
2715	movl	%ecx,(%ebx)
2716	addl	$4,%esi
2717	addl	$4,%edi
2718	addl	$4,%ebx
2719	decl	%ebp
2720	jz	.L028aw_end
2721
2722	movl	(%esi),%ecx
2723	movl	(%edi),%edx
2724	subl	%eax,%ecx
2725	movl	$0,%eax
2726	adcl	%eax,%eax
2727	subl	%edx,%ecx
2728	adcl	$0,%eax
2729	movl	%ecx,(%ebx)
2730	addl	$4,%esi
2731	addl	$4,%edi
2732	addl	$4,%ebx
2733	decl	%ebp
2734	jz	.L028aw_end
2735
2736	movl	(%esi),%ecx
2737	movl	(%edi),%edx
2738	subl	%eax,%ecx
2739	movl	$0,%eax
2740	adcl	%eax,%eax
2741	subl	%edx,%ecx
2742	adcl	$0,%eax
2743	movl	%ecx,(%ebx)
2744	addl	$4,%esi
2745	addl	$4,%edi
2746	addl	$4,%ebx
2747	decl	%ebp
2748	jz	.L028aw_end
2749
2750	movl	(%esi),%ecx
2751	movl	(%edi),%edx
2752	subl	%eax,%ecx
2753	movl	$0,%eax
2754	adcl	%eax,%eax
2755	subl	%edx,%ecx
2756	adcl	$0,%eax
2757	movl	%ecx,(%ebx)
2758	addl	$4,%esi
2759	addl	$4,%edi
2760	addl	$4,%ebx
2761	decl	%ebp
2762	jz	.L028aw_end
2763
2764	movl	(%esi),%ecx
2765	movl	(%edi),%edx
2766	subl	%eax,%ecx
2767	movl	$0,%eax
2768	adcl	%eax,%eax
2769	subl	%edx,%ecx
2770	adcl	$0,%eax
2771	movl	%ecx,(%ebx)
2772	addl	$4,%esi
2773	addl	$4,%edi
2774	addl	$4,%ebx
2775	decl	%ebp
2776	jz	.L028aw_end
2777
2778	movl	(%esi),%ecx
2779	movl	(%edi),%edx
2780	subl	%eax,%ecx
2781	movl	$0,%eax
2782	adcl	%eax,%eax
2783	subl	%edx,%ecx
2784	adcl	$0,%eax
2785	movl	%ecx,(%ebx)
2786	addl	$4,%esi
2787	addl	$4,%edi
2788	addl	$4,%ebx
2789.L028aw_end:
2790	cmpl	$0,36(%esp)
2791	je	.L029pw_end
2792	movl	36(%esp),%ebp
2793	cmpl	$0,%ebp
2794	je	.L029pw_end
2795	jge	.L030pw_pos
2796
2797	movl	$0,%edx
2798	subl	%ebp,%edx
2799	movl	%edx,%ebp
2800	andl	$4294967288,%ebp
2801	jz	.L031pw_neg_finish
2802.L032pw_neg_loop:
2803
2804	movl	$0,%ecx
2805	movl	(%edi),%edx
2806	subl	%eax,%ecx
2807	movl	$0,%eax
2808	adcl	%eax,%eax
2809	subl	%edx,%ecx
2810	adcl	$0,%eax
2811	movl	%ecx,(%ebx)
2812
2813	movl	$0,%ecx
2814	movl	4(%edi),%edx
2815	subl	%eax,%ecx
2816	movl	$0,%eax
2817	adcl	%eax,%eax
2818	subl	%edx,%ecx
2819	adcl	$0,%eax
2820	movl	%ecx,4(%ebx)
2821
2822	movl	$0,%ecx
2823	movl	8(%edi),%edx
2824	subl	%eax,%ecx
2825	movl	$0,%eax
2826	adcl	%eax,%eax
2827	subl	%edx,%ecx
2828	adcl	$0,%eax
2829	movl	%ecx,8(%ebx)
2830
2831	movl	$0,%ecx
2832	movl	12(%edi),%edx
2833	subl	%eax,%ecx
2834	movl	$0,%eax
2835	adcl	%eax,%eax
2836	subl	%edx,%ecx
2837	adcl	$0,%eax
2838	movl	%ecx,12(%ebx)
2839
2840	movl	$0,%ecx
2841	movl	16(%edi),%edx
2842	subl	%eax,%ecx
2843	movl	$0,%eax
2844	adcl	%eax,%eax
2845	subl	%edx,%ecx
2846	adcl	$0,%eax
2847	movl	%ecx,16(%ebx)
2848
2849	movl	$0,%ecx
2850	movl	20(%edi),%edx
2851	subl	%eax,%ecx
2852	movl	$0,%eax
2853	adcl	%eax,%eax
2854	subl	%edx,%ecx
2855	adcl	$0,%eax
2856	movl	%ecx,20(%ebx)
2857
2858	movl	$0,%ecx
2859	movl	24(%edi),%edx
2860	subl	%eax,%ecx
2861	movl	$0,%eax
2862	adcl	%eax,%eax
2863	subl	%edx,%ecx
2864	adcl	$0,%eax
2865	movl	%ecx,24(%ebx)
2866
2867	movl	$0,%ecx
2868	movl	28(%edi),%edx
2869	subl	%eax,%ecx
2870	movl	$0,%eax
2871	adcl	%eax,%eax
2872	subl	%edx,%ecx
2873	adcl	$0,%eax
2874	movl	%ecx,28(%ebx)
2875
2876	addl	$32,%edi
2877	addl	$32,%ebx
2878	subl	$8,%ebp
2879	jnz	.L032pw_neg_loop
2880.L031pw_neg_finish:
2881	movl	36(%esp),%edx
2882	movl	$0,%ebp
2883	subl	%edx,%ebp
2884	andl	$7,%ebp
2885	jz	.L029pw_end
2886
2887	movl	$0,%ecx
2888	movl	(%edi),%edx
2889	subl	%eax,%ecx
2890	movl	$0,%eax
2891	adcl	%eax,%eax
2892	subl	%edx,%ecx
2893	adcl	$0,%eax
2894	decl	%ebp
2895	movl	%ecx,(%ebx)
2896	jz	.L029pw_end
2897
2898	movl	$0,%ecx
2899	movl	4(%edi),%edx
2900	subl	%eax,%ecx
2901	movl	$0,%eax
2902	adcl	%eax,%eax
2903	subl	%edx,%ecx
2904	adcl	$0,%eax
2905	decl	%ebp
2906	movl	%ecx,4(%ebx)
2907	jz	.L029pw_end
2908
2909	movl	$0,%ecx
2910	movl	8(%edi),%edx
2911	subl	%eax,%ecx
2912	movl	$0,%eax
2913	adcl	%eax,%eax
2914	subl	%edx,%ecx
2915	adcl	$0,%eax
2916	decl	%ebp
2917	movl	%ecx,8(%ebx)
2918	jz	.L029pw_end
2919
2920	movl	$0,%ecx
2921	movl	12(%edi),%edx
2922	subl	%eax,%ecx
2923	movl	$0,%eax
2924	adcl	%eax,%eax
2925	subl	%edx,%ecx
2926	adcl	$0,%eax
2927	decl	%ebp
2928	movl	%ecx,12(%ebx)
2929	jz	.L029pw_end
2930
2931	movl	$0,%ecx
2932	movl	16(%edi),%edx
2933	subl	%eax,%ecx
2934	movl	$0,%eax
2935	adcl	%eax,%eax
2936	subl	%edx,%ecx
2937	adcl	$0,%eax
2938	decl	%ebp
2939	movl	%ecx,16(%ebx)
2940	jz	.L029pw_end
2941
2942	movl	$0,%ecx
2943	movl	20(%edi),%edx
2944	subl	%eax,%ecx
2945	movl	$0,%eax
2946	adcl	%eax,%eax
2947	subl	%edx,%ecx
2948	adcl	$0,%eax
2949	decl	%ebp
2950	movl	%ecx,20(%ebx)
2951	jz	.L029pw_end
2952
2953	movl	$0,%ecx
2954	movl	24(%edi),%edx
2955	subl	%eax,%ecx
2956	movl	$0,%eax
2957	adcl	%eax,%eax
2958	subl	%edx,%ecx
2959	adcl	$0,%eax
2960	movl	%ecx,24(%ebx)
2961	jmp	.L029pw_end
2962.L030pw_pos:
2963	andl	$4294967288,%ebp
2964	jz	.L033pw_pos_finish
2965.L034pw_pos_loop:
2966
2967	movl	(%esi),%ecx
2968	subl	%eax,%ecx
2969	movl	%ecx,(%ebx)
2970	jnc	.L035pw_nc0
2971
2972	movl	4(%esi),%ecx
2973	subl	%eax,%ecx
2974	movl	%ecx,4(%ebx)
2975	jnc	.L036pw_nc1
2976
2977	movl	8(%esi),%ecx
2978	subl	%eax,%ecx
2979	movl	%ecx,8(%ebx)
2980	jnc	.L037pw_nc2
2981
2982	movl	12(%esi),%ecx
2983	subl	%eax,%ecx
2984	movl	%ecx,12(%ebx)
2985	jnc	.L038pw_nc3
2986
2987	movl	16(%esi),%ecx
2988	subl	%eax,%ecx
2989	movl	%ecx,16(%ebx)
2990	jnc	.L039pw_nc4
2991
2992	movl	20(%esi),%ecx
2993	subl	%eax,%ecx
2994	movl	%ecx,20(%ebx)
2995	jnc	.L040pw_nc5
2996
2997	movl	24(%esi),%ecx
2998	subl	%eax,%ecx
2999	movl	%ecx,24(%ebx)
3000	jnc	.L041pw_nc6
3001
3002	movl	28(%esi),%ecx
3003	subl	%eax,%ecx
3004	movl	%ecx,28(%ebx)
3005	jnc	.L042pw_nc7
3006
3007	addl	$32,%esi
3008	addl	$32,%ebx
3009	subl	$8,%ebp
3010	jnz	.L034pw_pos_loop
3011.L033pw_pos_finish:
3012	movl	36(%esp),%ebp
3013	andl	$7,%ebp
3014	jz	.L029pw_end
3015
3016	movl	(%esi),%ecx
3017	subl	%eax,%ecx
3018	movl	%ecx,(%ebx)
3019	jnc	.L043pw_tail_nc0
3020	decl	%ebp
3021	jz	.L029pw_end
3022
3023	movl	4(%esi),%ecx
3024	subl	%eax,%ecx
3025	movl	%ecx,4(%ebx)
3026	jnc	.L044pw_tail_nc1
3027	decl	%ebp
3028	jz	.L029pw_end
3029
3030	movl	8(%esi),%ecx
3031	subl	%eax,%ecx
3032	movl	%ecx,8(%ebx)
3033	jnc	.L045pw_tail_nc2
3034	decl	%ebp
3035	jz	.L029pw_end
3036
3037	movl	12(%esi),%ecx
3038	subl	%eax,%ecx
3039	movl	%ecx,12(%ebx)
3040	jnc	.L046pw_tail_nc3
3041	decl	%ebp
3042	jz	.L029pw_end
3043
3044	movl	16(%esi),%ecx
3045	subl	%eax,%ecx
3046	movl	%ecx,16(%ebx)
3047	jnc	.L047pw_tail_nc4
3048	decl	%ebp
3049	jz	.L029pw_end
3050
3051	movl	20(%esi),%ecx
3052	subl	%eax,%ecx
3053	movl	%ecx,20(%ebx)
3054	jnc	.L048pw_tail_nc5
3055	decl	%ebp
3056	jz	.L029pw_end
3057
3058	movl	24(%esi),%ecx
3059	subl	%eax,%ecx
3060	movl	%ecx,24(%ebx)
3061	jnc	.L049pw_tail_nc6
3062	movl	$1,%eax
3063	jmp	.L029pw_end
3064.L050pw_nc_loop:
3065	movl	(%esi),%ecx
3066	movl	%ecx,(%ebx)
3067.L035pw_nc0:
3068	movl	4(%esi),%ecx
3069	movl	%ecx,4(%ebx)
3070.L036pw_nc1:
3071	movl	8(%esi),%ecx
3072	movl	%ecx,8(%ebx)
3073.L037pw_nc2:
3074	movl	12(%esi),%ecx
3075	movl	%ecx,12(%ebx)
3076.L038pw_nc3:
3077	movl	16(%esi),%ecx
3078	movl	%ecx,16(%ebx)
3079.L039pw_nc4:
3080	movl	20(%esi),%ecx
3081	movl	%ecx,20(%ebx)
3082.L040pw_nc5:
3083	movl	24(%esi),%ecx
3084	movl	%ecx,24(%ebx)
3085.L041pw_nc6:
3086	movl	28(%esi),%ecx
3087	movl	%ecx,28(%ebx)
3088.L042pw_nc7:
3089
3090	addl	$32,%esi
3091	addl	$32,%ebx
3092	subl	$8,%ebp
3093	jnz	.L050pw_nc_loop
3094	movl	36(%esp),%ebp
3095	andl	$7,%ebp
3096	jz	.L051pw_nc_end
3097	movl	(%esi),%ecx
3098	movl	%ecx,(%ebx)
3099.L043pw_tail_nc0:
3100	decl	%ebp
3101	jz	.L051pw_nc_end
3102	movl	4(%esi),%ecx
3103	movl	%ecx,4(%ebx)
3104.L044pw_tail_nc1:
3105	decl	%ebp
3106	jz	.L051pw_nc_end
3107	movl	8(%esi),%ecx
3108	movl	%ecx,8(%ebx)
3109.L045pw_tail_nc2:
3110	decl	%ebp
3111	jz	.L051pw_nc_end
3112	movl	12(%esi),%ecx
3113	movl	%ecx,12(%ebx)
3114.L046pw_tail_nc3:
3115	decl	%ebp
3116	jz	.L051pw_nc_end
3117	movl	16(%esi),%ecx
3118	movl	%ecx,16(%ebx)
3119.L047pw_tail_nc4:
3120	decl	%ebp
3121	jz	.L051pw_nc_end
3122	movl	20(%esi),%ecx
3123	movl	%ecx,20(%ebx)
3124.L048pw_tail_nc5:
3125	decl	%ebp
3126	jz	.L051pw_nc_end
3127	movl	24(%esi),%ecx
3128	movl	%ecx,24(%ebx)
3129.L049pw_tail_nc6:
3130.L051pw_nc_end:
3131	movl	$0,%eax
3132.L029pw_end:
3133	popl	%edi
3134	popl	%esi
3135	popl	%ebx
3136	popl	%ebp
3137	ret
3138.size	bn_sub_part_words,.-.L_bn_sub_part_words_begin
3139.comm	OPENSSL_ia32cap_P,16,4
3140
3141	.section ".note.gnu.property", "a"
3142	.p2align 2
3143	.long 1f - 0f
3144	.long 4f - 1f
3145	.long 5
31460:
3147	.asciz "GNU"
31481:
3149	.p2align 2
3150	.long 0xc0000002
3151	.long 3f - 2f
31522:
3153	.long 3
31543:
3155	.p2align 2
31564:
3157#endif
3158