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