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