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