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