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