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