xref: /freebsd/sys/crypto/openssl/i386/cmll-x86.S (revision 315ee00f)
1/* Do not modify. This file is auto-generated from cmll-x86.pl. */
2#ifdef PIC
3.text
4.globl	Camellia_EncryptBlock_Rounds
5.type	Camellia_EncryptBlock_Rounds,@function
6.align	16
7Camellia_EncryptBlock_Rounds:
8.L_Camellia_EncryptBlock_Rounds_begin:
9	pushl	%ebp
10	pushl	%ebx
11	pushl	%esi
12	pushl	%edi
13	movl	20(%esp),%eax
14	movl	24(%esp),%esi
15	movl	28(%esp),%edi
16	movl	%esp,%ebx
17	subl	$28,%esp
18	andl	$-64,%esp
19	leal	-127(%edi),%ecx
20	subl	%esp,%ecx
21	negl	%ecx
22	andl	$960,%ecx
23	subl	%ecx,%esp
24	addl	$4,%esp
25	shll	$6,%eax
26	leal	(%edi,%eax,1),%eax
27	movl	%ebx,20(%esp)
28	movl	%eax,16(%esp)
29	call	.L000pic_point
30.L000pic_point:
31	popl	%ebp
32	leal	.LCamellia_SBOX-.L000pic_point(%ebp),%ebp
33	movl	(%esi),%eax
34	movl	4(%esi),%ebx
35	movl	8(%esi),%ecx
36	bswap	%eax
37	movl	12(%esi),%edx
38	bswap	%ebx
39	bswap	%ecx
40	bswap	%edx
41	call	_x86_Camellia_encrypt
42	movl	20(%esp),%esp
43	bswap	%eax
44	movl	32(%esp),%esi
45	bswap	%ebx
46	bswap	%ecx
47	bswap	%edx
48	movl	%eax,(%esi)
49	movl	%ebx,4(%esi)
50	movl	%ecx,8(%esi)
51	movl	%edx,12(%esi)
52	popl	%edi
53	popl	%esi
54	popl	%ebx
55	popl	%ebp
56	ret
57.size	Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
58.globl	Camellia_EncryptBlock
59.type	Camellia_EncryptBlock,@function
60.align	16
61Camellia_EncryptBlock:
62.L_Camellia_EncryptBlock_begin:
63	movl	$128,%eax
64	subl	4(%esp),%eax
65	movl	$3,%eax
66	adcl	$0,%eax
67	movl	%eax,4(%esp)
68	jmp	.L_Camellia_EncryptBlock_Rounds_begin
69.size	Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
70.globl	Camellia_encrypt
71.type	Camellia_encrypt,@function
72.align	16
73Camellia_encrypt:
74.L_Camellia_encrypt_begin:
75	pushl	%ebp
76	pushl	%ebx
77	pushl	%esi
78	pushl	%edi
79	movl	20(%esp),%esi
80	movl	28(%esp),%edi
81	movl	%esp,%ebx
82	subl	$28,%esp
83	andl	$-64,%esp
84	movl	272(%edi),%eax
85	leal	-127(%edi),%ecx
86	subl	%esp,%ecx
87	negl	%ecx
88	andl	$960,%ecx
89	subl	%ecx,%esp
90	addl	$4,%esp
91	shll	$6,%eax
92	leal	(%edi,%eax,1),%eax
93	movl	%ebx,20(%esp)
94	movl	%eax,16(%esp)
95	call	.L001pic_point
96.L001pic_point:
97	popl	%ebp
98	leal	.LCamellia_SBOX-.L001pic_point(%ebp),%ebp
99	movl	(%esi),%eax
100	movl	4(%esi),%ebx
101	movl	8(%esi),%ecx
102	bswap	%eax
103	movl	12(%esi),%edx
104	bswap	%ebx
105	bswap	%ecx
106	bswap	%edx
107	call	_x86_Camellia_encrypt
108	movl	20(%esp),%esp
109	bswap	%eax
110	movl	24(%esp),%esi
111	bswap	%ebx
112	bswap	%ecx
113	bswap	%edx
114	movl	%eax,(%esi)
115	movl	%ebx,4(%esi)
116	movl	%ecx,8(%esi)
117	movl	%edx,12(%esi)
118	popl	%edi
119	popl	%esi
120	popl	%ebx
121	popl	%ebp
122	ret
123.size	Camellia_encrypt,.-.L_Camellia_encrypt_begin
124.type	_x86_Camellia_encrypt,@function
125.align	16
126_x86_Camellia_encrypt:
127	xorl	(%edi),%eax
128	xorl	4(%edi),%ebx
129	xorl	8(%edi),%ecx
130	xorl	12(%edi),%edx
131	movl	16(%edi),%esi
132	movl	%eax,4(%esp)
133	movl	%ebx,8(%esp)
134	movl	%ecx,12(%esp)
135	movl	%edx,16(%esp)
136.align	16
137.L002loop:
138	xorl	%esi,%eax
139	xorl	20(%edi),%ebx
140	movzbl	%ah,%esi
141	movl	2052(%ebp,%esi,8),%edx
142	movzbl	%al,%esi
143	xorl	4(%ebp,%esi,8),%edx
144	shrl	$16,%eax
145	movzbl	%bl,%esi
146	movl	(%ebp,%esi,8),%ecx
147	movzbl	%ah,%esi
148	xorl	(%ebp,%esi,8),%edx
149	movzbl	%bh,%esi
150	xorl	4(%ebp,%esi,8),%ecx
151	shrl	$16,%ebx
152	movzbl	%al,%eax
153	xorl	2048(%ebp,%eax,8),%edx
154	movzbl	%bh,%esi
155	movl	16(%esp),%eax
156	xorl	%edx,%ecx
157	rorl	$8,%edx
158	xorl	2048(%ebp,%esi,8),%ecx
159	movzbl	%bl,%esi
160	movl	12(%esp),%ebx
161	xorl	%eax,%edx
162	xorl	2052(%ebp,%esi,8),%ecx
163	movl	24(%edi),%esi
164	xorl	%ecx,%edx
165	movl	%edx,16(%esp)
166	xorl	%ebx,%ecx
167	movl	%ecx,12(%esp)
168	xorl	%esi,%ecx
169	xorl	28(%edi),%edx
170	movzbl	%ch,%esi
171	movl	2052(%ebp,%esi,8),%ebx
172	movzbl	%cl,%esi
173	xorl	4(%ebp,%esi,8),%ebx
174	shrl	$16,%ecx
175	movzbl	%dl,%esi
176	movl	(%ebp,%esi,8),%eax
177	movzbl	%ch,%esi
178	xorl	(%ebp,%esi,8),%ebx
179	movzbl	%dh,%esi
180	xorl	4(%ebp,%esi,8),%eax
181	shrl	$16,%edx
182	movzbl	%cl,%ecx
183	xorl	2048(%ebp,%ecx,8),%ebx
184	movzbl	%dh,%esi
185	movl	8(%esp),%ecx
186	xorl	%ebx,%eax
187	rorl	$8,%ebx
188	xorl	2048(%ebp,%esi,8),%eax
189	movzbl	%dl,%esi
190	movl	4(%esp),%edx
191	xorl	%ecx,%ebx
192	xorl	2052(%ebp,%esi,8),%eax
193	movl	32(%edi),%esi
194	xorl	%eax,%ebx
195	movl	%ebx,8(%esp)
196	xorl	%edx,%eax
197	movl	%eax,4(%esp)
198	xorl	%esi,%eax
199	xorl	36(%edi),%ebx
200	movzbl	%ah,%esi
201	movl	2052(%ebp,%esi,8),%edx
202	movzbl	%al,%esi
203	xorl	4(%ebp,%esi,8),%edx
204	shrl	$16,%eax
205	movzbl	%bl,%esi
206	movl	(%ebp,%esi,8),%ecx
207	movzbl	%ah,%esi
208	xorl	(%ebp,%esi,8),%edx
209	movzbl	%bh,%esi
210	xorl	4(%ebp,%esi,8),%ecx
211	shrl	$16,%ebx
212	movzbl	%al,%eax
213	xorl	2048(%ebp,%eax,8),%edx
214	movzbl	%bh,%esi
215	movl	16(%esp),%eax
216	xorl	%edx,%ecx
217	rorl	$8,%edx
218	xorl	2048(%ebp,%esi,8),%ecx
219	movzbl	%bl,%esi
220	movl	12(%esp),%ebx
221	xorl	%eax,%edx
222	xorl	2052(%ebp,%esi,8),%ecx
223	movl	40(%edi),%esi
224	xorl	%ecx,%edx
225	movl	%edx,16(%esp)
226	xorl	%ebx,%ecx
227	movl	%ecx,12(%esp)
228	xorl	%esi,%ecx
229	xorl	44(%edi),%edx
230	movzbl	%ch,%esi
231	movl	2052(%ebp,%esi,8),%ebx
232	movzbl	%cl,%esi
233	xorl	4(%ebp,%esi,8),%ebx
234	shrl	$16,%ecx
235	movzbl	%dl,%esi
236	movl	(%ebp,%esi,8),%eax
237	movzbl	%ch,%esi
238	xorl	(%ebp,%esi,8),%ebx
239	movzbl	%dh,%esi
240	xorl	4(%ebp,%esi,8),%eax
241	shrl	$16,%edx
242	movzbl	%cl,%ecx
243	xorl	2048(%ebp,%ecx,8),%ebx
244	movzbl	%dh,%esi
245	movl	8(%esp),%ecx
246	xorl	%ebx,%eax
247	rorl	$8,%ebx
248	xorl	2048(%ebp,%esi,8),%eax
249	movzbl	%dl,%esi
250	movl	4(%esp),%edx
251	xorl	%ecx,%ebx
252	xorl	2052(%ebp,%esi,8),%eax
253	movl	48(%edi),%esi
254	xorl	%eax,%ebx
255	movl	%ebx,8(%esp)
256	xorl	%edx,%eax
257	movl	%eax,4(%esp)
258	xorl	%esi,%eax
259	xorl	52(%edi),%ebx
260	movzbl	%ah,%esi
261	movl	2052(%ebp,%esi,8),%edx
262	movzbl	%al,%esi
263	xorl	4(%ebp,%esi,8),%edx
264	shrl	$16,%eax
265	movzbl	%bl,%esi
266	movl	(%ebp,%esi,8),%ecx
267	movzbl	%ah,%esi
268	xorl	(%ebp,%esi,8),%edx
269	movzbl	%bh,%esi
270	xorl	4(%ebp,%esi,8),%ecx
271	shrl	$16,%ebx
272	movzbl	%al,%eax
273	xorl	2048(%ebp,%eax,8),%edx
274	movzbl	%bh,%esi
275	movl	16(%esp),%eax
276	xorl	%edx,%ecx
277	rorl	$8,%edx
278	xorl	2048(%ebp,%esi,8),%ecx
279	movzbl	%bl,%esi
280	movl	12(%esp),%ebx
281	xorl	%eax,%edx
282	xorl	2052(%ebp,%esi,8),%ecx
283	movl	56(%edi),%esi
284	xorl	%ecx,%edx
285	movl	%edx,16(%esp)
286	xorl	%ebx,%ecx
287	movl	%ecx,12(%esp)
288	xorl	%esi,%ecx
289	xorl	60(%edi),%edx
290	movzbl	%ch,%esi
291	movl	2052(%ebp,%esi,8),%ebx
292	movzbl	%cl,%esi
293	xorl	4(%ebp,%esi,8),%ebx
294	shrl	$16,%ecx
295	movzbl	%dl,%esi
296	movl	(%ebp,%esi,8),%eax
297	movzbl	%ch,%esi
298	xorl	(%ebp,%esi,8),%ebx
299	movzbl	%dh,%esi
300	xorl	4(%ebp,%esi,8),%eax
301	shrl	$16,%edx
302	movzbl	%cl,%ecx
303	xorl	2048(%ebp,%ecx,8),%ebx
304	movzbl	%dh,%esi
305	movl	8(%esp),%ecx
306	xorl	%ebx,%eax
307	rorl	$8,%ebx
308	xorl	2048(%ebp,%esi,8),%eax
309	movzbl	%dl,%esi
310	movl	4(%esp),%edx
311	xorl	%ecx,%ebx
312	xorl	2052(%ebp,%esi,8),%eax
313	movl	64(%edi),%esi
314	xorl	%eax,%ebx
315	movl	%ebx,8(%esp)
316	xorl	%edx,%eax
317	movl	%eax,4(%esp)
318	addl	$64,%edi
319	cmpl	20(%esp),%edi
320	je	.L003done
321	andl	%eax,%esi
322	movl	16(%esp),%edx
323	roll	$1,%esi
324	movl	%edx,%ecx
325	xorl	%esi,%ebx
326	orl	12(%edi),%ecx
327	movl	%ebx,8(%esp)
328	xorl	12(%esp),%ecx
329	movl	4(%edi),%esi
330	movl	%ecx,12(%esp)
331	orl	%ebx,%esi
332	andl	8(%edi),%ecx
333	xorl	%esi,%eax
334	roll	$1,%ecx
335	movl	%eax,4(%esp)
336	xorl	%ecx,%edx
337	movl	16(%edi),%esi
338	movl	%edx,16(%esp)
339	jmp	.L002loop
340.align	8
341.L003done:
342	movl	%eax,%ecx
343	movl	%ebx,%edx
344	movl	12(%esp),%eax
345	movl	16(%esp),%ebx
346	xorl	%esi,%eax
347	xorl	4(%edi),%ebx
348	xorl	8(%edi),%ecx
349	xorl	12(%edi),%edx
350	ret
351.size	_x86_Camellia_encrypt,.-_x86_Camellia_encrypt
352.globl	Camellia_DecryptBlock_Rounds
353.type	Camellia_DecryptBlock_Rounds,@function
354.align	16
355Camellia_DecryptBlock_Rounds:
356.L_Camellia_DecryptBlock_Rounds_begin:
357	pushl	%ebp
358	pushl	%ebx
359	pushl	%esi
360	pushl	%edi
361	movl	20(%esp),%eax
362	movl	24(%esp),%esi
363	movl	28(%esp),%edi
364	movl	%esp,%ebx
365	subl	$28,%esp
366	andl	$-64,%esp
367	leal	-127(%edi),%ecx
368	subl	%esp,%ecx
369	negl	%ecx
370	andl	$960,%ecx
371	subl	%ecx,%esp
372	addl	$4,%esp
373	shll	$6,%eax
374	movl	%edi,16(%esp)
375	leal	(%edi,%eax,1),%edi
376	movl	%ebx,20(%esp)
377	call	.L004pic_point
378.L004pic_point:
379	popl	%ebp
380	leal	.LCamellia_SBOX-.L004pic_point(%ebp),%ebp
381	movl	(%esi),%eax
382	movl	4(%esi),%ebx
383	movl	8(%esi),%ecx
384	bswap	%eax
385	movl	12(%esi),%edx
386	bswap	%ebx
387	bswap	%ecx
388	bswap	%edx
389	call	_x86_Camellia_decrypt
390	movl	20(%esp),%esp
391	bswap	%eax
392	movl	32(%esp),%esi
393	bswap	%ebx
394	bswap	%ecx
395	bswap	%edx
396	movl	%eax,(%esi)
397	movl	%ebx,4(%esi)
398	movl	%ecx,8(%esi)
399	movl	%edx,12(%esi)
400	popl	%edi
401	popl	%esi
402	popl	%ebx
403	popl	%ebp
404	ret
405.size	Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
406.globl	Camellia_DecryptBlock
407.type	Camellia_DecryptBlock,@function
408.align	16
409Camellia_DecryptBlock:
410.L_Camellia_DecryptBlock_begin:
411	movl	$128,%eax
412	subl	4(%esp),%eax
413	movl	$3,%eax
414	adcl	$0,%eax
415	movl	%eax,4(%esp)
416	jmp	.L_Camellia_DecryptBlock_Rounds_begin
417.size	Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
418.globl	Camellia_decrypt
419.type	Camellia_decrypt,@function
420.align	16
421Camellia_decrypt:
422.L_Camellia_decrypt_begin:
423	pushl	%ebp
424	pushl	%ebx
425	pushl	%esi
426	pushl	%edi
427	movl	20(%esp),%esi
428	movl	28(%esp),%edi
429	movl	%esp,%ebx
430	subl	$28,%esp
431	andl	$-64,%esp
432	movl	272(%edi),%eax
433	leal	-127(%edi),%ecx
434	subl	%esp,%ecx
435	negl	%ecx
436	andl	$960,%ecx
437	subl	%ecx,%esp
438	addl	$4,%esp
439	shll	$6,%eax
440	movl	%edi,16(%esp)
441	leal	(%edi,%eax,1),%edi
442	movl	%ebx,20(%esp)
443	call	.L005pic_point
444.L005pic_point:
445	popl	%ebp
446	leal	.LCamellia_SBOX-.L005pic_point(%ebp),%ebp
447	movl	(%esi),%eax
448	movl	4(%esi),%ebx
449	movl	8(%esi),%ecx
450	bswap	%eax
451	movl	12(%esi),%edx
452	bswap	%ebx
453	bswap	%ecx
454	bswap	%edx
455	call	_x86_Camellia_decrypt
456	movl	20(%esp),%esp
457	bswap	%eax
458	movl	24(%esp),%esi
459	bswap	%ebx
460	bswap	%ecx
461	bswap	%edx
462	movl	%eax,(%esi)
463	movl	%ebx,4(%esi)
464	movl	%ecx,8(%esi)
465	movl	%edx,12(%esi)
466	popl	%edi
467	popl	%esi
468	popl	%ebx
469	popl	%ebp
470	ret
471.size	Camellia_decrypt,.-.L_Camellia_decrypt_begin
472.type	_x86_Camellia_decrypt,@function
473.align	16
474_x86_Camellia_decrypt:
475	xorl	(%edi),%eax
476	xorl	4(%edi),%ebx
477	xorl	8(%edi),%ecx
478	xorl	12(%edi),%edx
479	movl	-8(%edi),%esi
480	movl	%eax,4(%esp)
481	movl	%ebx,8(%esp)
482	movl	%ecx,12(%esp)
483	movl	%edx,16(%esp)
484.align	16
485.L006loop:
486	xorl	%esi,%eax
487	xorl	-4(%edi),%ebx
488	movzbl	%ah,%esi
489	movl	2052(%ebp,%esi,8),%edx
490	movzbl	%al,%esi
491	xorl	4(%ebp,%esi,8),%edx
492	shrl	$16,%eax
493	movzbl	%bl,%esi
494	movl	(%ebp,%esi,8),%ecx
495	movzbl	%ah,%esi
496	xorl	(%ebp,%esi,8),%edx
497	movzbl	%bh,%esi
498	xorl	4(%ebp,%esi,8),%ecx
499	shrl	$16,%ebx
500	movzbl	%al,%eax
501	xorl	2048(%ebp,%eax,8),%edx
502	movzbl	%bh,%esi
503	movl	16(%esp),%eax
504	xorl	%edx,%ecx
505	rorl	$8,%edx
506	xorl	2048(%ebp,%esi,8),%ecx
507	movzbl	%bl,%esi
508	movl	12(%esp),%ebx
509	xorl	%eax,%edx
510	xorl	2052(%ebp,%esi,8),%ecx
511	movl	-16(%edi),%esi
512	xorl	%ecx,%edx
513	movl	%edx,16(%esp)
514	xorl	%ebx,%ecx
515	movl	%ecx,12(%esp)
516	xorl	%esi,%ecx
517	xorl	-12(%edi),%edx
518	movzbl	%ch,%esi
519	movl	2052(%ebp,%esi,8),%ebx
520	movzbl	%cl,%esi
521	xorl	4(%ebp,%esi,8),%ebx
522	shrl	$16,%ecx
523	movzbl	%dl,%esi
524	movl	(%ebp,%esi,8),%eax
525	movzbl	%ch,%esi
526	xorl	(%ebp,%esi,8),%ebx
527	movzbl	%dh,%esi
528	xorl	4(%ebp,%esi,8),%eax
529	shrl	$16,%edx
530	movzbl	%cl,%ecx
531	xorl	2048(%ebp,%ecx,8),%ebx
532	movzbl	%dh,%esi
533	movl	8(%esp),%ecx
534	xorl	%ebx,%eax
535	rorl	$8,%ebx
536	xorl	2048(%ebp,%esi,8),%eax
537	movzbl	%dl,%esi
538	movl	4(%esp),%edx
539	xorl	%ecx,%ebx
540	xorl	2052(%ebp,%esi,8),%eax
541	movl	-24(%edi),%esi
542	xorl	%eax,%ebx
543	movl	%ebx,8(%esp)
544	xorl	%edx,%eax
545	movl	%eax,4(%esp)
546	xorl	%esi,%eax
547	xorl	-20(%edi),%ebx
548	movzbl	%ah,%esi
549	movl	2052(%ebp,%esi,8),%edx
550	movzbl	%al,%esi
551	xorl	4(%ebp,%esi,8),%edx
552	shrl	$16,%eax
553	movzbl	%bl,%esi
554	movl	(%ebp,%esi,8),%ecx
555	movzbl	%ah,%esi
556	xorl	(%ebp,%esi,8),%edx
557	movzbl	%bh,%esi
558	xorl	4(%ebp,%esi,8),%ecx
559	shrl	$16,%ebx
560	movzbl	%al,%eax
561	xorl	2048(%ebp,%eax,8),%edx
562	movzbl	%bh,%esi
563	movl	16(%esp),%eax
564	xorl	%edx,%ecx
565	rorl	$8,%edx
566	xorl	2048(%ebp,%esi,8),%ecx
567	movzbl	%bl,%esi
568	movl	12(%esp),%ebx
569	xorl	%eax,%edx
570	xorl	2052(%ebp,%esi,8),%ecx
571	movl	-32(%edi),%esi
572	xorl	%ecx,%edx
573	movl	%edx,16(%esp)
574	xorl	%ebx,%ecx
575	movl	%ecx,12(%esp)
576	xorl	%esi,%ecx
577	xorl	-28(%edi),%edx
578	movzbl	%ch,%esi
579	movl	2052(%ebp,%esi,8),%ebx
580	movzbl	%cl,%esi
581	xorl	4(%ebp,%esi,8),%ebx
582	shrl	$16,%ecx
583	movzbl	%dl,%esi
584	movl	(%ebp,%esi,8),%eax
585	movzbl	%ch,%esi
586	xorl	(%ebp,%esi,8),%ebx
587	movzbl	%dh,%esi
588	xorl	4(%ebp,%esi,8),%eax
589	shrl	$16,%edx
590	movzbl	%cl,%ecx
591	xorl	2048(%ebp,%ecx,8),%ebx
592	movzbl	%dh,%esi
593	movl	8(%esp),%ecx
594	xorl	%ebx,%eax
595	rorl	$8,%ebx
596	xorl	2048(%ebp,%esi,8),%eax
597	movzbl	%dl,%esi
598	movl	4(%esp),%edx
599	xorl	%ecx,%ebx
600	xorl	2052(%ebp,%esi,8),%eax
601	movl	-40(%edi),%esi
602	xorl	%eax,%ebx
603	movl	%ebx,8(%esp)
604	xorl	%edx,%eax
605	movl	%eax,4(%esp)
606	xorl	%esi,%eax
607	xorl	-36(%edi),%ebx
608	movzbl	%ah,%esi
609	movl	2052(%ebp,%esi,8),%edx
610	movzbl	%al,%esi
611	xorl	4(%ebp,%esi,8),%edx
612	shrl	$16,%eax
613	movzbl	%bl,%esi
614	movl	(%ebp,%esi,8),%ecx
615	movzbl	%ah,%esi
616	xorl	(%ebp,%esi,8),%edx
617	movzbl	%bh,%esi
618	xorl	4(%ebp,%esi,8),%ecx
619	shrl	$16,%ebx
620	movzbl	%al,%eax
621	xorl	2048(%ebp,%eax,8),%edx
622	movzbl	%bh,%esi
623	movl	16(%esp),%eax
624	xorl	%edx,%ecx
625	rorl	$8,%edx
626	xorl	2048(%ebp,%esi,8),%ecx
627	movzbl	%bl,%esi
628	movl	12(%esp),%ebx
629	xorl	%eax,%edx
630	xorl	2052(%ebp,%esi,8),%ecx
631	movl	-48(%edi),%esi
632	xorl	%ecx,%edx
633	movl	%edx,16(%esp)
634	xorl	%ebx,%ecx
635	movl	%ecx,12(%esp)
636	xorl	%esi,%ecx
637	xorl	-44(%edi),%edx
638	movzbl	%ch,%esi
639	movl	2052(%ebp,%esi,8),%ebx
640	movzbl	%cl,%esi
641	xorl	4(%ebp,%esi,8),%ebx
642	shrl	$16,%ecx
643	movzbl	%dl,%esi
644	movl	(%ebp,%esi,8),%eax
645	movzbl	%ch,%esi
646	xorl	(%ebp,%esi,8),%ebx
647	movzbl	%dh,%esi
648	xorl	4(%ebp,%esi,8),%eax
649	shrl	$16,%edx
650	movzbl	%cl,%ecx
651	xorl	2048(%ebp,%ecx,8),%ebx
652	movzbl	%dh,%esi
653	movl	8(%esp),%ecx
654	xorl	%ebx,%eax
655	rorl	$8,%ebx
656	xorl	2048(%ebp,%esi,8),%eax
657	movzbl	%dl,%esi
658	movl	4(%esp),%edx
659	xorl	%ecx,%ebx
660	xorl	2052(%ebp,%esi,8),%eax
661	movl	-56(%edi),%esi
662	xorl	%eax,%ebx
663	movl	%ebx,8(%esp)
664	xorl	%edx,%eax
665	movl	%eax,4(%esp)
666	subl	$64,%edi
667	cmpl	20(%esp),%edi
668	je	.L007done
669	andl	%eax,%esi
670	movl	16(%esp),%edx
671	roll	$1,%esi
672	movl	%edx,%ecx
673	xorl	%esi,%ebx
674	orl	4(%edi),%ecx
675	movl	%ebx,8(%esp)
676	xorl	12(%esp),%ecx
677	movl	12(%edi),%esi
678	movl	%ecx,12(%esp)
679	orl	%ebx,%esi
680	andl	(%edi),%ecx
681	xorl	%esi,%eax
682	roll	$1,%ecx
683	movl	%eax,4(%esp)
684	xorl	%ecx,%edx
685	movl	-8(%edi),%esi
686	movl	%edx,16(%esp)
687	jmp	.L006loop
688.align	8
689.L007done:
690	movl	%eax,%ecx
691	movl	%ebx,%edx
692	movl	12(%esp),%eax
693	movl	16(%esp),%ebx
694	xorl	%esi,%ecx
695	xorl	12(%edi),%edx
696	xorl	(%edi),%eax
697	xorl	4(%edi),%ebx
698	ret
699.size	_x86_Camellia_decrypt,.-_x86_Camellia_decrypt
700.globl	Camellia_Ekeygen
701.type	Camellia_Ekeygen,@function
702.align	16
703Camellia_Ekeygen:
704.L_Camellia_Ekeygen_begin:
705	pushl	%ebp
706	pushl	%ebx
707	pushl	%esi
708	pushl	%edi
709	subl	$16,%esp
710	movl	36(%esp),%ebp
711	movl	40(%esp),%esi
712	movl	44(%esp),%edi
713	movl	(%esi),%eax
714	movl	4(%esi),%ebx
715	movl	8(%esi),%ecx
716	movl	12(%esi),%edx
717	bswap	%eax
718	bswap	%ebx
719	bswap	%ecx
720	bswap	%edx
721	movl	%eax,(%edi)
722	movl	%ebx,4(%edi)
723	movl	%ecx,8(%edi)
724	movl	%edx,12(%edi)
725	cmpl	$128,%ebp
726	je	.L0081st128
727	movl	16(%esi),%eax
728	movl	20(%esi),%ebx
729	cmpl	$192,%ebp
730	je	.L0091st192
731	movl	24(%esi),%ecx
732	movl	28(%esi),%edx
733	jmp	.L0101st256
734.align	4
735.L0091st192:
736	movl	%eax,%ecx
737	movl	%ebx,%edx
738	notl	%ecx
739	notl	%edx
740.align	4
741.L0101st256:
742	bswap	%eax
743	bswap	%ebx
744	bswap	%ecx
745	bswap	%edx
746	movl	%eax,32(%edi)
747	movl	%ebx,36(%edi)
748	movl	%ecx,40(%edi)
749	movl	%edx,44(%edi)
750	xorl	(%edi),%eax
751	xorl	4(%edi),%ebx
752	xorl	8(%edi),%ecx
753	xorl	12(%edi),%edx
754.align	4
755.L0081st128:
756	call	.L011pic_point
757.L011pic_point:
758	popl	%ebp
759	leal	.LCamellia_SBOX-.L011pic_point(%ebp),%ebp
760	leal	.LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
761	movl	(%edi),%esi
762	movl	%eax,(%esp)
763	movl	%ebx,4(%esp)
764	movl	%ecx,8(%esp)
765	movl	%edx,12(%esp)
766	xorl	%esi,%eax
767	xorl	4(%edi),%ebx
768	movzbl	%ah,%esi
769	movl	2052(%ebp,%esi,8),%edx
770	movzbl	%al,%esi
771	xorl	4(%ebp,%esi,8),%edx
772	shrl	$16,%eax
773	movzbl	%bl,%esi
774	movl	(%ebp,%esi,8),%ecx
775	movzbl	%ah,%esi
776	xorl	(%ebp,%esi,8),%edx
777	movzbl	%bh,%esi
778	xorl	4(%ebp,%esi,8),%ecx
779	shrl	$16,%ebx
780	movzbl	%al,%eax
781	xorl	2048(%ebp,%eax,8),%edx
782	movzbl	%bh,%esi
783	movl	12(%esp),%eax
784	xorl	%edx,%ecx
785	rorl	$8,%edx
786	xorl	2048(%ebp,%esi,8),%ecx
787	movzbl	%bl,%esi
788	movl	8(%esp),%ebx
789	xorl	%eax,%edx
790	xorl	2052(%ebp,%esi,8),%ecx
791	movl	8(%edi),%esi
792	xorl	%ecx,%edx
793	movl	%edx,12(%esp)
794	xorl	%ebx,%ecx
795	movl	%ecx,8(%esp)
796	xorl	%esi,%ecx
797	xorl	12(%edi),%edx
798	movzbl	%ch,%esi
799	movl	2052(%ebp,%esi,8),%ebx
800	movzbl	%cl,%esi
801	xorl	4(%ebp,%esi,8),%ebx
802	shrl	$16,%ecx
803	movzbl	%dl,%esi
804	movl	(%ebp,%esi,8),%eax
805	movzbl	%ch,%esi
806	xorl	(%ebp,%esi,8),%ebx
807	movzbl	%dh,%esi
808	xorl	4(%ebp,%esi,8),%eax
809	shrl	$16,%edx
810	movzbl	%cl,%ecx
811	xorl	2048(%ebp,%ecx,8),%ebx
812	movzbl	%dh,%esi
813	movl	4(%esp),%ecx
814	xorl	%ebx,%eax
815	rorl	$8,%ebx
816	xorl	2048(%ebp,%esi,8),%eax
817	movzbl	%dl,%esi
818	movl	(%esp),%edx
819	xorl	%ecx,%ebx
820	xorl	2052(%ebp,%esi,8),%eax
821	movl	16(%edi),%esi
822	xorl	%eax,%ebx
823	movl	%ebx,4(%esp)
824	xorl	%edx,%eax
825	movl	%eax,(%esp)
826	movl	8(%esp),%ecx
827	movl	12(%esp),%edx
828	movl	44(%esp),%esi
829	xorl	(%esi),%eax
830	xorl	4(%esi),%ebx
831	xorl	8(%esi),%ecx
832	xorl	12(%esi),%edx
833	movl	16(%edi),%esi
834	movl	%eax,(%esp)
835	movl	%ebx,4(%esp)
836	movl	%ecx,8(%esp)
837	movl	%edx,12(%esp)
838	xorl	%esi,%eax
839	xorl	20(%edi),%ebx
840	movzbl	%ah,%esi
841	movl	2052(%ebp,%esi,8),%edx
842	movzbl	%al,%esi
843	xorl	4(%ebp,%esi,8),%edx
844	shrl	$16,%eax
845	movzbl	%bl,%esi
846	movl	(%ebp,%esi,8),%ecx
847	movzbl	%ah,%esi
848	xorl	(%ebp,%esi,8),%edx
849	movzbl	%bh,%esi
850	xorl	4(%ebp,%esi,8),%ecx
851	shrl	$16,%ebx
852	movzbl	%al,%eax
853	xorl	2048(%ebp,%eax,8),%edx
854	movzbl	%bh,%esi
855	movl	12(%esp),%eax
856	xorl	%edx,%ecx
857	rorl	$8,%edx
858	xorl	2048(%ebp,%esi,8),%ecx
859	movzbl	%bl,%esi
860	movl	8(%esp),%ebx
861	xorl	%eax,%edx
862	xorl	2052(%ebp,%esi,8),%ecx
863	movl	24(%edi),%esi
864	xorl	%ecx,%edx
865	movl	%edx,12(%esp)
866	xorl	%ebx,%ecx
867	movl	%ecx,8(%esp)
868	xorl	%esi,%ecx
869	xorl	28(%edi),%edx
870	movzbl	%ch,%esi
871	movl	2052(%ebp,%esi,8),%ebx
872	movzbl	%cl,%esi
873	xorl	4(%ebp,%esi,8),%ebx
874	shrl	$16,%ecx
875	movzbl	%dl,%esi
876	movl	(%ebp,%esi,8),%eax
877	movzbl	%ch,%esi
878	xorl	(%ebp,%esi,8),%ebx
879	movzbl	%dh,%esi
880	xorl	4(%ebp,%esi,8),%eax
881	shrl	$16,%edx
882	movzbl	%cl,%ecx
883	xorl	2048(%ebp,%ecx,8),%ebx
884	movzbl	%dh,%esi
885	movl	4(%esp),%ecx
886	xorl	%ebx,%eax
887	rorl	$8,%ebx
888	xorl	2048(%ebp,%esi,8),%eax
889	movzbl	%dl,%esi
890	movl	(%esp),%edx
891	xorl	%ecx,%ebx
892	xorl	2052(%ebp,%esi,8),%eax
893	movl	32(%edi),%esi
894	xorl	%eax,%ebx
895	movl	%ebx,4(%esp)
896	xorl	%edx,%eax
897	movl	%eax,(%esp)
898	movl	8(%esp),%ecx
899	movl	12(%esp),%edx
900	movl	36(%esp),%esi
901	cmpl	$128,%esi
902	jne	.L0122nd256
903	movl	44(%esp),%edi
904	leal	128(%edi),%edi
905	movl	%eax,-112(%edi)
906	movl	%ebx,-108(%edi)
907	movl	%ecx,-104(%edi)
908	movl	%edx,-100(%edi)
909	movl	%eax,%ebp
910	shll	$15,%eax
911	movl	%ebx,%esi
912	shrl	$17,%esi
913	shll	$15,%ebx
914	orl	%esi,%eax
915	movl	%ecx,%esi
916	shll	$15,%ecx
917	movl	%eax,-80(%edi)
918	shrl	$17,%esi
919	orl	%esi,%ebx
920	shrl	$17,%ebp
921	movl	%edx,%esi
922	shrl	$17,%esi
923	movl	%ebx,-76(%edi)
924	shll	$15,%edx
925	orl	%esi,%ecx
926	orl	%ebp,%edx
927	movl	%ecx,-72(%edi)
928	movl	%edx,-68(%edi)
929	movl	%eax,%ebp
930	shll	$15,%eax
931	movl	%ebx,%esi
932	shrl	$17,%esi
933	shll	$15,%ebx
934	orl	%esi,%eax
935	movl	%ecx,%esi
936	shll	$15,%ecx
937	movl	%eax,-64(%edi)
938	shrl	$17,%esi
939	orl	%esi,%ebx
940	shrl	$17,%ebp
941	movl	%edx,%esi
942	shrl	$17,%esi
943	movl	%ebx,-60(%edi)
944	shll	$15,%edx
945	orl	%esi,%ecx
946	orl	%ebp,%edx
947	movl	%ecx,-56(%edi)
948	movl	%edx,-52(%edi)
949	movl	%eax,%ebp
950	shll	$15,%eax
951	movl	%ebx,%esi
952	shrl	$17,%esi
953	shll	$15,%ebx
954	orl	%esi,%eax
955	movl	%ecx,%esi
956	shll	$15,%ecx
957	movl	%eax,-32(%edi)
958	shrl	$17,%esi
959	orl	%esi,%ebx
960	shrl	$17,%ebp
961	movl	%edx,%esi
962	shrl	$17,%esi
963	movl	%ebx,-28(%edi)
964	shll	$15,%edx
965	orl	%esi,%ecx
966	orl	%ebp,%edx
967	movl	%eax,%ebp
968	shll	$15,%eax
969	movl	%ebx,%esi
970	shrl	$17,%esi
971	shll	$15,%ebx
972	orl	%esi,%eax
973	movl	%ecx,%esi
974	shll	$15,%ecx
975	movl	%eax,-16(%edi)
976	shrl	$17,%esi
977	orl	%esi,%ebx
978	shrl	$17,%ebp
979	movl	%edx,%esi
980	shrl	$17,%esi
981	movl	%ebx,-12(%edi)
982	shll	$15,%edx
983	orl	%esi,%ecx
984	orl	%ebp,%edx
985	movl	%ecx,-8(%edi)
986	movl	%edx,-4(%edi)
987	movl	%ebx,%ebp
988	shll	$2,%ebx
989	movl	%ecx,%esi
990	shrl	$30,%esi
991	shll	$2,%ecx
992	orl	%esi,%ebx
993	movl	%edx,%esi
994	shll	$2,%edx
995	movl	%ebx,32(%edi)
996	shrl	$30,%esi
997	orl	%esi,%ecx
998	shrl	$30,%ebp
999	movl	%eax,%esi
1000	shrl	$30,%esi
1001	movl	%ecx,36(%edi)
1002	shll	$2,%eax
1003	orl	%esi,%edx
1004	orl	%ebp,%eax
1005	movl	%edx,40(%edi)
1006	movl	%eax,44(%edi)
1007	movl	%ebx,%ebp
1008	shll	$17,%ebx
1009	movl	%ecx,%esi
1010	shrl	$15,%esi
1011	shll	$17,%ecx
1012	orl	%esi,%ebx
1013	movl	%edx,%esi
1014	shll	$17,%edx
1015	movl	%ebx,64(%edi)
1016	shrl	$15,%esi
1017	orl	%esi,%ecx
1018	shrl	$15,%ebp
1019	movl	%eax,%esi
1020	shrl	$15,%esi
1021	movl	%ecx,68(%edi)
1022	shll	$17,%eax
1023	orl	%esi,%edx
1024	orl	%ebp,%eax
1025	movl	%edx,72(%edi)
1026	movl	%eax,76(%edi)
1027	movl	-128(%edi),%ebx
1028	movl	-124(%edi),%ecx
1029	movl	-120(%edi),%edx
1030	movl	-116(%edi),%eax
1031	movl	%ebx,%ebp
1032	shll	$15,%ebx
1033	movl	%ecx,%esi
1034	shrl	$17,%esi
1035	shll	$15,%ecx
1036	orl	%esi,%ebx
1037	movl	%edx,%esi
1038	shll	$15,%edx
1039	movl	%ebx,-96(%edi)
1040	shrl	$17,%esi
1041	orl	%esi,%ecx
1042	shrl	$17,%ebp
1043	movl	%eax,%esi
1044	shrl	$17,%esi
1045	movl	%ecx,-92(%edi)
1046	shll	$15,%eax
1047	orl	%esi,%edx
1048	orl	%ebp,%eax
1049	movl	%edx,-88(%edi)
1050	movl	%eax,-84(%edi)
1051	movl	%ebx,%ebp
1052	shll	$30,%ebx
1053	movl	%ecx,%esi
1054	shrl	$2,%esi
1055	shll	$30,%ecx
1056	orl	%esi,%ebx
1057	movl	%edx,%esi
1058	shll	$30,%edx
1059	movl	%ebx,-48(%edi)
1060	shrl	$2,%esi
1061	orl	%esi,%ecx
1062	shrl	$2,%ebp
1063	movl	%eax,%esi
1064	shrl	$2,%esi
1065	movl	%ecx,-44(%edi)
1066	shll	$30,%eax
1067	orl	%esi,%edx
1068	orl	%ebp,%eax
1069	movl	%edx,-40(%edi)
1070	movl	%eax,-36(%edi)
1071	movl	%ebx,%ebp
1072	shll	$15,%ebx
1073	movl	%ecx,%esi
1074	shrl	$17,%esi
1075	shll	$15,%ecx
1076	orl	%esi,%ebx
1077	movl	%edx,%esi
1078	shll	$15,%edx
1079	shrl	$17,%esi
1080	orl	%esi,%ecx
1081	shrl	$17,%ebp
1082	movl	%eax,%esi
1083	shrl	$17,%esi
1084	shll	$15,%eax
1085	orl	%esi,%edx
1086	orl	%ebp,%eax
1087	movl	%edx,-24(%edi)
1088	movl	%eax,-20(%edi)
1089	movl	%ebx,%ebp
1090	shll	$17,%ebx
1091	movl	%ecx,%esi
1092	shrl	$15,%esi
1093	shll	$17,%ecx
1094	orl	%esi,%ebx
1095	movl	%edx,%esi
1096	shll	$17,%edx
1097	movl	%ebx,(%edi)
1098	shrl	$15,%esi
1099	orl	%esi,%ecx
1100	shrl	$15,%ebp
1101	movl	%eax,%esi
1102	shrl	$15,%esi
1103	movl	%ecx,4(%edi)
1104	shll	$17,%eax
1105	orl	%esi,%edx
1106	orl	%ebp,%eax
1107	movl	%edx,8(%edi)
1108	movl	%eax,12(%edi)
1109	movl	%ebx,%ebp
1110	shll	$17,%ebx
1111	movl	%ecx,%esi
1112	shrl	$15,%esi
1113	shll	$17,%ecx
1114	orl	%esi,%ebx
1115	movl	%edx,%esi
1116	shll	$17,%edx
1117	movl	%ebx,16(%edi)
1118	shrl	$15,%esi
1119	orl	%esi,%ecx
1120	shrl	$15,%ebp
1121	movl	%eax,%esi
1122	shrl	$15,%esi
1123	movl	%ecx,20(%edi)
1124	shll	$17,%eax
1125	orl	%esi,%edx
1126	orl	%ebp,%eax
1127	movl	%edx,24(%edi)
1128	movl	%eax,28(%edi)
1129	movl	%ebx,%ebp
1130	shll	$17,%ebx
1131	movl	%ecx,%esi
1132	shrl	$15,%esi
1133	shll	$17,%ecx
1134	orl	%esi,%ebx
1135	movl	%edx,%esi
1136	shll	$17,%edx
1137	movl	%ebx,48(%edi)
1138	shrl	$15,%esi
1139	orl	%esi,%ecx
1140	shrl	$15,%ebp
1141	movl	%eax,%esi
1142	shrl	$15,%esi
1143	movl	%ecx,52(%edi)
1144	shll	$17,%eax
1145	orl	%esi,%edx
1146	orl	%ebp,%eax
1147	movl	%edx,56(%edi)
1148	movl	%eax,60(%edi)
1149	movl	$3,%eax
1150	jmp	.L013done
1151.align	16
1152.L0122nd256:
1153	movl	44(%esp),%esi
1154	movl	%eax,48(%esi)
1155	movl	%ebx,52(%esi)
1156	movl	%ecx,56(%esi)
1157	movl	%edx,60(%esi)
1158	xorl	32(%esi),%eax
1159	xorl	36(%esi),%ebx
1160	xorl	40(%esi),%ecx
1161	xorl	44(%esi),%edx
1162	movl	32(%edi),%esi
1163	movl	%eax,(%esp)
1164	movl	%ebx,4(%esp)
1165	movl	%ecx,8(%esp)
1166	movl	%edx,12(%esp)
1167	xorl	%esi,%eax
1168	xorl	36(%edi),%ebx
1169	movzbl	%ah,%esi
1170	movl	2052(%ebp,%esi,8),%edx
1171	movzbl	%al,%esi
1172	xorl	4(%ebp,%esi,8),%edx
1173	shrl	$16,%eax
1174	movzbl	%bl,%esi
1175	movl	(%ebp,%esi,8),%ecx
1176	movzbl	%ah,%esi
1177	xorl	(%ebp,%esi,8),%edx
1178	movzbl	%bh,%esi
1179	xorl	4(%ebp,%esi,8),%ecx
1180	shrl	$16,%ebx
1181	movzbl	%al,%eax
1182	xorl	2048(%ebp,%eax,8),%edx
1183	movzbl	%bh,%esi
1184	movl	12(%esp),%eax
1185	xorl	%edx,%ecx
1186	rorl	$8,%edx
1187	xorl	2048(%ebp,%esi,8),%ecx
1188	movzbl	%bl,%esi
1189	movl	8(%esp),%ebx
1190	xorl	%eax,%edx
1191	xorl	2052(%ebp,%esi,8),%ecx
1192	movl	40(%edi),%esi
1193	xorl	%ecx,%edx
1194	movl	%edx,12(%esp)
1195	xorl	%ebx,%ecx
1196	movl	%ecx,8(%esp)
1197	xorl	%esi,%ecx
1198	xorl	44(%edi),%edx
1199	movzbl	%ch,%esi
1200	movl	2052(%ebp,%esi,8),%ebx
1201	movzbl	%cl,%esi
1202	xorl	4(%ebp,%esi,8),%ebx
1203	shrl	$16,%ecx
1204	movzbl	%dl,%esi
1205	movl	(%ebp,%esi,8),%eax
1206	movzbl	%ch,%esi
1207	xorl	(%ebp,%esi,8),%ebx
1208	movzbl	%dh,%esi
1209	xorl	4(%ebp,%esi,8),%eax
1210	shrl	$16,%edx
1211	movzbl	%cl,%ecx
1212	xorl	2048(%ebp,%ecx,8),%ebx
1213	movzbl	%dh,%esi
1214	movl	4(%esp),%ecx
1215	xorl	%ebx,%eax
1216	rorl	$8,%ebx
1217	xorl	2048(%ebp,%esi,8),%eax
1218	movzbl	%dl,%esi
1219	movl	(%esp),%edx
1220	xorl	%ecx,%ebx
1221	xorl	2052(%ebp,%esi,8),%eax
1222	movl	48(%edi),%esi
1223	xorl	%eax,%ebx
1224	movl	%ebx,4(%esp)
1225	xorl	%edx,%eax
1226	movl	%eax,(%esp)
1227	movl	8(%esp),%ecx
1228	movl	12(%esp),%edx
1229	movl	44(%esp),%edi
1230	leal	128(%edi),%edi
1231	movl	%eax,-112(%edi)
1232	movl	%ebx,-108(%edi)
1233	movl	%ecx,-104(%edi)
1234	movl	%edx,-100(%edi)
1235	movl	%eax,%ebp
1236	shll	$30,%eax
1237	movl	%ebx,%esi
1238	shrl	$2,%esi
1239	shll	$30,%ebx
1240	orl	%esi,%eax
1241	movl	%ecx,%esi
1242	shll	$30,%ecx
1243	movl	%eax,-48(%edi)
1244	shrl	$2,%esi
1245	orl	%esi,%ebx
1246	shrl	$2,%ebp
1247	movl	%edx,%esi
1248	shrl	$2,%esi
1249	movl	%ebx,-44(%edi)
1250	shll	$30,%edx
1251	orl	%esi,%ecx
1252	orl	%ebp,%edx
1253	movl	%ecx,-40(%edi)
1254	movl	%edx,-36(%edi)
1255	movl	%eax,%ebp
1256	shll	$30,%eax
1257	movl	%ebx,%esi
1258	shrl	$2,%esi
1259	shll	$30,%ebx
1260	orl	%esi,%eax
1261	movl	%ecx,%esi
1262	shll	$30,%ecx
1263	movl	%eax,32(%edi)
1264	shrl	$2,%esi
1265	orl	%esi,%ebx
1266	shrl	$2,%ebp
1267	movl	%edx,%esi
1268	shrl	$2,%esi
1269	movl	%ebx,36(%edi)
1270	shll	$30,%edx
1271	orl	%esi,%ecx
1272	orl	%ebp,%edx
1273	movl	%ecx,40(%edi)
1274	movl	%edx,44(%edi)
1275	movl	%ebx,%ebp
1276	shll	$19,%ebx
1277	movl	%ecx,%esi
1278	shrl	$13,%esi
1279	shll	$19,%ecx
1280	orl	%esi,%ebx
1281	movl	%edx,%esi
1282	shll	$19,%edx
1283	movl	%ebx,128(%edi)
1284	shrl	$13,%esi
1285	orl	%esi,%ecx
1286	shrl	$13,%ebp
1287	movl	%eax,%esi
1288	shrl	$13,%esi
1289	movl	%ecx,132(%edi)
1290	shll	$19,%eax
1291	orl	%esi,%edx
1292	orl	%ebp,%eax
1293	movl	%edx,136(%edi)
1294	movl	%eax,140(%edi)
1295	movl	-96(%edi),%ebx
1296	movl	-92(%edi),%ecx
1297	movl	-88(%edi),%edx
1298	movl	-84(%edi),%eax
1299	movl	%ebx,%ebp
1300	shll	$15,%ebx
1301	movl	%ecx,%esi
1302	shrl	$17,%esi
1303	shll	$15,%ecx
1304	orl	%esi,%ebx
1305	movl	%edx,%esi
1306	shll	$15,%edx
1307	movl	%ebx,-96(%edi)
1308	shrl	$17,%esi
1309	orl	%esi,%ecx
1310	shrl	$17,%ebp
1311	movl	%eax,%esi
1312	shrl	$17,%esi
1313	movl	%ecx,-92(%edi)
1314	shll	$15,%eax
1315	orl	%esi,%edx
1316	orl	%ebp,%eax
1317	movl	%edx,-88(%edi)
1318	movl	%eax,-84(%edi)
1319	movl	%ebx,%ebp
1320	shll	$15,%ebx
1321	movl	%ecx,%esi
1322	shrl	$17,%esi
1323	shll	$15,%ecx
1324	orl	%esi,%ebx
1325	movl	%edx,%esi
1326	shll	$15,%edx
1327	movl	%ebx,-64(%edi)
1328	shrl	$17,%esi
1329	orl	%esi,%ecx
1330	shrl	$17,%ebp
1331	movl	%eax,%esi
1332	shrl	$17,%esi
1333	movl	%ecx,-60(%edi)
1334	shll	$15,%eax
1335	orl	%esi,%edx
1336	orl	%ebp,%eax
1337	movl	%edx,-56(%edi)
1338	movl	%eax,-52(%edi)
1339	movl	%ebx,%ebp
1340	shll	$30,%ebx
1341	movl	%ecx,%esi
1342	shrl	$2,%esi
1343	shll	$30,%ecx
1344	orl	%esi,%ebx
1345	movl	%edx,%esi
1346	shll	$30,%edx
1347	movl	%ebx,16(%edi)
1348	shrl	$2,%esi
1349	orl	%esi,%ecx
1350	shrl	$2,%ebp
1351	movl	%eax,%esi
1352	shrl	$2,%esi
1353	movl	%ecx,20(%edi)
1354	shll	$30,%eax
1355	orl	%esi,%edx
1356	orl	%ebp,%eax
1357	movl	%edx,24(%edi)
1358	movl	%eax,28(%edi)
1359	movl	%ecx,%ebp
1360	shll	$2,%ecx
1361	movl	%edx,%esi
1362	shrl	$30,%esi
1363	shll	$2,%edx
1364	orl	%esi,%ecx
1365	movl	%eax,%esi
1366	shll	$2,%eax
1367	movl	%ecx,80(%edi)
1368	shrl	$30,%esi
1369	orl	%esi,%edx
1370	shrl	$30,%ebp
1371	movl	%ebx,%esi
1372	shrl	$30,%esi
1373	movl	%edx,84(%edi)
1374	shll	$2,%ebx
1375	orl	%esi,%eax
1376	orl	%ebp,%ebx
1377	movl	%eax,88(%edi)
1378	movl	%ebx,92(%edi)
1379	movl	-80(%edi),%ecx
1380	movl	-76(%edi),%edx
1381	movl	-72(%edi),%eax
1382	movl	-68(%edi),%ebx
1383	movl	%ecx,%ebp
1384	shll	$15,%ecx
1385	movl	%edx,%esi
1386	shrl	$17,%esi
1387	shll	$15,%edx
1388	orl	%esi,%ecx
1389	movl	%eax,%esi
1390	shll	$15,%eax
1391	movl	%ecx,-80(%edi)
1392	shrl	$17,%esi
1393	orl	%esi,%edx
1394	shrl	$17,%ebp
1395	movl	%ebx,%esi
1396	shrl	$17,%esi
1397	movl	%edx,-76(%edi)
1398	shll	$15,%ebx
1399	orl	%esi,%eax
1400	orl	%ebp,%ebx
1401	movl	%eax,-72(%edi)
1402	movl	%ebx,-68(%edi)
1403	movl	%ecx,%ebp
1404	shll	$30,%ecx
1405	movl	%edx,%esi
1406	shrl	$2,%esi
1407	shll	$30,%edx
1408	orl	%esi,%ecx
1409	movl	%eax,%esi
1410	shll	$30,%eax
1411	movl	%ecx,-16(%edi)
1412	shrl	$2,%esi
1413	orl	%esi,%edx
1414	shrl	$2,%ebp
1415	movl	%ebx,%esi
1416	shrl	$2,%esi
1417	movl	%edx,-12(%edi)
1418	shll	$30,%ebx
1419	orl	%esi,%eax
1420	orl	%ebp,%ebx
1421	movl	%eax,-8(%edi)
1422	movl	%ebx,-4(%edi)
1423	movl	%edx,64(%edi)
1424	movl	%eax,68(%edi)
1425	movl	%ebx,72(%edi)
1426	movl	%ecx,76(%edi)
1427	movl	%edx,%ebp
1428	shll	$17,%edx
1429	movl	%eax,%esi
1430	shrl	$15,%esi
1431	shll	$17,%eax
1432	orl	%esi,%edx
1433	movl	%ebx,%esi
1434	shll	$17,%ebx
1435	movl	%edx,96(%edi)
1436	shrl	$15,%esi
1437	orl	%esi,%eax
1438	shrl	$15,%ebp
1439	movl	%ecx,%esi
1440	shrl	$15,%esi
1441	movl	%eax,100(%edi)
1442	shll	$17,%ecx
1443	orl	%esi,%ebx
1444	orl	%ebp,%ecx
1445	movl	%ebx,104(%edi)
1446	movl	%ecx,108(%edi)
1447	movl	-128(%edi),%edx
1448	movl	-124(%edi),%eax
1449	movl	-120(%edi),%ebx
1450	movl	-116(%edi),%ecx
1451	movl	%eax,%ebp
1452	shll	$13,%eax
1453	movl	%ebx,%esi
1454	shrl	$19,%esi
1455	shll	$13,%ebx
1456	orl	%esi,%eax
1457	movl	%ecx,%esi
1458	shll	$13,%ecx
1459	movl	%eax,-32(%edi)
1460	shrl	$19,%esi
1461	orl	%esi,%ebx
1462	shrl	$19,%ebp
1463	movl	%edx,%esi
1464	shrl	$19,%esi
1465	movl	%ebx,-28(%edi)
1466	shll	$13,%edx
1467	orl	%esi,%ecx
1468	orl	%ebp,%edx
1469	movl	%ecx,-24(%edi)
1470	movl	%edx,-20(%edi)
1471	movl	%eax,%ebp
1472	shll	$15,%eax
1473	movl	%ebx,%esi
1474	shrl	$17,%esi
1475	shll	$15,%ebx
1476	orl	%esi,%eax
1477	movl	%ecx,%esi
1478	shll	$15,%ecx
1479	movl	%eax,(%edi)
1480	shrl	$17,%esi
1481	orl	%esi,%ebx
1482	shrl	$17,%ebp
1483	movl	%edx,%esi
1484	shrl	$17,%esi
1485	movl	%ebx,4(%edi)
1486	shll	$15,%edx
1487	orl	%esi,%ecx
1488	orl	%ebp,%edx
1489	movl	%ecx,8(%edi)
1490	movl	%edx,12(%edi)
1491	movl	%eax,%ebp
1492	shll	$17,%eax
1493	movl	%ebx,%esi
1494	shrl	$15,%esi
1495	shll	$17,%ebx
1496	orl	%esi,%eax
1497	movl	%ecx,%esi
1498	shll	$17,%ecx
1499	movl	%eax,48(%edi)
1500	shrl	$15,%esi
1501	orl	%esi,%ebx
1502	shrl	$15,%ebp
1503	movl	%edx,%esi
1504	shrl	$15,%esi
1505	movl	%ebx,52(%edi)
1506	shll	$17,%edx
1507	orl	%esi,%ecx
1508	orl	%ebp,%edx
1509	movl	%ecx,56(%edi)
1510	movl	%edx,60(%edi)
1511	movl	%ebx,%ebp
1512	shll	$2,%ebx
1513	movl	%ecx,%esi
1514	shrl	$30,%esi
1515	shll	$2,%ecx
1516	orl	%esi,%ebx
1517	movl	%edx,%esi
1518	shll	$2,%edx
1519	movl	%ebx,112(%edi)
1520	shrl	$30,%esi
1521	orl	%esi,%ecx
1522	shrl	$30,%ebp
1523	movl	%eax,%esi
1524	shrl	$30,%esi
1525	movl	%ecx,116(%edi)
1526	shll	$2,%eax
1527	orl	%esi,%edx
1528	orl	%ebp,%eax
1529	movl	%edx,120(%edi)
1530	movl	%eax,124(%edi)
1531	movl	$4,%eax
1532.L013done:
1533	leal	144(%edi),%edx
1534	addl	$16,%esp
1535	popl	%edi
1536	popl	%esi
1537	popl	%ebx
1538	popl	%ebp
1539	ret
1540.size	Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
1541.globl	Camellia_set_key
1542.type	Camellia_set_key,@function
1543.align	16
1544Camellia_set_key:
1545.L_Camellia_set_key_begin:
1546	pushl	%ebx
1547	movl	8(%esp),%ecx
1548	movl	12(%esp),%ebx
1549	movl	16(%esp),%edx
1550	movl	$-1,%eax
1551	testl	%ecx,%ecx
1552	jz	.L014done
1553	testl	%edx,%edx
1554	jz	.L014done
1555	movl	$-2,%eax
1556	cmpl	$256,%ebx
1557	je	.L015arg_ok
1558	cmpl	$192,%ebx
1559	je	.L015arg_ok
1560	cmpl	$128,%ebx
1561	jne	.L014done
1562.align	4
1563.L015arg_ok:
1564	pushl	%edx
1565	pushl	%ecx
1566	pushl	%ebx
1567	call	.L_Camellia_Ekeygen_begin
1568	addl	$12,%esp
1569	movl	%eax,(%edx)
1570	xorl	%eax,%eax
1571.align	4
1572.L014done:
1573	popl	%ebx
1574	ret
1575.size	Camellia_set_key,.-.L_Camellia_set_key_begin
1576.align	64
1577.LCamellia_SIGMA:
1578.long	2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
1579.align	64
1580.LCamellia_SBOX:
1581.long	1886416896,1886388336
1582.long	2189591040,741081132
1583.long	741092352,3014852787
1584.long	3974949888,3233808576
1585.long	3014898432,3840147684
1586.long	656877312,1465319511
1587.long	3233857536,3941204202
1588.long	3857048832,2930639022
1589.long	3840205824,589496355
1590.long	2240120064,1802174571
1591.long	1465341696,1162149957
1592.long	892679424,2779054245
1593.long	3941263872,3991732461
1594.long	202116096,1330577487
1595.long	2930683392,488439837
1596.long	1094795520,2459041938
1597.long	589505280,2256928902
1598.long	4025478912,2947481775
1599.long	1802201856,2088501372
1600.long	2475922176,522125343
1601.long	1162167552,1044250686
1602.long	421075200,3705405660
1603.long	2779096320,1583218782
1604.long	555819264,185270283
1605.long	3991792896,2795896998
1606.long	235802112,960036921
1607.long	1330597632,3587506389
1608.long	1313754624,1566376029
1609.long	488447232,3654877401
1610.long	1701143808,1515847770
1611.long	2459079168,1364262993
1612.long	3183328512,1819017324
1613.long	2256963072,2341142667
1614.long	3099113472,2593783962
1615.long	2947526400,4227531003
1616.long	2408550144,2964324528
1617.long	2088532992,1953759348
1618.long	3958106880,724238379
1619.long	522133248,4042260720
1620.long	3469659648,2223243396
1621.long	1044266496,3755933919
1622.long	808464384,3419078859
1623.long	3705461760,875823156
1624.long	1600085760,1987444854
1625.long	1583242752,1835860077
1626.long	3318072576,2846425257
1627.long	185273088,3520135377
1628.long	437918208,67371012
1629.long	2795939328,336855060
1630.long	3789676800,976879674
1631.long	960051456,3739091166
1632.long	3402287616,286326801
1633.long	3587560704,842137650
1634.long	1195853568,2627469468
1635.long	1566399744,1397948499
1636.long	1027423488,4075946226
1637.long	3654932736,4278059262
1638.long	16843008,3486449871
1639.long	1515870720,3284336835
1640.long	3604403712,2054815866
1641.long	1364283648,606339108
1642.long	1448498688,3907518696
1643.long	1819044864,1616904288
1644.long	1296911616,1768489065
1645.long	2341178112,2863268010
1646.long	218959104,2694840480
1647.long	2593823232,2711683233
1648.long	1717986816,1650589794
1649.long	4227595008,1414791252
1650.long	3435973632,505282590
1651.long	2964369408,3772776672
1652.long	757935360,1684275300
1653.long	1953788928,269484048
1654.long	303174144,0
1655.long	724249344,2745368739
1656.long	538976256,1970602101
1657.long	4042321920,2324299914
1658.long	2981212416,3873833190
1659.long	2223277056,151584777
1660.long	2576980224,3722248413
1661.long	3755990784,2273771655
1662.long	1280068608,2206400643
1663.long	3419130624,3452764365
1664.long	3267543552,2425356432
1665.long	875836416,1936916595
1666.long	2122219008,4143317238
1667.long	1987474944,2644312221
1668.long	84215040,3216965823
1669.long	1835887872,1381105746
1670.long	3082270464,3638034648
1671.long	2846468352,3368550600
1672.long	825307392,3334865094
1673.long	3520188672,2172715137
1674.long	387389184,1869545583
1675.long	67372032,320012307
1676.long	3621246720,1667432547
1677.long	336860160,3924361449
1678.long	1482184704,2812739751
1679.long	976894464,2677997727
1680.long	1633771776,3166437564
1681.long	3739147776,690552873
1682.long	454761216,4193845497
1683.long	286331136,791609391
1684.long	471604224,3031695540
1685.long	842150400,2021130360
1686.long	252645120,101056518
1687.long	2627509248,3890675943
1688.long	370546176,1903231089
1689.long	1397969664,3570663636
1690.long	404232192,2880110763
1691.long	4076007936,2290614408
1692.long	572662272,2374828173
1693.long	4278124032,1920073842
1694.long	1145324544,3115909305
1695.long	3486502656,4177002744
1696.long	2998055424,2896953516
1697.long	3284386560,909508662
1698.long	3048584448,707395626
1699.long	2054846976,1010565180
1700.long	2442236160,4059103473
1701.long	606348288,1077936192
1702.long	134744064,3553820883
1703.long	3907577856,3149594811
1704.long	2829625344,1128464451
1705.long	1616928768,353697813
1706.long	4244438016,2913796269
1707.long	1768515840,2004287607
1708.long	1347440640,2155872384
1709.long	2863311360,2189557890
1710.long	3503345664,3974889708
1711.long	2694881280,656867367
1712.long	2105376000,3856990437
1713.long	2711724288,2240086149
1714.long	2307492096,892665909
1715.long	1650614784,202113036
1716.long	2543294208,1094778945
1717.long	1414812672,4025417967
1718.long	1532713728,2475884691
1719.long	505290240,421068825
1720.long	2509608192,555810849
1721.long	3772833792,235798542
1722.long	4294967040,1313734734
1723.long	1684300800,1701118053
1724.long	3537031680,3183280317
1725.long	269488128,3099066552
1726.long	3301229568,2408513679
1727.long	0,3958046955
1728.long	1212696576,3469607118
1729.long	2745410304,808452144
1730.long	4160222976,1600061535
1731.long	1970631936,3318022341
1732.long	3688618752,437911578
1733.long	2324335104,3789619425
1734.long	50529024,3402236106
1735.long	3873891840,1195835463
1736.long	3671775744,1027407933
1737.long	151587072,16842753
1738.long	1061109504,3604349142
1739.long	3722304768,1448476758
1740.long	2492765184,1296891981
1741.long	2273806080,218955789
1742.long	1549556736,1717960806
1743.long	2206434048,3435921612
1744.long	33686016,757923885
1745.long	3452816640,303169554
1746.long	1246382592,538968096
1747.long	2425393152,2981167281
1748.long	858993408,2576941209
1749.long	1936945920,1280049228
1750.long	1734829824,3267494082
1751.long	4143379968,2122186878
1752.long	4092850944,84213765
1753.long	2644352256,3082223799
1754.long	2139062016,825294897
1755.long	3217014528,387383319
1756.long	3806519808,3621191895
1757.long	1381126656,1482162264
1758.long	2610666240,1633747041
1759.long	3638089728,454754331
1760.long	640034304,471597084
1761.long	3368601600,252641295
1762.long	926365440,370540566
1763.long	3334915584,404226072
1764.long	993737472,572653602
1765.long	2172748032,1145307204
1766.long	2526451200,2998010034
1767.long	1869573888,3048538293
1768.long	1263225600,2442199185
1769.long	320017152,134742024
1770.long	3200171520,2829582504
1771.long	1667457792,4244373756
1772.long	774778368,1347420240
1773.long	3924420864,3503292624
1774.long	2038003968,2105344125
1775.long	2812782336,2307457161
1776.long	2358021120,2543255703
1777.long	2678038272,1532690523
1778.long	1852730880,2509570197
1779.long	3166485504,4294902015
1780.long	2391707136,3536978130
1781.long	690563328,3301179588
1782.long	4126536960,1212678216
1783.long	4193908992,4160159991
1784.long	3065427456,3688562907
1785.long	791621376,50528259
1786.long	4261281024,3671720154
1787.long	3031741440,1061093439
1788.long	1499027712,2492727444
1789.long	2021160960,1549533276
1790.long	2560137216,33685506
1791.long	101058048,1246363722
1792.long	1785358848,858980403
1793.long	3890734848,1734803559
1794.long	1179010560,4092788979
1795.long	1903259904,2139029631
1796.long	3132799488,3806462178
1797.long	3570717696,2610626715
1798.long	623191296,640024614
1799.long	2880154368,926351415
1800.long	1111638528,993722427
1801.long	2290649088,2526412950
1802.long	2728567296,1263206475
1803.long	2374864128,3200123070
1804.long	4210752000,774766638
1805.long	1920102912,2037973113
1806.long	117901056,2357985420
1807.long	3115956480,1852702830
1808.long	1431655680,2391670926
1809.long	4177065984,4126474485
1810.long	4008635904,3065381046
1811.long	2896997376,4261216509
1812.long	168430080,1499005017
1813.long	909522432,2560098456
1814.long	1229539584,1785331818
1815.long	707406336,1178992710
1816.long	1751672832,3132752058
1817.long	1010580480,623181861
1818.long	943208448,1111621698
1819.long	4059164928,2728525986
1820.long	2762253312,4210688250
1821.long	1077952512,117899271
1822.long	673720320,1431634005
1823.long	3553874688,4008575214
1824.long	2071689984,168427530
1825.long	3149642496,1229520969
1826.long	3385444608,1751646312
1827.long	1128481536,943194168
1828.long	3250700544,2762211492
1829.long	353703168,673710120
1830.long	3823362816,2071658619
1831.long	2913840384,3385393353
1832.long	4109693952,3250651329
1833.long	2004317952,3823304931
1834.long	3351758592,4109631732
1835.long	2155905024,3351707847
1836.long	2661195264,2661154974
1837.long	14737632,939538488
1838.long	328965,1090535745
1839.long	5789784,369104406
1840.long	14277081,1979741814
1841.long	6776679,3640711641
1842.long	5131854,2466288531
1843.long	8487297,1610637408
1844.long	13355979,4060148466
1845.long	13224393,1912631922
1846.long	723723,3254829762
1847.long	11447982,2868947883
1848.long	6974058,2583730842
1849.long	14013909,1962964341
1850.long	1579032,100664838
1851.long	6118749,1459640151
1852.long	8553090,2684395680
1853.long	4605510,2432733585
1854.long	14671839,4144035831
1855.long	14079702,3036722613
1856.long	2565927,3372272073
1857.long	9079434,2717950626
1858.long	3289650,2348846220
1859.long	4934475,3523269330
1860.long	4342338,2415956112
1861.long	14408667,4127258358
1862.long	1842204,117442311
1863.long	10395294,2801837991
1864.long	10263708,654321447
1865.long	3815994,2382401166
1866.long	13290186,2986390194
1867.long	2434341,1224755529
1868.long	8092539,3724599006
1869.long	855309,1124090691
1870.long	7434609,1543527516
1871.long	6250335,3607156695
1872.long	2039583,3338717127
1873.long	16316664,1040203326
1874.long	14145495,4110480885
1875.long	4079166,2399178639
1876.long	10329501,1728079719
1877.long	8158332,520101663
1878.long	6316128,402659352
1879.long	12171705,1845522030
1880.long	12500670,2936057775
1881.long	12369084,788541231
1882.long	9145227,3791708898
1883.long	1447446,2231403909
1884.long	3421236,218107149
1885.long	5066061,1392530259
1886.long	12829635,4026593520
1887.long	7500402,2617285788
1888.long	9803157,1694524773
1889.long	11250603,3925928682
1890.long	9342606,2734728099
1891.long	12237498,2919280302
1892.long	8026746,2650840734
1893.long	11776947,3959483628
1894.long	131586,2147516544
1895.long	11842740,754986285
1896.long	11382189,1795189611
1897.long	10658466,2818615464
1898.long	11316396,721431339
1899.long	14211288,905983542
1900.long	10132122,2785060518
1901.long	1513239,3305162181
1902.long	1710618,2248181382
1903.long	3487029,1291865421
1904.long	13421772,855651123
1905.long	16250871,4244700669
1906.long	10066329,1711302246
1907.long	6381921,1476417624
1908.long	5921370,2516620950
1909.long	15263976,973093434
1910.long	2368548,150997257
1911.long	5658198,2499843477
1912.long	4210752,268439568
1913.long	14803425,2013296760
1914.long	6513507,3623934168
1915.long	592137,1107313218
1916.long	3355443,3422604492
1917.long	12566463,4009816047
1918.long	10000536,637543974
1919.long	9934743,3842041317
1920.long	8750469,1627414881
1921.long	6842472,436214298
1922.long	16579836,1056980799
1923.long	15527148,989870907
1924.long	657930,2181071490
1925.long	14342874,3053500086
1926.long	7303023,3674266587
1927.long	5460819,3556824276
1928.long	6447714,2550175896
1929.long	10724259,3892373736
1930.long	3026478,2332068747
1931.long	526344,33554946
1932.long	11513775,3942706155
1933.long	2631720,167774730
1934.long	11579568,738208812
1935.long	7631988,486546717
1936.long	12763842,2952835248
1937.long	12434877,1862299503
1938.long	3552822,2365623693
1939.long	2236962,2281736328
1940.long	3684408,234884622
1941.long	6579300,419436825
1942.long	1973790,2264958855
1943.long	3750201,1308642894
1944.long	2894892,184552203
1945.long	10921638,2835392937
1946.long	3158064,201329676
1947.long	15066597,2030074233
1948.long	4473924,285217041
1949.long	16645629,2130739071
1950.long	8947848,570434082
1951.long	10461087,3875596263
1952.long	6645093,1493195097
1953.long	8882055,3774931425
1954.long	7039851,3657489114
1955.long	16053492,1023425853
1956.long	2302755,3355494600
1957.long	4737096,301994514
1958.long	1052688,67109892
1959.long	13750737,1946186868
1960.long	5329233,1409307732
1961.long	12632256,805318704
1962.long	16382457,2113961598
1963.long	13816530,3019945140
1964.long	10526880,671098920
1965.long	5592405,1426085205
1966.long	10592673,1744857192
1967.long	4276545,1342197840
1968.long	16448250,3187719870
1969.long	4408131,3489714384
1970.long	1250067,3288384708
1971.long	12895428,822096177
1972.long	3092271,3405827019
1973.long	11053224,704653866
1974.long	11974326,2902502829
1975.long	3947580,251662095
1976.long	2829099,3389049546
1977.long	12698049,1879076976
1978.long	16777215,4278255615
1979.long	13158600,838873650
1980.long	10855845,1761634665
1981.long	2105376,134219784
1982.long	9013641,1644192354
1983.long	0,0
1984.long	9474192,603989028
1985.long	4671303,3506491857
1986.long	15724527,4211145723
1987.long	15395562,3120609978
1988.long	12040119,3976261101
1989.long	1381653,1157645637
1990.long	394758,2164294017
1991.long	13487565,1929409395
1992.long	11908533,1828744557
1993.long	1184274,2214626436
1994.long	8289918,2667618207
1995.long	12303291,3993038574
1996.long	2697513,1241533002
1997.long	986895,3271607235
1998.long	12105912,771763758
1999.long	460551,3238052289
2000.long	263172,16777473
2001.long	10197915,3858818790
2002.long	9737364,620766501
2003.long	2171169,1207978056
2004.long	6710886,2566953369
2005.long	15132390,3103832505
2006.long	13553358,3003167667
2007.long	15592941,2063629179
2008.long	15198183,4177590777
2009.long	3881787,3456159438
2010.long	16711422,3204497343
2011.long	8355711,3741376479
2012.long	12961221,1895854449
2013.long	10790052,687876393
2014.long	3618615,3439381965
2015.long	11645361,1811967084
2016.long	5000268,318771987
2017.long	9539985,1677747300
2018.long	7237230,2600508315
2019.long	9276813,1660969827
2020.long	7763574,2634063261
2021.long	197379,3221274816
2022.long	2960685,1258310475
2023.long	14606046,3070277559
2024.long	9868950,2768283045
2025.long	2500134,2298513801
2026.long	8224125,1593859935
2027.long	13027014,2969612721
2028.long	6052956,385881879
2029.long	13882323,4093703412
2030.long	15921906,3154164924
2031.long	5197647,3540046803
2032.long	1644825,1174423110
2033.long	4144959,3472936911
2034.long	14474460,922761015
2035.long	7960953,1577082462
2036.long	1907997,1191200583
2037.long	5395026,2483066004
2038.long	15461355,4194368250
2039.long	15987699,4227923196
2040.long	7171437,1526750043
2041.long	6184542,2533398423
2042.long	16514043,4261478142
2043.long	6908265,1509972570
2044.long	11711154,2885725356
2045.long	15790320,1006648380
2046.long	3223857,1275087948
2047.long	789516,50332419
2048.long	13948116,889206069
2049.long	13619151,4076925939
2050.long	9211020,587211555
2051.long	14869218,3087055032
2052.long	7697781,1560304989
2053.long	11119017,1778412138
2054.long	4868682,2449511058
2055.long	5723991,3573601749
2056.long	8684676,553656609
2057.long	1118481,1140868164
2058.long	4539717,1358975313
2059.long	1776411,3321939654
2060.long	16119285,2097184125
2061.long	15000804,956315961
2062.long	921102,2197848963
2063.long	7566195,3691044060
2064.long	11184810,2852170410
2065.long	15856113,2080406652
2066.long	14540253,1996519287
2067.long	5855577,1442862678
2068.long	1315860,83887365
2069.long	7105644,452991771
2070.long	9605778,2751505572
2071.long	5526612,352326933
2072.long	13684944,872428596
2073.long	7895160,503324190
2074.long	7368816,469769244
2075.long	14935011,4160813304
2076.long	4802889,1375752786
2077.long	8421504,536879136
2078.long	5263440,335549460
2079.long	10987431,3909151209
2080.long	16185078,3170942397
2081.long	7829367,3707821533
2082.long	9671571,3825263844
2083.long	8816262,2701173153
2084.long	8618883,3758153952
2085.long	2763306,2315291274
2086.long	13092807,4043370993
2087.long	5987163,3590379222
2088.long	15329769,2046851706
2089.long	15658734,3137387451
2090.long	9408399,3808486371
2091.long	65793,1073758272
2092.long	4013373,1325420367
2093.globl	Camellia_cbc_encrypt
2094.type	Camellia_cbc_encrypt,@function
2095.align	16
2096Camellia_cbc_encrypt:
2097.L_Camellia_cbc_encrypt_begin:
2098	pushl	%ebp
2099	pushl	%ebx
2100	pushl	%esi
2101	pushl	%edi
2102	movl	28(%esp),%ecx
2103	cmpl	$0,%ecx
2104	je	.L016enc_out
2105	pushfl
2106	cld
2107	movl	24(%esp),%eax
2108	movl	28(%esp),%ebx
2109	movl	36(%esp),%edx
2110	movl	40(%esp),%ebp
2111	leal	-64(%esp),%esi
2112	andl	$-64,%esi
2113	leal	-127(%edx),%edi
2114	subl	%esi,%edi
2115	negl	%edi
2116	andl	$960,%edi
2117	subl	%edi,%esi
2118	movl	44(%esp),%edi
2119	xchgl	%esi,%esp
2120	addl	$4,%esp
2121	movl	%esi,20(%esp)
2122	movl	%eax,24(%esp)
2123	movl	%ebx,28(%esp)
2124	movl	%ecx,32(%esp)
2125	movl	%edx,36(%esp)
2126	movl	%ebp,40(%esp)
2127	call	.L017pic_point
2128.L017pic_point:
2129	popl	%ebp
2130	leal	.LCamellia_SBOX-.L017pic_point(%ebp),%ebp
2131	movl	$32,%esi
2132.align	4
2133.L018prefetch_sbox:
2134	movl	(%ebp),%eax
2135	movl	32(%ebp),%ebx
2136	movl	64(%ebp),%ecx
2137	movl	96(%ebp),%edx
2138	leal	128(%ebp),%ebp
2139	decl	%esi
2140	jnz	.L018prefetch_sbox
2141	movl	36(%esp),%eax
2142	subl	$4096,%ebp
2143	movl	24(%esp),%esi
2144	movl	272(%eax),%edx
2145	cmpl	$0,%edi
2146	je	.L019DECRYPT
2147	movl	32(%esp),%ecx
2148	movl	40(%esp),%edi
2149	shll	$6,%edx
2150	leal	(%eax,%edx,1),%edx
2151	movl	%edx,16(%esp)
2152	testl	$4294967280,%ecx
2153	jz	.L020enc_tail
2154	movl	(%edi),%eax
2155	movl	4(%edi),%ebx
2156.align	4
2157.L021enc_loop:
2158	movl	8(%edi),%ecx
2159	movl	12(%edi),%edx
2160	xorl	(%esi),%eax
2161	xorl	4(%esi),%ebx
2162	xorl	8(%esi),%ecx
2163	bswap	%eax
2164	xorl	12(%esi),%edx
2165	bswap	%ebx
2166	movl	36(%esp),%edi
2167	bswap	%ecx
2168	bswap	%edx
2169	call	_x86_Camellia_encrypt
2170	movl	24(%esp),%esi
2171	movl	28(%esp),%edi
2172	bswap	%eax
2173	bswap	%ebx
2174	bswap	%ecx
2175	movl	%eax,(%edi)
2176	bswap	%edx
2177	movl	%ebx,4(%edi)
2178	movl	%ecx,8(%edi)
2179	movl	%edx,12(%edi)
2180	movl	32(%esp),%ecx
2181	leal	16(%esi),%esi
2182	movl	%esi,24(%esp)
2183	leal	16(%edi),%edx
2184	movl	%edx,28(%esp)
2185	subl	$16,%ecx
2186	testl	$4294967280,%ecx
2187	movl	%ecx,32(%esp)
2188	jnz	.L021enc_loop
2189	testl	$15,%ecx
2190	jnz	.L020enc_tail
2191	movl	40(%esp),%esi
2192	movl	8(%edi),%ecx
2193	movl	12(%edi),%edx
2194	movl	%eax,(%esi)
2195	movl	%ebx,4(%esi)
2196	movl	%ecx,8(%esi)
2197	movl	%edx,12(%esi)
2198	movl	20(%esp),%esp
2199	popfl
2200.L016enc_out:
2201	popl	%edi
2202	popl	%esi
2203	popl	%ebx
2204	popl	%ebp
2205	ret
2206	pushfl
2207.align	4
2208.L020enc_tail:
2209	movl	%edi,%eax
2210	movl	28(%esp),%edi
2211	pushl	%eax
2212	movl	$16,%ebx
2213	subl	%ecx,%ebx
2214	cmpl	%esi,%edi
2215	je	.L022enc_in_place
2216.align	4
2217.long	2767451785
2218	jmp	.L023enc_skip_in_place
2219.L022enc_in_place:
2220	leal	(%edi,%ecx,1),%edi
2221.L023enc_skip_in_place:
2222	movl	%ebx,%ecx
2223	xorl	%eax,%eax
2224.align	4
2225.long	2868115081
2226	popl	%edi
2227	movl	28(%esp),%esi
2228	movl	(%edi),%eax
2229	movl	4(%edi),%ebx
2230	movl	$16,32(%esp)
2231	jmp	.L021enc_loop
2232.align	16
2233.L019DECRYPT:
2234	shll	$6,%edx
2235	leal	(%eax,%edx,1),%edx
2236	movl	%eax,16(%esp)
2237	movl	%edx,36(%esp)
2238	cmpl	28(%esp),%esi
2239	je	.L024dec_in_place
2240	movl	40(%esp),%edi
2241	movl	%edi,44(%esp)
2242.align	4
2243.L025dec_loop:
2244	movl	(%esi),%eax
2245	movl	4(%esi),%ebx
2246	movl	8(%esi),%ecx
2247	bswap	%eax
2248	movl	12(%esi),%edx
2249	bswap	%ebx
2250	movl	36(%esp),%edi
2251	bswap	%ecx
2252	bswap	%edx
2253	call	_x86_Camellia_decrypt
2254	movl	44(%esp),%edi
2255	movl	32(%esp),%esi
2256	bswap	%eax
2257	bswap	%ebx
2258	bswap	%ecx
2259	xorl	(%edi),%eax
2260	bswap	%edx
2261	xorl	4(%edi),%ebx
2262	xorl	8(%edi),%ecx
2263	xorl	12(%edi),%edx
2264	subl	$16,%esi
2265	jc	.L026dec_partial
2266	movl	%esi,32(%esp)
2267	movl	24(%esp),%esi
2268	movl	28(%esp),%edi
2269	movl	%eax,(%edi)
2270	movl	%ebx,4(%edi)
2271	movl	%ecx,8(%edi)
2272	movl	%edx,12(%edi)
2273	movl	%esi,44(%esp)
2274	leal	16(%esi),%esi
2275	movl	%esi,24(%esp)
2276	leal	16(%edi),%edi
2277	movl	%edi,28(%esp)
2278	jnz	.L025dec_loop
2279	movl	44(%esp),%edi
2280.L027dec_end:
2281	movl	40(%esp),%esi
2282	movl	(%edi),%eax
2283	movl	4(%edi),%ebx
2284	movl	8(%edi),%ecx
2285	movl	12(%edi),%edx
2286	movl	%eax,(%esi)
2287	movl	%ebx,4(%esi)
2288	movl	%ecx,8(%esi)
2289	movl	%edx,12(%esi)
2290	jmp	.L028dec_out
2291.align	4
2292.L026dec_partial:
2293	leal	44(%esp),%edi
2294	movl	%eax,(%edi)
2295	movl	%ebx,4(%edi)
2296	movl	%ecx,8(%edi)
2297	movl	%edx,12(%edi)
2298	leal	16(%esi),%ecx
2299	movl	%edi,%esi
2300	movl	28(%esp),%edi
2301.long	2767451785
2302	movl	24(%esp),%edi
2303	jmp	.L027dec_end
2304.align	4
2305.L024dec_in_place:
2306.L029dec_in_place_loop:
2307	leal	44(%esp),%edi
2308	movl	(%esi),%eax
2309	movl	4(%esi),%ebx
2310	movl	8(%esi),%ecx
2311	movl	12(%esi),%edx
2312	movl	%eax,(%edi)
2313	movl	%ebx,4(%edi)
2314	movl	%ecx,8(%edi)
2315	bswap	%eax
2316	movl	%edx,12(%edi)
2317	bswap	%ebx
2318	movl	36(%esp),%edi
2319	bswap	%ecx
2320	bswap	%edx
2321	call	_x86_Camellia_decrypt
2322	movl	40(%esp),%edi
2323	movl	28(%esp),%esi
2324	bswap	%eax
2325	bswap	%ebx
2326	bswap	%ecx
2327	xorl	(%edi),%eax
2328	bswap	%edx
2329	xorl	4(%edi),%ebx
2330	xorl	8(%edi),%ecx
2331	xorl	12(%edi),%edx
2332	movl	%eax,(%esi)
2333	movl	%ebx,4(%esi)
2334	movl	%ecx,8(%esi)
2335	movl	%edx,12(%esi)
2336	leal	16(%esi),%esi
2337	movl	%esi,28(%esp)
2338	leal	44(%esp),%esi
2339	movl	(%esi),%eax
2340	movl	4(%esi),%ebx
2341	movl	8(%esi),%ecx
2342	movl	12(%esi),%edx
2343	movl	%eax,(%edi)
2344	movl	%ebx,4(%edi)
2345	movl	%ecx,8(%edi)
2346	movl	%edx,12(%edi)
2347	movl	24(%esp),%esi
2348	leal	16(%esi),%esi
2349	movl	%esi,24(%esp)
2350	movl	32(%esp),%ecx
2351	subl	$16,%ecx
2352	jc	.L030dec_in_place_partial
2353	movl	%ecx,32(%esp)
2354	jnz	.L029dec_in_place_loop
2355	jmp	.L028dec_out
2356.align	4
2357.L030dec_in_place_partial:
2358	movl	28(%esp),%edi
2359	leal	44(%esp),%esi
2360	leal	(%edi,%ecx,1),%edi
2361	leal	16(%esi,%ecx,1),%esi
2362	negl	%ecx
2363.long	2767451785
2364.align	4
2365.L028dec_out:
2366	movl	20(%esp),%esp
2367	popfl
2368	popl	%edi
2369	popl	%esi
2370	popl	%ebx
2371	popl	%ebp
2372	ret
2373.size	Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
2374.byte	67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
2375.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2376.byte	115,108,46,111,114,103,62,0
2377#else
2378.text
2379.globl	Camellia_EncryptBlock_Rounds
2380.type	Camellia_EncryptBlock_Rounds,@function
2381.align	16
2382Camellia_EncryptBlock_Rounds:
2383.L_Camellia_EncryptBlock_Rounds_begin:
2384	pushl	%ebp
2385	pushl	%ebx
2386	pushl	%esi
2387	pushl	%edi
2388	movl	20(%esp),%eax
2389	movl	24(%esp),%esi
2390	movl	28(%esp),%edi
2391	movl	%esp,%ebx
2392	subl	$28,%esp
2393	andl	$-64,%esp
2394	leal	-127(%edi),%ecx
2395	subl	%esp,%ecx
2396	negl	%ecx
2397	andl	$960,%ecx
2398	subl	%ecx,%esp
2399	addl	$4,%esp
2400	shll	$6,%eax
2401	leal	(%edi,%eax,1),%eax
2402	movl	%ebx,20(%esp)
2403	movl	%eax,16(%esp)
2404	call	.L000pic_point
2405.L000pic_point:
2406	popl	%ebp
2407	leal	.LCamellia_SBOX-.L000pic_point(%ebp),%ebp
2408	movl	(%esi),%eax
2409	movl	4(%esi),%ebx
2410	movl	8(%esi),%ecx
2411	bswap	%eax
2412	movl	12(%esi),%edx
2413	bswap	%ebx
2414	bswap	%ecx
2415	bswap	%edx
2416	call	_x86_Camellia_encrypt
2417	movl	20(%esp),%esp
2418	bswap	%eax
2419	movl	32(%esp),%esi
2420	bswap	%ebx
2421	bswap	%ecx
2422	bswap	%edx
2423	movl	%eax,(%esi)
2424	movl	%ebx,4(%esi)
2425	movl	%ecx,8(%esi)
2426	movl	%edx,12(%esi)
2427	popl	%edi
2428	popl	%esi
2429	popl	%ebx
2430	popl	%ebp
2431	ret
2432.size	Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
2433.globl	Camellia_EncryptBlock
2434.type	Camellia_EncryptBlock,@function
2435.align	16
2436Camellia_EncryptBlock:
2437.L_Camellia_EncryptBlock_begin:
2438	movl	$128,%eax
2439	subl	4(%esp),%eax
2440	movl	$3,%eax
2441	adcl	$0,%eax
2442	movl	%eax,4(%esp)
2443	jmp	.L_Camellia_EncryptBlock_Rounds_begin
2444.size	Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
2445.globl	Camellia_encrypt
2446.type	Camellia_encrypt,@function
2447.align	16
2448Camellia_encrypt:
2449.L_Camellia_encrypt_begin:
2450	pushl	%ebp
2451	pushl	%ebx
2452	pushl	%esi
2453	pushl	%edi
2454	movl	20(%esp),%esi
2455	movl	28(%esp),%edi
2456	movl	%esp,%ebx
2457	subl	$28,%esp
2458	andl	$-64,%esp
2459	movl	272(%edi),%eax
2460	leal	-127(%edi),%ecx
2461	subl	%esp,%ecx
2462	negl	%ecx
2463	andl	$960,%ecx
2464	subl	%ecx,%esp
2465	addl	$4,%esp
2466	shll	$6,%eax
2467	leal	(%edi,%eax,1),%eax
2468	movl	%ebx,20(%esp)
2469	movl	%eax,16(%esp)
2470	call	.L001pic_point
2471.L001pic_point:
2472	popl	%ebp
2473	leal	.LCamellia_SBOX-.L001pic_point(%ebp),%ebp
2474	movl	(%esi),%eax
2475	movl	4(%esi),%ebx
2476	movl	8(%esi),%ecx
2477	bswap	%eax
2478	movl	12(%esi),%edx
2479	bswap	%ebx
2480	bswap	%ecx
2481	bswap	%edx
2482	call	_x86_Camellia_encrypt
2483	movl	20(%esp),%esp
2484	bswap	%eax
2485	movl	24(%esp),%esi
2486	bswap	%ebx
2487	bswap	%ecx
2488	bswap	%edx
2489	movl	%eax,(%esi)
2490	movl	%ebx,4(%esi)
2491	movl	%ecx,8(%esi)
2492	movl	%edx,12(%esi)
2493	popl	%edi
2494	popl	%esi
2495	popl	%ebx
2496	popl	%ebp
2497	ret
2498.size	Camellia_encrypt,.-.L_Camellia_encrypt_begin
2499.type	_x86_Camellia_encrypt,@function
2500.align	16
2501_x86_Camellia_encrypt:
2502	xorl	(%edi),%eax
2503	xorl	4(%edi),%ebx
2504	xorl	8(%edi),%ecx
2505	xorl	12(%edi),%edx
2506	movl	16(%edi),%esi
2507	movl	%eax,4(%esp)
2508	movl	%ebx,8(%esp)
2509	movl	%ecx,12(%esp)
2510	movl	%edx,16(%esp)
2511.align	16
2512.L002loop:
2513	xorl	%esi,%eax
2514	xorl	20(%edi),%ebx
2515	movzbl	%ah,%esi
2516	movl	2052(%ebp,%esi,8),%edx
2517	movzbl	%al,%esi
2518	xorl	4(%ebp,%esi,8),%edx
2519	shrl	$16,%eax
2520	movzbl	%bl,%esi
2521	movl	(%ebp,%esi,8),%ecx
2522	movzbl	%ah,%esi
2523	xorl	(%ebp,%esi,8),%edx
2524	movzbl	%bh,%esi
2525	xorl	4(%ebp,%esi,8),%ecx
2526	shrl	$16,%ebx
2527	movzbl	%al,%eax
2528	xorl	2048(%ebp,%eax,8),%edx
2529	movzbl	%bh,%esi
2530	movl	16(%esp),%eax
2531	xorl	%edx,%ecx
2532	rorl	$8,%edx
2533	xorl	2048(%ebp,%esi,8),%ecx
2534	movzbl	%bl,%esi
2535	movl	12(%esp),%ebx
2536	xorl	%eax,%edx
2537	xorl	2052(%ebp,%esi,8),%ecx
2538	movl	24(%edi),%esi
2539	xorl	%ecx,%edx
2540	movl	%edx,16(%esp)
2541	xorl	%ebx,%ecx
2542	movl	%ecx,12(%esp)
2543	xorl	%esi,%ecx
2544	xorl	28(%edi),%edx
2545	movzbl	%ch,%esi
2546	movl	2052(%ebp,%esi,8),%ebx
2547	movzbl	%cl,%esi
2548	xorl	4(%ebp,%esi,8),%ebx
2549	shrl	$16,%ecx
2550	movzbl	%dl,%esi
2551	movl	(%ebp,%esi,8),%eax
2552	movzbl	%ch,%esi
2553	xorl	(%ebp,%esi,8),%ebx
2554	movzbl	%dh,%esi
2555	xorl	4(%ebp,%esi,8),%eax
2556	shrl	$16,%edx
2557	movzbl	%cl,%ecx
2558	xorl	2048(%ebp,%ecx,8),%ebx
2559	movzbl	%dh,%esi
2560	movl	8(%esp),%ecx
2561	xorl	%ebx,%eax
2562	rorl	$8,%ebx
2563	xorl	2048(%ebp,%esi,8),%eax
2564	movzbl	%dl,%esi
2565	movl	4(%esp),%edx
2566	xorl	%ecx,%ebx
2567	xorl	2052(%ebp,%esi,8),%eax
2568	movl	32(%edi),%esi
2569	xorl	%eax,%ebx
2570	movl	%ebx,8(%esp)
2571	xorl	%edx,%eax
2572	movl	%eax,4(%esp)
2573	xorl	%esi,%eax
2574	xorl	36(%edi),%ebx
2575	movzbl	%ah,%esi
2576	movl	2052(%ebp,%esi,8),%edx
2577	movzbl	%al,%esi
2578	xorl	4(%ebp,%esi,8),%edx
2579	shrl	$16,%eax
2580	movzbl	%bl,%esi
2581	movl	(%ebp,%esi,8),%ecx
2582	movzbl	%ah,%esi
2583	xorl	(%ebp,%esi,8),%edx
2584	movzbl	%bh,%esi
2585	xorl	4(%ebp,%esi,8),%ecx
2586	shrl	$16,%ebx
2587	movzbl	%al,%eax
2588	xorl	2048(%ebp,%eax,8),%edx
2589	movzbl	%bh,%esi
2590	movl	16(%esp),%eax
2591	xorl	%edx,%ecx
2592	rorl	$8,%edx
2593	xorl	2048(%ebp,%esi,8),%ecx
2594	movzbl	%bl,%esi
2595	movl	12(%esp),%ebx
2596	xorl	%eax,%edx
2597	xorl	2052(%ebp,%esi,8),%ecx
2598	movl	40(%edi),%esi
2599	xorl	%ecx,%edx
2600	movl	%edx,16(%esp)
2601	xorl	%ebx,%ecx
2602	movl	%ecx,12(%esp)
2603	xorl	%esi,%ecx
2604	xorl	44(%edi),%edx
2605	movzbl	%ch,%esi
2606	movl	2052(%ebp,%esi,8),%ebx
2607	movzbl	%cl,%esi
2608	xorl	4(%ebp,%esi,8),%ebx
2609	shrl	$16,%ecx
2610	movzbl	%dl,%esi
2611	movl	(%ebp,%esi,8),%eax
2612	movzbl	%ch,%esi
2613	xorl	(%ebp,%esi,8),%ebx
2614	movzbl	%dh,%esi
2615	xorl	4(%ebp,%esi,8),%eax
2616	shrl	$16,%edx
2617	movzbl	%cl,%ecx
2618	xorl	2048(%ebp,%ecx,8),%ebx
2619	movzbl	%dh,%esi
2620	movl	8(%esp),%ecx
2621	xorl	%ebx,%eax
2622	rorl	$8,%ebx
2623	xorl	2048(%ebp,%esi,8),%eax
2624	movzbl	%dl,%esi
2625	movl	4(%esp),%edx
2626	xorl	%ecx,%ebx
2627	xorl	2052(%ebp,%esi,8),%eax
2628	movl	48(%edi),%esi
2629	xorl	%eax,%ebx
2630	movl	%ebx,8(%esp)
2631	xorl	%edx,%eax
2632	movl	%eax,4(%esp)
2633	xorl	%esi,%eax
2634	xorl	52(%edi),%ebx
2635	movzbl	%ah,%esi
2636	movl	2052(%ebp,%esi,8),%edx
2637	movzbl	%al,%esi
2638	xorl	4(%ebp,%esi,8),%edx
2639	shrl	$16,%eax
2640	movzbl	%bl,%esi
2641	movl	(%ebp,%esi,8),%ecx
2642	movzbl	%ah,%esi
2643	xorl	(%ebp,%esi,8),%edx
2644	movzbl	%bh,%esi
2645	xorl	4(%ebp,%esi,8),%ecx
2646	shrl	$16,%ebx
2647	movzbl	%al,%eax
2648	xorl	2048(%ebp,%eax,8),%edx
2649	movzbl	%bh,%esi
2650	movl	16(%esp),%eax
2651	xorl	%edx,%ecx
2652	rorl	$8,%edx
2653	xorl	2048(%ebp,%esi,8),%ecx
2654	movzbl	%bl,%esi
2655	movl	12(%esp),%ebx
2656	xorl	%eax,%edx
2657	xorl	2052(%ebp,%esi,8),%ecx
2658	movl	56(%edi),%esi
2659	xorl	%ecx,%edx
2660	movl	%edx,16(%esp)
2661	xorl	%ebx,%ecx
2662	movl	%ecx,12(%esp)
2663	xorl	%esi,%ecx
2664	xorl	60(%edi),%edx
2665	movzbl	%ch,%esi
2666	movl	2052(%ebp,%esi,8),%ebx
2667	movzbl	%cl,%esi
2668	xorl	4(%ebp,%esi,8),%ebx
2669	shrl	$16,%ecx
2670	movzbl	%dl,%esi
2671	movl	(%ebp,%esi,8),%eax
2672	movzbl	%ch,%esi
2673	xorl	(%ebp,%esi,8),%ebx
2674	movzbl	%dh,%esi
2675	xorl	4(%ebp,%esi,8),%eax
2676	shrl	$16,%edx
2677	movzbl	%cl,%ecx
2678	xorl	2048(%ebp,%ecx,8),%ebx
2679	movzbl	%dh,%esi
2680	movl	8(%esp),%ecx
2681	xorl	%ebx,%eax
2682	rorl	$8,%ebx
2683	xorl	2048(%ebp,%esi,8),%eax
2684	movzbl	%dl,%esi
2685	movl	4(%esp),%edx
2686	xorl	%ecx,%ebx
2687	xorl	2052(%ebp,%esi,8),%eax
2688	movl	64(%edi),%esi
2689	xorl	%eax,%ebx
2690	movl	%ebx,8(%esp)
2691	xorl	%edx,%eax
2692	movl	%eax,4(%esp)
2693	addl	$64,%edi
2694	cmpl	20(%esp),%edi
2695	je	.L003done
2696	andl	%eax,%esi
2697	movl	16(%esp),%edx
2698	roll	$1,%esi
2699	movl	%edx,%ecx
2700	xorl	%esi,%ebx
2701	orl	12(%edi),%ecx
2702	movl	%ebx,8(%esp)
2703	xorl	12(%esp),%ecx
2704	movl	4(%edi),%esi
2705	movl	%ecx,12(%esp)
2706	orl	%ebx,%esi
2707	andl	8(%edi),%ecx
2708	xorl	%esi,%eax
2709	roll	$1,%ecx
2710	movl	%eax,4(%esp)
2711	xorl	%ecx,%edx
2712	movl	16(%edi),%esi
2713	movl	%edx,16(%esp)
2714	jmp	.L002loop
2715.align	8
2716.L003done:
2717	movl	%eax,%ecx
2718	movl	%ebx,%edx
2719	movl	12(%esp),%eax
2720	movl	16(%esp),%ebx
2721	xorl	%esi,%eax
2722	xorl	4(%edi),%ebx
2723	xorl	8(%edi),%ecx
2724	xorl	12(%edi),%edx
2725	ret
2726.size	_x86_Camellia_encrypt,.-_x86_Camellia_encrypt
2727.globl	Camellia_DecryptBlock_Rounds
2728.type	Camellia_DecryptBlock_Rounds,@function
2729.align	16
2730Camellia_DecryptBlock_Rounds:
2731.L_Camellia_DecryptBlock_Rounds_begin:
2732	pushl	%ebp
2733	pushl	%ebx
2734	pushl	%esi
2735	pushl	%edi
2736	movl	20(%esp),%eax
2737	movl	24(%esp),%esi
2738	movl	28(%esp),%edi
2739	movl	%esp,%ebx
2740	subl	$28,%esp
2741	andl	$-64,%esp
2742	leal	-127(%edi),%ecx
2743	subl	%esp,%ecx
2744	negl	%ecx
2745	andl	$960,%ecx
2746	subl	%ecx,%esp
2747	addl	$4,%esp
2748	shll	$6,%eax
2749	movl	%edi,16(%esp)
2750	leal	(%edi,%eax,1),%edi
2751	movl	%ebx,20(%esp)
2752	call	.L004pic_point
2753.L004pic_point:
2754	popl	%ebp
2755	leal	.LCamellia_SBOX-.L004pic_point(%ebp),%ebp
2756	movl	(%esi),%eax
2757	movl	4(%esi),%ebx
2758	movl	8(%esi),%ecx
2759	bswap	%eax
2760	movl	12(%esi),%edx
2761	bswap	%ebx
2762	bswap	%ecx
2763	bswap	%edx
2764	call	_x86_Camellia_decrypt
2765	movl	20(%esp),%esp
2766	bswap	%eax
2767	movl	32(%esp),%esi
2768	bswap	%ebx
2769	bswap	%ecx
2770	bswap	%edx
2771	movl	%eax,(%esi)
2772	movl	%ebx,4(%esi)
2773	movl	%ecx,8(%esi)
2774	movl	%edx,12(%esi)
2775	popl	%edi
2776	popl	%esi
2777	popl	%ebx
2778	popl	%ebp
2779	ret
2780.size	Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
2781.globl	Camellia_DecryptBlock
2782.type	Camellia_DecryptBlock,@function
2783.align	16
2784Camellia_DecryptBlock:
2785.L_Camellia_DecryptBlock_begin:
2786	movl	$128,%eax
2787	subl	4(%esp),%eax
2788	movl	$3,%eax
2789	adcl	$0,%eax
2790	movl	%eax,4(%esp)
2791	jmp	.L_Camellia_DecryptBlock_Rounds_begin
2792.size	Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
2793.globl	Camellia_decrypt
2794.type	Camellia_decrypt,@function
2795.align	16
2796Camellia_decrypt:
2797.L_Camellia_decrypt_begin:
2798	pushl	%ebp
2799	pushl	%ebx
2800	pushl	%esi
2801	pushl	%edi
2802	movl	20(%esp),%esi
2803	movl	28(%esp),%edi
2804	movl	%esp,%ebx
2805	subl	$28,%esp
2806	andl	$-64,%esp
2807	movl	272(%edi),%eax
2808	leal	-127(%edi),%ecx
2809	subl	%esp,%ecx
2810	negl	%ecx
2811	andl	$960,%ecx
2812	subl	%ecx,%esp
2813	addl	$4,%esp
2814	shll	$6,%eax
2815	movl	%edi,16(%esp)
2816	leal	(%edi,%eax,1),%edi
2817	movl	%ebx,20(%esp)
2818	call	.L005pic_point
2819.L005pic_point:
2820	popl	%ebp
2821	leal	.LCamellia_SBOX-.L005pic_point(%ebp),%ebp
2822	movl	(%esi),%eax
2823	movl	4(%esi),%ebx
2824	movl	8(%esi),%ecx
2825	bswap	%eax
2826	movl	12(%esi),%edx
2827	bswap	%ebx
2828	bswap	%ecx
2829	bswap	%edx
2830	call	_x86_Camellia_decrypt
2831	movl	20(%esp),%esp
2832	bswap	%eax
2833	movl	24(%esp),%esi
2834	bswap	%ebx
2835	bswap	%ecx
2836	bswap	%edx
2837	movl	%eax,(%esi)
2838	movl	%ebx,4(%esi)
2839	movl	%ecx,8(%esi)
2840	movl	%edx,12(%esi)
2841	popl	%edi
2842	popl	%esi
2843	popl	%ebx
2844	popl	%ebp
2845	ret
2846.size	Camellia_decrypt,.-.L_Camellia_decrypt_begin
2847.type	_x86_Camellia_decrypt,@function
2848.align	16
2849_x86_Camellia_decrypt:
2850	xorl	(%edi),%eax
2851	xorl	4(%edi),%ebx
2852	xorl	8(%edi),%ecx
2853	xorl	12(%edi),%edx
2854	movl	-8(%edi),%esi
2855	movl	%eax,4(%esp)
2856	movl	%ebx,8(%esp)
2857	movl	%ecx,12(%esp)
2858	movl	%edx,16(%esp)
2859.align	16
2860.L006loop:
2861	xorl	%esi,%eax
2862	xorl	-4(%edi),%ebx
2863	movzbl	%ah,%esi
2864	movl	2052(%ebp,%esi,8),%edx
2865	movzbl	%al,%esi
2866	xorl	4(%ebp,%esi,8),%edx
2867	shrl	$16,%eax
2868	movzbl	%bl,%esi
2869	movl	(%ebp,%esi,8),%ecx
2870	movzbl	%ah,%esi
2871	xorl	(%ebp,%esi,8),%edx
2872	movzbl	%bh,%esi
2873	xorl	4(%ebp,%esi,8),%ecx
2874	shrl	$16,%ebx
2875	movzbl	%al,%eax
2876	xorl	2048(%ebp,%eax,8),%edx
2877	movzbl	%bh,%esi
2878	movl	16(%esp),%eax
2879	xorl	%edx,%ecx
2880	rorl	$8,%edx
2881	xorl	2048(%ebp,%esi,8),%ecx
2882	movzbl	%bl,%esi
2883	movl	12(%esp),%ebx
2884	xorl	%eax,%edx
2885	xorl	2052(%ebp,%esi,8),%ecx
2886	movl	-16(%edi),%esi
2887	xorl	%ecx,%edx
2888	movl	%edx,16(%esp)
2889	xorl	%ebx,%ecx
2890	movl	%ecx,12(%esp)
2891	xorl	%esi,%ecx
2892	xorl	-12(%edi),%edx
2893	movzbl	%ch,%esi
2894	movl	2052(%ebp,%esi,8),%ebx
2895	movzbl	%cl,%esi
2896	xorl	4(%ebp,%esi,8),%ebx
2897	shrl	$16,%ecx
2898	movzbl	%dl,%esi
2899	movl	(%ebp,%esi,8),%eax
2900	movzbl	%ch,%esi
2901	xorl	(%ebp,%esi,8),%ebx
2902	movzbl	%dh,%esi
2903	xorl	4(%ebp,%esi,8),%eax
2904	shrl	$16,%edx
2905	movzbl	%cl,%ecx
2906	xorl	2048(%ebp,%ecx,8),%ebx
2907	movzbl	%dh,%esi
2908	movl	8(%esp),%ecx
2909	xorl	%ebx,%eax
2910	rorl	$8,%ebx
2911	xorl	2048(%ebp,%esi,8),%eax
2912	movzbl	%dl,%esi
2913	movl	4(%esp),%edx
2914	xorl	%ecx,%ebx
2915	xorl	2052(%ebp,%esi,8),%eax
2916	movl	-24(%edi),%esi
2917	xorl	%eax,%ebx
2918	movl	%ebx,8(%esp)
2919	xorl	%edx,%eax
2920	movl	%eax,4(%esp)
2921	xorl	%esi,%eax
2922	xorl	-20(%edi),%ebx
2923	movzbl	%ah,%esi
2924	movl	2052(%ebp,%esi,8),%edx
2925	movzbl	%al,%esi
2926	xorl	4(%ebp,%esi,8),%edx
2927	shrl	$16,%eax
2928	movzbl	%bl,%esi
2929	movl	(%ebp,%esi,8),%ecx
2930	movzbl	%ah,%esi
2931	xorl	(%ebp,%esi,8),%edx
2932	movzbl	%bh,%esi
2933	xorl	4(%ebp,%esi,8),%ecx
2934	shrl	$16,%ebx
2935	movzbl	%al,%eax
2936	xorl	2048(%ebp,%eax,8),%edx
2937	movzbl	%bh,%esi
2938	movl	16(%esp),%eax
2939	xorl	%edx,%ecx
2940	rorl	$8,%edx
2941	xorl	2048(%ebp,%esi,8),%ecx
2942	movzbl	%bl,%esi
2943	movl	12(%esp),%ebx
2944	xorl	%eax,%edx
2945	xorl	2052(%ebp,%esi,8),%ecx
2946	movl	-32(%edi),%esi
2947	xorl	%ecx,%edx
2948	movl	%edx,16(%esp)
2949	xorl	%ebx,%ecx
2950	movl	%ecx,12(%esp)
2951	xorl	%esi,%ecx
2952	xorl	-28(%edi),%edx
2953	movzbl	%ch,%esi
2954	movl	2052(%ebp,%esi,8),%ebx
2955	movzbl	%cl,%esi
2956	xorl	4(%ebp,%esi,8),%ebx
2957	shrl	$16,%ecx
2958	movzbl	%dl,%esi
2959	movl	(%ebp,%esi,8),%eax
2960	movzbl	%ch,%esi
2961	xorl	(%ebp,%esi,8),%ebx
2962	movzbl	%dh,%esi
2963	xorl	4(%ebp,%esi,8),%eax
2964	shrl	$16,%edx
2965	movzbl	%cl,%ecx
2966	xorl	2048(%ebp,%ecx,8),%ebx
2967	movzbl	%dh,%esi
2968	movl	8(%esp),%ecx
2969	xorl	%ebx,%eax
2970	rorl	$8,%ebx
2971	xorl	2048(%ebp,%esi,8),%eax
2972	movzbl	%dl,%esi
2973	movl	4(%esp),%edx
2974	xorl	%ecx,%ebx
2975	xorl	2052(%ebp,%esi,8),%eax
2976	movl	-40(%edi),%esi
2977	xorl	%eax,%ebx
2978	movl	%ebx,8(%esp)
2979	xorl	%edx,%eax
2980	movl	%eax,4(%esp)
2981	xorl	%esi,%eax
2982	xorl	-36(%edi),%ebx
2983	movzbl	%ah,%esi
2984	movl	2052(%ebp,%esi,8),%edx
2985	movzbl	%al,%esi
2986	xorl	4(%ebp,%esi,8),%edx
2987	shrl	$16,%eax
2988	movzbl	%bl,%esi
2989	movl	(%ebp,%esi,8),%ecx
2990	movzbl	%ah,%esi
2991	xorl	(%ebp,%esi,8),%edx
2992	movzbl	%bh,%esi
2993	xorl	4(%ebp,%esi,8),%ecx
2994	shrl	$16,%ebx
2995	movzbl	%al,%eax
2996	xorl	2048(%ebp,%eax,8),%edx
2997	movzbl	%bh,%esi
2998	movl	16(%esp),%eax
2999	xorl	%edx,%ecx
3000	rorl	$8,%edx
3001	xorl	2048(%ebp,%esi,8),%ecx
3002	movzbl	%bl,%esi
3003	movl	12(%esp),%ebx
3004	xorl	%eax,%edx
3005	xorl	2052(%ebp,%esi,8),%ecx
3006	movl	-48(%edi),%esi
3007	xorl	%ecx,%edx
3008	movl	%edx,16(%esp)
3009	xorl	%ebx,%ecx
3010	movl	%ecx,12(%esp)
3011	xorl	%esi,%ecx
3012	xorl	-44(%edi),%edx
3013	movzbl	%ch,%esi
3014	movl	2052(%ebp,%esi,8),%ebx
3015	movzbl	%cl,%esi
3016	xorl	4(%ebp,%esi,8),%ebx
3017	shrl	$16,%ecx
3018	movzbl	%dl,%esi
3019	movl	(%ebp,%esi,8),%eax
3020	movzbl	%ch,%esi
3021	xorl	(%ebp,%esi,8),%ebx
3022	movzbl	%dh,%esi
3023	xorl	4(%ebp,%esi,8),%eax
3024	shrl	$16,%edx
3025	movzbl	%cl,%ecx
3026	xorl	2048(%ebp,%ecx,8),%ebx
3027	movzbl	%dh,%esi
3028	movl	8(%esp),%ecx
3029	xorl	%ebx,%eax
3030	rorl	$8,%ebx
3031	xorl	2048(%ebp,%esi,8),%eax
3032	movzbl	%dl,%esi
3033	movl	4(%esp),%edx
3034	xorl	%ecx,%ebx
3035	xorl	2052(%ebp,%esi,8),%eax
3036	movl	-56(%edi),%esi
3037	xorl	%eax,%ebx
3038	movl	%ebx,8(%esp)
3039	xorl	%edx,%eax
3040	movl	%eax,4(%esp)
3041	subl	$64,%edi
3042	cmpl	20(%esp),%edi
3043	je	.L007done
3044	andl	%eax,%esi
3045	movl	16(%esp),%edx
3046	roll	$1,%esi
3047	movl	%edx,%ecx
3048	xorl	%esi,%ebx
3049	orl	4(%edi),%ecx
3050	movl	%ebx,8(%esp)
3051	xorl	12(%esp),%ecx
3052	movl	12(%edi),%esi
3053	movl	%ecx,12(%esp)
3054	orl	%ebx,%esi
3055	andl	(%edi),%ecx
3056	xorl	%esi,%eax
3057	roll	$1,%ecx
3058	movl	%eax,4(%esp)
3059	xorl	%ecx,%edx
3060	movl	-8(%edi),%esi
3061	movl	%edx,16(%esp)
3062	jmp	.L006loop
3063.align	8
3064.L007done:
3065	movl	%eax,%ecx
3066	movl	%ebx,%edx
3067	movl	12(%esp),%eax
3068	movl	16(%esp),%ebx
3069	xorl	%esi,%ecx
3070	xorl	12(%edi),%edx
3071	xorl	(%edi),%eax
3072	xorl	4(%edi),%ebx
3073	ret
3074.size	_x86_Camellia_decrypt,.-_x86_Camellia_decrypt
3075.globl	Camellia_Ekeygen
3076.type	Camellia_Ekeygen,@function
3077.align	16
3078Camellia_Ekeygen:
3079.L_Camellia_Ekeygen_begin:
3080	pushl	%ebp
3081	pushl	%ebx
3082	pushl	%esi
3083	pushl	%edi
3084	subl	$16,%esp
3085	movl	36(%esp),%ebp
3086	movl	40(%esp),%esi
3087	movl	44(%esp),%edi
3088	movl	(%esi),%eax
3089	movl	4(%esi),%ebx
3090	movl	8(%esi),%ecx
3091	movl	12(%esi),%edx
3092	bswap	%eax
3093	bswap	%ebx
3094	bswap	%ecx
3095	bswap	%edx
3096	movl	%eax,(%edi)
3097	movl	%ebx,4(%edi)
3098	movl	%ecx,8(%edi)
3099	movl	%edx,12(%edi)
3100	cmpl	$128,%ebp
3101	je	.L0081st128
3102	movl	16(%esi),%eax
3103	movl	20(%esi),%ebx
3104	cmpl	$192,%ebp
3105	je	.L0091st192
3106	movl	24(%esi),%ecx
3107	movl	28(%esi),%edx
3108	jmp	.L0101st256
3109.align	4
3110.L0091st192:
3111	movl	%eax,%ecx
3112	movl	%ebx,%edx
3113	notl	%ecx
3114	notl	%edx
3115.align	4
3116.L0101st256:
3117	bswap	%eax
3118	bswap	%ebx
3119	bswap	%ecx
3120	bswap	%edx
3121	movl	%eax,32(%edi)
3122	movl	%ebx,36(%edi)
3123	movl	%ecx,40(%edi)
3124	movl	%edx,44(%edi)
3125	xorl	(%edi),%eax
3126	xorl	4(%edi),%ebx
3127	xorl	8(%edi),%ecx
3128	xorl	12(%edi),%edx
3129.align	4
3130.L0081st128:
3131	call	.L011pic_point
3132.L011pic_point:
3133	popl	%ebp
3134	leal	.LCamellia_SBOX-.L011pic_point(%ebp),%ebp
3135	leal	.LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
3136	movl	(%edi),%esi
3137	movl	%eax,(%esp)
3138	movl	%ebx,4(%esp)
3139	movl	%ecx,8(%esp)
3140	movl	%edx,12(%esp)
3141	xorl	%esi,%eax
3142	xorl	4(%edi),%ebx
3143	movzbl	%ah,%esi
3144	movl	2052(%ebp,%esi,8),%edx
3145	movzbl	%al,%esi
3146	xorl	4(%ebp,%esi,8),%edx
3147	shrl	$16,%eax
3148	movzbl	%bl,%esi
3149	movl	(%ebp,%esi,8),%ecx
3150	movzbl	%ah,%esi
3151	xorl	(%ebp,%esi,8),%edx
3152	movzbl	%bh,%esi
3153	xorl	4(%ebp,%esi,8),%ecx
3154	shrl	$16,%ebx
3155	movzbl	%al,%eax
3156	xorl	2048(%ebp,%eax,8),%edx
3157	movzbl	%bh,%esi
3158	movl	12(%esp),%eax
3159	xorl	%edx,%ecx
3160	rorl	$8,%edx
3161	xorl	2048(%ebp,%esi,8),%ecx
3162	movzbl	%bl,%esi
3163	movl	8(%esp),%ebx
3164	xorl	%eax,%edx
3165	xorl	2052(%ebp,%esi,8),%ecx
3166	movl	8(%edi),%esi
3167	xorl	%ecx,%edx
3168	movl	%edx,12(%esp)
3169	xorl	%ebx,%ecx
3170	movl	%ecx,8(%esp)
3171	xorl	%esi,%ecx
3172	xorl	12(%edi),%edx
3173	movzbl	%ch,%esi
3174	movl	2052(%ebp,%esi,8),%ebx
3175	movzbl	%cl,%esi
3176	xorl	4(%ebp,%esi,8),%ebx
3177	shrl	$16,%ecx
3178	movzbl	%dl,%esi
3179	movl	(%ebp,%esi,8),%eax
3180	movzbl	%ch,%esi
3181	xorl	(%ebp,%esi,8),%ebx
3182	movzbl	%dh,%esi
3183	xorl	4(%ebp,%esi,8),%eax
3184	shrl	$16,%edx
3185	movzbl	%cl,%ecx
3186	xorl	2048(%ebp,%ecx,8),%ebx
3187	movzbl	%dh,%esi
3188	movl	4(%esp),%ecx
3189	xorl	%ebx,%eax
3190	rorl	$8,%ebx
3191	xorl	2048(%ebp,%esi,8),%eax
3192	movzbl	%dl,%esi
3193	movl	(%esp),%edx
3194	xorl	%ecx,%ebx
3195	xorl	2052(%ebp,%esi,8),%eax
3196	movl	16(%edi),%esi
3197	xorl	%eax,%ebx
3198	movl	%ebx,4(%esp)
3199	xorl	%edx,%eax
3200	movl	%eax,(%esp)
3201	movl	8(%esp),%ecx
3202	movl	12(%esp),%edx
3203	movl	44(%esp),%esi
3204	xorl	(%esi),%eax
3205	xorl	4(%esi),%ebx
3206	xorl	8(%esi),%ecx
3207	xorl	12(%esi),%edx
3208	movl	16(%edi),%esi
3209	movl	%eax,(%esp)
3210	movl	%ebx,4(%esp)
3211	movl	%ecx,8(%esp)
3212	movl	%edx,12(%esp)
3213	xorl	%esi,%eax
3214	xorl	20(%edi),%ebx
3215	movzbl	%ah,%esi
3216	movl	2052(%ebp,%esi,8),%edx
3217	movzbl	%al,%esi
3218	xorl	4(%ebp,%esi,8),%edx
3219	shrl	$16,%eax
3220	movzbl	%bl,%esi
3221	movl	(%ebp,%esi,8),%ecx
3222	movzbl	%ah,%esi
3223	xorl	(%ebp,%esi,8),%edx
3224	movzbl	%bh,%esi
3225	xorl	4(%ebp,%esi,8),%ecx
3226	shrl	$16,%ebx
3227	movzbl	%al,%eax
3228	xorl	2048(%ebp,%eax,8),%edx
3229	movzbl	%bh,%esi
3230	movl	12(%esp),%eax
3231	xorl	%edx,%ecx
3232	rorl	$8,%edx
3233	xorl	2048(%ebp,%esi,8),%ecx
3234	movzbl	%bl,%esi
3235	movl	8(%esp),%ebx
3236	xorl	%eax,%edx
3237	xorl	2052(%ebp,%esi,8),%ecx
3238	movl	24(%edi),%esi
3239	xorl	%ecx,%edx
3240	movl	%edx,12(%esp)
3241	xorl	%ebx,%ecx
3242	movl	%ecx,8(%esp)
3243	xorl	%esi,%ecx
3244	xorl	28(%edi),%edx
3245	movzbl	%ch,%esi
3246	movl	2052(%ebp,%esi,8),%ebx
3247	movzbl	%cl,%esi
3248	xorl	4(%ebp,%esi,8),%ebx
3249	shrl	$16,%ecx
3250	movzbl	%dl,%esi
3251	movl	(%ebp,%esi,8),%eax
3252	movzbl	%ch,%esi
3253	xorl	(%ebp,%esi,8),%ebx
3254	movzbl	%dh,%esi
3255	xorl	4(%ebp,%esi,8),%eax
3256	shrl	$16,%edx
3257	movzbl	%cl,%ecx
3258	xorl	2048(%ebp,%ecx,8),%ebx
3259	movzbl	%dh,%esi
3260	movl	4(%esp),%ecx
3261	xorl	%ebx,%eax
3262	rorl	$8,%ebx
3263	xorl	2048(%ebp,%esi,8),%eax
3264	movzbl	%dl,%esi
3265	movl	(%esp),%edx
3266	xorl	%ecx,%ebx
3267	xorl	2052(%ebp,%esi,8),%eax
3268	movl	32(%edi),%esi
3269	xorl	%eax,%ebx
3270	movl	%ebx,4(%esp)
3271	xorl	%edx,%eax
3272	movl	%eax,(%esp)
3273	movl	8(%esp),%ecx
3274	movl	12(%esp),%edx
3275	movl	36(%esp),%esi
3276	cmpl	$128,%esi
3277	jne	.L0122nd256
3278	movl	44(%esp),%edi
3279	leal	128(%edi),%edi
3280	movl	%eax,-112(%edi)
3281	movl	%ebx,-108(%edi)
3282	movl	%ecx,-104(%edi)
3283	movl	%edx,-100(%edi)
3284	movl	%eax,%ebp
3285	shll	$15,%eax
3286	movl	%ebx,%esi
3287	shrl	$17,%esi
3288	shll	$15,%ebx
3289	orl	%esi,%eax
3290	movl	%ecx,%esi
3291	shll	$15,%ecx
3292	movl	%eax,-80(%edi)
3293	shrl	$17,%esi
3294	orl	%esi,%ebx
3295	shrl	$17,%ebp
3296	movl	%edx,%esi
3297	shrl	$17,%esi
3298	movl	%ebx,-76(%edi)
3299	shll	$15,%edx
3300	orl	%esi,%ecx
3301	orl	%ebp,%edx
3302	movl	%ecx,-72(%edi)
3303	movl	%edx,-68(%edi)
3304	movl	%eax,%ebp
3305	shll	$15,%eax
3306	movl	%ebx,%esi
3307	shrl	$17,%esi
3308	shll	$15,%ebx
3309	orl	%esi,%eax
3310	movl	%ecx,%esi
3311	shll	$15,%ecx
3312	movl	%eax,-64(%edi)
3313	shrl	$17,%esi
3314	orl	%esi,%ebx
3315	shrl	$17,%ebp
3316	movl	%edx,%esi
3317	shrl	$17,%esi
3318	movl	%ebx,-60(%edi)
3319	shll	$15,%edx
3320	orl	%esi,%ecx
3321	orl	%ebp,%edx
3322	movl	%ecx,-56(%edi)
3323	movl	%edx,-52(%edi)
3324	movl	%eax,%ebp
3325	shll	$15,%eax
3326	movl	%ebx,%esi
3327	shrl	$17,%esi
3328	shll	$15,%ebx
3329	orl	%esi,%eax
3330	movl	%ecx,%esi
3331	shll	$15,%ecx
3332	movl	%eax,-32(%edi)
3333	shrl	$17,%esi
3334	orl	%esi,%ebx
3335	shrl	$17,%ebp
3336	movl	%edx,%esi
3337	shrl	$17,%esi
3338	movl	%ebx,-28(%edi)
3339	shll	$15,%edx
3340	orl	%esi,%ecx
3341	orl	%ebp,%edx
3342	movl	%eax,%ebp
3343	shll	$15,%eax
3344	movl	%ebx,%esi
3345	shrl	$17,%esi
3346	shll	$15,%ebx
3347	orl	%esi,%eax
3348	movl	%ecx,%esi
3349	shll	$15,%ecx
3350	movl	%eax,-16(%edi)
3351	shrl	$17,%esi
3352	orl	%esi,%ebx
3353	shrl	$17,%ebp
3354	movl	%edx,%esi
3355	shrl	$17,%esi
3356	movl	%ebx,-12(%edi)
3357	shll	$15,%edx
3358	orl	%esi,%ecx
3359	orl	%ebp,%edx
3360	movl	%ecx,-8(%edi)
3361	movl	%edx,-4(%edi)
3362	movl	%ebx,%ebp
3363	shll	$2,%ebx
3364	movl	%ecx,%esi
3365	shrl	$30,%esi
3366	shll	$2,%ecx
3367	orl	%esi,%ebx
3368	movl	%edx,%esi
3369	shll	$2,%edx
3370	movl	%ebx,32(%edi)
3371	shrl	$30,%esi
3372	orl	%esi,%ecx
3373	shrl	$30,%ebp
3374	movl	%eax,%esi
3375	shrl	$30,%esi
3376	movl	%ecx,36(%edi)
3377	shll	$2,%eax
3378	orl	%esi,%edx
3379	orl	%ebp,%eax
3380	movl	%edx,40(%edi)
3381	movl	%eax,44(%edi)
3382	movl	%ebx,%ebp
3383	shll	$17,%ebx
3384	movl	%ecx,%esi
3385	shrl	$15,%esi
3386	shll	$17,%ecx
3387	orl	%esi,%ebx
3388	movl	%edx,%esi
3389	shll	$17,%edx
3390	movl	%ebx,64(%edi)
3391	shrl	$15,%esi
3392	orl	%esi,%ecx
3393	shrl	$15,%ebp
3394	movl	%eax,%esi
3395	shrl	$15,%esi
3396	movl	%ecx,68(%edi)
3397	shll	$17,%eax
3398	orl	%esi,%edx
3399	orl	%ebp,%eax
3400	movl	%edx,72(%edi)
3401	movl	%eax,76(%edi)
3402	movl	-128(%edi),%ebx
3403	movl	-124(%edi),%ecx
3404	movl	-120(%edi),%edx
3405	movl	-116(%edi),%eax
3406	movl	%ebx,%ebp
3407	shll	$15,%ebx
3408	movl	%ecx,%esi
3409	shrl	$17,%esi
3410	shll	$15,%ecx
3411	orl	%esi,%ebx
3412	movl	%edx,%esi
3413	shll	$15,%edx
3414	movl	%ebx,-96(%edi)
3415	shrl	$17,%esi
3416	orl	%esi,%ecx
3417	shrl	$17,%ebp
3418	movl	%eax,%esi
3419	shrl	$17,%esi
3420	movl	%ecx,-92(%edi)
3421	shll	$15,%eax
3422	orl	%esi,%edx
3423	orl	%ebp,%eax
3424	movl	%edx,-88(%edi)
3425	movl	%eax,-84(%edi)
3426	movl	%ebx,%ebp
3427	shll	$30,%ebx
3428	movl	%ecx,%esi
3429	shrl	$2,%esi
3430	shll	$30,%ecx
3431	orl	%esi,%ebx
3432	movl	%edx,%esi
3433	shll	$30,%edx
3434	movl	%ebx,-48(%edi)
3435	shrl	$2,%esi
3436	orl	%esi,%ecx
3437	shrl	$2,%ebp
3438	movl	%eax,%esi
3439	shrl	$2,%esi
3440	movl	%ecx,-44(%edi)
3441	shll	$30,%eax
3442	orl	%esi,%edx
3443	orl	%ebp,%eax
3444	movl	%edx,-40(%edi)
3445	movl	%eax,-36(%edi)
3446	movl	%ebx,%ebp
3447	shll	$15,%ebx
3448	movl	%ecx,%esi
3449	shrl	$17,%esi
3450	shll	$15,%ecx
3451	orl	%esi,%ebx
3452	movl	%edx,%esi
3453	shll	$15,%edx
3454	shrl	$17,%esi
3455	orl	%esi,%ecx
3456	shrl	$17,%ebp
3457	movl	%eax,%esi
3458	shrl	$17,%esi
3459	shll	$15,%eax
3460	orl	%esi,%edx
3461	orl	%ebp,%eax
3462	movl	%edx,-24(%edi)
3463	movl	%eax,-20(%edi)
3464	movl	%ebx,%ebp
3465	shll	$17,%ebx
3466	movl	%ecx,%esi
3467	shrl	$15,%esi
3468	shll	$17,%ecx
3469	orl	%esi,%ebx
3470	movl	%edx,%esi
3471	shll	$17,%edx
3472	movl	%ebx,(%edi)
3473	shrl	$15,%esi
3474	orl	%esi,%ecx
3475	shrl	$15,%ebp
3476	movl	%eax,%esi
3477	shrl	$15,%esi
3478	movl	%ecx,4(%edi)
3479	shll	$17,%eax
3480	orl	%esi,%edx
3481	orl	%ebp,%eax
3482	movl	%edx,8(%edi)
3483	movl	%eax,12(%edi)
3484	movl	%ebx,%ebp
3485	shll	$17,%ebx
3486	movl	%ecx,%esi
3487	shrl	$15,%esi
3488	shll	$17,%ecx
3489	orl	%esi,%ebx
3490	movl	%edx,%esi
3491	shll	$17,%edx
3492	movl	%ebx,16(%edi)
3493	shrl	$15,%esi
3494	orl	%esi,%ecx
3495	shrl	$15,%ebp
3496	movl	%eax,%esi
3497	shrl	$15,%esi
3498	movl	%ecx,20(%edi)
3499	shll	$17,%eax
3500	orl	%esi,%edx
3501	orl	%ebp,%eax
3502	movl	%edx,24(%edi)
3503	movl	%eax,28(%edi)
3504	movl	%ebx,%ebp
3505	shll	$17,%ebx
3506	movl	%ecx,%esi
3507	shrl	$15,%esi
3508	shll	$17,%ecx
3509	orl	%esi,%ebx
3510	movl	%edx,%esi
3511	shll	$17,%edx
3512	movl	%ebx,48(%edi)
3513	shrl	$15,%esi
3514	orl	%esi,%ecx
3515	shrl	$15,%ebp
3516	movl	%eax,%esi
3517	shrl	$15,%esi
3518	movl	%ecx,52(%edi)
3519	shll	$17,%eax
3520	orl	%esi,%edx
3521	orl	%ebp,%eax
3522	movl	%edx,56(%edi)
3523	movl	%eax,60(%edi)
3524	movl	$3,%eax
3525	jmp	.L013done
3526.align	16
3527.L0122nd256:
3528	movl	44(%esp),%esi
3529	movl	%eax,48(%esi)
3530	movl	%ebx,52(%esi)
3531	movl	%ecx,56(%esi)
3532	movl	%edx,60(%esi)
3533	xorl	32(%esi),%eax
3534	xorl	36(%esi),%ebx
3535	xorl	40(%esi),%ecx
3536	xorl	44(%esi),%edx
3537	movl	32(%edi),%esi
3538	movl	%eax,(%esp)
3539	movl	%ebx,4(%esp)
3540	movl	%ecx,8(%esp)
3541	movl	%edx,12(%esp)
3542	xorl	%esi,%eax
3543	xorl	36(%edi),%ebx
3544	movzbl	%ah,%esi
3545	movl	2052(%ebp,%esi,8),%edx
3546	movzbl	%al,%esi
3547	xorl	4(%ebp,%esi,8),%edx
3548	shrl	$16,%eax
3549	movzbl	%bl,%esi
3550	movl	(%ebp,%esi,8),%ecx
3551	movzbl	%ah,%esi
3552	xorl	(%ebp,%esi,8),%edx
3553	movzbl	%bh,%esi
3554	xorl	4(%ebp,%esi,8),%ecx
3555	shrl	$16,%ebx
3556	movzbl	%al,%eax
3557	xorl	2048(%ebp,%eax,8),%edx
3558	movzbl	%bh,%esi
3559	movl	12(%esp),%eax
3560	xorl	%edx,%ecx
3561	rorl	$8,%edx
3562	xorl	2048(%ebp,%esi,8),%ecx
3563	movzbl	%bl,%esi
3564	movl	8(%esp),%ebx
3565	xorl	%eax,%edx
3566	xorl	2052(%ebp,%esi,8),%ecx
3567	movl	40(%edi),%esi
3568	xorl	%ecx,%edx
3569	movl	%edx,12(%esp)
3570	xorl	%ebx,%ecx
3571	movl	%ecx,8(%esp)
3572	xorl	%esi,%ecx
3573	xorl	44(%edi),%edx
3574	movzbl	%ch,%esi
3575	movl	2052(%ebp,%esi,8),%ebx
3576	movzbl	%cl,%esi
3577	xorl	4(%ebp,%esi,8),%ebx
3578	shrl	$16,%ecx
3579	movzbl	%dl,%esi
3580	movl	(%ebp,%esi,8),%eax
3581	movzbl	%ch,%esi
3582	xorl	(%ebp,%esi,8),%ebx
3583	movzbl	%dh,%esi
3584	xorl	4(%ebp,%esi,8),%eax
3585	shrl	$16,%edx
3586	movzbl	%cl,%ecx
3587	xorl	2048(%ebp,%ecx,8),%ebx
3588	movzbl	%dh,%esi
3589	movl	4(%esp),%ecx
3590	xorl	%ebx,%eax
3591	rorl	$8,%ebx
3592	xorl	2048(%ebp,%esi,8),%eax
3593	movzbl	%dl,%esi
3594	movl	(%esp),%edx
3595	xorl	%ecx,%ebx
3596	xorl	2052(%ebp,%esi,8),%eax
3597	movl	48(%edi),%esi
3598	xorl	%eax,%ebx
3599	movl	%ebx,4(%esp)
3600	xorl	%edx,%eax
3601	movl	%eax,(%esp)
3602	movl	8(%esp),%ecx
3603	movl	12(%esp),%edx
3604	movl	44(%esp),%edi
3605	leal	128(%edi),%edi
3606	movl	%eax,-112(%edi)
3607	movl	%ebx,-108(%edi)
3608	movl	%ecx,-104(%edi)
3609	movl	%edx,-100(%edi)
3610	movl	%eax,%ebp
3611	shll	$30,%eax
3612	movl	%ebx,%esi
3613	shrl	$2,%esi
3614	shll	$30,%ebx
3615	orl	%esi,%eax
3616	movl	%ecx,%esi
3617	shll	$30,%ecx
3618	movl	%eax,-48(%edi)
3619	shrl	$2,%esi
3620	orl	%esi,%ebx
3621	shrl	$2,%ebp
3622	movl	%edx,%esi
3623	shrl	$2,%esi
3624	movl	%ebx,-44(%edi)
3625	shll	$30,%edx
3626	orl	%esi,%ecx
3627	orl	%ebp,%edx
3628	movl	%ecx,-40(%edi)
3629	movl	%edx,-36(%edi)
3630	movl	%eax,%ebp
3631	shll	$30,%eax
3632	movl	%ebx,%esi
3633	shrl	$2,%esi
3634	shll	$30,%ebx
3635	orl	%esi,%eax
3636	movl	%ecx,%esi
3637	shll	$30,%ecx
3638	movl	%eax,32(%edi)
3639	shrl	$2,%esi
3640	orl	%esi,%ebx
3641	shrl	$2,%ebp
3642	movl	%edx,%esi
3643	shrl	$2,%esi
3644	movl	%ebx,36(%edi)
3645	shll	$30,%edx
3646	orl	%esi,%ecx
3647	orl	%ebp,%edx
3648	movl	%ecx,40(%edi)
3649	movl	%edx,44(%edi)
3650	movl	%ebx,%ebp
3651	shll	$19,%ebx
3652	movl	%ecx,%esi
3653	shrl	$13,%esi
3654	shll	$19,%ecx
3655	orl	%esi,%ebx
3656	movl	%edx,%esi
3657	shll	$19,%edx
3658	movl	%ebx,128(%edi)
3659	shrl	$13,%esi
3660	orl	%esi,%ecx
3661	shrl	$13,%ebp
3662	movl	%eax,%esi
3663	shrl	$13,%esi
3664	movl	%ecx,132(%edi)
3665	shll	$19,%eax
3666	orl	%esi,%edx
3667	orl	%ebp,%eax
3668	movl	%edx,136(%edi)
3669	movl	%eax,140(%edi)
3670	movl	-96(%edi),%ebx
3671	movl	-92(%edi),%ecx
3672	movl	-88(%edi),%edx
3673	movl	-84(%edi),%eax
3674	movl	%ebx,%ebp
3675	shll	$15,%ebx
3676	movl	%ecx,%esi
3677	shrl	$17,%esi
3678	shll	$15,%ecx
3679	orl	%esi,%ebx
3680	movl	%edx,%esi
3681	shll	$15,%edx
3682	movl	%ebx,-96(%edi)
3683	shrl	$17,%esi
3684	orl	%esi,%ecx
3685	shrl	$17,%ebp
3686	movl	%eax,%esi
3687	shrl	$17,%esi
3688	movl	%ecx,-92(%edi)
3689	shll	$15,%eax
3690	orl	%esi,%edx
3691	orl	%ebp,%eax
3692	movl	%edx,-88(%edi)
3693	movl	%eax,-84(%edi)
3694	movl	%ebx,%ebp
3695	shll	$15,%ebx
3696	movl	%ecx,%esi
3697	shrl	$17,%esi
3698	shll	$15,%ecx
3699	orl	%esi,%ebx
3700	movl	%edx,%esi
3701	shll	$15,%edx
3702	movl	%ebx,-64(%edi)
3703	shrl	$17,%esi
3704	orl	%esi,%ecx
3705	shrl	$17,%ebp
3706	movl	%eax,%esi
3707	shrl	$17,%esi
3708	movl	%ecx,-60(%edi)
3709	shll	$15,%eax
3710	orl	%esi,%edx
3711	orl	%ebp,%eax
3712	movl	%edx,-56(%edi)
3713	movl	%eax,-52(%edi)
3714	movl	%ebx,%ebp
3715	shll	$30,%ebx
3716	movl	%ecx,%esi
3717	shrl	$2,%esi
3718	shll	$30,%ecx
3719	orl	%esi,%ebx
3720	movl	%edx,%esi
3721	shll	$30,%edx
3722	movl	%ebx,16(%edi)
3723	shrl	$2,%esi
3724	orl	%esi,%ecx
3725	shrl	$2,%ebp
3726	movl	%eax,%esi
3727	shrl	$2,%esi
3728	movl	%ecx,20(%edi)
3729	shll	$30,%eax
3730	orl	%esi,%edx
3731	orl	%ebp,%eax
3732	movl	%edx,24(%edi)
3733	movl	%eax,28(%edi)
3734	movl	%ecx,%ebp
3735	shll	$2,%ecx
3736	movl	%edx,%esi
3737	shrl	$30,%esi
3738	shll	$2,%edx
3739	orl	%esi,%ecx
3740	movl	%eax,%esi
3741	shll	$2,%eax
3742	movl	%ecx,80(%edi)
3743	shrl	$30,%esi
3744	orl	%esi,%edx
3745	shrl	$30,%ebp
3746	movl	%ebx,%esi
3747	shrl	$30,%esi
3748	movl	%edx,84(%edi)
3749	shll	$2,%ebx
3750	orl	%esi,%eax
3751	orl	%ebp,%ebx
3752	movl	%eax,88(%edi)
3753	movl	%ebx,92(%edi)
3754	movl	-80(%edi),%ecx
3755	movl	-76(%edi),%edx
3756	movl	-72(%edi),%eax
3757	movl	-68(%edi),%ebx
3758	movl	%ecx,%ebp
3759	shll	$15,%ecx
3760	movl	%edx,%esi
3761	shrl	$17,%esi
3762	shll	$15,%edx
3763	orl	%esi,%ecx
3764	movl	%eax,%esi
3765	shll	$15,%eax
3766	movl	%ecx,-80(%edi)
3767	shrl	$17,%esi
3768	orl	%esi,%edx
3769	shrl	$17,%ebp
3770	movl	%ebx,%esi
3771	shrl	$17,%esi
3772	movl	%edx,-76(%edi)
3773	shll	$15,%ebx
3774	orl	%esi,%eax
3775	orl	%ebp,%ebx
3776	movl	%eax,-72(%edi)
3777	movl	%ebx,-68(%edi)
3778	movl	%ecx,%ebp
3779	shll	$30,%ecx
3780	movl	%edx,%esi
3781	shrl	$2,%esi
3782	shll	$30,%edx
3783	orl	%esi,%ecx
3784	movl	%eax,%esi
3785	shll	$30,%eax
3786	movl	%ecx,-16(%edi)
3787	shrl	$2,%esi
3788	orl	%esi,%edx
3789	shrl	$2,%ebp
3790	movl	%ebx,%esi
3791	shrl	$2,%esi
3792	movl	%edx,-12(%edi)
3793	shll	$30,%ebx
3794	orl	%esi,%eax
3795	orl	%ebp,%ebx
3796	movl	%eax,-8(%edi)
3797	movl	%ebx,-4(%edi)
3798	movl	%edx,64(%edi)
3799	movl	%eax,68(%edi)
3800	movl	%ebx,72(%edi)
3801	movl	%ecx,76(%edi)
3802	movl	%edx,%ebp
3803	shll	$17,%edx
3804	movl	%eax,%esi
3805	shrl	$15,%esi
3806	shll	$17,%eax
3807	orl	%esi,%edx
3808	movl	%ebx,%esi
3809	shll	$17,%ebx
3810	movl	%edx,96(%edi)
3811	shrl	$15,%esi
3812	orl	%esi,%eax
3813	shrl	$15,%ebp
3814	movl	%ecx,%esi
3815	shrl	$15,%esi
3816	movl	%eax,100(%edi)
3817	shll	$17,%ecx
3818	orl	%esi,%ebx
3819	orl	%ebp,%ecx
3820	movl	%ebx,104(%edi)
3821	movl	%ecx,108(%edi)
3822	movl	-128(%edi),%edx
3823	movl	-124(%edi),%eax
3824	movl	-120(%edi),%ebx
3825	movl	-116(%edi),%ecx
3826	movl	%eax,%ebp
3827	shll	$13,%eax
3828	movl	%ebx,%esi
3829	shrl	$19,%esi
3830	shll	$13,%ebx
3831	orl	%esi,%eax
3832	movl	%ecx,%esi
3833	shll	$13,%ecx
3834	movl	%eax,-32(%edi)
3835	shrl	$19,%esi
3836	orl	%esi,%ebx
3837	shrl	$19,%ebp
3838	movl	%edx,%esi
3839	shrl	$19,%esi
3840	movl	%ebx,-28(%edi)
3841	shll	$13,%edx
3842	orl	%esi,%ecx
3843	orl	%ebp,%edx
3844	movl	%ecx,-24(%edi)
3845	movl	%edx,-20(%edi)
3846	movl	%eax,%ebp
3847	shll	$15,%eax
3848	movl	%ebx,%esi
3849	shrl	$17,%esi
3850	shll	$15,%ebx
3851	orl	%esi,%eax
3852	movl	%ecx,%esi
3853	shll	$15,%ecx
3854	movl	%eax,(%edi)
3855	shrl	$17,%esi
3856	orl	%esi,%ebx
3857	shrl	$17,%ebp
3858	movl	%edx,%esi
3859	shrl	$17,%esi
3860	movl	%ebx,4(%edi)
3861	shll	$15,%edx
3862	orl	%esi,%ecx
3863	orl	%ebp,%edx
3864	movl	%ecx,8(%edi)
3865	movl	%edx,12(%edi)
3866	movl	%eax,%ebp
3867	shll	$17,%eax
3868	movl	%ebx,%esi
3869	shrl	$15,%esi
3870	shll	$17,%ebx
3871	orl	%esi,%eax
3872	movl	%ecx,%esi
3873	shll	$17,%ecx
3874	movl	%eax,48(%edi)
3875	shrl	$15,%esi
3876	orl	%esi,%ebx
3877	shrl	$15,%ebp
3878	movl	%edx,%esi
3879	shrl	$15,%esi
3880	movl	%ebx,52(%edi)
3881	shll	$17,%edx
3882	orl	%esi,%ecx
3883	orl	%ebp,%edx
3884	movl	%ecx,56(%edi)
3885	movl	%edx,60(%edi)
3886	movl	%ebx,%ebp
3887	shll	$2,%ebx
3888	movl	%ecx,%esi
3889	shrl	$30,%esi
3890	shll	$2,%ecx
3891	orl	%esi,%ebx
3892	movl	%edx,%esi
3893	shll	$2,%edx
3894	movl	%ebx,112(%edi)
3895	shrl	$30,%esi
3896	orl	%esi,%ecx
3897	shrl	$30,%ebp
3898	movl	%eax,%esi
3899	shrl	$30,%esi
3900	movl	%ecx,116(%edi)
3901	shll	$2,%eax
3902	orl	%esi,%edx
3903	orl	%ebp,%eax
3904	movl	%edx,120(%edi)
3905	movl	%eax,124(%edi)
3906	movl	$4,%eax
3907.L013done:
3908	leal	144(%edi),%edx
3909	addl	$16,%esp
3910	popl	%edi
3911	popl	%esi
3912	popl	%ebx
3913	popl	%ebp
3914	ret
3915.size	Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
3916.globl	Camellia_set_key
3917.type	Camellia_set_key,@function
3918.align	16
3919Camellia_set_key:
3920.L_Camellia_set_key_begin:
3921	pushl	%ebx
3922	movl	8(%esp),%ecx
3923	movl	12(%esp),%ebx
3924	movl	16(%esp),%edx
3925	movl	$-1,%eax
3926	testl	%ecx,%ecx
3927	jz	.L014done
3928	testl	%edx,%edx
3929	jz	.L014done
3930	movl	$-2,%eax
3931	cmpl	$256,%ebx
3932	je	.L015arg_ok
3933	cmpl	$192,%ebx
3934	je	.L015arg_ok
3935	cmpl	$128,%ebx
3936	jne	.L014done
3937.align	4
3938.L015arg_ok:
3939	pushl	%edx
3940	pushl	%ecx
3941	pushl	%ebx
3942	call	.L_Camellia_Ekeygen_begin
3943	addl	$12,%esp
3944	movl	%eax,(%edx)
3945	xorl	%eax,%eax
3946.align	4
3947.L014done:
3948	popl	%ebx
3949	ret
3950.size	Camellia_set_key,.-.L_Camellia_set_key_begin
3951.align	64
3952.LCamellia_SIGMA:
3953.long	2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
3954.align	64
3955.LCamellia_SBOX:
3956.long	1886416896,1886388336
3957.long	2189591040,741081132
3958.long	741092352,3014852787
3959.long	3974949888,3233808576
3960.long	3014898432,3840147684
3961.long	656877312,1465319511
3962.long	3233857536,3941204202
3963.long	3857048832,2930639022
3964.long	3840205824,589496355
3965.long	2240120064,1802174571
3966.long	1465341696,1162149957
3967.long	892679424,2779054245
3968.long	3941263872,3991732461
3969.long	202116096,1330577487
3970.long	2930683392,488439837
3971.long	1094795520,2459041938
3972.long	589505280,2256928902
3973.long	4025478912,2947481775
3974.long	1802201856,2088501372
3975.long	2475922176,522125343
3976.long	1162167552,1044250686
3977.long	421075200,3705405660
3978.long	2779096320,1583218782
3979.long	555819264,185270283
3980.long	3991792896,2795896998
3981.long	235802112,960036921
3982.long	1330597632,3587506389
3983.long	1313754624,1566376029
3984.long	488447232,3654877401
3985.long	1701143808,1515847770
3986.long	2459079168,1364262993
3987.long	3183328512,1819017324
3988.long	2256963072,2341142667
3989.long	3099113472,2593783962
3990.long	2947526400,4227531003
3991.long	2408550144,2964324528
3992.long	2088532992,1953759348
3993.long	3958106880,724238379
3994.long	522133248,4042260720
3995.long	3469659648,2223243396
3996.long	1044266496,3755933919
3997.long	808464384,3419078859
3998.long	3705461760,875823156
3999.long	1600085760,1987444854
4000.long	1583242752,1835860077
4001.long	3318072576,2846425257
4002.long	185273088,3520135377
4003.long	437918208,67371012
4004.long	2795939328,336855060
4005.long	3789676800,976879674
4006.long	960051456,3739091166
4007.long	3402287616,286326801
4008.long	3587560704,842137650
4009.long	1195853568,2627469468
4010.long	1566399744,1397948499
4011.long	1027423488,4075946226
4012.long	3654932736,4278059262
4013.long	16843008,3486449871
4014.long	1515870720,3284336835
4015.long	3604403712,2054815866
4016.long	1364283648,606339108
4017.long	1448498688,3907518696
4018.long	1819044864,1616904288
4019.long	1296911616,1768489065
4020.long	2341178112,2863268010
4021.long	218959104,2694840480
4022.long	2593823232,2711683233
4023.long	1717986816,1650589794
4024.long	4227595008,1414791252
4025.long	3435973632,505282590
4026.long	2964369408,3772776672
4027.long	757935360,1684275300
4028.long	1953788928,269484048
4029.long	303174144,0
4030.long	724249344,2745368739
4031.long	538976256,1970602101
4032.long	4042321920,2324299914
4033.long	2981212416,3873833190
4034.long	2223277056,151584777
4035.long	2576980224,3722248413
4036.long	3755990784,2273771655
4037.long	1280068608,2206400643
4038.long	3419130624,3452764365
4039.long	3267543552,2425356432
4040.long	875836416,1936916595
4041.long	2122219008,4143317238
4042.long	1987474944,2644312221
4043.long	84215040,3216965823
4044.long	1835887872,1381105746
4045.long	3082270464,3638034648
4046.long	2846468352,3368550600
4047.long	825307392,3334865094
4048.long	3520188672,2172715137
4049.long	387389184,1869545583
4050.long	67372032,320012307
4051.long	3621246720,1667432547
4052.long	336860160,3924361449
4053.long	1482184704,2812739751
4054.long	976894464,2677997727
4055.long	1633771776,3166437564
4056.long	3739147776,690552873
4057.long	454761216,4193845497
4058.long	286331136,791609391
4059.long	471604224,3031695540
4060.long	842150400,2021130360
4061.long	252645120,101056518
4062.long	2627509248,3890675943
4063.long	370546176,1903231089
4064.long	1397969664,3570663636
4065.long	404232192,2880110763
4066.long	4076007936,2290614408
4067.long	572662272,2374828173
4068.long	4278124032,1920073842
4069.long	1145324544,3115909305
4070.long	3486502656,4177002744
4071.long	2998055424,2896953516
4072.long	3284386560,909508662
4073.long	3048584448,707395626
4074.long	2054846976,1010565180
4075.long	2442236160,4059103473
4076.long	606348288,1077936192
4077.long	134744064,3553820883
4078.long	3907577856,3149594811
4079.long	2829625344,1128464451
4080.long	1616928768,353697813
4081.long	4244438016,2913796269
4082.long	1768515840,2004287607
4083.long	1347440640,2155872384
4084.long	2863311360,2189557890
4085.long	3503345664,3974889708
4086.long	2694881280,656867367
4087.long	2105376000,3856990437
4088.long	2711724288,2240086149
4089.long	2307492096,892665909
4090.long	1650614784,202113036
4091.long	2543294208,1094778945
4092.long	1414812672,4025417967
4093.long	1532713728,2475884691
4094.long	505290240,421068825
4095.long	2509608192,555810849
4096.long	3772833792,235798542
4097.long	4294967040,1313734734
4098.long	1684300800,1701118053
4099.long	3537031680,3183280317
4100.long	269488128,3099066552
4101.long	3301229568,2408513679
4102.long	0,3958046955
4103.long	1212696576,3469607118
4104.long	2745410304,808452144
4105.long	4160222976,1600061535
4106.long	1970631936,3318022341
4107.long	3688618752,437911578
4108.long	2324335104,3789619425
4109.long	50529024,3402236106
4110.long	3873891840,1195835463
4111.long	3671775744,1027407933
4112.long	151587072,16842753
4113.long	1061109504,3604349142
4114.long	3722304768,1448476758
4115.long	2492765184,1296891981
4116.long	2273806080,218955789
4117.long	1549556736,1717960806
4118.long	2206434048,3435921612
4119.long	33686016,757923885
4120.long	3452816640,303169554
4121.long	1246382592,538968096
4122.long	2425393152,2981167281
4123.long	858993408,2576941209
4124.long	1936945920,1280049228
4125.long	1734829824,3267494082
4126.long	4143379968,2122186878
4127.long	4092850944,84213765
4128.long	2644352256,3082223799
4129.long	2139062016,825294897
4130.long	3217014528,387383319
4131.long	3806519808,3621191895
4132.long	1381126656,1482162264
4133.long	2610666240,1633747041
4134.long	3638089728,454754331
4135.long	640034304,471597084
4136.long	3368601600,252641295
4137.long	926365440,370540566
4138.long	3334915584,404226072
4139.long	993737472,572653602
4140.long	2172748032,1145307204
4141.long	2526451200,2998010034
4142.long	1869573888,3048538293
4143.long	1263225600,2442199185
4144.long	320017152,134742024
4145.long	3200171520,2829582504
4146.long	1667457792,4244373756
4147.long	774778368,1347420240
4148.long	3924420864,3503292624
4149.long	2038003968,2105344125
4150.long	2812782336,2307457161
4151.long	2358021120,2543255703
4152.long	2678038272,1532690523
4153.long	1852730880,2509570197
4154.long	3166485504,4294902015
4155.long	2391707136,3536978130
4156.long	690563328,3301179588
4157.long	4126536960,1212678216
4158.long	4193908992,4160159991
4159.long	3065427456,3688562907
4160.long	791621376,50528259
4161.long	4261281024,3671720154
4162.long	3031741440,1061093439
4163.long	1499027712,2492727444
4164.long	2021160960,1549533276
4165.long	2560137216,33685506
4166.long	101058048,1246363722
4167.long	1785358848,858980403
4168.long	3890734848,1734803559
4169.long	1179010560,4092788979
4170.long	1903259904,2139029631
4171.long	3132799488,3806462178
4172.long	3570717696,2610626715
4173.long	623191296,640024614
4174.long	2880154368,926351415
4175.long	1111638528,993722427
4176.long	2290649088,2526412950
4177.long	2728567296,1263206475
4178.long	2374864128,3200123070
4179.long	4210752000,774766638
4180.long	1920102912,2037973113
4181.long	117901056,2357985420
4182.long	3115956480,1852702830
4183.long	1431655680,2391670926
4184.long	4177065984,4126474485
4185.long	4008635904,3065381046
4186.long	2896997376,4261216509
4187.long	168430080,1499005017
4188.long	909522432,2560098456
4189.long	1229539584,1785331818
4190.long	707406336,1178992710
4191.long	1751672832,3132752058
4192.long	1010580480,623181861
4193.long	943208448,1111621698
4194.long	4059164928,2728525986
4195.long	2762253312,4210688250
4196.long	1077952512,117899271
4197.long	673720320,1431634005
4198.long	3553874688,4008575214
4199.long	2071689984,168427530
4200.long	3149642496,1229520969
4201.long	3385444608,1751646312
4202.long	1128481536,943194168
4203.long	3250700544,2762211492
4204.long	353703168,673710120
4205.long	3823362816,2071658619
4206.long	2913840384,3385393353
4207.long	4109693952,3250651329
4208.long	2004317952,3823304931
4209.long	3351758592,4109631732
4210.long	2155905024,3351707847
4211.long	2661195264,2661154974
4212.long	14737632,939538488
4213.long	328965,1090535745
4214.long	5789784,369104406
4215.long	14277081,1979741814
4216.long	6776679,3640711641
4217.long	5131854,2466288531
4218.long	8487297,1610637408
4219.long	13355979,4060148466
4220.long	13224393,1912631922
4221.long	723723,3254829762
4222.long	11447982,2868947883
4223.long	6974058,2583730842
4224.long	14013909,1962964341
4225.long	1579032,100664838
4226.long	6118749,1459640151
4227.long	8553090,2684395680
4228.long	4605510,2432733585
4229.long	14671839,4144035831
4230.long	14079702,3036722613
4231.long	2565927,3372272073
4232.long	9079434,2717950626
4233.long	3289650,2348846220
4234.long	4934475,3523269330
4235.long	4342338,2415956112
4236.long	14408667,4127258358
4237.long	1842204,117442311
4238.long	10395294,2801837991
4239.long	10263708,654321447
4240.long	3815994,2382401166
4241.long	13290186,2986390194
4242.long	2434341,1224755529
4243.long	8092539,3724599006
4244.long	855309,1124090691
4245.long	7434609,1543527516
4246.long	6250335,3607156695
4247.long	2039583,3338717127
4248.long	16316664,1040203326
4249.long	14145495,4110480885
4250.long	4079166,2399178639
4251.long	10329501,1728079719
4252.long	8158332,520101663
4253.long	6316128,402659352
4254.long	12171705,1845522030
4255.long	12500670,2936057775
4256.long	12369084,788541231
4257.long	9145227,3791708898
4258.long	1447446,2231403909
4259.long	3421236,218107149
4260.long	5066061,1392530259
4261.long	12829635,4026593520
4262.long	7500402,2617285788
4263.long	9803157,1694524773
4264.long	11250603,3925928682
4265.long	9342606,2734728099
4266.long	12237498,2919280302
4267.long	8026746,2650840734
4268.long	11776947,3959483628
4269.long	131586,2147516544
4270.long	11842740,754986285
4271.long	11382189,1795189611
4272.long	10658466,2818615464
4273.long	11316396,721431339
4274.long	14211288,905983542
4275.long	10132122,2785060518
4276.long	1513239,3305162181
4277.long	1710618,2248181382
4278.long	3487029,1291865421
4279.long	13421772,855651123
4280.long	16250871,4244700669
4281.long	10066329,1711302246
4282.long	6381921,1476417624
4283.long	5921370,2516620950
4284.long	15263976,973093434
4285.long	2368548,150997257
4286.long	5658198,2499843477
4287.long	4210752,268439568
4288.long	14803425,2013296760
4289.long	6513507,3623934168
4290.long	592137,1107313218
4291.long	3355443,3422604492
4292.long	12566463,4009816047
4293.long	10000536,637543974
4294.long	9934743,3842041317
4295.long	8750469,1627414881
4296.long	6842472,436214298
4297.long	16579836,1056980799
4298.long	15527148,989870907
4299.long	657930,2181071490
4300.long	14342874,3053500086
4301.long	7303023,3674266587
4302.long	5460819,3556824276
4303.long	6447714,2550175896
4304.long	10724259,3892373736
4305.long	3026478,2332068747
4306.long	526344,33554946
4307.long	11513775,3942706155
4308.long	2631720,167774730
4309.long	11579568,738208812
4310.long	7631988,486546717
4311.long	12763842,2952835248
4312.long	12434877,1862299503
4313.long	3552822,2365623693
4314.long	2236962,2281736328
4315.long	3684408,234884622
4316.long	6579300,419436825
4317.long	1973790,2264958855
4318.long	3750201,1308642894
4319.long	2894892,184552203
4320.long	10921638,2835392937
4321.long	3158064,201329676
4322.long	15066597,2030074233
4323.long	4473924,285217041
4324.long	16645629,2130739071
4325.long	8947848,570434082
4326.long	10461087,3875596263
4327.long	6645093,1493195097
4328.long	8882055,3774931425
4329.long	7039851,3657489114
4330.long	16053492,1023425853
4331.long	2302755,3355494600
4332.long	4737096,301994514
4333.long	1052688,67109892
4334.long	13750737,1946186868
4335.long	5329233,1409307732
4336.long	12632256,805318704
4337.long	16382457,2113961598
4338.long	13816530,3019945140
4339.long	10526880,671098920
4340.long	5592405,1426085205
4341.long	10592673,1744857192
4342.long	4276545,1342197840
4343.long	16448250,3187719870
4344.long	4408131,3489714384
4345.long	1250067,3288384708
4346.long	12895428,822096177
4347.long	3092271,3405827019
4348.long	11053224,704653866
4349.long	11974326,2902502829
4350.long	3947580,251662095
4351.long	2829099,3389049546
4352.long	12698049,1879076976
4353.long	16777215,4278255615
4354.long	13158600,838873650
4355.long	10855845,1761634665
4356.long	2105376,134219784
4357.long	9013641,1644192354
4358.long	0,0
4359.long	9474192,603989028
4360.long	4671303,3506491857
4361.long	15724527,4211145723
4362.long	15395562,3120609978
4363.long	12040119,3976261101
4364.long	1381653,1157645637
4365.long	394758,2164294017
4366.long	13487565,1929409395
4367.long	11908533,1828744557
4368.long	1184274,2214626436
4369.long	8289918,2667618207
4370.long	12303291,3993038574
4371.long	2697513,1241533002
4372.long	986895,3271607235
4373.long	12105912,771763758
4374.long	460551,3238052289
4375.long	263172,16777473
4376.long	10197915,3858818790
4377.long	9737364,620766501
4378.long	2171169,1207978056
4379.long	6710886,2566953369
4380.long	15132390,3103832505
4381.long	13553358,3003167667
4382.long	15592941,2063629179
4383.long	15198183,4177590777
4384.long	3881787,3456159438
4385.long	16711422,3204497343
4386.long	8355711,3741376479
4387.long	12961221,1895854449
4388.long	10790052,687876393
4389.long	3618615,3439381965
4390.long	11645361,1811967084
4391.long	5000268,318771987
4392.long	9539985,1677747300
4393.long	7237230,2600508315
4394.long	9276813,1660969827
4395.long	7763574,2634063261
4396.long	197379,3221274816
4397.long	2960685,1258310475
4398.long	14606046,3070277559
4399.long	9868950,2768283045
4400.long	2500134,2298513801
4401.long	8224125,1593859935
4402.long	13027014,2969612721
4403.long	6052956,385881879
4404.long	13882323,4093703412
4405.long	15921906,3154164924
4406.long	5197647,3540046803
4407.long	1644825,1174423110
4408.long	4144959,3472936911
4409.long	14474460,922761015
4410.long	7960953,1577082462
4411.long	1907997,1191200583
4412.long	5395026,2483066004
4413.long	15461355,4194368250
4414.long	15987699,4227923196
4415.long	7171437,1526750043
4416.long	6184542,2533398423
4417.long	16514043,4261478142
4418.long	6908265,1509972570
4419.long	11711154,2885725356
4420.long	15790320,1006648380
4421.long	3223857,1275087948
4422.long	789516,50332419
4423.long	13948116,889206069
4424.long	13619151,4076925939
4425.long	9211020,587211555
4426.long	14869218,3087055032
4427.long	7697781,1560304989
4428.long	11119017,1778412138
4429.long	4868682,2449511058
4430.long	5723991,3573601749
4431.long	8684676,553656609
4432.long	1118481,1140868164
4433.long	4539717,1358975313
4434.long	1776411,3321939654
4435.long	16119285,2097184125
4436.long	15000804,956315961
4437.long	921102,2197848963
4438.long	7566195,3691044060
4439.long	11184810,2852170410
4440.long	15856113,2080406652
4441.long	14540253,1996519287
4442.long	5855577,1442862678
4443.long	1315860,83887365
4444.long	7105644,452991771
4445.long	9605778,2751505572
4446.long	5526612,352326933
4447.long	13684944,872428596
4448.long	7895160,503324190
4449.long	7368816,469769244
4450.long	14935011,4160813304
4451.long	4802889,1375752786
4452.long	8421504,536879136
4453.long	5263440,335549460
4454.long	10987431,3909151209
4455.long	16185078,3170942397
4456.long	7829367,3707821533
4457.long	9671571,3825263844
4458.long	8816262,2701173153
4459.long	8618883,3758153952
4460.long	2763306,2315291274
4461.long	13092807,4043370993
4462.long	5987163,3590379222
4463.long	15329769,2046851706
4464.long	15658734,3137387451
4465.long	9408399,3808486371
4466.long	65793,1073758272
4467.long	4013373,1325420367
4468.globl	Camellia_cbc_encrypt
4469.type	Camellia_cbc_encrypt,@function
4470.align	16
4471Camellia_cbc_encrypt:
4472.L_Camellia_cbc_encrypt_begin:
4473	pushl	%ebp
4474	pushl	%ebx
4475	pushl	%esi
4476	pushl	%edi
4477	movl	28(%esp),%ecx
4478	cmpl	$0,%ecx
4479	je	.L016enc_out
4480	pushfl
4481	cld
4482	movl	24(%esp),%eax
4483	movl	28(%esp),%ebx
4484	movl	36(%esp),%edx
4485	movl	40(%esp),%ebp
4486	leal	-64(%esp),%esi
4487	andl	$-64,%esi
4488	leal	-127(%edx),%edi
4489	subl	%esi,%edi
4490	negl	%edi
4491	andl	$960,%edi
4492	subl	%edi,%esi
4493	movl	44(%esp),%edi
4494	xchgl	%esi,%esp
4495	addl	$4,%esp
4496	movl	%esi,20(%esp)
4497	movl	%eax,24(%esp)
4498	movl	%ebx,28(%esp)
4499	movl	%ecx,32(%esp)
4500	movl	%edx,36(%esp)
4501	movl	%ebp,40(%esp)
4502	call	.L017pic_point
4503.L017pic_point:
4504	popl	%ebp
4505	leal	.LCamellia_SBOX-.L017pic_point(%ebp),%ebp
4506	movl	$32,%esi
4507.align	4
4508.L018prefetch_sbox:
4509	movl	(%ebp),%eax
4510	movl	32(%ebp),%ebx
4511	movl	64(%ebp),%ecx
4512	movl	96(%ebp),%edx
4513	leal	128(%ebp),%ebp
4514	decl	%esi
4515	jnz	.L018prefetch_sbox
4516	movl	36(%esp),%eax
4517	subl	$4096,%ebp
4518	movl	24(%esp),%esi
4519	movl	272(%eax),%edx
4520	cmpl	$0,%edi
4521	je	.L019DECRYPT
4522	movl	32(%esp),%ecx
4523	movl	40(%esp),%edi
4524	shll	$6,%edx
4525	leal	(%eax,%edx,1),%edx
4526	movl	%edx,16(%esp)
4527	testl	$4294967280,%ecx
4528	jz	.L020enc_tail
4529	movl	(%edi),%eax
4530	movl	4(%edi),%ebx
4531.align	4
4532.L021enc_loop:
4533	movl	8(%edi),%ecx
4534	movl	12(%edi),%edx
4535	xorl	(%esi),%eax
4536	xorl	4(%esi),%ebx
4537	xorl	8(%esi),%ecx
4538	bswap	%eax
4539	xorl	12(%esi),%edx
4540	bswap	%ebx
4541	movl	36(%esp),%edi
4542	bswap	%ecx
4543	bswap	%edx
4544	call	_x86_Camellia_encrypt
4545	movl	24(%esp),%esi
4546	movl	28(%esp),%edi
4547	bswap	%eax
4548	bswap	%ebx
4549	bswap	%ecx
4550	movl	%eax,(%edi)
4551	bswap	%edx
4552	movl	%ebx,4(%edi)
4553	movl	%ecx,8(%edi)
4554	movl	%edx,12(%edi)
4555	movl	32(%esp),%ecx
4556	leal	16(%esi),%esi
4557	movl	%esi,24(%esp)
4558	leal	16(%edi),%edx
4559	movl	%edx,28(%esp)
4560	subl	$16,%ecx
4561	testl	$4294967280,%ecx
4562	movl	%ecx,32(%esp)
4563	jnz	.L021enc_loop
4564	testl	$15,%ecx
4565	jnz	.L020enc_tail
4566	movl	40(%esp),%esi
4567	movl	8(%edi),%ecx
4568	movl	12(%edi),%edx
4569	movl	%eax,(%esi)
4570	movl	%ebx,4(%esi)
4571	movl	%ecx,8(%esi)
4572	movl	%edx,12(%esi)
4573	movl	20(%esp),%esp
4574	popfl
4575.L016enc_out:
4576	popl	%edi
4577	popl	%esi
4578	popl	%ebx
4579	popl	%ebp
4580	ret
4581	pushfl
4582.align	4
4583.L020enc_tail:
4584	movl	%edi,%eax
4585	movl	28(%esp),%edi
4586	pushl	%eax
4587	movl	$16,%ebx
4588	subl	%ecx,%ebx
4589	cmpl	%esi,%edi
4590	je	.L022enc_in_place
4591.align	4
4592.long	2767451785
4593	jmp	.L023enc_skip_in_place
4594.L022enc_in_place:
4595	leal	(%edi,%ecx,1),%edi
4596.L023enc_skip_in_place:
4597	movl	%ebx,%ecx
4598	xorl	%eax,%eax
4599.align	4
4600.long	2868115081
4601	popl	%edi
4602	movl	28(%esp),%esi
4603	movl	(%edi),%eax
4604	movl	4(%edi),%ebx
4605	movl	$16,32(%esp)
4606	jmp	.L021enc_loop
4607.align	16
4608.L019DECRYPT:
4609	shll	$6,%edx
4610	leal	(%eax,%edx,1),%edx
4611	movl	%eax,16(%esp)
4612	movl	%edx,36(%esp)
4613	cmpl	28(%esp),%esi
4614	je	.L024dec_in_place
4615	movl	40(%esp),%edi
4616	movl	%edi,44(%esp)
4617.align	4
4618.L025dec_loop:
4619	movl	(%esi),%eax
4620	movl	4(%esi),%ebx
4621	movl	8(%esi),%ecx
4622	bswap	%eax
4623	movl	12(%esi),%edx
4624	bswap	%ebx
4625	movl	36(%esp),%edi
4626	bswap	%ecx
4627	bswap	%edx
4628	call	_x86_Camellia_decrypt
4629	movl	44(%esp),%edi
4630	movl	32(%esp),%esi
4631	bswap	%eax
4632	bswap	%ebx
4633	bswap	%ecx
4634	xorl	(%edi),%eax
4635	bswap	%edx
4636	xorl	4(%edi),%ebx
4637	xorl	8(%edi),%ecx
4638	xorl	12(%edi),%edx
4639	subl	$16,%esi
4640	jc	.L026dec_partial
4641	movl	%esi,32(%esp)
4642	movl	24(%esp),%esi
4643	movl	28(%esp),%edi
4644	movl	%eax,(%edi)
4645	movl	%ebx,4(%edi)
4646	movl	%ecx,8(%edi)
4647	movl	%edx,12(%edi)
4648	movl	%esi,44(%esp)
4649	leal	16(%esi),%esi
4650	movl	%esi,24(%esp)
4651	leal	16(%edi),%edi
4652	movl	%edi,28(%esp)
4653	jnz	.L025dec_loop
4654	movl	44(%esp),%edi
4655.L027dec_end:
4656	movl	40(%esp),%esi
4657	movl	(%edi),%eax
4658	movl	4(%edi),%ebx
4659	movl	8(%edi),%ecx
4660	movl	12(%edi),%edx
4661	movl	%eax,(%esi)
4662	movl	%ebx,4(%esi)
4663	movl	%ecx,8(%esi)
4664	movl	%edx,12(%esi)
4665	jmp	.L028dec_out
4666.align	4
4667.L026dec_partial:
4668	leal	44(%esp),%edi
4669	movl	%eax,(%edi)
4670	movl	%ebx,4(%edi)
4671	movl	%ecx,8(%edi)
4672	movl	%edx,12(%edi)
4673	leal	16(%esi),%ecx
4674	movl	%edi,%esi
4675	movl	28(%esp),%edi
4676.long	2767451785
4677	movl	24(%esp),%edi
4678	jmp	.L027dec_end
4679.align	4
4680.L024dec_in_place:
4681.L029dec_in_place_loop:
4682	leal	44(%esp),%edi
4683	movl	(%esi),%eax
4684	movl	4(%esi),%ebx
4685	movl	8(%esi),%ecx
4686	movl	12(%esi),%edx
4687	movl	%eax,(%edi)
4688	movl	%ebx,4(%edi)
4689	movl	%ecx,8(%edi)
4690	bswap	%eax
4691	movl	%edx,12(%edi)
4692	bswap	%ebx
4693	movl	36(%esp),%edi
4694	bswap	%ecx
4695	bswap	%edx
4696	call	_x86_Camellia_decrypt
4697	movl	40(%esp),%edi
4698	movl	28(%esp),%esi
4699	bswap	%eax
4700	bswap	%ebx
4701	bswap	%ecx
4702	xorl	(%edi),%eax
4703	bswap	%edx
4704	xorl	4(%edi),%ebx
4705	xorl	8(%edi),%ecx
4706	xorl	12(%edi),%edx
4707	movl	%eax,(%esi)
4708	movl	%ebx,4(%esi)
4709	movl	%ecx,8(%esi)
4710	movl	%edx,12(%esi)
4711	leal	16(%esi),%esi
4712	movl	%esi,28(%esp)
4713	leal	44(%esp),%esi
4714	movl	(%esi),%eax
4715	movl	4(%esi),%ebx
4716	movl	8(%esi),%ecx
4717	movl	12(%esi),%edx
4718	movl	%eax,(%edi)
4719	movl	%ebx,4(%edi)
4720	movl	%ecx,8(%edi)
4721	movl	%edx,12(%edi)
4722	movl	24(%esp),%esi
4723	leal	16(%esi),%esi
4724	movl	%esi,24(%esp)
4725	movl	32(%esp),%ecx
4726	subl	$16,%ecx
4727	jc	.L030dec_in_place_partial
4728	movl	%ecx,32(%esp)
4729	jnz	.L029dec_in_place_loop
4730	jmp	.L028dec_out
4731.align	4
4732.L030dec_in_place_partial:
4733	movl	28(%esp),%edi
4734	leal	44(%esp),%esi
4735	leal	(%edi,%ecx,1),%edi
4736	leal	16(%esi,%ecx,1),%esi
4737	negl	%ecx
4738.long	2767451785
4739.align	4
4740.L028dec_out:
4741	movl	20(%esp),%esp
4742	popfl
4743	popl	%edi
4744	popl	%esi
4745	popl	%ebx
4746	popl	%ebp
4747	ret
4748.size	Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
4749.byte	67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
4750.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
4751.byte	115,108,46,111,114,103,62,0
4752#endif
4753