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