1#include <machine/asm.h>
2.text
3.globl	BF_encrypt
4.type	BF_encrypt,@function
5.align	16
6BF_encrypt:
7.L_BF_encrypt_begin:
8	pushl	%ebp
9	pushl	%ebx
10	pushl	%esi
11	pushl	%edi
12
13
14	movl	20(%esp),%eax
15	movl	(%eax),%ecx
16	movl	4(%eax),%edx
17
18
19	movl	24(%esp),%edi
20	xorl	%eax,%eax
21	xorl	%ebx,%ebx
22	xorl	(%edi),%ecx
23
24
25	rorl	$16,%ecx
26	movl	4(%edi),%esi
27	movb	%ch,%al
28	movb	%cl,%bl
29	rorl	$16,%ecx
30	xorl	%esi,%edx
31	movl	72(%edi,%eax,4),%esi
32	movl	1096(%edi,%ebx,4),%ebp
33	movb	%ch,%al
34	movb	%cl,%bl
35	addl	%ebp,%esi
36	movl	2120(%edi,%eax,4),%eax
37	xorl	%eax,%esi
38	movl	3144(%edi,%ebx,4),%ebp
39	addl	%ebp,%esi
40	xorl	%eax,%eax
41	xorl	%esi,%edx
42
43
44	rorl	$16,%edx
45	movl	8(%edi),%esi
46	movb	%dh,%al
47	movb	%dl,%bl
48	rorl	$16,%edx
49	xorl	%esi,%ecx
50	movl	72(%edi,%eax,4),%esi
51	movl	1096(%edi,%ebx,4),%ebp
52	movb	%dh,%al
53	movb	%dl,%bl
54	addl	%ebp,%esi
55	movl	2120(%edi,%eax,4),%eax
56	xorl	%eax,%esi
57	movl	3144(%edi,%ebx,4),%ebp
58	addl	%ebp,%esi
59	xorl	%eax,%eax
60	xorl	%esi,%ecx
61
62
63	rorl	$16,%ecx
64	movl	12(%edi),%esi
65	movb	%ch,%al
66	movb	%cl,%bl
67	rorl	$16,%ecx
68	xorl	%esi,%edx
69	movl	72(%edi,%eax,4),%esi
70	movl	1096(%edi,%ebx,4),%ebp
71	movb	%ch,%al
72	movb	%cl,%bl
73	addl	%ebp,%esi
74	movl	2120(%edi,%eax,4),%eax
75	xorl	%eax,%esi
76	movl	3144(%edi,%ebx,4),%ebp
77	addl	%ebp,%esi
78	xorl	%eax,%eax
79	xorl	%esi,%edx
80
81
82	rorl	$16,%edx
83	movl	16(%edi),%esi
84	movb	%dh,%al
85	movb	%dl,%bl
86	rorl	$16,%edx
87	xorl	%esi,%ecx
88	movl	72(%edi,%eax,4),%esi
89	movl	1096(%edi,%ebx,4),%ebp
90	movb	%dh,%al
91	movb	%dl,%bl
92	addl	%ebp,%esi
93	movl	2120(%edi,%eax,4),%eax
94	xorl	%eax,%esi
95	movl	3144(%edi,%ebx,4),%ebp
96	addl	%ebp,%esi
97	xorl	%eax,%eax
98	xorl	%esi,%ecx
99
100
101	rorl	$16,%ecx
102	movl	20(%edi),%esi
103	movb	%ch,%al
104	movb	%cl,%bl
105	rorl	$16,%ecx
106	xorl	%esi,%edx
107	movl	72(%edi,%eax,4),%esi
108	movl	1096(%edi,%ebx,4),%ebp
109	movb	%ch,%al
110	movb	%cl,%bl
111	addl	%ebp,%esi
112	movl	2120(%edi,%eax,4),%eax
113	xorl	%eax,%esi
114	movl	3144(%edi,%ebx,4),%ebp
115	addl	%ebp,%esi
116	xorl	%eax,%eax
117	xorl	%esi,%edx
118
119
120	rorl	$16,%edx
121	movl	24(%edi),%esi
122	movb	%dh,%al
123	movb	%dl,%bl
124	rorl	$16,%edx
125	xorl	%esi,%ecx
126	movl	72(%edi,%eax,4),%esi
127	movl	1096(%edi,%ebx,4),%ebp
128	movb	%dh,%al
129	movb	%dl,%bl
130	addl	%ebp,%esi
131	movl	2120(%edi,%eax,4),%eax
132	xorl	%eax,%esi
133	movl	3144(%edi,%ebx,4),%ebp
134	addl	%ebp,%esi
135	xorl	%eax,%eax
136	xorl	%esi,%ecx
137
138
139	rorl	$16,%ecx
140	movl	28(%edi),%esi
141	movb	%ch,%al
142	movb	%cl,%bl
143	rorl	$16,%ecx
144	xorl	%esi,%edx
145	movl	72(%edi,%eax,4),%esi
146	movl	1096(%edi,%ebx,4),%ebp
147	movb	%ch,%al
148	movb	%cl,%bl
149	addl	%ebp,%esi
150	movl	2120(%edi,%eax,4),%eax
151	xorl	%eax,%esi
152	movl	3144(%edi,%ebx,4),%ebp
153	addl	%ebp,%esi
154	xorl	%eax,%eax
155	xorl	%esi,%edx
156
157
158	rorl	$16,%edx
159	movl	32(%edi),%esi
160	movb	%dh,%al
161	movb	%dl,%bl
162	rorl	$16,%edx
163	xorl	%esi,%ecx
164	movl	72(%edi,%eax,4),%esi
165	movl	1096(%edi,%ebx,4),%ebp
166	movb	%dh,%al
167	movb	%dl,%bl
168	addl	%ebp,%esi
169	movl	2120(%edi,%eax,4),%eax
170	xorl	%eax,%esi
171	movl	3144(%edi,%ebx,4),%ebp
172	addl	%ebp,%esi
173	xorl	%eax,%eax
174	xorl	%esi,%ecx
175
176
177	rorl	$16,%ecx
178	movl	36(%edi),%esi
179	movb	%ch,%al
180	movb	%cl,%bl
181	rorl	$16,%ecx
182	xorl	%esi,%edx
183	movl	72(%edi,%eax,4),%esi
184	movl	1096(%edi,%ebx,4),%ebp
185	movb	%ch,%al
186	movb	%cl,%bl
187	addl	%ebp,%esi
188	movl	2120(%edi,%eax,4),%eax
189	xorl	%eax,%esi
190	movl	3144(%edi,%ebx,4),%ebp
191	addl	%ebp,%esi
192	xorl	%eax,%eax
193	xorl	%esi,%edx
194
195
196	rorl	$16,%edx
197	movl	40(%edi),%esi
198	movb	%dh,%al
199	movb	%dl,%bl
200	rorl	$16,%edx
201	xorl	%esi,%ecx
202	movl	72(%edi,%eax,4),%esi
203	movl	1096(%edi,%ebx,4),%ebp
204	movb	%dh,%al
205	movb	%dl,%bl
206	addl	%ebp,%esi
207	movl	2120(%edi,%eax,4),%eax
208	xorl	%eax,%esi
209	movl	3144(%edi,%ebx,4),%ebp
210	addl	%ebp,%esi
211	xorl	%eax,%eax
212	xorl	%esi,%ecx
213
214
215	rorl	$16,%ecx
216	movl	44(%edi),%esi
217	movb	%ch,%al
218	movb	%cl,%bl
219	rorl	$16,%ecx
220	xorl	%esi,%edx
221	movl	72(%edi,%eax,4),%esi
222	movl	1096(%edi,%ebx,4),%ebp
223	movb	%ch,%al
224	movb	%cl,%bl
225	addl	%ebp,%esi
226	movl	2120(%edi,%eax,4),%eax
227	xorl	%eax,%esi
228	movl	3144(%edi,%ebx,4),%ebp
229	addl	%ebp,%esi
230	xorl	%eax,%eax
231	xorl	%esi,%edx
232
233
234	rorl	$16,%edx
235	movl	48(%edi),%esi
236	movb	%dh,%al
237	movb	%dl,%bl
238	rorl	$16,%edx
239	xorl	%esi,%ecx
240	movl	72(%edi,%eax,4),%esi
241	movl	1096(%edi,%ebx,4),%ebp
242	movb	%dh,%al
243	movb	%dl,%bl
244	addl	%ebp,%esi
245	movl	2120(%edi,%eax,4),%eax
246	xorl	%eax,%esi
247	movl	3144(%edi,%ebx,4),%ebp
248	addl	%ebp,%esi
249	xorl	%eax,%eax
250	xorl	%esi,%ecx
251
252
253	rorl	$16,%ecx
254	movl	52(%edi),%esi
255	movb	%ch,%al
256	movb	%cl,%bl
257	rorl	$16,%ecx
258	xorl	%esi,%edx
259	movl	72(%edi,%eax,4),%esi
260	movl	1096(%edi,%ebx,4),%ebp
261	movb	%ch,%al
262	movb	%cl,%bl
263	addl	%ebp,%esi
264	movl	2120(%edi,%eax,4),%eax
265	xorl	%eax,%esi
266	movl	3144(%edi,%ebx,4),%ebp
267	addl	%ebp,%esi
268	xorl	%eax,%eax
269	xorl	%esi,%edx
270
271
272	rorl	$16,%edx
273	movl	56(%edi),%esi
274	movb	%dh,%al
275	movb	%dl,%bl
276	rorl	$16,%edx
277	xorl	%esi,%ecx
278	movl	72(%edi,%eax,4),%esi
279	movl	1096(%edi,%ebx,4),%ebp
280	movb	%dh,%al
281	movb	%dl,%bl
282	addl	%ebp,%esi
283	movl	2120(%edi,%eax,4),%eax
284	xorl	%eax,%esi
285	movl	3144(%edi,%ebx,4),%ebp
286	addl	%ebp,%esi
287	xorl	%eax,%eax
288	xorl	%esi,%ecx
289
290
291	rorl	$16,%ecx
292	movl	60(%edi),%esi
293	movb	%ch,%al
294	movb	%cl,%bl
295	rorl	$16,%ecx
296	xorl	%esi,%edx
297	movl	72(%edi,%eax,4),%esi
298	movl	1096(%edi,%ebx,4),%ebp
299	movb	%ch,%al
300	movb	%cl,%bl
301	addl	%ebp,%esi
302	movl	2120(%edi,%eax,4),%eax
303	xorl	%eax,%esi
304	movl	3144(%edi,%ebx,4),%ebp
305	addl	%ebp,%esi
306	xorl	%eax,%eax
307	xorl	%esi,%edx
308
309
310	rorl	$16,%edx
311	movl	64(%edi),%esi
312	movb	%dh,%al
313	movb	%dl,%bl
314	rorl	$16,%edx
315	xorl	%esi,%ecx
316	movl	72(%edi,%eax,4),%esi
317	movl	1096(%edi,%ebx,4),%ebp
318	movb	%dh,%al
319	movb	%dl,%bl
320	addl	%ebp,%esi
321	movl	2120(%edi,%eax,4),%eax
322	xorl	%eax,%esi
323	movl	3144(%edi,%ebx,4),%ebp
324	addl	%ebp,%esi
325	xorl	%eax,%eax
326	xorl	%esi,%ecx
327	xorl	68(%edi),%edx
328	movl	20(%esp),%eax
329	movl	%edx,(%eax)
330	movl	%ecx,4(%eax)
331	popl	%edi
332	popl	%esi
333	popl	%ebx
334	popl	%ebp
335	ret
336.size	BF_encrypt,.-.L_BF_encrypt_begin
337.globl	BF_decrypt
338.type	BF_decrypt,@function
339.align	16
340BF_decrypt:
341.L_BF_decrypt_begin:
342	pushl	%ebp
343	pushl	%ebx
344	pushl	%esi
345	pushl	%edi
346
347
348	movl	20(%esp),%eax
349	movl	(%eax),%ecx
350	movl	4(%eax),%edx
351
352
353	movl	24(%esp),%edi
354	xorl	%eax,%eax
355	xorl	%ebx,%ebx
356	xorl	68(%edi),%ecx
357
358
359	rorl	$16,%ecx
360	movl	64(%edi),%esi
361	movb	%ch,%al
362	movb	%cl,%bl
363	rorl	$16,%ecx
364	xorl	%esi,%edx
365	movl	72(%edi,%eax,4),%esi
366	movl	1096(%edi,%ebx,4),%ebp
367	movb	%ch,%al
368	movb	%cl,%bl
369	addl	%ebp,%esi
370	movl	2120(%edi,%eax,4),%eax
371	xorl	%eax,%esi
372	movl	3144(%edi,%ebx,4),%ebp
373	addl	%ebp,%esi
374	xorl	%eax,%eax
375	xorl	%esi,%edx
376
377
378	rorl	$16,%edx
379	movl	60(%edi),%esi
380	movb	%dh,%al
381	movb	%dl,%bl
382	rorl	$16,%edx
383	xorl	%esi,%ecx
384	movl	72(%edi,%eax,4),%esi
385	movl	1096(%edi,%ebx,4),%ebp
386	movb	%dh,%al
387	movb	%dl,%bl
388	addl	%ebp,%esi
389	movl	2120(%edi,%eax,4),%eax
390	xorl	%eax,%esi
391	movl	3144(%edi,%ebx,4),%ebp
392	addl	%ebp,%esi
393	xorl	%eax,%eax
394	xorl	%esi,%ecx
395
396
397	rorl	$16,%ecx
398	movl	56(%edi),%esi
399	movb	%ch,%al
400	movb	%cl,%bl
401	rorl	$16,%ecx
402	xorl	%esi,%edx
403	movl	72(%edi,%eax,4),%esi
404	movl	1096(%edi,%ebx,4),%ebp
405	movb	%ch,%al
406	movb	%cl,%bl
407	addl	%ebp,%esi
408	movl	2120(%edi,%eax,4),%eax
409	xorl	%eax,%esi
410	movl	3144(%edi,%ebx,4),%ebp
411	addl	%ebp,%esi
412	xorl	%eax,%eax
413	xorl	%esi,%edx
414
415
416	rorl	$16,%edx
417	movl	52(%edi),%esi
418	movb	%dh,%al
419	movb	%dl,%bl
420	rorl	$16,%edx
421	xorl	%esi,%ecx
422	movl	72(%edi,%eax,4),%esi
423	movl	1096(%edi,%ebx,4),%ebp
424	movb	%dh,%al
425	movb	%dl,%bl
426	addl	%ebp,%esi
427	movl	2120(%edi,%eax,4),%eax
428	xorl	%eax,%esi
429	movl	3144(%edi,%ebx,4),%ebp
430	addl	%ebp,%esi
431	xorl	%eax,%eax
432	xorl	%esi,%ecx
433
434
435	rorl	$16,%ecx
436	movl	48(%edi),%esi
437	movb	%ch,%al
438	movb	%cl,%bl
439	rorl	$16,%ecx
440	xorl	%esi,%edx
441	movl	72(%edi,%eax,4),%esi
442	movl	1096(%edi,%ebx,4),%ebp
443	movb	%ch,%al
444	movb	%cl,%bl
445	addl	%ebp,%esi
446	movl	2120(%edi,%eax,4),%eax
447	xorl	%eax,%esi
448	movl	3144(%edi,%ebx,4),%ebp
449	addl	%ebp,%esi
450	xorl	%eax,%eax
451	xorl	%esi,%edx
452
453
454	rorl	$16,%edx
455	movl	44(%edi),%esi
456	movb	%dh,%al
457	movb	%dl,%bl
458	rorl	$16,%edx
459	xorl	%esi,%ecx
460	movl	72(%edi,%eax,4),%esi
461	movl	1096(%edi,%ebx,4),%ebp
462	movb	%dh,%al
463	movb	%dl,%bl
464	addl	%ebp,%esi
465	movl	2120(%edi,%eax,4),%eax
466	xorl	%eax,%esi
467	movl	3144(%edi,%ebx,4),%ebp
468	addl	%ebp,%esi
469	xorl	%eax,%eax
470	xorl	%esi,%ecx
471
472
473	rorl	$16,%ecx
474	movl	40(%edi),%esi
475	movb	%ch,%al
476	movb	%cl,%bl
477	rorl	$16,%ecx
478	xorl	%esi,%edx
479	movl	72(%edi,%eax,4),%esi
480	movl	1096(%edi,%ebx,4),%ebp
481	movb	%ch,%al
482	movb	%cl,%bl
483	addl	%ebp,%esi
484	movl	2120(%edi,%eax,4),%eax
485	xorl	%eax,%esi
486	movl	3144(%edi,%ebx,4),%ebp
487	addl	%ebp,%esi
488	xorl	%eax,%eax
489	xorl	%esi,%edx
490
491
492	rorl	$16,%edx
493	movl	36(%edi),%esi
494	movb	%dh,%al
495	movb	%dl,%bl
496	rorl	$16,%edx
497	xorl	%esi,%ecx
498	movl	72(%edi,%eax,4),%esi
499	movl	1096(%edi,%ebx,4),%ebp
500	movb	%dh,%al
501	movb	%dl,%bl
502	addl	%ebp,%esi
503	movl	2120(%edi,%eax,4),%eax
504	xorl	%eax,%esi
505	movl	3144(%edi,%ebx,4),%ebp
506	addl	%ebp,%esi
507	xorl	%eax,%eax
508	xorl	%esi,%ecx
509
510
511	rorl	$16,%ecx
512	movl	32(%edi),%esi
513	movb	%ch,%al
514	movb	%cl,%bl
515	rorl	$16,%ecx
516	xorl	%esi,%edx
517	movl	72(%edi,%eax,4),%esi
518	movl	1096(%edi,%ebx,4),%ebp
519	movb	%ch,%al
520	movb	%cl,%bl
521	addl	%ebp,%esi
522	movl	2120(%edi,%eax,4),%eax
523	xorl	%eax,%esi
524	movl	3144(%edi,%ebx,4),%ebp
525	addl	%ebp,%esi
526	xorl	%eax,%eax
527	xorl	%esi,%edx
528
529
530	rorl	$16,%edx
531	movl	28(%edi),%esi
532	movb	%dh,%al
533	movb	%dl,%bl
534	rorl	$16,%edx
535	xorl	%esi,%ecx
536	movl	72(%edi,%eax,4),%esi
537	movl	1096(%edi,%ebx,4),%ebp
538	movb	%dh,%al
539	movb	%dl,%bl
540	addl	%ebp,%esi
541	movl	2120(%edi,%eax,4),%eax
542	xorl	%eax,%esi
543	movl	3144(%edi,%ebx,4),%ebp
544	addl	%ebp,%esi
545	xorl	%eax,%eax
546	xorl	%esi,%ecx
547
548
549	rorl	$16,%ecx
550	movl	24(%edi),%esi
551	movb	%ch,%al
552	movb	%cl,%bl
553	rorl	$16,%ecx
554	xorl	%esi,%edx
555	movl	72(%edi,%eax,4),%esi
556	movl	1096(%edi,%ebx,4),%ebp
557	movb	%ch,%al
558	movb	%cl,%bl
559	addl	%ebp,%esi
560	movl	2120(%edi,%eax,4),%eax
561	xorl	%eax,%esi
562	movl	3144(%edi,%ebx,4),%ebp
563	addl	%ebp,%esi
564	xorl	%eax,%eax
565	xorl	%esi,%edx
566
567
568	rorl	$16,%edx
569	movl	20(%edi),%esi
570	movb	%dh,%al
571	movb	%dl,%bl
572	rorl	$16,%edx
573	xorl	%esi,%ecx
574	movl	72(%edi,%eax,4),%esi
575	movl	1096(%edi,%ebx,4),%ebp
576	movb	%dh,%al
577	movb	%dl,%bl
578	addl	%ebp,%esi
579	movl	2120(%edi,%eax,4),%eax
580	xorl	%eax,%esi
581	movl	3144(%edi,%ebx,4),%ebp
582	addl	%ebp,%esi
583	xorl	%eax,%eax
584	xorl	%esi,%ecx
585
586
587	rorl	$16,%ecx
588	movl	16(%edi),%esi
589	movb	%ch,%al
590	movb	%cl,%bl
591	rorl	$16,%ecx
592	xorl	%esi,%edx
593	movl	72(%edi,%eax,4),%esi
594	movl	1096(%edi,%ebx,4),%ebp
595	movb	%ch,%al
596	movb	%cl,%bl
597	addl	%ebp,%esi
598	movl	2120(%edi,%eax,4),%eax
599	xorl	%eax,%esi
600	movl	3144(%edi,%ebx,4),%ebp
601	addl	%ebp,%esi
602	xorl	%eax,%eax
603	xorl	%esi,%edx
604
605
606	rorl	$16,%edx
607	movl	12(%edi),%esi
608	movb	%dh,%al
609	movb	%dl,%bl
610	rorl	$16,%edx
611	xorl	%esi,%ecx
612	movl	72(%edi,%eax,4),%esi
613	movl	1096(%edi,%ebx,4),%ebp
614	movb	%dh,%al
615	movb	%dl,%bl
616	addl	%ebp,%esi
617	movl	2120(%edi,%eax,4),%eax
618	xorl	%eax,%esi
619	movl	3144(%edi,%ebx,4),%ebp
620	addl	%ebp,%esi
621	xorl	%eax,%eax
622	xorl	%esi,%ecx
623
624
625	rorl	$16,%ecx
626	movl	8(%edi),%esi
627	movb	%ch,%al
628	movb	%cl,%bl
629	rorl	$16,%ecx
630	xorl	%esi,%edx
631	movl	72(%edi,%eax,4),%esi
632	movl	1096(%edi,%ebx,4),%ebp
633	movb	%ch,%al
634	movb	%cl,%bl
635	addl	%ebp,%esi
636	movl	2120(%edi,%eax,4),%eax
637	xorl	%eax,%esi
638	movl	3144(%edi,%ebx,4),%ebp
639	addl	%ebp,%esi
640	xorl	%eax,%eax
641	xorl	%esi,%edx
642
643
644	rorl	$16,%edx
645	movl	4(%edi),%esi
646	movb	%dh,%al
647	movb	%dl,%bl
648	rorl	$16,%edx
649	xorl	%esi,%ecx
650	movl	72(%edi,%eax,4),%esi
651	movl	1096(%edi,%ebx,4),%ebp
652	movb	%dh,%al
653	movb	%dl,%bl
654	addl	%ebp,%esi
655	movl	2120(%edi,%eax,4),%eax
656	xorl	%eax,%esi
657	movl	3144(%edi,%ebx,4),%ebp
658	addl	%ebp,%esi
659	xorl	%eax,%eax
660	xorl	%esi,%ecx
661	xorl	(%edi),%edx
662	movl	20(%esp),%eax
663	movl	%edx,(%eax)
664	movl	%ecx,4(%eax)
665	popl	%edi
666	popl	%esi
667	popl	%ebx
668	popl	%ebp
669	ret
670.size	BF_decrypt,.-.L_BF_decrypt_begin
671.globl	BF_cbc_encrypt
672.type	BF_cbc_encrypt,@function
673.align	16
674BF_cbc_encrypt:
675.L_BF_cbc_encrypt_begin:
676
677	pushl	%ebp
678	pushl	%ebx
679	pushl	%esi
680	pushl	%edi
681	movl	28(%esp),%ebp
682
683	movl	36(%esp),%ebx
684	movl	(%ebx),%esi
685	movl	4(%ebx),%edi
686	pushl	%edi
687	pushl	%esi
688	pushl	%edi
689	pushl	%esi
690	movl	%esp,%ebx
691	movl	36(%esp),%esi
692	movl	40(%esp),%edi
693
694	movl	56(%esp),%ecx
695
696	movl	48(%esp),%eax
697	pushl	%eax
698	pushl	%ebx
699	cmpl	$0,%ecx
700	jz	.L000decrypt
701	andl	$4294967288,%ebp
702	movl	8(%esp),%eax
703	movl	12(%esp),%ebx
704	jz	.L001encrypt_finish
705.L002encrypt_loop:
706	movl	(%esi),%ecx
707	movl	4(%esi),%edx
708	xorl	%ecx,%eax
709	xorl	%edx,%ebx
710	bswap	%eax
711	bswap	%ebx
712	movl	%eax,8(%esp)
713	movl	%ebx,12(%esp)
714	call	.L_BF_encrypt_begin
715	movl	8(%esp),%eax
716	movl	12(%esp),%ebx
717	bswap	%eax
718	bswap	%ebx
719	movl	%eax,(%edi)
720	movl	%ebx,4(%edi)
721	addl	$8,%esi
722	addl	$8,%edi
723	subl	$8,%ebp
724	jnz	.L002encrypt_loop
725.L001encrypt_finish:
726	movl	52(%esp),%ebp
727	andl	$7,%ebp
728	jz	.L003finish
729	call	.L004PIC_point
730.L004PIC_point:
731	popl	%edx
732	leal	.L005cbc_enc_jmp_table-.L004PIC_point(%edx),%ecx
733	movl	(%ecx,%ebp,4),%ebp
734	addl	%edx,%ebp
735	xorl	%ecx,%ecx
736	xorl	%edx,%edx
737	jmp	*%ebp
738.L006ej7:
739	movb	6(%esi),%dh
740	shll	$8,%edx
741.L007ej6:
742	movb	5(%esi),%dh
743.L008ej5:
744	movb	4(%esi),%dl
745.L009ej4:
746	movl	(%esi),%ecx
747	jmp	.L010ejend
748.L011ej3:
749	movb	2(%esi),%ch
750	shll	$8,%ecx
751.L012ej2:
752	movb	1(%esi),%ch
753.L013ej1:
754	movb	(%esi),%cl
755.L010ejend:
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	jmp	.L003finish
770.L000decrypt:
771	andl	$4294967288,%ebp
772	movl	16(%esp),%eax
773	movl	20(%esp),%ebx
774	jz	.L014decrypt_finish
775.L015decrypt_loop:
776	movl	(%esi),%eax
777	movl	4(%esi),%ebx
778	bswap	%eax
779	bswap	%ebx
780	movl	%eax,8(%esp)
781	movl	%ebx,12(%esp)
782	call	.L_BF_decrypt_begin
783	movl	8(%esp),%eax
784	movl	12(%esp),%ebx
785	bswap	%eax
786	bswap	%ebx
787	movl	16(%esp),%ecx
788	movl	20(%esp),%edx
789	xorl	%eax,%ecx
790	xorl	%ebx,%edx
791	movl	(%esi),%eax
792	movl	4(%esi),%ebx
793	movl	%ecx,(%edi)
794	movl	%edx,4(%edi)
795	movl	%eax,16(%esp)
796	movl	%ebx,20(%esp)
797	addl	$8,%esi
798	addl	$8,%edi
799	subl	$8,%ebp
800	jnz	.L015decrypt_loop
801.L014decrypt_finish:
802	movl	52(%esp),%ebp
803	andl	$7,%ebp
804	jz	.L003finish
805	movl	(%esi),%eax
806	movl	4(%esi),%ebx
807	bswap	%eax
808	bswap	%ebx
809	movl	%eax,8(%esp)
810	movl	%ebx,12(%esp)
811	call	.L_BF_decrypt_begin
812	movl	8(%esp),%eax
813	movl	12(%esp),%ebx
814	bswap	%eax
815	bswap	%ebx
816	movl	16(%esp),%ecx
817	movl	20(%esp),%edx
818	xorl	%eax,%ecx
819	xorl	%ebx,%edx
820	movl	(%esi),%eax
821	movl	4(%esi),%ebx
822.L016dj7:
823	rorl	$16,%edx
824	movb	%dl,6(%edi)
825	shrl	$16,%edx
826.L017dj6:
827	movb	%dh,5(%edi)
828.L018dj5:
829	movb	%dl,4(%edi)
830.L019dj4:
831	movl	%ecx,(%edi)
832	jmp	.L020djend
833.L021dj3:
834	rorl	$16,%ecx
835	movb	%cl,2(%edi)
836	shll	$16,%ecx
837.L022dj2:
838	movb	%ch,1(%esi)
839.L023dj1:
840	movb	%cl,(%esi)
841.L020djend:
842	jmp	.L003finish
843.L003finish:
844	movl	60(%esp),%ecx
845	addl	$24,%esp
846	movl	%eax,(%ecx)
847	movl	%ebx,4(%ecx)
848	popl	%edi
849	popl	%esi
850	popl	%ebx
851	popl	%ebp
852	ret
853.align	64
854.L005cbc_enc_jmp_table:
855.long	0
856.long	.L013ej1-.L004PIC_point
857.long	.L012ej2-.L004PIC_point
858.long	.L011ej3-.L004PIC_point
859.long	.L009ej4-.L004PIC_point
860.long	.L008ej5-.L004PIC_point
861.long	.L007ej6-.L004PIC_point
862.long	.L006ej7-.L004PIC_point
863.align	64
864.size	BF_cbc_encrypt,.-.L_BF_cbc_encrypt_begin
865