xref: /freebsd/sys/crypto/openssl/i386/bf-586.S (revision d0b2dbfa)
1/* Do not modify. This file is auto-generated from bf-586.pl. */
2#ifdef PIC
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#else
899.text
900.globl	BF_encrypt
901.type	BF_encrypt,@function
902.align	16
903BF_encrypt:
904.L_BF_encrypt_begin:
905
906	pushl	%ebp
907	pushl	%ebx
908	movl	12(%esp),%ebx
909	movl	16(%esp),%ebp
910	pushl	%esi
911	pushl	%edi
912
913	movl	(%ebx),%edi
914	movl	4(%ebx),%esi
915	xorl	%eax,%eax
916	movl	(%ebp),%ebx
917	xorl	%ecx,%ecx
918	xorl	%ebx,%edi
919
920
921	movl	4(%ebp),%edx
922	movl	%edi,%ebx
923	xorl	%edx,%esi
924	shrl	$16,%ebx
925	movl	%edi,%edx
926	movb	%bh,%al
927	andl	$255,%ebx
928	movb	%dh,%cl
929	andl	$255,%edx
930	movl	72(%ebp,%eax,4),%eax
931	movl	1096(%ebp,%ebx,4),%ebx
932	addl	%eax,%ebx
933	movl	2120(%ebp,%ecx,4),%eax
934	xorl	%eax,%ebx
935	movl	3144(%ebp,%edx,4),%edx
936	addl	%edx,%ebx
937	xorl	%eax,%eax
938	xorl	%ebx,%esi
939
940
941	movl	8(%ebp),%edx
942	movl	%esi,%ebx
943	xorl	%edx,%edi
944	shrl	$16,%ebx
945	movl	%esi,%edx
946	movb	%bh,%al
947	andl	$255,%ebx
948	movb	%dh,%cl
949	andl	$255,%edx
950	movl	72(%ebp,%eax,4),%eax
951	movl	1096(%ebp,%ebx,4),%ebx
952	addl	%eax,%ebx
953	movl	2120(%ebp,%ecx,4),%eax
954	xorl	%eax,%ebx
955	movl	3144(%ebp,%edx,4),%edx
956	addl	%edx,%ebx
957	xorl	%eax,%eax
958	xorl	%ebx,%edi
959
960
961	movl	12(%ebp),%edx
962	movl	%edi,%ebx
963	xorl	%edx,%esi
964	shrl	$16,%ebx
965	movl	%edi,%edx
966	movb	%bh,%al
967	andl	$255,%ebx
968	movb	%dh,%cl
969	andl	$255,%edx
970	movl	72(%ebp,%eax,4),%eax
971	movl	1096(%ebp,%ebx,4),%ebx
972	addl	%eax,%ebx
973	movl	2120(%ebp,%ecx,4),%eax
974	xorl	%eax,%ebx
975	movl	3144(%ebp,%edx,4),%edx
976	addl	%edx,%ebx
977	xorl	%eax,%eax
978	xorl	%ebx,%esi
979
980
981	movl	16(%ebp),%edx
982	movl	%esi,%ebx
983	xorl	%edx,%edi
984	shrl	$16,%ebx
985	movl	%esi,%edx
986	movb	%bh,%al
987	andl	$255,%ebx
988	movb	%dh,%cl
989	andl	$255,%edx
990	movl	72(%ebp,%eax,4),%eax
991	movl	1096(%ebp,%ebx,4),%ebx
992	addl	%eax,%ebx
993	movl	2120(%ebp,%ecx,4),%eax
994	xorl	%eax,%ebx
995	movl	3144(%ebp,%edx,4),%edx
996	addl	%edx,%ebx
997	xorl	%eax,%eax
998	xorl	%ebx,%edi
999
1000
1001	movl	20(%ebp),%edx
1002	movl	%edi,%ebx
1003	xorl	%edx,%esi
1004	shrl	$16,%ebx
1005	movl	%edi,%edx
1006	movb	%bh,%al
1007	andl	$255,%ebx
1008	movb	%dh,%cl
1009	andl	$255,%edx
1010	movl	72(%ebp,%eax,4),%eax
1011	movl	1096(%ebp,%ebx,4),%ebx
1012	addl	%eax,%ebx
1013	movl	2120(%ebp,%ecx,4),%eax
1014	xorl	%eax,%ebx
1015	movl	3144(%ebp,%edx,4),%edx
1016	addl	%edx,%ebx
1017	xorl	%eax,%eax
1018	xorl	%ebx,%esi
1019
1020
1021	movl	24(%ebp),%edx
1022	movl	%esi,%ebx
1023	xorl	%edx,%edi
1024	shrl	$16,%ebx
1025	movl	%esi,%edx
1026	movb	%bh,%al
1027	andl	$255,%ebx
1028	movb	%dh,%cl
1029	andl	$255,%edx
1030	movl	72(%ebp,%eax,4),%eax
1031	movl	1096(%ebp,%ebx,4),%ebx
1032	addl	%eax,%ebx
1033	movl	2120(%ebp,%ecx,4),%eax
1034	xorl	%eax,%ebx
1035	movl	3144(%ebp,%edx,4),%edx
1036	addl	%edx,%ebx
1037	xorl	%eax,%eax
1038	xorl	%ebx,%edi
1039
1040
1041	movl	28(%ebp),%edx
1042	movl	%edi,%ebx
1043	xorl	%edx,%esi
1044	shrl	$16,%ebx
1045	movl	%edi,%edx
1046	movb	%bh,%al
1047	andl	$255,%ebx
1048	movb	%dh,%cl
1049	andl	$255,%edx
1050	movl	72(%ebp,%eax,4),%eax
1051	movl	1096(%ebp,%ebx,4),%ebx
1052	addl	%eax,%ebx
1053	movl	2120(%ebp,%ecx,4),%eax
1054	xorl	%eax,%ebx
1055	movl	3144(%ebp,%edx,4),%edx
1056	addl	%edx,%ebx
1057	xorl	%eax,%eax
1058	xorl	%ebx,%esi
1059
1060
1061	movl	32(%ebp),%edx
1062	movl	%esi,%ebx
1063	xorl	%edx,%edi
1064	shrl	$16,%ebx
1065	movl	%esi,%edx
1066	movb	%bh,%al
1067	andl	$255,%ebx
1068	movb	%dh,%cl
1069	andl	$255,%edx
1070	movl	72(%ebp,%eax,4),%eax
1071	movl	1096(%ebp,%ebx,4),%ebx
1072	addl	%eax,%ebx
1073	movl	2120(%ebp,%ecx,4),%eax
1074	xorl	%eax,%ebx
1075	movl	3144(%ebp,%edx,4),%edx
1076	addl	%edx,%ebx
1077	xorl	%eax,%eax
1078	xorl	%ebx,%edi
1079
1080
1081	movl	36(%ebp),%edx
1082	movl	%edi,%ebx
1083	xorl	%edx,%esi
1084	shrl	$16,%ebx
1085	movl	%edi,%edx
1086	movb	%bh,%al
1087	andl	$255,%ebx
1088	movb	%dh,%cl
1089	andl	$255,%edx
1090	movl	72(%ebp,%eax,4),%eax
1091	movl	1096(%ebp,%ebx,4),%ebx
1092	addl	%eax,%ebx
1093	movl	2120(%ebp,%ecx,4),%eax
1094	xorl	%eax,%ebx
1095	movl	3144(%ebp,%edx,4),%edx
1096	addl	%edx,%ebx
1097	xorl	%eax,%eax
1098	xorl	%ebx,%esi
1099
1100
1101	movl	40(%ebp),%edx
1102	movl	%esi,%ebx
1103	xorl	%edx,%edi
1104	shrl	$16,%ebx
1105	movl	%esi,%edx
1106	movb	%bh,%al
1107	andl	$255,%ebx
1108	movb	%dh,%cl
1109	andl	$255,%edx
1110	movl	72(%ebp,%eax,4),%eax
1111	movl	1096(%ebp,%ebx,4),%ebx
1112	addl	%eax,%ebx
1113	movl	2120(%ebp,%ecx,4),%eax
1114	xorl	%eax,%ebx
1115	movl	3144(%ebp,%edx,4),%edx
1116	addl	%edx,%ebx
1117	xorl	%eax,%eax
1118	xorl	%ebx,%edi
1119
1120
1121	movl	44(%ebp),%edx
1122	movl	%edi,%ebx
1123	xorl	%edx,%esi
1124	shrl	$16,%ebx
1125	movl	%edi,%edx
1126	movb	%bh,%al
1127	andl	$255,%ebx
1128	movb	%dh,%cl
1129	andl	$255,%edx
1130	movl	72(%ebp,%eax,4),%eax
1131	movl	1096(%ebp,%ebx,4),%ebx
1132	addl	%eax,%ebx
1133	movl	2120(%ebp,%ecx,4),%eax
1134	xorl	%eax,%ebx
1135	movl	3144(%ebp,%edx,4),%edx
1136	addl	%edx,%ebx
1137	xorl	%eax,%eax
1138	xorl	%ebx,%esi
1139
1140
1141	movl	48(%ebp),%edx
1142	movl	%esi,%ebx
1143	xorl	%edx,%edi
1144	shrl	$16,%ebx
1145	movl	%esi,%edx
1146	movb	%bh,%al
1147	andl	$255,%ebx
1148	movb	%dh,%cl
1149	andl	$255,%edx
1150	movl	72(%ebp,%eax,4),%eax
1151	movl	1096(%ebp,%ebx,4),%ebx
1152	addl	%eax,%ebx
1153	movl	2120(%ebp,%ecx,4),%eax
1154	xorl	%eax,%ebx
1155	movl	3144(%ebp,%edx,4),%edx
1156	addl	%edx,%ebx
1157	xorl	%eax,%eax
1158	xorl	%ebx,%edi
1159
1160
1161	movl	52(%ebp),%edx
1162	movl	%edi,%ebx
1163	xorl	%edx,%esi
1164	shrl	$16,%ebx
1165	movl	%edi,%edx
1166	movb	%bh,%al
1167	andl	$255,%ebx
1168	movb	%dh,%cl
1169	andl	$255,%edx
1170	movl	72(%ebp,%eax,4),%eax
1171	movl	1096(%ebp,%ebx,4),%ebx
1172	addl	%eax,%ebx
1173	movl	2120(%ebp,%ecx,4),%eax
1174	xorl	%eax,%ebx
1175	movl	3144(%ebp,%edx,4),%edx
1176	addl	%edx,%ebx
1177	xorl	%eax,%eax
1178	xorl	%ebx,%esi
1179
1180
1181	movl	56(%ebp),%edx
1182	movl	%esi,%ebx
1183	xorl	%edx,%edi
1184	shrl	$16,%ebx
1185	movl	%esi,%edx
1186	movb	%bh,%al
1187	andl	$255,%ebx
1188	movb	%dh,%cl
1189	andl	$255,%edx
1190	movl	72(%ebp,%eax,4),%eax
1191	movl	1096(%ebp,%ebx,4),%ebx
1192	addl	%eax,%ebx
1193	movl	2120(%ebp,%ecx,4),%eax
1194	xorl	%eax,%ebx
1195	movl	3144(%ebp,%edx,4),%edx
1196	addl	%edx,%ebx
1197	xorl	%eax,%eax
1198	xorl	%ebx,%edi
1199
1200
1201	movl	60(%ebp),%edx
1202	movl	%edi,%ebx
1203	xorl	%edx,%esi
1204	shrl	$16,%ebx
1205	movl	%edi,%edx
1206	movb	%bh,%al
1207	andl	$255,%ebx
1208	movb	%dh,%cl
1209	andl	$255,%edx
1210	movl	72(%ebp,%eax,4),%eax
1211	movl	1096(%ebp,%ebx,4),%ebx
1212	addl	%eax,%ebx
1213	movl	2120(%ebp,%ecx,4),%eax
1214	xorl	%eax,%ebx
1215	movl	3144(%ebp,%edx,4),%edx
1216	addl	%edx,%ebx
1217	xorl	%eax,%eax
1218	xorl	%ebx,%esi
1219
1220
1221	movl	64(%ebp),%edx
1222	movl	%esi,%ebx
1223	xorl	%edx,%edi
1224	shrl	$16,%ebx
1225	movl	%esi,%edx
1226	movb	%bh,%al
1227	andl	$255,%ebx
1228	movb	%dh,%cl
1229	andl	$255,%edx
1230	movl	72(%ebp,%eax,4),%eax
1231	movl	1096(%ebp,%ebx,4),%ebx
1232	addl	%eax,%ebx
1233	movl	2120(%ebp,%ecx,4),%eax
1234	xorl	%eax,%ebx
1235	movl	3144(%ebp,%edx,4),%edx
1236	addl	%edx,%ebx
1237
1238	movl	20(%esp),%eax
1239	xorl	%ebx,%edi
1240	movl	68(%ebp),%edx
1241	xorl	%edx,%esi
1242	movl	%edi,4(%eax)
1243	movl	%esi,(%eax)
1244	popl	%edi
1245	popl	%esi
1246	popl	%ebx
1247	popl	%ebp
1248	ret
1249.size	BF_encrypt,.-.L_BF_encrypt_begin
1250.globl	BF_decrypt
1251.type	BF_decrypt,@function
1252.align	16
1253BF_decrypt:
1254.L_BF_decrypt_begin:
1255
1256	pushl	%ebp
1257	pushl	%ebx
1258	movl	12(%esp),%ebx
1259	movl	16(%esp),%ebp
1260	pushl	%esi
1261	pushl	%edi
1262
1263	movl	(%ebx),%edi
1264	movl	4(%ebx),%esi
1265	xorl	%eax,%eax
1266	movl	68(%ebp),%ebx
1267	xorl	%ecx,%ecx
1268	xorl	%ebx,%edi
1269
1270
1271	movl	64(%ebp),%edx
1272	movl	%edi,%ebx
1273	xorl	%edx,%esi
1274	shrl	$16,%ebx
1275	movl	%edi,%edx
1276	movb	%bh,%al
1277	andl	$255,%ebx
1278	movb	%dh,%cl
1279	andl	$255,%edx
1280	movl	72(%ebp,%eax,4),%eax
1281	movl	1096(%ebp,%ebx,4),%ebx
1282	addl	%eax,%ebx
1283	movl	2120(%ebp,%ecx,4),%eax
1284	xorl	%eax,%ebx
1285	movl	3144(%ebp,%edx,4),%edx
1286	addl	%edx,%ebx
1287	xorl	%eax,%eax
1288	xorl	%ebx,%esi
1289
1290
1291	movl	60(%ebp),%edx
1292	movl	%esi,%ebx
1293	xorl	%edx,%edi
1294	shrl	$16,%ebx
1295	movl	%esi,%edx
1296	movb	%bh,%al
1297	andl	$255,%ebx
1298	movb	%dh,%cl
1299	andl	$255,%edx
1300	movl	72(%ebp,%eax,4),%eax
1301	movl	1096(%ebp,%ebx,4),%ebx
1302	addl	%eax,%ebx
1303	movl	2120(%ebp,%ecx,4),%eax
1304	xorl	%eax,%ebx
1305	movl	3144(%ebp,%edx,4),%edx
1306	addl	%edx,%ebx
1307	xorl	%eax,%eax
1308	xorl	%ebx,%edi
1309
1310
1311	movl	56(%ebp),%edx
1312	movl	%edi,%ebx
1313	xorl	%edx,%esi
1314	shrl	$16,%ebx
1315	movl	%edi,%edx
1316	movb	%bh,%al
1317	andl	$255,%ebx
1318	movb	%dh,%cl
1319	andl	$255,%edx
1320	movl	72(%ebp,%eax,4),%eax
1321	movl	1096(%ebp,%ebx,4),%ebx
1322	addl	%eax,%ebx
1323	movl	2120(%ebp,%ecx,4),%eax
1324	xorl	%eax,%ebx
1325	movl	3144(%ebp,%edx,4),%edx
1326	addl	%edx,%ebx
1327	xorl	%eax,%eax
1328	xorl	%ebx,%esi
1329
1330
1331	movl	52(%ebp),%edx
1332	movl	%esi,%ebx
1333	xorl	%edx,%edi
1334	shrl	$16,%ebx
1335	movl	%esi,%edx
1336	movb	%bh,%al
1337	andl	$255,%ebx
1338	movb	%dh,%cl
1339	andl	$255,%edx
1340	movl	72(%ebp,%eax,4),%eax
1341	movl	1096(%ebp,%ebx,4),%ebx
1342	addl	%eax,%ebx
1343	movl	2120(%ebp,%ecx,4),%eax
1344	xorl	%eax,%ebx
1345	movl	3144(%ebp,%edx,4),%edx
1346	addl	%edx,%ebx
1347	xorl	%eax,%eax
1348	xorl	%ebx,%edi
1349
1350
1351	movl	48(%ebp),%edx
1352	movl	%edi,%ebx
1353	xorl	%edx,%esi
1354	shrl	$16,%ebx
1355	movl	%edi,%edx
1356	movb	%bh,%al
1357	andl	$255,%ebx
1358	movb	%dh,%cl
1359	andl	$255,%edx
1360	movl	72(%ebp,%eax,4),%eax
1361	movl	1096(%ebp,%ebx,4),%ebx
1362	addl	%eax,%ebx
1363	movl	2120(%ebp,%ecx,4),%eax
1364	xorl	%eax,%ebx
1365	movl	3144(%ebp,%edx,4),%edx
1366	addl	%edx,%ebx
1367	xorl	%eax,%eax
1368	xorl	%ebx,%esi
1369
1370
1371	movl	44(%ebp),%edx
1372	movl	%esi,%ebx
1373	xorl	%edx,%edi
1374	shrl	$16,%ebx
1375	movl	%esi,%edx
1376	movb	%bh,%al
1377	andl	$255,%ebx
1378	movb	%dh,%cl
1379	andl	$255,%edx
1380	movl	72(%ebp,%eax,4),%eax
1381	movl	1096(%ebp,%ebx,4),%ebx
1382	addl	%eax,%ebx
1383	movl	2120(%ebp,%ecx,4),%eax
1384	xorl	%eax,%ebx
1385	movl	3144(%ebp,%edx,4),%edx
1386	addl	%edx,%ebx
1387	xorl	%eax,%eax
1388	xorl	%ebx,%edi
1389
1390
1391	movl	40(%ebp),%edx
1392	movl	%edi,%ebx
1393	xorl	%edx,%esi
1394	shrl	$16,%ebx
1395	movl	%edi,%edx
1396	movb	%bh,%al
1397	andl	$255,%ebx
1398	movb	%dh,%cl
1399	andl	$255,%edx
1400	movl	72(%ebp,%eax,4),%eax
1401	movl	1096(%ebp,%ebx,4),%ebx
1402	addl	%eax,%ebx
1403	movl	2120(%ebp,%ecx,4),%eax
1404	xorl	%eax,%ebx
1405	movl	3144(%ebp,%edx,4),%edx
1406	addl	%edx,%ebx
1407	xorl	%eax,%eax
1408	xorl	%ebx,%esi
1409
1410
1411	movl	36(%ebp),%edx
1412	movl	%esi,%ebx
1413	xorl	%edx,%edi
1414	shrl	$16,%ebx
1415	movl	%esi,%edx
1416	movb	%bh,%al
1417	andl	$255,%ebx
1418	movb	%dh,%cl
1419	andl	$255,%edx
1420	movl	72(%ebp,%eax,4),%eax
1421	movl	1096(%ebp,%ebx,4),%ebx
1422	addl	%eax,%ebx
1423	movl	2120(%ebp,%ecx,4),%eax
1424	xorl	%eax,%ebx
1425	movl	3144(%ebp,%edx,4),%edx
1426	addl	%edx,%ebx
1427	xorl	%eax,%eax
1428	xorl	%ebx,%edi
1429
1430
1431	movl	32(%ebp),%edx
1432	movl	%edi,%ebx
1433	xorl	%edx,%esi
1434	shrl	$16,%ebx
1435	movl	%edi,%edx
1436	movb	%bh,%al
1437	andl	$255,%ebx
1438	movb	%dh,%cl
1439	andl	$255,%edx
1440	movl	72(%ebp,%eax,4),%eax
1441	movl	1096(%ebp,%ebx,4),%ebx
1442	addl	%eax,%ebx
1443	movl	2120(%ebp,%ecx,4),%eax
1444	xorl	%eax,%ebx
1445	movl	3144(%ebp,%edx,4),%edx
1446	addl	%edx,%ebx
1447	xorl	%eax,%eax
1448	xorl	%ebx,%esi
1449
1450
1451	movl	28(%ebp),%edx
1452	movl	%esi,%ebx
1453	xorl	%edx,%edi
1454	shrl	$16,%ebx
1455	movl	%esi,%edx
1456	movb	%bh,%al
1457	andl	$255,%ebx
1458	movb	%dh,%cl
1459	andl	$255,%edx
1460	movl	72(%ebp,%eax,4),%eax
1461	movl	1096(%ebp,%ebx,4),%ebx
1462	addl	%eax,%ebx
1463	movl	2120(%ebp,%ecx,4),%eax
1464	xorl	%eax,%ebx
1465	movl	3144(%ebp,%edx,4),%edx
1466	addl	%edx,%ebx
1467	xorl	%eax,%eax
1468	xorl	%ebx,%edi
1469
1470
1471	movl	24(%ebp),%edx
1472	movl	%edi,%ebx
1473	xorl	%edx,%esi
1474	shrl	$16,%ebx
1475	movl	%edi,%edx
1476	movb	%bh,%al
1477	andl	$255,%ebx
1478	movb	%dh,%cl
1479	andl	$255,%edx
1480	movl	72(%ebp,%eax,4),%eax
1481	movl	1096(%ebp,%ebx,4),%ebx
1482	addl	%eax,%ebx
1483	movl	2120(%ebp,%ecx,4),%eax
1484	xorl	%eax,%ebx
1485	movl	3144(%ebp,%edx,4),%edx
1486	addl	%edx,%ebx
1487	xorl	%eax,%eax
1488	xorl	%ebx,%esi
1489
1490
1491	movl	20(%ebp),%edx
1492	movl	%esi,%ebx
1493	xorl	%edx,%edi
1494	shrl	$16,%ebx
1495	movl	%esi,%edx
1496	movb	%bh,%al
1497	andl	$255,%ebx
1498	movb	%dh,%cl
1499	andl	$255,%edx
1500	movl	72(%ebp,%eax,4),%eax
1501	movl	1096(%ebp,%ebx,4),%ebx
1502	addl	%eax,%ebx
1503	movl	2120(%ebp,%ecx,4),%eax
1504	xorl	%eax,%ebx
1505	movl	3144(%ebp,%edx,4),%edx
1506	addl	%edx,%ebx
1507	xorl	%eax,%eax
1508	xorl	%ebx,%edi
1509
1510
1511	movl	16(%ebp),%edx
1512	movl	%edi,%ebx
1513	xorl	%edx,%esi
1514	shrl	$16,%ebx
1515	movl	%edi,%edx
1516	movb	%bh,%al
1517	andl	$255,%ebx
1518	movb	%dh,%cl
1519	andl	$255,%edx
1520	movl	72(%ebp,%eax,4),%eax
1521	movl	1096(%ebp,%ebx,4),%ebx
1522	addl	%eax,%ebx
1523	movl	2120(%ebp,%ecx,4),%eax
1524	xorl	%eax,%ebx
1525	movl	3144(%ebp,%edx,4),%edx
1526	addl	%edx,%ebx
1527	xorl	%eax,%eax
1528	xorl	%ebx,%esi
1529
1530
1531	movl	12(%ebp),%edx
1532	movl	%esi,%ebx
1533	xorl	%edx,%edi
1534	shrl	$16,%ebx
1535	movl	%esi,%edx
1536	movb	%bh,%al
1537	andl	$255,%ebx
1538	movb	%dh,%cl
1539	andl	$255,%edx
1540	movl	72(%ebp,%eax,4),%eax
1541	movl	1096(%ebp,%ebx,4),%ebx
1542	addl	%eax,%ebx
1543	movl	2120(%ebp,%ecx,4),%eax
1544	xorl	%eax,%ebx
1545	movl	3144(%ebp,%edx,4),%edx
1546	addl	%edx,%ebx
1547	xorl	%eax,%eax
1548	xorl	%ebx,%edi
1549
1550
1551	movl	8(%ebp),%edx
1552	movl	%edi,%ebx
1553	xorl	%edx,%esi
1554	shrl	$16,%ebx
1555	movl	%edi,%edx
1556	movb	%bh,%al
1557	andl	$255,%ebx
1558	movb	%dh,%cl
1559	andl	$255,%edx
1560	movl	72(%ebp,%eax,4),%eax
1561	movl	1096(%ebp,%ebx,4),%ebx
1562	addl	%eax,%ebx
1563	movl	2120(%ebp,%ecx,4),%eax
1564	xorl	%eax,%ebx
1565	movl	3144(%ebp,%edx,4),%edx
1566	addl	%edx,%ebx
1567	xorl	%eax,%eax
1568	xorl	%ebx,%esi
1569
1570
1571	movl	4(%ebp),%edx
1572	movl	%esi,%ebx
1573	xorl	%edx,%edi
1574	shrl	$16,%ebx
1575	movl	%esi,%edx
1576	movb	%bh,%al
1577	andl	$255,%ebx
1578	movb	%dh,%cl
1579	andl	$255,%edx
1580	movl	72(%ebp,%eax,4),%eax
1581	movl	1096(%ebp,%ebx,4),%ebx
1582	addl	%eax,%ebx
1583	movl	2120(%ebp,%ecx,4),%eax
1584	xorl	%eax,%ebx
1585	movl	3144(%ebp,%edx,4),%edx
1586	addl	%edx,%ebx
1587
1588	movl	20(%esp),%eax
1589	xorl	%ebx,%edi
1590	movl	(%ebp),%edx
1591	xorl	%edx,%esi
1592	movl	%edi,4(%eax)
1593	movl	%esi,(%eax)
1594	popl	%edi
1595	popl	%esi
1596	popl	%ebx
1597	popl	%ebp
1598	ret
1599.size	BF_decrypt,.-.L_BF_decrypt_begin
1600.globl	BF_cbc_encrypt
1601.type	BF_cbc_encrypt,@function
1602.align	16
1603BF_cbc_encrypt:
1604.L_BF_cbc_encrypt_begin:
1605
1606	pushl	%ebp
1607	pushl	%ebx
1608	pushl	%esi
1609	pushl	%edi
1610	movl	28(%esp),%ebp
1611
1612	movl	36(%esp),%ebx
1613	movl	(%ebx),%esi
1614	movl	4(%ebx),%edi
1615	pushl	%edi
1616	pushl	%esi
1617	pushl	%edi
1618	pushl	%esi
1619	movl	%esp,%ebx
1620	movl	36(%esp),%esi
1621	movl	40(%esp),%edi
1622
1623	movl	56(%esp),%ecx
1624
1625	movl	48(%esp),%eax
1626	pushl	%eax
1627	pushl	%ebx
1628	cmpl	$0,%ecx
1629	jz	.L000decrypt
1630	andl	$4294967288,%ebp
1631	movl	8(%esp),%eax
1632	movl	12(%esp),%ebx
1633	jz	.L001encrypt_finish
1634.L002encrypt_loop:
1635	movl	(%esi),%ecx
1636	movl	4(%esi),%edx
1637	xorl	%ecx,%eax
1638	xorl	%edx,%ebx
1639	bswap	%eax
1640	bswap	%ebx
1641	movl	%eax,8(%esp)
1642	movl	%ebx,12(%esp)
1643	call	.L_BF_encrypt_begin
1644	movl	8(%esp),%eax
1645	movl	12(%esp),%ebx
1646	bswap	%eax
1647	bswap	%ebx
1648	movl	%eax,(%edi)
1649	movl	%ebx,4(%edi)
1650	addl	$8,%esi
1651	addl	$8,%edi
1652	subl	$8,%ebp
1653	jnz	.L002encrypt_loop
1654.L001encrypt_finish:
1655	movl	52(%esp),%ebp
1656	andl	$7,%ebp
1657	jz	.L003finish
1658	call	.L004PIC_point
1659.L004PIC_point:
1660	popl	%edx
1661	leal	.L005cbc_enc_jmp_table-.L004PIC_point(%edx),%ecx
1662	movl	(%ecx,%ebp,4),%ebp
1663	addl	%edx,%ebp
1664	xorl	%ecx,%ecx
1665	xorl	%edx,%edx
1666	jmp	*%ebp
1667.L006ej7:
1668	movb	6(%esi),%dh
1669	shll	$8,%edx
1670.L007ej6:
1671	movb	5(%esi),%dh
1672.L008ej5:
1673	movb	4(%esi),%dl
1674.L009ej4:
1675	movl	(%esi),%ecx
1676	jmp	.L010ejend
1677.L011ej3:
1678	movb	2(%esi),%ch
1679	shll	$8,%ecx
1680.L012ej2:
1681	movb	1(%esi),%ch
1682.L013ej1:
1683	movb	(%esi),%cl
1684.L010ejend:
1685	xorl	%ecx,%eax
1686	xorl	%edx,%ebx
1687	bswap	%eax
1688	bswap	%ebx
1689	movl	%eax,8(%esp)
1690	movl	%ebx,12(%esp)
1691	call	.L_BF_encrypt_begin
1692	movl	8(%esp),%eax
1693	movl	12(%esp),%ebx
1694	bswap	%eax
1695	bswap	%ebx
1696	movl	%eax,(%edi)
1697	movl	%ebx,4(%edi)
1698	jmp	.L003finish
1699.L000decrypt:
1700	andl	$4294967288,%ebp
1701	movl	16(%esp),%eax
1702	movl	20(%esp),%ebx
1703	jz	.L014decrypt_finish
1704.L015decrypt_loop:
1705	movl	(%esi),%eax
1706	movl	4(%esi),%ebx
1707	bswap	%eax
1708	bswap	%ebx
1709	movl	%eax,8(%esp)
1710	movl	%ebx,12(%esp)
1711	call	.L_BF_decrypt_begin
1712	movl	8(%esp),%eax
1713	movl	12(%esp),%ebx
1714	bswap	%eax
1715	bswap	%ebx
1716	movl	16(%esp),%ecx
1717	movl	20(%esp),%edx
1718	xorl	%eax,%ecx
1719	xorl	%ebx,%edx
1720	movl	(%esi),%eax
1721	movl	4(%esi),%ebx
1722	movl	%ecx,(%edi)
1723	movl	%edx,4(%edi)
1724	movl	%eax,16(%esp)
1725	movl	%ebx,20(%esp)
1726	addl	$8,%esi
1727	addl	$8,%edi
1728	subl	$8,%ebp
1729	jnz	.L015decrypt_loop
1730.L014decrypt_finish:
1731	movl	52(%esp),%ebp
1732	andl	$7,%ebp
1733	jz	.L003finish
1734	movl	(%esi),%eax
1735	movl	4(%esi),%ebx
1736	bswap	%eax
1737	bswap	%ebx
1738	movl	%eax,8(%esp)
1739	movl	%ebx,12(%esp)
1740	call	.L_BF_decrypt_begin
1741	movl	8(%esp),%eax
1742	movl	12(%esp),%ebx
1743	bswap	%eax
1744	bswap	%ebx
1745	movl	16(%esp),%ecx
1746	movl	20(%esp),%edx
1747	xorl	%eax,%ecx
1748	xorl	%ebx,%edx
1749	movl	(%esi),%eax
1750	movl	4(%esi),%ebx
1751.L016dj7:
1752	rorl	$16,%edx
1753	movb	%dl,6(%edi)
1754	shrl	$16,%edx
1755.L017dj6:
1756	movb	%dh,5(%edi)
1757.L018dj5:
1758	movb	%dl,4(%edi)
1759.L019dj4:
1760	movl	%ecx,(%edi)
1761	jmp	.L020djend
1762.L021dj3:
1763	rorl	$16,%ecx
1764	movb	%cl,2(%edi)
1765	shll	$16,%ecx
1766.L022dj2:
1767	movb	%ch,1(%esi)
1768.L023dj1:
1769	movb	%cl,(%esi)
1770.L020djend:
1771	jmp	.L003finish
1772.L003finish:
1773	movl	60(%esp),%ecx
1774	addl	$24,%esp
1775	movl	%eax,(%ecx)
1776	movl	%ebx,4(%ecx)
1777	popl	%edi
1778	popl	%esi
1779	popl	%ebx
1780	popl	%ebp
1781	ret
1782.align	64
1783.L005cbc_enc_jmp_table:
1784.long	0
1785.long	.L013ej1-.L004PIC_point
1786.long	.L012ej2-.L004PIC_point
1787.long	.L011ej3-.L004PIC_point
1788.long	.L009ej4-.L004PIC_point
1789.long	.L008ej5-.L004PIC_point
1790.long	.L007ej6-.L004PIC_point
1791.long	.L006ej7-.L004PIC_point
1792.align	64
1793.size	BF_cbc_encrypt,.-.L_BF_cbc_encrypt_begin
1794#endif
1795