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