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