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