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