crypt586.s revision 95967
1	# $FreeBSD: head/secure/lib/libcrypto/i386/crypt586.s 95967 2002-05-03 00:14:39Z peter $
2	# Dont even think of reading this code
3	# It was automatically generated by crypt586.pl
4	# Which is a perl program used to generate the x86 assember for
5	# any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris
6	# eric <eay@cryptsoft.com>
7
8	.file	"crypt586.s"
9	.version	"01.01"
10gcc2_compiled.:
11.text
12	.align 16
13.globl fcrypt_body
14	.type	fcrypt_body,@function
15fcrypt_body:
16	pushl	%ebp
17	pushl	%ebx
18	pushl	%esi
19	pushl	%edi
20
21
22	# Load the 2 words
23	xorl	%edi,		%edi
24	xorl	%esi,		%esi
25	movl	24(%esp),	%ebp
26	pushl	$25
27.L000start:
28
29	# Round 0
30	movl	32(%esp),	%eax
31	movl	%esi,		%edx
32	shrl	$16,		%edx
33	movl	36(%esp),	%ecx
34	xorl	%esi,		%edx
35	andl	%edx,		%eax
36	andl	%ecx,		%edx
37	movl	%eax,		%ebx
38	sall	$16,		%ebx
39	movl	%edx,		%ecx
40	sall	$16,		%ecx
41	xorl	%ebx,		%eax
42	xorl	%ecx,		%edx
43	movl	(%ebp),		%ebx
44	xorl	%ebx,		%eax
45	movl	4(%ebp),	%ecx
46	xorl	%esi,		%eax
47	xorl	%esi,		%edx
48	xorl	%ecx,		%edx
49	andl	$0xfcfcfcfc,	%eax
50	xorl	%ebx,		%ebx
51	andl	$0xcfcfcfcf,	%edx
52	xorl	%ecx,		%ecx
53	movb	%al,		%bl
54	movb	%ah,		%cl
55	rorl	$4,		%edx
56	movl	      des_SPtrans(%ebx),%ebp
57	movb	%dl,		%bl
58	xorl	%ebp,		%edi
59	movl	0x200+des_SPtrans(%ecx),%ebp
60	xorl	%ebp,		%edi
61	movb	%dh,		%cl
62	shrl	$16,		%eax
63	movl	0x100+des_SPtrans(%ebx),%ebp
64	xorl	%ebp,		%edi
65	movb	%ah,		%bl
66	shrl	$16,		%edx
67	movl	0x300+des_SPtrans(%ecx),%ebp
68	xorl	%ebp,		%edi
69	movl	28(%esp),	%ebp
70	movb	%dh,		%cl
71	andl	$0xff,		%eax
72	andl	$0xff,		%edx
73	movl	0x600+des_SPtrans(%ebx),%ebx
74	xorl	%ebx,		%edi
75	movl	0x700+des_SPtrans(%ecx),%ebx
76	xorl	%ebx,		%edi
77	movl	0x400+des_SPtrans(%eax),%ebx
78	xorl	%ebx,		%edi
79	movl	0x500+des_SPtrans(%edx),%ebx
80	xorl	%ebx,		%edi
81
82	# Round 1
83	movl	32(%esp),	%eax
84	movl	%edi,		%edx
85	shrl	$16,		%edx
86	movl	36(%esp),	%ecx
87	xorl	%edi,		%edx
88	andl	%edx,		%eax
89	andl	%ecx,		%edx
90	movl	%eax,		%ebx
91	sall	$16,		%ebx
92	movl	%edx,		%ecx
93	sall	$16,		%ecx
94	xorl	%ebx,		%eax
95	xorl	%ecx,		%edx
96	movl	8(%ebp),	%ebx
97	xorl	%ebx,		%eax
98	movl	12(%ebp),	%ecx
99	xorl	%edi,		%eax
100	xorl	%edi,		%edx
101	xorl	%ecx,		%edx
102	andl	$0xfcfcfcfc,	%eax
103	xorl	%ebx,		%ebx
104	andl	$0xcfcfcfcf,	%edx
105	xorl	%ecx,		%ecx
106	movb	%al,		%bl
107	movb	%ah,		%cl
108	rorl	$4,		%edx
109	movl	      des_SPtrans(%ebx),%ebp
110	movb	%dl,		%bl
111	xorl	%ebp,		%esi
112	movl	0x200+des_SPtrans(%ecx),%ebp
113	xorl	%ebp,		%esi
114	movb	%dh,		%cl
115	shrl	$16,		%eax
116	movl	0x100+des_SPtrans(%ebx),%ebp
117	xorl	%ebp,		%esi
118	movb	%ah,		%bl
119	shrl	$16,		%edx
120	movl	0x300+des_SPtrans(%ecx),%ebp
121	xorl	%ebp,		%esi
122	movl	28(%esp),	%ebp
123	movb	%dh,		%cl
124	andl	$0xff,		%eax
125	andl	$0xff,		%edx
126	movl	0x600+des_SPtrans(%ebx),%ebx
127	xorl	%ebx,		%esi
128	movl	0x700+des_SPtrans(%ecx),%ebx
129	xorl	%ebx,		%esi
130	movl	0x400+des_SPtrans(%eax),%ebx
131	xorl	%ebx,		%esi
132	movl	0x500+des_SPtrans(%edx),%ebx
133	xorl	%ebx,		%esi
134
135	# Round 2
136	movl	32(%esp),	%eax
137	movl	%esi,		%edx
138	shrl	$16,		%edx
139	movl	36(%esp),	%ecx
140	xorl	%esi,		%edx
141	andl	%edx,		%eax
142	andl	%ecx,		%edx
143	movl	%eax,		%ebx
144	sall	$16,		%ebx
145	movl	%edx,		%ecx
146	sall	$16,		%ecx
147	xorl	%ebx,		%eax
148	xorl	%ecx,		%edx
149	movl	16(%ebp),	%ebx
150	xorl	%ebx,		%eax
151	movl	20(%ebp),	%ecx
152	xorl	%esi,		%eax
153	xorl	%esi,		%edx
154	xorl	%ecx,		%edx
155	andl	$0xfcfcfcfc,	%eax
156	xorl	%ebx,		%ebx
157	andl	$0xcfcfcfcf,	%edx
158	xorl	%ecx,		%ecx
159	movb	%al,		%bl
160	movb	%ah,		%cl
161	rorl	$4,		%edx
162	movl	      des_SPtrans(%ebx),%ebp
163	movb	%dl,		%bl
164	xorl	%ebp,		%edi
165	movl	0x200+des_SPtrans(%ecx),%ebp
166	xorl	%ebp,		%edi
167	movb	%dh,		%cl
168	shrl	$16,		%eax
169	movl	0x100+des_SPtrans(%ebx),%ebp
170	xorl	%ebp,		%edi
171	movb	%ah,		%bl
172	shrl	$16,		%edx
173	movl	0x300+des_SPtrans(%ecx),%ebp
174	xorl	%ebp,		%edi
175	movl	28(%esp),	%ebp
176	movb	%dh,		%cl
177	andl	$0xff,		%eax
178	andl	$0xff,		%edx
179	movl	0x600+des_SPtrans(%ebx),%ebx
180	xorl	%ebx,		%edi
181	movl	0x700+des_SPtrans(%ecx),%ebx
182	xorl	%ebx,		%edi
183	movl	0x400+des_SPtrans(%eax),%ebx
184	xorl	%ebx,		%edi
185	movl	0x500+des_SPtrans(%edx),%ebx
186	xorl	%ebx,		%edi
187
188	# Round 3
189	movl	32(%esp),	%eax
190	movl	%edi,		%edx
191	shrl	$16,		%edx
192	movl	36(%esp),	%ecx
193	xorl	%edi,		%edx
194	andl	%edx,		%eax
195	andl	%ecx,		%edx
196	movl	%eax,		%ebx
197	sall	$16,		%ebx
198	movl	%edx,		%ecx
199	sall	$16,		%ecx
200	xorl	%ebx,		%eax
201	xorl	%ecx,		%edx
202	movl	24(%ebp),	%ebx
203	xorl	%ebx,		%eax
204	movl	28(%ebp),	%ecx
205	xorl	%edi,		%eax
206	xorl	%edi,		%edx
207	xorl	%ecx,		%edx
208	andl	$0xfcfcfcfc,	%eax
209	xorl	%ebx,		%ebx
210	andl	$0xcfcfcfcf,	%edx
211	xorl	%ecx,		%ecx
212	movb	%al,		%bl
213	movb	%ah,		%cl
214	rorl	$4,		%edx
215	movl	      des_SPtrans(%ebx),%ebp
216	movb	%dl,		%bl
217	xorl	%ebp,		%esi
218	movl	0x200+des_SPtrans(%ecx),%ebp
219	xorl	%ebp,		%esi
220	movb	%dh,		%cl
221	shrl	$16,		%eax
222	movl	0x100+des_SPtrans(%ebx),%ebp
223	xorl	%ebp,		%esi
224	movb	%ah,		%bl
225	shrl	$16,		%edx
226	movl	0x300+des_SPtrans(%ecx),%ebp
227	xorl	%ebp,		%esi
228	movl	28(%esp),	%ebp
229	movb	%dh,		%cl
230	andl	$0xff,		%eax
231	andl	$0xff,		%edx
232	movl	0x600+des_SPtrans(%ebx),%ebx
233	xorl	%ebx,		%esi
234	movl	0x700+des_SPtrans(%ecx),%ebx
235	xorl	%ebx,		%esi
236	movl	0x400+des_SPtrans(%eax),%ebx
237	xorl	%ebx,		%esi
238	movl	0x500+des_SPtrans(%edx),%ebx
239	xorl	%ebx,		%esi
240
241	# Round 4
242	movl	32(%esp),	%eax
243	movl	%esi,		%edx
244	shrl	$16,		%edx
245	movl	36(%esp),	%ecx
246	xorl	%esi,		%edx
247	andl	%edx,		%eax
248	andl	%ecx,		%edx
249	movl	%eax,		%ebx
250	sall	$16,		%ebx
251	movl	%edx,		%ecx
252	sall	$16,		%ecx
253	xorl	%ebx,		%eax
254	xorl	%ecx,		%edx
255	movl	32(%ebp),	%ebx
256	xorl	%ebx,		%eax
257	movl	36(%ebp),	%ecx
258	xorl	%esi,		%eax
259	xorl	%esi,		%edx
260	xorl	%ecx,		%edx
261	andl	$0xfcfcfcfc,	%eax
262	xorl	%ebx,		%ebx
263	andl	$0xcfcfcfcf,	%edx
264	xorl	%ecx,		%ecx
265	movb	%al,		%bl
266	movb	%ah,		%cl
267	rorl	$4,		%edx
268	movl	      des_SPtrans(%ebx),%ebp
269	movb	%dl,		%bl
270	xorl	%ebp,		%edi
271	movl	0x200+des_SPtrans(%ecx),%ebp
272	xorl	%ebp,		%edi
273	movb	%dh,		%cl
274	shrl	$16,		%eax
275	movl	0x100+des_SPtrans(%ebx),%ebp
276	xorl	%ebp,		%edi
277	movb	%ah,		%bl
278	shrl	$16,		%edx
279	movl	0x300+des_SPtrans(%ecx),%ebp
280	xorl	%ebp,		%edi
281	movl	28(%esp),	%ebp
282	movb	%dh,		%cl
283	andl	$0xff,		%eax
284	andl	$0xff,		%edx
285	movl	0x600+des_SPtrans(%ebx),%ebx
286	xorl	%ebx,		%edi
287	movl	0x700+des_SPtrans(%ecx),%ebx
288	xorl	%ebx,		%edi
289	movl	0x400+des_SPtrans(%eax),%ebx
290	xorl	%ebx,		%edi
291	movl	0x500+des_SPtrans(%edx),%ebx
292	xorl	%ebx,		%edi
293
294	# Round 5
295	movl	32(%esp),	%eax
296	movl	%edi,		%edx
297	shrl	$16,		%edx
298	movl	36(%esp),	%ecx
299	xorl	%edi,		%edx
300	andl	%edx,		%eax
301	andl	%ecx,		%edx
302	movl	%eax,		%ebx
303	sall	$16,		%ebx
304	movl	%edx,		%ecx
305	sall	$16,		%ecx
306	xorl	%ebx,		%eax
307	xorl	%ecx,		%edx
308	movl	40(%ebp),	%ebx
309	xorl	%ebx,		%eax
310	movl	44(%ebp),	%ecx
311	xorl	%edi,		%eax
312	xorl	%edi,		%edx
313	xorl	%ecx,		%edx
314	andl	$0xfcfcfcfc,	%eax
315	xorl	%ebx,		%ebx
316	andl	$0xcfcfcfcf,	%edx
317	xorl	%ecx,		%ecx
318	movb	%al,		%bl
319	movb	%ah,		%cl
320	rorl	$4,		%edx
321	movl	      des_SPtrans(%ebx),%ebp
322	movb	%dl,		%bl
323	xorl	%ebp,		%esi
324	movl	0x200+des_SPtrans(%ecx),%ebp
325	xorl	%ebp,		%esi
326	movb	%dh,		%cl
327	shrl	$16,		%eax
328	movl	0x100+des_SPtrans(%ebx),%ebp
329	xorl	%ebp,		%esi
330	movb	%ah,		%bl
331	shrl	$16,		%edx
332	movl	0x300+des_SPtrans(%ecx),%ebp
333	xorl	%ebp,		%esi
334	movl	28(%esp),	%ebp
335	movb	%dh,		%cl
336	andl	$0xff,		%eax
337	andl	$0xff,		%edx
338	movl	0x600+des_SPtrans(%ebx),%ebx
339	xorl	%ebx,		%esi
340	movl	0x700+des_SPtrans(%ecx),%ebx
341	xorl	%ebx,		%esi
342	movl	0x400+des_SPtrans(%eax),%ebx
343	xorl	%ebx,		%esi
344	movl	0x500+des_SPtrans(%edx),%ebx
345	xorl	%ebx,		%esi
346
347	# Round 6
348	movl	32(%esp),	%eax
349	movl	%esi,		%edx
350	shrl	$16,		%edx
351	movl	36(%esp),	%ecx
352	xorl	%esi,		%edx
353	andl	%edx,		%eax
354	andl	%ecx,		%edx
355	movl	%eax,		%ebx
356	sall	$16,		%ebx
357	movl	%edx,		%ecx
358	sall	$16,		%ecx
359	xorl	%ebx,		%eax
360	xorl	%ecx,		%edx
361	movl	48(%ebp),	%ebx
362	xorl	%ebx,		%eax
363	movl	52(%ebp),	%ecx
364	xorl	%esi,		%eax
365	xorl	%esi,		%edx
366	xorl	%ecx,		%edx
367	andl	$0xfcfcfcfc,	%eax
368	xorl	%ebx,		%ebx
369	andl	$0xcfcfcfcf,	%edx
370	xorl	%ecx,		%ecx
371	movb	%al,		%bl
372	movb	%ah,		%cl
373	rorl	$4,		%edx
374	movl	      des_SPtrans(%ebx),%ebp
375	movb	%dl,		%bl
376	xorl	%ebp,		%edi
377	movl	0x200+des_SPtrans(%ecx),%ebp
378	xorl	%ebp,		%edi
379	movb	%dh,		%cl
380	shrl	$16,		%eax
381	movl	0x100+des_SPtrans(%ebx),%ebp
382	xorl	%ebp,		%edi
383	movb	%ah,		%bl
384	shrl	$16,		%edx
385	movl	0x300+des_SPtrans(%ecx),%ebp
386	xorl	%ebp,		%edi
387	movl	28(%esp),	%ebp
388	movb	%dh,		%cl
389	andl	$0xff,		%eax
390	andl	$0xff,		%edx
391	movl	0x600+des_SPtrans(%ebx),%ebx
392	xorl	%ebx,		%edi
393	movl	0x700+des_SPtrans(%ecx),%ebx
394	xorl	%ebx,		%edi
395	movl	0x400+des_SPtrans(%eax),%ebx
396	xorl	%ebx,		%edi
397	movl	0x500+des_SPtrans(%edx),%ebx
398	xorl	%ebx,		%edi
399
400	# Round 7
401	movl	32(%esp),	%eax
402	movl	%edi,		%edx
403	shrl	$16,		%edx
404	movl	36(%esp),	%ecx
405	xorl	%edi,		%edx
406	andl	%edx,		%eax
407	andl	%ecx,		%edx
408	movl	%eax,		%ebx
409	sall	$16,		%ebx
410	movl	%edx,		%ecx
411	sall	$16,		%ecx
412	xorl	%ebx,		%eax
413	xorl	%ecx,		%edx
414	movl	56(%ebp),	%ebx
415	xorl	%ebx,		%eax
416	movl	60(%ebp),	%ecx
417	xorl	%edi,		%eax
418	xorl	%edi,		%edx
419	xorl	%ecx,		%edx
420	andl	$0xfcfcfcfc,	%eax
421	xorl	%ebx,		%ebx
422	andl	$0xcfcfcfcf,	%edx
423	xorl	%ecx,		%ecx
424	movb	%al,		%bl
425	movb	%ah,		%cl
426	rorl	$4,		%edx
427	movl	      des_SPtrans(%ebx),%ebp
428	movb	%dl,		%bl
429	xorl	%ebp,		%esi
430	movl	0x200+des_SPtrans(%ecx),%ebp
431	xorl	%ebp,		%esi
432	movb	%dh,		%cl
433	shrl	$16,		%eax
434	movl	0x100+des_SPtrans(%ebx),%ebp
435	xorl	%ebp,		%esi
436	movb	%ah,		%bl
437	shrl	$16,		%edx
438	movl	0x300+des_SPtrans(%ecx),%ebp
439	xorl	%ebp,		%esi
440	movl	28(%esp),	%ebp
441	movb	%dh,		%cl
442	andl	$0xff,		%eax
443	andl	$0xff,		%edx
444	movl	0x600+des_SPtrans(%ebx),%ebx
445	xorl	%ebx,		%esi
446	movl	0x700+des_SPtrans(%ecx),%ebx
447	xorl	%ebx,		%esi
448	movl	0x400+des_SPtrans(%eax),%ebx
449	xorl	%ebx,		%esi
450	movl	0x500+des_SPtrans(%edx),%ebx
451	xorl	%ebx,		%esi
452
453	# Round 8
454	movl	32(%esp),	%eax
455	movl	%esi,		%edx
456	shrl	$16,		%edx
457	movl	36(%esp),	%ecx
458	xorl	%esi,		%edx
459	andl	%edx,		%eax
460	andl	%ecx,		%edx
461	movl	%eax,		%ebx
462	sall	$16,		%ebx
463	movl	%edx,		%ecx
464	sall	$16,		%ecx
465	xorl	%ebx,		%eax
466	xorl	%ecx,		%edx
467	movl	64(%ebp),	%ebx
468	xorl	%ebx,		%eax
469	movl	68(%ebp),	%ecx
470	xorl	%esi,		%eax
471	xorl	%esi,		%edx
472	xorl	%ecx,		%edx
473	andl	$0xfcfcfcfc,	%eax
474	xorl	%ebx,		%ebx
475	andl	$0xcfcfcfcf,	%edx
476	xorl	%ecx,		%ecx
477	movb	%al,		%bl
478	movb	%ah,		%cl
479	rorl	$4,		%edx
480	movl	      des_SPtrans(%ebx),%ebp
481	movb	%dl,		%bl
482	xorl	%ebp,		%edi
483	movl	0x200+des_SPtrans(%ecx),%ebp
484	xorl	%ebp,		%edi
485	movb	%dh,		%cl
486	shrl	$16,		%eax
487	movl	0x100+des_SPtrans(%ebx),%ebp
488	xorl	%ebp,		%edi
489	movb	%ah,		%bl
490	shrl	$16,		%edx
491	movl	0x300+des_SPtrans(%ecx),%ebp
492	xorl	%ebp,		%edi
493	movl	28(%esp),	%ebp
494	movb	%dh,		%cl
495	andl	$0xff,		%eax
496	andl	$0xff,		%edx
497	movl	0x600+des_SPtrans(%ebx),%ebx
498	xorl	%ebx,		%edi
499	movl	0x700+des_SPtrans(%ecx),%ebx
500	xorl	%ebx,		%edi
501	movl	0x400+des_SPtrans(%eax),%ebx
502	xorl	%ebx,		%edi
503	movl	0x500+des_SPtrans(%edx),%ebx
504	xorl	%ebx,		%edi
505
506	# Round 9
507	movl	32(%esp),	%eax
508	movl	%edi,		%edx
509	shrl	$16,		%edx
510	movl	36(%esp),	%ecx
511	xorl	%edi,		%edx
512	andl	%edx,		%eax
513	andl	%ecx,		%edx
514	movl	%eax,		%ebx
515	sall	$16,		%ebx
516	movl	%edx,		%ecx
517	sall	$16,		%ecx
518	xorl	%ebx,		%eax
519	xorl	%ecx,		%edx
520	movl	72(%ebp),	%ebx
521	xorl	%ebx,		%eax
522	movl	76(%ebp),	%ecx
523	xorl	%edi,		%eax
524	xorl	%edi,		%edx
525	xorl	%ecx,		%edx
526	andl	$0xfcfcfcfc,	%eax
527	xorl	%ebx,		%ebx
528	andl	$0xcfcfcfcf,	%edx
529	xorl	%ecx,		%ecx
530	movb	%al,		%bl
531	movb	%ah,		%cl
532	rorl	$4,		%edx
533	movl	      des_SPtrans(%ebx),%ebp
534	movb	%dl,		%bl
535	xorl	%ebp,		%esi
536	movl	0x200+des_SPtrans(%ecx),%ebp
537	xorl	%ebp,		%esi
538	movb	%dh,		%cl
539	shrl	$16,		%eax
540	movl	0x100+des_SPtrans(%ebx),%ebp
541	xorl	%ebp,		%esi
542	movb	%ah,		%bl
543	shrl	$16,		%edx
544	movl	0x300+des_SPtrans(%ecx),%ebp
545	xorl	%ebp,		%esi
546	movl	28(%esp),	%ebp
547	movb	%dh,		%cl
548	andl	$0xff,		%eax
549	andl	$0xff,		%edx
550	movl	0x600+des_SPtrans(%ebx),%ebx
551	xorl	%ebx,		%esi
552	movl	0x700+des_SPtrans(%ecx),%ebx
553	xorl	%ebx,		%esi
554	movl	0x400+des_SPtrans(%eax),%ebx
555	xorl	%ebx,		%esi
556	movl	0x500+des_SPtrans(%edx),%ebx
557	xorl	%ebx,		%esi
558
559	# Round 10
560	movl	32(%esp),	%eax
561	movl	%esi,		%edx
562	shrl	$16,		%edx
563	movl	36(%esp),	%ecx
564	xorl	%esi,		%edx
565	andl	%edx,		%eax
566	andl	%ecx,		%edx
567	movl	%eax,		%ebx
568	sall	$16,		%ebx
569	movl	%edx,		%ecx
570	sall	$16,		%ecx
571	xorl	%ebx,		%eax
572	xorl	%ecx,		%edx
573	movl	80(%ebp),	%ebx
574	xorl	%ebx,		%eax
575	movl	84(%ebp),	%ecx
576	xorl	%esi,		%eax
577	xorl	%esi,		%edx
578	xorl	%ecx,		%edx
579	andl	$0xfcfcfcfc,	%eax
580	xorl	%ebx,		%ebx
581	andl	$0xcfcfcfcf,	%edx
582	xorl	%ecx,		%ecx
583	movb	%al,		%bl
584	movb	%ah,		%cl
585	rorl	$4,		%edx
586	movl	      des_SPtrans(%ebx),%ebp
587	movb	%dl,		%bl
588	xorl	%ebp,		%edi
589	movl	0x200+des_SPtrans(%ecx),%ebp
590	xorl	%ebp,		%edi
591	movb	%dh,		%cl
592	shrl	$16,		%eax
593	movl	0x100+des_SPtrans(%ebx),%ebp
594	xorl	%ebp,		%edi
595	movb	%ah,		%bl
596	shrl	$16,		%edx
597	movl	0x300+des_SPtrans(%ecx),%ebp
598	xorl	%ebp,		%edi
599	movl	28(%esp),	%ebp
600	movb	%dh,		%cl
601	andl	$0xff,		%eax
602	andl	$0xff,		%edx
603	movl	0x600+des_SPtrans(%ebx),%ebx
604	xorl	%ebx,		%edi
605	movl	0x700+des_SPtrans(%ecx),%ebx
606	xorl	%ebx,		%edi
607	movl	0x400+des_SPtrans(%eax),%ebx
608	xorl	%ebx,		%edi
609	movl	0x500+des_SPtrans(%edx),%ebx
610	xorl	%ebx,		%edi
611
612	# Round 11
613	movl	32(%esp),	%eax
614	movl	%edi,		%edx
615	shrl	$16,		%edx
616	movl	36(%esp),	%ecx
617	xorl	%edi,		%edx
618	andl	%edx,		%eax
619	andl	%ecx,		%edx
620	movl	%eax,		%ebx
621	sall	$16,		%ebx
622	movl	%edx,		%ecx
623	sall	$16,		%ecx
624	xorl	%ebx,		%eax
625	xorl	%ecx,		%edx
626	movl	88(%ebp),	%ebx
627	xorl	%ebx,		%eax
628	movl	92(%ebp),	%ecx
629	xorl	%edi,		%eax
630	xorl	%edi,		%edx
631	xorl	%ecx,		%edx
632	andl	$0xfcfcfcfc,	%eax
633	xorl	%ebx,		%ebx
634	andl	$0xcfcfcfcf,	%edx
635	xorl	%ecx,		%ecx
636	movb	%al,		%bl
637	movb	%ah,		%cl
638	rorl	$4,		%edx
639	movl	      des_SPtrans(%ebx),%ebp
640	movb	%dl,		%bl
641	xorl	%ebp,		%esi
642	movl	0x200+des_SPtrans(%ecx),%ebp
643	xorl	%ebp,		%esi
644	movb	%dh,		%cl
645	shrl	$16,		%eax
646	movl	0x100+des_SPtrans(%ebx),%ebp
647	xorl	%ebp,		%esi
648	movb	%ah,		%bl
649	shrl	$16,		%edx
650	movl	0x300+des_SPtrans(%ecx),%ebp
651	xorl	%ebp,		%esi
652	movl	28(%esp),	%ebp
653	movb	%dh,		%cl
654	andl	$0xff,		%eax
655	andl	$0xff,		%edx
656	movl	0x600+des_SPtrans(%ebx),%ebx
657	xorl	%ebx,		%esi
658	movl	0x700+des_SPtrans(%ecx),%ebx
659	xorl	%ebx,		%esi
660	movl	0x400+des_SPtrans(%eax),%ebx
661	xorl	%ebx,		%esi
662	movl	0x500+des_SPtrans(%edx),%ebx
663	xorl	%ebx,		%esi
664
665	# Round 12
666	movl	32(%esp),	%eax
667	movl	%esi,		%edx
668	shrl	$16,		%edx
669	movl	36(%esp),	%ecx
670	xorl	%esi,		%edx
671	andl	%edx,		%eax
672	andl	%ecx,		%edx
673	movl	%eax,		%ebx
674	sall	$16,		%ebx
675	movl	%edx,		%ecx
676	sall	$16,		%ecx
677	xorl	%ebx,		%eax
678	xorl	%ecx,		%edx
679	movl	96(%ebp),	%ebx
680	xorl	%ebx,		%eax
681	movl	100(%ebp),	%ecx
682	xorl	%esi,		%eax
683	xorl	%esi,		%edx
684	xorl	%ecx,		%edx
685	andl	$0xfcfcfcfc,	%eax
686	xorl	%ebx,		%ebx
687	andl	$0xcfcfcfcf,	%edx
688	xorl	%ecx,		%ecx
689	movb	%al,		%bl
690	movb	%ah,		%cl
691	rorl	$4,		%edx
692	movl	      des_SPtrans(%ebx),%ebp
693	movb	%dl,		%bl
694	xorl	%ebp,		%edi
695	movl	0x200+des_SPtrans(%ecx),%ebp
696	xorl	%ebp,		%edi
697	movb	%dh,		%cl
698	shrl	$16,		%eax
699	movl	0x100+des_SPtrans(%ebx),%ebp
700	xorl	%ebp,		%edi
701	movb	%ah,		%bl
702	shrl	$16,		%edx
703	movl	0x300+des_SPtrans(%ecx),%ebp
704	xorl	%ebp,		%edi
705	movl	28(%esp),	%ebp
706	movb	%dh,		%cl
707	andl	$0xff,		%eax
708	andl	$0xff,		%edx
709	movl	0x600+des_SPtrans(%ebx),%ebx
710	xorl	%ebx,		%edi
711	movl	0x700+des_SPtrans(%ecx),%ebx
712	xorl	%ebx,		%edi
713	movl	0x400+des_SPtrans(%eax),%ebx
714	xorl	%ebx,		%edi
715	movl	0x500+des_SPtrans(%edx),%ebx
716	xorl	%ebx,		%edi
717
718	# Round 13
719	movl	32(%esp),	%eax
720	movl	%edi,		%edx
721	shrl	$16,		%edx
722	movl	36(%esp),	%ecx
723	xorl	%edi,		%edx
724	andl	%edx,		%eax
725	andl	%ecx,		%edx
726	movl	%eax,		%ebx
727	sall	$16,		%ebx
728	movl	%edx,		%ecx
729	sall	$16,		%ecx
730	xorl	%ebx,		%eax
731	xorl	%ecx,		%edx
732	movl	104(%ebp),	%ebx
733	xorl	%ebx,		%eax
734	movl	108(%ebp),	%ecx
735	xorl	%edi,		%eax
736	xorl	%edi,		%edx
737	xorl	%ecx,		%edx
738	andl	$0xfcfcfcfc,	%eax
739	xorl	%ebx,		%ebx
740	andl	$0xcfcfcfcf,	%edx
741	xorl	%ecx,		%ecx
742	movb	%al,		%bl
743	movb	%ah,		%cl
744	rorl	$4,		%edx
745	movl	      des_SPtrans(%ebx),%ebp
746	movb	%dl,		%bl
747	xorl	%ebp,		%esi
748	movl	0x200+des_SPtrans(%ecx),%ebp
749	xorl	%ebp,		%esi
750	movb	%dh,		%cl
751	shrl	$16,		%eax
752	movl	0x100+des_SPtrans(%ebx),%ebp
753	xorl	%ebp,		%esi
754	movb	%ah,		%bl
755	shrl	$16,		%edx
756	movl	0x300+des_SPtrans(%ecx),%ebp
757	xorl	%ebp,		%esi
758	movl	28(%esp),	%ebp
759	movb	%dh,		%cl
760	andl	$0xff,		%eax
761	andl	$0xff,		%edx
762	movl	0x600+des_SPtrans(%ebx),%ebx
763	xorl	%ebx,		%esi
764	movl	0x700+des_SPtrans(%ecx),%ebx
765	xorl	%ebx,		%esi
766	movl	0x400+des_SPtrans(%eax),%ebx
767	xorl	%ebx,		%esi
768	movl	0x500+des_SPtrans(%edx),%ebx
769	xorl	%ebx,		%esi
770
771	# Round 14
772	movl	32(%esp),	%eax
773	movl	%esi,		%edx
774	shrl	$16,		%edx
775	movl	36(%esp),	%ecx
776	xorl	%esi,		%edx
777	andl	%edx,		%eax
778	andl	%ecx,		%edx
779	movl	%eax,		%ebx
780	sall	$16,		%ebx
781	movl	%edx,		%ecx
782	sall	$16,		%ecx
783	xorl	%ebx,		%eax
784	xorl	%ecx,		%edx
785	movl	112(%ebp),	%ebx
786	xorl	%ebx,		%eax
787	movl	116(%ebp),	%ecx
788	xorl	%esi,		%eax
789	xorl	%esi,		%edx
790	xorl	%ecx,		%edx
791	andl	$0xfcfcfcfc,	%eax
792	xorl	%ebx,		%ebx
793	andl	$0xcfcfcfcf,	%edx
794	xorl	%ecx,		%ecx
795	movb	%al,		%bl
796	movb	%ah,		%cl
797	rorl	$4,		%edx
798	movl	      des_SPtrans(%ebx),%ebp
799	movb	%dl,		%bl
800	xorl	%ebp,		%edi
801	movl	0x200+des_SPtrans(%ecx),%ebp
802	xorl	%ebp,		%edi
803	movb	%dh,		%cl
804	shrl	$16,		%eax
805	movl	0x100+des_SPtrans(%ebx),%ebp
806	xorl	%ebp,		%edi
807	movb	%ah,		%bl
808	shrl	$16,		%edx
809	movl	0x300+des_SPtrans(%ecx),%ebp
810	xorl	%ebp,		%edi
811	movl	28(%esp),	%ebp
812	movb	%dh,		%cl
813	andl	$0xff,		%eax
814	andl	$0xff,		%edx
815	movl	0x600+des_SPtrans(%ebx),%ebx
816	xorl	%ebx,		%edi
817	movl	0x700+des_SPtrans(%ecx),%ebx
818	xorl	%ebx,		%edi
819	movl	0x400+des_SPtrans(%eax),%ebx
820	xorl	%ebx,		%edi
821	movl	0x500+des_SPtrans(%edx),%ebx
822	xorl	%ebx,		%edi
823
824	# Round 15
825	movl	32(%esp),	%eax
826	movl	%edi,		%edx
827	shrl	$16,		%edx
828	movl	36(%esp),	%ecx
829	xorl	%edi,		%edx
830	andl	%edx,		%eax
831	andl	%ecx,		%edx
832	movl	%eax,		%ebx
833	sall	$16,		%ebx
834	movl	%edx,		%ecx
835	sall	$16,		%ecx
836	xorl	%ebx,		%eax
837	xorl	%ecx,		%edx
838	movl	120(%ebp),	%ebx
839	xorl	%ebx,		%eax
840	movl	124(%ebp),	%ecx
841	xorl	%edi,		%eax
842	xorl	%edi,		%edx
843	xorl	%ecx,		%edx
844	andl	$0xfcfcfcfc,	%eax
845	xorl	%ebx,		%ebx
846	andl	$0xcfcfcfcf,	%edx
847	xorl	%ecx,		%ecx
848	movb	%al,		%bl
849	movb	%ah,		%cl
850	rorl	$4,		%edx
851	movl	      des_SPtrans(%ebx),%ebp
852	movb	%dl,		%bl
853	xorl	%ebp,		%esi
854	movl	0x200+des_SPtrans(%ecx),%ebp
855	xorl	%ebp,		%esi
856	movb	%dh,		%cl
857	shrl	$16,		%eax
858	movl	0x100+des_SPtrans(%ebx),%ebp
859	xorl	%ebp,		%esi
860	movb	%ah,		%bl
861	shrl	$16,		%edx
862	movl	0x300+des_SPtrans(%ecx),%ebp
863	xorl	%ebp,		%esi
864	movl	28(%esp),	%ebp
865	movb	%dh,		%cl
866	andl	$0xff,		%eax
867	andl	$0xff,		%edx
868	movl	0x600+des_SPtrans(%ebx),%ebx
869	xorl	%ebx,		%esi
870	movl	0x700+des_SPtrans(%ecx),%ebx
871	xorl	%ebx,		%esi
872	movl	0x400+des_SPtrans(%eax),%ebx
873	xorl	%ebx,		%esi
874	movl	0x500+des_SPtrans(%edx),%ebx
875	xorl	%ebx,		%esi
876	movl	(%esp),		%ebx
877	movl	%edi,		%eax
878	decl	%ebx
879	movl	%esi,		%edi
880	movl	%eax,		%esi
881	movl	%ebx,		(%esp)
882	jnz	.L000start
883
884	# FP
885	movl	24(%esp),	%edx
886.byte 209
887.byte 207		# rorl $1 %edi
888	movl	%esi,		%eax
889	xorl	%edi,		%esi
890	andl	$0xaaaaaaaa,	%esi
891	xorl	%esi,		%eax
892	xorl	%esi,		%edi
893
894	roll	$23,		%eax
895	movl	%eax,		%esi
896	xorl	%edi,		%eax
897	andl	$0x03fc03fc,	%eax
898	xorl	%eax,		%esi
899	xorl	%eax,		%edi
900
901	roll	$10,		%esi
902	movl	%esi,		%eax
903	xorl	%edi,		%esi
904	andl	$0x33333333,	%esi
905	xorl	%esi,		%eax
906	xorl	%esi,		%edi
907
908	roll	$18,		%edi
909	movl	%edi,		%esi
910	xorl	%eax,		%edi
911	andl	$0xfff0000f,	%edi
912	xorl	%edi,		%esi
913	xorl	%edi,		%eax
914
915	roll	$12,		%esi
916	movl	%esi,		%edi
917	xorl	%eax,		%esi
918	andl	$0xf0f0f0f0,	%esi
919	xorl	%esi,		%edi
920	xorl	%esi,		%eax
921
922	rorl	$4,		%eax
923	movl	%eax,		(%edx)
924	movl	%edi,		4(%edx)
925	popl	%ecx
926	popl	%edi
927	popl	%esi
928	popl	%ebx
929	popl	%ebp
930	ret
931.fcrypt_body_end:
932	.size	fcrypt_body,.fcrypt_body_end-fcrypt_body
933.ident	"fcrypt_body"
934