xref: /aosp_15_r20/external/cronet/third_party/boringssl/src/gen/bcm/bn-586-linux.S (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1// This file is generated from a similarly-named Perl script in the BoringSSL
2// source tree. Do not edit by hand.
3
4#include <openssl/asm_base.h>
5
6#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
7.text
8.globl	bn_mul_add_words
9.hidden	bn_mul_add_words
10.type	bn_mul_add_words,@function
11.align	16
12bn_mul_add_words:
13.L_bn_mul_add_words_begin:
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.hidden	bn_mul_words
294.type	bn_mul_words,@function
295.align	16
296bn_mul_words:
297.L_bn_mul_words_begin:
298	call	.L010PIC_me_up
299.L010PIC_me_up:
300	popl	%eax
301	leal	OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax
302	btl	$26,(%eax)
303	jnc	.L011mw_non_sse2
304	movl	4(%esp),%eax
305	movl	8(%esp),%edx
306	movl	12(%esp),%ecx
307	movd	16(%esp),%mm0
308	pxor	%mm1,%mm1
309.align	16
310.L012mw_sse2_loop:
311	movd	(%edx),%mm2
312	pmuludq	%mm0,%mm2
313	leal	4(%edx),%edx
314	paddq	%mm2,%mm1
315	movd	%mm1,(%eax)
316	subl	$1,%ecx
317	psrlq	$32,%mm1
318	leal	4(%eax),%eax
319	jnz	.L012mw_sse2_loop
320	movd	%mm1,%eax
321	emms
322	ret
323.align	16
324.L011mw_non_sse2:
325	pushl	%ebp
326	pushl	%ebx
327	pushl	%esi
328	pushl	%edi
329
330	xorl	%esi,%esi
331	movl	20(%esp),%edi
332	movl	24(%esp),%ebx
333	movl	28(%esp),%ebp
334	movl	32(%esp),%ecx
335	andl	$4294967288,%ebp
336	jz	.L013mw_finish
337.L014mw_loop:
338
339	movl	(%ebx),%eax
340	mull	%ecx
341	addl	%esi,%eax
342	adcl	$0,%edx
343	movl	%eax,(%edi)
344	movl	%edx,%esi
345
346	movl	4(%ebx),%eax
347	mull	%ecx
348	addl	%esi,%eax
349	adcl	$0,%edx
350	movl	%eax,4(%edi)
351	movl	%edx,%esi
352
353	movl	8(%ebx),%eax
354	mull	%ecx
355	addl	%esi,%eax
356	adcl	$0,%edx
357	movl	%eax,8(%edi)
358	movl	%edx,%esi
359
360	movl	12(%ebx),%eax
361	mull	%ecx
362	addl	%esi,%eax
363	adcl	$0,%edx
364	movl	%eax,12(%edi)
365	movl	%edx,%esi
366
367	movl	16(%ebx),%eax
368	mull	%ecx
369	addl	%esi,%eax
370	adcl	$0,%edx
371	movl	%eax,16(%edi)
372	movl	%edx,%esi
373
374	movl	20(%ebx),%eax
375	mull	%ecx
376	addl	%esi,%eax
377	adcl	$0,%edx
378	movl	%eax,20(%edi)
379	movl	%edx,%esi
380
381	movl	24(%ebx),%eax
382	mull	%ecx
383	addl	%esi,%eax
384	adcl	$0,%edx
385	movl	%eax,24(%edi)
386	movl	%edx,%esi
387
388	movl	28(%ebx),%eax
389	mull	%ecx
390	addl	%esi,%eax
391	adcl	$0,%edx
392	movl	%eax,28(%edi)
393	movl	%edx,%esi
394
395	addl	$32,%ebx
396	addl	$32,%edi
397	subl	$8,%ebp
398	jz	.L013mw_finish
399	jmp	.L014mw_loop
400.L013mw_finish:
401	movl	28(%esp),%ebp
402	andl	$7,%ebp
403	jnz	.L015mw_finish2
404	jmp	.L016mw_end
405.L015mw_finish2:
406
407	movl	(%ebx),%eax
408	mull	%ecx
409	addl	%esi,%eax
410	adcl	$0,%edx
411	movl	%eax,(%edi)
412	movl	%edx,%esi
413	decl	%ebp
414	jz	.L016mw_end
415
416	movl	4(%ebx),%eax
417	mull	%ecx
418	addl	%esi,%eax
419	adcl	$0,%edx
420	movl	%eax,4(%edi)
421	movl	%edx,%esi
422	decl	%ebp
423	jz	.L016mw_end
424
425	movl	8(%ebx),%eax
426	mull	%ecx
427	addl	%esi,%eax
428	adcl	$0,%edx
429	movl	%eax,8(%edi)
430	movl	%edx,%esi
431	decl	%ebp
432	jz	.L016mw_end
433
434	movl	12(%ebx),%eax
435	mull	%ecx
436	addl	%esi,%eax
437	adcl	$0,%edx
438	movl	%eax,12(%edi)
439	movl	%edx,%esi
440	decl	%ebp
441	jz	.L016mw_end
442
443	movl	16(%ebx),%eax
444	mull	%ecx
445	addl	%esi,%eax
446	adcl	$0,%edx
447	movl	%eax,16(%edi)
448	movl	%edx,%esi
449	decl	%ebp
450	jz	.L016mw_end
451
452	movl	20(%ebx),%eax
453	mull	%ecx
454	addl	%esi,%eax
455	adcl	$0,%edx
456	movl	%eax,20(%edi)
457	movl	%edx,%esi
458	decl	%ebp
459	jz	.L016mw_end
460
461	movl	24(%ebx),%eax
462	mull	%ecx
463	addl	%esi,%eax
464	adcl	$0,%edx
465	movl	%eax,24(%edi)
466	movl	%edx,%esi
467.L016mw_end:
468	movl	%esi,%eax
469	popl	%edi
470	popl	%esi
471	popl	%ebx
472	popl	%ebp
473	ret
474.size	bn_mul_words,.-.L_bn_mul_words_begin
475.globl	bn_sqr_words
476.hidden	bn_sqr_words
477.type	bn_sqr_words,@function
478.align	16
479bn_sqr_words:
480.L_bn_sqr_words_begin:
481	call	.L017PIC_me_up
482.L017PIC_me_up:
483	popl	%eax
484	leal	OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax
485	btl	$26,(%eax)
486	jnc	.L018sqr_non_sse2
487	movl	4(%esp),%eax
488	movl	8(%esp),%edx
489	movl	12(%esp),%ecx
490.align	16
491.L019sqr_sse2_loop:
492	movd	(%edx),%mm0
493	pmuludq	%mm0,%mm0
494	leal	4(%edx),%edx
495	movq	%mm0,(%eax)
496	subl	$1,%ecx
497	leal	8(%eax),%eax
498	jnz	.L019sqr_sse2_loop
499	emms
500	ret
501.align	16
502.L018sqr_non_sse2:
503	pushl	%ebp
504	pushl	%ebx
505	pushl	%esi
506	pushl	%edi
507
508	movl	20(%esp),%esi
509	movl	24(%esp),%edi
510	movl	28(%esp),%ebx
511	andl	$4294967288,%ebx
512	jz	.L020sw_finish
513.L021sw_loop:
514
515	movl	(%edi),%eax
516	mull	%eax
517	movl	%eax,(%esi)
518	movl	%edx,4(%esi)
519
520	movl	4(%edi),%eax
521	mull	%eax
522	movl	%eax,8(%esi)
523	movl	%edx,12(%esi)
524
525	movl	8(%edi),%eax
526	mull	%eax
527	movl	%eax,16(%esi)
528	movl	%edx,20(%esi)
529
530	movl	12(%edi),%eax
531	mull	%eax
532	movl	%eax,24(%esi)
533	movl	%edx,28(%esi)
534
535	movl	16(%edi),%eax
536	mull	%eax
537	movl	%eax,32(%esi)
538	movl	%edx,36(%esi)
539
540	movl	20(%edi),%eax
541	mull	%eax
542	movl	%eax,40(%esi)
543	movl	%edx,44(%esi)
544
545	movl	24(%edi),%eax
546	mull	%eax
547	movl	%eax,48(%esi)
548	movl	%edx,52(%esi)
549
550	movl	28(%edi),%eax
551	mull	%eax
552	movl	%eax,56(%esi)
553	movl	%edx,60(%esi)
554
555	addl	$32,%edi
556	addl	$64,%esi
557	subl	$8,%ebx
558	jnz	.L021sw_loop
559.L020sw_finish:
560	movl	28(%esp),%ebx
561	andl	$7,%ebx
562	jz	.L022sw_end
563
564	movl	(%edi),%eax
565	mull	%eax
566	movl	%eax,(%esi)
567	decl	%ebx
568	movl	%edx,4(%esi)
569	jz	.L022sw_end
570
571	movl	4(%edi),%eax
572	mull	%eax
573	movl	%eax,8(%esi)
574	decl	%ebx
575	movl	%edx,12(%esi)
576	jz	.L022sw_end
577
578	movl	8(%edi),%eax
579	mull	%eax
580	movl	%eax,16(%esi)
581	decl	%ebx
582	movl	%edx,20(%esi)
583	jz	.L022sw_end
584
585	movl	12(%edi),%eax
586	mull	%eax
587	movl	%eax,24(%esi)
588	decl	%ebx
589	movl	%edx,28(%esi)
590	jz	.L022sw_end
591
592	movl	16(%edi),%eax
593	mull	%eax
594	movl	%eax,32(%esi)
595	decl	%ebx
596	movl	%edx,36(%esi)
597	jz	.L022sw_end
598
599	movl	20(%edi),%eax
600	mull	%eax
601	movl	%eax,40(%esi)
602	decl	%ebx
603	movl	%edx,44(%esi)
604	jz	.L022sw_end
605
606	movl	24(%edi),%eax
607	mull	%eax
608	movl	%eax,48(%esi)
609	movl	%edx,52(%esi)
610.L022sw_end:
611	popl	%edi
612	popl	%esi
613	popl	%ebx
614	popl	%ebp
615	ret
616.size	bn_sqr_words,.-.L_bn_sqr_words_begin
617.globl	bn_div_words
618.hidden	bn_div_words
619.type	bn_div_words,@function
620.align	16
621bn_div_words:
622.L_bn_div_words_begin:
623	movl	4(%esp),%edx
624	movl	8(%esp),%eax
625	movl	12(%esp),%ecx
626	divl	%ecx
627	ret
628.size	bn_div_words,.-.L_bn_div_words_begin
629.globl	bn_add_words
630.hidden	bn_add_words
631.type	bn_add_words,@function
632.align	16
633bn_add_words:
634.L_bn_add_words_begin:
635	pushl	%ebp
636	pushl	%ebx
637	pushl	%esi
638	pushl	%edi
639
640	movl	20(%esp),%ebx
641	movl	24(%esp),%esi
642	movl	28(%esp),%edi
643	movl	32(%esp),%ebp
644	xorl	%eax,%eax
645	andl	$4294967288,%ebp
646	jz	.L023aw_finish
647.L024aw_loop:
648
649	movl	(%esi),%ecx
650	movl	(%edi),%edx
651	addl	%eax,%ecx
652	movl	$0,%eax
653	adcl	%eax,%eax
654	addl	%edx,%ecx
655	adcl	$0,%eax
656	movl	%ecx,(%ebx)
657
658	movl	4(%esi),%ecx
659	movl	4(%edi),%edx
660	addl	%eax,%ecx
661	movl	$0,%eax
662	adcl	%eax,%eax
663	addl	%edx,%ecx
664	adcl	$0,%eax
665	movl	%ecx,4(%ebx)
666
667	movl	8(%esi),%ecx
668	movl	8(%edi),%edx
669	addl	%eax,%ecx
670	movl	$0,%eax
671	adcl	%eax,%eax
672	addl	%edx,%ecx
673	adcl	$0,%eax
674	movl	%ecx,8(%ebx)
675
676	movl	12(%esi),%ecx
677	movl	12(%edi),%edx
678	addl	%eax,%ecx
679	movl	$0,%eax
680	adcl	%eax,%eax
681	addl	%edx,%ecx
682	adcl	$0,%eax
683	movl	%ecx,12(%ebx)
684
685	movl	16(%esi),%ecx
686	movl	16(%edi),%edx
687	addl	%eax,%ecx
688	movl	$0,%eax
689	adcl	%eax,%eax
690	addl	%edx,%ecx
691	adcl	$0,%eax
692	movl	%ecx,16(%ebx)
693
694	movl	20(%esi),%ecx
695	movl	20(%edi),%edx
696	addl	%eax,%ecx
697	movl	$0,%eax
698	adcl	%eax,%eax
699	addl	%edx,%ecx
700	adcl	$0,%eax
701	movl	%ecx,20(%ebx)
702
703	movl	24(%esi),%ecx
704	movl	24(%edi),%edx
705	addl	%eax,%ecx
706	movl	$0,%eax
707	adcl	%eax,%eax
708	addl	%edx,%ecx
709	adcl	$0,%eax
710	movl	%ecx,24(%ebx)
711
712	movl	28(%esi),%ecx
713	movl	28(%edi),%edx
714	addl	%eax,%ecx
715	movl	$0,%eax
716	adcl	%eax,%eax
717	addl	%edx,%ecx
718	adcl	$0,%eax
719	movl	%ecx,28(%ebx)
720
721	addl	$32,%esi
722	addl	$32,%edi
723	addl	$32,%ebx
724	subl	$8,%ebp
725	jnz	.L024aw_loop
726.L023aw_finish:
727	movl	32(%esp),%ebp
728	andl	$7,%ebp
729	jz	.L025aw_end
730
731	movl	(%esi),%ecx
732	movl	(%edi),%edx
733	addl	%eax,%ecx
734	movl	$0,%eax
735	adcl	%eax,%eax
736	addl	%edx,%ecx
737	adcl	$0,%eax
738	decl	%ebp
739	movl	%ecx,(%ebx)
740	jz	.L025aw_end
741
742	movl	4(%esi),%ecx
743	movl	4(%edi),%edx
744	addl	%eax,%ecx
745	movl	$0,%eax
746	adcl	%eax,%eax
747	addl	%edx,%ecx
748	adcl	$0,%eax
749	decl	%ebp
750	movl	%ecx,4(%ebx)
751	jz	.L025aw_end
752
753	movl	8(%esi),%ecx
754	movl	8(%edi),%edx
755	addl	%eax,%ecx
756	movl	$0,%eax
757	adcl	%eax,%eax
758	addl	%edx,%ecx
759	adcl	$0,%eax
760	decl	%ebp
761	movl	%ecx,8(%ebx)
762	jz	.L025aw_end
763
764	movl	12(%esi),%ecx
765	movl	12(%edi),%edx
766	addl	%eax,%ecx
767	movl	$0,%eax
768	adcl	%eax,%eax
769	addl	%edx,%ecx
770	adcl	$0,%eax
771	decl	%ebp
772	movl	%ecx,12(%ebx)
773	jz	.L025aw_end
774
775	movl	16(%esi),%ecx
776	movl	16(%edi),%edx
777	addl	%eax,%ecx
778	movl	$0,%eax
779	adcl	%eax,%eax
780	addl	%edx,%ecx
781	adcl	$0,%eax
782	decl	%ebp
783	movl	%ecx,16(%ebx)
784	jz	.L025aw_end
785
786	movl	20(%esi),%ecx
787	movl	20(%edi),%edx
788	addl	%eax,%ecx
789	movl	$0,%eax
790	adcl	%eax,%eax
791	addl	%edx,%ecx
792	adcl	$0,%eax
793	decl	%ebp
794	movl	%ecx,20(%ebx)
795	jz	.L025aw_end
796
797	movl	24(%esi),%ecx
798	movl	24(%edi),%edx
799	addl	%eax,%ecx
800	movl	$0,%eax
801	adcl	%eax,%eax
802	addl	%edx,%ecx
803	adcl	$0,%eax
804	movl	%ecx,24(%ebx)
805.L025aw_end:
806	popl	%edi
807	popl	%esi
808	popl	%ebx
809	popl	%ebp
810	ret
811.size	bn_add_words,.-.L_bn_add_words_begin
812.globl	bn_sub_words
813.hidden	bn_sub_words
814.type	bn_sub_words,@function
815.align	16
816bn_sub_words:
817.L_bn_sub_words_begin:
818	pushl	%ebp
819	pushl	%ebx
820	pushl	%esi
821	pushl	%edi
822
823	movl	20(%esp),%ebx
824	movl	24(%esp),%esi
825	movl	28(%esp),%edi
826	movl	32(%esp),%ebp
827	xorl	%eax,%eax
828	andl	$4294967288,%ebp
829	jz	.L026aw_finish
830.L027aw_loop:
831
832	movl	(%esi),%ecx
833	movl	(%edi),%edx
834	subl	%eax,%ecx
835	movl	$0,%eax
836	adcl	%eax,%eax
837	subl	%edx,%ecx
838	adcl	$0,%eax
839	movl	%ecx,(%ebx)
840
841	movl	4(%esi),%ecx
842	movl	4(%edi),%edx
843	subl	%eax,%ecx
844	movl	$0,%eax
845	adcl	%eax,%eax
846	subl	%edx,%ecx
847	adcl	$0,%eax
848	movl	%ecx,4(%ebx)
849
850	movl	8(%esi),%ecx
851	movl	8(%edi),%edx
852	subl	%eax,%ecx
853	movl	$0,%eax
854	adcl	%eax,%eax
855	subl	%edx,%ecx
856	adcl	$0,%eax
857	movl	%ecx,8(%ebx)
858
859	movl	12(%esi),%ecx
860	movl	12(%edi),%edx
861	subl	%eax,%ecx
862	movl	$0,%eax
863	adcl	%eax,%eax
864	subl	%edx,%ecx
865	adcl	$0,%eax
866	movl	%ecx,12(%ebx)
867
868	movl	16(%esi),%ecx
869	movl	16(%edi),%edx
870	subl	%eax,%ecx
871	movl	$0,%eax
872	adcl	%eax,%eax
873	subl	%edx,%ecx
874	adcl	$0,%eax
875	movl	%ecx,16(%ebx)
876
877	movl	20(%esi),%ecx
878	movl	20(%edi),%edx
879	subl	%eax,%ecx
880	movl	$0,%eax
881	adcl	%eax,%eax
882	subl	%edx,%ecx
883	adcl	$0,%eax
884	movl	%ecx,20(%ebx)
885
886	movl	24(%esi),%ecx
887	movl	24(%edi),%edx
888	subl	%eax,%ecx
889	movl	$0,%eax
890	adcl	%eax,%eax
891	subl	%edx,%ecx
892	adcl	$0,%eax
893	movl	%ecx,24(%ebx)
894
895	movl	28(%esi),%ecx
896	movl	28(%edi),%edx
897	subl	%eax,%ecx
898	movl	$0,%eax
899	adcl	%eax,%eax
900	subl	%edx,%ecx
901	adcl	$0,%eax
902	movl	%ecx,28(%ebx)
903
904	addl	$32,%esi
905	addl	$32,%edi
906	addl	$32,%ebx
907	subl	$8,%ebp
908	jnz	.L027aw_loop
909.L026aw_finish:
910	movl	32(%esp),%ebp
911	andl	$7,%ebp
912	jz	.L028aw_end
913
914	movl	(%esi),%ecx
915	movl	(%edi),%edx
916	subl	%eax,%ecx
917	movl	$0,%eax
918	adcl	%eax,%eax
919	subl	%edx,%ecx
920	adcl	$0,%eax
921	decl	%ebp
922	movl	%ecx,(%ebx)
923	jz	.L028aw_end
924
925	movl	4(%esi),%ecx
926	movl	4(%edi),%edx
927	subl	%eax,%ecx
928	movl	$0,%eax
929	adcl	%eax,%eax
930	subl	%edx,%ecx
931	adcl	$0,%eax
932	decl	%ebp
933	movl	%ecx,4(%ebx)
934	jz	.L028aw_end
935
936	movl	8(%esi),%ecx
937	movl	8(%edi),%edx
938	subl	%eax,%ecx
939	movl	$0,%eax
940	adcl	%eax,%eax
941	subl	%edx,%ecx
942	adcl	$0,%eax
943	decl	%ebp
944	movl	%ecx,8(%ebx)
945	jz	.L028aw_end
946
947	movl	12(%esi),%ecx
948	movl	12(%edi),%edx
949	subl	%eax,%ecx
950	movl	$0,%eax
951	adcl	%eax,%eax
952	subl	%edx,%ecx
953	adcl	$0,%eax
954	decl	%ebp
955	movl	%ecx,12(%ebx)
956	jz	.L028aw_end
957
958	movl	16(%esi),%ecx
959	movl	16(%edi),%edx
960	subl	%eax,%ecx
961	movl	$0,%eax
962	adcl	%eax,%eax
963	subl	%edx,%ecx
964	adcl	$0,%eax
965	decl	%ebp
966	movl	%ecx,16(%ebx)
967	jz	.L028aw_end
968
969	movl	20(%esi),%ecx
970	movl	20(%edi),%edx
971	subl	%eax,%ecx
972	movl	$0,%eax
973	adcl	%eax,%eax
974	subl	%edx,%ecx
975	adcl	$0,%eax
976	decl	%ebp
977	movl	%ecx,20(%ebx)
978	jz	.L028aw_end
979
980	movl	24(%esi),%ecx
981	movl	24(%edi),%edx
982	subl	%eax,%ecx
983	movl	$0,%eax
984	adcl	%eax,%eax
985	subl	%edx,%ecx
986	adcl	$0,%eax
987	movl	%ecx,24(%ebx)
988.L028aw_end:
989	popl	%edi
990	popl	%esi
991	popl	%ebx
992	popl	%ebp
993	ret
994.size	bn_sub_words,.-.L_bn_sub_words_begin
995#endif  // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__)
996