1	# $FreeBSD$
2.file	"cmll-586.s"
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	private_Camellia_set_key
1542.type	private_Camellia_set_key,@function
1543.align	16
1544private_Camellia_set_key:
1545.L_private_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	private_Camellia_set_key,.-.L_private_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