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