xref: /freebsd/sys/crypto/openssl/i386/des-586.S (revision 315ee00f)
1/* Do not modify. This file is auto-generated from des-586.pl. */
2#ifdef PIC
3.text
4.globl	DES_SPtrans
5.type	_x86_DES_encrypt,@function
6.align	16
7_x86_DES_encrypt:
8	pushl	%ecx
9
10	movl	(%ecx),%eax
11	xorl	%ebx,%ebx
12	movl	4(%ecx),%edx
13	xorl	%esi,%eax
14	xorl	%ecx,%ecx
15	xorl	%esi,%edx
16	andl	$0xfcfcfcfc,%eax
17	andl	$0xcfcfcfcf,%edx
18	movb	%al,%bl
19	movb	%ah,%cl
20	rorl	$4,%edx
21	xorl	(%ebp,%ebx,1),%edi
22	movb	%dl,%bl
23	xorl	0x200(%ebp,%ecx,1),%edi
24	movb	%dh,%cl
25	shrl	$16,%eax
26	xorl	0x100(%ebp,%ebx,1),%edi
27	movb	%ah,%bl
28	shrl	$16,%edx
29	xorl	0x300(%ebp,%ecx,1),%edi
30	movb	%dh,%cl
31	andl	$0xff,%eax
32	andl	$0xff,%edx
33	xorl	0x600(%ebp,%ebx,1),%edi
34	xorl	0x700(%ebp,%ecx,1),%edi
35	movl	(%esp),%ecx
36	xorl	0x400(%ebp,%eax,1),%edi
37	xorl	0x500(%ebp,%edx,1),%edi
38
39	movl	8(%ecx),%eax
40	xorl	%ebx,%ebx
41	movl	12(%ecx),%edx
42	xorl	%edi,%eax
43	xorl	%ecx,%ecx
44	xorl	%edi,%edx
45	andl	$0xfcfcfcfc,%eax
46	andl	$0xcfcfcfcf,%edx
47	movb	%al,%bl
48	movb	%ah,%cl
49	rorl	$4,%edx
50	xorl	(%ebp,%ebx,1),%esi
51	movb	%dl,%bl
52	xorl	0x200(%ebp,%ecx,1),%esi
53	movb	%dh,%cl
54	shrl	$16,%eax
55	xorl	0x100(%ebp,%ebx,1),%esi
56	movb	%ah,%bl
57	shrl	$16,%edx
58	xorl	0x300(%ebp,%ecx,1),%esi
59	movb	%dh,%cl
60	andl	$0xff,%eax
61	andl	$0xff,%edx
62	xorl	0x600(%ebp,%ebx,1),%esi
63	xorl	0x700(%ebp,%ecx,1),%esi
64	movl	(%esp),%ecx
65	xorl	0x400(%ebp,%eax,1),%esi
66	xorl	0x500(%ebp,%edx,1),%esi
67
68	movl	16(%ecx),%eax
69	xorl	%ebx,%ebx
70	movl	20(%ecx),%edx
71	xorl	%esi,%eax
72	xorl	%ecx,%ecx
73	xorl	%esi,%edx
74	andl	$0xfcfcfcfc,%eax
75	andl	$0xcfcfcfcf,%edx
76	movb	%al,%bl
77	movb	%ah,%cl
78	rorl	$4,%edx
79	xorl	(%ebp,%ebx,1),%edi
80	movb	%dl,%bl
81	xorl	0x200(%ebp,%ecx,1),%edi
82	movb	%dh,%cl
83	shrl	$16,%eax
84	xorl	0x100(%ebp,%ebx,1),%edi
85	movb	%ah,%bl
86	shrl	$16,%edx
87	xorl	0x300(%ebp,%ecx,1),%edi
88	movb	%dh,%cl
89	andl	$0xff,%eax
90	andl	$0xff,%edx
91	xorl	0x600(%ebp,%ebx,1),%edi
92	xorl	0x700(%ebp,%ecx,1),%edi
93	movl	(%esp),%ecx
94	xorl	0x400(%ebp,%eax,1),%edi
95	xorl	0x500(%ebp,%edx,1),%edi
96
97	movl	24(%ecx),%eax
98	xorl	%ebx,%ebx
99	movl	28(%ecx),%edx
100	xorl	%edi,%eax
101	xorl	%ecx,%ecx
102	xorl	%edi,%edx
103	andl	$0xfcfcfcfc,%eax
104	andl	$0xcfcfcfcf,%edx
105	movb	%al,%bl
106	movb	%ah,%cl
107	rorl	$4,%edx
108	xorl	(%ebp,%ebx,1),%esi
109	movb	%dl,%bl
110	xorl	0x200(%ebp,%ecx,1),%esi
111	movb	%dh,%cl
112	shrl	$16,%eax
113	xorl	0x100(%ebp,%ebx,1),%esi
114	movb	%ah,%bl
115	shrl	$16,%edx
116	xorl	0x300(%ebp,%ecx,1),%esi
117	movb	%dh,%cl
118	andl	$0xff,%eax
119	andl	$0xff,%edx
120	xorl	0x600(%ebp,%ebx,1),%esi
121	xorl	0x700(%ebp,%ecx,1),%esi
122	movl	(%esp),%ecx
123	xorl	0x400(%ebp,%eax,1),%esi
124	xorl	0x500(%ebp,%edx,1),%esi
125
126	movl	32(%ecx),%eax
127	xorl	%ebx,%ebx
128	movl	36(%ecx),%edx
129	xorl	%esi,%eax
130	xorl	%ecx,%ecx
131	xorl	%esi,%edx
132	andl	$0xfcfcfcfc,%eax
133	andl	$0xcfcfcfcf,%edx
134	movb	%al,%bl
135	movb	%ah,%cl
136	rorl	$4,%edx
137	xorl	(%ebp,%ebx,1),%edi
138	movb	%dl,%bl
139	xorl	0x200(%ebp,%ecx,1),%edi
140	movb	%dh,%cl
141	shrl	$16,%eax
142	xorl	0x100(%ebp,%ebx,1),%edi
143	movb	%ah,%bl
144	shrl	$16,%edx
145	xorl	0x300(%ebp,%ecx,1),%edi
146	movb	%dh,%cl
147	andl	$0xff,%eax
148	andl	$0xff,%edx
149	xorl	0x600(%ebp,%ebx,1),%edi
150	xorl	0x700(%ebp,%ecx,1),%edi
151	movl	(%esp),%ecx
152	xorl	0x400(%ebp,%eax,1),%edi
153	xorl	0x500(%ebp,%edx,1),%edi
154
155	movl	40(%ecx),%eax
156	xorl	%ebx,%ebx
157	movl	44(%ecx),%edx
158	xorl	%edi,%eax
159	xorl	%ecx,%ecx
160	xorl	%edi,%edx
161	andl	$0xfcfcfcfc,%eax
162	andl	$0xcfcfcfcf,%edx
163	movb	%al,%bl
164	movb	%ah,%cl
165	rorl	$4,%edx
166	xorl	(%ebp,%ebx,1),%esi
167	movb	%dl,%bl
168	xorl	0x200(%ebp,%ecx,1),%esi
169	movb	%dh,%cl
170	shrl	$16,%eax
171	xorl	0x100(%ebp,%ebx,1),%esi
172	movb	%ah,%bl
173	shrl	$16,%edx
174	xorl	0x300(%ebp,%ecx,1),%esi
175	movb	%dh,%cl
176	andl	$0xff,%eax
177	andl	$0xff,%edx
178	xorl	0x600(%ebp,%ebx,1),%esi
179	xorl	0x700(%ebp,%ecx,1),%esi
180	movl	(%esp),%ecx
181	xorl	0x400(%ebp,%eax,1),%esi
182	xorl	0x500(%ebp,%edx,1),%esi
183
184	movl	48(%ecx),%eax
185	xorl	%ebx,%ebx
186	movl	52(%ecx),%edx
187	xorl	%esi,%eax
188	xorl	%ecx,%ecx
189	xorl	%esi,%edx
190	andl	$0xfcfcfcfc,%eax
191	andl	$0xcfcfcfcf,%edx
192	movb	%al,%bl
193	movb	%ah,%cl
194	rorl	$4,%edx
195	xorl	(%ebp,%ebx,1),%edi
196	movb	%dl,%bl
197	xorl	0x200(%ebp,%ecx,1),%edi
198	movb	%dh,%cl
199	shrl	$16,%eax
200	xorl	0x100(%ebp,%ebx,1),%edi
201	movb	%ah,%bl
202	shrl	$16,%edx
203	xorl	0x300(%ebp,%ecx,1),%edi
204	movb	%dh,%cl
205	andl	$0xff,%eax
206	andl	$0xff,%edx
207	xorl	0x600(%ebp,%ebx,1),%edi
208	xorl	0x700(%ebp,%ecx,1),%edi
209	movl	(%esp),%ecx
210	xorl	0x400(%ebp,%eax,1),%edi
211	xorl	0x500(%ebp,%edx,1),%edi
212
213	movl	56(%ecx),%eax
214	xorl	%ebx,%ebx
215	movl	60(%ecx),%edx
216	xorl	%edi,%eax
217	xorl	%ecx,%ecx
218	xorl	%edi,%edx
219	andl	$0xfcfcfcfc,%eax
220	andl	$0xcfcfcfcf,%edx
221	movb	%al,%bl
222	movb	%ah,%cl
223	rorl	$4,%edx
224	xorl	(%ebp,%ebx,1),%esi
225	movb	%dl,%bl
226	xorl	0x200(%ebp,%ecx,1),%esi
227	movb	%dh,%cl
228	shrl	$16,%eax
229	xorl	0x100(%ebp,%ebx,1),%esi
230	movb	%ah,%bl
231	shrl	$16,%edx
232	xorl	0x300(%ebp,%ecx,1),%esi
233	movb	%dh,%cl
234	andl	$0xff,%eax
235	andl	$0xff,%edx
236	xorl	0x600(%ebp,%ebx,1),%esi
237	xorl	0x700(%ebp,%ecx,1),%esi
238	movl	(%esp),%ecx
239	xorl	0x400(%ebp,%eax,1),%esi
240	xorl	0x500(%ebp,%edx,1),%esi
241
242	movl	64(%ecx),%eax
243	xorl	%ebx,%ebx
244	movl	68(%ecx),%edx
245	xorl	%esi,%eax
246	xorl	%ecx,%ecx
247	xorl	%esi,%edx
248	andl	$0xfcfcfcfc,%eax
249	andl	$0xcfcfcfcf,%edx
250	movb	%al,%bl
251	movb	%ah,%cl
252	rorl	$4,%edx
253	xorl	(%ebp,%ebx,1),%edi
254	movb	%dl,%bl
255	xorl	0x200(%ebp,%ecx,1),%edi
256	movb	%dh,%cl
257	shrl	$16,%eax
258	xorl	0x100(%ebp,%ebx,1),%edi
259	movb	%ah,%bl
260	shrl	$16,%edx
261	xorl	0x300(%ebp,%ecx,1),%edi
262	movb	%dh,%cl
263	andl	$0xff,%eax
264	andl	$0xff,%edx
265	xorl	0x600(%ebp,%ebx,1),%edi
266	xorl	0x700(%ebp,%ecx,1),%edi
267	movl	(%esp),%ecx
268	xorl	0x400(%ebp,%eax,1),%edi
269	xorl	0x500(%ebp,%edx,1),%edi
270
271	movl	72(%ecx),%eax
272	xorl	%ebx,%ebx
273	movl	76(%ecx),%edx
274	xorl	%edi,%eax
275	xorl	%ecx,%ecx
276	xorl	%edi,%edx
277	andl	$0xfcfcfcfc,%eax
278	andl	$0xcfcfcfcf,%edx
279	movb	%al,%bl
280	movb	%ah,%cl
281	rorl	$4,%edx
282	xorl	(%ebp,%ebx,1),%esi
283	movb	%dl,%bl
284	xorl	0x200(%ebp,%ecx,1),%esi
285	movb	%dh,%cl
286	shrl	$16,%eax
287	xorl	0x100(%ebp,%ebx,1),%esi
288	movb	%ah,%bl
289	shrl	$16,%edx
290	xorl	0x300(%ebp,%ecx,1),%esi
291	movb	%dh,%cl
292	andl	$0xff,%eax
293	andl	$0xff,%edx
294	xorl	0x600(%ebp,%ebx,1),%esi
295	xorl	0x700(%ebp,%ecx,1),%esi
296	movl	(%esp),%ecx
297	xorl	0x400(%ebp,%eax,1),%esi
298	xorl	0x500(%ebp,%edx,1),%esi
299
300	movl	80(%ecx),%eax
301	xorl	%ebx,%ebx
302	movl	84(%ecx),%edx
303	xorl	%esi,%eax
304	xorl	%ecx,%ecx
305	xorl	%esi,%edx
306	andl	$0xfcfcfcfc,%eax
307	andl	$0xcfcfcfcf,%edx
308	movb	%al,%bl
309	movb	%ah,%cl
310	rorl	$4,%edx
311	xorl	(%ebp,%ebx,1),%edi
312	movb	%dl,%bl
313	xorl	0x200(%ebp,%ecx,1),%edi
314	movb	%dh,%cl
315	shrl	$16,%eax
316	xorl	0x100(%ebp,%ebx,1),%edi
317	movb	%ah,%bl
318	shrl	$16,%edx
319	xorl	0x300(%ebp,%ecx,1),%edi
320	movb	%dh,%cl
321	andl	$0xff,%eax
322	andl	$0xff,%edx
323	xorl	0x600(%ebp,%ebx,1),%edi
324	xorl	0x700(%ebp,%ecx,1),%edi
325	movl	(%esp),%ecx
326	xorl	0x400(%ebp,%eax,1),%edi
327	xorl	0x500(%ebp,%edx,1),%edi
328
329	movl	88(%ecx),%eax
330	xorl	%ebx,%ebx
331	movl	92(%ecx),%edx
332	xorl	%edi,%eax
333	xorl	%ecx,%ecx
334	xorl	%edi,%edx
335	andl	$0xfcfcfcfc,%eax
336	andl	$0xcfcfcfcf,%edx
337	movb	%al,%bl
338	movb	%ah,%cl
339	rorl	$4,%edx
340	xorl	(%ebp,%ebx,1),%esi
341	movb	%dl,%bl
342	xorl	0x200(%ebp,%ecx,1),%esi
343	movb	%dh,%cl
344	shrl	$16,%eax
345	xorl	0x100(%ebp,%ebx,1),%esi
346	movb	%ah,%bl
347	shrl	$16,%edx
348	xorl	0x300(%ebp,%ecx,1),%esi
349	movb	%dh,%cl
350	andl	$0xff,%eax
351	andl	$0xff,%edx
352	xorl	0x600(%ebp,%ebx,1),%esi
353	xorl	0x700(%ebp,%ecx,1),%esi
354	movl	(%esp),%ecx
355	xorl	0x400(%ebp,%eax,1),%esi
356	xorl	0x500(%ebp,%edx,1),%esi
357
358	movl	96(%ecx),%eax
359	xorl	%ebx,%ebx
360	movl	100(%ecx),%edx
361	xorl	%esi,%eax
362	xorl	%ecx,%ecx
363	xorl	%esi,%edx
364	andl	$0xfcfcfcfc,%eax
365	andl	$0xcfcfcfcf,%edx
366	movb	%al,%bl
367	movb	%ah,%cl
368	rorl	$4,%edx
369	xorl	(%ebp,%ebx,1),%edi
370	movb	%dl,%bl
371	xorl	0x200(%ebp,%ecx,1),%edi
372	movb	%dh,%cl
373	shrl	$16,%eax
374	xorl	0x100(%ebp,%ebx,1),%edi
375	movb	%ah,%bl
376	shrl	$16,%edx
377	xorl	0x300(%ebp,%ecx,1),%edi
378	movb	%dh,%cl
379	andl	$0xff,%eax
380	andl	$0xff,%edx
381	xorl	0x600(%ebp,%ebx,1),%edi
382	xorl	0x700(%ebp,%ecx,1),%edi
383	movl	(%esp),%ecx
384	xorl	0x400(%ebp,%eax,1),%edi
385	xorl	0x500(%ebp,%edx,1),%edi
386
387	movl	104(%ecx),%eax
388	xorl	%ebx,%ebx
389	movl	108(%ecx),%edx
390	xorl	%edi,%eax
391	xorl	%ecx,%ecx
392	xorl	%edi,%edx
393	andl	$0xfcfcfcfc,%eax
394	andl	$0xcfcfcfcf,%edx
395	movb	%al,%bl
396	movb	%ah,%cl
397	rorl	$4,%edx
398	xorl	(%ebp,%ebx,1),%esi
399	movb	%dl,%bl
400	xorl	0x200(%ebp,%ecx,1),%esi
401	movb	%dh,%cl
402	shrl	$16,%eax
403	xorl	0x100(%ebp,%ebx,1),%esi
404	movb	%ah,%bl
405	shrl	$16,%edx
406	xorl	0x300(%ebp,%ecx,1),%esi
407	movb	%dh,%cl
408	andl	$0xff,%eax
409	andl	$0xff,%edx
410	xorl	0x600(%ebp,%ebx,1),%esi
411	xorl	0x700(%ebp,%ecx,1),%esi
412	movl	(%esp),%ecx
413	xorl	0x400(%ebp,%eax,1),%esi
414	xorl	0x500(%ebp,%edx,1),%esi
415
416	movl	112(%ecx),%eax
417	xorl	%ebx,%ebx
418	movl	116(%ecx),%edx
419	xorl	%esi,%eax
420	xorl	%ecx,%ecx
421	xorl	%esi,%edx
422	andl	$0xfcfcfcfc,%eax
423	andl	$0xcfcfcfcf,%edx
424	movb	%al,%bl
425	movb	%ah,%cl
426	rorl	$4,%edx
427	xorl	(%ebp,%ebx,1),%edi
428	movb	%dl,%bl
429	xorl	0x200(%ebp,%ecx,1),%edi
430	movb	%dh,%cl
431	shrl	$16,%eax
432	xorl	0x100(%ebp,%ebx,1),%edi
433	movb	%ah,%bl
434	shrl	$16,%edx
435	xorl	0x300(%ebp,%ecx,1),%edi
436	movb	%dh,%cl
437	andl	$0xff,%eax
438	andl	$0xff,%edx
439	xorl	0x600(%ebp,%ebx,1),%edi
440	xorl	0x700(%ebp,%ecx,1),%edi
441	movl	(%esp),%ecx
442	xorl	0x400(%ebp,%eax,1),%edi
443	xorl	0x500(%ebp,%edx,1),%edi
444
445	movl	120(%ecx),%eax
446	xorl	%ebx,%ebx
447	movl	124(%ecx),%edx
448	xorl	%edi,%eax
449	xorl	%ecx,%ecx
450	xorl	%edi,%edx
451	andl	$0xfcfcfcfc,%eax
452	andl	$0xcfcfcfcf,%edx
453	movb	%al,%bl
454	movb	%ah,%cl
455	rorl	$4,%edx
456	xorl	(%ebp,%ebx,1),%esi
457	movb	%dl,%bl
458	xorl	0x200(%ebp,%ecx,1),%esi
459	movb	%dh,%cl
460	shrl	$16,%eax
461	xorl	0x100(%ebp,%ebx,1),%esi
462	movb	%ah,%bl
463	shrl	$16,%edx
464	xorl	0x300(%ebp,%ecx,1),%esi
465	movb	%dh,%cl
466	andl	$0xff,%eax
467	andl	$0xff,%edx
468	xorl	0x600(%ebp,%ebx,1),%esi
469	xorl	0x700(%ebp,%ecx,1),%esi
470	movl	(%esp),%ecx
471	xorl	0x400(%ebp,%eax,1),%esi
472	xorl	0x500(%ebp,%edx,1),%esi
473	addl	$4,%esp
474	ret
475.size	_x86_DES_encrypt,.-_x86_DES_encrypt
476.type	_x86_DES_decrypt,@function
477.align	16
478_x86_DES_decrypt:
479	pushl	%ecx
480
481	movl	120(%ecx),%eax
482	xorl	%ebx,%ebx
483	movl	124(%ecx),%edx
484	xorl	%esi,%eax
485	xorl	%ecx,%ecx
486	xorl	%esi,%edx
487	andl	$0xfcfcfcfc,%eax
488	andl	$0xcfcfcfcf,%edx
489	movb	%al,%bl
490	movb	%ah,%cl
491	rorl	$4,%edx
492	xorl	(%ebp,%ebx,1),%edi
493	movb	%dl,%bl
494	xorl	0x200(%ebp,%ecx,1),%edi
495	movb	%dh,%cl
496	shrl	$16,%eax
497	xorl	0x100(%ebp,%ebx,1),%edi
498	movb	%ah,%bl
499	shrl	$16,%edx
500	xorl	0x300(%ebp,%ecx,1),%edi
501	movb	%dh,%cl
502	andl	$0xff,%eax
503	andl	$0xff,%edx
504	xorl	0x600(%ebp,%ebx,1),%edi
505	xorl	0x700(%ebp,%ecx,1),%edi
506	movl	(%esp),%ecx
507	xorl	0x400(%ebp,%eax,1),%edi
508	xorl	0x500(%ebp,%edx,1),%edi
509
510	movl	112(%ecx),%eax
511	xorl	%ebx,%ebx
512	movl	116(%ecx),%edx
513	xorl	%edi,%eax
514	xorl	%ecx,%ecx
515	xorl	%edi,%edx
516	andl	$0xfcfcfcfc,%eax
517	andl	$0xcfcfcfcf,%edx
518	movb	%al,%bl
519	movb	%ah,%cl
520	rorl	$4,%edx
521	xorl	(%ebp,%ebx,1),%esi
522	movb	%dl,%bl
523	xorl	0x200(%ebp,%ecx,1),%esi
524	movb	%dh,%cl
525	shrl	$16,%eax
526	xorl	0x100(%ebp,%ebx,1),%esi
527	movb	%ah,%bl
528	shrl	$16,%edx
529	xorl	0x300(%ebp,%ecx,1),%esi
530	movb	%dh,%cl
531	andl	$0xff,%eax
532	andl	$0xff,%edx
533	xorl	0x600(%ebp,%ebx,1),%esi
534	xorl	0x700(%ebp,%ecx,1),%esi
535	movl	(%esp),%ecx
536	xorl	0x400(%ebp,%eax,1),%esi
537	xorl	0x500(%ebp,%edx,1),%esi
538
539	movl	104(%ecx),%eax
540	xorl	%ebx,%ebx
541	movl	108(%ecx),%edx
542	xorl	%esi,%eax
543	xorl	%ecx,%ecx
544	xorl	%esi,%edx
545	andl	$0xfcfcfcfc,%eax
546	andl	$0xcfcfcfcf,%edx
547	movb	%al,%bl
548	movb	%ah,%cl
549	rorl	$4,%edx
550	xorl	(%ebp,%ebx,1),%edi
551	movb	%dl,%bl
552	xorl	0x200(%ebp,%ecx,1),%edi
553	movb	%dh,%cl
554	shrl	$16,%eax
555	xorl	0x100(%ebp,%ebx,1),%edi
556	movb	%ah,%bl
557	shrl	$16,%edx
558	xorl	0x300(%ebp,%ecx,1),%edi
559	movb	%dh,%cl
560	andl	$0xff,%eax
561	andl	$0xff,%edx
562	xorl	0x600(%ebp,%ebx,1),%edi
563	xorl	0x700(%ebp,%ecx,1),%edi
564	movl	(%esp),%ecx
565	xorl	0x400(%ebp,%eax,1),%edi
566	xorl	0x500(%ebp,%edx,1),%edi
567
568	movl	96(%ecx),%eax
569	xorl	%ebx,%ebx
570	movl	100(%ecx),%edx
571	xorl	%edi,%eax
572	xorl	%ecx,%ecx
573	xorl	%edi,%edx
574	andl	$0xfcfcfcfc,%eax
575	andl	$0xcfcfcfcf,%edx
576	movb	%al,%bl
577	movb	%ah,%cl
578	rorl	$4,%edx
579	xorl	(%ebp,%ebx,1),%esi
580	movb	%dl,%bl
581	xorl	0x200(%ebp,%ecx,1),%esi
582	movb	%dh,%cl
583	shrl	$16,%eax
584	xorl	0x100(%ebp,%ebx,1),%esi
585	movb	%ah,%bl
586	shrl	$16,%edx
587	xorl	0x300(%ebp,%ecx,1),%esi
588	movb	%dh,%cl
589	andl	$0xff,%eax
590	andl	$0xff,%edx
591	xorl	0x600(%ebp,%ebx,1),%esi
592	xorl	0x700(%ebp,%ecx,1),%esi
593	movl	(%esp),%ecx
594	xorl	0x400(%ebp,%eax,1),%esi
595	xorl	0x500(%ebp,%edx,1),%esi
596
597	movl	88(%ecx),%eax
598	xorl	%ebx,%ebx
599	movl	92(%ecx),%edx
600	xorl	%esi,%eax
601	xorl	%ecx,%ecx
602	xorl	%esi,%edx
603	andl	$0xfcfcfcfc,%eax
604	andl	$0xcfcfcfcf,%edx
605	movb	%al,%bl
606	movb	%ah,%cl
607	rorl	$4,%edx
608	xorl	(%ebp,%ebx,1),%edi
609	movb	%dl,%bl
610	xorl	0x200(%ebp,%ecx,1),%edi
611	movb	%dh,%cl
612	shrl	$16,%eax
613	xorl	0x100(%ebp,%ebx,1),%edi
614	movb	%ah,%bl
615	shrl	$16,%edx
616	xorl	0x300(%ebp,%ecx,1),%edi
617	movb	%dh,%cl
618	andl	$0xff,%eax
619	andl	$0xff,%edx
620	xorl	0x600(%ebp,%ebx,1),%edi
621	xorl	0x700(%ebp,%ecx,1),%edi
622	movl	(%esp),%ecx
623	xorl	0x400(%ebp,%eax,1),%edi
624	xorl	0x500(%ebp,%edx,1),%edi
625
626	movl	80(%ecx),%eax
627	xorl	%ebx,%ebx
628	movl	84(%ecx),%edx
629	xorl	%edi,%eax
630	xorl	%ecx,%ecx
631	xorl	%edi,%edx
632	andl	$0xfcfcfcfc,%eax
633	andl	$0xcfcfcfcf,%edx
634	movb	%al,%bl
635	movb	%ah,%cl
636	rorl	$4,%edx
637	xorl	(%ebp,%ebx,1),%esi
638	movb	%dl,%bl
639	xorl	0x200(%ebp,%ecx,1),%esi
640	movb	%dh,%cl
641	shrl	$16,%eax
642	xorl	0x100(%ebp,%ebx,1),%esi
643	movb	%ah,%bl
644	shrl	$16,%edx
645	xorl	0x300(%ebp,%ecx,1),%esi
646	movb	%dh,%cl
647	andl	$0xff,%eax
648	andl	$0xff,%edx
649	xorl	0x600(%ebp,%ebx,1),%esi
650	xorl	0x700(%ebp,%ecx,1),%esi
651	movl	(%esp),%ecx
652	xorl	0x400(%ebp,%eax,1),%esi
653	xorl	0x500(%ebp,%edx,1),%esi
654
655	movl	72(%ecx),%eax
656	xorl	%ebx,%ebx
657	movl	76(%ecx),%edx
658	xorl	%esi,%eax
659	xorl	%ecx,%ecx
660	xorl	%esi,%edx
661	andl	$0xfcfcfcfc,%eax
662	andl	$0xcfcfcfcf,%edx
663	movb	%al,%bl
664	movb	%ah,%cl
665	rorl	$4,%edx
666	xorl	(%ebp,%ebx,1),%edi
667	movb	%dl,%bl
668	xorl	0x200(%ebp,%ecx,1),%edi
669	movb	%dh,%cl
670	shrl	$16,%eax
671	xorl	0x100(%ebp,%ebx,1),%edi
672	movb	%ah,%bl
673	shrl	$16,%edx
674	xorl	0x300(%ebp,%ecx,1),%edi
675	movb	%dh,%cl
676	andl	$0xff,%eax
677	andl	$0xff,%edx
678	xorl	0x600(%ebp,%ebx,1),%edi
679	xorl	0x700(%ebp,%ecx,1),%edi
680	movl	(%esp),%ecx
681	xorl	0x400(%ebp,%eax,1),%edi
682	xorl	0x500(%ebp,%edx,1),%edi
683
684	movl	64(%ecx),%eax
685	xorl	%ebx,%ebx
686	movl	68(%ecx),%edx
687	xorl	%edi,%eax
688	xorl	%ecx,%ecx
689	xorl	%edi,%edx
690	andl	$0xfcfcfcfc,%eax
691	andl	$0xcfcfcfcf,%edx
692	movb	%al,%bl
693	movb	%ah,%cl
694	rorl	$4,%edx
695	xorl	(%ebp,%ebx,1),%esi
696	movb	%dl,%bl
697	xorl	0x200(%ebp,%ecx,1),%esi
698	movb	%dh,%cl
699	shrl	$16,%eax
700	xorl	0x100(%ebp,%ebx,1),%esi
701	movb	%ah,%bl
702	shrl	$16,%edx
703	xorl	0x300(%ebp,%ecx,1),%esi
704	movb	%dh,%cl
705	andl	$0xff,%eax
706	andl	$0xff,%edx
707	xorl	0x600(%ebp,%ebx,1),%esi
708	xorl	0x700(%ebp,%ecx,1),%esi
709	movl	(%esp),%ecx
710	xorl	0x400(%ebp,%eax,1),%esi
711	xorl	0x500(%ebp,%edx,1),%esi
712
713	movl	56(%ecx),%eax
714	xorl	%ebx,%ebx
715	movl	60(%ecx),%edx
716	xorl	%esi,%eax
717	xorl	%ecx,%ecx
718	xorl	%esi,%edx
719	andl	$0xfcfcfcfc,%eax
720	andl	$0xcfcfcfcf,%edx
721	movb	%al,%bl
722	movb	%ah,%cl
723	rorl	$4,%edx
724	xorl	(%ebp,%ebx,1),%edi
725	movb	%dl,%bl
726	xorl	0x200(%ebp,%ecx,1),%edi
727	movb	%dh,%cl
728	shrl	$16,%eax
729	xorl	0x100(%ebp,%ebx,1),%edi
730	movb	%ah,%bl
731	shrl	$16,%edx
732	xorl	0x300(%ebp,%ecx,1),%edi
733	movb	%dh,%cl
734	andl	$0xff,%eax
735	andl	$0xff,%edx
736	xorl	0x600(%ebp,%ebx,1),%edi
737	xorl	0x700(%ebp,%ecx,1),%edi
738	movl	(%esp),%ecx
739	xorl	0x400(%ebp,%eax,1),%edi
740	xorl	0x500(%ebp,%edx,1),%edi
741
742	movl	48(%ecx),%eax
743	xorl	%ebx,%ebx
744	movl	52(%ecx),%edx
745	xorl	%edi,%eax
746	xorl	%ecx,%ecx
747	xorl	%edi,%edx
748	andl	$0xfcfcfcfc,%eax
749	andl	$0xcfcfcfcf,%edx
750	movb	%al,%bl
751	movb	%ah,%cl
752	rorl	$4,%edx
753	xorl	(%ebp,%ebx,1),%esi
754	movb	%dl,%bl
755	xorl	0x200(%ebp,%ecx,1),%esi
756	movb	%dh,%cl
757	shrl	$16,%eax
758	xorl	0x100(%ebp,%ebx,1),%esi
759	movb	%ah,%bl
760	shrl	$16,%edx
761	xorl	0x300(%ebp,%ecx,1),%esi
762	movb	%dh,%cl
763	andl	$0xff,%eax
764	andl	$0xff,%edx
765	xorl	0x600(%ebp,%ebx,1),%esi
766	xorl	0x700(%ebp,%ecx,1),%esi
767	movl	(%esp),%ecx
768	xorl	0x400(%ebp,%eax,1),%esi
769	xorl	0x500(%ebp,%edx,1),%esi
770
771	movl	40(%ecx),%eax
772	xorl	%ebx,%ebx
773	movl	44(%ecx),%edx
774	xorl	%esi,%eax
775	xorl	%ecx,%ecx
776	xorl	%esi,%edx
777	andl	$0xfcfcfcfc,%eax
778	andl	$0xcfcfcfcf,%edx
779	movb	%al,%bl
780	movb	%ah,%cl
781	rorl	$4,%edx
782	xorl	(%ebp,%ebx,1),%edi
783	movb	%dl,%bl
784	xorl	0x200(%ebp,%ecx,1),%edi
785	movb	%dh,%cl
786	shrl	$16,%eax
787	xorl	0x100(%ebp,%ebx,1),%edi
788	movb	%ah,%bl
789	shrl	$16,%edx
790	xorl	0x300(%ebp,%ecx,1),%edi
791	movb	%dh,%cl
792	andl	$0xff,%eax
793	andl	$0xff,%edx
794	xorl	0x600(%ebp,%ebx,1),%edi
795	xorl	0x700(%ebp,%ecx,1),%edi
796	movl	(%esp),%ecx
797	xorl	0x400(%ebp,%eax,1),%edi
798	xorl	0x500(%ebp,%edx,1),%edi
799
800	movl	32(%ecx),%eax
801	xorl	%ebx,%ebx
802	movl	36(%ecx),%edx
803	xorl	%edi,%eax
804	xorl	%ecx,%ecx
805	xorl	%edi,%edx
806	andl	$0xfcfcfcfc,%eax
807	andl	$0xcfcfcfcf,%edx
808	movb	%al,%bl
809	movb	%ah,%cl
810	rorl	$4,%edx
811	xorl	(%ebp,%ebx,1),%esi
812	movb	%dl,%bl
813	xorl	0x200(%ebp,%ecx,1),%esi
814	movb	%dh,%cl
815	shrl	$16,%eax
816	xorl	0x100(%ebp,%ebx,1),%esi
817	movb	%ah,%bl
818	shrl	$16,%edx
819	xorl	0x300(%ebp,%ecx,1),%esi
820	movb	%dh,%cl
821	andl	$0xff,%eax
822	andl	$0xff,%edx
823	xorl	0x600(%ebp,%ebx,1),%esi
824	xorl	0x700(%ebp,%ecx,1),%esi
825	movl	(%esp),%ecx
826	xorl	0x400(%ebp,%eax,1),%esi
827	xorl	0x500(%ebp,%edx,1),%esi
828
829	movl	24(%ecx),%eax
830	xorl	%ebx,%ebx
831	movl	28(%ecx),%edx
832	xorl	%esi,%eax
833	xorl	%ecx,%ecx
834	xorl	%esi,%edx
835	andl	$0xfcfcfcfc,%eax
836	andl	$0xcfcfcfcf,%edx
837	movb	%al,%bl
838	movb	%ah,%cl
839	rorl	$4,%edx
840	xorl	(%ebp,%ebx,1),%edi
841	movb	%dl,%bl
842	xorl	0x200(%ebp,%ecx,1),%edi
843	movb	%dh,%cl
844	shrl	$16,%eax
845	xorl	0x100(%ebp,%ebx,1),%edi
846	movb	%ah,%bl
847	shrl	$16,%edx
848	xorl	0x300(%ebp,%ecx,1),%edi
849	movb	%dh,%cl
850	andl	$0xff,%eax
851	andl	$0xff,%edx
852	xorl	0x600(%ebp,%ebx,1),%edi
853	xorl	0x700(%ebp,%ecx,1),%edi
854	movl	(%esp),%ecx
855	xorl	0x400(%ebp,%eax,1),%edi
856	xorl	0x500(%ebp,%edx,1),%edi
857
858	movl	16(%ecx),%eax
859	xorl	%ebx,%ebx
860	movl	20(%ecx),%edx
861	xorl	%edi,%eax
862	xorl	%ecx,%ecx
863	xorl	%edi,%edx
864	andl	$0xfcfcfcfc,%eax
865	andl	$0xcfcfcfcf,%edx
866	movb	%al,%bl
867	movb	%ah,%cl
868	rorl	$4,%edx
869	xorl	(%ebp,%ebx,1),%esi
870	movb	%dl,%bl
871	xorl	0x200(%ebp,%ecx,1),%esi
872	movb	%dh,%cl
873	shrl	$16,%eax
874	xorl	0x100(%ebp,%ebx,1),%esi
875	movb	%ah,%bl
876	shrl	$16,%edx
877	xorl	0x300(%ebp,%ecx,1),%esi
878	movb	%dh,%cl
879	andl	$0xff,%eax
880	andl	$0xff,%edx
881	xorl	0x600(%ebp,%ebx,1),%esi
882	xorl	0x700(%ebp,%ecx,1),%esi
883	movl	(%esp),%ecx
884	xorl	0x400(%ebp,%eax,1),%esi
885	xorl	0x500(%ebp,%edx,1),%esi
886
887	movl	8(%ecx),%eax
888	xorl	%ebx,%ebx
889	movl	12(%ecx),%edx
890	xorl	%esi,%eax
891	xorl	%ecx,%ecx
892	xorl	%esi,%edx
893	andl	$0xfcfcfcfc,%eax
894	andl	$0xcfcfcfcf,%edx
895	movb	%al,%bl
896	movb	%ah,%cl
897	rorl	$4,%edx
898	xorl	(%ebp,%ebx,1),%edi
899	movb	%dl,%bl
900	xorl	0x200(%ebp,%ecx,1),%edi
901	movb	%dh,%cl
902	shrl	$16,%eax
903	xorl	0x100(%ebp,%ebx,1),%edi
904	movb	%ah,%bl
905	shrl	$16,%edx
906	xorl	0x300(%ebp,%ecx,1),%edi
907	movb	%dh,%cl
908	andl	$0xff,%eax
909	andl	$0xff,%edx
910	xorl	0x600(%ebp,%ebx,1),%edi
911	xorl	0x700(%ebp,%ecx,1),%edi
912	movl	(%esp),%ecx
913	xorl	0x400(%ebp,%eax,1),%edi
914	xorl	0x500(%ebp,%edx,1),%edi
915
916	movl	(%ecx),%eax
917	xorl	%ebx,%ebx
918	movl	4(%ecx),%edx
919	xorl	%edi,%eax
920	xorl	%ecx,%ecx
921	xorl	%edi,%edx
922	andl	$0xfcfcfcfc,%eax
923	andl	$0xcfcfcfcf,%edx
924	movb	%al,%bl
925	movb	%ah,%cl
926	rorl	$4,%edx
927	xorl	(%ebp,%ebx,1),%esi
928	movb	%dl,%bl
929	xorl	0x200(%ebp,%ecx,1),%esi
930	movb	%dh,%cl
931	shrl	$16,%eax
932	xorl	0x100(%ebp,%ebx,1),%esi
933	movb	%ah,%bl
934	shrl	$16,%edx
935	xorl	0x300(%ebp,%ecx,1),%esi
936	movb	%dh,%cl
937	andl	$0xff,%eax
938	andl	$0xff,%edx
939	xorl	0x600(%ebp,%ebx,1),%esi
940	xorl	0x700(%ebp,%ecx,1),%esi
941	movl	(%esp),%ecx
942	xorl	0x400(%ebp,%eax,1),%esi
943	xorl	0x500(%ebp,%edx,1),%esi
944	addl	$4,%esp
945	ret
946.size	_x86_DES_decrypt,.-_x86_DES_decrypt
947.globl	DES_encrypt1
948.type	DES_encrypt1,@function
949.align	16
950DES_encrypt1:
951.L_DES_encrypt1_begin:
952	pushl	%esi
953	pushl	%edi
954
955
956	movl	12(%esp),%esi
957	xorl	%ecx,%ecx
958	pushl	%ebx
959	pushl	%ebp
960	movl	(%esi),%eax
961	movl	28(%esp),%ebx
962	movl	4(%esi),%edi
963
964
965	roll	$4,%eax
966	movl	%eax,%esi
967	xorl	%edi,%eax
968	andl	$0xf0f0f0f0,%eax
969	xorl	%eax,%esi
970	xorl	%eax,%edi
971
972	roll	$20,%edi
973	movl	%edi,%eax
974	xorl	%esi,%edi
975	andl	$0xfff0000f,%edi
976	xorl	%edi,%eax
977	xorl	%edi,%esi
978
979	roll	$14,%eax
980	movl	%eax,%edi
981	xorl	%esi,%eax
982	andl	$0x33333333,%eax
983	xorl	%eax,%edi
984	xorl	%eax,%esi
985
986	roll	$22,%esi
987	movl	%esi,%eax
988	xorl	%edi,%esi
989	andl	$0x03fc03fc,%esi
990	xorl	%esi,%eax
991	xorl	%esi,%edi
992
993	roll	$9,%eax
994	movl	%eax,%esi
995	xorl	%edi,%eax
996	andl	$0xaaaaaaaa,%eax
997	xorl	%eax,%esi
998	xorl	%eax,%edi
999
1000	roll	$1,%edi
1001	call	.L000pic_point
1002.L000pic_point:
1003	popl	%ebp
1004	leal	.Ldes_sptrans-.L000pic_point(%ebp),%ebp
1005	movl	24(%esp),%ecx
1006	cmpl	$0,%ebx
1007	je	.L001decrypt
1008	call	_x86_DES_encrypt
1009	jmp	.L002done
1010.L001decrypt:
1011	call	_x86_DES_decrypt
1012.L002done:
1013
1014
1015	movl	20(%esp),%edx
1016	rorl	$1,%esi
1017	movl	%edi,%eax
1018	xorl	%esi,%edi
1019	andl	$0xaaaaaaaa,%edi
1020	xorl	%edi,%eax
1021	xorl	%edi,%esi
1022
1023	roll	$23,%eax
1024	movl	%eax,%edi
1025	xorl	%esi,%eax
1026	andl	$0x03fc03fc,%eax
1027	xorl	%eax,%edi
1028	xorl	%eax,%esi
1029
1030	roll	$10,%edi
1031	movl	%edi,%eax
1032	xorl	%esi,%edi
1033	andl	$0x33333333,%edi
1034	xorl	%edi,%eax
1035	xorl	%edi,%esi
1036
1037	roll	$18,%esi
1038	movl	%esi,%edi
1039	xorl	%eax,%esi
1040	andl	$0xfff0000f,%esi
1041	xorl	%esi,%edi
1042	xorl	%esi,%eax
1043
1044	roll	$12,%edi
1045	movl	%edi,%esi
1046	xorl	%eax,%edi
1047	andl	$0xf0f0f0f0,%edi
1048	xorl	%edi,%esi
1049	xorl	%edi,%eax
1050
1051	rorl	$4,%eax
1052	movl	%eax,(%edx)
1053	movl	%esi,4(%edx)
1054	popl	%ebp
1055	popl	%ebx
1056	popl	%edi
1057	popl	%esi
1058	ret
1059.size	DES_encrypt1,.-.L_DES_encrypt1_begin
1060.globl	DES_encrypt2
1061.type	DES_encrypt2,@function
1062.align	16
1063DES_encrypt2:
1064.L_DES_encrypt2_begin:
1065	pushl	%esi
1066	pushl	%edi
1067
1068
1069	movl	12(%esp),%eax
1070	xorl	%ecx,%ecx
1071	pushl	%ebx
1072	pushl	%ebp
1073	movl	(%eax),%esi
1074	movl	28(%esp),%ebx
1075	roll	$3,%esi
1076	movl	4(%eax),%edi
1077	roll	$3,%edi
1078	call	.L003pic_point
1079.L003pic_point:
1080	popl	%ebp
1081	leal	.Ldes_sptrans-.L003pic_point(%ebp),%ebp
1082	movl	24(%esp),%ecx
1083	cmpl	$0,%ebx
1084	je	.L004decrypt
1085	call	_x86_DES_encrypt
1086	jmp	.L005done
1087.L004decrypt:
1088	call	_x86_DES_decrypt
1089.L005done:
1090
1091
1092	rorl	$3,%edi
1093	movl	20(%esp),%eax
1094	rorl	$3,%esi
1095	movl	%edi,(%eax)
1096	movl	%esi,4(%eax)
1097	popl	%ebp
1098	popl	%ebx
1099	popl	%edi
1100	popl	%esi
1101	ret
1102.size	DES_encrypt2,.-.L_DES_encrypt2_begin
1103.globl	DES_encrypt3
1104.type	DES_encrypt3,@function
1105.align	16
1106DES_encrypt3:
1107.L_DES_encrypt3_begin:
1108	pushl	%ebx
1109	movl	8(%esp),%ebx
1110	pushl	%ebp
1111	pushl	%esi
1112	pushl	%edi
1113
1114
1115	movl	(%ebx),%edi
1116	movl	4(%ebx),%esi
1117	subl	$12,%esp
1118
1119
1120	roll	$4,%edi
1121	movl	%edi,%edx
1122	xorl	%esi,%edi
1123	andl	$0xf0f0f0f0,%edi
1124	xorl	%edi,%edx
1125	xorl	%edi,%esi
1126
1127	roll	$20,%esi
1128	movl	%esi,%edi
1129	xorl	%edx,%esi
1130	andl	$0xfff0000f,%esi
1131	xorl	%esi,%edi
1132	xorl	%esi,%edx
1133
1134	roll	$14,%edi
1135	movl	%edi,%esi
1136	xorl	%edx,%edi
1137	andl	$0x33333333,%edi
1138	xorl	%edi,%esi
1139	xorl	%edi,%edx
1140
1141	roll	$22,%edx
1142	movl	%edx,%edi
1143	xorl	%esi,%edx
1144	andl	$0x03fc03fc,%edx
1145	xorl	%edx,%edi
1146	xorl	%edx,%esi
1147
1148	roll	$9,%edi
1149	movl	%edi,%edx
1150	xorl	%esi,%edi
1151	andl	$0xaaaaaaaa,%edi
1152	xorl	%edi,%edx
1153	xorl	%edi,%esi
1154
1155	rorl	$3,%edx
1156	rorl	$2,%esi
1157	movl	%esi,4(%ebx)
1158	movl	36(%esp),%eax
1159	movl	%edx,(%ebx)
1160	movl	40(%esp),%edi
1161	movl	44(%esp),%esi
1162	movl	$1,8(%esp)
1163	movl	%eax,4(%esp)
1164	movl	%ebx,(%esp)
1165	call	.L_DES_encrypt2_begin
1166	movl	$0,8(%esp)
1167	movl	%edi,4(%esp)
1168	movl	%ebx,(%esp)
1169	call	.L_DES_encrypt2_begin
1170	movl	$1,8(%esp)
1171	movl	%esi,4(%esp)
1172	movl	%ebx,(%esp)
1173	call	.L_DES_encrypt2_begin
1174	addl	$12,%esp
1175	movl	(%ebx),%edi
1176	movl	4(%ebx),%esi
1177
1178
1179	roll	$2,%esi
1180	roll	$3,%edi
1181	movl	%edi,%eax
1182	xorl	%esi,%edi
1183	andl	$0xaaaaaaaa,%edi
1184	xorl	%edi,%eax
1185	xorl	%edi,%esi
1186
1187	roll	$23,%eax
1188	movl	%eax,%edi
1189	xorl	%esi,%eax
1190	andl	$0x03fc03fc,%eax
1191	xorl	%eax,%edi
1192	xorl	%eax,%esi
1193
1194	roll	$10,%edi
1195	movl	%edi,%eax
1196	xorl	%esi,%edi
1197	andl	$0x33333333,%edi
1198	xorl	%edi,%eax
1199	xorl	%edi,%esi
1200
1201	roll	$18,%esi
1202	movl	%esi,%edi
1203	xorl	%eax,%esi
1204	andl	$0xfff0000f,%esi
1205	xorl	%esi,%edi
1206	xorl	%esi,%eax
1207
1208	roll	$12,%edi
1209	movl	%edi,%esi
1210	xorl	%eax,%edi
1211	andl	$0xf0f0f0f0,%edi
1212	xorl	%edi,%esi
1213	xorl	%edi,%eax
1214
1215	rorl	$4,%eax
1216	movl	%eax,(%ebx)
1217	movl	%esi,4(%ebx)
1218	popl	%edi
1219	popl	%esi
1220	popl	%ebp
1221	popl	%ebx
1222	ret
1223.size	DES_encrypt3,.-.L_DES_encrypt3_begin
1224.globl	DES_decrypt3
1225.type	DES_decrypt3,@function
1226.align	16
1227DES_decrypt3:
1228.L_DES_decrypt3_begin:
1229	pushl	%ebx
1230	movl	8(%esp),%ebx
1231	pushl	%ebp
1232	pushl	%esi
1233	pushl	%edi
1234
1235
1236	movl	(%ebx),%edi
1237	movl	4(%ebx),%esi
1238	subl	$12,%esp
1239
1240
1241	roll	$4,%edi
1242	movl	%edi,%edx
1243	xorl	%esi,%edi
1244	andl	$0xf0f0f0f0,%edi
1245	xorl	%edi,%edx
1246	xorl	%edi,%esi
1247
1248	roll	$20,%esi
1249	movl	%esi,%edi
1250	xorl	%edx,%esi
1251	andl	$0xfff0000f,%esi
1252	xorl	%esi,%edi
1253	xorl	%esi,%edx
1254
1255	roll	$14,%edi
1256	movl	%edi,%esi
1257	xorl	%edx,%edi
1258	andl	$0x33333333,%edi
1259	xorl	%edi,%esi
1260	xorl	%edi,%edx
1261
1262	roll	$22,%edx
1263	movl	%edx,%edi
1264	xorl	%esi,%edx
1265	andl	$0x03fc03fc,%edx
1266	xorl	%edx,%edi
1267	xorl	%edx,%esi
1268
1269	roll	$9,%edi
1270	movl	%edi,%edx
1271	xorl	%esi,%edi
1272	andl	$0xaaaaaaaa,%edi
1273	xorl	%edi,%edx
1274	xorl	%edi,%esi
1275
1276	rorl	$3,%edx
1277	rorl	$2,%esi
1278	movl	%esi,4(%ebx)
1279	movl	36(%esp),%esi
1280	movl	%edx,(%ebx)
1281	movl	40(%esp),%edi
1282	movl	44(%esp),%eax
1283	movl	$0,8(%esp)
1284	movl	%eax,4(%esp)
1285	movl	%ebx,(%esp)
1286	call	.L_DES_encrypt2_begin
1287	movl	$1,8(%esp)
1288	movl	%edi,4(%esp)
1289	movl	%ebx,(%esp)
1290	call	.L_DES_encrypt2_begin
1291	movl	$0,8(%esp)
1292	movl	%esi,4(%esp)
1293	movl	%ebx,(%esp)
1294	call	.L_DES_encrypt2_begin
1295	addl	$12,%esp
1296	movl	(%ebx),%edi
1297	movl	4(%ebx),%esi
1298
1299
1300	roll	$2,%esi
1301	roll	$3,%edi
1302	movl	%edi,%eax
1303	xorl	%esi,%edi
1304	andl	$0xaaaaaaaa,%edi
1305	xorl	%edi,%eax
1306	xorl	%edi,%esi
1307
1308	roll	$23,%eax
1309	movl	%eax,%edi
1310	xorl	%esi,%eax
1311	andl	$0x03fc03fc,%eax
1312	xorl	%eax,%edi
1313	xorl	%eax,%esi
1314
1315	roll	$10,%edi
1316	movl	%edi,%eax
1317	xorl	%esi,%edi
1318	andl	$0x33333333,%edi
1319	xorl	%edi,%eax
1320	xorl	%edi,%esi
1321
1322	roll	$18,%esi
1323	movl	%esi,%edi
1324	xorl	%eax,%esi
1325	andl	$0xfff0000f,%esi
1326	xorl	%esi,%edi
1327	xorl	%esi,%eax
1328
1329	roll	$12,%edi
1330	movl	%edi,%esi
1331	xorl	%eax,%edi
1332	andl	$0xf0f0f0f0,%edi
1333	xorl	%edi,%esi
1334	xorl	%edi,%eax
1335
1336	rorl	$4,%eax
1337	movl	%eax,(%ebx)
1338	movl	%esi,4(%ebx)
1339	popl	%edi
1340	popl	%esi
1341	popl	%ebp
1342	popl	%ebx
1343	ret
1344.size	DES_decrypt3,.-.L_DES_decrypt3_begin
1345.globl	DES_ncbc_encrypt
1346.type	DES_ncbc_encrypt,@function
1347.align	16
1348DES_ncbc_encrypt:
1349.L_DES_ncbc_encrypt_begin:
1350
1351	pushl	%ebp
1352	pushl	%ebx
1353	pushl	%esi
1354	pushl	%edi
1355	movl	28(%esp),%ebp
1356
1357	movl	36(%esp),%ebx
1358	movl	(%ebx),%esi
1359	movl	4(%ebx),%edi
1360	pushl	%edi
1361	pushl	%esi
1362	pushl	%edi
1363	pushl	%esi
1364	movl	%esp,%ebx
1365	movl	36(%esp),%esi
1366	movl	40(%esp),%edi
1367
1368	movl	56(%esp),%ecx
1369
1370	pushl	%ecx
1371
1372	movl	52(%esp),%eax
1373	pushl	%eax
1374	pushl	%ebx
1375	cmpl	$0,%ecx
1376	jz	.L006decrypt
1377	andl	$4294967288,%ebp
1378	movl	12(%esp),%eax
1379	movl	16(%esp),%ebx
1380	jz	.L007encrypt_finish
1381.L008encrypt_loop:
1382	movl	(%esi),%ecx
1383	movl	4(%esi),%edx
1384	xorl	%ecx,%eax
1385	xorl	%edx,%ebx
1386	movl	%eax,12(%esp)
1387	movl	%ebx,16(%esp)
1388	call	.L_DES_encrypt1_begin
1389	movl	12(%esp),%eax
1390	movl	16(%esp),%ebx
1391	movl	%eax,(%edi)
1392	movl	%ebx,4(%edi)
1393	addl	$8,%esi
1394	addl	$8,%edi
1395	subl	$8,%ebp
1396	jnz	.L008encrypt_loop
1397.L007encrypt_finish:
1398	movl	56(%esp),%ebp
1399	andl	$7,%ebp
1400	jz	.L009finish
1401	call	.L010PIC_point
1402.L010PIC_point:
1403	popl	%edx
1404	leal	.L011cbc_enc_jmp_table-.L010PIC_point(%edx),%ecx
1405	movl	(%ecx,%ebp,4),%ebp
1406	addl	%edx,%ebp
1407	xorl	%ecx,%ecx
1408	xorl	%edx,%edx
1409	jmp	*%ebp
1410.L012ej7:
1411	movb	6(%esi),%dh
1412	shll	$8,%edx
1413.L013ej6:
1414	movb	5(%esi),%dh
1415.L014ej5:
1416	movb	4(%esi),%dl
1417.L015ej4:
1418	movl	(%esi),%ecx
1419	jmp	.L016ejend
1420.L017ej3:
1421	movb	2(%esi),%ch
1422	shll	$8,%ecx
1423.L018ej2:
1424	movb	1(%esi),%ch
1425.L019ej1:
1426	movb	(%esi),%cl
1427.L016ejend:
1428	xorl	%ecx,%eax
1429	xorl	%edx,%ebx
1430	movl	%eax,12(%esp)
1431	movl	%ebx,16(%esp)
1432	call	.L_DES_encrypt1_begin
1433	movl	12(%esp),%eax
1434	movl	16(%esp),%ebx
1435	movl	%eax,(%edi)
1436	movl	%ebx,4(%edi)
1437	jmp	.L009finish
1438.L006decrypt:
1439	andl	$4294967288,%ebp
1440	movl	20(%esp),%eax
1441	movl	24(%esp),%ebx
1442	jz	.L020decrypt_finish
1443.L021decrypt_loop:
1444	movl	(%esi),%eax
1445	movl	4(%esi),%ebx
1446	movl	%eax,12(%esp)
1447	movl	%ebx,16(%esp)
1448	call	.L_DES_encrypt1_begin
1449	movl	12(%esp),%eax
1450	movl	16(%esp),%ebx
1451	movl	20(%esp),%ecx
1452	movl	24(%esp),%edx
1453	xorl	%eax,%ecx
1454	xorl	%ebx,%edx
1455	movl	(%esi),%eax
1456	movl	4(%esi),%ebx
1457	movl	%ecx,(%edi)
1458	movl	%edx,4(%edi)
1459	movl	%eax,20(%esp)
1460	movl	%ebx,24(%esp)
1461	addl	$8,%esi
1462	addl	$8,%edi
1463	subl	$8,%ebp
1464	jnz	.L021decrypt_loop
1465.L020decrypt_finish:
1466	movl	56(%esp),%ebp
1467	andl	$7,%ebp
1468	jz	.L009finish
1469	movl	(%esi),%eax
1470	movl	4(%esi),%ebx
1471	movl	%eax,12(%esp)
1472	movl	%ebx,16(%esp)
1473	call	.L_DES_encrypt1_begin
1474	movl	12(%esp),%eax
1475	movl	16(%esp),%ebx
1476	movl	20(%esp),%ecx
1477	movl	24(%esp),%edx
1478	xorl	%eax,%ecx
1479	xorl	%ebx,%edx
1480	movl	(%esi),%eax
1481	movl	4(%esi),%ebx
1482.L022dj7:
1483	rorl	$16,%edx
1484	movb	%dl,6(%edi)
1485	shrl	$16,%edx
1486.L023dj6:
1487	movb	%dh,5(%edi)
1488.L024dj5:
1489	movb	%dl,4(%edi)
1490.L025dj4:
1491	movl	%ecx,(%edi)
1492	jmp	.L026djend
1493.L027dj3:
1494	rorl	$16,%ecx
1495	movb	%cl,2(%edi)
1496	shll	$16,%ecx
1497.L028dj2:
1498	movb	%ch,1(%esi)
1499.L029dj1:
1500	movb	%cl,(%esi)
1501.L026djend:
1502	jmp	.L009finish
1503.L009finish:
1504	movl	64(%esp),%ecx
1505	addl	$28,%esp
1506	movl	%eax,(%ecx)
1507	movl	%ebx,4(%ecx)
1508	popl	%edi
1509	popl	%esi
1510	popl	%ebx
1511	popl	%ebp
1512	ret
1513.align	64
1514.L011cbc_enc_jmp_table:
1515.long	0
1516.long	.L019ej1-.L010PIC_point
1517.long	.L018ej2-.L010PIC_point
1518.long	.L017ej3-.L010PIC_point
1519.long	.L015ej4-.L010PIC_point
1520.long	.L014ej5-.L010PIC_point
1521.long	.L013ej6-.L010PIC_point
1522.long	.L012ej7-.L010PIC_point
1523.align	64
1524.size	DES_ncbc_encrypt,.-.L_DES_ncbc_encrypt_begin
1525.globl	DES_ede3_cbc_encrypt
1526.type	DES_ede3_cbc_encrypt,@function
1527.align	16
1528DES_ede3_cbc_encrypt:
1529.L_DES_ede3_cbc_encrypt_begin:
1530
1531	pushl	%ebp
1532	pushl	%ebx
1533	pushl	%esi
1534	pushl	%edi
1535	movl	28(%esp),%ebp
1536
1537	movl	44(%esp),%ebx
1538	movl	(%ebx),%esi
1539	movl	4(%ebx),%edi
1540	pushl	%edi
1541	pushl	%esi
1542	pushl	%edi
1543	pushl	%esi
1544	movl	%esp,%ebx
1545	movl	36(%esp),%esi
1546	movl	40(%esp),%edi
1547
1548	movl	64(%esp),%ecx
1549
1550	movl	56(%esp),%eax
1551	pushl	%eax
1552
1553	movl	56(%esp),%eax
1554	pushl	%eax
1555
1556	movl	56(%esp),%eax
1557	pushl	%eax
1558	pushl	%ebx
1559	cmpl	$0,%ecx
1560	jz	.L030decrypt
1561	andl	$4294967288,%ebp
1562	movl	16(%esp),%eax
1563	movl	20(%esp),%ebx
1564	jz	.L031encrypt_finish
1565.L032encrypt_loop:
1566	movl	(%esi),%ecx
1567	movl	4(%esi),%edx
1568	xorl	%ecx,%eax
1569	xorl	%edx,%ebx
1570	movl	%eax,16(%esp)
1571	movl	%ebx,20(%esp)
1572	call	.L_DES_encrypt3_begin
1573	movl	16(%esp),%eax
1574	movl	20(%esp),%ebx
1575	movl	%eax,(%edi)
1576	movl	%ebx,4(%edi)
1577	addl	$8,%esi
1578	addl	$8,%edi
1579	subl	$8,%ebp
1580	jnz	.L032encrypt_loop
1581.L031encrypt_finish:
1582	movl	60(%esp),%ebp
1583	andl	$7,%ebp
1584	jz	.L033finish
1585	call	.L034PIC_point
1586.L034PIC_point:
1587	popl	%edx
1588	leal	.L035cbc_enc_jmp_table-.L034PIC_point(%edx),%ecx
1589	movl	(%ecx,%ebp,4),%ebp
1590	addl	%edx,%ebp
1591	xorl	%ecx,%ecx
1592	xorl	%edx,%edx
1593	jmp	*%ebp
1594.L036ej7:
1595	movb	6(%esi),%dh
1596	shll	$8,%edx
1597.L037ej6:
1598	movb	5(%esi),%dh
1599.L038ej5:
1600	movb	4(%esi),%dl
1601.L039ej4:
1602	movl	(%esi),%ecx
1603	jmp	.L040ejend
1604.L041ej3:
1605	movb	2(%esi),%ch
1606	shll	$8,%ecx
1607.L042ej2:
1608	movb	1(%esi),%ch
1609.L043ej1:
1610	movb	(%esi),%cl
1611.L040ejend:
1612	xorl	%ecx,%eax
1613	xorl	%edx,%ebx
1614	movl	%eax,16(%esp)
1615	movl	%ebx,20(%esp)
1616	call	.L_DES_encrypt3_begin
1617	movl	16(%esp),%eax
1618	movl	20(%esp),%ebx
1619	movl	%eax,(%edi)
1620	movl	%ebx,4(%edi)
1621	jmp	.L033finish
1622.L030decrypt:
1623	andl	$4294967288,%ebp
1624	movl	24(%esp),%eax
1625	movl	28(%esp),%ebx
1626	jz	.L044decrypt_finish
1627.L045decrypt_loop:
1628	movl	(%esi),%eax
1629	movl	4(%esi),%ebx
1630	movl	%eax,16(%esp)
1631	movl	%ebx,20(%esp)
1632	call	.L_DES_decrypt3_begin
1633	movl	16(%esp),%eax
1634	movl	20(%esp),%ebx
1635	movl	24(%esp),%ecx
1636	movl	28(%esp),%edx
1637	xorl	%eax,%ecx
1638	xorl	%ebx,%edx
1639	movl	(%esi),%eax
1640	movl	4(%esi),%ebx
1641	movl	%ecx,(%edi)
1642	movl	%edx,4(%edi)
1643	movl	%eax,24(%esp)
1644	movl	%ebx,28(%esp)
1645	addl	$8,%esi
1646	addl	$8,%edi
1647	subl	$8,%ebp
1648	jnz	.L045decrypt_loop
1649.L044decrypt_finish:
1650	movl	60(%esp),%ebp
1651	andl	$7,%ebp
1652	jz	.L033finish
1653	movl	(%esi),%eax
1654	movl	4(%esi),%ebx
1655	movl	%eax,16(%esp)
1656	movl	%ebx,20(%esp)
1657	call	.L_DES_decrypt3_begin
1658	movl	16(%esp),%eax
1659	movl	20(%esp),%ebx
1660	movl	24(%esp),%ecx
1661	movl	28(%esp),%edx
1662	xorl	%eax,%ecx
1663	xorl	%ebx,%edx
1664	movl	(%esi),%eax
1665	movl	4(%esi),%ebx
1666.L046dj7:
1667	rorl	$16,%edx
1668	movb	%dl,6(%edi)
1669	shrl	$16,%edx
1670.L047dj6:
1671	movb	%dh,5(%edi)
1672.L048dj5:
1673	movb	%dl,4(%edi)
1674.L049dj4:
1675	movl	%ecx,(%edi)
1676	jmp	.L050djend
1677.L051dj3:
1678	rorl	$16,%ecx
1679	movb	%cl,2(%edi)
1680	shll	$16,%ecx
1681.L052dj2:
1682	movb	%ch,1(%esi)
1683.L053dj1:
1684	movb	%cl,(%esi)
1685.L050djend:
1686	jmp	.L033finish
1687.L033finish:
1688	movl	76(%esp),%ecx
1689	addl	$32,%esp
1690	movl	%eax,(%ecx)
1691	movl	%ebx,4(%ecx)
1692	popl	%edi
1693	popl	%esi
1694	popl	%ebx
1695	popl	%ebp
1696	ret
1697.align	64
1698.L035cbc_enc_jmp_table:
1699.long	0
1700.long	.L043ej1-.L034PIC_point
1701.long	.L042ej2-.L034PIC_point
1702.long	.L041ej3-.L034PIC_point
1703.long	.L039ej4-.L034PIC_point
1704.long	.L038ej5-.L034PIC_point
1705.long	.L037ej6-.L034PIC_point
1706.long	.L036ej7-.L034PIC_point
1707.align	64
1708.size	DES_ede3_cbc_encrypt,.-.L_DES_ede3_cbc_encrypt_begin
1709.align	64
1710DES_SPtrans:
1711.Ldes_sptrans:
1712.long	34080768,524288,33554434,34080770
1713.long	33554432,526338,524290,33554434
1714.long	526338,34080768,34078720,2050
1715.long	33556482,33554432,0,524290
1716.long	524288,2,33556480,526336
1717.long	34080770,34078720,2050,33556480
1718.long	2,2048,526336,34078722
1719.long	2048,33556482,34078722,0
1720.long	0,34080770,33556480,524290
1721.long	34080768,524288,2050,33556480
1722.long	34078722,2048,526336,33554434
1723.long	526338,2,33554434,34078720
1724.long	34080770,526336,34078720,33556482
1725.long	33554432,2050,524290,0
1726.long	524288,33554432,33556482,34080768
1727.long	2,34078722,2048,526338
1728.long	1074823184,0,1081344,1074790400
1729.long	1073741840,32784,1073774592,1081344
1730.long	32768,1074790416,16,1073774592
1731.long	1048592,1074823168,1074790400,16
1732.long	1048576,1073774608,1074790416,32768
1733.long	1081360,1073741824,0,1048592
1734.long	1073774608,1081360,1074823168,1073741840
1735.long	1073741824,1048576,32784,1074823184
1736.long	1048592,1074823168,1073774592,1081360
1737.long	1074823184,1048592,1073741840,0
1738.long	1073741824,32784,1048576,1074790416
1739.long	32768,1073741824,1081360,1073774608
1740.long	1074823168,32768,0,1073741840
1741.long	16,1074823184,1081344,1074790400
1742.long	1074790416,1048576,32784,1073774592
1743.long	1073774608,16,1074790400,1081344
1744.long	67108865,67371264,256,67109121
1745.long	262145,67108864,67109121,262400
1746.long	67109120,262144,67371008,1
1747.long	67371265,257,1,67371009
1748.long	0,262145,67371264,256
1749.long	257,67371265,262144,67108865
1750.long	67371009,67109120,262401,67371008
1751.long	262400,0,67108864,262401
1752.long	67371264,256,1,262144
1753.long	257,262145,67371008,67109121
1754.long	0,67371264,262400,67371009
1755.long	262145,67108864,67371265,1
1756.long	262401,67108865,67108864,67371265
1757.long	262144,67109120,67109121,262400
1758.long	67109120,0,67371009,257
1759.long	67108865,262401,256,67371008
1760.long	4198408,268439552,8,272633864
1761.long	0,272629760,268439560,4194312
1762.long	272633856,268435464,268435456,4104
1763.long	268435464,4198408,4194304,268435456
1764.long	272629768,4198400,4096,8
1765.long	4198400,268439560,272629760,4096
1766.long	4104,0,4194312,272633856
1767.long	268439552,272629768,272633864,4194304
1768.long	272629768,4104,4194304,268435464
1769.long	4198400,268439552,8,272629760
1770.long	268439560,0,4096,4194312
1771.long	0,272629768,272633856,4096
1772.long	268435456,272633864,4198408,4194304
1773.long	272633864,8,268439552,4198408
1774.long	4194312,4198400,272629760,268439560
1775.long	4104,268435456,268435464,272633856
1776.long	134217728,65536,1024,134284320
1777.long	134283296,134218752,66592,134283264
1778.long	65536,32,134217760,66560
1779.long	134218784,134283296,134284288,0
1780.long	66560,134217728,65568,1056
1781.long	134218752,66592,0,134217760
1782.long	32,134218784,134284320,65568
1783.long	134283264,1024,1056,134284288
1784.long	134284288,134218784,65568,134283264
1785.long	65536,32,134217760,134218752
1786.long	134217728,66560,134284320,0
1787.long	66592,134217728,1024,65568
1788.long	134218784,1024,0,134284320
1789.long	134283296,134284288,1056,65536
1790.long	66560,134283296,134218752,1056
1791.long	32,66592,134283264,134217760
1792.long	2147483712,2097216,0,2149588992
1793.long	2097216,8192,2147491904,2097152
1794.long	8256,2149589056,2105344,2147483648
1795.long	2147491840,2147483712,2149580800,2105408
1796.long	2097152,2147491904,2149580864,0
1797.long	8192,64,2149588992,2149580864
1798.long	2149589056,2149580800,2147483648,8256
1799.long	64,2105344,2105408,2147491840
1800.long	8256,2147483648,2147491840,2105408
1801.long	2149588992,2097216,0,2147491840
1802.long	2147483648,8192,2149580864,2097152
1803.long	2097216,2149589056,2105344,64
1804.long	2149589056,2105344,2097152,2147491904
1805.long	2147483712,2149580800,2105408,0
1806.long	8192,2147483712,2147491904,2149588992
1807.long	2149580800,8256,64,2149580864
1808.long	16384,512,16777728,16777220
1809.long	16794116,16388,16896,0
1810.long	16777216,16777732,516,16793600
1811.long	4,16794112,16793600,516
1812.long	16777732,16384,16388,16794116
1813.long	0,16777728,16777220,16896
1814.long	16793604,16900,16794112,4
1815.long	16900,16793604,512,16777216
1816.long	16900,16793600,16793604,516
1817.long	16384,512,16777216,16793604
1818.long	16777732,16900,16896,0
1819.long	512,16777220,4,16777728
1820.long	0,16777732,16777728,16896
1821.long	516,16384,16794116,16777216
1822.long	16794112,4,16388,16794116
1823.long	16777220,16794112,16793600,16388
1824.long	545259648,545390592,131200,0
1825.long	537001984,8388736,545259520,545390720
1826.long	128,536870912,8519680,131200
1827.long	8519808,537002112,536871040,545259520
1828.long	131072,8519808,8388736,537001984
1829.long	545390720,536871040,0,8519680
1830.long	536870912,8388608,537002112,545259648
1831.long	8388608,131072,545390592,128
1832.long	8388608,131072,536871040,545390720
1833.long	131200,536870912,0,8519680
1834.long	545259648,537002112,537001984,8388736
1835.long	545390592,128,8388736,537001984
1836.long	545390720,8388608,545259520,536871040
1837.long	8519680,131200,537002112,545259520
1838.long	128,545390592,8519808,0
1839.long	536870912,545259648,131072,8519808
1840#else
1841.text
1842.globl	DES_SPtrans
1843.type	_x86_DES_encrypt,@function
1844.align	16
1845_x86_DES_encrypt:
1846	pushl	%ecx
1847
1848	movl	(%ecx),%eax
1849	xorl	%ebx,%ebx
1850	movl	4(%ecx),%edx
1851	xorl	%esi,%eax
1852	xorl	%ecx,%ecx
1853	xorl	%esi,%edx
1854	andl	$0xfcfcfcfc,%eax
1855	andl	$0xcfcfcfcf,%edx
1856	movb	%al,%bl
1857	movb	%ah,%cl
1858	rorl	$4,%edx
1859	xorl	(%ebp,%ebx,1),%edi
1860	movb	%dl,%bl
1861	xorl	0x200(%ebp,%ecx,1),%edi
1862	movb	%dh,%cl
1863	shrl	$16,%eax
1864	xorl	0x100(%ebp,%ebx,1),%edi
1865	movb	%ah,%bl
1866	shrl	$16,%edx
1867	xorl	0x300(%ebp,%ecx,1),%edi
1868	movb	%dh,%cl
1869	andl	$0xff,%eax
1870	andl	$0xff,%edx
1871	xorl	0x600(%ebp,%ebx,1),%edi
1872	xorl	0x700(%ebp,%ecx,1),%edi
1873	movl	(%esp),%ecx
1874	xorl	0x400(%ebp,%eax,1),%edi
1875	xorl	0x500(%ebp,%edx,1),%edi
1876
1877	movl	8(%ecx),%eax
1878	xorl	%ebx,%ebx
1879	movl	12(%ecx),%edx
1880	xorl	%edi,%eax
1881	xorl	%ecx,%ecx
1882	xorl	%edi,%edx
1883	andl	$0xfcfcfcfc,%eax
1884	andl	$0xcfcfcfcf,%edx
1885	movb	%al,%bl
1886	movb	%ah,%cl
1887	rorl	$4,%edx
1888	xorl	(%ebp,%ebx,1),%esi
1889	movb	%dl,%bl
1890	xorl	0x200(%ebp,%ecx,1),%esi
1891	movb	%dh,%cl
1892	shrl	$16,%eax
1893	xorl	0x100(%ebp,%ebx,1),%esi
1894	movb	%ah,%bl
1895	shrl	$16,%edx
1896	xorl	0x300(%ebp,%ecx,1),%esi
1897	movb	%dh,%cl
1898	andl	$0xff,%eax
1899	andl	$0xff,%edx
1900	xorl	0x600(%ebp,%ebx,1),%esi
1901	xorl	0x700(%ebp,%ecx,1),%esi
1902	movl	(%esp),%ecx
1903	xorl	0x400(%ebp,%eax,1),%esi
1904	xorl	0x500(%ebp,%edx,1),%esi
1905
1906	movl	16(%ecx),%eax
1907	xorl	%ebx,%ebx
1908	movl	20(%ecx),%edx
1909	xorl	%esi,%eax
1910	xorl	%ecx,%ecx
1911	xorl	%esi,%edx
1912	andl	$0xfcfcfcfc,%eax
1913	andl	$0xcfcfcfcf,%edx
1914	movb	%al,%bl
1915	movb	%ah,%cl
1916	rorl	$4,%edx
1917	xorl	(%ebp,%ebx,1),%edi
1918	movb	%dl,%bl
1919	xorl	0x200(%ebp,%ecx,1),%edi
1920	movb	%dh,%cl
1921	shrl	$16,%eax
1922	xorl	0x100(%ebp,%ebx,1),%edi
1923	movb	%ah,%bl
1924	shrl	$16,%edx
1925	xorl	0x300(%ebp,%ecx,1),%edi
1926	movb	%dh,%cl
1927	andl	$0xff,%eax
1928	andl	$0xff,%edx
1929	xorl	0x600(%ebp,%ebx,1),%edi
1930	xorl	0x700(%ebp,%ecx,1),%edi
1931	movl	(%esp),%ecx
1932	xorl	0x400(%ebp,%eax,1),%edi
1933	xorl	0x500(%ebp,%edx,1),%edi
1934
1935	movl	24(%ecx),%eax
1936	xorl	%ebx,%ebx
1937	movl	28(%ecx),%edx
1938	xorl	%edi,%eax
1939	xorl	%ecx,%ecx
1940	xorl	%edi,%edx
1941	andl	$0xfcfcfcfc,%eax
1942	andl	$0xcfcfcfcf,%edx
1943	movb	%al,%bl
1944	movb	%ah,%cl
1945	rorl	$4,%edx
1946	xorl	(%ebp,%ebx,1),%esi
1947	movb	%dl,%bl
1948	xorl	0x200(%ebp,%ecx,1),%esi
1949	movb	%dh,%cl
1950	shrl	$16,%eax
1951	xorl	0x100(%ebp,%ebx,1),%esi
1952	movb	%ah,%bl
1953	shrl	$16,%edx
1954	xorl	0x300(%ebp,%ecx,1),%esi
1955	movb	%dh,%cl
1956	andl	$0xff,%eax
1957	andl	$0xff,%edx
1958	xorl	0x600(%ebp,%ebx,1),%esi
1959	xorl	0x700(%ebp,%ecx,1),%esi
1960	movl	(%esp),%ecx
1961	xorl	0x400(%ebp,%eax,1),%esi
1962	xorl	0x500(%ebp,%edx,1),%esi
1963
1964	movl	32(%ecx),%eax
1965	xorl	%ebx,%ebx
1966	movl	36(%ecx),%edx
1967	xorl	%esi,%eax
1968	xorl	%ecx,%ecx
1969	xorl	%esi,%edx
1970	andl	$0xfcfcfcfc,%eax
1971	andl	$0xcfcfcfcf,%edx
1972	movb	%al,%bl
1973	movb	%ah,%cl
1974	rorl	$4,%edx
1975	xorl	(%ebp,%ebx,1),%edi
1976	movb	%dl,%bl
1977	xorl	0x200(%ebp,%ecx,1),%edi
1978	movb	%dh,%cl
1979	shrl	$16,%eax
1980	xorl	0x100(%ebp,%ebx,1),%edi
1981	movb	%ah,%bl
1982	shrl	$16,%edx
1983	xorl	0x300(%ebp,%ecx,1),%edi
1984	movb	%dh,%cl
1985	andl	$0xff,%eax
1986	andl	$0xff,%edx
1987	xorl	0x600(%ebp,%ebx,1),%edi
1988	xorl	0x700(%ebp,%ecx,1),%edi
1989	movl	(%esp),%ecx
1990	xorl	0x400(%ebp,%eax,1),%edi
1991	xorl	0x500(%ebp,%edx,1),%edi
1992
1993	movl	40(%ecx),%eax
1994	xorl	%ebx,%ebx
1995	movl	44(%ecx),%edx
1996	xorl	%edi,%eax
1997	xorl	%ecx,%ecx
1998	xorl	%edi,%edx
1999	andl	$0xfcfcfcfc,%eax
2000	andl	$0xcfcfcfcf,%edx
2001	movb	%al,%bl
2002	movb	%ah,%cl
2003	rorl	$4,%edx
2004	xorl	(%ebp,%ebx,1),%esi
2005	movb	%dl,%bl
2006	xorl	0x200(%ebp,%ecx,1),%esi
2007	movb	%dh,%cl
2008	shrl	$16,%eax
2009	xorl	0x100(%ebp,%ebx,1),%esi
2010	movb	%ah,%bl
2011	shrl	$16,%edx
2012	xorl	0x300(%ebp,%ecx,1),%esi
2013	movb	%dh,%cl
2014	andl	$0xff,%eax
2015	andl	$0xff,%edx
2016	xorl	0x600(%ebp,%ebx,1),%esi
2017	xorl	0x700(%ebp,%ecx,1),%esi
2018	movl	(%esp),%ecx
2019	xorl	0x400(%ebp,%eax,1),%esi
2020	xorl	0x500(%ebp,%edx,1),%esi
2021
2022	movl	48(%ecx),%eax
2023	xorl	%ebx,%ebx
2024	movl	52(%ecx),%edx
2025	xorl	%esi,%eax
2026	xorl	%ecx,%ecx
2027	xorl	%esi,%edx
2028	andl	$0xfcfcfcfc,%eax
2029	andl	$0xcfcfcfcf,%edx
2030	movb	%al,%bl
2031	movb	%ah,%cl
2032	rorl	$4,%edx
2033	xorl	(%ebp,%ebx,1),%edi
2034	movb	%dl,%bl
2035	xorl	0x200(%ebp,%ecx,1),%edi
2036	movb	%dh,%cl
2037	shrl	$16,%eax
2038	xorl	0x100(%ebp,%ebx,1),%edi
2039	movb	%ah,%bl
2040	shrl	$16,%edx
2041	xorl	0x300(%ebp,%ecx,1),%edi
2042	movb	%dh,%cl
2043	andl	$0xff,%eax
2044	andl	$0xff,%edx
2045	xorl	0x600(%ebp,%ebx,1),%edi
2046	xorl	0x700(%ebp,%ecx,1),%edi
2047	movl	(%esp),%ecx
2048	xorl	0x400(%ebp,%eax,1),%edi
2049	xorl	0x500(%ebp,%edx,1),%edi
2050
2051	movl	56(%ecx),%eax
2052	xorl	%ebx,%ebx
2053	movl	60(%ecx),%edx
2054	xorl	%edi,%eax
2055	xorl	%ecx,%ecx
2056	xorl	%edi,%edx
2057	andl	$0xfcfcfcfc,%eax
2058	andl	$0xcfcfcfcf,%edx
2059	movb	%al,%bl
2060	movb	%ah,%cl
2061	rorl	$4,%edx
2062	xorl	(%ebp,%ebx,1),%esi
2063	movb	%dl,%bl
2064	xorl	0x200(%ebp,%ecx,1),%esi
2065	movb	%dh,%cl
2066	shrl	$16,%eax
2067	xorl	0x100(%ebp,%ebx,1),%esi
2068	movb	%ah,%bl
2069	shrl	$16,%edx
2070	xorl	0x300(%ebp,%ecx,1),%esi
2071	movb	%dh,%cl
2072	andl	$0xff,%eax
2073	andl	$0xff,%edx
2074	xorl	0x600(%ebp,%ebx,1),%esi
2075	xorl	0x700(%ebp,%ecx,1),%esi
2076	movl	(%esp),%ecx
2077	xorl	0x400(%ebp,%eax,1),%esi
2078	xorl	0x500(%ebp,%edx,1),%esi
2079
2080	movl	64(%ecx),%eax
2081	xorl	%ebx,%ebx
2082	movl	68(%ecx),%edx
2083	xorl	%esi,%eax
2084	xorl	%ecx,%ecx
2085	xorl	%esi,%edx
2086	andl	$0xfcfcfcfc,%eax
2087	andl	$0xcfcfcfcf,%edx
2088	movb	%al,%bl
2089	movb	%ah,%cl
2090	rorl	$4,%edx
2091	xorl	(%ebp,%ebx,1),%edi
2092	movb	%dl,%bl
2093	xorl	0x200(%ebp,%ecx,1),%edi
2094	movb	%dh,%cl
2095	shrl	$16,%eax
2096	xorl	0x100(%ebp,%ebx,1),%edi
2097	movb	%ah,%bl
2098	shrl	$16,%edx
2099	xorl	0x300(%ebp,%ecx,1),%edi
2100	movb	%dh,%cl
2101	andl	$0xff,%eax
2102	andl	$0xff,%edx
2103	xorl	0x600(%ebp,%ebx,1),%edi
2104	xorl	0x700(%ebp,%ecx,1),%edi
2105	movl	(%esp),%ecx
2106	xorl	0x400(%ebp,%eax,1),%edi
2107	xorl	0x500(%ebp,%edx,1),%edi
2108
2109	movl	72(%ecx),%eax
2110	xorl	%ebx,%ebx
2111	movl	76(%ecx),%edx
2112	xorl	%edi,%eax
2113	xorl	%ecx,%ecx
2114	xorl	%edi,%edx
2115	andl	$0xfcfcfcfc,%eax
2116	andl	$0xcfcfcfcf,%edx
2117	movb	%al,%bl
2118	movb	%ah,%cl
2119	rorl	$4,%edx
2120	xorl	(%ebp,%ebx,1),%esi
2121	movb	%dl,%bl
2122	xorl	0x200(%ebp,%ecx,1),%esi
2123	movb	%dh,%cl
2124	shrl	$16,%eax
2125	xorl	0x100(%ebp,%ebx,1),%esi
2126	movb	%ah,%bl
2127	shrl	$16,%edx
2128	xorl	0x300(%ebp,%ecx,1),%esi
2129	movb	%dh,%cl
2130	andl	$0xff,%eax
2131	andl	$0xff,%edx
2132	xorl	0x600(%ebp,%ebx,1),%esi
2133	xorl	0x700(%ebp,%ecx,1),%esi
2134	movl	(%esp),%ecx
2135	xorl	0x400(%ebp,%eax,1),%esi
2136	xorl	0x500(%ebp,%edx,1),%esi
2137
2138	movl	80(%ecx),%eax
2139	xorl	%ebx,%ebx
2140	movl	84(%ecx),%edx
2141	xorl	%esi,%eax
2142	xorl	%ecx,%ecx
2143	xorl	%esi,%edx
2144	andl	$0xfcfcfcfc,%eax
2145	andl	$0xcfcfcfcf,%edx
2146	movb	%al,%bl
2147	movb	%ah,%cl
2148	rorl	$4,%edx
2149	xorl	(%ebp,%ebx,1),%edi
2150	movb	%dl,%bl
2151	xorl	0x200(%ebp,%ecx,1),%edi
2152	movb	%dh,%cl
2153	shrl	$16,%eax
2154	xorl	0x100(%ebp,%ebx,1),%edi
2155	movb	%ah,%bl
2156	shrl	$16,%edx
2157	xorl	0x300(%ebp,%ecx,1),%edi
2158	movb	%dh,%cl
2159	andl	$0xff,%eax
2160	andl	$0xff,%edx
2161	xorl	0x600(%ebp,%ebx,1),%edi
2162	xorl	0x700(%ebp,%ecx,1),%edi
2163	movl	(%esp),%ecx
2164	xorl	0x400(%ebp,%eax,1),%edi
2165	xorl	0x500(%ebp,%edx,1),%edi
2166
2167	movl	88(%ecx),%eax
2168	xorl	%ebx,%ebx
2169	movl	92(%ecx),%edx
2170	xorl	%edi,%eax
2171	xorl	%ecx,%ecx
2172	xorl	%edi,%edx
2173	andl	$0xfcfcfcfc,%eax
2174	andl	$0xcfcfcfcf,%edx
2175	movb	%al,%bl
2176	movb	%ah,%cl
2177	rorl	$4,%edx
2178	xorl	(%ebp,%ebx,1),%esi
2179	movb	%dl,%bl
2180	xorl	0x200(%ebp,%ecx,1),%esi
2181	movb	%dh,%cl
2182	shrl	$16,%eax
2183	xorl	0x100(%ebp,%ebx,1),%esi
2184	movb	%ah,%bl
2185	shrl	$16,%edx
2186	xorl	0x300(%ebp,%ecx,1),%esi
2187	movb	%dh,%cl
2188	andl	$0xff,%eax
2189	andl	$0xff,%edx
2190	xorl	0x600(%ebp,%ebx,1),%esi
2191	xorl	0x700(%ebp,%ecx,1),%esi
2192	movl	(%esp),%ecx
2193	xorl	0x400(%ebp,%eax,1),%esi
2194	xorl	0x500(%ebp,%edx,1),%esi
2195
2196	movl	96(%ecx),%eax
2197	xorl	%ebx,%ebx
2198	movl	100(%ecx),%edx
2199	xorl	%esi,%eax
2200	xorl	%ecx,%ecx
2201	xorl	%esi,%edx
2202	andl	$0xfcfcfcfc,%eax
2203	andl	$0xcfcfcfcf,%edx
2204	movb	%al,%bl
2205	movb	%ah,%cl
2206	rorl	$4,%edx
2207	xorl	(%ebp,%ebx,1),%edi
2208	movb	%dl,%bl
2209	xorl	0x200(%ebp,%ecx,1),%edi
2210	movb	%dh,%cl
2211	shrl	$16,%eax
2212	xorl	0x100(%ebp,%ebx,1),%edi
2213	movb	%ah,%bl
2214	shrl	$16,%edx
2215	xorl	0x300(%ebp,%ecx,1),%edi
2216	movb	%dh,%cl
2217	andl	$0xff,%eax
2218	andl	$0xff,%edx
2219	xorl	0x600(%ebp,%ebx,1),%edi
2220	xorl	0x700(%ebp,%ecx,1),%edi
2221	movl	(%esp),%ecx
2222	xorl	0x400(%ebp,%eax,1),%edi
2223	xorl	0x500(%ebp,%edx,1),%edi
2224
2225	movl	104(%ecx),%eax
2226	xorl	%ebx,%ebx
2227	movl	108(%ecx),%edx
2228	xorl	%edi,%eax
2229	xorl	%ecx,%ecx
2230	xorl	%edi,%edx
2231	andl	$0xfcfcfcfc,%eax
2232	andl	$0xcfcfcfcf,%edx
2233	movb	%al,%bl
2234	movb	%ah,%cl
2235	rorl	$4,%edx
2236	xorl	(%ebp,%ebx,1),%esi
2237	movb	%dl,%bl
2238	xorl	0x200(%ebp,%ecx,1),%esi
2239	movb	%dh,%cl
2240	shrl	$16,%eax
2241	xorl	0x100(%ebp,%ebx,1),%esi
2242	movb	%ah,%bl
2243	shrl	$16,%edx
2244	xorl	0x300(%ebp,%ecx,1),%esi
2245	movb	%dh,%cl
2246	andl	$0xff,%eax
2247	andl	$0xff,%edx
2248	xorl	0x600(%ebp,%ebx,1),%esi
2249	xorl	0x700(%ebp,%ecx,1),%esi
2250	movl	(%esp),%ecx
2251	xorl	0x400(%ebp,%eax,1),%esi
2252	xorl	0x500(%ebp,%edx,1),%esi
2253
2254	movl	112(%ecx),%eax
2255	xorl	%ebx,%ebx
2256	movl	116(%ecx),%edx
2257	xorl	%esi,%eax
2258	xorl	%ecx,%ecx
2259	xorl	%esi,%edx
2260	andl	$0xfcfcfcfc,%eax
2261	andl	$0xcfcfcfcf,%edx
2262	movb	%al,%bl
2263	movb	%ah,%cl
2264	rorl	$4,%edx
2265	xorl	(%ebp,%ebx,1),%edi
2266	movb	%dl,%bl
2267	xorl	0x200(%ebp,%ecx,1),%edi
2268	movb	%dh,%cl
2269	shrl	$16,%eax
2270	xorl	0x100(%ebp,%ebx,1),%edi
2271	movb	%ah,%bl
2272	shrl	$16,%edx
2273	xorl	0x300(%ebp,%ecx,1),%edi
2274	movb	%dh,%cl
2275	andl	$0xff,%eax
2276	andl	$0xff,%edx
2277	xorl	0x600(%ebp,%ebx,1),%edi
2278	xorl	0x700(%ebp,%ecx,1),%edi
2279	movl	(%esp),%ecx
2280	xorl	0x400(%ebp,%eax,1),%edi
2281	xorl	0x500(%ebp,%edx,1),%edi
2282
2283	movl	120(%ecx),%eax
2284	xorl	%ebx,%ebx
2285	movl	124(%ecx),%edx
2286	xorl	%edi,%eax
2287	xorl	%ecx,%ecx
2288	xorl	%edi,%edx
2289	andl	$0xfcfcfcfc,%eax
2290	andl	$0xcfcfcfcf,%edx
2291	movb	%al,%bl
2292	movb	%ah,%cl
2293	rorl	$4,%edx
2294	xorl	(%ebp,%ebx,1),%esi
2295	movb	%dl,%bl
2296	xorl	0x200(%ebp,%ecx,1),%esi
2297	movb	%dh,%cl
2298	shrl	$16,%eax
2299	xorl	0x100(%ebp,%ebx,1),%esi
2300	movb	%ah,%bl
2301	shrl	$16,%edx
2302	xorl	0x300(%ebp,%ecx,1),%esi
2303	movb	%dh,%cl
2304	andl	$0xff,%eax
2305	andl	$0xff,%edx
2306	xorl	0x600(%ebp,%ebx,1),%esi
2307	xorl	0x700(%ebp,%ecx,1),%esi
2308	movl	(%esp),%ecx
2309	xorl	0x400(%ebp,%eax,1),%esi
2310	xorl	0x500(%ebp,%edx,1),%esi
2311	addl	$4,%esp
2312	ret
2313.size	_x86_DES_encrypt,.-_x86_DES_encrypt
2314.type	_x86_DES_decrypt,@function
2315.align	16
2316_x86_DES_decrypt:
2317	pushl	%ecx
2318
2319	movl	120(%ecx),%eax
2320	xorl	%ebx,%ebx
2321	movl	124(%ecx),%edx
2322	xorl	%esi,%eax
2323	xorl	%ecx,%ecx
2324	xorl	%esi,%edx
2325	andl	$0xfcfcfcfc,%eax
2326	andl	$0xcfcfcfcf,%edx
2327	movb	%al,%bl
2328	movb	%ah,%cl
2329	rorl	$4,%edx
2330	xorl	(%ebp,%ebx,1),%edi
2331	movb	%dl,%bl
2332	xorl	0x200(%ebp,%ecx,1),%edi
2333	movb	%dh,%cl
2334	shrl	$16,%eax
2335	xorl	0x100(%ebp,%ebx,1),%edi
2336	movb	%ah,%bl
2337	shrl	$16,%edx
2338	xorl	0x300(%ebp,%ecx,1),%edi
2339	movb	%dh,%cl
2340	andl	$0xff,%eax
2341	andl	$0xff,%edx
2342	xorl	0x600(%ebp,%ebx,1),%edi
2343	xorl	0x700(%ebp,%ecx,1),%edi
2344	movl	(%esp),%ecx
2345	xorl	0x400(%ebp,%eax,1),%edi
2346	xorl	0x500(%ebp,%edx,1),%edi
2347
2348	movl	112(%ecx),%eax
2349	xorl	%ebx,%ebx
2350	movl	116(%ecx),%edx
2351	xorl	%edi,%eax
2352	xorl	%ecx,%ecx
2353	xorl	%edi,%edx
2354	andl	$0xfcfcfcfc,%eax
2355	andl	$0xcfcfcfcf,%edx
2356	movb	%al,%bl
2357	movb	%ah,%cl
2358	rorl	$4,%edx
2359	xorl	(%ebp,%ebx,1),%esi
2360	movb	%dl,%bl
2361	xorl	0x200(%ebp,%ecx,1),%esi
2362	movb	%dh,%cl
2363	shrl	$16,%eax
2364	xorl	0x100(%ebp,%ebx,1),%esi
2365	movb	%ah,%bl
2366	shrl	$16,%edx
2367	xorl	0x300(%ebp,%ecx,1),%esi
2368	movb	%dh,%cl
2369	andl	$0xff,%eax
2370	andl	$0xff,%edx
2371	xorl	0x600(%ebp,%ebx,1),%esi
2372	xorl	0x700(%ebp,%ecx,1),%esi
2373	movl	(%esp),%ecx
2374	xorl	0x400(%ebp,%eax,1),%esi
2375	xorl	0x500(%ebp,%edx,1),%esi
2376
2377	movl	104(%ecx),%eax
2378	xorl	%ebx,%ebx
2379	movl	108(%ecx),%edx
2380	xorl	%esi,%eax
2381	xorl	%ecx,%ecx
2382	xorl	%esi,%edx
2383	andl	$0xfcfcfcfc,%eax
2384	andl	$0xcfcfcfcf,%edx
2385	movb	%al,%bl
2386	movb	%ah,%cl
2387	rorl	$4,%edx
2388	xorl	(%ebp,%ebx,1),%edi
2389	movb	%dl,%bl
2390	xorl	0x200(%ebp,%ecx,1),%edi
2391	movb	%dh,%cl
2392	shrl	$16,%eax
2393	xorl	0x100(%ebp,%ebx,1),%edi
2394	movb	%ah,%bl
2395	shrl	$16,%edx
2396	xorl	0x300(%ebp,%ecx,1),%edi
2397	movb	%dh,%cl
2398	andl	$0xff,%eax
2399	andl	$0xff,%edx
2400	xorl	0x600(%ebp,%ebx,1),%edi
2401	xorl	0x700(%ebp,%ecx,1),%edi
2402	movl	(%esp),%ecx
2403	xorl	0x400(%ebp,%eax,1),%edi
2404	xorl	0x500(%ebp,%edx,1),%edi
2405
2406	movl	96(%ecx),%eax
2407	xorl	%ebx,%ebx
2408	movl	100(%ecx),%edx
2409	xorl	%edi,%eax
2410	xorl	%ecx,%ecx
2411	xorl	%edi,%edx
2412	andl	$0xfcfcfcfc,%eax
2413	andl	$0xcfcfcfcf,%edx
2414	movb	%al,%bl
2415	movb	%ah,%cl
2416	rorl	$4,%edx
2417	xorl	(%ebp,%ebx,1),%esi
2418	movb	%dl,%bl
2419	xorl	0x200(%ebp,%ecx,1),%esi
2420	movb	%dh,%cl
2421	shrl	$16,%eax
2422	xorl	0x100(%ebp,%ebx,1),%esi
2423	movb	%ah,%bl
2424	shrl	$16,%edx
2425	xorl	0x300(%ebp,%ecx,1),%esi
2426	movb	%dh,%cl
2427	andl	$0xff,%eax
2428	andl	$0xff,%edx
2429	xorl	0x600(%ebp,%ebx,1),%esi
2430	xorl	0x700(%ebp,%ecx,1),%esi
2431	movl	(%esp),%ecx
2432	xorl	0x400(%ebp,%eax,1),%esi
2433	xorl	0x500(%ebp,%edx,1),%esi
2434
2435	movl	88(%ecx),%eax
2436	xorl	%ebx,%ebx
2437	movl	92(%ecx),%edx
2438	xorl	%esi,%eax
2439	xorl	%ecx,%ecx
2440	xorl	%esi,%edx
2441	andl	$0xfcfcfcfc,%eax
2442	andl	$0xcfcfcfcf,%edx
2443	movb	%al,%bl
2444	movb	%ah,%cl
2445	rorl	$4,%edx
2446	xorl	(%ebp,%ebx,1),%edi
2447	movb	%dl,%bl
2448	xorl	0x200(%ebp,%ecx,1),%edi
2449	movb	%dh,%cl
2450	shrl	$16,%eax
2451	xorl	0x100(%ebp,%ebx,1),%edi
2452	movb	%ah,%bl
2453	shrl	$16,%edx
2454	xorl	0x300(%ebp,%ecx,1),%edi
2455	movb	%dh,%cl
2456	andl	$0xff,%eax
2457	andl	$0xff,%edx
2458	xorl	0x600(%ebp,%ebx,1),%edi
2459	xorl	0x700(%ebp,%ecx,1),%edi
2460	movl	(%esp),%ecx
2461	xorl	0x400(%ebp,%eax,1),%edi
2462	xorl	0x500(%ebp,%edx,1),%edi
2463
2464	movl	80(%ecx),%eax
2465	xorl	%ebx,%ebx
2466	movl	84(%ecx),%edx
2467	xorl	%edi,%eax
2468	xorl	%ecx,%ecx
2469	xorl	%edi,%edx
2470	andl	$0xfcfcfcfc,%eax
2471	andl	$0xcfcfcfcf,%edx
2472	movb	%al,%bl
2473	movb	%ah,%cl
2474	rorl	$4,%edx
2475	xorl	(%ebp,%ebx,1),%esi
2476	movb	%dl,%bl
2477	xorl	0x200(%ebp,%ecx,1),%esi
2478	movb	%dh,%cl
2479	shrl	$16,%eax
2480	xorl	0x100(%ebp,%ebx,1),%esi
2481	movb	%ah,%bl
2482	shrl	$16,%edx
2483	xorl	0x300(%ebp,%ecx,1),%esi
2484	movb	%dh,%cl
2485	andl	$0xff,%eax
2486	andl	$0xff,%edx
2487	xorl	0x600(%ebp,%ebx,1),%esi
2488	xorl	0x700(%ebp,%ecx,1),%esi
2489	movl	(%esp),%ecx
2490	xorl	0x400(%ebp,%eax,1),%esi
2491	xorl	0x500(%ebp,%edx,1),%esi
2492
2493	movl	72(%ecx),%eax
2494	xorl	%ebx,%ebx
2495	movl	76(%ecx),%edx
2496	xorl	%esi,%eax
2497	xorl	%ecx,%ecx
2498	xorl	%esi,%edx
2499	andl	$0xfcfcfcfc,%eax
2500	andl	$0xcfcfcfcf,%edx
2501	movb	%al,%bl
2502	movb	%ah,%cl
2503	rorl	$4,%edx
2504	xorl	(%ebp,%ebx,1),%edi
2505	movb	%dl,%bl
2506	xorl	0x200(%ebp,%ecx,1),%edi
2507	movb	%dh,%cl
2508	shrl	$16,%eax
2509	xorl	0x100(%ebp,%ebx,1),%edi
2510	movb	%ah,%bl
2511	shrl	$16,%edx
2512	xorl	0x300(%ebp,%ecx,1),%edi
2513	movb	%dh,%cl
2514	andl	$0xff,%eax
2515	andl	$0xff,%edx
2516	xorl	0x600(%ebp,%ebx,1),%edi
2517	xorl	0x700(%ebp,%ecx,1),%edi
2518	movl	(%esp),%ecx
2519	xorl	0x400(%ebp,%eax,1),%edi
2520	xorl	0x500(%ebp,%edx,1),%edi
2521
2522	movl	64(%ecx),%eax
2523	xorl	%ebx,%ebx
2524	movl	68(%ecx),%edx
2525	xorl	%edi,%eax
2526	xorl	%ecx,%ecx
2527	xorl	%edi,%edx
2528	andl	$0xfcfcfcfc,%eax
2529	andl	$0xcfcfcfcf,%edx
2530	movb	%al,%bl
2531	movb	%ah,%cl
2532	rorl	$4,%edx
2533	xorl	(%ebp,%ebx,1),%esi
2534	movb	%dl,%bl
2535	xorl	0x200(%ebp,%ecx,1),%esi
2536	movb	%dh,%cl
2537	shrl	$16,%eax
2538	xorl	0x100(%ebp,%ebx,1),%esi
2539	movb	%ah,%bl
2540	shrl	$16,%edx
2541	xorl	0x300(%ebp,%ecx,1),%esi
2542	movb	%dh,%cl
2543	andl	$0xff,%eax
2544	andl	$0xff,%edx
2545	xorl	0x600(%ebp,%ebx,1),%esi
2546	xorl	0x700(%ebp,%ecx,1),%esi
2547	movl	(%esp),%ecx
2548	xorl	0x400(%ebp,%eax,1),%esi
2549	xorl	0x500(%ebp,%edx,1),%esi
2550
2551	movl	56(%ecx),%eax
2552	xorl	%ebx,%ebx
2553	movl	60(%ecx),%edx
2554	xorl	%esi,%eax
2555	xorl	%ecx,%ecx
2556	xorl	%esi,%edx
2557	andl	$0xfcfcfcfc,%eax
2558	andl	$0xcfcfcfcf,%edx
2559	movb	%al,%bl
2560	movb	%ah,%cl
2561	rorl	$4,%edx
2562	xorl	(%ebp,%ebx,1),%edi
2563	movb	%dl,%bl
2564	xorl	0x200(%ebp,%ecx,1),%edi
2565	movb	%dh,%cl
2566	shrl	$16,%eax
2567	xorl	0x100(%ebp,%ebx,1),%edi
2568	movb	%ah,%bl
2569	shrl	$16,%edx
2570	xorl	0x300(%ebp,%ecx,1),%edi
2571	movb	%dh,%cl
2572	andl	$0xff,%eax
2573	andl	$0xff,%edx
2574	xorl	0x600(%ebp,%ebx,1),%edi
2575	xorl	0x700(%ebp,%ecx,1),%edi
2576	movl	(%esp),%ecx
2577	xorl	0x400(%ebp,%eax,1),%edi
2578	xorl	0x500(%ebp,%edx,1),%edi
2579
2580	movl	48(%ecx),%eax
2581	xorl	%ebx,%ebx
2582	movl	52(%ecx),%edx
2583	xorl	%edi,%eax
2584	xorl	%ecx,%ecx
2585	xorl	%edi,%edx
2586	andl	$0xfcfcfcfc,%eax
2587	andl	$0xcfcfcfcf,%edx
2588	movb	%al,%bl
2589	movb	%ah,%cl
2590	rorl	$4,%edx
2591	xorl	(%ebp,%ebx,1),%esi
2592	movb	%dl,%bl
2593	xorl	0x200(%ebp,%ecx,1),%esi
2594	movb	%dh,%cl
2595	shrl	$16,%eax
2596	xorl	0x100(%ebp,%ebx,1),%esi
2597	movb	%ah,%bl
2598	shrl	$16,%edx
2599	xorl	0x300(%ebp,%ecx,1),%esi
2600	movb	%dh,%cl
2601	andl	$0xff,%eax
2602	andl	$0xff,%edx
2603	xorl	0x600(%ebp,%ebx,1),%esi
2604	xorl	0x700(%ebp,%ecx,1),%esi
2605	movl	(%esp),%ecx
2606	xorl	0x400(%ebp,%eax,1),%esi
2607	xorl	0x500(%ebp,%edx,1),%esi
2608
2609	movl	40(%ecx),%eax
2610	xorl	%ebx,%ebx
2611	movl	44(%ecx),%edx
2612	xorl	%esi,%eax
2613	xorl	%ecx,%ecx
2614	xorl	%esi,%edx
2615	andl	$0xfcfcfcfc,%eax
2616	andl	$0xcfcfcfcf,%edx
2617	movb	%al,%bl
2618	movb	%ah,%cl
2619	rorl	$4,%edx
2620	xorl	(%ebp,%ebx,1),%edi
2621	movb	%dl,%bl
2622	xorl	0x200(%ebp,%ecx,1),%edi
2623	movb	%dh,%cl
2624	shrl	$16,%eax
2625	xorl	0x100(%ebp,%ebx,1),%edi
2626	movb	%ah,%bl
2627	shrl	$16,%edx
2628	xorl	0x300(%ebp,%ecx,1),%edi
2629	movb	%dh,%cl
2630	andl	$0xff,%eax
2631	andl	$0xff,%edx
2632	xorl	0x600(%ebp,%ebx,1),%edi
2633	xorl	0x700(%ebp,%ecx,1),%edi
2634	movl	(%esp),%ecx
2635	xorl	0x400(%ebp,%eax,1),%edi
2636	xorl	0x500(%ebp,%edx,1),%edi
2637
2638	movl	32(%ecx),%eax
2639	xorl	%ebx,%ebx
2640	movl	36(%ecx),%edx
2641	xorl	%edi,%eax
2642	xorl	%ecx,%ecx
2643	xorl	%edi,%edx
2644	andl	$0xfcfcfcfc,%eax
2645	andl	$0xcfcfcfcf,%edx
2646	movb	%al,%bl
2647	movb	%ah,%cl
2648	rorl	$4,%edx
2649	xorl	(%ebp,%ebx,1),%esi
2650	movb	%dl,%bl
2651	xorl	0x200(%ebp,%ecx,1),%esi
2652	movb	%dh,%cl
2653	shrl	$16,%eax
2654	xorl	0x100(%ebp,%ebx,1),%esi
2655	movb	%ah,%bl
2656	shrl	$16,%edx
2657	xorl	0x300(%ebp,%ecx,1),%esi
2658	movb	%dh,%cl
2659	andl	$0xff,%eax
2660	andl	$0xff,%edx
2661	xorl	0x600(%ebp,%ebx,1),%esi
2662	xorl	0x700(%ebp,%ecx,1),%esi
2663	movl	(%esp),%ecx
2664	xorl	0x400(%ebp,%eax,1),%esi
2665	xorl	0x500(%ebp,%edx,1),%esi
2666
2667	movl	24(%ecx),%eax
2668	xorl	%ebx,%ebx
2669	movl	28(%ecx),%edx
2670	xorl	%esi,%eax
2671	xorl	%ecx,%ecx
2672	xorl	%esi,%edx
2673	andl	$0xfcfcfcfc,%eax
2674	andl	$0xcfcfcfcf,%edx
2675	movb	%al,%bl
2676	movb	%ah,%cl
2677	rorl	$4,%edx
2678	xorl	(%ebp,%ebx,1),%edi
2679	movb	%dl,%bl
2680	xorl	0x200(%ebp,%ecx,1),%edi
2681	movb	%dh,%cl
2682	shrl	$16,%eax
2683	xorl	0x100(%ebp,%ebx,1),%edi
2684	movb	%ah,%bl
2685	shrl	$16,%edx
2686	xorl	0x300(%ebp,%ecx,1),%edi
2687	movb	%dh,%cl
2688	andl	$0xff,%eax
2689	andl	$0xff,%edx
2690	xorl	0x600(%ebp,%ebx,1),%edi
2691	xorl	0x700(%ebp,%ecx,1),%edi
2692	movl	(%esp),%ecx
2693	xorl	0x400(%ebp,%eax,1),%edi
2694	xorl	0x500(%ebp,%edx,1),%edi
2695
2696	movl	16(%ecx),%eax
2697	xorl	%ebx,%ebx
2698	movl	20(%ecx),%edx
2699	xorl	%edi,%eax
2700	xorl	%ecx,%ecx
2701	xorl	%edi,%edx
2702	andl	$0xfcfcfcfc,%eax
2703	andl	$0xcfcfcfcf,%edx
2704	movb	%al,%bl
2705	movb	%ah,%cl
2706	rorl	$4,%edx
2707	xorl	(%ebp,%ebx,1),%esi
2708	movb	%dl,%bl
2709	xorl	0x200(%ebp,%ecx,1),%esi
2710	movb	%dh,%cl
2711	shrl	$16,%eax
2712	xorl	0x100(%ebp,%ebx,1),%esi
2713	movb	%ah,%bl
2714	shrl	$16,%edx
2715	xorl	0x300(%ebp,%ecx,1),%esi
2716	movb	%dh,%cl
2717	andl	$0xff,%eax
2718	andl	$0xff,%edx
2719	xorl	0x600(%ebp,%ebx,1),%esi
2720	xorl	0x700(%ebp,%ecx,1),%esi
2721	movl	(%esp),%ecx
2722	xorl	0x400(%ebp,%eax,1),%esi
2723	xorl	0x500(%ebp,%edx,1),%esi
2724
2725	movl	8(%ecx),%eax
2726	xorl	%ebx,%ebx
2727	movl	12(%ecx),%edx
2728	xorl	%esi,%eax
2729	xorl	%ecx,%ecx
2730	xorl	%esi,%edx
2731	andl	$0xfcfcfcfc,%eax
2732	andl	$0xcfcfcfcf,%edx
2733	movb	%al,%bl
2734	movb	%ah,%cl
2735	rorl	$4,%edx
2736	xorl	(%ebp,%ebx,1),%edi
2737	movb	%dl,%bl
2738	xorl	0x200(%ebp,%ecx,1),%edi
2739	movb	%dh,%cl
2740	shrl	$16,%eax
2741	xorl	0x100(%ebp,%ebx,1),%edi
2742	movb	%ah,%bl
2743	shrl	$16,%edx
2744	xorl	0x300(%ebp,%ecx,1),%edi
2745	movb	%dh,%cl
2746	andl	$0xff,%eax
2747	andl	$0xff,%edx
2748	xorl	0x600(%ebp,%ebx,1),%edi
2749	xorl	0x700(%ebp,%ecx,1),%edi
2750	movl	(%esp),%ecx
2751	xorl	0x400(%ebp,%eax,1),%edi
2752	xorl	0x500(%ebp,%edx,1),%edi
2753
2754	movl	(%ecx),%eax
2755	xorl	%ebx,%ebx
2756	movl	4(%ecx),%edx
2757	xorl	%edi,%eax
2758	xorl	%ecx,%ecx
2759	xorl	%edi,%edx
2760	andl	$0xfcfcfcfc,%eax
2761	andl	$0xcfcfcfcf,%edx
2762	movb	%al,%bl
2763	movb	%ah,%cl
2764	rorl	$4,%edx
2765	xorl	(%ebp,%ebx,1),%esi
2766	movb	%dl,%bl
2767	xorl	0x200(%ebp,%ecx,1),%esi
2768	movb	%dh,%cl
2769	shrl	$16,%eax
2770	xorl	0x100(%ebp,%ebx,1),%esi
2771	movb	%ah,%bl
2772	shrl	$16,%edx
2773	xorl	0x300(%ebp,%ecx,1),%esi
2774	movb	%dh,%cl
2775	andl	$0xff,%eax
2776	andl	$0xff,%edx
2777	xorl	0x600(%ebp,%ebx,1),%esi
2778	xorl	0x700(%ebp,%ecx,1),%esi
2779	movl	(%esp),%ecx
2780	xorl	0x400(%ebp,%eax,1),%esi
2781	xorl	0x500(%ebp,%edx,1),%esi
2782	addl	$4,%esp
2783	ret
2784.size	_x86_DES_decrypt,.-_x86_DES_decrypt
2785.globl	DES_encrypt1
2786.type	DES_encrypt1,@function
2787.align	16
2788DES_encrypt1:
2789.L_DES_encrypt1_begin:
2790	pushl	%esi
2791	pushl	%edi
2792
2793
2794	movl	12(%esp),%esi
2795	xorl	%ecx,%ecx
2796	pushl	%ebx
2797	pushl	%ebp
2798	movl	(%esi),%eax
2799	movl	28(%esp),%ebx
2800	movl	4(%esi),%edi
2801
2802
2803	roll	$4,%eax
2804	movl	%eax,%esi
2805	xorl	%edi,%eax
2806	andl	$0xf0f0f0f0,%eax
2807	xorl	%eax,%esi
2808	xorl	%eax,%edi
2809
2810	roll	$20,%edi
2811	movl	%edi,%eax
2812	xorl	%esi,%edi
2813	andl	$0xfff0000f,%edi
2814	xorl	%edi,%eax
2815	xorl	%edi,%esi
2816
2817	roll	$14,%eax
2818	movl	%eax,%edi
2819	xorl	%esi,%eax
2820	andl	$0x33333333,%eax
2821	xorl	%eax,%edi
2822	xorl	%eax,%esi
2823
2824	roll	$22,%esi
2825	movl	%esi,%eax
2826	xorl	%edi,%esi
2827	andl	$0x03fc03fc,%esi
2828	xorl	%esi,%eax
2829	xorl	%esi,%edi
2830
2831	roll	$9,%eax
2832	movl	%eax,%esi
2833	xorl	%edi,%eax
2834	andl	$0xaaaaaaaa,%eax
2835	xorl	%eax,%esi
2836	xorl	%eax,%edi
2837
2838	roll	$1,%edi
2839	call	.L000pic_point
2840.L000pic_point:
2841	popl	%ebp
2842	leal	.Ldes_sptrans-.L000pic_point(%ebp),%ebp
2843	movl	24(%esp),%ecx
2844	cmpl	$0,%ebx
2845	je	.L001decrypt
2846	call	_x86_DES_encrypt
2847	jmp	.L002done
2848.L001decrypt:
2849	call	_x86_DES_decrypt
2850.L002done:
2851
2852
2853	movl	20(%esp),%edx
2854	rorl	$1,%esi
2855	movl	%edi,%eax
2856	xorl	%esi,%edi
2857	andl	$0xaaaaaaaa,%edi
2858	xorl	%edi,%eax
2859	xorl	%edi,%esi
2860
2861	roll	$23,%eax
2862	movl	%eax,%edi
2863	xorl	%esi,%eax
2864	andl	$0x03fc03fc,%eax
2865	xorl	%eax,%edi
2866	xorl	%eax,%esi
2867
2868	roll	$10,%edi
2869	movl	%edi,%eax
2870	xorl	%esi,%edi
2871	andl	$0x33333333,%edi
2872	xorl	%edi,%eax
2873	xorl	%edi,%esi
2874
2875	roll	$18,%esi
2876	movl	%esi,%edi
2877	xorl	%eax,%esi
2878	andl	$0xfff0000f,%esi
2879	xorl	%esi,%edi
2880	xorl	%esi,%eax
2881
2882	roll	$12,%edi
2883	movl	%edi,%esi
2884	xorl	%eax,%edi
2885	andl	$0xf0f0f0f0,%edi
2886	xorl	%edi,%esi
2887	xorl	%edi,%eax
2888
2889	rorl	$4,%eax
2890	movl	%eax,(%edx)
2891	movl	%esi,4(%edx)
2892	popl	%ebp
2893	popl	%ebx
2894	popl	%edi
2895	popl	%esi
2896	ret
2897.size	DES_encrypt1,.-.L_DES_encrypt1_begin
2898.globl	DES_encrypt2
2899.type	DES_encrypt2,@function
2900.align	16
2901DES_encrypt2:
2902.L_DES_encrypt2_begin:
2903	pushl	%esi
2904	pushl	%edi
2905
2906
2907	movl	12(%esp),%eax
2908	xorl	%ecx,%ecx
2909	pushl	%ebx
2910	pushl	%ebp
2911	movl	(%eax),%esi
2912	movl	28(%esp),%ebx
2913	roll	$3,%esi
2914	movl	4(%eax),%edi
2915	roll	$3,%edi
2916	call	.L003pic_point
2917.L003pic_point:
2918	popl	%ebp
2919	leal	.Ldes_sptrans-.L003pic_point(%ebp),%ebp
2920	movl	24(%esp),%ecx
2921	cmpl	$0,%ebx
2922	je	.L004decrypt
2923	call	_x86_DES_encrypt
2924	jmp	.L005done
2925.L004decrypt:
2926	call	_x86_DES_decrypt
2927.L005done:
2928
2929
2930	rorl	$3,%edi
2931	movl	20(%esp),%eax
2932	rorl	$3,%esi
2933	movl	%edi,(%eax)
2934	movl	%esi,4(%eax)
2935	popl	%ebp
2936	popl	%ebx
2937	popl	%edi
2938	popl	%esi
2939	ret
2940.size	DES_encrypt2,.-.L_DES_encrypt2_begin
2941.globl	DES_encrypt3
2942.type	DES_encrypt3,@function
2943.align	16
2944DES_encrypt3:
2945.L_DES_encrypt3_begin:
2946	pushl	%ebx
2947	movl	8(%esp),%ebx
2948	pushl	%ebp
2949	pushl	%esi
2950	pushl	%edi
2951
2952
2953	movl	(%ebx),%edi
2954	movl	4(%ebx),%esi
2955	subl	$12,%esp
2956
2957
2958	roll	$4,%edi
2959	movl	%edi,%edx
2960	xorl	%esi,%edi
2961	andl	$0xf0f0f0f0,%edi
2962	xorl	%edi,%edx
2963	xorl	%edi,%esi
2964
2965	roll	$20,%esi
2966	movl	%esi,%edi
2967	xorl	%edx,%esi
2968	andl	$0xfff0000f,%esi
2969	xorl	%esi,%edi
2970	xorl	%esi,%edx
2971
2972	roll	$14,%edi
2973	movl	%edi,%esi
2974	xorl	%edx,%edi
2975	andl	$0x33333333,%edi
2976	xorl	%edi,%esi
2977	xorl	%edi,%edx
2978
2979	roll	$22,%edx
2980	movl	%edx,%edi
2981	xorl	%esi,%edx
2982	andl	$0x03fc03fc,%edx
2983	xorl	%edx,%edi
2984	xorl	%edx,%esi
2985
2986	roll	$9,%edi
2987	movl	%edi,%edx
2988	xorl	%esi,%edi
2989	andl	$0xaaaaaaaa,%edi
2990	xorl	%edi,%edx
2991	xorl	%edi,%esi
2992
2993	rorl	$3,%edx
2994	rorl	$2,%esi
2995	movl	%esi,4(%ebx)
2996	movl	36(%esp),%eax
2997	movl	%edx,(%ebx)
2998	movl	40(%esp),%edi
2999	movl	44(%esp),%esi
3000	movl	$1,8(%esp)
3001	movl	%eax,4(%esp)
3002	movl	%ebx,(%esp)
3003	call	.L_DES_encrypt2_begin
3004	movl	$0,8(%esp)
3005	movl	%edi,4(%esp)
3006	movl	%ebx,(%esp)
3007	call	.L_DES_encrypt2_begin
3008	movl	$1,8(%esp)
3009	movl	%esi,4(%esp)
3010	movl	%ebx,(%esp)
3011	call	.L_DES_encrypt2_begin
3012	addl	$12,%esp
3013	movl	(%ebx),%edi
3014	movl	4(%ebx),%esi
3015
3016
3017	roll	$2,%esi
3018	roll	$3,%edi
3019	movl	%edi,%eax
3020	xorl	%esi,%edi
3021	andl	$0xaaaaaaaa,%edi
3022	xorl	%edi,%eax
3023	xorl	%edi,%esi
3024
3025	roll	$23,%eax
3026	movl	%eax,%edi
3027	xorl	%esi,%eax
3028	andl	$0x03fc03fc,%eax
3029	xorl	%eax,%edi
3030	xorl	%eax,%esi
3031
3032	roll	$10,%edi
3033	movl	%edi,%eax
3034	xorl	%esi,%edi
3035	andl	$0x33333333,%edi
3036	xorl	%edi,%eax
3037	xorl	%edi,%esi
3038
3039	roll	$18,%esi
3040	movl	%esi,%edi
3041	xorl	%eax,%esi
3042	andl	$0xfff0000f,%esi
3043	xorl	%esi,%edi
3044	xorl	%esi,%eax
3045
3046	roll	$12,%edi
3047	movl	%edi,%esi
3048	xorl	%eax,%edi
3049	andl	$0xf0f0f0f0,%edi
3050	xorl	%edi,%esi
3051	xorl	%edi,%eax
3052
3053	rorl	$4,%eax
3054	movl	%eax,(%ebx)
3055	movl	%esi,4(%ebx)
3056	popl	%edi
3057	popl	%esi
3058	popl	%ebp
3059	popl	%ebx
3060	ret
3061.size	DES_encrypt3,.-.L_DES_encrypt3_begin
3062.globl	DES_decrypt3
3063.type	DES_decrypt3,@function
3064.align	16
3065DES_decrypt3:
3066.L_DES_decrypt3_begin:
3067	pushl	%ebx
3068	movl	8(%esp),%ebx
3069	pushl	%ebp
3070	pushl	%esi
3071	pushl	%edi
3072
3073
3074	movl	(%ebx),%edi
3075	movl	4(%ebx),%esi
3076	subl	$12,%esp
3077
3078
3079	roll	$4,%edi
3080	movl	%edi,%edx
3081	xorl	%esi,%edi
3082	andl	$0xf0f0f0f0,%edi
3083	xorl	%edi,%edx
3084	xorl	%edi,%esi
3085
3086	roll	$20,%esi
3087	movl	%esi,%edi
3088	xorl	%edx,%esi
3089	andl	$0xfff0000f,%esi
3090	xorl	%esi,%edi
3091	xorl	%esi,%edx
3092
3093	roll	$14,%edi
3094	movl	%edi,%esi
3095	xorl	%edx,%edi
3096	andl	$0x33333333,%edi
3097	xorl	%edi,%esi
3098	xorl	%edi,%edx
3099
3100	roll	$22,%edx
3101	movl	%edx,%edi
3102	xorl	%esi,%edx
3103	andl	$0x03fc03fc,%edx
3104	xorl	%edx,%edi
3105	xorl	%edx,%esi
3106
3107	roll	$9,%edi
3108	movl	%edi,%edx
3109	xorl	%esi,%edi
3110	andl	$0xaaaaaaaa,%edi
3111	xorl	%edi,%edx
3112	xorl	%edi,%esi
3113
3114	rorl	$3,%edx
3115	rorl	$2,%esi
3116	movl	%esi,4(%ebx)
3117	movl	36(%esp),%esi
3118	movl	%edx,(%ebx)
3119	movl	40(%esp),%edi
3120	movl	44(%esp),%eax
3121	movl	$0,8(%esp)
3122	movl	%eax,4(%esp)
3123	movl	%ebx,(%esp)
3124	call	.L_DES_encrypt2_begin
3125	movl	$1,8(%esp)
3126	movl	%edi,4(%esp)
3127	movl	%ebx,(%esp)
3128	call	.L_DES_encrypt2_begin
3129	movl	$0,8(%esp)
3130	movl	%esi,4(%esp)
3131	movl	%ebx,(%esp)
3132	call	.L_DES_encrypt2_begin
3133	addl	$12,%esp
3134	movl	(%ebx),%edi
3135	movl	4(%ebx),%esi
3136
3137
3138	roll	$2,%esi
3139	roll	$3,%edi
3140	movl	%edi,%eax
3141	xorl	%esi,%edi
3142	andl	$0xaaaaaaaa,%edi
3143	xorl	%edi,%eax
3144	xorl	%edi,%esi
3145
3146	roll	$23,%eax
3147	movl	%eax,%edi
3148	xorl	%esi,%eax
3149	andl	$0x03fc03fc,%eax
3150	xorl	%eax,%edi
3151	xorl	%eax,%esi
3152
3153	roll	$10,%edi
3154	movl	%edi,%eax
3155	xorl	%esi,%edi
3156	andl	$0x33333333,%edi
3157	xorl	%edi,%eax
3158	xorl	%edi,%esi
3159
3160	roll	$18,%esi
3161	movl	%esi,%edi
3162	xorl	%eax,%esi
3163	andl	$0xfff0000f,%esi
3164	xorl	%esi,%edi
3165	xorl	%esi,%eax
3166
3167	roll	$12,%edi
3168	movl	%edi,%esi
3169	xorl	%eax,%edi
3170	andl	$0xf0f0f0f0,%edi
3171	xorl	%edi,%esi
3172	xorl	%edi,%eax
3173
3174	rorl	$4,%eax
3175	movl	%eax,(%ebx)
3176	movl	%esi,4(%ebx)
3177	popl	%edi
3178	popl	%esi
3179	popl	%ebp
3180	popl	%ebx
3181	ret
3182.size	DES_decrypt3,.-.L_DES_decrypt3_begin
3183.globl	DES_ncbc_encrypt
3184.type	DES_ncbc_encrypt,@function
3185.align	16
3186DES_ncbc_encrypt:
3187.L_DES_ncbc_encrypt_begin:
3188
3189	pushl	%ebp
3190	pushl	%ebx
3191	pushl	%esi
3192	pushl	%edi
3193	movl	28(%esp),%ebp
3194
3195	movl	36(%esp),%ebx
3196	movl	(%ebx),%esi
3197	movl	4(%ebx),%edi
3198	pushl	%edi
3199	pushl	%esi
3200	pushl	%edi
3201	pushl	%esi
3202	movl	%esp,%ebx
3203	movl	36(%esp),%esi
3204	movl	40(%esp),%edi
3205
3206	movl	56(%esp),%ecx
3207
3208	pushl	%ecx
3209
3210	movl	52(%esp),%eax
3211	pushl	%eax
3212	pushl	%ebx
3213	cmpl	$0,%ecx
3214	jz	.L006decrypt
3215	andl	$4294967288,%ebp
3216	movl	12(%esp),%eax
3217	movl	16(%esp),%ebx
3218	jz	.L007encrypt_finish
3219.L008encrypt_loop:
3220	movl	(%esi),%ecx
3221	movl	4(%esi),%edx
3222	xorl	%ecx,%eax
3223	xorl	%edx,%ebx
3224	movl	%eax,12(%esp)
3225	movl	%ebx,16(%esp)
3226	call	.L_DES_encrypt1_begin
3227	movl	12(%esp),%eax
3228	movl	16(%esp),%ebx
3229	movl	%eax,(%edi)
3230	movl	%ebx,4(%edi)
3231	addl	$8,%esi
3232	addl	$8,%edi
3233	subl	$8,%ebp
3234	jnz	.L008encrypt_loop
3235.L007encrypt_finish:
3236	movl	56(%esp),%ebp
3237	andl	$7,%ebp
3238	jz	.L009finish
3239	call	.L010PIC_point
3240.L010PIC_point:
3241	popl	%edx
3242	leal	.L011cbc_enc_jmp_table-.L010PIC_point(%edx),%ecx
3243	movl	(%ecx,%ebp,4),%ebp
3244	addl	%edx,%ebp
3245	xorl	%ecx,%ecx
3246	xorl	%edx,%edx
3247	jmp	*%ebp
3248.L012ej7:
3249	movb	6(%esi),%dh
3250	shll	$8,%edx
3251.L013ej6:
3252	movb	5(%esi),%dh
3253.L014ej5:
3254	movb	4(%esi),%dl
3255.L015ej4:
3256	movl	(%esi),%ecx
3257	jmp	.L016ejend
3258.L017ej3:
3259	movb	2(%esi),%ch
3260	shll	$8,%ecx
3261.L018ej2:
3262	movb	1(%esi),%ch
3263.L019ej1:
3264	movb	(%esi),%cl
3265.L016ejend:
3266	xorl	%ecx,%eax
3267	xorl	%edx,%ebx
3268	movl	%eax,12(%esp)
3269	movl	%ebx,16(%esp)
3270	call	.L_DES_encrypt1_begin
3271	movl	12(%esp),%eax
3272	movl	16(%esp),%ebx
3273	movl	%eax,(%edi)
3274	movl	%ebx,4(%edi)
3275	jmp	.L009finish
3276.L006decrypt:
3277	andl	$4294967288,%ebp
3278	movl	20(%esp),%eax
3279	movl	24(%esp),%ebx
3280	jz	.L020decrypt_finish
3281.L021decrypt_loop:
3282	movl	(%esi),%eax
3283	movl	4(%esi),%ebx
3284	movl	%eax,12(%esp)
3285	movl	%ebx,16(%esp)
3286	call	.L_DES_encrypt1_begin
3287	movl	12(%esp),%eax
3288	movl	16(%esp),%ebx
3289	movl	20(%esp),%ecx
3290	movl	24(%esp),%edx
3291	xorl	%eax,%ecx
3292	xorl	%ebx,%edx
3293	movl	(%esi),%eax
3294	movl	4(%esi),%ebx
3295	movl	%ecx,(%edi)
3296	movl	%edx,4(%edi)
3297	movl	%eax,20(%esp)
3298	movl	%ebx,24(%esp)
3299	addl	$8,%esi
3300	addl	$8,%edi
3301	subl	$8,%ebp
3302	jnz	.L021decrypt_loop
3303.L020decrypt_finish:
3304	movl	56(%esp),%ebp
3305	andl	$7,%ebp
3306	jz	.L009finish
3307	movl	(%esi),%eax
3308	movl	4(%esi),%ebx
3309	movl	%eax,12(%esp)
3310	movl	%ebx,16(%esp)
3311	call	.L_DES_encrypt1_begin
3312	movl	12(%esp),%eax
3313	movl	16(%esp),%ebx
3314	movl	20(%esp),%ecx
3315	movl	24(%esp),%edx
3316	xorl	%eax,%ecx
3317	xorl	%ebx,%edx
3318	movl	(%esi),%eax
3319	movl	4(%esi),%ebx
3320.L022dj7:
3321	rorl	$16,%edx
3322	movb	%dl,6(%edi)
3323	shrl	$16,%edx
3324.L023dj6:
3325	movb	%dh,5(%edi)
3326.L024dj5:
3327	movb	%dl,4(%edi)
3328.L025dj4:
3329	movl	%ecx,(%edi)
3330	jmp	.L026djend
3331.L027dj3:
3332	rorl	$16,%ecx
3333	movb	%cl,2(%edi)
3334	shll	$16,%ecx
3335.L028dj2:
3336	movb	%ch,1(%esi)
3337.L029dj1:
3338	movb	%cl,(%esi)
3339.L026djend:
3340	jmp	.L009finish
3341.L009finish:
3342	movl	64(%esp),%ecx
3343	addl	$28,%esp
3344	movl	%eax,(%ecx)
3345	movl	%ebx,4(%ecx)
3346	popl	%edi
3347	popl	%esi
3348	popl	%ebx
3349	popl	%ebp
3350	ret
3351.align	64
3352.L011cbc_enc_jmp_table:
3353.long	0
3354.long	.L019ej1-.L010PIC_point
3355.long	.L018ej2-.L010PIC_point
3356.long	.L017ej3-.L010PIC_point
3357.long	.L015ej4-.L010PIC_point
3358.long	.L014ej5-.L010PIC_point
3359.long	.L013ej6-.L010PIC_point
3360.long	.L012ej7-.L010PIC_point
3361.align	64
3362.size	DES_ncbc_encrypt,.-.L_DES_ncbc_encrypt_begin
3363.globl	DES_ede3_cbc_encrypt
3364.type	DES_ede3_cbc_encrypt,@function
3365.align	16
3366DES_ede3_cbc_encrypt:
3367.L_DES_ede3_cbc_encrypt_begin:
3368
3369	pushl	%ebp
3370	pushl	%ebx
3371	pushl	%esi
3372	pushl	%edi
3373	movl	28(%esp),%ebp
3374
3375	movl	44(%esp),%ebx
3376	movl	(%ebx),%esi
3377	movl	4(%ebx),%edi
3378	pushl	%edi
3379	pushl	%esi
3380	pushl	%edi
3381	pushl	%esi
3382	movl	%esp,%ebx
3383	movl	36(%esp),%esi
3384	movl	40(%esp),%edi
3385
3386	movl	64(%esp),%ecx
3387
3388	movl	56(%esp),%eax
3389	pushl	%eax
3390
3391	movl	56(%esp),%eax
3392	pushl	%eax
3393
3394	movl	56(%esp),%eax
3395	pushl	%eax
3396	pushl	%ebx
3397	cmpl	$0,%ecx
3398	jz	.L030decrypt
3399	andl	$4294967288,%ebp
3400	movl	16(%esp),%eax
3401	movl	20(%esp),%ebx
3402	jz	.L031encrypt_finish
3403.L032encrypt_loop:
3404	movl	(%esi),%ecx
3405	movl	4(%esi),%edx
3406	xorl	%ecx,%eax
3407	xorl	%edx,%ebx
3408	movl	%eax,16(%esp)
3409	movl	%ebx,20(%esp)
3410	call	.L_DES_encrypt3_begin
3411	movl	16(%esp),%eax
3412	movl	20(%esp),%ebx
3413	movl	%eax,(%edi)
3414	movl	%ebx,4(%edi)
3415	addl	$8,%esi
3416	addl	$8,%edi
3417	subl	$8,%ebp
3418	jnz	.L032encrypt_loop
3419.L031encrypt_finish:
3420	movl	60(%esp),%ebp
3421	andl	$7,%ebp
3422	jz	.L033finish
3423	call	.L034PIC_point
3424.L034PIC_point:
3425	popl	%edx
3426	leal	.L035cbc_enc_jmp_table-.L034PIC_point(%edx),%ecx
3427	movl	(%ecx,%ebp,4),%ebp
3428	addl	%edx,%ebp
3429	xorl	%ecx,%ecx
3430	xorl	%edx,%edx
3431	jmp	*%ebp
3432.L036ej7:
3433	movb	6(%esi),%dh
3434	shll	$8,%edx
3435.L037ej6:
3436	movb	5(%esi),%dh
3437.L038ej5:
3438	movb	4(%esi),%dl
3439.L039ej4:
3440	movl	(%esi),%ecx
3441	jmp	.L040ejend
3442.L041ej3:
3443	movb	2(%esi),%ch
3444	shll	$8,%ecx
3445.L042ej2:
3446	movb	1(%esi),%ch
3447.L043ej1:
3448	movb	(%esi),%cl
3449.L040ejend:
3450	xorl	%ecx,%eax
3451	xorl	%edx,%ebx
3452	movl	%eax,16(%esp)
3453	movl	%ebx,20(%esp)
3454	call	.L_DES_encrypt3_begin
3455	movl	16(%esp),%eax
3456	movl	20(%esp),%ebx
3457	movl	%eax,(%edi)
3458	movl	%ebx,4(%edi)
3459	jmp	.L033finish
3460.L030decrypt:
3461	andl	$4294967288,%ebp
3462	movl	24(%esp),%eax
3463	movl	28(%esp),%ebx
3464	jz	.L044decrypt_finish
3465.L045decrypt_loop:
3466	movl	(%esi),%eax
3467	movl	4(%esi),%ebx
3468	movl	%eax,16(%esp)
3469	movl	%ebx,20(%esp)
3470	call	.L_DES_decrypt3_begin
3471	movl	16(%esp),%eax
3472	movl	20(%esp),%ebx
3473	movl	24(%esp),%ecx
3474	movl	28(%esp),%edx
3475	xorl	%eax,%ecx
3476	xorl	%ebx,%edx
3477	movl	(%esi),%eax
3478	movl	4(%esi),%ebx
3479	movl	%ecx,(%edi)
3480	movl	%edx,4(%edi)
3481	movl	%eax,24(%esp)
3482	movl	%ebx,28(%esp)
3483	addl	$8,%esi
3484	addl	$8,%edi
3485	subl	$8,%ebp
3486	jnz	.L045decrypt_loop
3487.L044decrypt_finish:
3488	movl	60(%esp),%ebp
3489	andl	$7,%ebp
3490	jz	.L033finish
3491	movl	(%esi),%eax
3492	movl	4(%esi),%ebx
3493	movl	%eax,16(%esp)
3494	movl	%ebx,20(%esp)
3495	call	.L_DES_decrypt3_begin
3496	movl	16(%esp),%eax
3497	movl	20(%esp),%ebx
3498	movl	24(%esp),%ecx
3499	movl	28(%esp),%edx
3500	xorl	%eax,%ecx
3501	xorl	%ebx,%edx
3502	movl	(%esi),%eax
3503	movl	4(%esi),%ebx
3504.L046dj7:
3505	rorl	$16,%edx
3506	movb	%dl,6(%edi)
3507	shrl	$16,%edx
3508.L047dj6:
3509	movb	%dh,5(%edi)
3510.L048dj5:
3511	movb	%dl,4(%edi)
3512.L049dj4:
3513	movl	%ecx,(%edi)
3514	jmp	.L050djend
3515.L051dj3:
3516	rorl	$16,%ecx
3517	movb	%cl,2(%edi)
3518	shll	$16,%ecx
3519.L052dj2:
3520	movb	%ch,1(%esi)
3521.L053dj1:
3522	movb	%cl,(%esi)
3523.L050djend:
3524	jmp	.L033finish
3525.L033finish:
3526	movl	76(%esp),%ecx
3527	addl	$32,%esp
3528	movl	%eax,(%ecx)
3529	movl	%ebx,4(%ecx)
3530	popl	%edi
3531	popl	%esi
3532	popl	%ebx
3533	popl	%ebp
3534	ret
3535.align	64
3536.L035cbc_enc_jmp_table:
3537.long	0
3538.long	.L043ej1-.L034PIC_point
3539.long	.L042ej2-.L034PIC_point
3540.long	.L041ej3-.L034PIC_point
3541.long	.L039ej4-.L034PIC_point
3542.long	.L038ej5-.L034PIC_point
3543.long	.L037ej6-.L034PIC_point
3544.long	.L036ej7-.L034PIC_point
3545.align	64
3546.size	DES_ede3_cbc_encrypt,.-.L_DES_ede3_cbc_encrypt_begin
3547.align	64
3548DES_SPtrans:
3549.Ldes_sptrans:
3550.long	34080768,524288,33554434,34080770
3551.long	33554432,526338,524290,33554434
3552.long	526338,34080768,34078720,2050
3553.long	33556482,33554432,0,524290
3554.long	524288,2,33556480,526336
3555.long	34080770,34078720,2050,33556480
3556.long	2,2048,526336,34078722
3557.long	2048,33556482,34078722,0
3558.long	0,34080770,33556480,524290
3559.long	34080768,524288,2050,33556480
3560.long	34078722,2048,526336,33554434
3561.long	526338,2,33554434,34078720
3562.long	34080770,526336,34078720,33556482
3563.long	33554432,2050,524290,0
3564.long	524288,33554432,33556482,34080768
3565.long	2,34078722,2048,526338
3566.long	1074823184,0,1081344,1074790400
3567.long	1073741840,32784,1073774592,1081344
3568.long	32768,1074790416,16,1073774592
3569.long	1048592,1074823168,1074790400,16
3570.long	1048576,1073774608,1074790416,32768
3571.long	1081360,1073741824,0,1048592
3572.long	1073774608,1081360,1074823168,1073741840
3573.long	1073741824,1048576,32784,1074823184
3574.long	1048592,1074823168,1073774592,1081360
3575.long	1074823184,1048592,1073741840,0
3576.long	1073741824,32784,1048576,1074790416
3577.long	32768,1073741824,1081360,1073774608
3578.long	1074823168,32768,0,1073741840
3579.long	16,1074823184,1081344,1074790400
3580.long	1074790416,1048576,32784,1073774592
3581.long	1073774608,16,1074790400,1081344
3582.long	67108865,67371264,256,67109121
3583.long	262145,67108864,67109121,262400
3584.long	67109120,262144,67371008,1
3585.long	67371265,257,1,67371009
3586.long	0,262145,67371264,256
3587.long	257,67371265,262144,67108865
3588.long	67371009,67109120,262401,67371008
3589.long	262400,0,67108864,262401
3590.long	67371264,256,1,262144
3591.long	257,262145,67371008,67109121
3592.long	0,67371264,262400,67371009
3593.long	262145,67108864,67371265,1
3594.long	262401,67108865,67108864,67371265
3595.long	262144,67109120,67109121,262400
3596.long	67109120,0,67371009,257
3597.long	67108865,262401,256,67371008
3598.long	4198408,268439552,8,272633864
3599.long	0,272629760,268439560,4194312
3600.long	272633856,268435464,268435456,4104
3601.long	268435464,4198408,4194304,268435456
3602.long	272629768,4198400,4096,8
3603.long	4198400,268439560,272629760,4096
3604.long	4104,0,4194312,272633856
3605.long	268439552,272629768,272633864,4194304
3606.long	272629768,4104,4194304,268435464
3607.long	4198400,268439552,8,272629760
3608.long	268439560,0,4096,4194312
3609.long	0,272629768,272633856,4096
3610.long	268435456,272633864,4198408,4194304
3611.long	272633864,8,268439552,4198408
3612.long	4194312,4198400,272629760,268439560
3613.long	4104,268435456,268435464,272633856
3614.long	134217728,65536,1024,134284320
3615.long	134283296,134218752,66592,134283264
3616.long	65536,32,134217760,66560
3617.long	134218784,134283296,134284288,0
3618.long	66560,134217728,65568,1056
3619.long	134218752,66592,0,134217760
3620.long	32,134218784,134284320,65568
3621.long	134283264,1024,1056,134284288
3622.long	134284288,134218784,65568,134283264
3623.long	65536,32,134217760,134218752
3624.long	134217728,66560,134284320,0
3625.long	66592,134217728,1024,65568
3626.long	134218784,1024,0,134284320
3627.long	134283296,134284288,1056,65536
3628.long	66560,134283296,134218752,1056
3629.long	32,66592,134283264,134217760
3630.long	2147483712,2097216,0,2149588992
3631.long	2097216,8192,2147491904,2097152
3632.long	8256,2149589056,2105344,2147483648
3633.long	2147491840,2147483712,2149580800,2105408
3634.long	2097152,2147491904,2149580864,0
3635.long	8192,64,2149588992,2149580864
3636.long	2149589056,2149580800,2147483648,8256
3637.long	64,2105344,2105408,2147491840
3638.long	8256,2147483648,2147491840,2105408
3639.long	2149588992,2097216,0,2147491840
3640.long	2147483648,8192,2149580864,2097152
3641.long	2097216,2149589056,2105344,64
3642.long	2149589056,2105344,2097152,2147491904
3643.long	2147483712,2149580800,2105408,0
3644.long	8192,2147483712,2147491904,2149588992
3645.long	2149580800,8256,64,2149580864
3646.long	16384,512,16777728,16777220
3647.long	16794116,16388,16896,0
3648.long	16777216,16777732,516,16793600
3649.long	4,16794112,16793600,516
3650.long	16777732,16384,16388,16794116
3651.long	0,16777728,16777220,16896
3652.long	16793604,16900,16794112,4
3653.long	16900,16793604,512,16777216
3654.long	16900,16793600,16793604,516
3655.long	16384,512,16777216,16793604
3656.long	16777732,16900,16896,0
3657.long	512,16777220,4,16777728
3658.long	0,16777732,16777728,16896
3659.long	516,16384,16794116,16777216
3660.long	16794112,4,16388,16794116
3661.long	16777220,16794112,16793600,16388
3662.long	545259648,545390592,131200,0
3663.long	537001984,8388736,545259520,545390720
3664.long	128,536870912,8519680,131200
3665.long	8519808,537002112,536871040,545259520
3666.long	131072,8519808,8388736,537001984
3667.long	545390720,536871040,0,8519680
3668.long	536870912,8388608,537002112,545259648
3669.long	8388608,131072,545390592,128
3670.long	8388608,131072,536871040,545390720
3671.long	131200,536870912,0,8519680
3672.long	545259648,537002112,537001984,8388736
3673.long	545390592,128,8388736,537001984
3674.long	545390720,8388608,545259520,536871040
3675.long	8519680,131200,537002112,545259520
3676.long	128,545390592,8519808,0
3677.long	536870912,545259648,131072,8519808
3678#endif
3679