bf-686.S revision 305153
1/* $FreeBSD: stable/11/secure/lib/libcrypto/i386/bf-686.S 305153 2016-08-31 20:33:59Z jkim $ */
2/* Do not modify. This file is auto-generated from bf-686.pl. */
3#ifdef PIC
4.file	"bf-686.S"
5.text
6.globl	BF_encrypt
7.type	BF_encrypt,@function
8.align	16
9BF_encrypt:
10.L_BF_encrypt_begin:
11	pushl	%ebp
12	pushl	%ebx
13	pushl	%esi
14	pushl	%edi
15
16
17	movl	20(%esp),%eax
18	movl	(%eax),%ecx
19	movl	4(%eax),%edx
20
21
22	movl	24(%esp),%edi
23	xorl	%eax,%eax
24	xorl	%ebx,%ebx
25	xorl	(%edi),%ecx
26
27
28	rorl	$16,%ecx
29	movl	4(%edi),%esi
30	movb	%ch,%al
31	movb	%cl,%bl
32	rorl	$16,%ecx
33	xorl	%esi,%edx
34	movl	72(%edi,%eax,4),%esi
35	movl	1096(%edi,%ebx,4),%ebp
36	movb	%ch,%al
37	movb	%cl,%bl
38	addl	%ebp,%esi
39	movl	2120(%edi,%eax,4),%eax
40	xorl	%eax,%esi
41	movl	3144(%edi,%ebx,4),%ebp
42	addl	%ebp,%esi
43	xorl	%eax,%eax
44	xorl	%esi,%edx
45
46
47	rorl	$16,%edx
48	movl	8(%edi),%esi
49	movb	%dh,%al
50	movb	%dl,%bl
51	rorl	$16,%edx
52	xorl	%esi,%ecx
53	movl	72(%edi,%eax,4),%esi
54	movl	1096(%edi,%ebx,4),%ebp
55	movb	%dh,%al
56	movb	%dl,%bl
57	addl	%ebp,%esi
58	movl	2120(%edi,%eax,4),%eax
59	xorl	%eax,%esi
60	movl	3144(%edi,%ebx,4),%ebp
61	addl	%ebp,%esi
62	xorl	%eax,%eax
63	xorl	%esi,%ecx
64
65
66	rorl	$16,%ecx
67	movl	12(%edi),%esi
68	movb	%ch,%al
69	movb	%cl,%bl
70	rorl	$16,%ecx
71	xorl	%esi,%edx
72	movl	72(%edi,%eax,4),%esi
73	movl	1096(%edi,%ebx,4),%ebp
74	movb	%ch,%al
75	movb	%cl,%bl
76	addl	%ebp,%esi
77	movl	2120(%edi,%eax,4),%eax
78	xorl	%eax,%esi
79	movl	3144(%edi,%ebx,4),%ebp
80	addl	%ebp,%esi
81	xorl	%eax,%eax
82	xorl	%esi,%edx
83
84
85	rorl	$16,%edx
86	movl	16(%edi),%esi
87	movb	%dh,%al
88	movb	%dl,%bl
89	rorl	$16,%edx
90	xorl	%esi,%ecx
91	movl	72(%edi,%eax,4),%esi
92	movl	1096(%edi,%ebx,4),%ebp
93	movb	%dh,%al
94	movb	%dl,%bl
95	addl	%ebp,%esi
96	movl	2120(%edi,%eax,4),%eax
97	xorl	%eax,%esi
98	movl	3144(%edi,%ebx,4),%ebp
99	addl	%ebp,%esi
100	xorl	%eax,%eax
101	xorl	%esi,%ecx
102
103
104	rorl	$16,%ecx
105	movl	20(%edi),%esi
106	movb	%ch,%al
107	movb	%cl,%bl
108	rorl	$16,%ecx
109	xorl	%esi,%edx
110	movl	72(%edi,%eax,4),%esi
111	movl	1096(%edi,%ebx,4),%ebp
112	movb	%ch,%al
113	movb	%cl,%bl
114	addl	%ebp,%esi
115	movl	2120(%edi,%eax,4),%eax
116	xorl	%eax,%esi
117	movl	3144(%edi,%ebx,4),%ebp
118	addl	%ebp,%esi
119	xorl	%eax,%eax
120	xorl	%esi,%edx
121
122
123	rorl	$16,%edx
124	movl	24(%edi),%esi
125	movb	%dh,%al
126	movb	%dl,%bl
127	rorl	$16,%edx
128	xorl	%esi,%ecx
129	movl	72(%edi,%eax,4),%esi
130	movl	1096(%edi,%ebx,4),%ebp
131	movb	%dh,%al
132	movb	%dl,%bl
133	addl	%ebp,%esi
134	movl	2120(%edi,%eax,4),%eax
135	xorl	%eax,%esi
136	movl	3144(%edi,%ebx,4),%ebp
137	addl	%ebp,%esi
138	xorl	%eax,%eax
139	xorl	%esi,%ecx
140
141
142	rorl	$16,%ecx
143	movl	28(%edi),%esi
144	movb	%ch,%al
145	movb	%cl,%bl
146	rorl	$16,%ecx
147	xorl	%esi,%edx
148	movl	72(%edi,%eax,4),%esi
149	movl	1096(%edi,%ebx,4),%ebp
150	movb	%ch,%al
151	movb	%cl,%bl
152	addl	%ebp,%esi
153	movl	2120(%edi,%eax,4),%eax
154	xorl	%eax,%esi
155	movl	3144(%edi,%ebx,4),%ebp
156	addl	%ebp,%esi
157	xorl	%eax,%eax
158	xorl	%esi,%edx
159
160
161	rorl	$16,%edx
162	movl	32(%edi),%esi
163	movb	%dh,%al
164	movb	%dl,%bl
165	rorl	$16,%edx
166	xorl	%esi,%ecx
167	movl	72(%edi,%eax,4),%esi
168	movl	1096(%edi,%ebx,4),%ebp
169	movb	%dh,%al
170	movb	%dl,%bl
171	addl	%ebp,%esi
172	movl	2120(%edi,%eax,4),%eax
173	xorl	%eax,%esi
174	movl	3144(%edi,%ebx,4),%ebp
175	addl	%ebp,%esi
176	xorl	%eax,%eax
177	xorl	%esi,%ecx
178
179
180	rorl	$16,%ecx
181	movl	36(%edi),%esi
182	movb	%ch,%al
183	movb	%cl,%bl
184	rorl	$16,%ecx
185	xorl	%esi,%edx
186	movl	72(%edi,%eax,4),%esi
187	movl	1096(%edi,%ebx,4),%ebp
188	movb	%ch,%al
189	movb	%cl,%bl
190	addl	%ebp,%esi
191	movl	2120(%edi,%eax,4),%eax
192	xorl	%eax,%esi
193	movl	3144(%edi,%ebx,4),%ebp
194	addl	%ebp,%esi
195	xorl	%eax,%eax
196	xorl	%esi,%edx
197
198
199	rorl	$16,%edx
200	movl	40(%edi),%esi
201	movb	%dh,%al
202	movb	%dl,%bl
203	rorl	$16,%edx
204	xorl	%esi,%ecx
205	movl	72(%edi,%eax,4),%esi
206	movl	1096(%edi,%ebx,4),%ebp
207	movb	%dh,%al
208	movb	%dl,%bl
209	addl	%ebp,%esi
210	movl	2120(%edi,%eax,4),%eax
211	xorl	%eax,%esi
212	movl	3144(%edi,%ebx,4),%ebp
213	addl	%ebp,%esi
214	xorl	%eax,%eax
215	xorl	%esi,%ecx
216
217
218	rorl	$16,%ecx
219	movl	44(%edi),%esi
220	movb	%ch,%al
221	movb	%cl,%bl
222	rorl	$16,%ecx
223	xorl	%esi,%edx
224	movl	72(%edi,%eax,4),%esi
225	movl	1096(%edi,%ebx,4),%ebp
226	movb	%ch,%al
227	movb	%cl,%bl
228	addl	%ebp,%esi
229	movl	2120(%edi,%eax,4),%eax
230	xorl	%eax,%esi
231	movl	3144(%edi,%ebx,4),%ebp
232	addl	%ebp,%esi
233	xorl	%eax,%eax
234	xorl	%esi,%edx
235
236
237	rorl	$16,%edx
238	movl	48(%edi),%esi
239	movb	%dh,%al
240	movb	%dl,%bl
241	rorl	$16,%edx
242	xorl	%esi,%ecx
243	movl	72(%edi,%eax,4),%esi
244	movl	1096(%edi,%ebx,4),%ebp
245	movb	%dh,%al
246	movb	%dl,%bl
247	addl	%ebp,%esi
248	movl	2120(%edi,%eax,4),%eax
249	xorl	%eax,%esi
250	movl	3144(%edi,%ebx,4),%ebp
251	addl	%ebp,%esi
252	xorl	%eax,%eax
253	xorl	%esi,%ecx
254
255
256	rorl	$16,%ecx
257	movl	52(%edi),%esi
258	movb	%ch,%al
259	movb	%cl,%bl
260	rorl	$16,%ecx
261	xorl	%esi,%edx
262	movl	72(%edi,%eax,4),%esi
263	movl	1096(%edi,%ebx,4),%ebp
264	movb	%ch,%al
265	movb	%cl,%bl
266	addl	%ebp,%esi
267	movl	2120(%edi,%eax,4),%eax
268	xorl	%eax,%esi
269	movl	3144(%edi,%ebx,4),%ebp
270	addl	%ebp,%esi
271	xorl	%eax,%eax
272	xorl	%esi,%edx
273
274
275	rorl	$16,%edx
276	movl	56(%edi),%esi
277	movb	%dh,%al
278	movb	%dl,%bl
279	rorl	$16,%edx
280	xorl	%esi,%ecx
281	movl	72(%edi,%eax,4),%esi
282	movl	1096(%edi,%ebx,4),%ebp
283	movb	%dh,%al
284	movb	%dl,%bl
285	addl	%ebp,%esi
286	movl	2120(%edi,%eax,4),%eax
287	xorl	%eax,%esi
288	movl	3144(%edi,%ebx,4),%ebp
289	addl	%ebp,%esi
290	xorl	%eax,%eax
291	xorl	%esi,%ecx
292
293
294	rorl	$16,%ecx
295	movl	60(%edi),%esi
296	movb	%ch,%al
297	movb	%cl,%bl
298	rorl	$16,%ecx
299	xorl	%esi,%edx
300	movl	72(%edi,%eax,4),%esi
301	movl	1096(%edi,%ebx,4),%ebp
302	movb	%ch,%al
303	movb	%cl,%bl
304	addl	%ebp,%esi
305	movl	2120(%edi,%eax,4),%eax
306	xorl	%eax,%esi
307	movl	3144(%edi,%ebx,4),%ebp
308	addl	%ebp,%esi
309	xorl	%eax,%eax
310	xorl	%esi,%edx
311
312
313	rorl	$16,%edx
314	movl	64(%edi),%esi
315	movb	%dh,%al
316	movb	%dl,%bl
317	rorl	$16,%edx
318	xorl	%esi,%ecx
319	movl	72(%edi,%eax,4),%esi
320	movl	1096(%edi,%ebx,4),%ebp
321	movb	%dh,%al
322	movb	%dl,%bl
323	addl	%ebp,%esi
324	movl	2120(%edi,%eax,4),%eax
325	xorl	%eax,%esi
326	movl	3144(%edi,%ebx,4),%ebp
327	addl	%ebp,%esi
328	xorl	%eax,%eax
329	xorl	%esi,%ecx
330	xorl	68(%edi),%edx
331	movl	20(%esp),%eax
332	movl	%edx,(%eax)
333	movl	%ecx,4(%eax)
334	popl	%edi
335	popl	%esi
336	popl	%ebx
337	popl	%ebp
338	ret
339.size	BF_encrypt,.-.L_BF_encrypt_begin
340.globl	BF_decrypt
341.type	BF_decrypt,@function
342.align	16
343BF_decrypt:
344.L_BF_decrypt_begin:
345	pushl	%ebp
346	pushl	%ebx
347	pushl	%esi
348	pushl	%edi
349
350
351	movl	20(%esp),%eax
352	movl	(%eax),%ecx
353	movl	4(%eax),%edx
354
355
356	movl	24(%esp),%edi
357	xorl	%eax,%eax
358	xorl	%ebx,%ebx
359	xorl	68(%edi),%ecx
360
361
362	rorl	$16,%ecx
363	movl	64(%edi),%esi
364	movb	%ch,%al
365	movb	%cl,%bl
366	rorl	$16,%ecx
367	xorl	%esi,%edx
368	movl	72(%edi,%eax,4),%esi
369	movl	1096(%edi,%ebx,4),%ebp
370	movb	%ch,%al
371	movb	%cl,%bl
372	addl	%ebp,%esi
373	movl	2120(%edi,%eax,4),%eax
374	xorl	%eax,%esi
375	movl	3144(%edi,%ebx,4),%ebp
376	addl	%ebp,%esi
377	xorl	%eax,%eax
378	xorl	%esi,%edx
379
380
381	rorl	$16,%edx
382	movl	60(%edi),%esi
383	movb	%dh,%al
384	movb	%dl,%bl
385	rorl	$16,%edx
386	xorl	%esi,%ecx
387	movl	72(%edi,%eax,4),%esi
388	movl	1096(%edi,%ebx,4),%ebp
389	movb	%dh,%al
390	movb	%dl,%bl
391	addl	%ebp,%esi
392	movl	2120(%edi,%eax,4),%eax
393	xorl	%eax,%esi
394	movl	3144(%edi,%ebx,4),%ebp
395	addl	%ebp,%esi
396	xorl	%eax,%eax
397	xorl	%esi,%ecx
398
399
400	rorl	$16,%ecx
401	movl	56(%edi),%esi
402	movb	%ch,%al
403	movb	%cl,%bl
404	rorl	$16,%ecx
405	xorl	%esi,%edx
406	movl	72(%edi,%eax,4),%esi
407	movl	1096(%edi,%ebx,4),%ebp
408	movb	%ch,%al
409	movb	%cl,%bl
410	addl	%ebp,%esi
411	movl	2120(%edi,%eax,4),%eax
412	xorl	%eax,%esi
413	movl	3144(%edi,%ebx,4),%ebp
414	addl	%ebp,%esi
415	xorl	%eax,%eax
416	xorl	%esi,%edx
417
418
419	rorl	$16,%edx
420	movl	52(%edi),%esi
421	movb	%dh,%al
422	movb	%dl,%bl
423	rorl	$16,%edx
424	xorl	%esi,%ecx
425	movl	72(%edi,%eax,4),%esi
426	movl	1096(%edi,%ebx,4),%ebp
427	movb	%dh,%al
428	movb	%dl,%bl
429	addl	%ebp,%esi
430	movl	2120(%edi,%eax,4),%eax
431	xorl	%eax,%esi
432	movl	3144(%edi,%ebx,4),%ebp
433	addl	%ebp,%esi
434	xorl	%eax,%eax
435	xorl	%esi,%ecx
436
437
438	rorl	$16,%ecx
439	movl	48(%edi),%esi
440	movb	%ch,%al
441	movb	%cl,%bl
442	rorl	$16,%ecx
443	xorl	%esi,%edx
444	movl	72(%edi,%eax,4),%esi
445	movl	1096(%edi,%ebx,4),%ebp
446	movb	%ch,%al
447	movb	%cl,%bl
448	addl	%ebp,%esi
449	movl	2120(%edi,%eax,4),%eax
450	xorl	%eax,%esi
451	movl	3144(%edi,%ebx,4),%ebp
452	addl	%ebp,%esi
453	xorl	%eax,%eax
454	xorl	%esi,%edx
455
456
457	rorl	$16,%edx
458	movl	44(%edi),%esi
459	movb	%dh,%al
460	movb	%dl,%bl
461	rorl	$16,%edx
462	xorl	%esi,%ecx
463	movl	72(%edi,%eax,4),%esi
464	movl	1096(%edi,%ebx,4),%ebp
465	movb	%dh,%al
466	movb	%dl,%bl
467	addl	%ebp,%esi
468	movl	2120(%edi,%eax,4),%eax
469	xorl	%eax,%esi
470	movl	3144(%edi,%ebx,4),%ebp
471	addl	%ebp,%esi
472	xorl	%eax,%eax
473	xorl	%esi,%ecx
474
475
476	rorl	$16,%ecx
477	movl	40(%edi),%esi
478	movb	%ch,%al
479	movb	%cl,%bl
480	rorl	$16,%ecx
481	xorl	%esi,%edx
482	movl	72(%edi,%eax,4),%esi
483	movl	1096(%edi,%ebx,4),%ebp
484	movb	%ch,%al
485	movb	%cl,%bl
486	addl	%ebp,%esi
487	movl	2120(%edi,%eax,4),%eax
488	xorl	%eax,%esi
489	movl	3144(%edi,%ebx,4),%ebp
490	addl	%ebp,%esi
491	xorl	%eax,%eax
492	xorl	%esi,%edx
493
494
495	rorl	$16,%edx
496	movl	36(%edi),%esi
497	movb	%dh,%al
498	movb	%dl,%bl
499	rorl	$16,%edx
500	xorl	%esi,%ecx
501	movl	72(%edi,%eax,4),%esi
502	movl	1096(%edi,%ebx,4),%ebp
503	movb	%dh,%al
504	movb	%dl,%bl
505	addl	%ebp,%esi
506	movl	2120(%edi,%eax,4),%eax
507	xorl	%eax,%esi
508	movl	3144(%edi,%ebx,4),%ebp
509	addl	%ebp,%esi
510	xorl	%eax,%eax
511	xorl	%esi,%ecx
512
513
514	rorl	$16,%ecx
515	movl	32(%edi),%esi
516	movb	%ch,%al
517	movb	%cl,%bl
518	rorl	$16,%ecx
519	xorl	%esi,%edx
520	movl	72(%edi,%eax,4),%esi
521	movl	1096(%edi,%ebx,4),%ebp
522	movb	%ch,%al
523	movb	%cl,%bl
524	addl	%ebp,%esi
525	movl	2120(%edi,%eax,4),%eax
526	xorl	%eax,%esi
527	movl	3144(%edi,%ebx,4),%ebp
528	addl	%ebp,%esi
529	xorl	%eax,%eax
530	xorl	%esi,%edx
531
532
533	rorl	$16,%edx
534	movl	28(%edi),%esi
535	movb	%dh,%al
536	movb	%dl,%bl
537	rorl	$16,%edx
538	xorl	%esi,%ecx
539	movl	72(%edi,%eax,4),%esi
540	movl	1096(%edi,%ebx,4),%ebp
541	movb	%dh,%al
542	movb	%dl,%bl
543	addl	%ebp,%esi
544	movl	2120(%edi,%eax,4),%eax
545	xorl	%eax,%esi
546	movl	3144(%edi,%ebx,4),%ebp
547	addl	%ebp,%esi
548	xorl	%eax,%eax
549	xorl	%esi,%ecx
550
551
552	rorl	$16,%ecx
553	movl	24(%edi),%esi
554	movb	%ch,%al
555	movb	%cl,%bl
556	rorl	$16,%ecx
557	xorl	%esi,%edx
558	movl	72(%edi,%eax,4),%esi
559	movl	1096(%edi,%ebx,4),%ebp
560	movb	%ch,%al
561	movb	%cl,%bl
562	addl	%ebp,%esi
563	movl	2120(%edi,%eax,4),%eax
564	xorl	%eax,%esi
565	movl	3144(%edi,%ebx,4),%ebp
566	addl	%ebp,%esi
567	xorl	%eax,%eax
568	xorl	%esi,%edx
569
570
571	rorl	$16,%edx
572	movl	20(%edi),%esi
573	movb	%dh,%al
574	movb	%dl,%bl
575	rorl	$16,%edx
576	xorl	%esi,%ecx
577	movl	72(%edi,%eax,4),%esi
578	movl	1096(%edi,%ebx,4),%ebp
579	movb	%dh,%al
580	movb	%dl,%bl
581	addl	%ebp,%esi
582	movl	2120(%edi,%eax,4),%eax
583	xorl	%eax,%esi
584	movl	3144(%edi,%ebx,4),%ebp
585	addl	%ebp,%esi
586	xorl	%eax,%eax
587	xorl	%esi,%ecx
588
589
590	rorl	$16,%ecx
591	movl	16(%edi),%esi
592	movb	%ch,%al
593	movb	%cl,%bl
594	rorl	$16,%ecx
595	xorl	%esi,%edx
596	movl	72(%edi,%eax,4),%esi
597	movl	1096(%edi,%ebx,4),%ebp
598	movb	%ch,%al
599	movb	%cl,%bl
600	addl	%ebp,%esi
601	movl	2120(%edi,%eax,4),%eax
602	xorl	%eax,%esi
603	movl	3144(%edi,%ebx,4),%ebp
604	addl	%ebp,%esi
605	xorl	%eax,%eax
606	xorl	%esi,%edx
607
608
609	rorl	$16,%edx
610	movl	12(%edi),%esi
611	movb	%dh,%al
612	movb	%dl,%bl
613	rorl	$16,%edx
614	xorl	%esi,%ecx
615	movl	72(%edi,%eax,4),%esi
616	movl	1096(%edi,%ebx,4),%ebp
617	movb	%dh,%al
618	movb	%dl,%bl
619	addl	%ebp,%esi
620	movl	2120(%edi,%eax,4),%eax
621	xorl	%eax,%esi
622	movl	3144(%edi,%ebx,4),%ebp
623	addl	%ebp,%esi
624	xorl	%eax,%eax
625	xorl	%esi,%ecx
626
627
628	rorl	$16,%ecx
629	movl	8(%edi),%esi
630	movb	%ch,%al
631	movb	%cl,%bl
632	rorl	$16,%ecx
633	xorl	%esi,%edx
634	movl	72(%edi,%eax,4),%esi
635	movl	1096(%edi,%ebx,4),%ebp
636	movb	%ch,%al
637	movb	%cl,%bl
638	addl	%ebp,%esi
639	movl	2120(%edi,%eax,4),%eax
640	xorl	%eax,%esi
641	movl	3144(%edi,%ebx,4),%ebp
642	addl	%ebp,%esi
643	xorl	%eax,%eax
644	xorl	%esi,%edx
645
646
647	rorl	$16,%edx
648	movl	4(%edi),%esi
649	movb	%dh,%al
650	movb	%dl,%bl
651	rorl	$16,%edx
652	xorl	%esi,%ecx
653	movl	72(%edi,%eax,4),%esi
654	movl	1096(%edi,%ebx,4),%ebp
655	movb	%dh,%al
656	movb	%dl,%bl
657	addl	%ebp,%esi
658	movl	2120(%edi,%eax,4),%eax
659	xorl	%eax,%esi
660	movl	3144(%edi,%ebx,4),%ebp
661	addl	%ebp,%esi
662	xorl	%eax,%eax
663	xorl	%esi,%ecx
664	xorl	(%edi),%edx
665	movl	20(%esp),%eax
666	movl	%edx,(%eax)
667	movl	%ecx,4(%eax)
668	popl	%edi
669	popl	%esi
670	popl	%ebx
671	popl	%ebp
672	ret
673.size	BF_decrypt,.-.L_BF_decrypt_begin
674.globl	BF_cbc_encrypt
675.type	BF_cbc_encrypt,@function
676.align	16
677BF_cbc_encrypt:
678.L_BF_cbc_encrypt_begin:
679
680	pushl	%ebp
681	pushl	%ebx
682	pushl	%esi
683	pushl	%edi
684	movl	28(%esp),%ebp
685
686	movl	36(%esp),%ebx
687	movl	(%ebx),%esi
688	movl	4(%ebx),%edi
689	pushl	%edi
690	pushl	%esi
691	pushl	%edi
692	pushl	%esi
693	movl	%esp,%ebx
694	movl	36(%esp),%esi
695	movl	40(%esp),%edi
696
697	movl	56(%esp),%ecx
698
699	movl	48(%esp),%eax
700	pushl	%eax
701	pushl	%ebx
702	cmpl	$0,%ecx
703	jz	.L000decrypt
704	andl	$4294967288,%ebp
705	movl	8(%esp),%eax
706	movl	12(%esp),%ebx
707	jz	.L001encrypt_finish
708.L002encrypt_loop:
709	movl	(%esi),%ecx
710	movl	4(%esi),%edx
711	xorl	%ecx,%eax
712	xorl	%edx,%ebx
713	bswap	%eax
714	bswap	%ebx
715	movl	%eax,8(%esp)
716	movl	%ebx,12(%esp)
717	call	.L_BF_encrypt_begin
718	movl	8(%esp),%eax
719	movl	12(%esp),%ebx
720	bswap	%eax
721	bswap	%ebx
722	movl	%eax,(%edi)
723	movl	%ebx,4(%edi)
724	addl	$8,%esi
725	addl	$8,%edi
726	subl	$8,%ebp
727	jnz	.L002encrypt_loop
728.L001encrypt_finish:
729	movl	52(%esp),%ebp
730	andl	$7,%ebp
731	jz	.L003finish
732	call	.L004PIC_point
733.L004PIC_point:
734	popl	%edx
735	leal	.L005cbc_enc_jmp_table-.L004PIC_point(%edx),%ecx
736	movl	(%ecx,%ebp,4),%ebp
737	addl	%edx,%ebp
738	xorl	%ecx,%ecx
739	xorl	%edx,%edx
740	jmp	*%ebp
741.L006ej7:
742	movb	6(%esi),%dh
743	shll	$8,%edx
744.L007ej6:
745	movb	5(%esi),%dh
746.L008ej5:
747	movb	4(%esi),%dl
748.L009ej4:
749	movl	(%esi),%ecx
750	jmp	.L010ejend
751.L011ej3:
752	movb	2(%esi),%ch
753	shll	$8,%ecx
754.L012ej2:
755	movb	1(%esi),%ch
756.L013ej1:
757	movb	(%esi),%cl
758.L010ejend:
759	xorl	%ecx,%eax
760	xorl	%edx,%ebx
761	bswap	%eax
762	bswap	%ebx
763	movl	%eax,8(%esp)
764	movl	%ebx,12(%esp)
765	call	.L_BF_encrypt_begin
766	movl	8(%esp),%eax
767	movl	12(%esp),%ebx
768	bswap	%eax
769	bswap	%ebx
770	movl	%eax,(%edi)
771	movl	%ebx,4(%edi)
772	jmp	.L003finish
773.L000decrypt:
774	andl	$4294967288,%ebp
775	movl	16(%esp),%eax
776	movl	20(%esp),%ebx
777	jz	.L014decrypt_finish
778.L015decrypt_loop:
779	movl	(%esi),%eax
780	movl	4(%esi),%ebx
781	bswap	%eax
782	bswap	%ebx
783	movl	%eax,8(%esp)
784	movl	%ebx,12(%esp)
785	call	.L_BF_decrypt_begin
786	movl	8(%esp),%eax
787	movl	12(%esp),%ebx
788	bswap	%eax
789	bswap	%ebx
790	movl	16(%esp),%ecx
791	movl	20(%esp),%edx
792	xorl	%eax,%ecx
793	xorl	%ebx,%edx
794	movl	(%esi),%eax
795	movl	4(%esi),%ebx
796	movl	%ecx,(%edi)
797	movl	%edx,4(%edi)
798	movl	%eax,16(%esp)
799	movl	%ebx,20(%esp)
800	addl	$8,%esi
801	addl	$8,%edi
802	subl	$8,%ebp
803	jnz	.L015decrypt_loop
804.L014decrypt_finish:
805	movl	52(%esp),%ebp
806	andl	$7,%ebp
807	jz	.L003finish
808	movl	(%esi),%eax
809	movl	4(%esi),%ebx
810	bswap	%eax
811	bswap	%ebx
812	movl	%eax,8(%esp)
813	movl	%ebx,12(%esp)
814	call	.L_BF_decrypt_begin
815	movl	8(%esp),%eax
816	movl	12(%esp),%ebx
817	bswap	%eax
818	bswap	%ebx
819	movl	16(%esp),%ecx
820	movl	20(%esp),%edx
821	xorl	%eax,%ecx
822	xorl	%ebx,%edx
823	movl	(%esi),%eax
824	movl	4(%esi),%ebx
825.L016dj7:
826	rorl	$16,%edx
827	movb	%dl,6(%edi)
828	shrl	$16,%edx
829.L017dj6:
830	movb	%dh,5(%edi)
831.L018dj5:
832	movb	%dl,4(%edi)
833.L019dj4:
834	movl	%ecx,(%edi)
835	jmp	.L020djend
836.L021dj3:
837	rorl	$16,%ecx
838	movb	%cl,2(%edi)
839	shll	$16,%ecx
840.L022dj2:
841	movb	%ch,1(%esi)
842.L023dj1:
843	movb	%cl,(%esi)
844.L020djend:
845	jmp	.L003finish
846.L003finish:
847	movl	60(%esp),%ecx
848	addl	$24,%esp
849	movl	%eax,(%ecx)
850	movl	%ebx,4(%ecx)
851	popl	%edi
852	popl	%esi
853	popl	%ebx
854	popl	%ebp
855	ret
856.align	64
857.L005cbc_enc_jmp_table:
858.long	0
859.long	.L013ej1-.L004PIC_point
860.long	.L012ej2-.L004PIC_point
861.long	.L011ej3-.L004PIC_point
862.long	.L009ej4-.L004PIC_point
863.long	.L008ej5-.L004PIC_point
864.long	.L007ej6-.L004PIC_point
865.long	.L006ej7-.L004PIC_point
866.align	64
867.size	BF_cbc_encrypt,.-.L_BF_cbc_encrypt_begin
868#else
869.file	"bf-686.S"
870.text
871.globl	BF_encrypt
872.type	BF_encrypt,@function
873.align	16
874BF_encrypt:
875.L_BF_encrypt_begin:
876	pushl	%ebp
877	pushl	%ebx
878	pushl	%esi
879	pushl	%edi
880
881
882	movl	20(%esp),%eax
883	movl	(%eax),%ecx
884	movl	4(%eax),%edx
885
886
887	movl	24(%esp),%edi
888	xorl	%eax,%eax
889	xorl	%ebx,%ebx
890	xorl	(%edi),%ecx
891
892
893	rorl	$16,%ecx
894	movl	4(%edi),%esi
895	movb	%ch,%al
896	movb	%cl,%bl
897	rorl	$16,%ecx
898	xorl	%esi,%edx
899	movl	72(%edi,%eax,4),%esi
900	movl	1096(%edi,%ebx,4),%ebp
901	movb	%ch,%al
902	movb	%cl,%bl
903	addl	%ebp,%esi
904	movl	2120(%edi,%eax,4),%eax
905	xorl	%eax,%esi
906	movl	3144(%edi,%ebx,4),%ebp
907	addl	%ebp,%esi
908	xorl	%eax,%eax
909	xorl	%esi,%edx
910
911
912	rorl	$16,%edx
913	movl	8(%edi),%esi
914	movb	%dh,%al
915	movb	%dl,%bl
916	rorl	$16,%edx
917	xorl	%esi,%ecx
918	movl	72(%edi,%eax,4),%esi
919	movl	1096(%edi,%ebx,4),%ebp
920	movb	%dh,%al
921	movb	%dl,%bl
922	addl	%ebp,%esi
923	movl	2120(%edi,%eax,4),%eax
924	xorl	%eax,%esi
925	movl	3144(%edi,%ebx,4),%ebp
926	addl	%ebp,%esi
927	xorl	%eax,%eax
928	xorl	%esi,%ecx
929
930
931	rorl	$16,%ecx
932	movl	12(%edi),%esi
933	movb	%ch,%al
934	movb	%cl,%bl
935	rorl	$16,%ecx
936	xorl	%esi,%edx
937	movl	72(%edi,%eax,4),%esi
938	movl	1096(%edi,%ebx,4),%ebp
939	movb	%ch,%al
940	movb	%cl,%bl
941	addl	%ebp,%esi
942	movl	2120(%edi,%eax,4),%eax
943	xorl	%eax,%esi
944	movl	3144(%edi,%ebx,4),%ebp
945	addl	%ebp,%esi
946	xorl	%eax,%eax
947	xorl	%esi,%edx
948
949
950	rorl	$16,%edx
951	movl	16(%edi),%esi
952	movb	%dh,%al
953	movb	%dl,%bl
954	rorl	$16,%edx
955	xorl	%esi,%ecx
956	movl	72(%edi,%eax,4),%esi
957	movl	1096(%edi,%ebx,4),%ebp
958	movb	%dh,%al
959	movb	%dl,%bl
960	addl	%ebp,%esi
961	movl	2120(%edi,%eax,4),%eax
962	xorl	%eax,%esi
963	movl	3144(%edi,%ebx,4),%ebp
964	addl	%ebp,%esi
965	xorl	%eax,%eax
966	xorl	%esi,%ecx
967
968
969	rorl	$16,%ecx
970	movl	20(%edi),%esi
971	movb	%ch,%al
972	movb	%cl,%bl
973	rorl	$16,%ecx
974	xorl	%esi,%edx
975	movl	72(%edi,%eax,4),%esi
976	movl	1096(%edi,%ebx,4),%ebp
977	movb	%ch,%al
978	movb	%cl,%bl
979	addl	%ebp,%esi
980	movl	2120(%edi,%eax,4),%eax
981	xorl	%eax,%esi
982	movl	3144(%edi,%ebx,4),%ebp
983	addl	%ebp,%esi
984	xorl	%eax,%eax
985	xorl	%esi,%edx
986
987
988	rorl	$16,%edx
989	movl	24(%edi),%esi
990	movb	%dh,%al
991	movb	%dl,%bl
992	rorl	$16,%edx
993	xorl	%esi,%ecx
994	movl	72(%edi,%eax,4),%esi
995	movl	1096(%edi,%ebx,4),%ebp
996	movb	%dh,%al
997	movb	%dl,%bl
998	addl	%ebp,%esi
999	movl	2120(%edi,%eax,4),%eax
1000	xorl	%eax,%esi
1001	movl	3144(%edi,%ebx,4),%ebp
1002	addl	%ebp,%esi
1003	xorl	%eax,%eax
1004	xorl	%esi,%ecx
1005
1006
1007	rorl	$16,%ecx
1008	movl	28(%edi),%esi
1009	movb	%ch,%al
1010	movb	%cl,%bl
1011	rorl	$16,%ecx
1012	xorl	%esi,%edx
1013	movl	72(%edi,%eax,4),%esi
1014	movl	1096(%edi,%ebx,4),%ebp
1015	movb	%ch,%al
1016	movb	%cl,%bl
1017	addl	%ebp,%esi
1018	movl	2120(%edi,%eax,4),%eax
1019	xorl	%eax,%esi
1020	movl	3144(%edi,%ebx,4),%ebp
1021	addl	%ebp,%esi
1022	xorl	%eax,%eax
1023	xorl	%esi,%edx
1024
1025
1026	rorl	$16,%edx
1027	movl	32(%edi),%esi
1028	movb	%dh,%al
1029	movb	%dl,%bl
1030	rorl	$16,%edx
1031	xorl	%esi,%ecx
1032	movl	72(%edi,%eax,4),%esi
1033	movl	1096(%edi,%ebx,4),%ebp
1034	movb	%dh,%al
1035	movb	%dl,%bl
1036	addl	%ebp,%esi
1037	movl	2120(%edi,%eax,4),%eax
1038	xorl	%eax,%esi
1039	movl	3144(%edi,%ebx,4),%ebp
1040	addl	%ebp,%esi
1041	xorl	%eax,%eax
1042	xorl	%esi,%ecx
1043
1044
1045	rorl	$16,%ecx
1046	movl	36(%edi),%esi
1047	movb	%ch,%al
1048	movb	%cl,%bl
1049	rorl	$16,%ecx
1050	xorl	%esi,%edx
1051	movl	72(%edi,%eax,4),%esi
1052	movl	1096(%edi,%ebx,4),%ebp
1053	movb	%ch,%al
1054	movb	%cl,%bl
1055	addl	%ebp,%esi
1056	movl	2120(%edi,%eax,4),%eax
1057	xorl	%eax,%esi
1058	movl	3144(%edi,%ebx,4),%ebp
1059	addl	%ebp,%esi
1060	xorl	%eax,%eax
1061	xorl	%esi,%edx
1062
1063
1064	rorl	$16,%edx
1065	movl	40(%edi),%esi
1066	movb	%dh,%al
1067	movb	%dl,%bl
1068	rorl	$16,%edx
1069	xorl	%esi,%ecx
1070	movl	72(%edi,%eax,4),%esi
1071	movl	1096(%edi,%ebx,4),%ebp
1072	movb	%dh,%al
1073	movb	%dl,%bl
1074	addl	%ebp,%esi
1075	movl	2120(%edi,%eax,4),%eax
1076	xorl	%eax,%esi
1077	movl	3144(%edi,%ebx,4),%ebp
1078	addl	%ebp,%esi
1079	xorl	%eax,%eax
1080	xorl	%esi,%ecx
1081
1082
1083	rorl	$16,%ecx
1084	movl	44(%edi),%esi
1085	movb	%ch,%al
1086	movb	%cl,%bl
1087	rorl	$16,%ecx
1088	xorl	%esi,%edx
1089	movl	72(%edi,%eax,4),%esi
1090	movl	1096(%edi,%ebx,4),%ebp
1091	movb	%ch,%al
1092	movb	%cl,%bl
1093	addl	%ebp,%esi
1094	movl	2120(%edi,%eax,4),%eax
1095	xorl	%eax,%esi
1096	movl	3144(%edi,%ebx,4),%ebp
1097	addl	%ebp,%esi
1098	xorl	%eax,%eax
1099	xorl	%esi,%edx
1100
1101
1102	rorl	$16,%edx
1103	movl	48(%edi),%esi
1104	movb	%dh,%al
1105	movb	%dl,%bl
1106	rorl	$16,%edx
1107	xorl	%esi,%ecx
1108	movl	72(%edi,%eax,4),%esi
1109	movl	1096(%edi,%ebx,4),%ebp
1110	movb	%dh,%al
1111	movb	%dl,%bl
1112	addl	%ebp,%esi
1113	movl	2120(%edi,%eax,4),%eax
1114	xorl	%eax,%esi
1115	movl	3144(%edi,%ebx,4),%ebp
1116	addl	%ebp,%esi
1117	xorl	%eax,%eax
1118	xorl	%esi,%ecx
1119
1120
1121	rorl	$16,%ecx
1122	movl	52(%edi),%esi
1123	movb	%ch,%al
1124	movb	%cl,%bl
1125	rorl	$16,%ecx
1126	xorl	%esi,%edx
1127	movl	72(%edi,%eax,4),%esi
1128	movl	1096(%edi,%ebx,4),%ebp
1129	movb	%ch,%al
1130	movb	%cl,%bl
1131	addl	%ebp,%esi
1132	movl	2120(%edi,%eax,4),%eax
1133	xorl	%eax,%esi
1134	movl	3144(%edi,%ebx,4),%ebp
1135	addl	%ebp,%esi
1136	xorl	%eax,%eax
1137	xorl	%esi,%edx
1138
1139
1140	rorl	$16,%edx
1141	movl	56(%edi),%esi
1142	movb	%dh,%al
1143	movb	%dl,%bl
1144	rorl	$16,%edx
1145	xorl	%esi,%ecx
1146	movl	72(%edi,%eax,4),%esi
1147	movl	1096(%edi,%ebx,4),%ebp
1148	movb	%dh,%al
1149	movb	%dl,%bl
1150	addl	%ebp,%esi
1151	movl	2120(%edi,%eax,4),%eax
1152	xorl	%eax,%esi
1153	movl	3144(%edi,%ebx,4),%ebp
1154	addl	%ebp,%esi
1155	xorl	%eax,%eax
1156	xorl	%esi,%ecx
1157
1158
1159	rorl	$16,%ecx
1160	movl	60(%edi),%esi
1161	movb	%ch,%al
1162	movb	%cl,%bl
1163	rorl	$16,%ecx
1164	xorl	%esi,%edx
1165	movl	72(%edi,%eax,4),%esi
1166	movl	1096(%edi,%ebx,4),%ebp
1167	movb	%ch,%al
1168	movb	%cl,%bl
1169	addl	%ebp,%esi
1170	movl	2120(%edi,%eax,4),%eax
1171	xorl	%eax,%esi
1172	movl	3144(%edi,%ebx,4),%ebp
1173	addl	%ebp,%esi
1174	xorl	%eax,%eax
1175	xorl	%esi,%edx
1176
1177
1178	rorl	$16,%edx
1179	movl	64(%edi),%esi
1180	movb	%dh,%al
1181	movb	%dl,%bl
1182	rorl	$16,%edx
1183	xorl	%esi,%ecx
1184	movl	72(%edi,%eax,4),%esi
1185	movl	1096(%edi,%ebx,4),%ebp
1186	movb	%dh,%al
1187	movb	%dl,%bl
1188	addl	%ebp,%esi
1189	movl	2120(%edi,%eax,4),%eax
1190	xorl	%eax,%esi
1191	movl	3144(%edi,%ebx,4),%ebp
1192	addl	%ebp,%esi
1193	xorl	%eax,%eax
1194	xorl	%esi,%ecx
1195	xorl	68(%edi),%edx
1196	movl	20(%esp),%eax
1197	movl	%edx,(%eax)
1198	movl	%ecx,4(%eax)
1199	popl	%edi
1200	popl	%esi
1201	popl	%ebx
1202	popl	%ebp
1203	ret
1204.size	BF_encrypt,.-.L_BF_encrypt_begin
1205.globl	BF_decrypt
1206.type	BF_decrypt,@function
1207.align	16
1208BF_decrypt:
1209.L_BF_decrypt_begin:
1210	pushl	%ebp
1211	pushl	%ebx
1212	pushl	%esi
1213	pushl	%edi
1214
1215
1216	movl	20(%esp),%eax
1217	movl	(%eax),%ecx
1218	movl	4(%eax),%edx
1219
1220
1221	movl	24(%esp),%edi
1222	xorl	%eax,%eax
1223	xorl	%ebx,%ebx
1224	xorl	68(%edi),%ecx
1225
1226
1227	rorl	$16,%ecx
1228	movl	64(%edi),%esi
1229	movb	%ch,%al
1230	movb	%cl,%bl
1231	rorl	$16,%ecx
1232	xorl	%esi,%edx
1233	movl	72(%edi,%eax,4),%esi
1234	movl	1096(%edi,%ebx,4),%ebp
1235	movb	%ch,%al
1236	movb	%cl,%bl
1237	addl	%ebp,%esi
1238	movl	2120(%edi,%eax,4),%eax
1239	xorl	%eax,%esi
1240	movl	3144(%edi,%ebx,4),%ebp
1241	addl	%ebp,%esi
1242	xorl	%eax,%eax
1243	xorl	%esi,%edx
1244
1245
1246	rorl	$16,%edx
1247	movl	60(%edi),%esi
1248	movb	%dh,%al
1249	movb	%dl,%bl
1250	rorl	$16,%edx
1251	xorl	%esi,%ecx
1252	movl	72(%edi,%eax,4),%esi
1253	movl	1096(%edi,%ebx,4),%ebp
1254	movb	%dh,%al
1255	movb	%dl,%bl
1256	addl	%ebp,%esi
1257	movl	2120(%edi,%eax,4),%eax
1258	xorl	%eax,%esi
1259	movl	3144(%edi,%ebx,4),%ebp
1260	addl	%ebp,%esi
1261	xorl	%eax,%eax
1262	xorl	%esi,%ecx
1263
1264
1265	rorl	$16,%ecx
1266	movl	56(%edi),%esi
1267	movb	%ch,%al
1268	movb	%cl,%bl
1269	rorl	$16,%ecx
1270	xorl	%esi,%edx
1271	movl	72(%edi,%eax,4),%esi
1272	movl	1096(%edi,%ebx,4),%ebp
1273	movb	%ch,%al
1274	movb	%cl,%bl
1275	addl	%ebp,%esi
1276	movl	2120(%edi,%eax,4),%eax
1277	xorl	%eax,%esi
1278	movl	3144(%edi,%ebx,4),%ebp
1279	addl	%ebp,%esi
1280	xorl	%eax,%eax
1281	xorl	%esi,%edx
1282
1283
1284	rorl	$16,%edx
1285	movl	52(%edi),%esi
1286	movb	%dh,%al
1287	movb	%dl,%bl
1288	rorl	$16,%edx
1289	xorl	%esi,%ecx
1290	movl	72(%edi,%eax,4),%esi
1291	movl	1096(%edi,%ebx,4),%ebp
1292	movb	%dh,%al
1293	movb	%dl,%bl
1294	addl	%ebp,%esi
1295	movl	2120(%edi,%eax,4),%eax
1296	xorl	%eax,%esi
1297	movl	3144(%edi,%ebx,4),%ebp
1298	addl	%ebp,%esi
1299	xorl	%eax,%eax
1300	xorl	%esi,%ecx
1301
1302
1303	rorl	$16,%ecx
1304	movl	48(%edi),%esi
1305	movb	%ch,%al
1306	movb	%cl,%bl
1307	rorl	$16,%ecx
1308	xorl	%esi,%edx
1309	movl	72(%edi,%eax,4),%esi
1310	movl	1096(%edi,%ebx,4),%ebp
1311	movb	%ch,%al
1312	movb	%cl,%bl
1313	addl	%ebp,%esi
1314	movl	2120(%edi,%eax,4),%eax
1315	xorl	%eax,%esi
1316	movl	3144(%edi,%ebx,4),%ebp
1317	addl	%ebp,%esi
1318	xorl	%eax,%eax
1319	xorl	%esi,%edx
1320
1321
1322	rorl	$16,%edx
1323	movl	44(%edi),%esi
1324	movb	%dh,%al
1325	movb	%dl,%bl
1326	rorl	$16,%edx
1327	xorl	%esi,%ecx
1328	movl	72(%edi,%eax,4),%esi
1329	movl	1096(%edi,%ebx,4),%ebp
1330	movb	%dh,%al
1331	movb	%dl,%bl
1332	addl	%ebp,%esi
1333	movl	2120(%edi,%eax,4),%eax
1334	xorl	%eax,%esi
1335	movl	3144(%edi,%ebx,4),%ebp
1336	addl	%ebp,%esi
1337	xorl	%eax,%eax
1338	xorl	%esi,%ecx
1339
1340
1341	rorl	$16,%ecx
1342	movl	40(%edi),%esi
1343	movb	%ch,%al
1344	movb	%cl,%bl
1345	rorl	$16,%ecx
1346	xorl	%esi,%edx
1347	movl	72(%edi,%eax,4),%esi
1348	movl	1096(%edi,%ebx,4),%ebp
1349	movb	%ch,%al
1350	movb	%cl,%bl
1351	addl	%ebp,%esi
1352	movl	2120(%edi,%eax,4),%eax
1353	xorl	%eax,%esi
1354	movl	3144(%edi,%ebx,4),%ebp
1355	addl	%ebp,%esi
1356	xorl	%eax,%eax
1357	xorl	%esi,%edx
1358
1359
1360	rorl	$16,%edx
1361	movl	36(%edi),%esi
1362	movb	%dh,%al
1363	movb	%dl,%bl
1364	rorl	$16,%edx
1365	xorl	%esi,%ecx
1366	movl	72(%edi,%eax,4),%esi
1367	movl	1096(%edi,%ebx,4),%ebp
1368	movb	%dh,%al
1369	movb	%dl,%bl
1370	addl	%ebp,%esi
1371	movl	2120(%edi,%eax,4),%eax
1372	xorl	%eax,%esi
1373	movl	3144(%edi,%ebx,4),%ebp
1374	addl	%ebp,%esi
1375	xorl	%eax,%eax
1376	xorl	%esi,%ecx
1377
1378
1379	rorl	$16,%ecx
1380	movl	32(%edi),%esi
1381	movb	%ch,%al
1382	movb	%cl,%bl
1383	rorl	$16,%ecx
1384	xorl	%esi,%edx
1385	movl	72(%edi,%eax,4),%esi
1386	movl	1096(%edi,%ebx,4),%ebp
1387	movb	%ch,%al
1388	movb	%cl,%bl
1389	addl	%ebp,%esi
1390	movl	2120(%edi,%eax,4),%eax
1391	xorl	%eax,%esi
1392	movl	3144(%edi,%ebx,4),%ebp
1393	addl	%ebp,%esi
1394	xorl	%eax,%eax
1395	xorl	%esi,%edx
1396
1397
1398	rorl	$16,%edx
1399	movl	28(%edi),%esi
1400	movb	%dh,%al
1401	movb	%dl,%bl
1402	rorl	$16,%edx
1403	xorl	%esi,%ecx
1404	movl	72(%edi,%eax,4),%esi
1405	movl	1096(%edi,%ebx,4),%ebp
1406	movb	%dh,%al
1407	movb	%dl,%bl
1408	addl	%ebp,%esi
1409	movl	2120(%edi,%eax,4),%eax
1410	xorl	%eax,%esi
1411	movl	3144(%edi,%ebx,4),%ebp
1412	addl	%ebp,%esi
1413	xorl	%eax,%eax
1414	xorl	%esi,%ecx
1415
1416
1417	rorl	$16,%ecx
1418	movl	24(%edi),%esi
1419	movb	%ch,%al
1420	movb	%cl,%bl
1421	rorl	$16,%ecx
1422	xorl	%esi,%edx
1423	movl	72(%edi,%eax,4),%esi
1424	movl	1096(%edi,%ebx,4),%ebp
1425	movb	%ch,%al
1426	movb	%cl,%bl
1427	addl	%ebp,%esi
1428	movl	2120(%edi,%eax,4),%eax
1429	xorl	%eax,%esi
1430	movl	3144(%edi,%ebx,4),%ebp
1431	addl	%ebp,%esi
1432	xorl	%eax,%eax
1433	xorl	%esi,%edx
1434
1435
1436	rorl	$16,%edx
1437	movl	20(%edi),%esi
1438	movb	%dh,%al
1439	movb	%dl,%bl
1440	rorl	$16,%edx
1441	xorl	%esi,%ecx
1442	movl	72(%edi,%eax,4),%esi
1443	movl	1096(%edi,%ebx,4),%ebp
1444	movb	%dh,%al
1445	movb	%dl,%bl
1446	addl	%ebp,%esi
1447	movl	2120(%edi,%eax,4),%eax
1448	xorl	%eax,%esi
1449	movl	3144(%edi,%ebx,4),%ebp
1450	addl	%ebp,%esi
1451	xorl	%eax,%eax
1452	xorl	%esi,%ecx
1453
1454
1455	rorl	$16,%ecx
1456	movl	16(%edi),%esi
1457	movb	%ch,%al
1458	movb	%cl,%bl
1459	rorl	$16,%ecx
1460	xorl	%esi,%edx
1461	movl	72(%edi,%eax,4),%esi
1462	movl	1096(%edi,%ebx,4),%ebp
1463	movb	%ch,%al
1464	movb	%cl,%bl
1465	addl	%ebp,%esi
1466	movl	2120(%edi,%eax,4),%eax
1467	xorl	%eax,%esi
1468	movl	3144(%edi,%ebx,4),%ebp
1469	addl	%ebp,%esi
1470	xorl	%eax,%eax
1471	xorl	%esi,%edx
1472
1473
1474	rorl	$16,%edx
1475	movl	12(%edi),%esi
1476	movb	%dh,%al
1477	movb	%dl,%bl
1478	rorl	$16,%edx
1479	xorl	%esi,%ecx
1480	movl	72(%edi,%eax,4),%esi
1481	movl	1096(%edi,%ebx,4),%ebp
1482	movb	%dh,%al
1483	movb	%dl,%bl
1484	addl	%ebp,%esi
1485	movl	2120(%edi,%eax,4),%eax
1486	xorl	%eax,%esi
1487	movl	3144(%edi,%ebx,4),%ebp
1488	addl	%ebp,%esi
1489	xorl	%eax,%eax
1490	xorl	%esi,%ecx
1491
1492
1493	rorl	$16,%ecx
1494	movl	8(%edi),%esi
1495	movb	%ch,%al
1496	movb	%cl,%bl
1497	rorl	$16,%ecx
1498	xorl	%esi,%edx
1499	movl	72(%edi,%eax,4),%esi
1500	movl	1096(%edi,%ebx,4),%ebp
1501	movb	%ch,%al
1502	movb	%cl,%bl
1503	addl	%ebp,%esi
1504	movl	2120(%edi,%eax,4),%eax
1505	xorl	%eax,%esi
1506	movl	3144(%edi,%ebx,4),%ebp
1507	addl	%ebp,%esi
1508	xorl	%eax,%eax
1509	xorl	%esi,%edx
1510
1511
1512	rorl	$16,%edx
1513	movl	4(%edi),%esi
1514	movb	%dh,%al
1515	movb	%dl,%bl
1516	rorl	$16,%edx
1517	xorl	%esi,%ecx
1518	movl	72(%edi,%eax,4),%esi
1519	movl	1096(%edi,%ebx,4),%ebp
1520	movb	%dh,%al
1521	movb	%dl,%bl
1522	addl	%ebp,%esi
1523	movl	2120(%edi,%eax,4),%eax
1524	xorl	%eax,%esi
1525	movl	3144(%edi,%ebx,4),%ebp
1526	addl	%ebp,%esi
1527	xorl	%eax,%eax
1528	xorl	%esi,%ecx
1529	xorl	(%edi),%edx
1530	movl	20(%esp),%eax
1531	movl	%edx,(%eax)
1532	movl	%ecx,4(%eax)
1533	popl	%edi
1534	popl	%esi
1535	popl	%ebx
1536	popl	%ebp
1537	ret
1538.size	BF_decrypt,.-.L_BF_decrypt_begin
1539.globl	BF_cbc_encrypt
1540.type	BF_cbc_encrypt,@function
1541.align	16
1542BF_cbc_encrypt:
1543.L_BF_cbc_encrypt_begin:
1544
1545	pushl	%ebp
1546	pushl	%ebx
1547	pushl	%esi
1548	pushl	%edi
1549	movl	28(%esp),%ebp
1550
1551	movl	36(%esp),%ebx
1552	movl	(%ebx),%esi
1553	movl	4(%ebx),%edi
1554	pushl	%edi
1555	pushl	%esi
1556	pushl	%edi
1557	pushl	%esi
1558	movl	%esp,%ebx
1559	movl	36(%esp),%esi
1560	movl	40(%esp),%edi
1561
1562	movl	56(%esp),%ecx
1563
1564	movl	48(%esp),%eax
1565	pushl	%eax
1566	pushl	%ebx
1567	cmpl	$0,%ecx
1568	jz	.L000decrypt
1569	andl	$4294967288,%ebp
1570	movl	8(%esp),%eax
1571	movl	12(%esp),%ebx
1572	jz	.L001encrypt_finish
1573.L002encrypt_loop:
1574	movl	(%esi),%ecx
1575	movl	4(%esi),%edx
1576	xorl	%ecx,%eax
1577	xorl	%edx,%ebx
1578	bswap	%eax
1579	bswap	%ebx
1580	movl	%eax,8(%esp)
1581	movl	%ebx,12(%esp)
1582	call	.L_BF_encrypt_begin
1583	movl	8(%esp),%eax
1584	movl	12(%esp),%ebx
1585	bswap	%eax
1586	bswap	%ebx
1587	movl	%eax,(%edi)
1588	movl	%ebx,4(%edi)
1589	addl	$8,%esi
1590	addl	$8,%edi
1591	subl	$8,%ebp
1592	jnz	.L002encrypt_loop
1593.L001encrypt_finish:
1594	movl	52(%esp),%ebp
1595	andl	$7,%ebp
1596	jz	.L003finish
1597	call	.L004PIC_point
1598.L004PIC_point:
1599	popl	%edx
1600	leal	.L005cbc_enc_jmp_table-.L004PIC_point(%edx),%ecx
1601	movl	(%ecx,%ebp,4),%ebp
1602	addl	%edx,%ebp
1603	xorl	%ecx,%ecx
1604	xorl	%edx,%edx
1605	jmp	*%ebp
1606.L006ej7:
1607	movb	6(%esi),%dh
1608	shll	$8,%edx
1609.L007ej6:
1610	movb	5(%esi),%dh
1611.L008ej5:
1612	movb	4(%esi),%dl
1613.L009ej4:
1614	movl	(%esi),%ecx
1615	jmp	.L010ejend
1616.L011ej3:
1617	movb	2(%esi),%ch
1618	shll	$8,%ecx
1619.L012ej2:
1620	movb	1(%esi),%ch
1621.L013ej1:
1622	movb	(%esi),%cl
1623.L010ejend:
1624	xorl	%ecx,%eax
1625	xorl	%edx,%ebx
1626	bswap	%eax
1627	bswap	%ebx
1628	movl	%eax,8(%esp)
1629	movl	%ebx,12(%esp)
1630	call	.L_BF_encrypt_begin
1631	movl	8(%esp),%eax
1632	movl	12(%esp),%ebx
1633	bswap	%eax
1634	bswap	%ebx
1635	movl	%eax,(%edi)
1636	movl	%ebx,4(%edi)
1637	jmp	.L003finish
1638.L000decrypt:
1639	andl	$4294967288,%ebp
1640	movl	16(%esp),%eax
1641	movl	20(%esp),%ebx
1642	jz	.L014decrypt_finish
1643.L015decrypt_loop:
1644	movl	(%esi),%eax
1645	movl	4(%esi),%ebx
1646	bswap	%eax
1647	bswap	%ebx
1648	movl	%eax,8(%esp)
1649	movl	%ebx,12(%esp)
1650	call	.L_BF_decrypt_begin
1651	movl	8(%esp),%eax
1652	movl	12(%esp),%ebx
1653	bswap	%eax
1654	bswap	%ebx
1655	movl	16(%esp),%ecx
1656	movl	20(%esp),%edx
1657	xorl	%eax,%ecx
1658	xorl	%ebx,%edx
1659	movl	(%esi),%eax
1660	movl	4(%esi),%ebx
1661	movl	%ecx,(%edi)
1662	movl	%edx,4(%edi)
1663	movl	%eax,16(%esp)
1664	movl	%ebx,20(%esp)
1665	addl	$8,%esi
1666	addl	$8,%edi
1667	subl	$8,%ebp
1668	jnz	.L015decrypt_loop
1669.L014decrypt_finish:
1670	movl	52(%esp),%ebp
1671	andl	$7,%ebp
1672	jz	.L003finish
1673	movl	(%esi),%eax
1674	movl	4(%esi),%ebx
1675	bswap	%eax
1676	bswap	%ebx
1677	movl	%eax,8(%esp)
1678	movl	%ebx,12(%esp)
1679	call	.L_BF_decrypt_begin
1680	movl	8(%esp),%eax
1681	movl	12(%esp),%ebx
1682	bswap	%eax
1683	bswap	%ebx
1684	movl	16(%esp),%ecx
1685	movl	20(%esp),%edx
1686	xorl	%eax,%ecx
1687	xorl	%ebx,%edx
1688	movl	(%esi),%eax
1689	movl	4(%esi),%ebx
1690.L016dj7:
1691	rorl	$16,%edx
1692	movb	%dl,6(%edi)
1693	shrl	$16,%edx
1694.L017dj6:
1695	movb	%dh,5(%edi)
1696.L018dj5:
1697	movb	%dl,4(%edi)
1698.L019dj4:
1699	movl	%ecx,(%edi)
1700	jmp	.L020djend
1701.L021dj3:
1702	rorl	$16,%ecx
1703	movb	%cl,2(%edi)
1704	shll	$16,%ecx
1705.L022dj2:
1706	movb	%ch,1(%esi)
1707.L023dj1:
1708	movb	%cl,(%esi)
1709.L020djend:
1710	jmp	.L003finish
1711.L003finish:
1712	movl	60(%esp),%ecx
1713	addl	$24,%esp
1714	movl	%eax,(%ecx)
1715	movl	%ebx,4(%ecx)
1716	popl	%edi
1717	popl	%esi
1718	popl	%ebx
1719	popl	%ebp
1720	ret
1721.align	64
1722.L005cbc_enc_jmp_table:
1723.long	0
1724.long	.L013ej1-.L004PIC_point
1725.long	.L012ej2-.L004PIC_point
1726.long	.L011ej3-.L004PIC_point
1727.long	.L009ej4-.L004PIC_point
1728.long	.L008ej5-.L004PIC_point
1729.long	.L007ej6-.L004PIC_point
1730.long	.L006ej7-.L004PIC_point
1731.align	64
1732.size	BF_cbc_encrypt,.-.L_BF_cbc_encrypt_begin
1733#endif
1734