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