des-586.S revision 299966
1# $FreeBSD: stable/10/secure/lib/libcrypto/i386/des-586.S 299966 2016-05-16 19:30:27Z 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	DES_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	DES_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.long	34080768,524288,33554434,34080770
1714.long	33554432,526338,524290,33554434
1715.long	526338,34080768,34078720,2050
1716.long	33556482,33554432,0,524290
1717.long	524288,2,33556480,526336
1718.long	34080770,34078720,2050,33556480
1719.long	2,2048,526336,34078722
1720.long	2048,33556482,34078722,0
1721.long	0,34080770,33556480,524290
1722.long	34080768,524288,2050,33556480
1723.long	34078722,2048,526336,33554434
1724.long	526338,2,33554434,34078720
1725.long	34080770,526336,34078720,33556482
1726.long	33554432,2050,524290,0
1727.long	524288,33554432,33556482,34080768
1728.long	2,34078722,2048,526338
1729.long	1074823184,0,1081344,1074790400
1730.long	1073741840,32784,1073774592,1081344
1731.long	32768,1074790416,16,1073774592
1732.long	1048592,1074823168,1074790400,16
1733.long	1048576,1073774608,1074790416,32768
1734.long	1081360,1073741824,0,1048592
1735.long	1073774608,1081360,1074823168,1073741840
1736.long	1073741824,1048576,32784,1074823184
1737.long	1048592,1074823168,1073774592,1081360
1738.long	1074823184,1048592,1073741840,0
1739.long	1073741824,32784,1048576,1074790416
1740.long	32768,1073741824,1081360,1073774608
1741.long	1074823168,32768,0,1073741840
1742.long	16,1074823184,1081344,1074790400
1743.long	1074790416,1048576,32784,1073774592
1744.long	1073774608,16,1074790400,1081344
1745.long	67108865,67371264,256,67109121
1746.long	262145,67108864,67109121,262400
1747.long	67109120,262144,67371008,1
1748.long	67371265,257,1,67371009
1749.long	0,262145,67371264,256
1750.long	257,67371265,262144,67108865
1751.long	67371009,67109120,262401,67371008
1752.long	262400,0,67108864,262401
1753.long	67371264,256,1,262144
1754.long	257,262145,67371008,67109121
1755.long	0,67371264,262400,67371009
1756.long	262145,67108864,67371265,1
1757.long	262401,67108865,67108864,67371265
1758.long	262144,67109120,67109121,262400
1759.long	67109120,0,67371009,257
1760.long	67108865,262401,256,67371008
1761.long	4198408,268439552,8,272633864
1762.long	0,272629760,268439560,4194312
1763.long	272633856,268435464,268435456,4104
1764.long	268435464,4198408,4194304,268435456
1765.long	272629768,4198400,4096,8
1766.long	4198400,268439560,272629760,4096
1767.long	4104,0,4194312,272633856
1768.long	268439552,272629768,272633864,4194304
1769.long	272629768,4104,4194304,268435464
1770.long	4198400,268439552,8,272629760
1771.long	268439560,0,4096,4194312
1772.long	0,272629768,272633856,4096
1773.long	268435456,272633864,4198408,4194304
1774.long	272633864,8,268439552,4198408
1775.long	4194312,4198400,272629760,268439560
1776.long	4104,268435456,268435464,272633856
1777.long	134217728,65536,1024,134284320
1778.long	134283296,134218752,66592,134283264
1779.long	65536,32,134217760,66560
1780.long	134218784,134283296,134284288,0
1781.long	66560,134217728,65568,1056
1782.long	134218752,66592,0,134217760
1783.long	32,134218784,134284320,65568
1784.long	134283264,1024,1056,134284288
1785.long	134284288,134218784,65568,134283264
1786.long	65536,32,134217760,134218752
1787.long	134217728,66560,134284320,0
1788.long	66592,134217728,1024,65568
1789.long	134218784,1024,0,134284320
1790.long	134283296,134284288,1056,65536
1791.long	66560,134283296,134218752,1056
1792.long	32,66592,134283264,134217760
1793.long	2147483712,2097216,0,2149588992
1794.long	2097216,8192,2147491904,2097152
1795.long	8256,2149589056,2105344,2147483648
1796.long	2147491840,2147483712,2149580800,2105408
1797.long	2097152,2147491904,2149580864,0
1798.long	8192,64,2149588992,2149580864
1799.long	2149589056,2149580800,2147483648,8256
1800.long	64,2105344,2105408,2147491840
1801.long	8256,2147483648,2147491840,2105408
1802.long	2149588992,2097216,0,2147491840
1803.long	2147483648,8192,2149580864,2097152
1804.long	2097216,2149589056,2105344,64
1805.long	2149589056,2105344,2097152,2147491904
1806.long	2147483712,2149580800,2105408,0
1807.long	8192,2147483712,2147491904,2149588992
1808.long	2149580800,8256,64,2149580864
1809.long	16384,512,16777728,16777220
1810.long	16794116,16388,16896,0
1811.long	16777216,16777732,516,16793600
1812.long	4,16794112,16793600,516
1813.long	16777732,16384,16388,16794116
1814.long	0,16777728,16777220,16896
1815.long	16793604,16900,16794112,4
1816.long	16900,16793604,512,16777216
1817.long	16900,16793600,16793604,516
1818.long	16384,512,16777216,16793604
1819.long	16777732,16900,16896,0
1820.long	512,16777220,4,16777728
1821.long	0,16777732,16777728,16896
1822.long	516,16384,16794116,16777216
1823.long	16794112,4,16388,16794116
1824.long	16777220,16794112,16793600,16388
1825.long	545259648,545390592,131200,0
1826.long	537001984,8388736,545259520,545390720
1827.long	128,536870912,8519680,131200
1828.long	8519808,537002112,536871040,545259520
1829.long	131072,8519808,8388736,537001984
1830.long	545390720,536871040,0,8519680
1831.long	536870912,8388608,537002112,545259648
1832.long	8388608,131072,545390592,128
1833.long	8388608,131072,536871040,545390720
1834.long	131200,536870912,0,8519680
1835.long	545259648,537002112,537001984,8388736
1836.long	545390592,128,8388736,537001984
1837.long	545390720,8388608,545259520,536871040
1838.long	8519680,131200,537002112,545259520
1839.long	128,545390592,8519808,0
1840.long	536870912,545259648,131072,8519808
1841#else
1842.file	"des-586.S"
1843.text
1844.globl	DES_SPtrans
1845.type	_x86_DES_encrypt,@function
1846.align	16
1847_x86_DES_encrypt:
1848	pushl	%ecx
1849
1850	movl	(%ecx),%eax
1851	xorl	%ebx,%ebx
1852	movl	4(%ecx),%edx
1853	xorl	%esi,%eax
1854	xorl	%ecx,%ecx
1855	xorl	%esi,%edx
1856	andl	$0xfcfcfcfc,%eax
1857	andl	$0xcfcfcfcf,%edx
1858	movb	%al,%bl
1859	movb	%ah,%cl
1860	rorl	$4,%edx
1861	xorl	(%ebp,%ebx,1),%edi
1862	movb	%dl,%bl
1863	xorl	0x200(%ebp,%ecx,1),%edi
1864	movb	%dh,%cl
1865	shrl	$16,%eax
1866	xorl	0x100(%ebp,%ebx,1),%edi
1867	movb	%ah,%bl
1868	shrl	$16,%edx
1869	xorl	0x300(%ebp,%ecx,1),%edi
1870	movb	%dh,%cl
1871	andl	$0xff,%eax
1872	andl	$0xff,%edx
1873	xorl	0x600(%ebp,%ebx,1),%edi
1874	xorl	0x700(%ebp,%ecx,1),%edi
1875	movl	(%esp),%ecx
1876	xorl	0x400(%ebp,%eax,1),%edi
1877	xorl	0x500(%ebp,%edx,1),%edi
1878
1879	movl	8(%ecx),%eax
1880	xorl	%ebx,%ebx
1881	movl	12(%ecx),%edx
1882	xorl	%edi,%eax
1883	xorl	%ecx,%ecx
1884	xorl	%edi,%edx
1885	andl	$0xfcfcfcfc,%eax
1886	andl	$0xcfcfcfcf,%edx
1887	movb	%al,%bl
1888	movb	%ah,%cl
1889	rorl	$4,%edx
1890	xorl	(%ebp,%ebx,1),%esi
1891	movb	%dl,%bl
1892	xorl	0x200(%ebp,%ecx,1),%esi
1893	movb	%dh,%cl
1894	shrl	$16,%eax
1895	xorl	0x100(%ebp,%ebx,1),%esi
1896	movb	%ah,%bl
1897	shrl	$16,%edx
1898	xorl	0x300(%ebp,%ecx,1),%esi
1899	movb	%dh,%cl
1900	andl	$0xff,%eax
1901	andl	$0xff,%edx
1902	xorl	0x600(%ebp,%ebx,1),%esi
1903	xorl	0x700(%ebp,%ecx,1),%esi
1904	movl	(%esp),%ecx
1905	xorl	0x400(%ebp,%eax,1),%esi
1906	xorl	0x500(%ebp,%edx,1),%esi
1907
1908	movl	16(%ecx),%eax
1909	xorl	%ebx,%ebx
1910	movl	20(%ecx),%edx
1911	xorl	%esi,%eax
1912	xorl	%ecx,%ecx
1913	xorl	%esi,%edx
1914	andl	$0xfcfcfcfc,%eax
1915	andl	$0xcfcfcfcf,%edx
1916	movb	%al,%bl
1917	movb	%ah,%cl
1918	rorl	$4,%edx
1919	xorl	(%ebp,%ebx,1),%edi
1920	movb	%dl,%bl
1921	xorl	0x200(%ebp,%ecx,1),%edi
1922	movb	%dh,%cl
1923	shrl	$16,%eax
1924	xorl	0x100(%ebp,%ebx,1),%edi
1925	movb	%ah,%bl
1926	shrl	$16,%edx
1927	xorl	0x300(%ebp,%ecx,1),%edi
1928	movb	%dh,%cl
1929	andl	$0xff,%eax
1930	andl	$0xff,%edx
1931	xorl	0x600(%ebp,%ebx,1),%edi
1932	xorl	0x700(%ebp,%ecx,1),%edi
1933	movl	(%esp),%ecx
1934	xorl	0x400(%ebp,%eax,1),%edi
1935	xorl	0x500(%ebp,%edx,1),%edi
1936
1937	movl	24(%ecx),%eax
1938	xorl	%ebx,%ebx
1939	movl	28(%ecx),%edx
1940	xorl	%edi,%eax
1941	xorl	%ecx,%ecx
1942	xorl	%edi,%edx
1943	andl	$0xfcfcfcfc,%eax
1944	andl	$0xcfcfcfcf,%edx
1945	movb	%al,%bl
1946	movb	%ah,%cl
1947	rorl	$4,%edx
1948	xorl	(%ebp,%ebx,1),%esi
1949	movb	%dl,%bl
1950	xorl	0x200(%ebp,%ecx,1),%esi
1951	movb	%dh,%cl
1952	shrl	$16,%eax
1953	xorl	0x100(%ebp,%ebx,1),%esi
1954	movb	%ah,%bl
1955	shrl	$16,%edx
1956	xorl	0x300(%ebp,%ecx,1),%esi
1957	movb	%dh,%cl
1958	andl	$0xff,%eax
1959	andl	$0xff,%edx
1960	xorl	0x600(%ebp,%ebx,1),%esi
1961	xorl	0x700(%ebp,%ecx,1),%esi
1962	movl	(%esp),%ecx
1963	xorl	0x400(%ebp,%eax,1),%esi
1964	xorl	0x500(%ebp,%edx,1),%esi
1965
1966	movl	32(%ecx),%eax
1967	xorl	%ebx,%ebx
1968	movl	36(%ecx),%edx
1969	xorl	%esi,%eax
1970	xorl	%ecx,%ecx
1971	xorl	%esi,%edx
1972	andl	$0xfcfcfcfc,%eax
1973	andl	$0xcfcfcfcf,%edx
1974	movb	%al,%bl
1975	movb	%ah,%cl
1976	rorl	$4,%edx
1977	xorl	(%ebp,%ebx,1),%edi
1978	movb	%dl,%bl
1979	xorl	0x200(%ebp,%ecx,1),%edi
1980	movb	%dh,%cl
1981	shrl	$16,%eax
1982	xorl	0x100(%ebp,%ebx,1),%edi
1983	movb	%ah,%bl
1984	shrl	$16,%edx
1985	xorl	0x300(%ebp,%ecx,1),%edi
1986	movb	%dh,%cl
1987	andl	$0xff,%eax
1988	andl	$0xff,%edx
1989	xorl	0x600(%ebp,%ebx,1),%edi
1990	xorl	0x700(%ebp,%ecx,1),%edi
1991	movl	(%esp),%ecx
1992	xorl	0x400(%ebp,%eax,1),%edi
1993	xorl	0x500(%ebp,%edx,1),%edi
1994
1995	movl	40(%ecx),%eax
1996	xorl	%ebx,%ebx
1997	movl	44(%ecx),%edx
1998	xorl	%edi,%eax
1999	xorl	%ecx,%ecx
2000	xorl	%edi,%edx
2001	andl	$0xfcfcfcfc,%eax
2002	andl	$0xcfcfcfcf,%edx
2003	movb	%al,%bl
2004	movb	%ah,%cl
2005	rorl	$4,%edx
2006	xorl	(%ebp,%ebx,1),%esi
2007	movb	%dl,%bl
2008	xorl	0x200(%ebp,%ecx,1),%esi
2009	movb	%dh,%cl
2010	shrl	$16,%eax
2011	xorl	0x100(%ebp,%ebx,1),%esi
2012	movb	%ah,%bl
2013	shrl	$16,%edx
2014	xorl	0x300(%ebp,%ecx,1),%esi
2015	movb	%dh,%cl
2016	andl	$0xff,%eax
2017	andl	$0xff,%edx
2018	xorl	0x600(%ebp,%ebx,1),%esi
2019	xorl	0x700(%ebp,%ecx,1),%esi
2020	movl	(%esp),%ecx
2021	xorl	0x400(%ebp,%eax,1),%esi
2022	xorl	0x500(%ebp,%edx,1),%esi
2023
2024	movl	48(%ecx),%eax
2025	xorl	%ebx,%ebx
2026	movl	52(%ecx),%edx
2027	xorl	%esi,%eax
2028	xorl	%ecx,%ecx
2029	xorl	%esi,%edx
2030	andl	$0xfcfcfcfc,%eax
2031	andl	$0xcfcfcfcf,%edx
2032	movb	%al,%bl
2033	movb	%ah,%cl
2034	rorl	$4,%edx
2035	xorl	(%ebp,%ebx,1),%edi
2036	movb	%dl,%bl
2037	xorl	0x200(%ebp,%ecx,1),%edi
2038	movb	%dh,%cl
2039	shrl	$16,%eax
2040	xorl	0x100(%ebp,%ebx,1),%edi
2041	movb	%ah,%bl
2042	shrl	$16,%edx
2043	xorl	0x300(%ebp,%ecx,1),%edi
2044	movb	%dh,%cl
2045	andl	$0xff,%eax
2046	andl	$0xff,%edx
2047	xorl	0x600(%ebp,%ebx,1),%edi
2048	xorl	0x700(%ebp,%ecx,1),%edi
2049	movl	(%esp),%ecx
2050	xorl	0x400(%ebp,%eax,1),%edi
2051	xorl	0x500(%ebp,%edx,1),%edi
2052
2053	movl	56(%ecx),%eax
2054	xorl	%ebx,%ebx
2055	movl	60(%ecx),%edx
2056	xorl	%edi,%eax
2057	xorl	%ecx,%ecx
2058	xorl	%edi,%edx
2059	andl	$0xfcfcfcfc,%eax
2060	andl	$0xcfcfcfcf,%edx
2061	movb	%al,%bl
2062	movb	%ah,%cl
2063	rorl	$4,%edx
2064	xorl	(%ebp,%ebx,1),%esi
2065	movb	%dl,%bl
2066	xorl	0x200(%ebp,%ecx,1),%esi
2067	movb	%dh,%cl
2068	shrl	$16,%eax
2069	xorl	0x100(%ebp,%ebx,1),%esi
2070	movb	%ah,%bl
2071	shrl	$16,%edx
2072	xorl	0x300(%ebp,%ecx,1),%esi
2073	movb	%dh,%cl
2074	andl	$0xff,%eax
2075	andl	$0xff,%edx
2076	xorl	0x600(%ebp,%ebx,1),%esi
2077	xorl	0x700(%ebp,%ecx,1),%esi
2078	movl	(%esp),%ecx
2079	xorl	0x400(%ebp,%eax,1),%esi
2080	xorl	0x500(%ebp,%edx,1),%esi
2081
2082	movl	64(%ecx),%eax
2083	xorl	%ebx,%ebx
2084	movl	68(%ecx),%edx
2085	xorl	%esi,%eax
2086	xorl	%ecx,%ecx
2087	xorl	%esi,%edx
2088	andl	$0xfcfcfcfc,%eax
2089	andl	$0xcfcfcfcf,%edx
2090	movb	%al,%bl
2091	movb	%ah,%cl
2092	rorl	$4,%edx
2093	xorl	(%ebp,%ebx,1),%edi
2094	movb	%dl,%bl
2095	xorl	0x200(%ebp,%ecx,1),%edi
2096	movb	%dh,%cl
2097	shrl	$16,%eax
2098	xorl	0x100(%ebp,%ebx,1),%edi
2099	movb	%ah,%bl
2100	shrl	$16,%edx
2101	xorl	0x300(%ebp,%ecx,1),%edi
2102	movb	%dh,%cl
2103	andl	$0xff,%eax
2104	andl	$0xff,%edx
2105	xorl	0x600(%ebp,%ebx,1),%edi
2106	xorl	0x700(%ebp,%ecx,1),%edi
2107	movl	(%esp),%ecx
2108	xorl	0x400(%ebp,%eax,1),%edi
2109	xorl	0x500(%ebp,%edx,1),%edi
2110
2111	movl	72(%ecx),%eax
2112	xorl	%ebx,%ebx
2113	movl	76(%ecx),%edx
2114	xorl	%edi,%eax
2115	xorl	%ecx,%ecx
2116	xorl	%edi,%edx
2117	andl	$0xfcfcfcfc,%eax
2118	andl	$0xcfcfcfcf,%edx
2119	movb	%al,%bl
2120	movb	%ah,%cl
2121	rorl	$4,%edx
2122	xorl	(%ebp,%ebx,1),%esi
2123	movb	%dl,%bl
2124	xorl	0x200(%ebp,%ecx,1),%esi
2125	movb	%dh,%cl
2126	shrl	$16,%eax
2127	xorl	0x100(%ebp,%ebx,1),%esi
2128	movb	%ah,%bl
2129	shrl	$16,%edx
2130	xorl	0x300(%ebp,%ecx,1),%esi
2131	movb	%dh,%cl
2132	andl	$0xff,%eax
2133	andl	$0xff,%edx
2134	xorl	0x600(%ebp,%ebx,1),%esi
2135	xorl	0x700(%ebp,%ecx,1),%esi
2136	movl	(%esp),%ecx
2137	xorl	0x400(%ebp,%eax,1),%esi
2138	xorl	0x500(%ebp,%edx,1),%esi
2139
2140	movl	80(%ecx),%eax
2141	xorl	%ebx,%ebx
2142	movl	84(%ecx),%edx
2143	xorl	%esi,%eax
2144	xorl	%ecx,%ecx
2145	xorl	%esi,%edx
2146	andl	$0xfcfcfcfc,%eax
2147	andl	$0xcfcfcfcf,%edx
2148	movb	%al,%bl
2149	movb	%ah,%cl
2150	rorl	$4,%edx
2151	xorl	(%ebp,%ebx,1),%edi
2152	movb	%dl,%bl
2153	xorl	0x200(%ebp,%ecx,1),%edi
2154	movb	%dh,%cl
2155	shrl	$16,%eax
2156	xorl	0x100(%ebp,%ebx,1),%edi
2157	movb	%ah,%bl
2158	shrl	$16,%edx
2159	xorl	0x300(%ebp,%ecx,1),%edi
2160	movb	%dh,%cl
2161	andl	$0xff,%eax
2162	andl	$0xff,%edx
2163	xorl	0x600(%ebp,%ebx,1),%edi
2164	xorl	0x700(%ebp,%ecx,1),%edi
2165	movl	(%esp),%ecx
2166	xorl	0x400(%ebp,%eax,1),%edi
2167	xorl	0x500(%ebp,%edx,1),%edi
2168
2169	movl	88(%ecx),%eax
2170	xorl	%ebx,%ebx
2171	movl	92(%ecx),%edx
2172	xorl	%edi,%eax
2173	xorl	%ecx,%ecx
2174	xorl	%edi,%edx
2175	andl	$0xfcfcfcfc,%eax
2176	andl	$0xcfcfcfcf,%edx
2177	movb	%al,%bl
2178	movb	%ah,%cl
2179	rorl	$4,%edx
2180	xorl	(%ebp,%ebx,1),%esi
2181	movb	%dl,%bl
2182	xorl	0x200(%ebp,%ecx,1),%esi
2183	movb	%dh,%cl
2184	shrl	$16,%eax
2185	xorl	0x100(%ebp,%ebx,1),%esi
2186	movb	%ah,%bl
2187	shrl	$16,%edx
2188	xorl	0x300(%ebp,%ecx,1),%esi
2189	movb	%dh,%cl
2190	andl	$0xff,%eax
2191	andl	$0xff,%edx
2192	xorl	0x600(%ebp,%ebx,1),%esi
2193	xorl	0x700(%ebp,%ecx,1),%esi
2194	movl	(%esp),%ecx
2195	xorl	0x400(%ebp,%eax,1),%esi
2196	xorl	0x500(%ebp,%edx,1),%esi
2197
2198	movl	96(%ecx),%eax
2199	xorl	%ebx,%ebx
2200	movl	100(%ecx),%edx
2201	xorl	%esi,%eax
2202	xorl	%ecx,%ecx
2203	xorl	%esi,%edx
2204	andl	$0xfcfcfcfc,%eax
2205	andl	$0xcfcfcfcf,%edx
2206	movb	%al,%bl
2207	movb	%ah,%cl
2208	rorl	$4,%edx
2209	xorl	(%ebp,%ebx,1),%edi
2210	movb	%dl,%bl
2211	xorl	0x200(%ebp,%ecx,1),%edi
2212	movb	%dh,%cl
2213	shrl	$16,%eax
2214	xorl	0x100(%ebp,%ebx,1),%edi
2215	movb	%ah,%bl
2216	shrl	$16,%edx
2217	xorl	0x300(%ebp,%ecx,1),%edi
2218	movb	%dh,%cl
2219	andl	$0xff,%eax
2220	andl	$0xff,%edx
2221	xorl	0x600(%ebp,%ebx,1),%edi
2222	xorl	0x700(%ebp,%ecx,1),%edi
2223	movl	(%esp),%ecx
2224	xorl	0x400(%ebp,%eax,1),%edi
2225	xorl	0x500(%ebp,%edx,1),%edi
2226
2227	movl	104(%ecx),%eax
2228	xorl	%ebx,%ebx
2229	movl	108(%ecx),%edx
2230	xorl	%edi,%eax
2231	xorl	%ecx,%ecx
2232	xorl	%edi,%edx
2233	andl	$0xfcfcfcfc,%eax
2234	andl	$0xcfcfcfcf,%edx
2235	movb	%al,%bl
2236	movb	%ah,%cl
2237	rorl	$4,%edx
2238	xorl	(%ebp,%ebx,1),%esi
2239	movb	%dl,%bl
2240	xorl	0x200(%ebp,%ecx,1),%esi
2241	movb	%dh,%cl
2242	shrl	$16,%eax
2243	xorl	0x100(%ebp,%ebx,1),%esi
2244	movb	%ah,%bl
2245	shrl	$16,%edx
2246	xorl	0x300(%ebp,%ecx,1),%esi
2247	movb	%dh,%cl
2248	andl	$0xff,%eax
2249	andl	$0xff,%edx
2250	xorl	0x600(%ebp,%ebx,1),%esi
2251	xorl	0x700(%ebp,%ecx,1),%esi
2252	movl	(%esp),%ecx
2253	xorl	0x400(%ebp,%eax,1),%esi
2254	xorl	0x500(%ebp,%edx,1),%esi
2255
2256	movl	112(%ecx),%eax
2257	xorl	%ebx,%ebx
2258	movl	116(%ecx),%edx
2259	xorl	%esi,%eax
2260	xorl	%ecx,%ecx
2261	xorl	%esi,%edx
2262	andl	$0xfcfcfcfc,%eax
2263	andl	$0xcfcfcfcf,%edx
2264	movb	%al,%bl
2265	movb	%ah,%cl
2266	rorl	$4,%edx
2267	xorl	(%ebp,%ebx,1),%edi
2268	movb	%dl,%bl
2269	xorl	0x200(%ebp,%ecx,1),%edi
2270	movb	%dh,%cl
2271	shrl	$16,%eax
2272	xorl	0x100(%ebp,%ebx,1),%edi
2273	movb	%ah,%bl
2274	shrl	$16,%edx
2275	xorl	0x300(%ebp,%ecx,1),%edi
2276	movb	%dh,%cl
2277	andl	$0xff,%eax
2278	andl	$0xff,%edx
2279	xorl	0x600(%ebp,%ebx,1),%edi
2280	xorl	0x700(%ebp,%ecx,1),%edi
2281	movl	(%esp),%ecx
2282	xorl	0x400(%ebp,%eax,1),%edi
2283	xorl	0x500(%ebp,%edx,1),%edi
2284
2285	movl	120(%ecx),%eax
2286	xorl	%ebx,%ebx
2287	movl	124(%ecx),%edx
2288	xorl	%edi,%eax
2289	xorl	%ecx,%ecx
2290	xorl	%edi,%edx
2291	andl	$0xfcfcfcfc,%eax
2292	andl	$0xcfcfcfcf,%edx
2293	movb	%al,%bl
2294	movb	%ah,%cl
2295	rorl	$4,%edx
2296	xorl	(%ebp,%ebx,1),%esi
2297	movb	%dl,%bl
2298	xorl	0x200(%ebp,%ecx,1),%esi
2299	movb	%dh,%cl
2300	shrl	$16,%eax
2301	xorl	0x100(%ebp,%ebx,1),%esi
2302	movb	%ah,%bl
2303	shrl	$16,%edx
2304	xorl	0x300(%ebp,%ecx,1),%esi
2305	movb	%dh,%cl
2306	andl	$0xff,%eax
2307	andl	$0xff,%edx
2308	xorl	0x600(%ebp,%ebx,1),%esi
2309	xorl	0x700(%ebp,%ecx,1),%esi
2310	movl	(%esp),%ecx
2311	xorl	0x400(%ebp,%eax,1),%esi
2312	xorl	0x500(%ebp,%edx,1),%esi
2313	addl	$4,%esp
2314	ret
2315.size	_x86_DES_encrypt,.-_x86_DES_encrypt
2316.type	_x86_DES_decrypt,@function
2317.align	16
2318_x86_DES_decrypt:
2319	pushl	%ecx
2320
2321	movl	120(%ecx),%eax
2322	xorl	%ebx,%ebx
2323	movl	124(%ecx),%edx
2324	xorl	%esi,%eax
2325	xorl	%ecx,%ecx
2326	xorl	%esi,%edx
2327	andl	$0xfcfcfcfc,%eax
2328	andl	$0xcfcfcfcf,%edx
2329	movb	%al,%bl
2330	movb	%ah,%cl
2331	rorl	$4,%edx
2332	xorl	(%ebp,%ebx,1),%edi
2333	movb	%dl,%bl
2334	xorl	0x200(%ebp,%ecx,1),%edi
2335	movb	%dh,%cl
2336	shrl	$16,%eax
2337	xorl	0x100(%ebp,%ebx,1),%edi
2338	movb	%ah,%bl
2339	shrl	$16,%edx
2340	xorl	0x300(%ebp,%ecx,1),%edi
2341	movb	%dh,%cl
2342	andl	$0xff,%eax
2343	andl	$0xff,%edx
2344	xorl	0x600(%ebp,%ebx,1),%edi
2345	xorl	0x700(%ebp,%ecx,1),%edi
2346	movl	(%esp),%ecx
2347	xorl	0x400(%ebp,%eax,1),%edi
2348	xorl	0x500(%ebp,%edx,1),%edi
2349
2350	movl	112(%ecx),%eax
2351	xorl	%ebx,%ebx
2352	movl	116(%ecx),%edx
2353	xorl	%edi,%eax
2354	xorl	%ecx,%ecx
2355	xorl	%edi,%edx
2356	andl	$0xfcfcfcfc,%eax
2357	andl	$0xcfcfcfcf,%edx
2358	movb	%al,%bl
2359	movb	%ah,%cl
2360	rorl	$4,%edx
2361	xorl	(%ebp,%ebx,1),%esi
2362	movb	%dl,%bl
2363	xorl	0x200(%ebp,%ecx,1),%esi
2364	movb	%dh,%cl
2365	shrl	$16,%eax
2366	xorl	0x100(%ebp,%ebx,1),%esi
2367	movb	%ah,%bl
2368	shrl	$16,%edx
2369	xorl	0x300(%ebp,%ecx,1),%esi
2370	movb	%dh,%cl
2371	andl	$0xff,%eax
2372	andl	$0xff,%edx
2373	xorl	0x600(%ebp,%ebx,1),%esi
2374	xorl	0x700(%ebp,%ecx,1),%esi
2375	movl	(%esp),%ecx
2376	xorl	0x400(%ebp,%eax,1),%esi
2377	xorl	0x500(%ebp,%edx,1),%esi
2378
2379	movl	104(%ecx),%eax
2380	xorl	%ebx,%ebx
2381	movl	108(%ecx),%edx
2382	xorl	%esi,%eax
2383	xorl	%ecx,%ecx
2384	xorl	%esi,%edx
2385	andl	$0xfcfcfcfc,%eax
2386	andl	$0xcfcfcfcf,%edx
2387	movb	%al,%bl
2388	movb	%ah,%cl
2389	rorl	$4,%edx
2390	xorl	(%ebp,%ebx,1),%edi
2391	movb	%dl,%bl
2392	xorl	0x200(%ebp,%ecx,1),%edi
2393	movb	%dh,%cl
2394	shrl	$16,%eax
2395	xorl	0x100(%ebp,%ebx,1),%edi
2396	movb	%ah,%bl
2397	shrl	$16,%edx
2398	xorl	0x300(%ebp,%ecx,1),%edi
2399	movb	%dh,%cl
2400	andl	$0xff,%eax
2401	andl	$0xff,%edx
2402	xorl	0x600(%ebp,%ebx,1),%edi
2403	xorl	0x700(%ebp,%ecx,1),%edi
2404	movl	(%esp),%ecx
2405	xorl	0x400(%ebp,%eax,1),%edi
2406	xorl	0x500(%ebp,%edx,1),%edi
2407
2408	movl	96(%ecx),%eax
2409	xorl	%ebx,%ebx
2410	movl	100(%ecx),%edx
2411	xorl	%edi,%eax
2412	xorl	%ecx,%ecx
2413	xorl	%edi,%edx
2414	andl	$0xfcfcfcfc,%eax
2415	andl	$0xcfcfcfcf,%edx
2416	movb	%al,%bl
2417	movb	%ah,%cl
2418	rorl	$4,%edx
2419	xorl	(%ebp,%ebx,1),%esi
2420	movb	%dl,%bl
2421	xorl	0x200(%ebp,%ecx,1),%esi
2422	movb	%dh,%cl
2423	shrl	$16,%eax
2424	xorl	0x100(%ebp,%ebx,1),%esi
2425	movb	%ah,%bl
2426	shrl	$16,%edx
2427	xorl	0x300(%ebp,%ecx,1),%esi
2428	movb	%dh,%cl
2429	andl	$0xff,%eax
2430	andl	$0xff,%edx
2431	xorl	0x600(%ebp,%ebx,1),%esi
2432	xorl	0x700(%ebp,%ecx,1),%esi
2433	movl	(%esp),%ecx
2434	xorl	0x400(%ebp,%eax,1),%esi
2435	xorl	0x500(%ebp,%edx,1),%esi
2436
2437	movl	88(%ecx),%eax
2438	xorl	%ebx,%ebx
2439	movl	92(%ecx),%edx
2440	xorl	%esi,%eax
2441	xorl	%ecx,%ecx
2442	xorl	%esi,%edx
2443	andl	$0xfcfcfcfc,%eax
2444	andl	$0xcfcfcfcf,%edx
2445	movb	%al,%bl
2446	movb	%ah,%cl
2447	rorl	$4,%edx
2448	xorl	(%ebp,%ebx,1),%edi
2449	movb	%dl,%bl
2450	xorl	0x200(%ebp,%ecx,1),%edi
2451	movb	%dh,%cl
2452	shrl	$16,%eax
2453	xorl	0x100(%ebp,%ebx,1),%edi
2454	movb	%ah,%bl
2455	shrl	$16,%edx
2456	xorl	0x300(%ebp,%ecx,1),%edi
2457	movb	%dh,%cl
2458	andl	$0xff,%eax
2459	andl	$0xff,%edx
2460	xorl	0x600(%ebp,%ebx,1),%edi
2461	xorl	0x700(%ebp,%ecx,1),%edi
2462	movl	(%esp),%ecx
2463	xorl	0x400(%ebp,%eax,1),%edi
2464	xorl	0x500(%ebp,%edx,1),%edi
2465
2466	movl	80(%ecx),%eax
2467	xorl	%ebx,%ebx
2468	movl	84(%ecx),%edx
2469	xorl	%edi,%eax
2470	xorl	%ecx,%ecx
2471	xorl	%edi,%edx
2472	andl	$0xfcfcfcfc,%eax
2473	andl	$0xcfcfcfcf,%edx
2474	movb	%al,%bl
2475	movb	%ah,%cl
2476	rorl	$4,%edx
2477	xorl	(%ebp,%ebx,1),%esi
2478	movb	%dl,%bl
2479	xorl	0x200(%ebp,%ecx,1),%esi
2480	movb	%dh,%cl
2481	shrl	$16,%eax
2482	xorl	0x100(%ebp,%ebx,1),%esi
2483	movb	%ah,%bl
2484	shrl	$16,%edx
2485	xorl	0x300(%ebp,%ecx,1),%esi
2486	movb	%dh,%cl
2487	andl	$0xff,%eax
2488	andl	$0xff,%edx
2489	xorl	0x600(%ebp,%ebx,1),%esi
2490	xorl	0x700(%ebp,%ecx,1),%esi
2491	movl	(%esp),%ecx
2492	xorl	0x400(%ebp,%eax,1),%esi
2493	xorl	0x500(%ebp,%edx,1),%esi
2494
2495	movl	72(%ecx),%eax
2496	xorl	%ebx,%ebx
2497	movl	76(%ecx),%edx
2498	xorl	%esi,%eax
2499	xorl	%ecx,%ecx
2500	xorl	%esi,%edx
2501	andl	$0xfcfcfcfc,%eax
2502	andl	$0xcfcfcfcf,%edx
2503	movb	%al,%bl
2504	movb	%ah,%cl
2505	rorl	$4,%edx
2506	xorl	(%ebp,%ebx,1),%edi
2507	movb	%dl,%bl
2508	xorl	0x200(%ebp,%ecx,1),%edi
2509	movb	%dh,%cl
2510	shrl	$16,%eax
2511	xorl	0x100(%ebp,%ebx,1),%edi
2512	movb	%ah,%bl
2513	shrl	$16,%edx
2514	xorl	0x300(%ebp,%ecx,1),%edi
2515	movb	%dh,%cl
2516	andl	$0xff,%eax
2517	andl	$0xff,%edx
2518	xorl	0x600(%ebp,%ebx,1),%edi
2519	xorl	0x700(%ebp,%ecx,1),%edi
2520	movl	(%esp),%ecx
2521	xorl	0x400(%ebp,%eax,1),%edi
2522	xorl	0x500(%ebp,%edx,1),%edi
2523
2524	movl	64(%ecx),%eax
2525	xorl	%ebx,%ebx
2526	movl	68(%ecx),%edx
2527	xorl	%edi,%eax
2528	xorl	%ecx,%ecx
2529	xorl	%edi,%edx
2530	andl	$0xfcfcfcfc,%eax
2531	andl	$0xcfcfcfcf,%edx
2532	movb	%al,%bl
2533	movb	%ah,%cl
2534	rorl	$4,%edx
2535	xorl	(%ebp,%ebx,1),%esi
2536	movb	%dl,%bl
2537	xorl	0x200(%ebp,%ecx,1),%esi
2538	movb	%dh,%cl
2539	shrl	$16,%eax
2540	xorl	0x100(%ebp,%ebx,1),%esi
2541	movb	%ah,%bl
2542	shrl	$16,%edx
2543	xorl	0x300(%ebp,%ecx,1),%esi
2544	movb	%dh,%cl
2545	andl	$0xff,%eax
2546	andl	$0xff,%edx
2547	xorl	0x600(%ebp,%ebx,1),%esi
2548	xorl	0x700(%ebp,%ecx,1),%esi
2549	movl	(%esp),%ecx
2550	xorl	0x400(%ebp,%eax,1),%esi
2551	xorl	0x500(%ebp,%edx,1),%esi
2552
2553	movl	56(%ecx),%eax
2554	xorl	%ebx,%ebx
2555	movl	60(%ecx),%edx
2556	xorl	%esi,%eax
2557	xorl	%ecx,%ecx
2558	xorl	%esi,%edx
2559	andl	$0xfcfcfcfc,%eax
2560	andl	$0xcfcfcfcf,%edx
2561	movb	%al,%bl
2562	movb	%ah,%cl
2563	rorl	$4,%edx
2564	xorl	(%ebp,%ebx,1),%edi
2565	movb	%dl,%bl
2566	xorl	0x200(%ebp,%ecx,1),%edi
2567	movb	%dh,%cl
2568	shrl	$16,%eax
2569	xorl	0x100(%ebp,%ebx,1),%edi
2570	movb	%ah,%bl
2571	shrl	$16,%edx
2572	xorl	0x300(%ebp,%ecx,1),%edi
2573	movb	%dh,%cl
2574	andl	$0xff,%eax
2575	andl	$0xff,%edx
2576	xorl	0x600(%ebp,%ebx,1),%edi
2577	xorl	0x700(%ebp,%ecx,1),%edi
2578	movl	(%esp),%ecx
2579	xorl	0x400(%ebp,%eax,1),%edi
2580	xorl	0x500(%ebp,%edx,1),%edi
2581
2582	movl	48(%ecx),%eax
2583	xorl	%ebx,%ebx
2584	movl	52(%ecx),%edx
2585	xorl	%edi,%eax
2586	xorl	%ecx,%ecx
2587	xorl	%edi,%edx
2588	andl	$0xfcfcfcfc,%eax
2589	andl	$0xcfcfcfcf,%edx
2590	movb	%al,%bl
2591	movb	%ah,%cl
2592	rorl	$4,%edx
2593	xorl	(%ebp,%ebx,1),%esi
2594	movb	%dl,%bl
2595	xorl	0x200(%ebp,%ecx,1),%esi
2596	movb	%dh,%cl
2597	shrl	$16,%eax
2598	xorl	0x100(%ebp,%ebx,1),%esi
2599	movb	%ah,%bl
2600	shrl	$16,%edx
2601	xorl	0x300(%ebp,%ecx,1),%esi
2602	movb	%dh,%cl
2603	andl	$0xff,%eax
2604	andl	$0xff,%edx
2605	xorl	0x600(%ebp,%ebx,1),%esi
2606	xorl	0x700(%ebp,%ecx,1),%esi
2607	movl	(%esp),%ecx
2608	xorl	0x400(%ebp,%eax,1),%esi
2609	xorl	0x500(%ebp,%edx,1),%esi
2610
2611	movl	40(%ecx),%eax
2612	xorl	%ebx,%ebx
2613	movl	44(%ecx),%edx
2614	xorl	%esi,%eax
2615	xorl	%ecx,%ecx
2616	xorl	%esi,%edx
2617	andl	$0xfcfcfcfc,%eax
2618	andl	$0xcfcfcfcf,%edx
2619	movb	%al,%bl
2620	movb	%ah,%cl
2621	rorl	$4,%edx
2622	xorl	(%ebp,%ebx,1),%edi
2623	movb	%dl,%bl
2624	xorl	0x200(%ebp,%ecx,1),%edi
2625	movb	%dh,%cl
2626	shrl	$16,%eax
2627	xorl	0x100(%ebp,%ebx,1),%edi
2628	movb	%ah,%bl
2629	shrl	$16,%edx
2630	xorl	0x300(%ebp,%ecx,1),%edi
2631	movb	%dh,%cl
2632	andl	$0xff,%eax
2633	andl	$0xff,%edx
2634	xorl	0x600(%ebp,%ebx,1),%edi
2635	xorl	0x700(%ebp,%ecx,1),%edi
2636	movl	(%esp),%ecx
2637	xorl	0x400(%ebp,%eax,1),%edi
2638	xorl	0x500(%ebp,%edx,1),%edi
2639
2640	movl	32(%ecx),%eax
2641	xorl	%ebx,%ebx
2642	movl	36(%ecx),%edx
2643	xorl	%edi,%eax
2644	xorl	%ecx,%ecx
2645	xorl	%edi,%edx
2646	andl	$0xfcfcfcfc,%eax
2647	andl	$0xcfcfcfcf,%edx
2648	movb	%al,%bl
2649	movb	%ah,%cl
2650	rorl	$4,%edx
2651	xorl	(%ebp,%ebx,1),%esi
2652	movb	%dl,%bl
2653	xorl	0x200(%ebp,%ecx,1),%esi
2654	movb	%dh,%cl
2655	shrl	$16,%eax
2656	xorl	0x100(%ebp,%ebx,1),%esi
2657	movb	%ah,%bl
2658	shrl	$16,%edx
2659	xorl	0x300(%ebp,%ecx,1),%esi
2660	movb	%dh,%cl
2661	andl	$0xff,%eax
2662	andl	$0xff,%edx
2663	xorl	0x600(%ebp,%ebx,1),%esi
2664	xorl	0x700(%ebp,%ecx,1),%esi
2665	movl	(%esp),%ecx
2666	xorl	0x400(%ebp,%eax,1),%esi
2667	xorl	0x500(%ebp,%edx,1),%esi
2668
2669	movl	24(%ecx),%eax
2670	xorl	%ebx,%ebx
2671	movl	28(%ecx),%edx
2672	xorl	%esi,%eax
2673	xorl	%ecx,%ecx
2674	xorl	%esi,%edx
2675	andl	$0xfcfcfcfc,%eax
2676	andl	$0xcfcfcfcf,%edx
2677	movb	%al,%bl
2678	movb	%ah,%cl
2679	rorl	$4,%edx
2680	xorl	(%ebp,%ebx,1),%edi
2681	movb	%dl,%bl
2682	xorl	0x200(%ebp,%ecx,1),%edi
2683	movb	%dh,%cl
2684	shrl	$16,%eax
2685	xorl	0x100(%ebp,%ebx,1),%edi
2686	movb	%ah,%bl
2687	shrl	$16,%edx
2688	xorl	0x300(%ebp,%ecx,1),%edi
2689	movb	%dh,%cl
2690	andl	$0xff,%eax
2691	andl	$0xff,%edx
2692	xorl	0x600(%ebp,%ebx,1),%edi
2693	xorl	0x700(%ebp,%ecx,1),%edi
2694	movl	(%esp),%ecx
2695	xorl	0x400(%ebp,%eax,1),%edi
2696	xorl	0x500(%ebp,%edx,1),%edi
2697
2698	movl	16(%ecx),%eax
2699	xorl	%ebx,%ebx
2700	movl	20(%ecx),%edx
2701	xorl	%edi,%eax
2702	xorl	%ecx,%ecx
2703	xorl	%edi,%edx
2704	andl	$0xfcfcfcfc,%eax
2705	andl	$0xcfcfcfcf,%edx
2706	movb	%al,%bl
2707	movb	%ah,%cl
2708	rorl	$4,%edx
2709	xorl	(%ebp,%ebx,1),%esi
2710	movb	%dl,%bl
2711	xorl	0x200(%ebp,%ecx,1),%esi
2712	movb	%dh,%cl
2713	shrl	$16,%eax
2714	xorl	0x100(%ebp,%ebx,1),%esi
2715	movb	%ah,%bl
2716	shrl	$16,%edx
2717	xorl	0x300(%ebp,%ecx,1),%esi
2718	movb	%dh,%cl
2719	andl	$0xff,%eax
2720	andl	$0xff,%edx
2721	xorl	0x600(%ebp,%ebx,1),%esi
2722	xorl	0x700(%ebp,%ecx,1),%esi
2723	movl	(%esp),%ecx
2724	xorl	0x400(%ebp,%eax,1),%esi
2725	xorl	0x500(%ebp,%edx,1),%esi
2726
2727	movl	8(%ecx),%eax
2728	xorl	%ebx,%ebx
2729	movl	12(%ecx),%edx
2730	xorl	%esi,%eax
2731	xorl	%ecx,%ecx
2732	xorl	%esi,%edx
2733	andl	$0xfcfcfcfc,%eax
2734	andl	$0xcfcfcfcf,%edx
2735	movb	%al,%bl
2736	movb	%ah,%cl
2737	rorl	$4,%edx
2738	xorl	(%ebp,%ebx,1),%edi
2739	movb	%dl,%bl
2740	xorl	0x200(%ebp,%ecx,1),%edi
2741	movb	%dh,%cl
2742	shrl	$16,%eax
2743	xorl	0x100(%ebp,%ebx,1),%edi
2744	movb	%ah,%bl
2745	shrl	$16,%edx
2746	xorl	0x300(%ebp,%ecx,1),%edi
2747	movb	%dh,%cl
2748	andl	$0xff,%eax
2749	andl	$0xff,%edx
2750	xorl	0x600(%ebp,%ebx,1),%edi
2751	xorl	0x700(%ebp,%ecx,1),%edi
2752	movl	(%esp),%ecx
2753	xorl	0x400(%ebp,%eax,1),%edi
2754	xorl	0x500(%ebp,%edx,1),%edi
2755
2756	movl	(%ecx),%eax
2757	xorl	%ebx,%ebx
2758	movl	4(%ecx),%edx
2759	xorl	%edi,%eax
2760	xorl	%ecx,%ecx
2761	xorl	%edi,%edx
2762	andl	$0xfcfcfcfc,%eax
2763	andl	$0xcfcfcfcf,%edx
2764	movb	%al,%bl
2765	movb	%ah,%cl
2766	rorl	$4,%edx
2767	xorl	(%ebp,%ebx,1),%esi
2768	movb	%dl,%bl
2769	xorl	0x200(%ebp,%ecx,1),%esi
2770	movb	%dh,%cl
2771	shrl	$16,%eax
2772	xorl	0x100(%ebp,%ebx,1),%esi
2773	movb	%ah,%bl
2774	shrl	$16,%edx
2775	xorl	0x300(%ebp,%ecx,1),%esi
2776	movb	%dh,%cl
2777	andl	$0xff,%eax
2778	andl	$0xff,%edx
2779	xorl	0x600(%ebp,%ebx,1),%esi
2780	xorl	0x700(%ebp,%ecx,1),%esi
2781	movl	(%esp),%ecx
2782	xorl	0x400(%ebp,%eax,1),%esi
2783	xorl	0x500(%ebp,%edx,1),%esi
2784	addl	$4,%esp
2785	ret
2786.size	_x86_DES_decrypt,.-_x86_DES_decrypt
2787.globl	DES_encrypt1
2788.type	DES_encrypt1,@function
2789.align	16
2790DES_encrypt1:
2791.L_DES_encrypt1_begin:
2792	pushl	%esi
2793	pushl	%edi
2794
2795
2796	movl	12(%esp),%esi
2797	xorl	%ecx,%ecx
2798	pushl	%ebx
2799	pushl	%ebp
2800	movl	(%esi),%eax
2801	movl	28(%esp),%ebx
2802	movl	4(%esi),%edi
2803
2804
2805	roll	$4,%eax
2806	movl	%eax,%esi
2807	xorl	%edi,%eax
2808	andl	$0xf0f0f0f0,%eax
2809	xorl	%eax,%esi
2810	xorl	%eax,%edi
2811
2812	roll	$20,%edi
2813	movl	%edi,%eax
2814	xorl	%esi,%edi
2815	andl	$0xfff0000f,%edi
2816	xorl	%edi,%eax
2817	xorl	%edi,%esi
2818
2819	roll	$14,%eax
2820	movl	%eax,%edi
2821	xorl	%esi,%eax
2822	andl	$0x33333333,%eax
2823	xorl	%eax,%edi
2824	xorl	%eax,%esi
2825
2826	roll	$22,%esi
2827	movl	%esi,%eax
2828	xorl	%edi,%esi
2829	andl	$0x03fc03fc,%esi
2830	xorl	%esi,%eax
2831	xorl	%esi,%edi
2832
2833	roll	$9,%eax
2834	movl	%eax,%esi
2835	xorl	%edi,%eax
2836	andl	$0xaaaaaaaa,%eax
2837	xorl	%eax,%esi
2838	xorl	%eax,%edi
2839
2840	roll	$1,%edi
2841	call	.L000pic_point
2842.L000pic_point:
2843	popl	%ebp
2844	leal	DES_SPtrans-.L000pic_point(%ebp),%ebp
2845	movl	24(%esp),%ecx
2846	cmpl	$0,%ebx
2847	je	.L001decrypt
2848	call	_x86_DES_encrypt
2849	jmp	.L002done
2850.L001decrypt:
2851	call	_x86_DES_decrypt
2852.L002done:
2853
2854
2855	movl	20(%esp),%edx
2856	rorl	$1,%esi
2857	movl	%edi,%eax
2858	xorl	%esi,%edi
2859	andl	$0xaaaaaaaa,%edi
2860	xorl	%edi,%eax
2861	xorl	%edi,%esi
2862
2863	roll	$23,%eax
2864	movl	%eax,%edi
2865	xorl	%esi,%eax
2866	andl	$0x03fc03fc,%eax
2867	xorl	%eax,%edi
2868	xorl	%eax,%esi
2869
2870	roll	$10,%edi
2871	movl	%edi,%eax
2872	xorl	%esi,%edi
2873	andl	$0x33333333,%edi
2874	xorl	%edi,%eax
2875	xorl	%edi,%esi
2876
2877	roll	$18,%esi
2878	movl	%esi,%edi
2879	xorl	%eax,%esi
2880	andl	$0xfff0000f,%esi
2881	xorl	%esi,%edi
2882	xorl	%esi,%eax
2883
2884	roll	$12,%edi
2885	movl	%edi,%esi
2886	xorl	%eax,%edi
2887	andl	$0xf0f0f0f0,%edi
2888	xorl	%edi,%esi
2889	xorl	%edi,%eax
2890
2891	rorl	$4,%eax
2892	movl	%eax,(%edx)
2893	movl	%esi,4(%edx)
2894	popl	%ebp
2895	popl	%ebx
2896	popl	%edi
2897	popl	%esi
2898	ret
2899.size	DES_encrypt1,.-.L_DES_encrypt1_begin
2900.globl	DES_encrypt2
2901.type	DES_encrypt2,@function
2902.align	16
2903DES_encrypt2:
2904.L_DES_encrypt2_begin:
2905	pushl	%esi
2906	pushl	%edi
2907
2908
2909	movl	12(%esp),%eax
2910	xorl	%ecx,%ecx
2911	pushl	%ebx
2912	pushl	%ebp
2913	movl	(%eax),%esi
2914	movl	28(%esp),%ebx
2915	roll	$3,%esi
2916	movl	4(%eax),%edi
2917	roll	$3,%edi
2918	call	.L003pic_point
2919.L003pic_point:
2920	popl	%ebp
2921	leal	DES_SPtrans-.L003pic_point(%ebp),%ebp
2922	movl	24(%esp),%ecx
2923	cmpl	$0,%ebx
2924	je	.L004decrypt
2925	call	_x86_DES_encrypt
2926	jmp	.L005done
2927.L004decrypt:
2928	call	_x86_DES_decrypt
2929.L005done:
2930
2931
2932	rorl	$3,%edi
2933	movl	20(%esp),%eax
2934	rorl	$3,%esi
2935	movl	%edi,(%eax)
2936	movl	%esi,4(%eax)
2937	popl	%ebp
2938	popl	%ebx
2939	popl	%edi
2940	popl	%esi
2941	ret
2942.size	DES_encrypt2,.-.L_DES_encrypt2_begin
2943.globl	DES_encrypt3
2944.type	DES_encrypt3,@function
2945.align	16
2946DES_encrypt3:
2947.L_DES_encrypt3_begin:
2948	pushl	%ebx
2949	movl	8(%esp),%ebx
2950	pushl	%ebp
2951	pushl	%esi
2952	pushl	%edi
2953
2954
2955	movl	(%ebx),%edi
2956	movl	4(%ebx),%esi
2957	subl	$12,%esp
2958
2959
2960	roll	$4,%edi
2961	movl	%edi,%edx
2962	xorl	%esi,%edi
2963	andl	$0xf0f0f0f0,%edi
2964	xorl	%edi,%edx
2965	xorl	%edi,%esi
2966
2967	roll	$20,%esi
2968	movl	%esi,%edi
2969	xorl	%edx,%esi
2970	andl	$0xfff0000f,%esi
2971	xorl	%esi,%edi
2972	xorl	%esi,%edx
2973
2974	roll	$14,%edi
2975	movl	%edi,%esi
2976	xorl	%edx,%edi
2977	andl	$0x33333333,%edi
2978	xorl	%edi,%esi
2979	xorl	%edi,%edx
2980
2981	roll	$22,%edx
2982	movl	%edx,%edi
2983	xorl	%esi,%edx
2984	andl	$0x03fc03fc,%edx
2985	xorl	%edx,%edi
2986	xorl	%edx,%esi
2987
2988	roll	$9,%edi
2989	movl	%edi,%edx
2990	xorl	%esi,%edi
2991	andl	$0xaaaaaaaa,%edi
2992	xorl	%edi,%edx
2993	xorl	%edi,%esi
2994
2995	rorl	$3,%edx
2996	rorl	$2,%esi
2997	movl	%esi,4(%ebx)
2998	movl	36(%esp),%eax
2999	movl	%edx,(%ebx)
3000	movl	40(%esp),%edi
3001	movl	44(%esp),%esi
3002	movl	$1,8(%esp)
3003	movl	%eax,4(%esp)
3004	movl	%ebx,(%esp)
3005	call	.L_DES_encrypt2_begin
3006	movl	$0,8(%esp)
3007	movl	%edi,4(%esp)
3008	movl	%ebx,(%esp)
3009	call	.L_DES_encrypt2_begin
3010	movl	$1,8(%esp)
3011	movl	%esi,4(%esp)
3012	movl	%ebx,(%esp)
3013	call	.L_DES_encrypt2_begin
3014	addl	$12,%esp
3015	movl	(%ebx),%edi
3016	movl	4(%ebx),%esi
3017
3018
3019	roll	$2,%esi
3020	roll	$3,%edi
3021	movl	%edi,%eax
3022	xorl	%esi,%edi
3023	andl	$0xaaaaaaaa,%edi
3024	xorl	%edi,%eax
3025	xorl	%edi,%esi
3026
3027	roll	$23,%eax
3028	movl	%eax,%edi
3029	xorl	%esi,%eax
3030	andl	$0x03fc03fc,%eax
3031	xorl	%eax,%edi
3032	xorl	%eax,%esi
3033
3034	roll	$10,%edi
3035	movl	%edi,%eax
3036	xorl	%esi,%edi
3037	andl	$0x33333333,%edi
3038	xorl	%edi,%eax
3039	xorl	%edi,%esi
3040
3041	roll	$18,%esi
3042	movl	%esi,%edi
3043	xorl	%eax,%esi
3044	andl	$0xfff0000f,%esi
3045	xorl	%esi,%edi
3046	xorl	%esi,%eax
3047
3048	roll	$12,%edi
3049	movl	%edi,%esi
3050	xorl	%eax,%edi
3051	andl	$0xf0f0f0f0,%edi
3052	xorl	%edi,%esi
3053	xorl	%edi,%eax
3054
3055	rorl	$4,%eax
3056	movl	%eax,(%ebx)
3057	movl	%esi,4(%ebx)
3058	popl	%edi
3059	popl	%esi
3060	popl	%ebp
3061	popl	%ebx
3062	ret
3063.size	DES_encrypt3,.-.L_DES_encrypt3_begin
3064.globl	DES_decrypt3
3065.type	DES_decrypt3,@function
3066.align	16
3067DES_decrypt3:
3068.L_DES_decrypt3_begin:
3069	pushl	%ebx
3070	movl	8(%esp),%ebx
3071	pushl	%ebp
3072	pushl	%esi
3073	pushl	%edi
3074
3075
3076	movl	(%ebx),%edi
3077	movl	4(%ebx),%esi
3078	subl	$12,%esp
3079
3080
3081	roll	$4,%edi
3082	movl	%edi,%edx
3083	xorl	%esi,%edi
3084	andl	$0xf0f0f0f0,%edi
3085	xorl	%edi,%edx
3086	xorl	%edi,%esi
3087
3088	roll	$20,%esi
3089	movl	%esi,%edi
3090	xorl	%edx,%esi
3091	andl	$0xfff0000f,%esi
3092	xorl	%esi,%edi
3093	xorl	%esi,%edx
3094
3095	roll	$14,%edi
3096	movl	%edi,%esi
3097	xorl	%edx,%edi
3098	andl	$0x33333333,%edi
3099	xorl	%edi,%esi
3100	xorl	%edi,%edx
3101
3102	roll	$22,%edx
3103	movl	%edx,%edi
3104	xorl	%esi,%edx
3105	andl	$0x03fc03fc,%edx
3106	xorl	%edx,%edi
3107	xorl	%edx,%esi
3108
3109	roll	$9,%edi
3110	movl	%edi,%edx
3111	xorl	%esi,%edi
3112	andl	$0xaaaaaaaa,%edi
3113	xorl	%edi,%edx
3114	xorl	%edi,%esi
3115
3116	rorl	$3,%edx
3117	rorl	$2,%esi
3118	movl	%esi,4(%ebx)
3119	movl	36(%esp),%esi
3120	movl	%edx,(%ebx)
3121	movl	40(%esp),%edi
3122	movl	44(%esp),%eax
3123	movl	$0,8(%esp)
3124	movl	%eax,4(%esp)
3125	movl	%ebx,(%esp)
3126	call	.L_DES_encrypt2_begin
3127	movl	$1,8(%esp)
3128	movl	%edi,4(%esp)
3129	movl	%ebx,(%esp)
3130	call	.L_DES_encrypt2_begin
3131	movl	$0,8(%esp)
3132	movl	%esi,4(%esp)
3133	movl	%ebx,(%esp)
3134	call	.L_DES_encrypt2_begin
3135	addl	$12,%esp
3136	movl	(%ebx),%edi
3137	movl	4(%ebx),%esi
3138
3139
3140	roll	$2,%esi
3141	roll	$3,%edi
3142	movl	%edi,%eax
3143	xorl	%esi,%edi
3144	andl	$0xaaaaaaaa,%edi
3145	xorl	%edi,%eax
3146	xorl	%edi,%esi
3147
3148	roll	$23,%eax
3149	movl	%eax,%edi
3150	xorl	%esi,%eax
3151	andl	$0x03fc03fc,%eax
3152	xorl	%eax,%edi
3153	xorl	%eax,%esi
3154
3155	roll	$10,%edi
3156	movl	%edi,%eax
3157	xorl	%esi,%edi
3158	andl	$0x33333333,%edi
3159	xorl	%edi,%eax
3160	xorl	%edi,%esi
3161
3162	roll	$18,%esi
3163	movl	%esi,%edi
3164	xorl	%eax,%esi
3165	andl	$0xfff0000f,%esi
3166	xorl	%esi,%edi
3167	xorl	%esi,%eax
3168
3169	roll	$12,%edi
3170	movl	%edi,%esi
3171	xorl	%eax,%edi
3172	andl	$0xf0f0f0f0,%edi
3173	xorl	%edi,%esi
3174	xorl	%edi,%eax
3175
3176	rorl	$4,%eax
3177	movl	%eax,(%ebx)
3178	movl	%esi,4(%ebx)
3179	popl	%edi
3180	popl	%esi
3181	popl	%ebp
3182	popl	%ebx
3183	ret
3184.size	DES_decrypt3,.-.L_DES_decrypt3_begin
3185.globl	DES_ncbc_encrypt
3186.type	DES_ncbc_encrypt,@function
3187.align	16
3188DES_ncbc_encrypt:
3189.L_DES_ncbc_encrypt_begin:
3190
3191	pushl	%ebp
3192	pushl	%ebx
3193	pushl	%esi
3194	pushl	%edi
3195	movl	28(%esp),%ebp
3196
3197	movl	36(%esp),%ebx
3198	movl	(%ebx),%esi
3199	movl	4(%ebx),%edi
3200	pushl	%edi
3201	pushl	%esi
3202	pushl	%edi
3203	pushl	%esi
3204	movl	%esp,%ebx
3205	movl	36(%esp),%esi
3206	movl	40(%esp),%edi
3207
3208	movl	56(%esp),%ecx
3209
3210	pushl	%ecx
3211
3212	movl	52(%esp),%eax
3213	pushl	%eax
3214	pushl	%ebx
3215	cmpl	$0,%ecx
3216	jz	.L006decrypt
3217	andl	$4294967288,%ebp
3218	movl	12(%esp),%eax
3219	movl	16(%esp),%ebx
3220	jz	.L007encrypt_finish
3221.L008encrypt_loop:
3222	movl	(%esi),%ecx
3223	movl	4(%esi),%edx
3224	xorl	%ecx,%eax
3225	xorl	%edx,%ebx
3226	movl	%eax,12(%esp)
3227	movl	%ebx,16(%esp)
3228	call	.L_DES_encrypt1_begin
3229	movl	12(%esp),%eax
3230	movl	16(%esp),%ebx
3231	movl	%eax,(%edi)
3232	movl	%ebx,4(%edi)
3233	addl	$8,%esi
3234	addl	$8,%edi
3235	subl	$8,%ebp
3236	jnz	.L008encrypt_loop
3237.L007encrypt_finish:
3238	movl	56(%esp),%ebp
3239	andl	$7,%ebp
3240	jz	.L009finish
3241	call	.L010PIC_point
3242.L010PIC_point:
3243	popl	%edx
3244	leal	.L011cbc_enc_jmp_table-.L010PIC_point(%edx),%ecx
3245	movl	(%ecx,%ebp,4),%ebp
3246	addl	%edx,%ebp
3247	xorl	%ecx,%ecx
3248	xorl	%edx,%edx
3249	jmp	*%ebp
3250.L012ej7:
3251	movb	6(%esi),%dh
3252	shll	$8,%edx
3253.L013ej6:
3254	movb	5(%esi),%dh
3255.L014ej5:
3256	movb	4(%esi),%dl
3257.L015ej4:
3258	movl	(%esi),%ecx
3259	jmp	.L016ejend
3260.L017ej3:
3261	movb	2(%esi),%ch
3262	shll	$8,%ecx
3263.L018ej2:
3264	movb	1(%esi),%ch
3265.L019ej1:
3266	movb	(%esi),%cl
3267.L016ejend:
3268	xorl	%ecx,%eax
3269	xorl	%edx,%ebx
3270	movl	%eax,12(%esp)
3271	movl	%ebx,16(%esp)
3272	call	.L_DES_encrypt1_begin
3273	movl	12(%esp),%eax
3274	movl	16(%esp),%ebx
3275	movl	%eax,(%edi)
3276	movl	%ebx,4(%edi)
3277	jmp	.L009finish
3278.L006decrypt:
3279	andl	$4294967288,%ebp
3280	movl	20(%esp),%eax
3281	movl	24(%esp),%ebx
3282	jz	.L020decrypt_finish
3283.L021decrypt_loop:
3284	movl	(%esi),%eax
3285	movl	4(%esi),%ebx
3286	movl	%eax,12(%esp)
3287	movl	%ebx,16(%esp)
3288	call	.L_DES_encrypt1_begin
3289	movl	12(%esp),%eax
3290	movl	16(%esp),%ebx
3291	movl	20(%esp),%ecx
3292	movl	24(%esp),%edx
3293	xorl	%eax,%ecx
3294	xorl	%ebx,%edx
3295	movl	(%esi),%eax
3296	movl	4(%esi),%ebx
3297	movl	%ecx,(%edi)
3298	movl	%edx,4(%edi)
3299	movl	%eax,20(%esp)
3300	movl	%ebx,24(%esp)
3301	addl	$8,%esi
3302	addl	$8,%edi
3303	subl	$8,%ebp
3304	jnz	.L021decrypt_loop
3305.L020decrypt_finish:
3306	movl	56(%esp),%ebp
3307	andl	$7,%ebp
3308	jz	.L009finish
3309	movl	(%esi),%eax
3310	movl	4(%esi),%ebx
3311	movl	%eax,12(%esp)
3312	movl	%ebx,16(%esp)
3313	call	.L_DES_encrypt1_begin
3314	movl	12(%esp),%eax
3315	movl	16(%esp),%ebx
3316	movl	20(%esp),%ecx
3317	movl	24(%esp),%edx
3318	xorl	%eax,%ecx
3319	xorl	%ebx,%edx
3320	movl	(%esi),%eax
3321	movl	4(%esi),%ebx
3322.L022dj7:
3323	rorl	$16,%edx
3324	movb	%dl,6(%edi)
3325	shrl	$16,%edx
3326.L023dj6:
3327	movb	%dh,5(%edi)
3328.L024dj5:
3329	movb	%dl,4(%edi)
3330.L025dj4:
3331	movl	%ecx,(%edi)
3332	jmp	.L026djend
3333.L027dj3:
3334	rorl	$16,%ecx
3335	movb	%cl,2(%edi)
3336	shll	$16,%ecx
3337.L028dj2:
3338	movb	%ch,1(%esi)
3339.L029dj1:
3340	movb	%cl,(%esi)
3341.L026djend:
3342	jmp	.L009finish
3343.L009finish:
3344	movl	64(%esp),%ecx
3345	addl	$28,%esp
3346	movl	%eax,(%ecx)
3347	movl	%ebx,4(%ecx)
3348	popl	%edi
3349	popl	%esi
3350	popl	%ebx
3351	popl	%ebp
3352	ret
3353.align	64
3354.L011cbc_enc_jmp_table:
3355.long	0
3356.long	.L019ej1-.L010PIC_point
3357.long	.L018ej2-.L010PIC_point
3358.long	.L017ej3-.L010PIC_point
3359.long	.L015ej4-.L010PIC_point
3360.long	.L014ej5-.L010PIC_point
3361.long	.L013ej6-.L010PIC_point
3362.long	.L012ej7-.L010PIC_point
3363.align	64
3364.size	DES_ncbc_encrypt,.-.L_DES_ncbc_encrypt_begin
3365.globl	DES_ede3_cbc_encrypt
3366.type	DES_ede3_cbc_encrypt,@function
3367.align	16
3368DES_ede3_cbc_encrypt:
3369.L_DES_ede3_cbc_encrypt_begin:
3370
3371	pushl	%ebp
3372	pushl	%ebx
3373	pushl	%esi
3374	pushl	%edi
3375	movl	28(%esp),%ebp
3376
3377	movl	44(%esp),%ebx
3378	movl	(%ebx),%esi
3379	movl	4(%ebx),%edi
3380	pushl	%edi
3381	pushl	%esi
3382	pushl	%edi
3383	pushl	%esi
3384	movl	%esp,%ebx
3385	movl	36(%esp),%esi
3386	movl	40(%esp),%edi
3387
3388	movl	64(%esp),%ecx
3389
3390	movl	56(%esp),%eax
3391	pushl	%eax
3392
3393	movl	56(%esp),%eax
3394	pushl	%eax
3395
3396	movl	56(%esp),%eax
3397	pushl	%eax
3398	pushl	%ebx
3399	cmpl	$0,%ecx
3400	jz	.L030decrypt
3401	andl	$4294967288,%ebp
3402	movl	16(%esp),%eax
3403	movl	20(%esp),%ebx
3404	jz	.L031encrypt_finish
3405.L032encrypt_loop:
3406	movl	(%esi),%ecx
3407	movl	4(%esi),%edx
3408	xorl	%ecx,%eax
3409	xorl	%edx,%ebx
3410	movl	%eax,16(%esp)
3411	movl	%ebx,20(%esp)
3412	call	.L_DES_encrypt3_begin
3413	movl	16(%esp),%eax
3414	movl	20(%esp),%ebx
3415	movl	%eax,(%edi)
3416	movl	%ebx,4(%edi)
3417	addl	$8,%esi
3418	addl	$8,%edi
3419	subl	$8,%ebp
3420	jnz	.L032encrypt_loop
3421.L031encrypt_finish:
3422	movl	60(%esp),%ebp
3423	andl	$7,%ebp
3424	jz	.L033finish
3425	call	.L034PIC_point
3426.L034PIC_point:
3427	popl	%edx
3428	leal	.L035cbc_enc_jmp_table-.L034PIC_point(%edx),%ecx
3429	movl	(%ecx,%ebp,4),%ebp
3430	addl	%edx,%ebp
3431	xorl	%ecx,%ecx
3432	xorl	%edx,%edx
3433	jmp	*%ebp
3434.L036ej7:
3435	movb	6(%esi),%dh
3436	shll	$8,%edx
3437.L037ej6:
3438	movb	5(%esi),%dh
3439.L038ej5:
3440	movb	4(%esi),%dl
3441.L039ej4:
3442	movl	(%esi),%ecx
3443	jmp	.L040ejend
3444.L041ej3:
3445	movb	2(%esi),%ch
3446	shll	$8,%ecx
3447.L042ej2:
3448	movb	1(%esi),%ch
3449.L043ej1:
3450	movb	(%esi),%cl
3451.L040ejend:
3452	xorl	%ecx,%eax
3453	xorl	%edx,%ebx
3454	movl	%eax,16(%esp)
3455	movl	%ebx,20(%esp)
3456	call	.L_DES_encrypt3_begin
3457	movl	16(%esp),%eax
3458	movl	20(%esp),%ebx
3459	movl	%eax,(%edi)
3460	movl	%ebx,4(%edi)
3461	jmp	.L033finish
3462.L030decrypt:
3463	andl	$4294967288,%ebp
3464	movl	24(%esp),%eax
3465	movl	28(%esp),%ebx
3466	jz	.L044decrypt_finish
3467.L045decrypt_loop:
3468	movl	(%esi),%eax
3469	movl	4(%esi),%ebx
3470	movl	%eax,16(%esp)
3471	movl	%ebx,20(%esp)
3472	call	.L_DES_decrypt3_begin
3473	movl	16(%esp),%eax
3474	movl	20(%esp),%ebx
3475	movl	24(%esp),%ecx
3476	movl	28(%esp),%edx
3477	xorl	%eax,%ecx
3478	xorl	%ebx,%edx
3479	movl	(%esi),%eax
3480	movl	4(%esi),%ebx
3481	movl	%ecx,(%edi)
3482	movl	%edx,4(%edi)
3483	movl	%eax,24(%esp)
3484	movl	%ebx,28(%esp)
3485	addl	$8,%esi
3486	addl	$8,%edi
3487	subl	$8,%ebp
3488	jnz	.L045decrypt_loop
3489.L044decrypt_finish:
3490	movl	60(%esp),%ebp
3491	andl	$7,%ebp
3492	jz	.L033finish
3493	movl	(%esi),%eax
3494	movl	4(%esi),%ebx
3495	movl	%eax,16(%esp)
3496	movl	%ebx,20(%esp)
3497	call	.L_DES_decrypt3_begin
3498	movl	16(%esp),%eax
3499	movl	20(%esp),%ebx
3500	movl	24(%esp),%ecx
3501	movl	28(%esp),%edx
3502	xorl	%eax,%ecx
3503	xorl	%ebx,%edx
3504	movl	(%esi),%eax
3505	movl	4(%esi),%ebx
3506.L046dj7:
3507	rorl	$16,%edx
3508	movb	%dl,6(%edi)
3509	shrl	$16,%edx
3510.L047dj6:
3511	movb	%dh,5(%edi)
3512.L048dj5:
3513	movb	%dl,4(%edi)
3514.L049dj4:
3515	movl	%ecx,(%edi)
3516	jmp	.L050djend
3517.L051dj3:
3518	rorl	$16,%ecx
3519	movb	%cl,2(%edi)
3520	shll	$16,%ecx
3521.L052dj2:
3522	movb	%ch,1(%esi)
3523.L053dj1:
3524	movb	%cl,(%esi)
3525.L050djend:
3526	jmp	.L033finish
3527.L033finish:
3528	movl	76(%esp),%ecx
3529	addl	$32,%esp
3530	movl	%eax,(%ecx)
3531	movl	%ebx,4(%ecx)
3532	popl	%edi
3533	popl	%esi
3534	popl	%ebx
3535	popl	%ebp
3536	ret
3537.align	64
3538.L035cbc_enc_jmp_table:
3539.long	0
3540.long	.L043ej1-.L034PIC_point
3541.long	.L042ej2-.L034PIC_point
3542.long	.L041ej3-.L034PIC_point
3543.long	.L039ej4-.L034PIC_point
3544.long	.L038ej5-.L034PIC_point
3545.long	.L037ej6-.L034PIC_point
3546.long	.L036ej7-.L034PIC_point
3547.align	64
3548.size	DES_ede3_cbc_encrypt,.-.L_DES_ede3_cbc_encrypt_begin
3549.align	64
3550DES_SPtrans:
3551.long	34080768,524288,33554434,34080770
3552.long	33554432,526338,524290,33554434
3553.long	526338,34080768,34078720,2050
3554.long	33556482,33554432,0,524290
3555.long	524288,2,33556480,526336
3556.long	34080770,34078720,2050,33556480
3557.long	2,2048,526336,34078722
3558.long	2048,33556482,34078722,0
3559.long	0,34080770,33556480,524290
3560.long	34080768,524288,2050,33556480
3561.long	34078722,2048,526336,33554434
3562.long	526338,2,33554434,34078720
3563.long	34080770,526336,34078720,33556482
3564.long	33554432,2050,524290,0
3565.long	524288,33554432,33556482,34080768
3566.long	2,34078722,2048,526338
3567.long	1074823184,0,1081344,1074790400
3568.long	1073741840,32784,1073774592,1081344
3569.long	32768,1074790416,16,1073774592
3570.long	1048592,1074823168,1074790400,16
3571.long	1048576,1073774608,1074790416,32768
3572.long	1081360,1073741824,0,1048592
3573.long	1073774608,1081360,1074823168,1073741840
3574.long	1073741824,1048576,32784,1074823184
3575.long	1048592,1074823168,1073774592,1081360
3576.long	1074823184,1048592,1073741840,0
3577.long	1073741824,32784,1048576,1074790416
3578.long	32768,1073741824,1081360,1073774608
3579.long	1074823168,32768,0,1073741840
3580.long	16,1074823184,1081344,1074790400
3581.long	1074790416,1048576,32784,1073774592
3582.long	1073774608,16,1074790400,1081344
3583.long	67108865,67371264,256,67109121
3584.long	262145,67108864,67109121,262400
3585.long	67109120,262144,67371008,1
3586.long	67371265,257,1,67371009
3587.long	0,262145,67371264,256
3588.long	257,67371265,262144,67108865
3589.long	67371009,67109120,262401,67371008
3590.long	262400,0,67108864,262401
3591.long	67371264,256,1,262144
3592.long	257,262145,67371008,67109121
3593.long	0,67371264,262400,67371009
3594.long	262145,67108864,67371265,1
3595.long	262401,67108865,67108864,67371265
3596.long	262144,67109120,67109121,262400
3597.long	67109120,0,67371009,257
3598.long	67108865,262401,256,67371008
3599.long	4198408,268439552,8,272633864
3600.long	0,272629760,268439560,4194312
3601.long	272633856,268435464,268435456,4104
3602.long	268435464,4198408,4194304,268435456
3603.long	272629768,4198400,4096,8
3604.long	4198400,268439560,272629760,4096
3605.long	4104,0,4194312,272633856
3606.long	268439552,272629768,272633864,4194304
3607.long	272629768,4104,4194304,268435464
3608.long	4198400,268439552,8,272629760
3609.long	268439560,0,4096,4194312
3610.long	0,272629768,272633856,4096
3611.long	268435456,272633864,4198408,4194304
3612.long	272633864,8,268439552,4198408
3613.long	4194312,4198400,272629760,268439560
3614.long	4104,268435456,268435464,272633856
3615.long	134217728,65536,1024,134284320
3616.long	134283296,134218752,66592,134283264
3617.long	65536,32,134217760,66560
3618.long	134218784,134283296,134284288,0
3619.long	66560,134217728,65568,1056
3620.long	134218752,66592,0,134217760
3621.long	32,134218784,134284320,65568
3622.long	134283264,1024,1056,134284288
3623.long	134284288,134218784,65568,134283264
3624.long	65536,32,134217760,134218752
3625.long	134217728,66560,134284320,0
3626.long	66592,134217728,1024,65568
3627.long	134218784,1024,0,134284320
3628.long	134283296,134284288,1056,65536
3629.long	66560,134283296,134218752,1056
3630.long	32,66592,134283264,134217760
3631.long	2147483712,2097216,0,2149588992
3632.long	2097216,8192,2147491904,2097152
3633.long	8256,2149589056,2105344,2147483648
3634.long	2147491840,2147483712,2149580800,2105408
3635.long	2097152,2147491904,2149580864,0
3636.long	8192,64,2149588992,2149580864
3637.long	2149589056,2149580800,2147483648,8256
3638.long	64,2105344,2105408,2147491840
3639.long	8256,2147483648,2147491840,2105408
3640.long	2149588992,2097216,0,2147491840
3641.long	2147483648,8192,2149580864,2097152
3642.long	2097216,2149589056,2105344,64
3643.long	2149589056,2105344,2097152,2147491904
3644.long	2147483712,2149580800,2105408,0
3645.long	8192,2147483712,2147491904,2149588992
3646.long	2149580800,8256,64,2149580864
3647.long	16384,512,16777728,16777220
3648.long	16794116,16388,16896,0
3649.long	16777216,16777732,516,16793600
3650.long	4,16794112,16793600,516
3651.long	16777732,16384,16388,16794116
3652.long	0,16777728,16777220,16896
3653.long	16793604,16900,16794112,4
3654.long	16900,16793604,512,16777216
3655.long	16900,16793600,16793604,516
3656.long	16384,512,16777216,16793604
3657.long	16777732,16900,16896,0
3658.long	512,16777220,4,16777728
3659.long	0,16777732,16777728,16896
3660.long	516,16384,16794116,16777216
3661.long	16794112,4,16388,16794116
3662.long	16777220,16794112,16793600,16388
3663.long	545259648,545390592,131200,0
3664.long	537001984,8388736,545259520,545390720
3665.long	128,536870912,8519680,131200
3666.long	8519808,537002112,536871040,545259520
3667.long	131072,8519808,8388736,537001984
3668.long	545390720,536871040,0,8519680
3669.long	536870912,8388608,537002112,545259648
3670.long	8388608,131072,545390592,128
3671.long	8388608,131072,536871040,545390720
3672.long	131200,536870912,0,8519680
3673.long	545259648,537002112,537001984,8388736
3674.long	545390592,128,8388736,537001984
3675.long	545390720,8388608,545259520,536871040
3676.long	8519680,131200,537002112,545259520
3677.long	128,545390592,8519808,0
3678.long	536870912,545259648,131072,8519808
3679#endif
3680