xref: /netbsd-src/crypto/external/bsd/openssl/lib/libcrypto/arch/i386/cmll-x86.S (revision 1b3d6f93806f8821fe459e13ad13e605b37c6d43)
1#include <machine/asm.h>
2.text
3.globl	Camellia_EncryptBlock_Rounds
4.type	Camellia_EncryptBlock_Rounds,@function
5.align	16
6Camellia_EncryptBlock_Rounds:
7.L_Camellia_EncryptBlock_Rounds_begin:
8	#ifdef __CET__
9
10.byte	243,15,30,251
11	#endif
12
13	pushl	%ebp
14	pushl	%ebx
15	pushl	%esi
16	pushl	%edi
17	movl	20(%esp),%eax
18	movl	24(%esp),%esi
19	movl	28(%esp),%edi
20	movl	%esp,%ebx
21	subl	$28,%esp
22	andl	$-64,%esp
23	leal	-127(%edi),%ecx
24	subl	%esp,%ecx
25	negl	%ecx
26	andl	$960,%ecx
27	subl	%ecx,%esp
28	addl	$4,%esp
29	shll	$6,%eax
30	leal	(%edi,%eax,1),%eax
31	movl	%ebx,20(%esp)
32	movl	%eax,16(%esp)
33	call	.L000pic_point
34.L000pic_point:
35	popl	%ebp
36	leal	.LCamellia_SBOX-.L000pic_point(%ebp),%ebp
37	movl	(%esi),%eax
38	movl	4(%esi),%ebx
39	movl	8(%esi),%ecx
40	bswap	%eax
41	movl	12(%esi),%edx
42	bswap	%ebx
43	bswap	%ecx
44	bswap	%edx
45	call	_x86_Camellia_encrypt
46	movl	20(%esp),%esp
47	bswap	%eax
48	movl	32(%esp),%esi
49	bswap	%ebx
50	bswap	%ecx
51	bswap	%edx
52	movl	%eax,(%esi)
53	movl	%ebx,4(%esi)
54	movl	%ecx,8(%esi)
55	movl	%edx,12(%esi)
56	popl	%edi
57	popl	%esi
58	popl	%ebx
59	popl	%ebp
60	ret
61.size	Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
62.globl	Camellia_EncryptBlock
63.type	Camellia_EncryptBlock,@function
64.align	16
65Camellia_EncryptBlock:
66.L_Camellia_EncryptBlock_begin:
67	#ifdef __CET__
68
69.byte	243,15,30,251
70	#endif
71
72	movl	$128,%eax
73	subl	4(%esp),%eax
74	movl	$3,%eax
75	adcl	$0,%eax
76	movl	%eax,4(%esp)
77	jmp	.L_Camellia_EncryptBlock_Rounds_begin
78.size	Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
79.globl	Camellia_encrypt
80.type	Camellia_encrypt,@function
81.align	16
82Camellia_encrypt:
83.L_Camellia_encrypt_begin:
84	#ifdef __CET__
85
86.byte	243,15,30,251
87	#endif
88
89	pushl	%ebp
90	pushl	%ebx
91	pushl	%esi
92	pushl	%edi
93	movl	20(%esp),%esi
94	movl	28(%esp),%edi
95	movl	%esp,%ebx
96	subl	$28,%esp
97	andl	$-64,%esp
98	movl	272(%edi),%eax
99	leal	-127(%edi),%ecx
100	subl	%esp,%ecx
101	negl	%ecx
102	andl	$960,%ecx
103	subl	%ecx,%esp
104	addl	$4,%esp
105	shll	$6,%eax
106	leal	(%edi,%eax,1),%eax
107	movl	%ebx,20(%esp)
108	movl	%eax,16(%esp)
109	call	.L001pic_point
110.L001pic_point:
111	popl	%ebp
112	leal	.LCamellia_SBOX-.L001pic_point(%ebp),%ebp
113	movl	(%esi),%eax
114	movl	4(%esi),%ebx
115	movl	8(%esi),%ecx
116	bswap	%eax
117	movl	12(%esi),%edx
118	bswap	%ebx
119	bswap	%ecx
120	bswap	%edx
121	call	_x86_Camellia_encrypt
122	movl	20(%esp),%esp
123	bswap	%eax
124	movl	24(%esp),%esi
125	bswap	%ebx
126	bswap	%ecx
127	bswap	%edx
128	movl	%eax,(%esi)
129	movl	%ebx,4(%esi)
130	movl	%ecx,8(%esi)
131	movl	%edx,12(%esi)
132	popl	%edi
133	popl	%esi
134	popl	%ebx
135	popl	%ebp
136	ret
137.size	Camellia_encrypt,.-.L_Camellia_encrypt_begin
138.type	_x86_Camellia_encrypt,@function
139.align	16
140_x86_Camellia_encrypt:
141	#ifdef __CET__
142
143.byte	243,15,30,251
144	#endif
145
146	xorl	(%edi),%eax
147	xorl	4(%edi),%ebx
148	xorl	8(%edi),%ecx
149	xorl	12(%edi),%edx
150	movl	16(%edi),%esi
151	movl	%eax,4(%esp)
152	movl	%ebx,8(%esp)
153	movl	%ecx,12(%esp)
154	movl	%edx,16(%esp)
155.align	16
156.L002loop:
157	xorl	%esi,%eax
158	xorl	20(%edi),%ebx
159	movzbl	%ah,%esi
160	movl	2052(%ebp,%esi,8),%edx
161	movzbl	%al,%esi
162	xorl	4(%ebp,%esi,8),%edx
163	shrl	$16,%eax
164	movzbl	%bl,%esi
165	movl	(%ebp,%esi,8),%ecx
166	movzbl	%ah,%esi
167	xorl	(%ebp,%esi,8),%edx
168	movzbl	%bh,%esi
169	xorl	4(%ebp,%esi,8),%ecx
170	shrl	$16,%ebx
171	movzbl	%al,%eax
172	xorl	2048(%ebp,%eax,8),%edx
173	movzbl	%bh,%esi
174	movl	16(%esp),%eax
175	xorl	%edx,%ecx
176	rorl	$8,%edx
177	xorl	2048(%ebp,%esi,8),%ecx
178	movzbl	%bl,%esi
179	movl	12(%esp),%ebx
180	xorl	%eax,%edx
181	xorl	2052(%ebp,%esi,8),%ecx
182	movl	24(%edi),%esi
183	xorl	%ecx,%edx
184	movl	%edx,16(%esp)
185	xorl	%ebx,%ecx
186	movl	%ecx,12(%esp)
187	xorl	%esi,%ecx
188	xorl	28(%edi),%edx
189	movzbl	%ch,%esi
190	movl	2052(%ebp,%esi,8),%ebx
191	movzbl	%cl,%esi
192	xorl	4(%ebp,%esi,8),%ebx
193	shrl	$16,%ecx
194	movzbl	%dl,%esi
195	movl	(%ebp,%esi,8),%eax
196	movzbl	%ch,%esi
197	xorl	(%ebp,%esi,8),%ebx
198	movzbl	%dh,%esi
199	xorl	4(%ebp,%esi,8),%eax
200	shrl	$16,%edx
201	movzbl	%cl,%ecx
202	xorl	2048(%ebp,%ecx,8),%ebx
203	movzbl	%dh,%esi
204	movl	8(%esp),%ecx
205	xorl	%ebx,%eax
206	rorl	$8,%ebx
207	xorl	2048(%ebp,%esi,8),%eax
208	movzbl	%dl,%esi
209	movl	4(%esp),%edx
210	xorl	%ecx,%ebx
211	xorl	2052(%ebp,%esi,8),%eax
212	movl	32(%edi),%esi
213	xorl	%eax,%ebx
214	movl	%ebx,8(%esp)
215	xorl	%edx,%eax
216	movl	%eax,4(%esp)
217	xorl	%esi,%eax
218	xorl	36(%edi),%ebx
219	movzbl	%ah,%esi
220	movl	2052(%ebp,%esi,8),%edx
221	movzbl	%al,%esi
222	xorl	4(%ebp,%esi,8),%edx
223	shrl	$16,%eax
224	movzbl	%bl,%esi
225	movl	(%ebp,%esi,8),%ecx
226	movzbl	%ah,%esi
227	xorl	(%ebp,%esi,8),%edx
228	movzbl	%bh,%esi
229	xorl	4(%ebp,%esi,8),%ecx
230	shrl	$16,%ebx
231	movzbl	%al,%eax
232	xorl	2048(%ebp,%eax,8),%edx
233	movzbl	%bh,%esi
234	movl	16(%esp),%eax
235	xorl	%edx,%ecx
236	rorl	$8,%edx
237	xorl	2048(%ebp,%esi,8),%ecx
238	movzbl	%bl,%esi
239	movl	12(%esp),%ebx
240	xorl	%eax,%edx
241	xorl	2052(%ebp,%esi,8),%ecx
242	movl	40(%edi),%esi
243	xorl	%ecx,%edx
244	movl	%edx,16(%esp)
245	xorl	%ebx,%ecx
246	movl	%ecx,12(%esp)
247	xorl	%esi,%ecx
248	xorl	44(%edi),%edx
249	movzbl	%ch,%esi
250	movl	2052(%ebp,%esi,8),%ebx
251	movzbl	%cl,%esi
252	xorl	4(%ebp,%esi,8),%ebx
253	shrl	$16,%ecx
254	movzbl	%dl,%esi
255	movl	(%ebp,%esi,8),%eax
256	movzbl	%ch,%esi
257	xorl	(%ebp,%esi,8),%ebx
258	movzbl	%dh,%esi
259	xorl	4(%ebp,%esi,8),%eax
260	shrl	$16,%edx
261	movzbl	%cl,%ecx
262	xorl	2048(%ebp,%ecx,8),%ebx
263	movzbl	%dh,%esi
264	movl	8(%esp),%ecx
265	xorl	%ebx,%eax
266	rorl	$8,%ebx
267	xorl	2048(%ebp,%esi,8),%eax
268	movzbl	%dl,%esi
269	movl	4(%esp),%edx
270	xorl	%ecx,%ebx
271	xorl	2052(%ebp,%esi,8),%eax
272	movl	48(%edi),%esi
273	xorl	%eax,%ebx
274	movl	%ebx,8(%esp)
275	xorl	%edx,%eax
276	movl	%eax,4(%esp)
277	xorl	%esi,%eax
278	xorl	52(%edi),%ebx
279	movzbl	%ah,%esi
280	movl	2052(%ebp,%esi,8),%edx
281	movzbl	%al,%esi
282	xorl	4(%ebp,%esi,8),%edx
283	shrl	$16,%eax
284	movzbl	%bl,%esi
285	movl	(%ebp,%esi,8),%ecx
286	movzbl	%ah,%esi
287	xorl	(%ebp,%esi,8),%edx
288	movzbl	%bh,%esi
289	xorl	4(%ebp,%esi,8),%ecx
290	shrl	$16,%ebx
291	movzbl	%al,%eax
292	xorl	2048(%ebp,%eax,8),%edx
293	movzbl	%bh,%esi
294	movl	16(%esp),%eax
295	xorl	%edx,%ecx
296	rorl	$8,%edx
297	xorl	2048(%ebp,%esi,8),%ecx
298	movzbl	%bl,%esi
299	movl	12(%esp),%ebx
300	xorl	%eax,%edx
301	xorl	2052(%ebp,%esi,8),%ecx
302	movl	56(%edi),%esi
303	xorl	%ecx,%edx
304	movl	%edx,16(%esp)
305	xorl	%ebx,%ecx
306	movl	%ecx,12(%esp)
307	xorl	%esi,%ecx
308	xorl	60(%edi),%edx
309	movzbl	%ch,%esi
310	movl	2052(%ebp,%esi,8),%ebx
311	movzbl	%cl,%esi
312	xorl	4(%ebp,%esi,8),%ebx
313	shrl	$16,%ecx
314	movzbl	%dl,%esi
315	movl	(%ebp,%esi,8),%eax
316	movzbl	%ch,%esi
317	xorl	(%ebp,%esi,8),%ebx
318	movzbl	%dh,%esi
319	xorl	4(%ebp,%esi,8),%eax
320	shrl	$16,%edx
321	movzbl	%cl,%ecx
322	xorl	2048(%ebp,%ecx,8),%ebx
323	movzbl	%dh,%esi
324	movl	8(%esp),%ecx
325	xorl	%ebx,%eax
326	rorl	$8,%ebx
327	xorl	2048(%ebp,%esi,8),%eax
328	movzbl	%dl,%esi
329	movl	4(%esp),%edx
330	xorl	%ecx,%ebx
331	xorl	2052(%ebp,%esi,8),%eax
332	movl	64(%edi),%esi
333	xorl	%eax,%ebx
334	movl	%ebx,8(%esp)
335	xorl	%edx,%eax
336	movl	%eax,4(%esp)
337	addl	$64,%edi
338	cmpl	20(%esp),%edi
339	je	.L003done
340	andl	%eax,%esi
341	movl	16(%esp),%edx
342	roll	$1,%esi
343	movl	%edx,%ecx
344	xorl	%esi,%ebx
345	orl	12(%edi),%ecx
346	movl	%ebx,8(%esp)
347	xorl	12(%esp),%ecx
348	movl	4(%edi),%esi
349	movl	%ecx,12(%esp)
350	orl	%ebx,%esi
351	andl	8(%edi),%ecx
352	xorl	%esi,%eax
353	roll	$1,%ecx
354	movl	%eax,4(%esp)
355	xorl	%ecx,%edx
356	movl	16(%edi),%esi
357	movl	%edx,16(%esp)
358	jmp	.L002loop
359.align	8
360.L003done:
361	movl	%eax,%ecx
362	movl	%ebx,%edx
363	movl	12(%esp),%eax
364	movl	16(%esp),%ebx
365	xorl	%esi,%eax
366	xorl	4(%edi),%ebx
367	xorl	8(%edi),%ecx
368	xorl	12(%edi),%edx
369	ret
370.size	_x86_Camellia_encrypt,.-_x86_Camellia_encrypt
371.globl	Camellia_DecryptBlock_Rounds
372.type	Camellia_DecryptBlock_Rounds,@function
373.align	16
374Camellia_DecryptBlock_Rounds:
375.L_Camellia_DecryptBlock_Rounds_begin:
376	#ifdef __CET__
377
378.byte	243,15,30,251
379	#endif
380
381	pushl	%ebp
382	pushl	%ebx
383	pushl	%esi
384	pushl	%edi
385	movl	20(%esp),%eax
386	movl	24(%esp),%esi
387	movl	28(%esp),%edi
388	movl	%esp,%ebx
389	subl	$28,%esp
390	andl	$-64,%esp
391	leal	-127(%edi),%ecx
392	subl	%esp,%ecx
393	negl	%ecx
394	andl	$960,%ecx
395	subl	%ecx,%esp
396	addl	$4,%esp
397	shll	$6,%eax
398	movl	%edi,16(%esp)
399	leal	(%edi,%eax,1),%edi
400	movl	%ebx,20(%esp)
401	call	.L004pic_point
402.L004pic_point:
403	popl	%ebp
404	leal	.LCamellia_SBOX-.L004pic_point(%ebp),%ebp
405	movl	(%esi),%eax
406	movl	4(%esi),%ebx
407	movl	8(%esi),%ecx
408	bswap	%eax
409	movl	12(%esi),%edx
410	bswap	%ebx
411	bswap	%ecx
412	bswap	%edx
413	call	_x86_Camellia_decrypt
414	movl	20(%esp),%esp
415	bswap	%eax
416	movl	32(%esp),%esi
417	bswap	%ebx
418	bswap	%ecx
419	bswap	%edx
420	movl	%eax,(%esi)
421	movl	%ebx,4(%esi)
422	movl	%ecx,8(%esi)
423	movl	%edx,12(%esi)
424	popl	%edi
425	popl	%esi
426	popl	%ebx
427	popl	%ebp
428	ret
429.size	Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
430.globl	Camellia_DecryptBlock
431.type	Camellia_DecryptBlock,@function
432.align	16
433Camellia_DecryptBlock:
434.L_Camellia_DecryptBlock_begin:
435	#ifdef __CET__
436
437.byte	243,15,30,251
438	#endif
439
440	movl	$128,%eax
441	subl	4(%esp),%eax
442	movl	$3,%eax
443	adcl	$0,%eax
444	movl	%eax,4(%esp)
445	jmp	.L_Camellia_DecryptBlock_Rounds_begin
446.size	Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
447.globl	Camellia_decrypt
448.type	Camellia_decrypt,@function
449.align	16
450Camellia_decrypt:
451.L_Camellia_decrypt_begin:
452	#ifdef __CET__
453
454.byte	243,15,30,251
455	#endif
456
457	pushl	%ebp
458	pushl	%ebx
459	pushl	%esi
460	pushl	%edi
461	movl	20(%esp),%esi
462	movl	28(%esp),%edi
463	movl	%esp,%ebx
464	subl	$28,%esp
465	andl	$-64,%esp
466	movl	272(%edi),%eax
467	leal	-127(%edi),%ecx
468	subl	%esp,%ecx
469	negl	%ecx
470	andl	$960,%ecx
471	subl	%ecx,%esp
472	addl	$4,%esp
473	shll	$6,%eax
474	movl	%edi,16(%esp)
475	leal	(%edi,%eax,1),%edi
476	movl	%ebx,20(%esp)
477	call	.L005pic_point
478.L005pic_point:
479	popl	%ebp
480	leal	.LCamellia_SBOX-.L005pic_point(%ebp),%ebp
481	movl	(%esi),%eax
482	movl	4(%esi),%ebx
483	movl	8(%esi),%ecx
484	bswap	%eax
485	movl	12(%esi),%edx
486	bswap	%ebx
487	bswap	%ecx
488	bswap	%edx
489	call	_x86_Camellia_decrypt
490	movl	20(%esp),%esp
491	bswap	%eax
492	movl	24(%esp),%esi
493	bswap	%ebx
494	bswap	%ecx
495	bswap	%edx
496	movl	%eax,(%esi)
497	movl	%ebx,4(%esi)
498	movl	%ecx,8(%esi)
499	movl	%edx,12(%esi)
500	popl	%edi
501	popl	%esi
502	popl	%ebx
503	popl	%ebp
504	ret
505.size	Camellia_decrypt,.-.L_Camellia_decrypt_begin
506.type	_x86_Camellia_decrypt,@function
507.align	16
508_x86_Camellia_decrypt:
509	#ifdef __CET__
510
511.byte	243,15,30,251
512	#endif
513
514	xorl	(%edi),%eax
515	xorl	4(%edi),%ebx
516	xorl	8(%edi),%ecx
517	xorl	12(%edi),%edx
518	movl	-8(%edi),%esi
519	movl	%eax,4(%esp)
520	movl	%ebx,8(%esp)
521	movl	%ecx,12(%esp)
522	movl	%edx,16(%esp)
523.align	16
524.L006loop:
525	xorl	%esi,%eax
526	xorl	-4(%edi),%ebx
527	movzbl	%ah,%esi
528	movl	2052(%ebp,%esi,8),%edx
529	movzbl	%al,%esi
530	xorl	4(%ebp,%esi,8),%edx
531	shrl	$16,%eax
532	movzbl	%bl,%esi
533	movl	(%ebp,%esi,8),%ecx
534	movzbl	%ah,%esi
535	xorl	(%ebp,%esi,8),%edx
536	movzbl	%bh,%esi
537	xorl	4(%ebp,%esi,8),%ecx
538	shrl	$16,%ebx
539	movzbl	%al,%eax
540	xorl	2048(%ebp,%eax,8),%edx
541	movzbl	%bh,%esi
542	movl	16(%esp),%eax
543	xorl	%edx,%ecx
544	rorl	$8,%edx
545	xorl	2048(%ebp,%esi,8),%ecx
546	movzbl	%bl,%esi
547	movl	12(%esp),%ebx
548	xorl	%eax,%edx
549	xorl	2052(%ebp,%esi,8),%ecx
550	movl	-16(%edi),%esi
551	xorl	%ecx,%edx
552	movl	%edx,16(%esp)
553	xorl	%ebx,%ecx
554	movl	%ecx,12(%esp)
555	xorl	%esi,%ecx
556	xorl	-12(%edi),%edx
557	movzbl	%ch,%esi
558	movl	2052(%ebp,%esi,8),%ebx
559	movzbl	%cl,%esi
560	xorl	4(%ebp,%esi,8),%ebx
561	shrl	$16,%ecx
562	movzbl	%dl,%esi
563	movl	(%ebp,%esi,8),%eax
564	movzbl	%ch,%esi
565	xorl	(%ebp,%esi,8),%ebx
566	movzbl	%dh,%esi
567	xorl	4(%ebp,%esi,8),%eax
568	shrl	$16,%edx
569	movzbl	%cl,%ecx
570	xorl	2048(%ebp,%ecx,8),%ebx
571	movzbl	%dh,%esi
572	movl	8(%esp),%ecx
573	xorl	%ebx,%eax
574	rorl	$8,%ebx
575	xorl	2048(%ebp,%esi,8),%eax
576	movzbl	%dl,%esi
577	movl	4(%esp),%edx
578	xorl	%ecx,%ebx
579	xorl	2052(%ebp,%esi,8),%eax
580	movl	-24(%edi),%esi
581	xorl	%eax,%ebx
582	movl	%ebx,8(%esp)
583	xorl	%edx,%eax
584	movl	%eax,4(%esp)
585	xorl	%esi,%eax
586	xorl	-20(%edi),%ebx
587	movzbl	%ah,%esi
588	movl	2052(%ebp,%esi,8),%edx
589	movzbl	%al,%esi
590	xorl	4(%ebp,%esi,8),%edx
591	shrl	$16,%eax
592	movzbl	%bl,%esi
593	movl	(%ebp,%esi,8),%ecx
594	movzbl	%ah,%esi
595	xorl	(%ebp,%esi,8),%edx
596	movzbl	%bh,%esi
597	xorl	4(%ebp,%esi,8),%ecx
598	shrl	$16,%ebx
599	movzbl	%al,%eax
600	xorl	2048(%ebp,%eax,8),%edx
601	movzbl	%bh,%esi
602	movl	16(%esp),%eax
603	xorl	%edx,%ecx
604	rorl	$8,%edx
605	xorl	2048(%ebp,%esi,8),%ecx
606	movzbl	%bl,%esi
607	movl	12(%esp),%ebx
608	xorl	%eax,%edx
609	xorl	2052(%ebp,%esi,8),%ecx
610	movl	-32(%edi),%esi
611	xorl	%ecx,%edx
612	movl	%edx,16(%esp)
613	xorl	%ebx,%ecx
614	movl	%ecx,12(%esp)
615	xorl	%esi,%ecx
616	xorl	-28(%edi),%edx
617	movzbl	%ch,%esi
618	movl	2052(%ebp,%esi,8),%ebx
619	movzbl	%cl,%esi
620	xorl	4(%ebp,%esi,8),%ebx
621	shrl	$16,%ecx
622	movzbl	%dl,%esi
623	movl	(%ebp,%esi,8),%eax
624	movzbl	%ch,%esi
625	xorl	(%ebp,%esi,8),%ebx
626	movzbl	%dh,%esi
627	xorl	4(%ebp,%esi,8),%eax
628	shrl	$16,%edx
629	movzbl	%cl,%ecx
630	xorl	2048(%ebp,%ecx,8),%ebx
631	movzbl	%dh,%esi
632	movl	8(%esp),%ecx
633	xorl	%ebx,%eax
634	rorl	$8,%ebx
635	xorl	2048(%ebp,%esi,8),%eax
636	movzbl	%dl,%esi
637	movl	4(%esp),%edx
638	xorl	%ecx,%ebx
639	xorl	2052(%ebp,%esi,8),%eax
640	movl	-40(%edi),%esi
641	xorl	%eax,%ebx
642	movl	%ebx,8(%esp)
643	xorl	%edx,%eax
644	movl	%eax,4(%esp)
645	xorl	%esi,%eax
646	xorl	-36(%edi),%ebx
647	movzbl	%ah,%esi
648	movl	2052(%ebp,%esi,8),%edx
649	movzbl	%al,%esi
650	xorl	4(%ebp,%esi,8),%edx
651	shrl	$16,%eax
652	movzbl	%bl,%esi
653	movl	(%ebp,%esi,8),%ecx
654	movzbl	%ah,%esi
655	xorl	(%ebp,%esi,8),%edx
656	movzbl	%bh,%esi
657	xorl	4(%ebp,%esi,8),%ecx
658	shrl	$16,%ebx
659	movzbl	%al,%eax
660	xorl	2048(%ebp,%eax,8),%edx
661	movzbl	%bh,%esi
662	movl	16(%esp),%eax
663	xorl	%edx,%ecx
664	rorl	$8,%edx
665	xorl	2048(%ebp,%esi,8),%ecx
666	movzbl	%bl,%esi
667	movl	12(%esp),%ebx
668	xorl	%eax,%edx
669	xorl	2052(%ebp,%esi,8),%ecx
670	movl	-48(%edi),%esi
671	xorl	%ecx,%edx
672	movl	%edx,16(%esp)
673	xorl	%ebx,%ecx
674	movl	%ecx,12(%esp)
675	xorl	%esi,%ecx
676	xorl	-44(%edi),%edx
677	movzbl	%ch,%esi
678	movl	2052(%ebp,%esi,8),%ebx
679	movzbl	%cl,%esi
680	xorl	4(%ebp,%esi,8),%ebx
681	shrl	$16,%ecx
682	movzbl	%dl,%esi
683	movl	(%ebp,%esi,8),%eax
684	movzbl	%ch,%esi
685	xorl	(%ebp,%esi,8),%ebx
686	movzbl	%dh,%esi
687	xorl	4(%ebp,%esi,8),%eax
688	shrl	$16,%edx
689	movzbl	%cl,%ecx
690	xorl	2048(%ebp,%ecx,8),%ebx
691	movzbl	%dh,%esi
692	movl	8(%esp),%ecx
693	xorl	%ebx,%eax
694	rorl	$8,%ebx
695	xorl	2048(%ebp,%esi,8),%eax
696	movzbl	%dl,%esi
697	movl	4(%esp),%edx
698	xorl	%ecx,%ebx
699	xorl	2052(%ebp,%esi,8),%eax
700	movl	-56(%edi),%esi
701	xorl	%eax,%ebx
702	movl	%ebx,8(%esp)
703	xorl	%edx,%eax
704	movl	%eax,4(%esp)
705	subl	$64,%edi
706	cmpl	20(%esp),%edi
707	je	.L007done
708	andl	%eax,%esi
709	movl	16(%esp),%edx
710	roll	$1,%esi
711	movl	%edx,%ecx
712	xorl	%esi,%ebx
713	orl	4(%edi),%ecx
714	movl	%ebx,8(%esp)
715	xorl	12(%esp),%ecx
716	movl	12(%edi),%esi
717	movl	%ecx,12(%esp)
718	orl	%ebx,%esi
719	andl	(%edi),%ecx
720	xorl	%esi,%eax
721	roll	$1,%ecx
722	movl	%eax,4(%esp)
723	xorl	%ecx,%edx
724	movl	-8(%edi),%esi
725	movl	%edx,16(%esp)
726	jmp	.L006loop
727.align	8
728.L007done:
729	movl	%eax,%ecx
730	movl	%ebx,%edx
731	movl	12(%esp),%eax
732	movl	16(%esp),%ebx
733	xorl	%esi,%ecx
734	xorl	12(%edi),%edx
735	xorl	(%edi),%eax
736	xorl	4(%edi),%ebx
737	ret
738.size	_x86_Camellia_decrypt,.-_x86_Camellia_decrypt
739.globl	Camellia_Ekeygen
740.type	Camellia_Ekeygen,@function
741.align	16
742Camellia_Ekeygen:
743.L_Camellia_Ekeygen_begin:
744	#ifdef __CET__
745
746.byte	243,15,30,251
747	#endif
748
749	pushl	%ebp
750	pushl	%ebx
751	pushl	%esi
752	pushl	%edi
753	subl	$16,%esp
754	movl	36(%esp),%ebp
755	movl	40(%esp),%esi
756	movl	44(%esp),%edi
757	movl	(%esi),%eax
758	movl	4(%esi),%ebx
759	movl	8(%esi),%ecx
760	movl	12(%esi),%edx
761	bswap	%eax
762	bswap	%ebx
763	bswap	%ecx
764	bswap	%edx
765	movl	%eax,(%edi)
766	movl	%ebx,4(%edi)
767	movl	%ecx,8(%edi)
768	movl	%edx,12(%edi)
769	cmpl	$128,%ebp
770	je	.L0081st128
771	movl	16(%esi),%eax
772	movl	20(%esi),%ebx
773	cmpl	$192,%ebp
774	je	.L0091st192
775	movl	24(%esi),%ecx
776	movl	28(%esi),%edx
777	jmp	.L0101st256
778.align	4
779.L0091st192:
780	movl	%eax,%ecx
781	movl	%ebx,%edx
782	notl	%ecx
783	notl	%edx
784.align	4
785.L0101st256:
786	bswap	%eax
787	bswap	%ebx
788	bswap	%ecx
789	bswap	%edx
790	movl	%eax,32(%edi)
791	movl	%ebx,36(%edi)
792	movl	%ecx,40(%edi)
793	movl	%edx,44(%edi)
794	xorl	(%edi),%eax
795	xorl	4(%edi),%ebx
796	xorl	8(%edi),%ecx
797	xorl	12(%edi),%edx
798.align	4
799.L0081st128:
800	call	.L011pic_point
801.L011pic_point:
802	popl	%ebp
803	leal	.LCamellia_SBOX-.L011pic_point(%ebp),%ebp
804	leal	.LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
805	movl	(%edi),%esi
806	movl	%eax,(%esp)
807	movl	%ebx,4(%esp)
808	movl	%ecx,8(%esp)
809	movl	%edx,12(%esp)
810	xorl	%esi,%eax
811	xorl	4(%edi),%ebx
812	movzbl	%ah,%esi
813	movl	2052(%ebp,%esi,8),%edx
814	movzbl	%al,%esi
815	xorl	4(%ebp,%esi,8),%edx
816	shrl	$16,%eax
817	movzbl	%bl,%esi
818	movl	(%ebp,%esi,8),%ecx
819	movzbl	%ah,%esi
820	xorl	(%ebp,%esi,8),%edx
821	movzbl	%bh,%esi
822	xorl	4(%ebp,%esi,8),%ecx
823	shrl	$16,%ebx
824	movzbl	%al,%eax
825	xorl	2048(%ebp,%eax,8),%edx
826	movzbl	%bh,%esi
827	movl	12(%esp),%eax
828	xorl	%edx,%ecx
829	rorl	$8,%edx
830	xorl	2048(%ebp,%esi,8),%ecx
831	movzbl	%bl,%esi
832	movl	8(%esp),%ebx
833	xorl	%eax,%edx
834	xorl	2052(%ebp,%esi,8),%ecx
835	movl	8(%edi),%esi
836	xorl	%ecx,%edx
837	movl	%edx,12(%esp)
838	xorl	%ebx,%ecx
839	movl	%ecx,8(%esp)
840	xorl	%esi,%ecx
841	xorl	12(%edi),%edx
842	movzbl	%ch,%esi
843	movl	2052(%ebp,%esi,8),%ebx
844	movzbl	%cl,%esi
845	xorl	4(%ebp,%esi,8),%ebx
846	shrl	$16,%ecx
847	movzbl	%dl,%esi
848	movl	(%ebp,%esi,8),%eax
849	movzbl	%ch,%esi
850	xorl	(%ebp,%esi,8),%ebx
851	movzbl	%dh,%esi
852	xorl	4(%ebp,%esi,8),%eax
853	shrl	$16,%edx
854	movzbl	%cl,%ecx
855	xorl	2048(%ebp,%ecx,8),%ebx
856	movzbl	%dh,%esi
857	movl	4(%esp),%ecx
858	xorl	%ebx,%eax
859	rorl	$8,%ebx
860	xorl	2048(%ebp,%esi,8),%eax
861	movzbl	%dl,%esi
862	movl	(%esp),%edx
863	xorl	%ecx,%ebx
864	xorl	2052(%ebp,%esi,8),%eax
865	movl	16(%edi),%esi
866	xorl	%eax,%ebx
867	movl	%ebx,4(%esp)
868	xorl	%edx,%eax
869	movl	%eax,(%esp)
870	movl	8(%esp),%ecx
871	movl	12(%esp),%edx
872	movl	44(%esp),%esi
873	xorl	(%esi),%eax
874	xorl	4(%esi),%ebx
875	xorl	8(%esi),%ecx
876	xorl	12(%esi),%edx
877	movl	16(%edi),%esi
878	movl	%eax,(%esp)
879	movl	%ebx,4(%esp)
880	movl	%ecx,8(%esp)
881	movl	%edx,12(%esp)
882	xorl	%esi,%eax
883	xorl	20(%edi),%ebx
884	movzbl	%ah,%esi
885	movl	2052(%ebp,%esi,8),%edx
886	movzbl	%al,%esi
887	xorl	4(%ebp,%esi,8),%edx
888	shrl	$16,%eax
889	movzbl	%bl,%esi
890	movl	(%ebp,%esi,8),%ecx
891	movzbl	%ah,%esi
892	xorl	(%ebp,%esi,8),%edx
893	movzbl	%bh,%esi
894	xorl	4(%ebp,%esi,8),%ecx
895	shrl	$16,%ebx
896	movzbl	%al,%eax
897	xorl	2048(%ebp,%eax,8),%edx
898	movzbl	%bh,%esi
899	movl	12(%esp),%eax
900	xorl	%edx,%ecx
901	rorl	$8,%edx
902	xorl	2048(%ebp,%esi,8),%ecx
903	movzbl	%bl,%esi
904	movl	8(%esp),%ebx
905	xorl	%eax,%edx
906	xorl	2052(%ebp,%esi,8),%ecx
907	movl	24(%edi),%esi
908	xorl	%ecx,%edx
909	movl	%edx,12(%esp)
910	xorl	%ebx,%ecx
911	movl	%ecx,8(%esp)
912	xorl	%esi,%ecx
913	xorl	28(%edi),%edx
914	movzbl	%ch,%esi
915	movl	2052(%ebp,%esi,8),%ebx
916	movzbl	%cl,%esi
917	xorl	4(%ebp,%esi,8),%ebx
918	shrl	$16,%ecx
919	movzbl	%dl,%esi
920	movl	(%ebp,%esi,8),%eax
921	movzbl	%ch,%esi
922	xorl	(%ebp,%esi,8),%ebx
923	movzbl	%dh,%esi
924	xorl	4(%ebp,%esi,8),%eax
925	shrl	$16,%edx
926	movzbl	%cl,%ecx
927	xorl	2048(%ebp,%ecx,8),%ebx
928	movzbl	%dh,%esi
929	movl	4(%esp),%ecx
930	xorl	%ebx,%eax
931	rorl	$8,%ebx
932	xorl	2048(%ebp,%esi,8),%eax
933	movzbl	%dl,%esi
934	movl	(%esp),%edx
935	xorl	%ecx,%ebx
936	xorl	2052(%ebp,%esi,8),%eax
937	movl	32(%edi),%esi
938	xorl	%eax,%ebx
939	movl	%ebx,4(%esp)
940	xorl	%edx,%eax
941	movl	%eax,(%esp)
942	movl	8(%esp),%ecx
943	movl	12(%esp),%edx
944	movl	36(%esp),%esi
945	cmpl	$128,%esi
946	jne	.L0122nd256
947	movl	44(%esp),%edi
948	leal	128(%edi),%edi
949	movl	%eax,-112(%edi)
950	movl	%ebx,-108(%edi)
951	movl	%ecx,-104(%edi)
952	movl	%edx,-100(%edi)
953	movl	%eax,%ebp
954	shll	$15,%eax
955	movl	%ebx,%esi
956	shrl	$17,%esi
957	shll	$15,%ebx
958	orl	%esi,%eax
959	movl	%ecx,%esi
960	shll	$15,%ecx
961	movl	%eax,-80(%edi)
962	shrl	$17,%esi
963	orl	%esi,%ebx
964	shrl	$17,%ebp
965	movl	%edx,%esi
966	shrl	$17,%esi
967	movl	%ebx,-76(%edi)
968	shll	$15,%edx
969	orl	%esi,%ecx
970	orl	%ebp,%edx
971	movl	%ecx,-72(%edi)
972	movl	%edx,-68(%edi)
973	movl	%eax,%ebp
974	shll	$15,%eax
975	movl	%ebx,%esi
976	shrl	$17,%esi
977	shll	$15,%ebx
978	orl	%esi,%eax
979	movl	%ecx,%esi
980	shll	$15,%ecx
981	movl	%eax,-64(%edi)
982	shrl	$17,%esi
983	orl	%esi,%ebx
984	shrl	$17,%ebp
985	movl	%edx,%esi
986	shrl	$17,%esi
987	movl	%ebx,-60(%edi)
988	shll	$15,%edx
989	orl	%esi,%ecx
990	orl	%ebp,%edx
991	movl	%ecx,-56(%edi)
992	movl	%edx,-52(%edi)
993	movl	%eax,%ebp
994	shll	$15,%eax
995	movl	%ebx,%esi
996	shrl	$17,%esi
997	shll	$15,%ebx
998	orl	%esi,%eax
999	movl	%ecx,%esi
1000	shll	$15,%ecx
1001	movl	%eax,-32(%edi)
1002	shrl	$17,%esi
1003	orl	%esi,%ebx
1004	shrl	$17,%ebp
1005	movl	%edx,%esi
1006	shrl	$17,%esi
1007	movl	%ebx,-28(%edi)
1008	shll	$15,%edx
1009	orl	%esi,%ecx
1010	orl	%ebp,%edx
1011	movl	%eax,%ebp
1012	shll	$15,%eax
1013	movl	%ebx,%esi
1014	shrl	$17,%esi
1015	shll	$15,%ebx
1016	orl	%esi,%eax
1017	movl	%ecx,%esi
1018	shll	$15,%ecx
1019	movl	%eax,-16(%edi)
1020	shrl	$17,%esi
1021	orl	%esi,%ebx
1022	shrl	$17,%ebp
1023	movl	%edx,%esi
1024	shrl	$17,%esi
1025	movl	%ebx,-12(%edi)
1026	shll	$15,%edx
1027	orl	%esi,%ecx
1028	orl	%ebp,%edx
1029	movl	%ecx,-8(%edi)
1030	movl	%edx,-4(%edi)
1031	movl	%ebx,%ebp
1032	shll	$2,%ebx
1033	movl	%ecx,%esi
1034	shrl	$30,%esi
1035	shll	$2,%ecx
1036	orl	%esi,%ebx
1037	movl	%edx,%esi
1038	shll	$2,%edx
1039	movl	%ebx,32(%edi)
1040	shrl	$30,%esi
1041	orl	%esi,%ecx
1042	shrl	$30,%ebp
1043	movl	%eax,%esi
1044	shrl	$30,%esi
1045	movl	%ecx,36(%edi)
1046	shll	$2,%eax
1047	orl	%esi,%edx
1048	orl	%ebp,%eax
1049	movl	%edx,40(%edi)
1050	movl	%eax,44(%edi)
1051	movl	%ebx,%ebp
1052	shll	$17,%ebx
1053	movl	%ecx,%esi
1054	shrl	$15,%esi
1055	shll	$17,%ecx
1056	orl	%esi,%ebx
1057	movl	%edx,%esi
1058	shll	$17,%edx
1059	movl	%ebx,64(%edi)
1060	shrl	$15,%esi
1061	orl	%esi,%ecx
1062	shrl	$15,%ebp
1063	movl	%eax,%esi
1064	shrl	$15,%esi
1065	movl	%ecx,68(%edi)
1066	shll	$17,%eax
1067	orl	%esi,%edx
1068	orl	%ebp,%eax
1069	movl	%edx,72(%edi)
1070	movl	%eax,76(%edi)
1071	movl	-128(%edi),%ebx
1072	movl	-124(%edi),%ecx
1073	movl	-120(%edi),%edx
1074	movl	-116(%edi),%eax
1075	movl	%ebx,%ebp
1076	shll	$15,%ebx
1077	movl	%ecx,%esi
1078	shrl	$17,%esi
1079	shll	$15,%ecx
1080	orl	%esi,%ebx
1081	movl	%edx,%esi
1082	shll	$15,%edx
1083	movl	%ebx,-96(%edi)
1084	shrl	$17,%esi
1085	orl	%esi,%ecx
1086	shrl	$17,%ebp
1087	movl	%eax,%esi
1088	shrl	$17,%esi
1089	movl	%ecx,-92(%edi)
1090	shll	$15,%eax
1091	orl	%esi,%edx
1092	orl	%ebp,%eax
1093	movl	%edx,-88(%edi)
1094	movl	%eax,-84(%edi)
1095	movl	%ebx,%ebp
1096	shll	$30,%ebx
1097	movl	%ecx,%esi
1098	shrl	$2,%esi
1099	shll	$30,%ecx
1100	orl	%esi,%ebx
1101	movl	%edx,%esi
1102	shll	$30,%edx
1103	movl	%ebx,-48(%edi)
1104	shrl	$2,%esi
1105	orl	%esi,%ecx
1106	shrl	$2,%ebp
1107	movl	%eax,%esi
1108	shrl	$2,%esi
1109	movl	%ecx,-44(%edi)
1110	shll	$30,%eax
1111	orl	%esi,%edx
1112	orl	%ebp,%eax
1113	movl	%edx,-40(%edi)
1114	movl	%eax,-36(%edi)
1115	movl	%ebx,%ebp
1116	shll	$15,%ebx
1117	movl	%ecx,%esi
1118	shrl	$17,%esi
1119	shll	$15,%ecx
1120	orl	%esi,%ebx
1121	movl	%edx,%esi
1122	shll	$15,%edx
1123	shrl	$17,%esi
1124	orl	%esi,%ecx
1125	shrl	$17,%ebp
1126	movl	%eax,%esi
1127	shrl	$17,%esi
1128	shll	$15,%eax
1129	orl	%esi,%edx
1130	orl	%ebp,%eax
1131	movl	%edx,-24(%edi)
1132	movl	%eax,-20(%edi)
1133	movl	%ebx,%ebp
1134	shll	$17,%ebx
1135	movl	%ecx,%esi
1136	shrl	$15,%esi
1137	shll	$17,%ecx
1138	orl	%esi,%ebx
1139	movl	%edx,%esi
1140	shll	$17,%edx
1141	movl	%ebx,(%edi)
1142	shrl	$15,%esi
1143	orl	%esi,%ecx
1144	shrl	$15,%ebp
1145	movl	%eax,%esi
1146	shrl	$15,%esi
1147	movl	%ecx,4(%edi)
1148	shll	$17,%eax
1149	orl	%esi,%edx
1150	orl	%ebp,%eax
1151	movl	%edx,8(%edi)
1152	movl	%eax,12(%edi)
1153	movl	%ebx,%ebp
1154	shll	$17,%ebx
1155	movl	%ecx,%esi
1156	shrl	$15,%esi
1157	shll	$17,%ecx
1158	orl	%esi,%ebx
1159	movl	%edx,%esi
1160	shll	$17,%edx
1161	movl	%ebx,16(%edi)
1162	shrl	$15,%esi
1163	orl	%esi,%ecx
1164	shrl	$15,%ebp
1165	movl	%eax,%esi
1166	shrl	$15,%esi
1167	movl	%ecx,20(%edi)
1168	shll	$17,%eax
1169	orl	%esi,%edx
1170	orl	%ebp,%eax
1171	movl	%edx,24(%edi)
1172	movl	%eax,28(%edi)
1173	movl	%ebx,%ebp
1174	shll	$17,%ebx
1175	movl	%ecx,%esi
1176	shrl	$15,%esi
1177	shll	$17,%ecx
1178	orl	%esi,%ebx
1179	movl	%edx,%esi
1180	shll	$17,%edx
1181	movl	%ebx,48(%edi)
1182	shrl	$15,%esi
1183	orl	%esi,%ecx
1184	shrl	$15,%ebp
1185	movl	%eax,%esi
1186	shrl	$15,%esi
1187	movl	%ecx,52(%edi)
1188	shll	$17,%eax
1189	orl	%esi,%edx
1190	orl	%ebp,%eax
1191	movl	%edx,56(%edi)
1192	movl	%eax,60(%edi)
1193	movl	$3,%eax
1194	jmp	.L013done
1195.align	16
1196.L0122nd256:
1197	movl	44(%esp),%esi
1198	movl	%eax,48(%esi)
1199	movl	%ebx,52(%esi)
1200	movl	%ecx,56(%esi)
1201	movl	%edx,60(%esi)
1202	xorl	32(%esi),%eax
1203	xorl	36(%esi),%ebx
1204	xorl	40(%esi),%ecx
1205	xorl	44(%esi),%edx
1206	movl	32(%edi),%esi
1207	movl	%eax,(%esp)
1208	movl	%ebx,4(%esp)
1209	movl	%ecx,8(%esp)
1210	movl	%edx,12(%esp)
1211	xorl	%esi,%eax
1212	xorl	36(%edi),%ebx
1213	movzbl	%ah,%esi
1214	movl	2052(%ebp,%esi,8),%edx
1215	movzbl	%al,%esi
1216	xorl	4(%ebp,%esi,8),%edx
1217	shrl	$16,%eax
1218	movzbl	%bl,%esi
1219	movl	(%ebp,%esi,8),%ecx
1220	movzbl	%ah,%esi
1221	xorl	(%ebp,%esi,8),%edx
1222	movzbl	%bh,%esi
1223	xorl	4(%ebp,%esi,8),%ecx
1224	shrl	$16,%ebx
1225	movzbl	%al,%eax
1226	xorl	2048(%ebp,%eax,8),%edx
1227	movzbl	%bh,%esi
1228	movl	12(%esp),%eax
1229	xorl	%edx,%ecx
1230	rorl	$8,%edx
1231	xorl	2048(%ebp,%esi,8),%ecx
1232	movzbl	%bl,%esi
1233	movl	8(%esp),%ebx
1234	xorl	%eax,%edx
1235	xorl	2052(%ebp,%esi,8),%ecx
1236	movl	40(%edi),%esi
1237	xorl	%ecx,%edx
1238	movl	%edx,12(%esp)
1239	xorl	%ebx,%ecx
1240	movl	%ecx,8(%esp)
1241	xorl	%esi,%ecx
1242	xorl	44(%edi),%edx
1243	movzbl	%ch,%esi
1244	movl	2052(%ebp,%esi,8),%ebx
1245	movzbl	%cl,%esi
1246	xorl	4(%ebp,%esi,8),%ebx
1247	shrl	$16,%ecx
1248	movzbl	%dl,%esi
1249	movl	(%ebp,%esi,8),%eax
1250	movzbl	%ch,%esi
1251	xorl	(%ebp,%esi,8),%ebx
1252	movzbl	%dh,%esi
1253	xorl	4(%ebp,%esi,8),%eax
1254	shrl	$16,%edx
1255	movzbl	%cl,%ecx
1256	xorl	2048(%ebp,%ecx,8),%ebx
1257	movzbl	%dh,%esi
1258	movl	4(%esp),%ecx
1259	xorl	%ebx,%eax
1260	rorl	$8,%ebx
1261	xorl	2048(%ebp,%esi,8),%eax
1262	movzbl	%dl,%esi
1263	movl	(%esp),%edx
1264	xorl	%ecx,%ebx
1265	xorl	2052(%ebp,%esi,8),%eax
1266	movl	48(%edi),%esi
1267	xorl	%eax,%ebx
1268	movl	%ebx,4(%esp)
1269	xorl	%edx,%eax
1270	movl	%eax,(%esp)
1271	movl	8(%esp),%ecx
1272	movl	12(%esp),%edx
1273	movl	44(%esp),%edi
1274	leal	128(%edi),%edi
1275	movl	%eax,-112(%edi)
1276	movl	%ebx,-108(%edi)
1277	movl	%ecx,-104(%edi)
1278	movl	%edx,-100(%edi)
1279	movl	%eax,%ebp
1280	shll	$30,%eax
1281	movl	%ebx,%esi
1282	shrl	$2,%esi
1283	shll	$30,%ebx
1284	orl	%esi,%eax
1285	movl	%ecx,%esi
1286	shll	$30,%ecx
1287	movl	%eax,-48(%edi)
1288	shrl	$2,%esi
1289	orl	%esi,%ebx
1290	shrl	$2,%ebp
1291	movl	%edx,%esi
1292	shrl	$2,%esi
1293	movl	%ebx,-44(%edi)
1294	shll	$30,%edx
1295	orl	%esi,%ecx
1296	orl	%ebp,%edx
1297	movl	%ecx,-40(%edi)
1298	movl	%edx,-36(%edi)
1299	movl	%eax,%ebp
1300	shll	$30,%eax
1301	movl	%ebx,%esi
1302	shrl	$2,%esi
1303	shll	$30,%ebx
1304	orl	%esi,%eax
1305	movl	%ecx,%esi
1306	shll	$30,%ecx
1307	movl	%eax,32(%edi)
1308	shrl	$2,%esi
1309	orl	%esi,%ebx
1310	shrl	$2,%ebp
1311	movl	%edx,%esi
1312	shrl	$2,%esi
1313	movl	%ebx,36(%edi)
1314	shll	$30,%edx
1315	orl	%esi,%ecx
1316	orl	%ebp,%edx
1317	movl	%ecx,40(%edi)
1318	movl	%edx,44(%edi)
1319	movl	%ebx,%ebp
1320	shll	$19,%ebx
1321	movl	%ecx,%esi
1322	shrl	$13,%esi
1323	shll	$19,%ecx
1324	orl	%esi,%ebx
1325	movl	%edx,%esi
1326	shll	$19,%edx
1327	movl	%ebx,128(%edi)
1328	shrl	$13,%esi
1329	orl	%esi,%ecx
1330	shrl	$13,%ebp
1331	movl	%eax,%esi
1332	shrl	$13,%esi
1333	movl	%ecx,132(%edi)
1334	shll	$19,%eax
1335	orl	%esi,%edx
1336	orl	%ebp,%eax
1337	movl	%edx,136(%edi)
1338	movl	%eax,140(%edi)
1339	movl	-96(%edi),%ebx
1340	movl	-92(%edi),%ecx
1341	movl	-88(%edi),%edx
1342	movl	-84(%edi),%eax
1343	movl	%ebx,%ebp
1344	shll	$15,%ebx
1345	movl	%ecx,%esi
1346	shrl	$17,%esi
1347	shll	$15,%ecx
1348	orl	%esi,%ebx
1349	movl	%edx,%esi
1350	shll	$15,%edx
1351	movl	%ebx,-96(%edi)
1352	shrl	$17,%esi
1353	orl	%esi,%ecx
1354	shrl	$17,%ebp
1355	movl	%eax,%esi
1356	shrl	$17,%esi
1357	movl	%ecx,-92(%edi)
1358	shll	$15,%eax
1359	orl	%esi,%edx
1360	orl	%ebp,%eax
1361	movl	%edx,-88(%edi)
1362	movl	%eax,-84(%edi)
1363	movl	%ebx,%ebp
1364	shll	$15,%ebx
1365	movl	%ecx,%esi
1366	shrl	$17,%esi
1367	shll	$15,%ecx
1368	orl	%esi,%ebx
1369	movl	%edx,%esi
1370	shll	$15,%edx
1371	movl	%ebx,-64(%edi)
1372	shrl	$17,%esi
1373	orl	%esi,%ecx
1374	shrl	$17,%ebp
1375	movl	%eax,%esi
1376	shrl	$17,%esi
1377	movl	%ecx,-60(%edi)
1378	shll	$15,%eax
1379	orl	%esi,%edx
1380	orl	%ebp,%eax
1381	movl	%edx,-56(%edi)
1382	movl	%eax,-52(%edi)
1383	movl	%ebx,%ebp
1384	shll	$30,%ebx
1385	movl	%ecx,%esi
1386	shrl	$2,%esi
1387	shll	$30,%ecx
1388	orl	%esi,%ebx
1389	movl	%edx,%esi
1390	shll	$30,%edx
1391	movl	%ebx,16(%edi)
1392	shrl	$2,%esi
1393	orl	%esi,%ecx
1394	shrl	$2,%ebp
1395	movl	%eax,%esi
1396	shrl	$2,%esi
1397	movl	%ecx,20(%edi)
1398	shll	$30,%eax
1399	orl	%esi,%edx
1400	orl	%ebp,%eax
1401	movl	%edx,24(%edi)
1402	movl	%eax,28(%edi)
1403	movl	%ecx,%ebp
1404	shll	$2,%ecx
1405	movl	%edx,%esi
1406	shrl	$30,%esi
1407	shll	$2,%edx
1408	orl	%esi,%ecx
1409	movl	%eax,%esi
1410	shll	$2,%eax
1411	movl	%ecx,80(%edi)
1412	shrl	$30,%esi
1413	orl	%esi,%edx
1414	shrl	$30,%ebp
1415	movl	%ebx,%esi
1416	shrl	$30,%esi
1417	movl	%edx,84(%edi)
1418	shll	$2,%ebx
1419	orl	%esi,%eax
1420	orl	%ebp,%ebx
1421	movl	%eax,88(%edi)
1422	movl	%ebx,92(%edi)
1423	movl	-80(%edi),%ecx
1424	movl	-76(%edi),%edx
1425	movl	-72(%edi),%eax
1426	movl	-68(%edi),%ebx
1427	movl	%ecx,%ebp
1428	shll	$15,%ecx
1429	movl	%edx,%esi
1430	shrl	$17,%esi
1431	shll	$15,%edx
1432	orl	%esi,%ecx
1433	movl	%eax,%esi
1434	shll	$15,%eax
1435	movl	%ecx,-80(%edi)
1436	shrl	$17,%esi
1437	orl	%esi,%edx
1438	shrl	$17,%ebp
1439	movl	%ebx,%esi
1440	shrl	$17,%esi
1441	movl	%edx,-76(%edi)
1442	shll	$15,%ebx
1443	orl	%esi,%eax
1444	orl	%ebp,%ebx
1445	movl	%eax,-72(%edi)
1446	movl	%ebx,-68(%edi)
1447	movl	%ecx,%ebp
1448	shll	$30,%ecx
1449	movl	%edx,%esi
1450	shrl	$2,%esi
1451	shll	$30,%edx
1452	orl	%esi,%ecx
1453	movl	%eax,%esi
1454	shll	$30,%eax
1455	movl	%ecx,-16(%edi)
1456	shrl	$2,%esi
1457	orl	%esi,%edx
1458	shrl	$2,%ebp
1459	movl	%ebx,%esi
1460	shrl	$2,%esi
1461	movl	%edx,-12(%edi)
1462	shll	$30,%ebx
1463	orl	%esi,%eax
1464	orl	%ebp,%ebx
1465	movl	%eax,-8(%edi)
1466	movl	%ebx,-4(%edi)
1467	movl	%edx,64(%edi)
1468	movl	%eax,68(%edi)
1469	movl	%ebx,72(%edi)
1470	movl	%ecx,76(%edi)
1471	movl	%edx,%ebp
1472	shll	$17,%edx
1473	movl	%eax,%esi
1474	shrl	$15,%esi
1475	shll	$17,%eax
1476	orl	%esi,%edx
1477	movl	%ebx,%esi
1478	shll	$17,%ebx
1479	movl	%edx,96(%edi)
1480	shrl	$15,%esi
1481	orl	%esi,%eax
1482	shrl	$15,%ebp
1483	movl	%ecx,%esi
1484	shrl	$15,%esi
1485	movl	%eax,100(%edi)
1486	shll	$17,%ecx
1487	orl	%esi,%ebx
1488	orl	%ebp,%ecx
1489	movl	%ebx,104(%edi)
1490	movl	%ecx,108(%edi)
1491	movl	-128(%edi),%edx
1492	movl	-124(%edi),%eax
1493	movl	-120(%edi),%ebx
1494	movl	-116(%edi),%ecx
1495	movl	%eax,%ebp
1496	shll	$13,%eax
1497	movl	%ebx,%esi
1498	shrl	$19,%esi
1499	shll	$13,%ebx
1500	orl	%esi,%eax
1501	movl	%ecx,%esi
1502	shll	$13,%ecx
1503	movl	%eax,-32(%edi)
1504	shrl	$19,%esi
1505	orl	%esi,%ebx
1506	shrl	$19,%ebp
1507	movl	%edx,%esi
1508	shrl	$19,%esi
1509	movl	%ebx,-28(%edi)
1510	shll	$13,%edx
1511	orl	%esi,%ecx
1512	orl	%ebp,%edx
1513	movl	%ecx,-24(%edi)
1514	movl	%edx,-20(%edi)
1515	movl	%eax,%ebp
1516	shll	$15,%eax
1517	movl	%ebx,%esi
1518	shrl	$17,%esi
1519	shll	$15,%ebx
1520	orl	%esi,%eax
1521	movl	%ecx,%esi
1522	shll	$15,%ecx
1523	movl	%eax,(%edi)
1524	shrl	$17,%esi
1525	orl	%esi,%ebx
1526	shrl	$17,%ebp
1527	movl	%edx,%esi
1528	shrl	$17,%esi
1529	movl	%ebx,4(%edi)
1530	shll	$15,%edx
1531	orl	%esi,%ecx
1532	orl	%ebp,%edx
1533	movl	%ecx,8(%edi)
1534	movl	%edx,12(%edi)
1535	movl	%eax,%ebp
1536	shll	$17,%eax
1537	movl	%ebx,%esi
1538	shrl	$15,%esi
1539	shll	$17,%ebx
1540	orl	%esi,%eax
1541	movl	%ecx,%esi
1542	shll	$17,%ecx
1543	movl	%eax,48(%edi)
1544	shrl	$15,%esi
1545	orl	%esi,%ebx
1546	shrl	$15,%ebp
1547	movl	%edx,%esi
1548	shrl	$15,%esi
1549	movl	%ebx,52(%edi)
1550	shll	$17,%edx
1551	orl	%esi,%ecx
1552	orl	%ebp,%edx
1553	movl	%ecx,56(%edi)
1554	movl	%edx,60(%edi)
1555	movl	%ebx,%ebp
1556	shll	$2,%ebx
1557	movl	%ecx,%esi
1558	shrl	$30,%esi
1559	shll	$2,%ecx
1560	orl	%esi,%ebx
1561	movl	%edx,%esi
1562	shll	$2,%edx
1563	movl	%ebx,112(%edi)
1564	shrl	$30,%esi
1565	orl	%esi,%ecx
1566	shrl	$30,%ebp
1567	movl	%eax,%esi
1568	shrl	$30,%esi
1569	movl	%ecx,116(%edi)
1570	shll	$2,%eax
1571	orl	%esi,%edx
1572	orl	%ebp,%eax
1573	movl	%edx,120(%edi)
1574	movl	%eax,124(%edi)
1575	movl	$4,%eax
1576.L013done:
1577	leal	144(%edi),%edx
1578	addl	$16,%esp
1579	popl	%edi
1580	popl	%esi
1581	popl	%ebx
1582	popl	%ebp
1583	ret
1584.size	Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
1585.globl	Camellia_set_key
1586.type	Camellia_set_key,@function
1587.align	16
1588Camellia_set_key:
1589.L_Camellia_set_key_begin:
1590	#ifdef __CET__
1591
1592.byte	243,15,30,251
1593	#endif
1594
1595	pushl	%ebx
1596	movl	8(%esp),%ecx
1597	movl	12(%esp),%ebx
1598	movl	16(%esp),%edx
1599	movl	$-1,%eax
1600	testl	%ecx,%ecx
1601	jz	.L014done
1602	testl	%edx,%edx
1603	jz	.L014done
1604	movl	$-2,%eax
1605	cmpl	$256,%ebx
1606	je	.L015arg_ok
1607	cmpl	$192,%ebx
1608	je	.L015arg_ok
1609	cmpl	$128,%ebx
1610	jne	.L014done
1611.align	4
1612.L015arg_ok:
1613	pushl	%edx
1614	pushl	%ecx
1615	pushl	%ebx
1616	call	.L_Camellia_Ekeygen_begin
1617	addl	$12,%esp
1618	movl	%eax,(%edx)
1619	xorl	%eax,%eax
1620.align	4
1621.L014done:
1622	popl	%ebx
1623	ret
1624.size	Camellia_set_key,.-.L_Camellia_set_key_begin
1625.align	64
1626.LCamellia_SIGMA:
1627.long	2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
1628.align	64
1629.LCamellia_SBOX:
1630.long	1886416896,1886388336
1631.long	2189591040,741081132
1632.long	741092352,3014852787
1633.long	3974949888,3233808576
1634.long	3014898432,3840147684
1635.long	656877312,1465319511
1636.long	3233857536,3941204202
1637.long	3857048832,2930639022
1638.long	3840205824,589496355
1639.long	2240120064,1802174571
1640.long	1465341696,1162149957
1641.long	892679424,2779054245
1642.long	3941263872,3991732461
1643.long	202116096,1330577487
1644.long	2930683392,488439837
1645.long	1094795520,2459041938
1646.long	589505280,2256928902
1647.long	4025478912,2947481775
1648.long	1802201856,2088501372
1649.long	2475922176,522125343
1650.long	1162167552,1044250686
1651.long	421075200,3705405660
1652.long	2779096320,1583218782
1653.long	555819264,185270283
1654.long	3991792896,2795896998
1655.long	235802112,960036921
1656.long	1330597632,3587506389
1657.long	1313754624,1566376029
1658.long	488447232,3654877401
1659.long	1701143808,1515847770
1660.long	2459079168,1364262993
1661.long	3183328512,1819017324
1662.long	2256963072,2341142667
1663.long	3099113472,2593783962
1664.long	2947526400,4227531003
1665.long	2408550144,2964324528
1666.long	2088532992,1953759348
1667.long	3958106880,724238379
1668.long	522133248,4042260720
1669.long	3469659648,2223243396
1670.long	1044266496,3755933919
1671.long	808464384,3419078859
1672.long	3705461760,875823156
1673.long	1600085760,1987444854
1674.long	1583242752,1835860077
1675.long	3318072576,2846425257
1676.long	185273088,3520135377
1677.long	437918208,67371012
1678.long	2795939328,336855060
1679.long	3789676800,976879674
1680.long	960051456,3739091166
1681.long	3402287616,286326801
1682.long	3587560704,842137650
1683.long	1195853568,2627469468
1684.long	1566399744,1397948499
1685.long	1027423488,4075946226
1686.long	3654932736,4278059262
1687.long	16843008,3486449871
1688.long	1515870720,3284336835
1689.long	3604403712,2054815866
1690.long	1364283648,606339108
1691.long	1448498688,3907518696
1692.long	1819044864,1616904288
1693.long	1296911616,1768489065
1694.long	2341178112,2863268010
1695.long	218959104,2694840480
1696.long	2593823232,2711683233
1697.long	1717986816,1650589794
1698.long	4227595008,1414791252
1699.long	3435973632,505282590
1700.long	2964369408,3772776672
1701.long	757935360,1684275300
1702.long	1953788928,269484048
1703.long	303174144,0
1704.long	724249344,2745368739
1705.long	538976256,1970602101
1706.long	4042321920,2324299914
1707.long	2981212416,3873833190
1708.long	2223277056,151584777
1709.long	2576980224,3722248413
1710.long	3755990784,2273771655
1711.long	1280068608,2206400643
1712.long	3419130624,3452764365
1713.long	3267543552,2425356432
1714.long	875836416,1936916595
1715.long	2122219008,4143317238
1716.long	1987474944,2644312221
1717.long	84215040,3216965823
1718.long	1835887872,1381105746
1719.long	3082270464,3638034648
1720.long	2846468352,3368550600
1721.long	825307392,3334865094
1722.long	3520188672,2172715137
1723.long	387389184,1869545583
1724.long	67372032,320012307
1725.long	3621246720,1667432547
1726.long	336860160,3924361449
1727.long	1482184704,2812739751
1728.long	976894464,2677997727
1729.long	1633771776,3166437564
1730.long	3739147776,690552873
1731.long	454761216,4193845497
1732.long	286331136,791609391
1733.long	471604224,3031695540
1734.long	842150400,2021130360
1735.long	252645120,101056518
1736.long	2627509248,3890675943
1737.long	370546176,1903231089
1738.long	1397969664,3570663636
1739.long	404232192,2880110763
1740.long	4076007936,2290614408
1741.long	572662272,2374828173
1742.long	4278124032,1920073842
1743.long	1145324544,3115909305
1744.long	3486502656,4177002744
1745.long	2998055424,2896953516
1746.long	3284386560,909508662
1747.long	3048584448,707395626
1748.long	2054846976,1010565180
1749.long	2442236160,4059103473
1750.long	606348288,1077936192
1751.long	134744064,3553820883
1752.long	3907577856,3149594811
1753.long	2829625344,1128464451
1754.long	1616928768,353697813
1755.long	4244438016,2913796269
1756.long	1768515840,2004287607
1757.long	1347440640,2155872384
1758.long	2863311360,2189557890
1759.long	3503345664,3974889708
1760.long	2694881280,656867367
1761.long	2105376000,3856990437
1762.long	2711724288,2240086149
1763.long	2307492096,892665909
1764.long	1650614784,202113036
1765.long	2543294208,1094778945
1766.long	1414812672,4025417967
1767.long	1532713728,2475884691
1768.long	505290240,421068825
1769.long	2509608192,555810849
1770.long	3772833792,235798542
1771.long	4294967040,1313734734
1772.long	1684300800,1701118053
1773.long	3537031680,3183280317
1774.long	269488128,3099066552
1775.long	3301229568,2408513679
1776.long	0,3958046955
1777.long	1212696576,3469607118
1778.long	2745410304,808452144
1779.long	4160222976,1600061535
1780.long	1970631936,3318022341
1781.long	3688618752,437911578
1782.long	2324335104,3789619425
1783.long	50529024,3402236106
1784.long	3873891840,1195835463
1785.long	3671775744,1027407933
1786.long	151587072,16842753
1787.long	1061109504,3604349142
1788.long	3722304768,1448476758
1789.long	2492765184,1296891981
1790.long	2273806080,218955789
1791.long	1549556736,1717960806
1792.long	2206434048,3435921612
1793.long	33686016,757923885
1794.long	3452816640,303169554
1795.long	1246382592,538968096
1796.long	2425393152,2981167281
1797.long	858993408,2576941209
1798.long	1936945920,1280049228
1799.long	1734829824,3267494082
1800.long	4143379968,2122186878
1801.long	4092850944,84213765
1802.long	2644352256,3082223799
1803.long	2139062016,825294897
1804.long	3217014528,387383319
1805.long	3806519808,3621191895
1806.long	1381126656,1482162264
1807.long	2610666240,1633747041
1808.long	3638089728,454754331
1809.long	640034304,471597084
1810.long	3368601600,252641295
1811.long	926365440,370540566
1812.long	3334915584,404226072
1813.long	993737472,572653602
1814.long	2172748032,1145307204
1815.long	2526451200,2998010034
1816.long	1869573888,3048538293
1817.long	1263225600,2442199185
1818.long	320017152,134742024
1819.long	3200171520,2829582504
1820.long	1667457792,4244373756
1821.long	774778368,1347420240
1822.long	3924420864,3503292624
1823.long	2038003968,2105344125
1824.long	2812782336,2307457161
1825.long	2358021120,2543255703
1826.long	2678038272,1532690523
1827.long	1852730880,2509570197
1828.long	3166485504,4294902015
1829.long	2391707136,3536978130
1830.long	690563328,3301179588
1831.long	4126536960,1212678216
1832.long	4193908992,4160159991
1833.long	3065427456,3688562907
1834.long	791621376,50528259
1835.long	4261281024,3671720154
1836.long	3031741440,1061093439
1837.long	1499027712,2492727444
1838.long	2021160960,1549533276
1839.long	2560137216,33685506
1840.long	101058048,1246363722
1841.long	1785358848,858980403
1842.long	3890734848,1734803559
1843.long	1179010560,4092788979
1844.long	1903259904,2139029631
1845.long	3132799488,3806462178
1846.long	3570717696,2610626715
1847.long	623191296,640024614
1848.long	2880154368,926351415
1849.long	1111638528,993722427
1850.long	2290649088,2526412950
1851.long	2728567296,1263206475
1852.long	2374864128,3200123070
1853.long	4210752000,774766638
1854.long	1920102912,2037973113
1855.long	117901056,2357985420
1856.long	3115956480,1852702830
1857.long	1431655680,2391670926
1858.long	4177065984,4126474485
1859.long	4008635904,3065381046
1860.long	2896997376,4261216509
1861.long	168430080,1499005017
1862.long	909522432,2560098456
1863.long	1229539584,1785331818
1864.long	707406336,1178992710
1865.long	1751672832,3132752058
1866.long	1010580480,623181861
1867.long	943208448,1111621698
1868.long	4059164928,2728525986
1869.long	2762253312,4210688250
1870.long	1077952512,117899271
1871.long	673720320,1431634005
1872.long	3553874688,4008575214
1873.long	2071689984,168427530
1874.long	3149642496,1229520969
1875.long	3385444608,1751646312
1876.long	1128481536,943194168
1877.long	3250700544,2762211492
1878.long	353703168,673710120
1879.long	3823362816,2071658619
1880.long	2913840384,3385393353
1881.long	4109693952,3250651329
1882.long	2004317952,3823304931
1883.long	3351758592,4109631732
1884.long	2155905024,3351707847
1885.long	2661195264,2661154974
1886.long	14737632,939538488
1887.long	328965,1090535745
1888.long	5789784,369104406
1889.long	14277081,1979741814
1890.long	6776679,3640711641
1891.long	5131854,2466288531
1892.long	8487297,1610637408
1893.long	13355979,4060148466
1894.long	13224393,1912631922
1895.long	723723,3254829762
1896.long	11447982,2868947883
1897.long	6974058,2583730842
1898.long	14013909,1962964341
1899.long	1579032,100664838
1900.long	6118749,1459640151
1901.long	8553090,2684395680
1902.long	4605510,2432733585
1903.long	14671839,4144035831
1904.long	14079702,3036722613
1905.long	2565927,3372272073
1906.long	9079434,2717950626
1907.long	3289650,2348846220
1908.long	4934475,3523269330
1909.long	4342338,2415956112
1910.long	14408667,4127258358
1911.long	1842204,117442311
1912.long	10395294,2801837991
1913.long	10263708,654321447
1914.long	3815994,2382401166
1915.long	13290186,2986390194
1916.long	2434341,1224755529
1917.long	8092539,3724599006
1918.long	855309,1124090691
1919.long	7434609,1543527516
1920.long	6250335,3607156695
1921.long	2039583,3338717127
1922.long	16316664,1040203326
1923.long	14145495,4110480885
1924.long	4079166,2399178639
1925.long	10329501,1728079719
1926.long	8158332,520101663
1927.long	6316128,402659352
1928.long	12171705,1845522030
1929.long	12500670,2936057775
1930.long	12369084,788541231
1931.long	9145227,3791708898
1932.long	1447446,2231403909
1933.long	3421236,218107149
1934.long	5066061,1392530259
1935.long	12829635,4026593520
1936.long	7500402,2617285788
1937.long	9803157,1694524773
1938.long	11250603,3925928682
1939.long	9342606,2734728099
1940.long	12237498,2919280302
1941.long	8026746,2650840734
1942.long	11776947,3959483628
1943.long	131586,2147516544
1944.long	11842740,754986285
1945.long	11382189,1795189611
1946.long	10658466,2818615464
1947.long	11316396,721431339
1948.long	14211288,905983542
1949.long	10132122,2785060518
1950.long	1513239,3305162181
1951.long	1710618,2248181382
1952.long	3487029,1291865421
1953.long	13421772,855651123
1954.long	16250871,4244700669
1955.long	10066329,1711302246
1956.long	6381921,1476417624
1957.long	5921370,2516620950
1958.long	15263976,973093434
1959.long	2368548,150997257
1960.long	5658198,2499843477
1961.long	4210752,268439568
1962.long	14803425,2013296760
1963.long	6513507,3623934168
1964.long	592137,1107313218
1965.long	3355443,3422604492
1966.long	12566463,4009816047
1967.long	10000536,637543974
1968.long	9934743,3842041317
1969.long	8750469,1627414881
1970.long	6842472,436214298
1971.long	16579836,1056980799
1972.long	15527148,989870907
1973.long	657930,2181071490
1974.long	14342874,3053500086
1975.long	7303023,3674266587
1976.long	5460819,3556824276
1977.long	6447714,2550175896
1978.long	10724259,3892373736
1979.long	3026478,2332068747
1980.long	526344,33554946
1981.long	11513775,3942706155
1982.long	2631720,167774730
1983.long	11579568,738208812
1984.long	7631988,486546717
1985.long	12763842,2952835248
1986.long	12434877,1862299503
1987.long	3552822,2365623693
1988.long	2236962,2281736328
1989.long	3684408,234884622
1990.long	6579300,419436825
1991.long	1973790,2264958855
1992.long	3750201,1308642894
1993.long	2894892,184552203
1994.long	10921638,2835392937
1995.long	3158064,201329676
1996.long	15066597,2030074233
1997.long	4473924,285217041
1998.long	16645629,2130739071
1999.long	8947848,570434082
2000.long	10461087,3875596263
2001.long	6645093,1493195097
2002.long	8882055,3774931425
2003.long	7039851,3657489114
2004.long	16053492,1023425853
2005.long	2302755,3355494600
2006.long	4737096,301994514
2007.long	1052688,67109892
2008.long	13750737,1946186868
2009.long	5329233,1409307732
2010.long	12632256,805318704
2011.long	16382457,2113961598
2012.long	13816530,3019945140
2013.long	10526880,671098920
2014.long	5592405,1426085205
2015.long	10592673,1744857192
2016.long	4276545,1342197840
2017.long	16448250,3187719870
2018.long	4408131,3489714384
2019.long	1250067,3288384708
2020.long	12895428,822096177
2021.long	3092271,3405827019
2022.long	11053224,704653866
2023.long	11974326,2902502829
2024.long	3947580,251662095
2025.long	2829099,3389049546
2026.long	12698049,1879076976
2027.long	16777215,4278255615
2028.long	13158600,838873650
2029.long	10855845,1761634665
2030.long	2105376,134219784
2031.long	9013641,1644192354
2032.long	0,0
2033.long	9474192,603989028
2034.long	4671303,3506491857
2035.long	15724527,4211145723
2036.long	15395562,3120609978
2037.long	12040119,3976261101
2038.long	1381653,1157645637
2039.long	394758,2164294017
2040.long	13487565,1929409395
2041.long	11908533,1828744557
2042.long	1184274,2214626436
2043.long	8289918,2667618207
2044.long	12303291,3993038574
2045.long	2697513,1241533002
2046.long	986895,3271607235
2047.long	12105912,771763758
2048.long	460551,3238052289
2049.long	263172,16777473
2050.long	10197915,3858818790
2051.long	9737364,620766501
2052.long	2171169,1207978056
2053.long	6710886,2566953369
2054.long	15132390,3103832505
2055.long	13553358,3003167667
2056.long	15592941,2063629179
2057.long	15198183,4177590777
2058.long	3881787,3456159438
2059.long	16711422,3204497343
2060.long	8355711,3741376479
2061.long	12961221,1895854449
2062.long	10790052,687876393
2063.long	3618615,3439381965
2064.long	11645361,1811967084
2065.long	5000268,318771987
2066.long	9539985,1677747300
2067.long	7237230,2600508315
2068.long	9276813,1660969827
2069.long	7763574,2634063261
2070.long	197379,3221274816
2071.long	2960685,1258310475
2072.long	14606046,3070277559
2073.long	9868950,2768283045
2074.long	2500134,2298513801
2075.long	8224125,1593859935
2076.long	13027014,2969612721
2077.long	6052956,385881879
2078.long	13882323,4093703412
2079.long	15921906,3154164924
2080.long	5197647,3540046803
2081.long	1644825,1174423110
2082.long	4144959,3472936911
2083.long	14474460,922761015
2084.long	7960953,1577082462
2085.long	1907997,1191200583
2086.long	5395026,2483066004
2087.long	15461355,4194368250
2088.long	15987699,4227923196
2089.long	7171437,1526750043
2090.long	6184542,2533398423
2091.long	16514043,4261478142
2092.long	6908265,1509972570
2093.long	11711154,2885725356
2094.long	15790320,1006648380
2095.long	3223857,1275087948
2096.long	789516,50332419
2097.long	13948116,889206069
2098.long	13619151,4076925939
2099.long	9211020,587211555
2100.long	14869218,3087055032
2101.long	7697781,1560304989
2102.long	11119017,1778412138
2103.long	4868682,2449511058
2104.long	5723991,3573601749
2105.long	8684676,553656609
2106.long	1118481,1140868164
2107.long	4539717,1358975313
2108.long	1776411,3321939654
2109.long	16119285,2097184125
2110.long	15000804,956315961
2111.long	921102,2197848963
2112.long	7566195,3691044060
2113.long	11184810,2852170410
2114.long	15856113,2080406652
2115.long	14540253,1996519287
2116.long	5855577,1442862678
2117.long	1315860,83887365
2118.long	7105644,452991771
2119.long	9605778,2751505572
2120.long	5526612,352326933
2121.long	13684944,872428596
2122.long	7895160,503324190
2123.long	7368816,469769244
2124.long	14935011,4160813304
2125.long	4802889,1375752786
2126.long	8421504,536879136
2127.long	5263440,335549460
2128.long	10987431,3909151209
2129.long	16185078,3170942397
2130.long	7829367,3707821533
2131.long	9671571,3825263844
2132.long	8816262,2701173153
2133.long	8618883,3758153952
2134.long	2763306,2315291274
2135.long	13092807,4043370993
2136.long	5987163,3590379222
2137.long	15329769,2046851706
2138.long	15658734,3137387451
2139.long	9408399,3808486371
2140.long	65793,1073758272
2141.long	4013373,1325420367
2142.globl	Camellia_cbc_encrypt
2143.type	Camellia_cbc_encrypt,@function
2144.align	16
2145Camellia_cbc_encrypt:
2146.L_Camellia_cbc_encrypt_begin:
2147	#ifdef __CET__
2148
2149.byte	243,15,30,251
2150	#endif
2151
2152	pushl	%ebp
2153	pushl	%ebx
2154	pushl	%esi
2155	pushl	%edi
2156	movl	28(%esp),%ecx
2157	cmpl	$0,%ecx
2158	je	.L016enc_out
2159	pushfl
2160	cld
2161	movl	24(%esp),%eax
2162	movl	28(%esp),%ebx
2163	movl	36(%esp),%edx
2164	movl	40(%esp),%ebp
2165	leal	-64(%esp),%esi
2166	andl	$-64,%esi
2167	leal	-127(%edx),%edi
2168	subl	%esi,%edi
2169	negl	%edi
2170	andl	$960,%edi
2171	subl	%edi,%esi
2172	movl	44(%esp),%edi
2173	xchgl	%esi,%esp
2174	addl	$4,%esp
2175	movl	%esi,20(%esp)
2176	movl	%eax,24(%esp)
2177	movl	%ebx,28(%esp)
2178	movl	%ecx,32(%esp)
2179	movl	%edx,36(%esp)
2180	movl	%ebp,40(%esp)
2181	call	.L017pic_point
2182.L017pic_point:
2183	popl	%ebp
2184	leal	.LCamellia_SBOX-.L017pic_point(%ebp),%ebp
2185	movl	$32,%esi
2186.align	4
2187.L018prefetch_sbox:
2188	movl	(%ebp),%eax
2189	movl	32(%ebp),%ebx
2190	movl	64(%ebp),%ecx
2191	movl	96(%ebp),%edx
2192	leal	128(%ebp),%ebp
2193	decl	%esi
2194	jnz	.L018prefetch_sbox
2195	movl	36(%esp),%eax
2196	subl	$4096,%ebp
2197	movl	24(%esp),%esi
2198	movl	272(%eax),%edx
2199	cmpl	$0,%edi
2200	je	.L019DECRYPT
2201	movl	32(%esp),%ecx
2202	movl	40(%esp),%edi
2203	shll	$6,%edx
2204	leal	(%eax,%edx,1),%edx
2205	movl	%edx,16(%esp)
2206	testl	$4294967280,%ecx
2207	jz	.L020enc_tail
2208	movl	(%edi),%eax
2209	movl	4(%edi),%ebx
2210.align	4
2211.L021enc_loop:
2212	movl	8(%edi),%ecx
2213	movl	12(%edi),%edx
2214	xorl	(%esi),%eax
2215	xorl	4(%esi),%ebx
2216	xorl	8(%esi),%ecx
2217	bswap	%eax
2218	xorl	12(%esi),%edx
2219	bswap	%ebx
2220	movl	36(%esp),%edi
2221	bswap	%ecx
2222	bswap	%edx
2223	call	_x86_Camellia_encrypt
2224	movl	24(%esp),%esi
2225	movl	28(%esp),%edi
2226	bswap	%eax
2227	bswap	%ebx
2228	bswap	%ecx
2229	movl	%eax,(%edi)
2230	bswap	%edx
2231	movl	%ebx,4(%edi)
2232	movl	%ecx,8(%edi)
2233	movl	%edx,12(%edi)
2234	movl	32(%esp),%ecx
2235	leal	16(%esi),%esi
2236	movl	%esi,24(%esp)
2237	leal	16(%edi),%edx
2238	movl	%edx,28(%esp)
2239	subl	$16,%ecx
2240	testl	$4294967280,%ecx
2241	movl	%ecx,32(%esp)
2242	jnz	.L021enc_loop
2243	testl	$15,%ecx
2244	jnz	.L020enc_tail
2245	movl	40(%esp),%esi
2246	movl	8(%edi),%ecx
2247	movl	12(%edi),%edx
2248	movl	%eax,(%esi)
2249	movl	%ebx,4(%esi)
2250	movl	%ecx,8(%esi)
2251	movl	%edx,12(%esi)
2252	movl	20(%esp),%esp
2253	popfl
2254.L016enc_out:
2255	popl	%edi
2256	popl	%esi
2257	popl	%ebx
2258	popl	%ebp
2259	ret
2260	pushfl
2261.align	4
2262.L020enc_tail:
2263	movl	%edi,%eax
2264	movl	28(%esp),%edi
2265	pushl	%eax
2266	movl	$16,%ebx
2267	subl	%ecx,%ebx
2268	cmpl	%esi,%edi
2269	je	.L022enc_in_place
2270.align	4
2271.long	2767451785
2272	jmp	.L023enc_skip_in_place
2273.L022enc_in_place:
2274	leal	(%edi,%ecx,1),%edi
2275.L023enc_skip_in_place:
2276	movl	%ebx,%ecx
2277	xorl	%eax,%eax
2278.align	4
2279.long	2868115081
2280	popl	%edi
2281	movl	28(%esp),%esi
2282	movl	(%edi),%eax
2283	movl	4(%edi),%ebx
2284	movl	$16,32(%esp)
2285	jmp	.L021enc_loop
2286.align	16
2287.L019DECRYPT:
2288	shll	$6,%edx
2289	leal	(%eax,%edx,1),%edx
2290	movl	%eax,16(%esp)
2291	movl	%edx,36(%esp)
2292	cmpl	28(%esp),%esi
2293	je	.L024dec_in_place
2294	movl	40(%esp),%edi
2295	movl	%edi,44(%esp)
2296.align	4
2297.L025dec_loop:
2298	movl	(%esi),%eax
2299	movl	4(%esi),%ebx
2300	movl	8(%esi),%ecx
2301	bswap	%eax
2302	movl	12(%esi),%edx
2303	bswap	%ebx
2304	movl	36(%esp),%edi
2305	bswap	%ecx
2306	bswap	%edx
2307	call	_x86_Camellia_decrypt
2308	movl	44(%esp),%edi
2309	movl	32(%esp),%esi
2310	bswap	%eax
2311	bswap	%ebx
2312	bswap	%ecx
2313	xorl	(%edi),%eax
2314	bswap	%edx
2315	xorl	4(%edi),%ebx
2316	xorl	8(%edi),%ecx
2317	xorl	12(%edi),%edx
2318	subl	$16,%esi
2319	jc	.L026dec_partial
2320	movl	%esi,32(%esp)
2321	movl	24(%esp),%esi
2322	movl	28(%esp),%edi
2323	movl	%eax,(%edi)
2324	movl	%ebx,4(%edi)
2325	movl	%ecx,8(%edi)
2326	movl	%edx,12(%edi)
2327	movl	%esi,44(%esp)
2328	leal	16(%esi),%esi
2329	movl	%esi,24(%esp)
2330	leal	16(%edi),%edi
2331	movl	%edi,28(%esp)
2332	jnz	.L025dec_loop
2333	movl	44(%esp),%edi
2334.L027dec_end:
2335	movl	40(%esp),%esi
2336	movl	(%edi),%eax
2337	movl	4(%edi),%ebx
2338	movl	8(%edi),%ecx
2339	movl	12(%edi),%edx
2340	movl	%eax,(%esi)
2341	movl	%ebx,4(%esi)
2342	movl	%ecx,8(%esi)
2343	movl	%edx,12(%esi)
2344	jmp	.L028dec_out
2345.align	4
2346.L026dec_partial:
2347	leal	44(%esp),%edi
2348	movl	%eax,(%edi)
2349	movl	%ebx,4(%edi)
2350	movl	%ecx,8(%edi)
2351	movl	%edx,12(%edi)
2352	leal	16(%esi),%ecx
2353	movl	%edi,%esi
2354	movl	28(%esp),%edi
2355.long	2767451785
2356	movl	24(%esp),%edi
2357	jmp	.L027dec_end
2358.align	4
2359.L024dec_in_place:
2360.L029dec_in_place_loop:
2361	leal	44(%esp),%edi
2362	movl	(%esi),%eax
2363	movl	4(%esi),%ebx
2364	movl	8(%esi),%ecx
2365	movl	12(%esi),%edx
2366	movl	%eax,(%edi)
2367	movl	%ebx,4(%edi)
2368	movl	%ecx,8(%edi)
2369	bswap	%eax
2370	movl	%edx,12(%edi)
2371	bswap	%ebx
2372	movl	36(%esp),%edi
2373	bswap	%ecx
2374	bswap	%edx
2375	call	_x86_Camellia_decrypt
2376	movl	40(%esp),%edi
2377	movl	28(%esp),%esi
2378	bswap	%eax
2379	bswap	%ebx
2380	bswap	%ecx
2381	xorl	(%edi),%eax
2382	bswap	%edx
2383	xorl	4(%edi),%ebx
2384	xorl	8(%edi),%ecx
2385	xorl	12(%edi),%edx
2386	movl	%eax,(%esi)
2387	movl	%ebx,4(%esi)
2388	movl	%ecx,8(%esi)
2389	movl	%edx,12(%esi)
2390	leal	16(%esi),%esi
2391	movl	%esi,28(%esp)
2392	leal	44(%esp),%esi
2393	movl	(%esi),%eax
2394	movl	4(%esi),%ebx
2395	movl	8(%esi),%ecx
2396	movl	12(%esi),%edx
2397	movl	%eax,(%edi)
2398	movl	%ebx,4(%edi)
2399	movl	%ecx,8(%edi)
2400	movl	%edx,12(%edi)
2401	movl	24(%esp),%esi
2402	leal	16(%esi),%esi
2403	movl	%esi,24(%esp)
2404	movl	32(%esp),%ecx
2405	subl	$16,%ecx
2406	jc	.L030dec_in_place_partial
2407	movl	%ecx,32(%esp)
2408	jnz	.L029dec_in_place_loop
2409	jmp	.L028dec_out
2410.align	4
2411.L030dec_in_place_partial:
2412	movl	28(%esp),%edi
2413	leal	44(%esp),%esi
2414	leal	(%edi,%ecx,1),%edi
2415	leal	16(%esi,%ecx,1),%esi
2416	negl	%ecx
2417.long	2767451785
2418.align	4
2419.L028dec_out:
2420	movl	20(%esp),%esp
2421	popfl
2422	popl	%edi
2423	popl	%esi
2424	popl	%ebx
2425	popl	%ebp
2426	ret
2427.size	Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
2428.byte	67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
2429.byte	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2430.byte	115,108,46,111,114,103,62,0
2431
2432	.section ".note.gnu.property", "a"
2433	.p2align 2
2434	.long 1f - 0f
2435	.long 4f - 1f
2436	.long 5
24370:
2438	.asciz "GNU"
24391:
2440	.p2align 2
2441	.long 0xc0000002
2442	.long 3f - 2f
24432:
2444	.long 3
24453:
2446	.p2align 2
24474:
2448