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