bn-586.S revision 127326
1	# $FreeBSD: head/secure/lib/libcrypto/i386/bn-586.s 127326 2004-03-23 08:32:29Z markm $
2
3
4
5
6
7
8	.file	"/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/bn/asm/bn-586.s"
9	.version	"01.01"
10gcc2_compiled.:
11.text
12	.align 16
13.globl bn_mul_add_words
14	.type	bn_mul_add_words,@function
15bn_mul_add_words:
16	pushl	%ebp
17	pushl	%ebx
18	pushl	%esi
19	pushl	%edi
20
21
22	xorl	%esi,		%esi
23	movl	20(%esp),	%edi
24	movl	28(%esp),	%ecx
25	movl	24(%esp),	%ebx
26	andl	$4294967288,	%ecx
27	movl	32(%esp),	%ebp
28	pushl	%ecx
29	jz	.L000maw_finish
30.L001maw_loop:
31	movl	%ecx,		(%esp)
32
33	movl	(%ebx),		%eax
34	mull	%ebp
35	addl	%esi,		%eax
36	movl	(%edi),		%esi
37	adcl	$0,		%edx
38	addl	%esi,		%eax
39	adcl	$0,		%edx
40	movl	%eax,		(%edi)
41	movl	%edx,		%esi
42
43	movl	4(%ebx),	%eax
44	mull	%ebp
45	addl	%esi,		%eax
46	movl	4(%edi),	%esi
47	adcl	$0,		%edx
48	addl	%esi,		%eax
49	adcl	$0,		%edx
50	movl	%eax,		4(%edi)
51	movl	%edx,		%esi
52
53	movl	8(%ebx),	%eax
54	mull	%ebp
55	addl	%esi,		%eax
56	movl	8(%edi),	%esi
57	adcl	$0,		%edx
58	addl	%esi,		%eax
59	adcl	$0,		%edx
60	movl	%eax,		8(%edi)
61	movl	%edx,		%esi
62
63	movl	12(%ebx),	%eax
64	mull	%ebp
65	addl	%esi,		%eax
66	movl	12(%edi),	%esi
67	adcl	$0,		%edx
68	addl	%esi,		%eax
69	adcl	$0,		%edx
70	movl	%eax,		12(%edi)
71	movl	%edx,		%esi
72
73	movl	16(%ebx),	%eax
74	mull	%ebp
75	addl	%esi,		%eax
76	movl	16(%edi),	%esi
77	adcl	$0,		%edx
78	addl	%esi,		%eax
79	adcl	$0,		%edx
80	movl	%eax,		16(%edi)
81	movl	%edx,		%esi
82
83	movl	20(%ebx),	%eax
84	mull	%ebp
85	addl	%esi,		%eax
86	movl	20(%edi),	%esi
87	adcl	$0,		%edx
88	addl	%esi,		%eax
89	adcl	$0,		%edx
90	movl	%eax,		20(%edi)
91	movl	%edx,		%esi
92
93	movl	24(%ebx),	%eax
94	mull	%ebp
95	addl	%esi,		%eax
96	movl	24(%edi),	%esi
97	adcl	$0,		%edx
98	addl	%esi,		%eax
99	adcl	$0,		%edx
100	movl	%eax,		24(%edi)
101	movl	%edx,		%esi
102
103	movl	28(%ebx),	%eax
104	mull	%ebp
105	addl	%esi,		%eax
106	movl	28(%edi),	%esi
107	adcl	$0,		%edx
108	addl	%esi,		%eax
109	adcl	$0,		%edx
110	movl	%eax,		28(%edi)
111	movl	%edx,		%esi
112
113	movl	(%esp),		%ecx
114	addl	$32,		%ebx
115	addl	$32,		%edi
116	subl	$8,		%ecx
117	jnz	.L001maw_loop
118.L000maw_finish:
119	movl	32(%esp),	%ecx
120	andl	$7,		%ecx
121	jnz	.L002maw_finish2
122	jmp	.L003maw_end
123.align 16
124.L002maw_finish2:
125
126	movl	(%ebx),		%eax
127	mull	%ebp
128	addl	%esi,		%eax
129	movl	(%edi),		%esi
130	adcl	$0,		%edx
131	addl	%esi,		%eax
132	adcl	$0,		%edx
133	decl	%ecx
134	movl	%eax,		(%edi)
135	movl	%edx,		%esi
136	jz	.L003maw_end
137
138	movl	4(%ebx),	%eax
139	mull	%ebp
140	addl	%esi,		%eax
141	movl	4(%edi),	%esi
142	adcl	$0,		%edx
143	addl	%esi,		%eax
144	adcl	$0,		%edx
145	decl	%ecx
146	movl	%eax,		4(%edi)
147	movl	%edx,		%esi
148	jz	.L003maw_end
149
150	movl	8(%ebx),	%eax
151	mull	%ebp
152	addl	%esi,		%eax
153	movl	8(%edi),	%esi
154	adcl	$0,		%edx
155	addl	%esi,		%eax
156	adcl	$0,		%edx
157	decl	%ecx
158	movl	%eax,		8(%edi)
159	movl	%edx,		%esi
160	jz	.L003maw_end
161
162	movl	12(%ebx),	%eax
163	mull	%ebp
164	addl	%esi,		%eax
165	movl	12(%edi),	%esi
166	adcl	$0,		%edx
167	addl	%esi,		%eax
168	adcl	$0,		%edx
169	decl	%ecx
170	movl	%eax,		12(%edi)
171	movl	%edx,		%esi
172	jz	.L003maw_end
173
174	movl	16(%ebx),	%eax
175	mull	%ebp
176	addl	%esi,		%eax
177	movl	16(%edi),	%esi
178	adcl	$0,		%edx
179	addl	%esi,		%eax
180	adcl	$0,		%edx
181	decl	%ecx
182	movl	%eax,		16(%edi)
183	movl	%edx,		%esi
184	jz	.L003maw_end
185
186	movl	20(%ebx),	%eax
187	mull	%ebp
188	addl	%esi,		%eax
189	movl	20(%edi),	%esi
190	adcl	$0,		%edx
191	addl	%esi,		%eax
192	adcl	$0,		%edx
193	decl	%ecx
194	movl	%eax,		20(%edi)
195	movl	%edx,		%esi
196	jz	.L003maw_end
197
198	movl	24(%ebx),	%eax
199	mull	%ebp
200	addl	%esi,		%eax
201	movl	24(%edi),	%esi
202	adcl	$0,		%edx
203	addl	%esi,		%eax
204	adcl	$0,		%edx
205	movl	%eax,		24(%edi)
206	movl	%edx,		%esi
207.L003maw_end:
208	movl	%esi,		%eax
209	popl	%ecx
210	popl	%edi
211	popl	%esi
212	popl	%ebx
213	popl	%ebp
214	ret
215.L_bn_mul_add_words_end:
216	.size	bn_mul_add_words,.L_bn_mul_add_words_end-bn_mul_add_words
217.ident	"bn_mul_add_words"
218.text
219	.align 16
220.globl bn_mul_words
221	.type	bn_mul_words,@function
222bn_mul_words:
223	pushl	%ebp
224	pushl	%ebx
225	pushl	%esi
226	pushl	%edi
227
228
229	xorl	%esi,		%esi
230	movl	20(%esp),	%edi
231	movl	24(%esp),	%ebx
232	movl	28(%esp),	%ebp
233	movl	32(%esp),	%ecx
234	andl	$4294967288,	%ebp
235	jz	.L004mw_finish
236.L005mw_loop:
237
238	movl	(%ebx),		%eax
239	mull	%ecx
240	addl	%esi,		%eax
241	adcl	$0,		%edx
242	movl	%eax,		(%edi)
243	movl	%edx,		%esi
244
245	movl	4(%ebx),	%eax
246	mull	%ecx
247	addl	%esi,		%eax
248	adcl	$0,		%edx
249	movl	%eax,		4(%edi)
250	movl	%edx,		%esi
251
252	movl	8(%ebx),	%eax
253	mull	%ecx
254	addl	%esi,		%eax
255	adcl	$0,		%edx
256	movl	%eax,		8(%edi)
257	movl	%edx,		%esi
258
259	movl	12(%ebx),	%eax
260	mull	%ecx
261	addl	%esi,		%eax
262	adcl	$0,		%edx
263	movl	%eax,		12(%edi)
264	movl	%edx,		%esi
265
266	movl	16(%ebx),	%eax
267	mull	%ecx
268	addl	%esi,		%eax
269	adcl	$0,		%edx
270	movl	%eax,		16(%edi)
271	movl	%edx,		%esi
272
273	movl	20(%ebx),	%eax
274	mull	%ecx
275	addl	%esi,		%eax
276	adcl	$0,		%edx
277	movl	%eax,		20(%edi)
278	movl	%edx,		%esi
279
280	movl	24(%ebx),	%eax
281	mull	%ecx
282	addl	%esi,		%eax
283	adcl	$0,		%edx
284	movl	%eax,		24(%edi)
285	movl	%edx,		%esi
286
287	movl	28(%ebx),	%eax
288	mull	%ecx
289	addl	%esi,		%eax
290	adcl	$0,		%edx
291	movl	%eax,		28(%edi)
292	movl	%edx,		%esi
293
294	addl	$32,		%ebx
295	addl	$32,		%edi
296	subl	$8,		%ebp
297	jz	.L004mw_finish
298	jmp	.L005mw_loop
299.L004mw_finish:
300	movl	28(%esp),	%ebp
301	andl	$7,		%ebp
302	jnz	.L006mw_finish2
303	jmp	.L007mw_end
304.align 16
305.L006mw_finish2:
306
307	movl	(%ebx),		%eax
308	mull	%ecx
309	addl	%esi,		%eax
310	adcl	$0,		%edx
311	movl	%eax,		(%edi)
312	movl	%edx,		%esi
313	decl	%ebp
314	jz	.L007mw_end
315
316	movl	4(%ebx),	%eax
317	mull	%ecx
318	addl	%esi,		%eax
319	adcl	$0,		%edx
320	movl	%eax,		4(%edi)
321	movl	%edx,		%esi
322	decl	%ebp
323	jz	.L007mw_end
324
325	movl	8(%ebx),	%eax
326	mull	%ecx
327	addl	%esi,		%eax
328	adcl	$0,		%edx
329	movl	%eax,		8(%edi)
330	movl	%edx,		%esi
331	decl	%ebp
332	jz	.L007mw_end
333
334	movl	12(%ebx),	%eax
335	mull	%ecx
336	addl	%esi,		%eax
337	adcl	$0,		%edx
338	movl	%eax,		12(%edi)
339	movl	%edx,		%esi
340	decl	%ebp
341	jz	.L007mw_end
342
343	movl	16(%ebx),	%eax
344	mull	%ecx
345	addl	%esi,		%eax
346	adcl	$0,		%edx
347	movl	%eax,		16(%edi)
348	movl	%edx,		%esi
349	decl	%ebp
350	jz	.L007mw_end
351
352	movl	20(%ebx),	%eax
353	mull	%ecx
354	addl	%esi,		%eax
355	adcl	$0,		%edx
356	movl	%eax,		20(%edi)
357	movl	%edx,		%esi
358	decl	%ebp
359	jz	.L007mw_end
360
361	movl	24(%ebx),	%eax
362	mull	%ecx
363	addl	%esi,		%eax
364	adcl	$0,		%edx
365	movl	%eax,		24(%edi)
366	movl	%edx,		%esi
367.L007mw_end:
368	movl	%esi,		%eax
369	popl	%edi
370	popl	%esi
371	popl	%ebx
372	popl	%ebp
373	ret
374.L_bn_mul_words_end:
375	.size	bn_mul_words,.L_bn_mul_words_end-bn_mul_words
376.ident	"bn_mul_words"
377.text
378	.align 16
379.globl bn_sqr_words
380	.type	bn_sqr_words,@function
381bn_sqr_words:
382	pushl	%ebp
383	pushl	%ebx
384	pushl	%esi
385	pushl	%edi
386
387
388	movl	20(%esp),	%esi
389	movl	24(%esp),	%edi
390	movl	28(%esp),	%ebx
391	andl	$4294967288,	%ebx
392	jz	.L008sw_finish
393.L009sw_loop:
394
395	movl	(%edi),		%eax
396	mull	%eax
397	movl	%eax,		(%esi)
398	movl	%edx,		4(%esi)
399
400	movl	4(%edi),	%eax
401	mull	%eax
402	movl	%eax,		8(%esi)
403	movl	%edx,		12(%esi)
404
405	movl	8(%edi),	%eax
406	mull	%eax
407	movl	%eax,		16(%esi)
408	movl	%edx,		20(%esi)
409
410	movl	12(%edi),	%eax
411	mull	%eax
412	movl	%eax,		24(%esi)
413	movl	%edx,		28(%esi)
414
415	movl	16(%edi),	%eax
416	mull	%eax
417	movl	%eax,		32(%esi)
418	movl	%edx,		36(%esi)
419
420	movl	20(%edi),	%eax
421	mull	%eax
422	movl	%eax,		40(%esi)
423	movl	%edx,		44(%esi)
424
425	movl	24(%edi),	%eax
426	mull	%eax
427	movl	%eax,		48(%esi)
428	movl	%edx,		52(%esi)
429
430	movl	28(%edi),	%eax
431	mull	%eax
432	movl	%eax,		56(%esi)
433	movl	%edx,		60(%esi)
434
435	addl	$32,		%edi
436	addl	$64,		%esi
437	subl	$8,		%ebx
438	jnz	.L009sw_loop
439.L008sw_finish:
440	movl	28(%esp),	%ebx
441	andl	$7,		%ebx
442	jz	.L010sw_end
443
444	movl	(%edi),		%eax
445	mull	%eax
446	movl	%eax,		(%esi)
447	decl	%ebx
448	movl	%edx,		4(%esi)
449	jz	.L010sw_end
450
451	movl	4(%edi),	%eax
452	mull	%eax
453	movl	%eax,		8(%esi)
454	decl	%ebx
455	movl	%edx,		12(%esi)
456	jz	.L010sw_end
457
458	movl	8(%edi),	%eax
459	mull	%eax
460	movl	%eax,		16(%esi)
461	decl	%ebx
462	movl	%edx,		20(%esi)
463	jz	.L010sw_end
464
465	movl	12(%edi),	%eax
466	mull	%eax
467	movl	%eax,		24(%esi)
468	decl	%ebx
469	movl	%edx,		28(%esi)
470	jz	.L010sw_end
471
472	movl	16(%edi),	%eax
473	mull	%eax
474	movl	%eax,		32(%esi)
475	decl	%ebx
476	movl	%edx,		36(%esi)
477	jz	.L010sw_end
478
479	movl	20(%edi),	%eax
480	mull	%eax
481	movl	%eax,		40(%esi)
482	decl	%ebx
483	movl	%edx,		44(%esi)
484	jz	.L010sw_end
485
486	movl	24(%edi),	%eax
487	mull	%eax
488	movl	%eax,		48(%esi)
489	movl	%edx,		52(%esi)
490.L010sw_end:
491	popl	%edi
492	popl	%esi
493	popl	%ebx
494	popl	%ebp
495	ret
496.L_bn_sqr_words_end:
497	.size	bn_sqr_words,.L_bn_sqr_words_end-bn_sqr_words
498.ident	"bn_sqr_words"
499.text
500	.align 16
501.globl bn_div_words
502	.type	bn_div_words,@function
503bn_div_words:
504	pushl	%ebp
505	pushl	%ebx
506	pushl	%esi
507	pushl	%edi
508
509	movl	20(%esp),	%edx
510	movl	24(%esp),	%eax
511	movl	28(%esp),	%ebx
512	divl	%ebx
513	popl	%edi
514	popl	%esi
515	popl	%ebx
516	popl	%ebp
517	ret
518.L_bn_div_words_end:
519	.size	bn_div_words,.L_bn_div_words_end-bn_div_words
520.ident	"bn_div_words"
521.text
522	.align 16
523.globl bn_add_words
524	.type	bn_add_words,@function
525bn_add_words:
526	pushl	%ebp
527	pushl	%ebx
528	pushl	%esi
529	pushl	%edi
530
531
532	movl	20(%esp),	%ebx
533	movl	24(%esp),	%esi
534	movl	28(%esp),	%edi
535	movl	32(%esp),	%ebp
536	xorl	%eax,		%eax
537	andl	$4294967288,	%ebp
538	jz	.L011aw_finish
539.L012aw_loop:
540
541	movl	(%esi),		%ecx
542	movl	(%edi),		%edx
543	addl	%eax,		%ecx
544	movl	$0,		%eax
545	adcl	%eax,		%eax
546	addl	%edx,		%ecx
547	adcl	$0,		%eax
548	movl	%ecx,		(%ebx)
549
550	movl	4(%esi),	%ecx
551	movl	4(%edi),	%edx
552	addl	%eax,		%ecx
553	movl	$0,		%eax
554	adcl	%eax,		%eax
555	addl	%edx,		%ecx
556	adcl	$0,		%eax
557	movl	%ecx,		4(%ebx)
558
559	movl	8(%esi),	%ecx
560	movl	8(%edi),	%edx
561	addl	%eax,		%ecx
562	movl	$0,		%eax
563	adcl	%eax,		%eax
564	addl	%edx,		%ecx
565	adcl	$0,		%eax
566	movl	%ecx,		8(%ebx)
567
568	movl	12(%esi),	%ecx
569	movl	12(%edi),	%edx
570	addl	%eax,		%ecx
571	movl	$0,		%eax
572	adcl	%eax,		%eax
573	addl	%edx,		%ecx
574	adcl	$0,		%eax
575	movl	%ecx,		12(%ebx)
576
577	movl	16(%esi),	%ecx
578	movl	16(%edi),	%edx
579	addl	%eax,		%ecx
580	movl	$0,		%eax
581	adcl	%eax,		%eax
582	addl	%edx,		%ecx
583	adcl	$0,		%eax
584	movl	%ecx,		16(%ebx)
585
586	movl	20(%esi),	%ecx
587	movl	20(%edi),	%edx
588	addl	%eax,		%ecx
589	movl	$0,		%eax
590	adcl	%eax,		%eax
591	addl	%edx,		%ecx
592	adcl	$0,		%eax
593	movl	%ecx,		20(%ebx)
594
595	movl	24(%esi),	%ecx
596	movl	24(%edi),	%edx
597	addl	%eax,		%ecx
598	movl	$0,		%eax
599	adcl	%eax,		%eax
600	addl	%edx,		%ecx
601	adcl	$0,		%eax
602	movl	%ecx,		24(%ebx)
603
604	movl	28(%esi),	%ecx
605	movl	28(%edi),	%edx
606	addl	%eax,		%ecx
607	movl	$0,		%eax
608	adcl	%eax,		%eax
609	addl	%edx,		%ecx
610	adcl	$0,		%eax
611	movl	%ecx,		28(%ebx)
612
613	addl	$32,		%esi
614	addl	$32,		%edi
615	addl	$32,		%ebx
616	subl	$8,		%ebp
617	jnz	.L012aw_loop
618.L011aw_finish:
619	movl	32(%esp),	%ebp
620	andl	$7,		%ebp
621	jz	.L013aw_end
622
623	movl	(%esi),		%ecx
624	movl	(%edi),		%edx
625	addl	%eax,		%ecx
626	movl	$0,		%eax
627	adcl	%eax,		%eax
628	addl	%edx,		%ecx
629	adcl	$0,		%eax
630	decl	%ebp
631	movl	%ecx,		(%ebx)
632	jz	.L013aw_end
633
634	movl	4(%esi),	%ecx
635	movl	4(%edi),	%edx
636	addl	%eax,		%ecx
637	movl	$0,		%eax
638	adcl	%eax,		%eax
639	addl	%edx,		%ecx
640	adcl	$0,		%eax
641	decl	%ebp
642	movl	%ecx,		4(%ebx)
643	jz	.L013aw_end
644
645	movl	8(%esi),	%ecx
646	movl	8(%edi),	%edx
647	addl	%eax,		%ecx
648	movl	$0,		%eax
649	adcl	%eax,		%eax
650	addl	%edx,		%ecx
651	adcl	$0,		%eax
652	decl	%ebp
653	movl	%ecx,		8(%ebx)
654	jz	.L013aw_end
655
656	movl	12(%esi),	%ecx
657	movl	12(%edi),	%edx
658	addl	%eax,		%ecx
659	movl	$0,		%eax
660	adcl	%eax,		%eax
661	addl	%edx,		%ecx
662	adcl	$0,		%eax
663	decl	%ebp
664	movl	%ecx,		12(%ebx)
665	jz	.L013aw_end
666
667	movl	16(%esi),	%ecx
668	movl	16(%edi),	%edx
669	addl	%eax,		%ecx
670	movl	$0,		%eax
671	adcl	%eax,		%eax
672	addl	%edx,		%ecx
673	adcl	$0,		%eax
674	decl	%ebp
675	movl	%ecx,		16(%ebx)
676	jz	.L013aw_end
677
678	movl	20(%esi),	%ecx
679	movl	20(%edi),	%edx
680	addl	%eax,		%ecx
681	movl	$0,		%eax
682	adcl	%eax,		%eax
683	addl	%edx,		%ecx
684	adcl	$0,		%eax
685	decl	%ebp
686	movl	%ecx,		20(%ebx)
687	jz	.L013aw_end
688
689	movl	24(%esi),	%ecx
690	movl	24(%edi),	%edx
691	addl	%eax,		%ecx
692	movl	$0,		%eax
693	adcl	%eax,		%eax
694	addl	%edx,		%ecx
695	adcl	$0,		%eax
696	movl	%ecx,		24(%ebx)
697.L013aw_end:
698	popl	%edi
699	popl	%esi
700	popl	%ebx
701	popl	%ebp
702	ret
703.L_bn_add_words_end:
704	.size	bn_add_words,.L_bn_add_words_end-bn_add_words
705.ident	"bn_add_words"
706.text
707	.align 16
708.globl bn_sub_words
709	.type	bn_sub_words,@function
710bn_sub_words:
711	pushl	%ebp
712	pushl	%ebx
713	pushl	%esi
714	pushl	%edi
715
716
717	movl	20(%esp),	%ebx
718	movl	24(%esp),	%esi
719	movl	28(%esp),	%edi
720	movl	32(%esp),	%ebp
721	xorl	%eax,		%eax
722	andl	$4294967288,	%ebp
723	jz	.L014aw_finish
724.L015aw_loop:
725
726	movl	(%esi),		%ecx
727	movl	(%edi),		%edx
728	subl	%eax,		%ecx
729	movl	$0,		%eax
730	adcl	%eax,		%eax
731	subl	%edx,		%ecx
732	adcl	$0,		%eax
733	movl	%ecx,		(%ebx)
734
735	movl	4(%esi),	%ecx
736	movl	4(%edi),	%edx
737	subl	%eax,		%ecx
738	movl	$0,		%eax
739	adcl	%eax,		%eax
740	subl	%edx,		%ecx
741	adcl	$0,		%eax
742	movl	%ecx,		4(%ebx)
743
744	movl	8(%esi),	%ecx
745	movl	8(%edi),	%edx
746	subl	%eax,		%ecx
747	movl	$0,		%eax
748	adcl	%eax,		%eax
749	subl	%edx,		%ecx
750	adcl	$0,		%eax
751	movl	%ecx,		8(%ebx)
752
753	movl	12(%esi),	%ecx
754	movl	12(%edi),	%edx
755	subl	%eax,		%ecx
756	movl	$0,		%eax
757	adcl	%eax,		%eax
758	subl	%edx,		%ecx
759	adcl	$0,		%eax
760	movl	%ecx,		12(%ebx)
761
762	movl	16(%esi),	%ecx
763	movl	16(%edi),	%edx
764	subl	%eax,		%ecx
765	movl	$0,		%eax
766	adcl	%eax,		%eax
767	subl	%edx,		%ecx
768	adcl	$0,		%eax
769	movl	%ecx,		16(%ebx)
770
771	movl	20(%esi),	%ecx
772	movl	20(%edi),	%edx
773	subl	%eax,		%ecx
774	movl	$0,		%eax
775	adcl	%eax,		%eax
776	subl	%edx,		%ecx
777	adcl	$0,		%eax
778	movl	%ecx,		20(%ebx)
779
780	movl	24(%esi),	%ecx
781	movl	24(%edi),	%edx
782	subl	%eax,		%ecx
783	movl	$0,		%eax
784	adcl	%eax,		%eax
785	subl	%edx,		%ecx
786	adcl	$0,		%eax
787	movl	%ecx,		24(%ebx)
788
789	movl	28(%esi),	%ecx
790	movl	28(%edi),	%edx
791	subl	%eax,		%ecx
792	movl	$0,		%eax
793	adcl	%eax,		%eax
794	subl	%edx,		%ecx
795	adcl	$0,		%eax
796	movl	%ecx,		28(%ebx)
797
798	addl	$32,		%esi
799	addl	$32,		%edi
800	addl	$32,		%ebx
801	subl	$8,		%ebp
802	jnz	.L015aw_loop
803.L014aw_finish:
804	movl	32(%esp),	%ebp
805	andl	$7,		%ebp
806	jz	.L016aw_end
807
808	movl	(%esi),		%ecx
809	movl	(%edi),		%edx
810	subl	%eax,		%ecx
811	movl	$0,		%eax
812	adcl	%eax,		%eax
813	subl	%edx,		%ecx
814	adcl	$0,		%eax
815	decl	%ebp
816	movl	%ecx,		(%ebx)
817	jz	.L016aw_end
818
819	movl	4(%esi),	%ecx
820	movl	4(%edi),	%edx
821	subl	%eax,		%ecx
822	movl	$0,		%eax
823	adcl	%eax,		%eax
824	subl	%edx,		%ecx
825	adcl	$0,		%eax
826	decl	%ebp
827	movl	%ecx,		4(%ebx)
828	jz	.L016aw_end
829
830	movl	8(%esi),	%ecx
831	movl	8(%edi),	%edx
832	subl	%eax,		%ecx
833	movl	$0,		%eax
834	adcl	%eax,		%eax
835	subl	%edx,		%ecx
836	adcl	$0,		%eax
837	decl	%ebp
838	movl	%ecx,		8(%ebx)
839	jz	.L016aw_end
840
841	movl	12(%esi),	%ecx
842	movl	12(%edi),	%edx
843	subl	%eax,		%ecx
844	movl	$0,		%eax
845	adcl	%eax,		%eax
846	subl	%edx,		%ecx
847	adcl	$0,		%eax
848	decl	%ebp
849	movl	%ecx,		12(%ebx)
850	jz	.L016aw_end
851
852	movl	16(%esi),	%ecx
853	movl	16(%edi),	%edx
854	subl	%eax,		%ecx
855	movl	$0,		%eax
856	adcl	%eax,		%eax
857	subl	%edx,		%ecx
858	adcl	$0,		%eax
859	decl	%ebp
860	movl	%ecx,		16(%ebx)
861	jz	.L016aw_end
862
863	movl	20(%esi),	%ecx
864	movl	20(%edi),	%edx
865	subl	%eax,		%ecx
866	movl	$0,		%eax
867	adcl	%eax,		%eax
868	subl	%edx,		%ecx
869	adcl	$0,		%eax
870	decl	%ebp
871	movl	%ecx,		20(%ebx)
872	jz	.L016aw_end
873
874	movl	24(%esi),	%ecx
875	movl	24(%edi),	%edx
876	subl	%eax,		%ecx
877	movl	$0,		%eax
878	adcl	%eax,		%eax
879	subl	%edx,		%ecx
880	adcl	$0,		%eax
881	movl	%ecx,		24(%ebx)
882.L016aw_end:
883	popl	%edi
884	popl	%esi
885	popl	%ebx
886	popl	%ebp
887	ret
888.L_bn_sub_words_end:
889	.size	bn_sub_words,.L_bn_sub_words_end-bn_sub_words
890.ident	"bn_sub_words"
891