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