]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/i386/cmll-x86.S
Upgrade Unbound to 1.9.2.
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / i386 / cmll-x86.S
1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from cmll-x86.pl. */
3 #ifdef PIC
4 .text
5 .globl  Camellia_EncryptBlock_Rounds
6 .type   Camellia_EncryptBlock_Rounds,@function
7 .align  16
8 Camellia_EncryptBlock_Rounds:
9 .L_Camellia_EncryptBlock_Rounds_begin:
10         pushl   %ebp
11         pushl   %ebx
12         pushl   %esi
13         pushl   %edi
14         movl    20(%esp),%eax
15         movl    24(%esp),%esi
16         movl    28(%esp),%edi
17         movl    %esp,%ebx
18         subl    $28,%esp
19         andl    $-64,%esp
20         leal    -127(%edi),%ecx
21         subl    %esp,%ecx
22         negl    %ecx
23         andl    $960,%ecx
24         subl    %ecx,%esp
25         addl    $4,%esp
26         shll    $6,%eax
27         leal    (%edi,%eax,1),%eax
28         movl    %ebx,20(%esp)
29         movl    %eax,16(%esp)
30         call    .L000pic_point
31 .L000pic_point:
32         popl    %ebp
33         leal    .LCamellia_SBOX-.L000pic_point(%ebp),%ebp
34         movl    (%esi),%eax
35         movl    4(%esi),%ebx
36         movl    8(%esi),%ecx
37         bswap   %eax
38         movl    12(%esi),%edx
39         bswap   %ebx
40         bswap   %ecx
41         bswap   %edx
42         call    _x86_Camellia_encrypt
43         movl    20(%esp),%esp
44         bswap   %eax
45         movl    32(%esp),%esi
46         bswap   %ebx
47         bswap   %ecx
48         bswap   %edx
49         movl    %eax,(%esi)
50         movl    %ebx,4(%esi)
51         movl    %ecx,8(%esi)
52         movl    %edx,12(%esi)
53         popl    %edi
54         popl    %esi
55         popl    %ebx
56         popl    %ebp
57         ret
58 .size   Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
59 .globl  Camellia_EncryptBlock
60 .type   Camellia_EncryptBlock,@function
61 .align  16
62 Camellia_EncryptBlock:
63 .L_Camellia_EncryptBlock_begin:
64         movl    $128,%eax
65         subl    4(%esp),%eax
66         movl    $3,%eax
67         adcl    $0,%eax
68         movl    %eax,4(%esp)
69         jmp     .L_Camellia_EncryptBlock_Rounds_begin
70 .size   Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
71 .globl  Camellia_encrypt
72 .type   Camellia_encrypt,@function
73 .align  16
74 Camellia_encrypt:
75 .L_Camellia_encrypt_begin:
76         pushl   %ebp
77         pushl   %ebx
78         pushl   %esi
79         pushl   %edi
80         movl    20(%esp),%esi
81         movl    28(%esp),%edi
82         movl    %esp,%ebx
83         subl    $28,%esp
84         andl    $-64,%esp
85         movl    272(%edi),%eax
86         leal    -127(%edi),%ecx
87         subl    %esp,%ecx
88         negl    %ecx
89         andl    $960,%ecx
90         subl    %ecx,%esp
91         addl    $4,%esp
92         shll    $6,%eax
93         leal    (%edi,%eax,1),%eax
94         movl    %ebx,20(%esp)
95         movl    %eax,16(%esp)
96         call    .L001pic_point
97 .L001pic_point:
98         popl    %ebp
99         leal    .LCamellia_SBOX-.L001pic_point(%ebp),%ebp
100         movl    (%esi),%eax
101         movl    4(%esi),%ebx
102         movl    8(%esi),%ecx
103         bswap   %eax
104         movl    12(%esi),%edx
105         bswap   %ebx
106         bswap   %ecx
107         bswap   %edx
108         call    _x86_Camellia_encrypt
109         movl    20(%esp),%esp
110         bswap   %eax
111         movl    24(%esp),%esi
112         bswap   %ebx
113         bswap   %ecx
114         bswap   %edx
115         movl    %eax,(%esi)
116         movl    %ebx,4(%esi)
117         movl    %ecx,8(%esi)
118         movl    %edx,12(%esi)
119         popl    %edi
120         popl    %esi
121         popl    %ebx
122         popl    %ebp
123         ret
124 .size   Camellia_encrypt,.-.L_Camellia_encrypt_begin
125 .type   _x86_Camellia_encrypt,@function
126 .align  16
127 _x86_Camellia_encrypt:
128         xorl    (%edi),%eax
129         xorl    4(%edi),%ebx
130         xorl    8(%edi),%ecx
131         xorl    12(%edi),%edx
132         movl    16(%edi),%esi
133         movl    %eax,4(%esp)
134         movl    %ebx,8(%esp)
135         movl    %ecx,12(%esp)
136         movl    %edx,16(%esp)
137 .align  16
138 .L002loop:
139         xorl    %esi,%eax
140         xorl    20(%edi),%ebx
141         movzbl  %ah,%esi
142         movl    2052(%ebp,%esi,8),%edx
143         movzbl  %al,%esi
144         xorl    4(%ebp,%esi,8),%edx
145         shrl    $16,%eax
146         movzbl  %bl,%esi
147         movl    (%ebp,%esi,8),%ecx
148         movzbl  %ah,%esi
149         xorl    (%ebp,%esi,8),%edx
150         movzbl  %bh,%esi
151         xorl    4(%ebp,%esi,8),%ecx
152         shrl    $16,%ebx
153         movzbl  %al,%eax
154         xorl    2048(%ebp,%eax,8),%edx
155         movzbl  %bh,%esi
156         movl    16(%esp),%eax
157         xorl    %edx,%ecx
158         rorl    $8,%edx
159         xorl    2048(%ebp,%esi,8),%ecx
160         movzbl  %bl,%esi
161         movl    12(%esp),%ebx
162         xorl    %eax,%edx
163         xorl    2052(%ebp,%esi,8),%ecx
164         movl    24(%edi),%esi
165         xorl    %ecx,%edx
166         movl    %edx,16(%esp)
167         xorl    %ebx,%ecx
168         movl    %ecx,12(%esp)
169         xorl    %esi,%ecx
170         xorl    28(%edi),%edx
171         movzbl  %ch,%esi
172         movl    2052(%ebp,%esi,8),%ebx
173         movzbl  %cl,%esi
174         xorl    4(%ebp,%esi,8),%ebx
175         shrl    $16,%ecx
176         movzbl  %dl,%esi
177         movl    (%ebp,%esi,8),%eax
178         movzbl  %ch,%esi
179         xorl    (%ebp,%esi,8),%ebx
180         movzbl  %dh,%esi
181         xorl    4(%ebp,%esi,8),%eax
182         shrl    $16,%edx
183         movzbl  %cl,%ecx
184         xorl    2048(%ebp,%ecx,8),%ebx
185         movzbl  %dh,%esi
186         movl    8(%esp),%ecx
187         xorl    %ebx,%eax
188         rorl    $8,%ebx
189         xorl    2048(%ebp,%esi,8),%eax
190         movzbl  %dl,%esi
191         movl    4(%esp),%edx
192         xorl    %ecx,%ebx
193         xorl    2052(%ebp,%esi,8),%eax
194         movl    32(%edi),%esi
195         xorl    %eax,%ebx
196         movl    %ebx,8(%esp)
197         xorl    %edx,%eax
198         movl    %eax,4(%esp)
199         xorl    %esi,%eax
200         xorl    36(%edi),%ebx
201         movzbl  %ah,%esi
202         movl    2052(%ebp,%esi,8),%edx
203         movzbl  %al,%esi
204         xorl    4(%ebp,%esi,8),%edx
205         shrl    $16,%eax
206         movzbl  %bl,%esi
207         movl    (%ebp,%esi,8),%ecx
208         movzbl  %ah,%esi
209         xorl    (%ebp,%esi,8),%edx
210         movzbl  %bh,%esi
211         xorl    4(%ebp,%esi,8),%ecx
212         shrl    $16,%ebx
213         movzbl  %al,%eax
214         xorl    2048(%ebp,%eax,8),%edx
215         movzbl  %bh,%esi
216         movl    16(%esp),%eax
217         xorl    %edx,%ecx
218         rorl    $8,%edx
219         xorl    2048(%ebp,%esi,8),%ecx
220         movzbl  %bl,%esi
221         movl    12(%esp),%ebx
222         xorl    %eax,%edx
223         xorl    2052(%ebp,%esi,8),%ecx
224         movl    40(%edi),%esi
225         xorl    %ecx,%edx
226         movl    %edx,16(%esp)
227         xorl    %ebx,%ecx
228         movl    %ecx,12(%esp)
229         xorl    %esi,%ecx
230         xorl    44(%edi),%edx
231         movzbl  %ch,%esi
232         movl    2052(%ebp,%esi,8),%ebx
233         movzbl  %cl,%esi
234         xorl    4(%ebp,%esi,8),%ebx
235         shrl    $16,%ecx
236         movzbl  %dl,%esi
237         movl    (%ebp,%esi,8),%eax
238         movzbl  %ch,%esi
239         xorl    (%ebp,%esi,8),%ebx
240         movzbl  %dh,%esi
241         xorl    4(%ebp,%esi,8),%eax
242         shrl    $16,%edx
243         movzbl  %cl,%ecx
244         xorl    2048(%ebp,%ecx,8),%ebx
245         movzbl  %dh,%esi
246         movl    8(%esp),%ecx
247         xorl    %ebx,%eax
248         rorl    $8,%ebx
249         xorl    2048(%ebp,%esi,8),%eax
250         movzbl  %dl,%esi
251         movl    4(%esp),%edx
252         xorl    %ecx,%ebx
253         xorl    2052(%ebp,%esi,8),%eax
254         movl    48(%edi),%esi
255         xorl    %eax,%ebx
256         movl    %ebx,8(%esp)
257         xorl    %edx,%eax
258         movl    %eax,4(%esp)
259         xorl    %esi,%eax
260         xorl    52(%edi),%ebx
261         movzbl  %ah,%esi
262         movl    2052(%ebp,%esi,8),%edx
263         movzbl  %al,%esi
264         xorl    4(%ebp,%esi,8),%edx
265         shrl    $16,%eax
266         movzbl  %bl,%esi
267         movl    (%ebp,%esi,8),%ecx
268         movzbl  %ah,%esi
269         xorl    (%ebp,%esi,8),%edx
270         movzbl  %bh,%esi
271         xorl    4(%ebp,%esi,8),%ecx
272         shrl    $16,%ebx
273         movzbl  %al,%eax
274         xorl    2048(%ebp,%eax,8),%edx
275         movzbl  %bh,%esi
276         movl    16(%esp),%eax
277         xorl    %edx,%ecx
278         rorl    $8,%edx
279         xorl    2048(%ebp,%esi,8),%ecx
280         movzbl  %bl,%esi
281         movl    12(%esp),%ebx
282         xorl    %eax,%edx
283         xorl    2052(%ebp,%esi,8),%ecx
284         movl    56(%edi),%esi
285         xorl    %ecx,%edx
286         movl    %edx,16(%esp)
287         xorl    %ebx,%ecx
288         movl    %ecx,12(%esp)
289         xorl    %esi,%ecx
290         xorl    60(%edi),%edx
291         movzbl  %ch,%esi
292         movl    2052(%ebp,%esi,8),%ebx
293         movzbl  %cl,%esi
294         xorl    4(%ebp,%esi,8),%ebx
295         shrl    $16,%ecx
296         movzbl  %dl,%esi
297         movl    (%ebp,%esi,8),%eax
298         movzbl  %ch,%esi
299         xorl    (%ebp,%esi,8),%ebx
300         movzbl  %dh,%esi
301         xorl    4(%ebp,%esi,8),%eax
302         shrl    $16,%edx
303         movzbl  %cl,%ecx
304         xorl    2048(%ebp,%ecx,8),%ebx
305         movzbl  %dh,%esi
306         movl    8(%esp),%ecx
307         xorl    %ebx,%eax
308         rorl    $8,%ebx
309         xorl    2048(%ebp,%esi,8),%eax
310         movzbl  %dl,%esi
311         movl    4(%esp),%edx
312         xorl    %ecx,%ebx
313         xorl    2052(%ebp,%esi,8),%eax
314         movl    64(%edi),%esi
315         xorl    %eax,%ebx
316         movl    %ebx,8(%esp)
317         xorl    %edx,%eax
318         movl    %eax,4(%esp)
319         addl    $64,%edi
320         cmpl    20(%esp),%edi
321         je      .L003done
322         andl    %eax,%esi
323         movl    16(%esp),%edx
324         roll    $1,%esi
325         movl    %edx,%ecx
326         xorl    %esi,%ebx
327         orl     12(%edi),%ecx
328         movl    %ebx,8(%esp)
329         xorl    12(%esp),%ecx
330         movl    4(%edi),%esi
331         movl    %ecx,12(%esp)
332         orl     %ebx,%esi
333         andl    8(%edi),%ecx
334         xorl    %esi,%eax
335         roll    $1,%ecx
336         movl    %eax,4(%esp)
337         xorl    %ecx,%edx
338         movl    16(%edi),%esi
339         movl    %edx,16(%esp)
340         jmp     .L002loop
341 .align  8
342 .L003done:
343         movl    %eax,%ecx
344         movl    %ebx,%edx
345         movl    12(%esp),%eax
346         movl    16(%esp),%ebx
347         xorl    %esi,%eax
348         xorl    4(%edi),%ebx
349         xorl    8(%edi),%ecx
350         xorl    12(%edi),%edx
351         ret
352 .size   _x86_Camellia_encrypt,.-_x86_Camellia_encrypt
353 .globl  Camellia_DecryptBlock_Rounds
354 .type   Camellia_DecryptBlock_Rounds,@function
355 .align  16
356 Camellia_DecryptBlock_Rounds:
357 .L_Camellia_DecryptBlock_Rounds_begin:
358         pushl   %ebp
359         pushl   %ebx
360         pushl   %esi
361         pushl   %edi
362         movl    20(%esp),%eax
363         movl    24(%esp),%esi
364         movl    28(%esp),%edi
365         movl    %esp,%ebx
366         subl    $28,%esp
367         andl    $-64,%esp
368         leal    -127(%edi),%ecx
369         subl    %esp,%ecx
370         negl    %ecx
371         andl    $960,%ecx
372         subl    %ecx,%esp
373         addl    $4,%esp
374         shll    $6,%eax
375         movl    %edi,16(%esp)
376         leal    (%edi,%eax,1),%edi
377         movl    %ebx,20(%esp)
378         call    .L004pic_point
379 .L004pic_point:
380         popl    %ebp
381         leal    .LCamellia_SBOX-.L004pic_point(%ebp),%ebp
382         movl    (%esi),%eax
383         movl    4(%esi),%ebx
384         movl    8(%esi),%ecx
385         bswap   %eax
386         movl    12(%esi),%edx
387         bswap   %ebx
388         bswap   %ecx
389         bswap   %edx
390         call    _x86_Camellia_decrypt
391         movl    20(%esp),%esp
392         bswap   %eax
393         movl    32(%esp),%esi
394         bswap   %ebx
395         bswap   %ecx
396         bswap   %edx
397         movl    %eax,(%esi)
398         movl    %ebx,4(%esi)
399         movl    %ecx,8(%esi)
400         movl    %edx,12(%esi)
401         popl    %edi
402         popl    %esi
403         popl    %ebx
404         popl    %ebp
405         ret
406 .size   Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
407 .globl  Camellia_DecryptBlock
408 .type   Camellia_DecryptBlock,@function
409 .align  16
410 Camellia_DecryptBlock:
411 .L_Camellia_DecryptBlock_begin:
412         movl    $128,%eax
413         subl    4(%esp),%eax
414         movl    $3,%eax
415         adcl    $0,%eax
416         movl    %eax,4(%esp)
417         jmp     .L_Camellia_DecryptBlock_Rounds_begin
418 .size   Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
419 .globl  Camellia_decrypt
420 .type   Camellia_decrypt,@function
421 .align  16
422 Camellia_decrypt:
423 .L_Camellia_decrypt_begin:
424         pushl   %ebp
425         pushl   %ebx
426         pushl   %esi
427         pushl   %edi
428         movl    20(%esp),%esi
429         movl    28(%esp),%edi
430         movl    %esp,%ebx
431         subl    $28,%esp
432         andl    $-64,%esp
433         movl    272(%edi),%eax
434         leal    -127(%edi),%ecx
435         subl    %esp,%ecx
436         negl    %ecx
437         andl    $960,%ecx
438         subl    %ecx,%esp
439         addl    $4,%esp
440         shll    $6,%eax
441         movl    %edi,16(%esp)
442         leal    (%edi,%eax,1),%edi
443         movl    %ebx,20(%esp)
444         call    .L005pic_point
445 .L005pic_point:
446         popl    %ebp
447         leal    .LCamellia_SBOX-.L005pic_point(%ebp),%ebp
448         movl    (%esi),%eax
449         movl    4(%esi),%ebx
450         movl    8(%esi),%ecx
451         bswap   %eax
452         movl    12(%esi),%edx
453         bswap   %ebx
454         bswap   %ecx
455         bswap   %edx
456         call    _x86_Camellia_decrypt
457         movl    20(%esp),%esp
458         bswap   %eax
459         movl    24(%esp),%esi
460         bswap   %ebx
461         bswap   %ecx
462         bswap   %edx
463         movl    %eax,(%esi)
464         movl    %ebx,4(%esi)
465         movl    %ecx,8(%esi)
466         movl    %edx,12(%esi)
467         popl    %edi
468         popl    %esi
469         popl    %ebx
470         popl    %ebp
471         ret
472 .size   Camellia_decrypt,.-.L_Camellia_decrypt_begin
473 .type   _x86_Camellia_decrypt,@function
474 .align  16
475 _x86_Camellia_decrypt:
476         xorl    (%edi),%eax
477         xorl    4(%edi),%ebx
478         xorl    8(%edi),%ecx
479         xorl    12(%edi),%edx
480         movl    -8(%edi),%esi
481         movl    %eax,4(%esp)
482         movl    %ebx,8(%esp)
483         movl    %ecx,12(%esp)
484         movl    %edx,16(%esp)
485 .align  16
486 .L006loop:
487         xorl    %esi,%eax
488         xorl    -4(%edi),%ebx
489         movzbl  %ah,%esi
490         movl    2052(%ebp,%esi,8),%edx
491         movzbl  %al,%esi
492         xorl    4(%ebp,%esi,8),%edx
493         shrl    $16,%eax
494         movzbl  %bl,%esi
495         movl    (%ebp,%esi,8),%ecx
496         movzbl  %ah,%esi
497         xorl    (%ebp,%esi,8),%edx
498         movzbl  %bh,%esi
499         xorl    4(%ebp,%esi,8),%ecx
500         shrl    $16,%ebx
501         movzbl  %al,%eax
502         xorl    2048(%ebp,%eax,8),%edx
503         movzbl  %bh,%esi
504         movl    16(%esp),%eax
505         xorl    %edx,%ecx
506         rorl    $8,%edx
507         xorl    2048(%ebp,%esi,8),%ecx
508         movzbl  %bl,%esi
509         movl    12(%esp),%ebx
510         xorl    %eax,%edx
511         xorl    2052(%ebp,%esi,8),%ecx
512         movl    -16(%edi),%esi
513         xorl    %ecx,%edx
514         movl    %edx,16(%esp)
515         xorl    %ebx,%ecx
516         movl    %ecx,12(%esp)
517         xorl    %esi,%ecx
518         xorl    -12(%edi),%edx
519         movzbl  %ch,%esi
520         movl    2052(%ebp,%esi,8),%ebx
521         movzbl  %cl,%esi
522         xorl    4(%ebp,%esi,8),%ebx
523         shrl    $16,%ecx
524         movzbl  %dl,%esi
525         movl    (%ebp,%esi,8),%eax
526         movzbl  %ch,%esi
527         xorl    (%ebp,%esi,8),%ebx
528         movzbl  %dh,%esi
529         xorl    4(%ebp,%esi,8),%eax
530         shrl    $16,%edx
531         movzbl  %cl,%ecx
532         xorl    2048(%ebp,%ecx,8),%ebx
533         movzbl  %dh,%esi
534         movl    8(%esp),%ecx
535         xorl    %ebx,%eax
536         rorl    $8,%ebx
537         xorl    2048(%ebp,%esi,8),%eax
538         movzbl  %dl,%esi
539         movl    4(%esp),%edx
540         xorl    %ecx,%ebx
541         xorl    2052(%ebp,%esi,8),%eax
542         movl    -24(%edi),%esi
543         xorl    %eax,%ebx
544         movl    %ebx,8(%esp)
545         xorl    %edx,%eax
546         movl    %eax,4(%esp)
547         xorl    %esi,%eax
548         xorl    -20(%edi),%ebx
549         movzbl  %ah,%esi
550         movl    2052(%ebp,%esi,8),%edx
551         movzbl  %al,%esi
552         xorl    4(%ebp,%esi,8),%edx
553         shrl    $16,%eax
554         movzbl  %bl,%esi
555         movl    (%ebp,%esi,8),%ecx
556         movzbl  %ah,%esi
557         xorl    (%ebp,%esi,8),%edx
558         movzbl  %bh,%esi
559         xorl    4(%ebp,%esi,8),%ecx
560         shrl    $16,%ebx
561         movzbl  %al,%eax
562         xorl    2048(%ebp,%eax,8),%edx
563         movzbl  %bh,%esi
564         movl    16(%esp),%eax
565         xorl    %edx,%ecx
566         rorl    $8,%edx
567         xorl    2048(%ebp,%esi,8),%ecx
568         movzbl  %bl,%esi
569         movl    12(%esp),%ebx
570         xorl    %eax,%edx
571         xorl    2052(%ebp,%esi,8),%ecx
572         movl    -32(%edi),%esi
573         xorl    %ecx,%edx
574         movl    %edx,16(%esp)
575         xorl    %ebx,%ecx
576         movl    %ecx,12(%esp)
577         xorl    %esi,%ecx
578         xorl    -28(%edi),%edx
579         movzbl  %ch,%esi
580         movl    2052(%ebp,%esi,8),%ebx
581         movzbl  %cl,%esi
582         xorl    4(%ebp,%esi,8),%ebx
583         shrl    $16,%ecx
584         movzbl  %dl,%esi
585         movl    (%ebp,%esi,8),%eax
586         movzbl  %ch,%esi
587         xorl    (%ebp,%esi,8),%ebx
588         movzbl  %dh,%esi
589         xorl    4(%ebp,%esi,8),%eax
590         shrl    $16,%edx
591         movzbl  %cl,%ecx
592         xorl    2048(%ebp,%ecx,8),%ebx
593         movzbl  %dh,%esi
594         movl    8(%esp),%ecx
595         xorl    %ebx,%eax
596         rorl    $8,%ebx
597         xorl    2048(%ebp,%esi,8),%eax
598         movzbl  %dl,%esi
599         movl    4(%esp),%edx
600         xorl    %ecx,%ebx
601         xorl    2052(%ebp,%esi,8),%eax
602         movl    -40(%edi),%esi
603         xorl    %eax,%ebx
604         movl    %ebx,8(%esp)
605         xorl    %edx,%eax
606         movl    %eax,4(%esp)
607         xorl    %esi,%eax
608         xorl    -36(%edi),%ebx
609         movzbl  %ah,%esi
610         movl    2052(%ebp,%esi,8),%edx
611         movzbl  %al,%esi
612         xorl    4(%ebp,%esi,8),%edx
613         shrl    $16,%eax
614         movzbl  %bl,%esi
615         movl    (%ebp,%esi,8),%ecx
616         movzbl  %ah,%esi
617         xorl    (%ebp,%esi,8),%edx
618         movzbl  %bh,%esi
619         xorl    4(%ebp,%esi,8),%ecx
620         shrl    $16,%ebx
621         movzbl  %al,%eax
622         xorl    2048(%ebp,%eax,8),%edx
623         movzbl  %bh,%esi
624         movl    16(%esp),%eax
625         xorl    %edx,%ecx
626         rorl    $8,%edx
627         xorl    2048(%ebp,%esi,8),%ecx
628         movzbl  %bl,%esi
629         movl    12(%esp),%ebx
630         xorl    %eax,%edx
631         xorl    2052(%ebp,%esi,8),%ecx
632         movl    -48(%edi),%esi
633         xorl    %ecx,%edx
634         movl    %edx,16(%esp)
635         xorl    %ebx,%ecx
636         movl    %ecx,12(%esp)
637         xorl    %esi,%ecx
638         xorl    -44(%edi),%edx
639         movzbl  %ch,%esi
640         movl    2052(%ebp,%esi,8),%ebx
641         movzbl  %cl,%esi
642         xorl    4(%ebp,%esi,8),%ebx
643         shrl    $16,%ecx
644         movzbl  %dl,%esi
645         movl    (%ebp,%esi,8),%eax
646         movzbl  %ch,%esi
647         xorl    (%ebp,%esi,8),%ebx
648         movzbl  %dh,%esi
649         xorl    4(%ebp,%esi,8),%eax
650         shrl    $16,%edx
651         movzbl  %cl,%ecx
652         xorl    2048(%ebp,%ecx,8),%ebx
653         movzbl  %dh,%esi
654         movl    8(%esp),%ecx
655         xorl    %ebx,%eax
656         rorl    $8,%ebx
657         xorl    2048(%ebp,%esi,8),%eax
658         movzbl  %dl,%esi
659         movl    4(%esp),%edx
660         xorl    %ecx,%ebx
661         xorl    2052(%ebp,%esi,8),%eax
662         movl    -56(%edi),%esi
663         xorl    %eax,%ebx
664         movl    %ebx,8(%esp)
665         xorl    %edx,%eax
666         movl    %eax,4(%esp)
667         subl    $64,%edi
668         cmpl    20(%esp),%edi
669         je      .L007done
670         andl    %eax,%esi
671         movl    16(%esp),%edx
672         roll    $1,%esi
673         movl    %edx,%ecx
674         xorl    %esi,%ebx
675         orl     4(%edi),%ecx
676         movl    %ebx,8(%esp)
677         xorl    12(%esp),%ecx
678         movl    12(%edi),%esi
679         movl    %ecx,12(%esp)
680         orl     %ebx,%esi
681         andl    (%edi),%ecx
682         xorl    %esi,%eax
683         roll    $1,%ecx
684         movl    %eax,4(%esp)
685         xorl    %ecx,%edx
686         movl    -8(%edi),%esi
687         movl    %edx,16(%esp)
688         jmp     .L006loop
689 .align  8
690 .L007done:
691         movl    %eax,%ecx
692         movl    %ebx,%edx
693         movl    12(%esp),%eax
694         movl    16(%esp),%ebx
695         xorl    %esi,%ecx
696         xorl    12(%edi),%edx
697         xorl    (%edi),%eax
698         xorl    4(%edi),%ebx
699         ret
700 .size   _x86_Camellia_decrypt,.-_x86_Camellia_decrypt
701 .globl  Camellia_Ekeygen
702 .type   Camellia_Ekeygen,@function
703 .align  16
704 Camellia_Ekeygen:
705 .L_Camellia_Ekeygen_begin:
706         pushl   %ebp
707         pushl   %ebx
708         pushl   %esi
709         pushl   %edi
710         subl    $16,%esp
711         movl    36(%esp),%ebp
712         movl    40(%esp),%esi
713         movl    44(%esp),%edi
714         movl    (%esi),%eax
715         movl    4(%esi),%ebx
716         movl    8(%esi),%ecx
717         movl    12(%esi),%edx
718         bswap   %eax
719         bswap   %ebx
720         bswap   %ecx
721         bswap   %edx
722         movl    %eax,(%edi)
723         movl    %ebx,4(%edi)
724         movl    %ecx,8(%edi)
725         movl    %edx,12(%edi)
726         cmpl    $128,%ebp
727         je      .L0081st128
728         movl    16(%esi),%eax
729         movl    20(%esi),%ebx
730         cmpl    $192,%ebp
731         je      .L0091st192
732         movl    24(%esi),%ecx
733         movl    28(%esi),%edx
734         jmp     .L0101st256
735 .align  4
736 .L0091st192:
737         movl    %eax,%ecx
738         movl    %ebx,%edx
739         notl    %ecx
740         notl    %edx
741 .align  4
742 .L0101st256:
743         bswap   %eax
744         bswap   %ebx
745         bswap   %ecx
746         bswap   %edx
747         movl    %eax,32(%edi)
748         movl    %ebx,36(%edi)
749         movl    %ecx,40(%edi)
750         movl    %edx,44(%edi)
751         xorl    (%edi),%eax
752         xorl    4(%edi),%ebx
753         xorl    8(%edi),%ecx
754         xorl    12(%edi),%edx
755 .align  4
756 .L0081st128:
757         call    .L011pic_point
758 .L011pic_point:
759         popl    %ebp
760         leal    .LCamellia_SBOX-.L011pic_point(%ebp),%ebp
761         leal    .LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
762         movl    (%edi),%esi
763         movl    %eax,(%esp)
764         movl    %ebx,4(%esp)
765         movl    %ecx,8(%esp)
766         movl    %edx,12(%esp)
767         xorl    %esi,%eax
768         xorl    4(%edi),%ebx
769         movzbl  %ah,%esi
770         movl    2052(%ebp,%esi,8),%edx
771         movzbl  %al,%esi
772         xorl    4(%ebp,%esi,8),%edx
773         shrl    $16,%eax
774         movzbl  %bl,%esi
775         movl    (%ebp,%esi,8),%ecx
776         movzbl  %ah,%esi
777         xorl    (%ebp,%esi,8),%edx
778         movzbl  %bh,%esi
779         xorl    4(%ebp,%esi,8),%ecx
780         shrl    $16,%ebx
781         movzbl  %al,%eax
782         xorl    2048(%ebp,%eax,8),%edx
783         movzbl  %bh,%esi
784         movl    12(%esp),%eax
785         xorl    %edx,%ecx
786         rorl    $8,%edx
787         xorl    2048(%ebp,%esi,8),%ecx
788         movzbl  %bl,%esi
789         movl    8(%esp),%ebx
790         xorl    %eax,%edx
791         xorl    2052(%ebp,%esi,8),%ecx
792         movl    8(%edi),%esi
793         xorl    %ecx,%edx
794         movl    %edx,12(%esp)
795         xorl    %ebx,%ecx
796         movl    %ecx,8(%esp)
797         xorl    %esi,%ecx
798         xorl    12(%edi),%edx
799         movzbl  %ch,%esi
800         movl    2052(%ebp,%esi,8),%ebx
801         movzbl  %cl,%esi
802         xorl    4(%ebp,%esi,8),%ebx
803         shrl    $16,%ecx
804         movzbl  %dl,%esi
805         movl    (%ebp,%esi,8),%eax
806         movzbl  %ch,%esi
807         xorl    (%ebp,%esi,8),%ebx
808         movzbl  %dh,%esi
809         xorl    4(%ebp,%esi,8),%eax
810         shrl    $16,%edx
811         movzbl  %cl,%ecx
812         xorl    2048(%ebp,%ecx,8),%ebx
813         movzbl  %dh,%esi
814         movl    4(%esp),%ecx
815         xorl    %ebx,%eax
816         rorl    $8,%ebx
817         xorl    2048(%ebp,%esi,8),%eax
818         movzbl  %dl,%esi
819         movl    (%esp),%edx
820         xorl    %ecx,%ebx
821         xorl    2052(%ebp,%esi,8),%eax
822         movl    16(%edi),%esi
823         xorl    %eax,%ebx
824         movl    %ebx,4(%esp)
825         xorl    %edx,%eax
826         movl    %eax,(%esp)
827         movl    8(%esp),%ecx
828         movl    12(%esp),%edx
829         movl    44(%esp),%esi
830         xorl    (%esi),%eax
831         xorl    4(%esi),%ebx
832         xorl    8(%esi),%ecx
833         xorl    12(%esi),%edx
834         movl    16(%edi),%esi
835         movl    %eax,(%esp)
836         movl    %ebx,4(%esp)
837         movl    %ecx,8(%esp)
838         movl    %edx,12(%esp)
839         xorl    %esi,%eax
840         xorl    20(%edi),%ebx
841         movzbl  %ah,%esi
842         movl    2052(%ebp,%esi,8),%edx
843         movzbl  %al,%esi
844         xorl    4(%ebp,%esi,8),%edx
845         shrl    $16,%eax
846         movzbl  %bl,%esi
847         movl    (%ebp,%esi,8),%ecx
848         movzbl  %ah,%esi
849         xorl    (%ebp,%esi,8),%edx
850         movzbl  %bh,%esi
851         xorl    4(%ebp,%esi,8),%ecx
852         shrl    $16,%ebx
853         movzbl  %al,%eax
854         xorl    2048(%ebp,%eax,8),%edx
855         movzbl  %bh,%esi
856         movl    12(%esp),%eax
857         xorl    %edx,%ecx
858         rorl    $8,%edx
859         xorl    2048(%ebp,%esi,8),%ecx
860         movzbl  %bl,%esi
861         movl    8(%esp),%ebx
862         xorl    %eax,%edx
863         xorl    2052(%ebp,%esi,8),%ecx
864         movl    24(%edi),%esi
865         xorl    %ecx,%edx
866         movl    %edx,12(%esp)
867         xorl    %ebx,%ecx
868         movl    %ecx,8(%esp)
869         xorl    %esi,%ecx
870         xorl    28(%edi),%edx
871         movzbl  %ch,%esi
872         movl    2052(%ebp,%esi,8),%ebx
873         movzbl  %cl,%esi
874         xorl    4(%ebp,%esi,8),%ebx
875         shrl    $16,%ecx
876         movzbl  %dl,%esi
877         movl    (%ebp,%esi,8),%eax
878         movzbl  %ch,%esi
879         xorl    (%ebp,%esi,8),%ebx
880         movzbl  %dh,%esi
881         xorl    4(%ebp,%esi,8),%eax
882         shrl    $16,%edx
883         movzbl  %cl,%ecx
884         xorl    2048(%ebp,%ecx,8),%ebx
885         movzbl  %dh,%esi
886         movl    4(%esp),%ecx
887         xorl    %ebx,%eax
888         rorl    $8,%ebx
889         xorl    2048(%ebp,%esi,8),%eax
890         movzbl  %dl,%esi
891         movl    (%esp),%edx
892         xorl    %ecx,%ebx
893         xorl    2052(%ebp,%esi,8),%eax
894         movl    32(%edi),%esi
895         xorl    %eax,%ebx
896         movl    %ebx,4(%esp)
897         xorl    %edx,%eax
898         movl    %eax,(%esp)
899         movl    8(%esp),%ecx
900         movl    12(%esp),%edx
901         movl    36(%esp),%esi
902         cmpl    $128,%esi
903         jne     .L0122nd256
904         movl    44(%esp),%edi
905         leal    128(%edi),%edi
906         movl    %eax,-112(%edi)
907         movl    %ebx,-108(%edi)
908         movl    %ecx,-104(%edi)
909         movl    %edx,-100(%edi)
910         movl    %eax,%ebp
911         shll    $15,%eax
912         movl    %ebx,%esi
913         shrl    $17,%esi
914         shll    $15,%ebx
915         orl     %esi,%eax
916         movl    %ecx,%esi
917         shll    $15,%ecx
918         movl    %eax,-80(%edi)
919         shrl    $17,%esi
920         orl     %esi,%ebx
921         shrl    $17,%ebp
922         movl    %edx,%esi
923         shrl    $17,%esi
924         movl    %ebx,-76(%edi)
925         shll    $15,%edx
926         orl     %esi,%ecx
927         orl     %ebp,%edx
928         movl    %ecx,-72(%edi)
929         movl    %edx,-68(%edi)
930         movl    %eax,%ebp
931         shll    $15,%eax
932         movl    %ebx,%esi
933         shrl    $17,%esi
934         shll    $15,%ebx
935         orl     %esi,%eax
936         movl    %ecx,%esi
937         shll    $15,%ecx
938         movl    %eax,-64(%edi)
939         shrl    $17,%esi
940         orl     %esi,%ebx
941         shrl    $17,%ebp
942         movl    %edx,%esi
943         shrl    $17,%esi
944         movl    %ebx,-60(%edi)
945         shll    $15,%edx
946         orl     %esi,%ecx
947         orl     %ebp,%edx
948         movl    %ecx,-56(%edi)
949         movl    %edx,-52(%edi)
950         movl    %eax,%ebp
951         shll    $15,%eax
952         movl    %ebx,%esi
953         shrl    $17,%esi
954         shll    $15,%ebx
955         orl     %esi,%eax
956         movl    %ecx,%esi
957         shll    $15,%ecx
958         movl    %eax,-32(%edi)
959         shrl    $17,%esi
960         orl     %esi,%ebx
961         shrl    $17,%ebp
962         movl    %edx,%esi
963         shrl    $17,%esi
964         movl    %ebx,-28(%edi)
965         shll    $15,%edx
966         orl     %esi,%ecx
967         orl     %ebp,%edx
968         movl    %eax,%ebp
969         shll    $15,%eax
970         movl    %ebx,%esi
971         shrl    $17,%esi
972         shll    $15,%ebx
973         orl     %esi,%eax
974         movl    %ecx,%esi
975         shll    $15,%ecx
976         movl    %eax,-16(%edi)
977         shrl    $17,%esi
978         orl     %esi,%ebx
979         shrl    $17,%ebp
980         movl    %edx,%esi
981         shrl    $17,%esi
982         movl    %ebx,-12(%edi)
983         shll    $15,%edx
984         orl     %esi,%ecx
985         orl     %ebp,%edx
986         movl    %ecx,-8(%edi)
987         movl    %edx,-4(%edi)
988         movl    %ebx,%ebp
989         shll    $2,%ebx
990         movl    %ecx,%esi
991         shrl    $30,%esi
992         shll    $2,%ecx
993         orl     %esi,%ebx
994         movl    %edx,%esi
995         shll    $2,%edx
996         movl    %ebx,32(%edi)
997         shrl    $30,%esi
998         orl     %esi,%ecx
999         shrl    $30,%ebp
1000         movl    %eax,%esi
1001         shrl    $30,%esi
1002         movl    %ecx,36(%edi)
1003         shll    $2,%eax
1004         orl     %esi,%edx
1005         orl     %ebp,%eax
1006         movl    %edx,40(%edi)
1007         movl    %eax,44(%edi)
1008         movl    %ebx,%ebp
1009         shll    $17,%ebx
1010         movl    %ecx,%esi
1011         shrl    $15,%esi
1012         shll    $17,%ecx
1013         orl     %esi,%ebx
1014         movl    %edx,%esi
1015         shll    $17,%edx
1016         movl    %ebx,64(%edi)
1017         shrl    $15,%esi
1018         orl     %esi,%ecx
1019         shrl    $15,%ebp
1020         movl    %eax,%esi
1021         shrl    $15,%esi
1022         movl    %ecx,68(%edi)
1023         shll    $17,%eax
1024         orl     %esi,%edx
1025         orl     %ebp,%eax
1026         movl    %edx,72(%edi)
1027         movl    %eax,76(%edi)
1028         movl    -128(%edi),%ebx
1029         movl    -124(%edi),%ecx
1030         movl    -120(%edi),%edx
1031         movl    -116(%edi),%eax
1032         movl    %ebx,%ebp
1033         shll    $15,%ebx
1034         movl    %ecx,%esi
1035         shrl    $17,%esi
1036         shll    $15,%ecx
1037         orl     %esi,%ebx
1038         movl    %edx,%esi
1039         shll    $15,%edx
1040         movl    %ebx,-96(%edi)
1041         shrl    $17,%esi
1042         orl     %esi,%ecx
1043         shrl    $17,%ebp
1044         movl    %eax,%esi
1045         shrl    $17,%esi
1046         movl    %ecx,-92(%edi)
1047         shll    $15,%eax
1048         orl     %esi,%edx
1049         orl     %ebp,%eax
1050         movl    %edx,-88(%edi)
1051         movl    %eax,-84(%edi)
1052         movl    %ebx,%ebp
1053         shll    $30,%ebx
1054         movl    %ecx,%esi
1055         shrl    $2,%esi
1056         shll    $30,%ecx
1057         orl     %esi,%ebx
1058         movl    %edx,%esi
1059         shll    $30,%edx
1060         movl    %ebx,-48(%edi)
1061         shrl    $2,%esi
1062         orl     %esi,%ecx
1063         shrl    $2,%ebp
1064         movl    %eax,%esi
1065         shrl    $2,%esi
1066         movl    %ecx,-44(%edi)
1067         shll    $30,%eax
1068         orl     %esi,%edx
1069         orl     %ebp,%eax
1070         movl    %edx,-40(%edi)
1071         movl    %eax,-36(%edi)
1072         movl    %ebx,%ebp
1073         shll    $15,%ebx
1074         movl    %ecx,%esi
1075         shrl    $17,%esi
1076         shll    $15,%ecx
1077         orl     %esi,%ebx
1078         movl    %edx,%esi
1079         shll    $15,%edx
1080         shrl    $17,%esi
1081         orl     %esi,%ecx
1082         shrl    $17,%ebp
1083         movl    %eax,%esi
1084         shrl    $17,%esi
1085         shll    $15,%eax
1086         orl     %esi,%edx
1087         orl     %ebp,%eax
1088         movl    %edx,-24(%edi)
1089         movl    %eax,-20(%edi)
1090         movl    %ebx,%ebp
1091         shll    $17,%ebx
1092         movl    %ecx,%esi
1093         shrl    $15,%esi
1094         shll    $17,%ecx
1095         orl     %esi,%ebx
1096         movl    %edx,%esi
1097         shll    $17,%edx
1098         movl    %ebx,(%edi)
1099         shrl    $15,%esi
1100         orl     %esi,%ecx
1101         shrl    $15,%ebp
1102         movl    %eax,%esi
1103         shrl    $15,%esi
1104         movl    %ecx,4(%edi)
1105         shll    $17,%eax
1106         orl     %esi,%edx
1107         orl     %ebp,%eax
1108         movl    %edx,8(%edi)
1109         movl    %eax,12(%edi)
1110         movl    %ebx,%ebp
1111         shll    $17,%ebx
1112         movl    %ecx,%esi
1113         shrl    $15,%esi
1114         shll    $17,%ecx
1115         orl     %esi,%ebx
1116         movl    %edx,%esi
1117         shll    $17,%edx
1118         movl    %ebx,16(%edi)
1119         shrl    $15,%esi
1120         orl     %esi,%ecx
1121         shrl    $15,%ebp
1122         movl    %eax,%esi
1123         shrl    $15,%esi
1124         movl    %ecx,20(%edi)
1125         shll    $17,%eax
1126         orl     %esi,%edx
1127         orl     %ebp,%eax
1128         movl    %edx,24(%edi)
1129         movl    %eax,28(%edi)
1130         movl    %ebx,%ebp
1131         shll    $17,%ebx
1132         movl    %ecx,%esi
1133         shrl    $15,%esi
1134         shll    $17,%ecx
1135         orl     %esi,%ebx
1136         movl    %edx,%esi
1137         shll    $17,%edx
1138         movl    %ebx,48(%edi)
1139         shrl    $15,%esi
1140         orl     %esi,%ecx
1141         shrl    $15,%ebp
1142         movl    %eax,%esi
1143         shrl    $15,%esi
1144         movl    %ecx,52(%edi)
1145         shll    $17,%eax
1146         orl     %esi,%edx
1147         orl     %ebp,%eax
1148         movl    %edx,56(%edi)
1149         movl    %eax,60(%edi)
1150         movl    $3,%eax
1151         jmp     .L013done
1152 .align  16
1153 .L0122nd256:
1154         movl    44(%esp),%esi
1155         movl    %eax,48(%esi)
1156         movl    %ebx,52(%esi)
1157         movl    %ecx,56(%esi)
1158         movl    %edx,60(%esi)
1159         xorl    32(%esi),%eax
1160         xorl    36(%esi),%ebx
1161         xorl    40(%esi),%ecx
1162         xorl    44(%esi),%edx
1163         movl    32(%edi),%esi
1164         movl    %eax,(%esp)
1165         movl    %ebx,4(%esp)
1166         movl    %ecx,8(%esp)
1167         movl    %edx,12(%esp)
1168         xorl    %esi,%eax
1169         xorl    36(%edi),%ebx
1170         movzbl  %ah,%esi
1171         movl    2052(%ebp,%esi,8),%edx
1172         movzbl  %al,%esi
1173         xorl    4(%ebp,%esi,8),%edx
1174         shrl    $16,%eax
1175         movzbl  %bl,%esi
1176         movl    (%ebp,%esi,8),%ecx
1177         movzbl  %ah,%esi
1178         xorl    (%ebp,%esi,8),%edx
1179         movzbl  %bh,%esi
1180         xorl    4(%ebp,%esi,8),%ecx
1181         shrl    $16,%ebx
1182         movzbl  %al,%eax
1183         xorl    2048(%ebp,%eax,8),%edx
1184         movzbl  %bh,%esi
1185         movl    12(%esp),%eax
1186         xorl    %edx,%ecx
1187         rorl    $8,%edx
1188         xorl    2048(%ebp,%esi,8),%ecx
1189         movzbl  %bl,%esi
1190         movl    8(%esp),%ebx
1191         xorl    %eax,%edx
1192         xorl    2052(%ebp,%esi,8),%ecx
1193         movl    40(%edi),%esi
1194         xorl    %ecx,%edx
1195         movl    %edx,12(%esp)
1196         xorl    %ebx,%ecx
1197         movl    %ecx,8(%esp)
1198         xorl    %esi,%ecx
1199         xorl    44(%edi),%edx
1200         movzbl  %ch,%esi
1201         movl    2052(%ebp,%esi,8),%ebx
1202         movzbl  %cl,%esi
1203         xorl    4(%ebp,%esi,8),%ebx
1204         shrl    $16,%ecx
1205         movzbl  %dl,%esi
1206         movl    (%ebp,%esi,8),%eax
1207         movzbl  %ch,%esi
1208         xorl    (%ebp,%esi,8),%ebx
1209         movzbl  %dh,%esi
1210         xorl    4(%ebp,%esi,8),%eax
1211         shrl    $16,%edx
1212         movzbl  %cl,%ecx
1213         xorl    2048(%ebp,%ecx,8),%ebx
1214         movzbl  %dh,%esi
1215         movl    4(%esp),%ecx
1216         xorl    %ebx,%eax
1217         rorl    $8,%ebx
1218         xorl    2048(%ebp,%esi,8),%eax
1219         movzbl  %dl,%esi
1220         movl    (%esp),%edx
1221         xorl    %ecx,%ebx
1222         xorl    2052(%ebp,%esi,8),%eax
1223         movl    48(%edi),%esi
1224         xorl    %eax,%ebx
1225         movl    %ebx,4(%esp)
1226         xorl    %edx,%eax
1227         movl    %eax,(%esp)
1228         movl    8(%esp),%ecx
1229         movl    12(%esp),%edx
1230         movl    44(%esp),%edi
1231         leal    128(%edi),%edi
1232         movl    %eax,-112(%edi)
1233         movl    %ebx,-108(%edi)
1234         movl    %ecx,-104(%edi)
1235         movl    %edx,-100(%edi)
1236         movl    %eax,%ebp
1237         shll    $30,%eax
1238         movl    %ebx,%esi
1239         shrl    $2,%esi
1240         shll    $30,%ebx
1241         orl     %esi,%eax
1242         movl    %ecx,%esi
1243         shll    $30,%ecx
1244         movl    %eax,-48(%edi)
1245         shrl    $2,%esi
1246         orl     %esi,%ebx
1247         shrl    $2,%ebp
1248         movl    %edx,%esi
1249         shrl    $2,%esi
1250         movl    %ebx,-44(%edi)
1251         shll    $30,%edx
1252         orl     %esi,%ecx
1253         orl     %ebp,%edx
1254         movl    %ecx,-40(%edi)
1255         movl    %edx,-36(%edi)
1256         movl    %eax,%ebp
1257         shll    $30,%eax
1258         movl    %ebx,%esi
1259         shrl    $2,%esi
1260         shll    $30,%ebx
1261         orl     %esi,%eax
1262         movl    %ecx,%esi
1263         shll    $30,%ecx
1264         movl    %eax,32(%edi)
1265         shrl    $2,%esi
1266         orl     %esi,%ebx
1267         shrl    $2,%ebp
1268         movl    %edx,%esi
1269         shrl    $2,%esi
1270         movl    %ebx,36(%edi)
1271         shll    $30,%edx
1272         orl     %esi,%ecx
1273         orl     %ebp,%edx
1274         movl    %ecx,40(%edi)
1275         movl    %edx,44(%edi)
1276         movl    %ebx,%ebp
1277         shll    $19,%ebx
1278         movl    %ecx,%esi
1279         shrl    $13,%esi
1280         shll    $19,%ecx
1281         orl     %esi,%ebx
1282         movl    %edx,%esi
1283         shll    $19,%edx
1284         movl    %ebx,128(%edi)
1285         shrl    $13,%esi
1286         orl     %esi,%ecx
1287         shrl    $13,%ebp
1288         movl    %eax,%esi
1289         shrl    $13,%esi
1290         movl    %ecx,132(%edi)
1291         shll    $19,%eax
1292         orl     %esi,%edx
1293         orl     %ebp,%eax
1294         movl    %edx,136(%edi)
1295         movl    %eax,140(%edi)
1296         movl    -96(%edi),%ebx
1297         movl    -92(%edi),%ecx
1298         movl    -88(%edi),%edx
1299         movl    -84(%edi),%eax
1300         movl    %ebx,%ebp
1301         shll    $15,%ebx
1302         movl    %ecx,%esi
1303         shrl    $17,%esi
1304         shll    $15,%ecx
1305         orl     %esi,%ebx
1306         movl    %edx,%esi
1307         shll    $15,%edx
1308         movl    %ebx,-96(%edi)
1309         shrl    $17,%esi
1310         orl     %esi,%ecx
1311         shrl    $17,%ebp
1312         movl    %eax,%esi
1313         shrl    $17,%esi
1314         movl    %ecx,-92(%edi)
1315         shll    $15,%eax
1316         orl     %esi,%edx
1317         orl     %ebp,%eax
1318         movl    %edx,-88(%edi)
1319         movl    %eax,-84(%edi)
1320         movl    %ebx,%ebp
1321         shll    $15,%ebx
1322         movl    %ecx,%esi
1323         shrl    $17,%esi
1324         shll    $15,%ecx
1325         orl     %esi,%ebx
1326         movl    %edx,%esi
1327         shll    $15,%edx
1328         movl    %ebx,-64(%edi)
1329         shrl    $17,%esi
1330         orl     %esi,%ecx
1331         shrl    $17,%ebp
1332         movl    %eax,%esi
1333         shrl    $17,%esi
1334         movl    %ecx,-60(%edi)
1335         shll    $15,%eax
1336         orl     %esi,%edx
1337         orl     %ebp,%eax
1338         movl    %edx,-56(%edi)
1339         movl    %eax,-52(%edi)
1340         movl    %ebx,%ebp
1341         shll    $30,%ebx
1342         movl    %ecx,%esi
1343         shrl    $2,%esi
1344         shll    $30,%ecx
1345         orl     %esi,%ebx
1346         movl    %edx,%esi
1347         shll    $30,%edx
1348         movl    %ebx,16(%edi)
1349         shrl    $2,%esi
1350         orl     %esi,%ecx
1351         shrl    $2,%ebp
1352         movl    %eax,%esi
1353         shrl    $2,%esi
1354         movl    %ecx,20(%edi)
1355         shll    $30,%eax
1356         orl     %esi,%edx
1357         orl     %ebp,%eax
1358         movl    %edx,24(%edi)
1359         movl    %eax,28(%edi)
1360         movl    %ecx,%ebp
1361         shll    $2,%ecx
1362         movl    %edx,%esi
1363         shrl    $30,%esi
1364         shll    $2,%edx
1365         orl     %esi,%ecx
1366         movl    %eax,%esi
1367         shll    $2,%eax
1368         movl    %ecx,80(%edi)
1369         shrl    $30,%esi
1370         orl     %esi,%edx
1371         shrl    $30,%ebp
1372         movl    %ebx,%esi
1373         shrl    $30,%esi
1374         movl    %edx,84(%edi)
1375         shll    $2,%ebx
1376         orl     %esi,%eax
1377         orl     %ebp,%ebx
1378         movl    %eax,88(%edi)
1379         movl    %ebx,92(%edi)
1380         movl    -80(%edi),%ecx
1381         movl    -76(%edi),%edx
1382         movl    -72(%edi),%eax
1383         movl    -68(%edi),%ebx
1384         movl    %ecx,%ebp
1385         shll    $15,%ecx
1386         movl    %edx,%esi
1387         shrl    $17,%esi
1388         shll    $15,%edx
1389         orl     %esi,%ecx
1390         movl    %eax,%esi
1391         shll    $15,%eax
1392         movl    %ecx,-80(%edi)
1393         shrl    $17,%esi
1394         orl     %esi,%edx
1395         shrl    $17,%ebp
1396         movl    %ebx,%esi
1397         shrl    $17,%esi
1398         movl    %edx,-76(%edi)
1399         shll    $15,%ebx
1400         orl     %esi,%eax
1401         orl     %ebp,%ebx
1402         movl    %eax,-72(%edi)
1403         movl    %ebx,-68(%edi)
1404         movl    %ecx,%ebp
1405         shll    $30,%ecx
1406         movl    %edx,%esi
1407         shrl    $2,%esi
1408         shll    $30,%edx
1409         orl     %esi,%ecx
1410         movl    %eax,%esi
1411         shll    $30,%eax
1412         movl    %ecx,-16(%edi)
1413         shrl    $2,%esi
1414         orl     %esi,%edx
1415         shrl    $2,%ebp
1416         movl    %ebx,%esi
1417         shrl    $2,%esi
1418         movl    %edx,-12(%edi)
1419         shll    $30,%ebx
1420         orl     %esi,%eax
1421         orl     %ebp,%ebx
1422         movl    %eax,-8(%edi)
1423         movl    %ebx,-4(%edi)
1424         movl    %edx,64(%edi)
1425         movl    %eax,68(%edi)
1426         movl    %ebx,72(%edi)
1427         movl    %ecx,76(%edi)
1428         movl    %edx,%ebp
1429         shll    $17,%edx
1430         movl    %eax,%esi
1431         shrl    $15,%esi
1432         shll    $17,%eax
1433         orl     %esi,%edx
1434         movl    %ebx,%esi
1435         shll    $17,%ebx
1436         movl    %edx,96(%edi)
1437         shrl    $15,%esi
1438         orl     %esi,%eax
1439         shrl    $15,%ebp
1440         movl    %ecx,%esi
1441         shrl    $15,%esi
1442         movl    %eax,100(%edi)
1443         shll    $17,%ecx
1444         orl     %esi,%ebx
1445         orl     %ebp,%ecx
1446         movl    %ebx,104(%edi)
1447         movl    %ecx,108(%edi)
1448         movl    -128(%edi),%edx
1449         movl    -124(%edi),%eax
1450         movl    -120(%edi),%ebx
1451         movl    -116(%edi),%ecx
1452         movl    %eax,%ebp
1453         shll    $13,%eax
1454         movl    %ebx,%esi
1455         shrl    $19,%esi
1456         shll    $13,%ebx
1457         orl     %esi,%eax
1458         movl    %ecx,%esi
1459         shll    $13,%ecx
1460         movl    %eax,-32(%edi)
1461         shrl    $19,%esi
1462         orl     %esi,%ebx
1463         shrl    $19,%ebp
1464         movl    %edx,%esi
1465         shrl    $19,%esi
1466         movl    %ebx,-28(%edi)
1467         shll    $13,%edx
1468         orl     %esi,%ecx
1469         orl     %ebp,%edx
1470         movl    %ecx,-24(%edi)
1471         movl    %edx,-20(%edi)
1472         movl    %eax,%ebp
1473         shll    $15,%eax
1474         movl    %ebx,%esi
1475         shrl    $17,%esi
1476         shll    $15,%ebx
1477         orl     %esi,%eax
1478         movl    %ecx,%esi
1479         shll    $15,%ecx
1480         movl    %eax,(%edi)
1481         shrl    $17,%esi
1482         orl     %esi,%ebx
1483         shrl    $17,%ebp
1484         movl    %edx,%esi
1485         shrl    $17,%esi
1486         movl    %ebx,4(%edi)
1487         shll    $15,%edx
1488         orl     %esi,%ecx
1489         orl     %ebp,%edx
1490         movl    %ecx,8(%edi)
1491         movl    %edx,12(%edi)
1492         movl    %eax,%ebp
1493         shll    $17,%eax
1494         movl    %ebx,%esi
1495         shrl    $15,%esi
1496         shll    $17,%ebx
1497         orl     %esi,%eax
1498         movl    %ecx,%esi
1499         shll    $17,%ecx
1500         movl    %eax,48(%edi)
1501         shrl    $15,%esi
1502         orl     %esi,%ebx
1503         shrl    $15,%ebp
1504         movl    %edx,%esi
1505         shrl    $15,%esi
1506         movl    %ebx,52(%edi)
1507         shll    $17,%edx
1508         orl     %esi,%ecx
1509         orl     %ebp,%edx
1510         movl    %ecx,56(%edi)
1511         movl    %edx,60(%edi)
1512         movl    %ebx,%ebp
1513         shll    $2,%ebx
1514         movl    %ecx,%esi
1515         shrl    $30,%esi
1516         shll    $2,%ecx
1517         orl     %esi,%ebx
1518         movl    %edx,%esi
1519         shll    $2,%edx
1520         movl    %ebx,112(%edi)
1521         shrl    $30,%esi
1522         orl     %esi,%ecx
1523         shrl    $30,%ebp
1524         movl    %eax,%esi
1525         shrl    $30,%esi
1526         movl    %ecx,116(%edi)
1527         shll    $2,%eax
1528         orl     %esi,%edx
1529         orl     %ebp,%eax
1530         movl    %edx,120(%edi)
1531         movl    %eax,124(%edi)
1532         movl    $4,%eax
1533 .L013done:
1534         leal    144(%edi),%edx
1535         addl    $16,%esp
1536         popl    %edi
1537         popl    %esi
1538         popl    %ebx
1539         popl    %ebp
1540         ret
1541 .size   Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
1542 .globl  Camellia_set_key
1543 .type   Camellia_set_key,@function
1544 .align  16
1545 Camellia_set_key:
1546 .L_Camellia_set_key_begin:
1547         pushl   %ebx
1548         movl    8(%esp),%ecx
1549         movl    12(%esp),%ebx
1550         movl    16(%esp),%edx
1551         movl    $-1,%eax
1552         testl   %ecx,%ecx
1553         jz      .L014done
1554         testl   %edx,%edx
1555         jz      .L014done
1556         movl    $-2,%eax
1557         cmpl    $256,%ebx
1558         je      .L015arg_ok
1559         cmpl    $192,%ebx
1560         je      .L015arg_ok
1561         cmpl    $128,%ebx
1562         jne     .L014done
1563 .align  4
1564 .L015arg_ok:
1565         pushl   %edx
1566         pushl   %ecx
1567         pushl   %ebx
1568         call    .L_Camellia_Ekeygen_begin
1569         addl    $12,%esp
1570         movl    %eax,(%edx)
1571         xorl    %eax,%eax
1572 .align  4
1573 .L014done:
1574         popl    %ebx
1575         ret
1576 .size   Camellia_set_key,.-.L_Camellia_set_key_begin
1577 .align  64
1578 .LCamellia_SIGMA:
1579 .long   2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
1580 .align  64
1581 .LCamellia_SBOX:
1582 .long   1886416896,1886388336
1583 .long   2189591040,741081132
1584 .long   741092352,3014852787
1585 .long   3974949888,3233808576
1586 .long   3014898432,3840147684
1587 .long   656877312,1465319511
1588 .long   3233857536,3941204202
1589 .long   3857048832,2930639022
1590 .long   3840205824,589496355
1591 .long   2240120064,1802174571
1592 .long   1465341696,1162149957
1593 .long   892679424,2779054245
1594 .long   3941263872,3991732461
1595 .long   202116096,1330577487
1596 .long   2930683392,488439837
1597 .long   1094795520,2459041938
1598 .long   589505280,2256928902
1599 .long   4025478912,2947481775
1600 .long   1802201856,2088501372
1601 .long   2475922176,522125343
1602 .long   1162167552,1044250686
1603 .long   421075200,3705405660
1604 .long   2779096320,1583218782
1605 .long   555819264,185270283
1606 .long   3991792896,2795896998
1607 .long   235802112,960036921
1608 .long   1330597632,3587506389
1609 .long   1313754624,1566376029
1610 .long   488447232,3654877401
1611 .long   1701143808,1515847770
1612 .long   2459079168,1364262993
1613 .long   3183328512,1819017324
1614 .long   2256963072,2341142667
1615 .long   3099113472,2593783962
1616 .long   2947526400,4227531003
1617 .long   2408550144,2964324528
1618 .long   2088532992,1953759348
1619 .long   3958106880,724238379
1620 .long   522133248,4042260720
1621 .long   3469659648,2223243396
1622 .long   1044266496,3755933919
1623 .long   808464384,3419078859
1624 .long   3705461760,875823156
1625 .long   1600085760,1987444854
1626 .long   1583242752,1835860077
1627 .long   3318072576,2846425257
1628 .long   185273088,3520135377
1629 .long   437918208,67371012
1630 .long   2795939328,336855060
1631 .long   3789676800,976879674
1632 .long   960051456,3739091166
1633 .long   3402287616,286326801
1634 .long   3587560704,842137650
1635 .long   1195853568,2627469468
1636 .long   1566399744,1397948499
1637 .long   1027423488,4075946226
1638 .long   3654932736,4278059262
1639 .long   16843008,3486449871
1640 .long   1515870720,3284336835
1641 .long   3604403712,2054815866
1642 .long   1364283648,606339108
1643 .long   1448498688,3907518696
1644 .long   1819044864,1616904288
1645 .long   1296911616,1768489065
1646 .long   2341178112,2863268010
1647 .long   218959104,2694840480
1648 .long   2593823232,2711683233
1649 .long   1717986816,1650589794
1650 .long   4227595008,1414791252
1651 .long   3435973632,505282590
1652 .long   2964369408,3772776672
1653 .long   757935360,1684275300
1654 .long   1953788928,269484048
1655 .long   303174144,0
1656 .long   724249344,2745368739
1657 .long   538976256,1970602101
1658 .long   4042321920,2324299914
1659 .long   2981212416,3873833190
1660 .long   2223277056,151584777
1661 .long   2576980224,3722248413
1662 .long   3755990784,2273771655
1663 .long   1280068608,2206400643
1664 .long   3419130624,3452764365
1665 .long   3267543552,2425356432
1666 .long   875836416,1936916595
1667 .long   2122219008,4143317238
1668 .long   1987474944,2644312221
1669 .long   84215040,3216965823
1670 .long   1835887872,1381105746
1671 .long   3082270464,3638034648
1672 .long   2846468352,3368550600
1673 .long   825307392,3334865094
1674 .long   3520188672,2172715137
1675 .long   387389184,1869545583
1676 .long   67372032,320012307
1677 .long   3621246720,1667432547
1678 .long   336860160,3924361449
1679 .long   1482184704,2812739751
1680 .long   976894464,2677997727
1681 .long   1633771776,3166437564
1682 .long   3739147776,690552873
1683 .long   454761216,4193845497
1684 .long   286331136,791609391
1685 .long   471604224,3031695540
1686 .long   842150400,2021130360
1687 .long   252645120,101056518
1688 .long   2627509248,3890675943
1689 .long   370546176,1903231089
1690 .long   1397969664,3570663636
1691 .long   404232192,2880110763
1692 .long   4076007936,2290614408
1693 .long   572662272,2374828173
1694 .long   4278124032,1920073842
1695 .long   1145324544,3115909305
1696 .long   3486502656,4177002744
1697 .long   2998055424,2896953516
1698 .long   3284386560,909508662
1699 .long   3048584448,707395626
1700 .long   2054846976,1010565180
1701 .long   2442236160,4059103473
1702 .long   606348288,1077936192
1703 .long   134744064,3553820883
1704 .long   3907577856,3149594811
1705 .long   2829625344,1128464451
1706 .long   1616928768,353697813
1707 .long   4244438016,2913796269
1708 .long   1768515840,2004287607
1709 .long   1347440640,2155872384
1710 .long   2863311360,2189557890
1711 .long   3503345664,3974889708
1712 .long   2694881280,656867367
1713 .long   2105376000,3856990437
1714 .long   2711724288,2240086149
1715 .long   2307492096,892665909
1716 .long   1650614784,202113036
1717 .long   2543294208,1094778945
1718 .long   1414812672,4025417967
1719 .long   1532713728,2475884691
1720 .long   505290240,421068825
1721 .long   2509608192,555810849
1722 .long   3772833792,235798542
1723 .long   4294967040,1313734734
1724 .long   1684300800,1701118053
1725 .long   3537031680,3183280317
1726 .long   269488128,3099066552
1727 .long   3301229568,2408513679
1728 .long   0,3958046955
1729 .long   1212696576,3469607118
1730 .long   2745410304,808452144
1731 .long   4160222976,1600061535
1732 .long   1970631936,3318022341
1733 .long   3688618752,437911578
1734 .long   2324335104,3789619425
1735 .long   50529024,3402236106
1736 .long   3873891840,1195835463
1737 .long   3671775744,1027407933
1738 .long   151587072,16842753
1739 .long   1061109504,3604349142
1740 .long   3722304768,1448476758
1741 .long   2492765184,1296891981
1742 .long   2273806080,218955789
1743 .long   1549556736,1717960806
1744 .long   2206434048,3435921612
1745 .long   33686016,757923885
1746 .long   3452816640,303169554
1747 .long   1246382592,538968096
1748 .long   2425393152,2981167281
1749 .long   858993408,2576941209
1750 .long   1936945920,1280049228
1751 .long   1734829824,3267494082
1752 .long   4143379968,2122186878
1753 .long   4092850944,84213765
1754 .long   2644352256,3082223799
1755 .long   2139062016,825294897
1756 .long   3217014528,387383319
1757 .long   3806519808,3621191895
1758 .long   1381126656,1482162264
1759 .long   2610666240,1633747041
1760 .long   3638089728,454754331
1761 .long   640034304,471597084
1762 .long   3368601600,252641295
1763 .long   926365440,370540566
1764 .long   3334915584,404226072
1765 .long   993737472,572653602
1766 .long   2172748032,1145307204
1767 .long   2526451200,2998010034
1768 .long   1869573888,3048538293
1769 .long   1263225600,2442199185
1770 .long   320017152,134742024
1771 .long   3200171520,2829582504
1772 .long   1667457792,4244373756
1773 .long   774778368,1347420240
1774 .long   3924420864,3503292624
1775 .long   2038003968,2105344125
1776 .long   2812782336,2307457161
1777 .long   2358021120,2543255703
1778 .long   2678038272,1532690523
1779 .long   1852730880,2509570197
1780 .long   3166485504,4294902015
1781 .long   2391707136,3536978130
1782 .long   690563328,3301179588
1783 .long   4126536960,1212678216
1784 .long   4193908992,4160159991
1785 .long   3065427456,3688562907
1786 .long   791621376,50528259
1787 .long   4261281024,3671720154
1788 .long   3031741440,1061093439
1789 .long   1499027712,2492727444
1790 .long   2021160960,1549533276
1791 .long   2560137216,33685506
1792 .long   101058048,1246363722
1793 .long   1785358848,858980403
1794 .long   3890734848,1734803559
1795 .long   1179010560,4092788979
1796 .long   1903259904,2139029631
1797 .long   3132799488,3806462178
1798 .long   3570717696,2610626715
1799 .long   623191296,640024614
1800 .long   2880154368,926351415
1801 .long   1111638528,993722427
1802 .long   2290649088,2526412950
1803 .long   2728567296,1263206475
1804 .long   2374864128,3200123070
1805 .long   4210752000,774766638
1806 .long   1920102912,2037973113
1807 .long   117901056,2357985420
1808 .long   3115956480,1852702830
1809 .long   1431655680,2391670926
1810 .long   4177065984,4126474485
1811 .long   4008635904,3065381046
1812 .long   2896997376,4261216509
1813 .long   168430080,1499005017
1814 .long   909522432,2560098456
1815 .long   1229539584,1785331818
1816 .long   707406336,1178992710
1817 .long   1751672832,3132752058
1818 .long   1010580480,623181861
1819 .long   943208448,1111621698
1820 .long   4059164928,2728525986
1821 .long   2762253312,4210688250
1822 .long   1077952512,117899271
1823 .long   673720320,1431634005
1824 .long   3553874688,4008575214
1825 .long   2071689984,168427530
1826 .long   3149642496,1229520969
1827 .long   3385444608,1751646312
1828 .long   1128481536,943194168
1829 .long   3250700544,2762211492
1830 .long   353703168,673710120
1831 .long   3823362816,2071658619
1832 .long   2913840384,3385393353
1833 .long   4109693952,3250651329
1834 .long   2004317952,3823304931
1835 .long   3351758592,4109631732
1836 .long   2155905024,3351707847
1837 .long   2661195264,2661154974
1838 .long   14737632,939538488
1839 .long   328965,1090535745
1840 .long   5789784,369104406
1841 .long   14277081,1979741814
1842 .long   6776679,3640711641
1843 .long   5131854,2466288531
1844 .long   8487297,1610637408
1845 .long   13355979,4060148466
1846 .long   13224393,1912631922
1847 .long   723723,3254829762
1848 .long   11447982,2868947883
1849 .long   6974058,2583730842
1850 .long   14013909,1962964341
1851 .long   1579032,100664838
1852 .long   6118749,1459640151
1853 .long   8553090,2684395680
1854 .long   4605510,2432733585
1855 .long   14671839,4144035831
1856 .long   14079702,3036722613
1857 .long   2565927,3372272073
1858 .long   9079434,2717950626
1859 .long   3289650,2348846220
1860 .long   4934475,3523269330
1861 .long   4342338,2415956112
1862 .long   14408667,4127258358
1863 .long   1842204,117442311
1864 .long   10395294,2801837991
1865 .long   10263708,654321447
1866 .long   3815994,2382401166
1867 .long   13290186,2986390194
1868 .long   2434341,1224755529
1869 .long   8092539,3724599006
1870 .long   855309,1124090691
1871 .long   7434609,1543527516
1872 .long   6250335,3607156695
1873 .long   2039583,3338717127
1874 .long   16316664,1040203326
1875 .long   14145495,4110480885
1876 .long   4079166,2399178639
1877 .long   10329501,1728079719
1878 .long   8158332,520101663
1879 .long   6316128,402659352
1880 .long   12171705,1845522030
1881 .long   12500670,2936057775
1882 .long   12369084,788541231
1883 .long   9145227,3791708898
1884 .long   1447446,2231403909
1885 .long   3421236,218107149
1886 .long   5066061,1392530259
1887 .long   12829635,4026593520
1888 .long   7500402,2617285788
1889 .long   9803157,1694524773
1890 .long   11250603,3925928682
1891 .long   9342606,2734728099
1892 .long   12237498,2919280302
1893 .long   8026746,2650840734
1894 .long   11776947,3959483628
1895 .long   131586,2147516544
1896 .long   11842740,754986285
1897 .long   11382189,1795189611
1898 .long   10658466,2818615464
1899 .long   11316396,721431339
1900 .long   14211288,905983542
1901 .long   10132122,2785060518
1902 .long   1513239,3305162181
1903 .long   1710618,2248181382
1904 .long   3487029,1291865421
1905 .long   13421772,855651123
1906 .long   16250871,4244700669
1907 .long   10066329,1711302246
1908 .long   6381921,1476417624
1909 .long   5921370,2516620950
1910 .long   15263976,973093434
1911 .long   2368548,150997257
1912 .long   5658198,2499843477
1913 .long   4210752,268439568
1914 .long   14803425,2013296760
1915 .long   6513507,3623934168
1916 .long   592137,1107313218
1917 .long   3355443,3422604492
1918 .long   12566463,4009816047
1919 .long   10000536,637543974
1920 .long   9934743,3842041317
1921 .long   8750469,1627414881
1922 .long   6842472,436214298
1923 .long   16579836,1056980799
1924 .long   15527148,989870907
1925 .long   657930,2181071490
1926 .long   14342874,3053500086
1927 .long   7303023,3674266587
1928 .long   5460819,3556824276
1929 .long   6447714,2550175896
1930 .long   10724259,3892373736
1931 .long   3026478,2332068747
1932 .long   526344,33554946
1933 .long   11513775,3942706155
1934 .long   2631720,167774730
1935 .long   11579568,738208812
1936 .long   7631988,486546717
1937 .long   12763842,2952835248
1938 .long   12434877,1862299503
1939 .long   3552822,2365623693
1940 .long   2236962,2281736328
1941 .long   3684408,234884622
1942 .long   6579300,419436825
1943 .long   1973790,2264958855
1944 .long   3750201,1308642894
1945 .long   2894892,184552203
1946 .long   10921638,2835392937
1947 .long   3158064,201329676
1948 .long   15066597,2030074233
1949 .long   4473924,285217041
1950 .long   16645629,2130739071
1951 .long   8947848,570434082
1952 .long   10461087,3875596263
1953 .long   6645093,1493195097
1954 .long   8882055,3774931425
1955 .long   7039851,3657489114
1956 .long   16053492,1023425853
1957 .long   2302755,3355494600
1958 .long   4737096,301994514
1959 .long   1052688,67109892
1960 .long   13750737,1946186868
1961 .long   5329233,1409307732
1962 .long   12632256,805318704
1963 .long   16382457,2113961598
1964 .long   13816530,3019945140
1965 .long   10526880,671098920
1966 .long   5592405,1426085205
1967 .long   10592673,1744857192
1968 .long   4276545,1342197840
1969 .long   16448250,3187719870
1970 .long   4408131,3489714384
1971 .long   1250067,3288384708
1972 .long   12895428,822096177
1973 .long   3092271,3405827019
1974 .long   11053224,704653866
1975 .long   11974326,2902502829
1976 .long   3947580,251662095
1977 .long   2829099,3389049546
1978 .long   12698049,1879076976
1979 .long   16777215,4278255615
1980 .long   13158600,838873650
1981 .long   10855845,1761634665
1982 .long   2105376,134219784
1983 .long   9013641,1644192354
1984 .long   0,0
1985 .long   9474192,603989028
1986 .long   4671303,3506491857
1987 .long   15724527,4211145723
1988 .long   15395562,3120609978
1989 .long   12040119,3976261101
1990 .long   1381653,1157645637
1991 .long   394758,2164294017
1992 .long   13487565,1929409395
1993 .long   11908533,1828744557
1994 .long   1184274,2214626436
1995 .long   8289918,2667618207
1996 .long   12303291,3993038574
1997 .long   2697513,1241533002
1998 .long   986895,3271607235
1999 .long   12105912,771763758
2000 .long   460551,3238052289
2001 .long   263172,16777473
2002 .long   10197915,3858818790
2003 .long   9737364,620766501
2004 .long   2171169,1207978056
2005 .long   6710886,2566953369
2006 .long   15132390,3103832505
2007 .long   13553358,3003167667
2008 .long   15592941,2063629179
2009 .long   15198183,4177590777
2010 .long   3881787,3456159438
2011 .long   16711422,3204497343
2012 .long   8355711,3741376479
2013 .long   12961221,1895854449
2014 .long   10790052,687876393
2015 .long   3618615,3439381965
2016 .long   11645361,1811967084
2017 .long   5000268,318771987
2018 .long   9539985,1677747300
2019 .long   7237230,2600508315
2020 .long   9276813,1660969827
2021 .long   7763574,2634063261
2022 .long   197379,3221274816
2023 .long   2960685,1258310475
2024 .long   14606046,3070277559
2025 .long   9868950,2768283045
2026 .long   2500134,2298513801
2027 .long   8224125,1593859935
2028 .long   13027014,2969612721
2029 .long   6052956,385881879
2030 .long   13882323,4093703412
2031 .long   15921906,3154164924
2032 .long   5197647,3540046803
2033 .long   1644825,1174423110
2034 .long   4144959,3472936911
2035 .long   14474460,922761015
2036 .long   7960953,1577082462
2037 .long   1907997,1191200583
2038 .long   5395026,2483066004
2039 .long   15461355,4194368250
2040 .long   15987699,4227923196
2041 .long   7171437,1526750043
2042 .long   6184542,2533398423
2043 .long   16514043,4261478142
2044 .long   6908265,1509972570
2045 .long   11711154,2885725356
2046 .long   15790320,1006648380
2047 .long   3223857,1275087948
2048 .long   789516,50332419
2049 .long   13948116,889206069
2050 .long   13619151,4076925939
2051 .long   9211020,587211555
2052 .long   14869218,3087055032
2053 .long   7697781,1560304989
2054 .long   11119017,1778412138
2055 .long   4868682,2449511058
2056 .long   5723991,3573601749
2057 .long   8684676,553656609
2058 .long   1118481,1140868164
2059 .long   4539717,1358975313
2060 .long   1776411,3321939654
2061 .long   16119285,2097184125
2062 .long   15000804,956315961
2063 .long   921102,2197848963
2064 .long   7566195,3691044060
2065 .long   11184810,2852170410
2066 .long   15856113,2080406652
2067 .long   14540253,1996519287
2068 .long   5855577,1442862678
2069 .long   1315860,83887365
2070 .long   7105644,452991771
2071 .long   9605778,2751505572
2072 .long   5526612,352326933
2073 .long   13684944,872428596
2074 .long   7895160,503324190
2075 .long   7368816,469769244
2076 .long   14935011,4160813304
2077 .long   4802889,1375752786
2078 .long   8421504,536879136
2079 .long   5263440,335549460
2080 .long   10987431,3909151209
2081 .long   16185078,3170942397
2082 .long   7829367,3707821533
2083 .long   9671571,3825263844
2084 .long   8816262,2701173153
2085 .long   8618883,3758153952
2086 .long   2763306,2315291274
2087 .long   13092807,4043370993
2088 .long   5987163,3590379222
2089 .long   15329769,2046851706
2090 .long   15658734,3137387451
2091 .long   9408399,3808486371
2092 .long   65793,1073758272
2093 .long   4013373,1325420367
2094 .globl  Camellia_cbc_encrypt
2095 .type   Camellia_cbc_encrypt,@function
2096 .align  16
2097 Camellia_cbc_encrypt:
2098 .L_Camellia_cbc_encrypt_begin:
2099         pushl   %ebp
2100         pushl   %ebx
2101         pushl   %esi
2102         pushl   %edi
2103         movl    28(%esp),%ecx
2104         cmpl    $0,%ecx
2105         je      .L016enc_out
2106         pushfl
2107         cld
2108         movl    24(%esp),%eax
2109         movl    28(%esp),%ebx
2110         movl    36(%esp),%edx
2111         movl    40(%esp),%ebp
2112         leal    -64(%esp),%esi
2113         andl    $-64,%esi
2114         leal    -127(%edx),%edi
2115         subl    %esi,%edi
2116         negl    %edi
2117         andl    $960,%edi
2118         subl    %edi,%esi
2119         movl    44(%esp),%edi
2120         xchgl   %esi,%esp
2121         addl    $4,%esp
2122         movl    %esi,20(%esp)
2123         movl    %eax,24(%esp)
2124         movl    %ebx,28(%esp)
2125         movl    %ecx,32(%esp)
2126         movl    %edx,36(%esp)
2127         movl    %ebp,40(%esp)
2128         call    .L017pic_point
2129 .L017pic_point:
2130         popl    %ebp
2131         leal    .LCamellia_SBOX-.L017pic_point(%ebp),%ebp
2132         movl    $32,%esi
2133 .align  4
2134 .L018prefetch_sbox:
2135         movl    (%ebp),%eax
2136         movl    32(%ebp),%ebx
2137         movl    64(%ebp),%ecx
2138         movl    96(%ebp),%edx
2139         leal    128(%ebp),%ebp
2140         decl    %esi
2141         jnz     .L018prefetch_sbox
2142         movl    36(%esp),%eax
2143         subl    $4096,%ebp
2144         movl    24(%esp),%esi
2145         movl    272(%eax),%edx
2146         cmpl    $0,%edi
2147         je      .L019DECRYPT
2148         movl    32(%esp),%ecx
2149         movl    40(%esp),%edi
2150         shll    $6,%edx
2151         leal    (%eax,%edx,1),%edx
2152         movl    %edx,16(%esp)
2153         testl   $4294967280,%ecx
2154         jz      .L020enc_tail
2155         movl    (%edi),%eax
2156         movl    4(%edi),%ebx
2157 .align  4
2158 .L021enc_loop:
2159         movl    8(%edi),%ecx
2160         movl    12(%edi),%edx
2161         xorl    (%esi),%eax
2162         xorl    4(%esi),%ebx
2163         xorl    8(%esi),%ecx
2164         bswap   %eax
2165         xorl    12(%esi),%edx
2166         bswap   %ebx
2167         movl    36(%esp),%edi
2168         bswap   %ecx
2169         bswap   %edx
2170         call    _x86_Camellia_encrypt
2171         movl    24(%esp),%esi
2172         movl    28(%esp),%edi
2173         bswap   %eax
2174         bswap   %ebx
2175         bswap   %ecx
2176         movl    %eax,(%edi)
2177         bswap   %edx
2178         movl    %ebx,4(%edi)
2179         movl    %ecx,8(%edi)
2180         movl    %edx,12(%edi)
2181         movl    32(%esp),%ecx
2182         leal    16(%esi),%esi
2183         movl    %esi,24(%esp)
2184         leal    16(%edi),%edx
2185         movl    %edx,28(%esp)
2186         subl    $16,%ecx
2187         testl   $4294967280,%ecx
2188         movl    %ecx,32(%esp)
2189         jnz     .L021enc_loop
2190         testl   $15,%ecx
2191         jnz     .L020enc_tail
2192         movl    40(%esp),%esi
2193         movl    8(%edi),%ecx
2194         movl    12(%edi),%edx
2195         movl    %eax,(%esi)
2196         movl    %ebx,4(%esi)
2197         movl    %ecx,8(%esi)
2198         movl    %edx,12(%esi)
2199         movl    20(%esp),%esp
2200         popfl
2201 .L016enc_out:
2202         popl    %edi
2203         popl    %esi
2204         popl    %ebx
2205         popl    %ebp
2206         ret
2207         pushfl
2208 .align  4
2209 .L020enc_tail:
2210         movl    %edi,%eax
2211         movl    28(%esp),%edi
2212         pushl   %eax
2213         movl    $16,%ebx
2214         subl    %ecx,%ebx
2215         cmpl    %esi,%edi
2216         je      .L022enc_in_place
2217 .align  4
2218 .long   2767451785
2219         jmp     .L023enc_skip_in_place
2220 .L022enc_in_place:
2221         leal    (%edi,%ecx,1),%edi
2222 .L023enc_skip_in_place:
2223         movl    %ebx,%ecx
2224         xorl    %eax,%eax
2225 .align  4
2226 .long   2868115081
2227         popl    %edi
2228         movl    28(%esp),%esi
2229         movl    (%edi),%eax
2230         movl    4(%edi),%ebx
2231         movl    $16,32(%esp)
2232         jmp     .L021enc_loop
2233 .align  16
2234 .L019DECRYPT:
2235         shll    $6,%edx
2236         leal    (%eax,%edx,1),%edx
2237         movl    %eax,16(%esp)
2238         movl    %edx,36(%esp)
2239         cmpl    28(%esp),%esi
2240         je      .L024dec_in_place
2241         movl    40(%esp),%edi
2242         movl    %edi,44(%esp)
2243 .align  4
2244 .L025dec_loop:
2245         movl    (%esi),%eax
2246         movl    4(%esi),%ebx
2247         movl    8(%esi),%ecx
2248         bswap   %eax
2249         movl    12(%esi),%edx
2250         bswap   %ebx
2251         movl    36(%esp),%edi
2252         bswap   %ecx
2253         bswap   %edx
2254         call    _x86_Camellia_decrypt
2255         movl    44(%esp),%edi
2256         movl    32(%esp),%esi
2257         bswap   %eax
2258         bswap   %ebx
2259         bswap   %ecx
2260         xorl    (%edi),%eax
2261         bswap   %edx
2262         xorl    4(%edi),%ebx
2263         xorl    8(%edi),%ecx
2264         xorl    12(%edi),%edx
2265         subl    $16,%esi
2266         jc      .L026dec_partial
2267         movl    %esi,32(%esp)
2268         movl    24(%esp),%esi
2269         movl    28(%esp),%edi
2270         movl    %eax,(%edi)
2271         movl    %ebx,4(%edi)
2272         movl    %ecx,8(%edi)
2273         movl    %edx,12(%edi)
2274         movl    %esi,44(%esp)
2275         leal    16(%esi),%esi
2276         movl    %esi,24(%esp)
2277         leal    16(%edi),%edi
2278         movl    %edi,28(%esp)
2279         jnz     .L025dec_loop
2280         movl    44(%esp),%edi
2281 .L027dec_end:
2282         movl    40(%esp),%esi
2283         movl    (%edi),%eax
2284         movl    4(%edi),%ebx
2285         movl    8(%edi),%ecx
2286         movl    12(%edi),%edx
2287         movl    %eax,(%esi)
2288         movl    %ebx,4(%esi)
2289         movl    %ecx,8(%esi)
2290         movl    %edx,12(%esi)
2291         jmp     .L028dec_out
2292 .align  4
2293 .L026dec_partial:
2294         leal    44(%esp),%edi
2295         movl    %eax,(%edi)
2296         movl    %ebx,4(%edi)
2297         movl    %ecx,8(%edi)
2298         movl    %edx,12(%edi)
2299         leal    16(%esi),%ecx
2300         movl    %edi,%esi
2301         movl    28(%esp),%edi
2302 .long   2767451785
2303         movl    24(%esp),%edi
2304         jmp     .L027dec_end
2305 .align  4
2306 .L024dec_in_place:
2307 .L029dec_in_place_loop:
2308         leal    44(%esp),%edi
2309         movl    (%esi),%eax
2310         movl    4(%esi),%ebx
2311         movl    8(%esi),%ecx
2312         movl    12(%esi),%edx
2313         movl    %eax,(%edi)
2314         movl    %ebx,4(%edi)
2315         movl    %ecx,8(%edi)
2316         bswap   %eax
2317         movl    %edx,12(%edi)
2318         bswap   %ebx
2319         movl    36(%esp),%edi
2320         bswap   %ecx
2321         bswap   %edx
2322         call    _x86_Camellia_decrypt
2323         movl    40(%esp),%edi
2324         movl    28(%esp),%esi
2325         bswap   %eax
2326         bswap   %ebx
2327         bswap   %ecx
2328         xorl    (%edi),%eax
2329         bswap   %edx
2330         xorl    4(%edi),%ebx
2331         xorl    8(%edi),%ecx
2332         xorl    12(%edi),%edx
2333         movl    %eax,(%esi)
2334         movl    %ebx,4(%esi)
2335         movl    %ecx,8(%esi)
2336         movl    %edx,12(%esi)
2337         leal    16(%esi),%esi
2338         movl    %esi,28(%esp)
2339         leal    44(%esp),%esi
2340         movl    (%esi),%eax
2341         movl    4(%esi),%ebx
2342         movl    8(%esi),%ecx
2343         movl    12(%esi),%edx
2344         movl    %eax,(%edi)
2345         movl    %ebx,4(%edi)
2346         movl    %ecx,8(%edi)
2347         movl    %edx,12(%edi)
2348         movl    24(%esp),%esi
2349         leal    16(%esi),%esi
2350         movl    %esi,24(%esp)
2351         movl    32(%esp),%ecx
2352         subl    $16,%ecx
2353         jc      .L030dec_in_place_partial
2354         movl    %ecx,32(%esp)
2355         jnz     .L029dec_in_place_loop
2356         jmp     .L028dec_out
2357 .align  4
2358 .L030dec_in_place_partial:
2359         movl    28(%esp),%edi
2360         leal    44(%esp),%esi
2361         leal    (%edi,%ecx,1),%edi
2362         leal    16(%esi,%ecx,1),%esi
2363         negl    %ecx
2364 .long   2767451785
2365 .align  4
2366 .L028dec_out:
2367         movl    20(%esp),%esp
2368         popfl
2369         popl    %edi
2370         popl    %esi
2371         popl    %ebx
2372         popl    %ebp
2373         ret
2374 .size   Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
2375 .byte   67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
2376 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2377 .byte   115,108,46,111,114,103,62,0
2378 #else
2379 .text
2380 .globl  Camellia_EncryptBlock_Rounds
2381 .type   Camellia_EncryptBlock_Rounds,@function
2382 .align  16
2383 Camellia_EncryptBlock_Rounds:
2384 .L_Camellia_EncryptBlock_Rounds_begin:
2385         pushl   %ebp
2386         pushl   %ebx
2387         pushl   %esi
2388         pushl   %edi
2389         movl    20(%esp),%eax
2390         movl    24(%esp),%esi
2391         movl    28(%esp),%edi
2392         movl    %esp,%ebx
2393         subl    $28,%esp
2394         andl    $-64,%esp
2395         leal    -127(%edi),%ecx
2396         subl    %esp,%ecx
2397         negl    %ecx
2398         andl    $960,%ecx
2399         subl    %ecx,%esp
2400         addl    $4,%esp
2401         shll    $6,%eax
2402         leal    (%edi,%eax,1),%eax
2403         movl    %ebx,20(%esp)
2404         movl    %eax,16(%esp)
2405         call    .L000pic_point
2406 .L000pic_point:
2407         popl    %ebp
2408         leal    .LCamellia_SBOX-.L000pic_point(%ebp),%ebp
2409         movl    (%esi),%eax
2410         movl    4(%esi),%ebx
2411         movl    8(%esi),%ecx
2412         bswap   %eax
2413         movl    12(%esi),%edx
2414         bswap   %ebx
2415         bswap   %ecx
2416         bswap   %edx
2417         call    _x86_Camellia_encrypt
2418         movl    20(%esp),%esp
2419         bswap   %eax
2420         movl    32(%esp),%esi
2421         bswap   %ebx
2422         bswap   %ecx
2423         bswap   %edx
2424         movl    %eax,(%esi)
2425         movl    %ebx,4(%esi)
2426         movl    %ecx,8(%esi)
2427         movl    %edx,12(%esi)
2428         popl    %edi
2429         popl    %esi
2430         popl    %ebx
2431         popl    %ebp
2432         ret
2433 .size   Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
2434 .globl  Camellia_EncryptBlock
2435 .type   Camellia_EncryptBlock,@function
2436 .align  16
2437 Camellia_EncryptBlock:
2438 .L_Camellia_EncryptBlock_begin:
2439         movl    $128,%eax
2440         subl    4(%esp),%eax
2441         movl    $3,%eax
2442         adcl    $0,%eax
2443         movl    %eax,4(%esp)
2444         jmp     .L_Camellia_EncryptBlock_Rounds_begin
2445 .size   Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
2446 .globl  Camellia_encrypt
2447 .type   Camellia_encrypt,@function
2448 .align  16
2449 Camellia_encrypt:
2450 .L_Camellia_encrypt_begin:
2451         pushl   %ebp
2452         pushl   %ebx
2453         pushl   %esi
2454         pushl   %edi
2455         movl    20(%esp),%esi
2456         movl    28(%esp),%edi
2457         movl    %esp,%ebx
2458         subl    $28,%esp
2459         andl    $-64,%esp
2460         movl    272(%edi),%eax
2461         leal    -127(%edi),%ecx
2462         subl    %esp,%ecx
2463         negl    %ecx
2464         andl    $960,%ecx
2465         subl    %ecx,%esp
2466         addl    $4,%esp
2467         shll    $6,%eax
2468         leal    (%edi,%eax,1),%eax
2469         movl    %ebx,20(%esp)
2470         movl    %eax,16(%esp)
2471         call    .L001pic_point
2472 .L001pic_point:
2473         popl    %ebp
2474         leal    .LCamellia_SBOX-.L001pic_point(%ebp),%ebp
2475         movl    (%esi),%eax
2476         movl    4(%esi),%ebx
2477         movl    8(%esi),%ecx
2478         bswap   %eax
2479         movl    12(%esi),%edx
2480         bswap   %ebx
2481         bswap   %ecx
2482         bswap   %edx
2483         call    _x86_Camellia_encrypt
2484         movl    20(%esp),%esp
2485         bswap   %eax
2486         movl    24(%esp),%esi
2487         bswap   %ebx
2488         bswap   %ecx
2489         bswap   %edx
2490         movl    %eax,(%esi)
2491         movl    %ebx,4(%esi)
2492         movl    %ecx,8(%esi)
2493         movl    %edx,12(%esi)
2494         popl    %edi
2495         popl    %esi
2496         popl    %ebx
2497         popl    %ebp
2498         ret
2499 .size   Camellia_encrypt,.-.L_Camellia_encrypt_begin
2500 .type   _x86_Camellia_encrypt,@function
2501 .align  16
2502 _x86_Camellia_encrypt:
2503         xorl    (%edi),%eax
2504         xorl    4(%edi),%ebx
2505         xorl    8(%edi),%ecx
2506         xorl    12(%edi),%edx
2507         movl    16(%edi),%esi
2508         movl    %eax,4(%esp)
2509         movl    %ebx,8(%esp)
2510         movl    %ecx,12(%esp)
2511         movl    %edx,16(%esp)
2512 .align  16
2513 .L002loop:
2514         xorl    %esi,%eax
2515         xorl    20(%edi),%ebx
2516         movzbl  %ah,%esi
2517         movl    2052(%ebp,%esi,8),%edx
2518         movzbl  %al,%esi
2519         xorl    4(%ebp,%esi,8),%edx
2520         shrl    $16,%eax
2521         movzbl  %bl,%esi
2522         movl    (%ebp,%esi,8),%ecx
2523         movzbl  %ah,%esi
2524         xorl    (%ebp,%esi,8),%edx
2525         movzbl  %bh,%esi
2526         xorl    4(%ebp,%esi,8),%ecx
2527         shrl    $16,%ebx
2528         movzbl  %al,%eax
2529         xorl    2048(%ebp,%eax,8),%edx
2530         movzbl  %bh,%esi
2531         movl    16(%esp),%eax
2532         xorl    %edx,%ecx
2533         rorl    $8,%edx
2534         xorl    2048(%ebp,%esi,8),%ecx
2535         movzbl  %bl,%esi
2536         movl    12(%esp),%ebx
2537         xorl    %eax,%edx
2538         xorl    2052(%ebp,%esi,8),%ecx
2539         movl    24(%edi),%esi
2540         xorl    %ecx,%edx
2541         movl    %edx,16(%esp)
2542         xorl    %ebx,%ecx
2543         movl    %ecx,12(%esp)
2544         xorl    %esi,%ecx
2545         xorl    28(%edi),%edx
2546         movzbl  %ch,%esi
2547         movl    2052(%ebp,%esi,8),%ebx
2548         movzbl  %cl,%esi
2549         xorl    4(%ebp,%esi,8),%ebx
2550         shrl    $16,%ecx
2551         movzbl  %dl,%esi
2552         movl    (%ebp,%esi,8),%eax
2553         movzbl  %ch,%esi
2554         xorl    (%ebp,%esi,8),%ebx
2555         movzbl  %dh,%esi
2556         xorl    4(%ebp,%esi,8),%eax
2557         shrl    $16,%edx
2558         movzbl  %cl,%ecx
2559         xorl    2048(%ebp,%ecx,8),%ebx
2560         movzbl  %dh,%esi
2561         movl    8(%esp),%ecx
2562         xorl    %ebx,%eax
2563         rorl    $8,%ebx
2564         xorl    2048(%ebp,%esi,8),%eax
2565         movzbl  %dl,%esi
2566         movl    4(%esp),%edx
2567         xorl    %ecx,%ebx
2568         xorl    2052(%ebp,%esi,8),%eax
2569         movl    32(%edi),%esi
2570         xorl    %eax,%ebx
2571         movl    %ebx,8(%esp)
2572         xorl    %edx,%eax
2573         movl    %eax,4(%esp)
2574         xorl    %esi,%eax
2575         xorl    36(%edi),%ebx
2576         movzbl  %ah,%esi
2577         movl    2052(%ebp,%esi,8),%edx
2578         movzbl  %al,%esi
2579         xorl    4(%ebp,%esi,8),%edx
2580         shrl    $16,%eax
2581         movzbl  %bl,%esi
2582         movl    (%ebp,%esi,8),%ecx
2583         movzbl  %ah,%esi
2584         xorl    (%ebp,%esi,8),%edx
2585         movzbl  %bh,%esi
2586         xorl    4(%ebp,%esi,8),%ecx
2587         shrl    $16,%ebx
2588         movzbl  %al,%eax
2589         xorl    2048(%ebp,%eax,8),%edx
2590         movzbl  %bh,%esi
2591         movl    16(%esp),%eax
2592         xorl    %edx,%ecx
2593         rorl    $8,%edx
2594         xorl    2048(%ebp,%esi,8),%ecx
2595         movzbl  %bl,%esi
2596         movl    12(%esp),%ebx
2597         xorl    %eax,%edx
2598         xorl    2052(%ebp,%esi,8),%ecx
2599         movl    40(%edi),%esi
2600         xorl    %ecx,%edx
2601         movl    %edx,16(%esp)
2602         xorl    %ebx,%ecx
2603         movl    %ecx,12(%esp)
2604         xorl    %esi,%ecx
2605         xorl    44(%edi),%edx
2606         movzbl  %ch,%esi
2607         movl    2052(%ebp,%esi,8),%ebx
2608         movzbl  %cl,%esi
2609         xorl    4(%ebp,%esi,8),%ebx
2610         shrl    $16,%ecx
2611         movzbl  %dl,%esi
2612         movl    (%ebp,%esi,8),%eax
2613         movzbl  %ch,%esi
2614         xorl    (%ebp,%esi,8),%ebx
2615         movzbl  %dh,%esi
2616         xorl    4(%ebp,%esi,8),%eax
2617         shrl    $16,%edx
2618         movzbl  %cl,%ecx
2619         xorl    2048(%ebp,%ecx,8),%ebx
2620         movzbl  %dh,%esi
2621         movl    8(%esp),%ecx
2622         xorl    %ebx,%eax
2623         rorl    $8,%ebx
2624         xorl    2048(%ebp,%esi,8),%eax
2625         movzbl  %dl,%esi
2626         movl    4(%esp),%edx
2627         xorl    %ecx,%ebx
2628         xorl    2052(%ebp,%esi,8),%eax
2629         movl    48(%edi),%esi
2630         xorl    %eax,%ebx
2631         movl    %ebx,8(%esp)
2632         xorl    %edx,%eax
2633         movl    %eax,4(%esp)
2634         xorl    %esi,%eax
2635         xorl    52(%edi),%ebx
2636         movzbl  %ah,%esi
2637         movl    2052(%ebp,%esi,8),%edx
2638         movzbl  %al,%esi
2639         xorl    4(%ebp,%esi,8),%edx
2640         shrl    $16,%eax
2641         movzbl  %bl,%esi
2642         movl    (%ebp,%esi,8),%ecx
2643         movzbl  %ah,%esi
2644         xorl    (%ebp,%esi,8),%edx
2645         movzbl  %bh,%esi
2646         xorl    4(%ebp,%esi,8),%ecx
2647         shrl    $16,%ebx
2648         movzbl  %al,%eax
2649         xorl    2048(%ebp,%eax,8),%edx
2650         movzbl  %bh,%esi
2651         movl    16(%esp),%eax
2652         xorl    %edx,%ecx
2653         rorl    $8,%edx
2654         xorl    2048(%ebp,%esi,8),%ecx
2655         movzbl  %bl,%esi
2656         movl    12(%esp),%ebx
2657         xorl    %eax,%edx
2658         xorl    2052(%ebp,%esi,8),%ecx
2659         movl    56(%edi),%esi
2660         xorl    %ecx,%edx
2661         movl    %edx,16(%esp)
2662         xorl    %ebx,%ecx
2663         movl    %ecx,12(%esp)
2664         xorl    %esi,%ecx
2665         xorl    60(%edi),%edx
2666         movzbl  %ch,%esi
2667         movl    2052(%ebp,%esi,8),%ebx
2668         movzbl  %cl,%esi
2669         xorl    4(%ebp,%esi,8),%ebx
2670         shrl    $16,%ecx
2671         movzbl  %dl,%esi
2672         movl    (%ebp,%esi,8),%eax
2673         movzbl  %ch,%esi
2674         xorl    (%ebp,%esi,8),%ebx
2675         movzbl  %dh,%esi
2676         xorl    4(%ebp,%esi,8),%eax
2677         shrl    $16,%edx
2678         movzbl  %cl,%ecx
2679         xorl    2048(%ebp,%ecx,8),%ebx
2680         movzbl  %dh,%esi
2681         movl    8(%esp),%ecx
2682         xorl    %ebx,%eax
2683         rorl    $8,%ebx
2684         xorl    2048(%ebp,%esi,8),%eax
2685         movzbl  %dl,%esi
2686         movl    4(%esp),%edx
2687         xorl    %ecx,%ebx
2688         xorl    2052(%ebp,%esi,8),%eax
2689         movl    64(%edi),%esi
2690         xorl    %eax,%ebx
2691         movl    %ebx,8(%esp)
2692         xorl    %edx,%eax
2693         movl    %eax,4(%esp)
2694         addl    $64,%edi
2695         cmpl    20(%esp),%edi
2696         je      .L003done
2697         andl    %eax,%esi
2698         movl    16(%esp),%edx
2699         roll    $1,%esi
2700         movl    %edx,%ecx
2701         xorl    %esi,%ebx
2702         orl     12(%edi),%ecx
2703         movl    %ebx,8(%esp)
2704         xorl    12(%esp),%ecx
2705         movl    4(%edi),%esi
2706         movl    %ecx,12(%esp)
2707         orl     %ebx,%esi
2708         andl    8(%edi),%ecx
2709         xorl    %esi,%eax
2710         roll    $1,%ecx
2711         movl    %eax,4(%esp)
2712         xorl    %ecx,%edx
2713         movl    16(%edi),%esi
2714         movl    %edx,16(%esp)
2715         jmp     .L002loop
2716 .align  8
2717 .L003done:
2718         movl    %eax,%ecx
2719         movl    %ebx,%edx
2720         movl    12(%esp),%eax
2721         movl    16(%esp),%ebx
2722         xorl    %esi,%eax
2723         xorl    4(%edi),%ebx
2724         xorl    8(%edi),%ecx
2725         xorl    12(%edi),%edx
2726         ret
2727 .size   _x86_Camellia_encrypt,.-_x86_Camellia_encrypt
2728 .globl  Camellia_DecryptBlock_Rounds
2729 .type   Camellia_DecryptBlock_Rounds,@function
2730 .align  16
2731 Camellia_DecryptBlock_Rounds:
2732 .L_Camellia_DecryptBlock_Rounds_begin:
2733         pushl   %ebp
2734         pushl   %ebx
2735         pushl   %esi
2736         pushl   %edi
2737         movl    20(%esp),%eax
2738         movl    24(%esp),%esi
2739         movl    28(%esp),%edi
2740         movl    %esp,%ebx
2741         subl    $28,%esp
2742         andl    $-64,%esp
2743         leal    -127(%edi),%ecx
2744         subl    %esp,%ecx
2745         negl    %ecx
2746         andl    $960,%ecx
2747         subl    %ecx,%esp
2748         addl    $4,%esp
2749         shll    $6,%eax
2750         movl    %edi,16(%esp)
2751         leal    (%edi,%eax,1),%edi
2752         movl    %ebx,20(%esp)
2753         call    .L004pic_point
2754 .L004pic_point:
2755         popl    %ebp
2756         leal    .LCamellia_SBOX-.L004pic_point(%ebp),%ebp
2757         movl    (%esi),%eax
2758         movl    4(%esi),%ebx
2759         movl    8(%esi),%ecx
2760         bswap   %eax
2761         movl    12(%esi),%edx
2762         bswap   %ebx
2763         bswap   %ecx
2764         bswap   %edx
2765         call    _x86_Camellia_decrypt
2766         movl    20(%esp),%esp
2767         bswap   %eax
2768         movl    32(%esp),%esi
2769         bswap   %ebx
2770         bswap   %ecx
2771         bswap   %edx
2772         movl    %eax,(%esi)
2773         movl    %ebx,4(%esi)
2774         movl    %ecx,8(%esi)
2775         movl    %edx,12(%esi)
2776         popl    %edi
2777         popl    %esi
2778         popl    %ebx
2779         popl    %ebp
2780         ret
2781 .size   Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
2782 .globl  Camellia_DecryptBlock
2783 .type   Camellia_DecryptBlock,@function
2784 .align  16
2785 Camellia_DecryptBlock:
2786 .L_Camellia_DecryptBlock_begin:
2787         movl    $128,%eax
2788         subl    4(%esp),%eax
2789         movl    $3,%eax
2790         adcl    $0,%eax
2791         movl    %eax,4(%esp)
2792         jmp     .L_Camellia_DecryptBlock_Rounds_begin
2793 .size   Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
2794 .globl  Camellia_decrypt
2795 .type   Camellia_decrypt,@function
2796 .align  16
2797 Camellia_decrypt:
2798 .L_Camellia_decrypt_begin:
2799         pushl   %ebp
2800         pushl   %ebx
2801         pushl   %esi
2802         pushl   %edi
2803         movl    20(%esp),%esi
2804         movl    28(%esp),%edi
2805         movl    %esp,%ebx
2806         subl    $28,%esp
2807         andl    $-64,%esp
2808         movl    272(%edi),%eax
2809         leal    -127(%edi),%ecx
2810         subl    %esp,%ecx
2811         negl    %ecx
2812         andl    $960,%ecx
2813         subl    %ecx,%esp
2814         addl    $4,%esp
2815         shll    $6,%eax
2816         movl    %edi,16(%esp)
2817         leal    (%edi,%eax,1),%edi
2818         movl    %ebx,20(%esp)
2819         call    .L005pic_point
2820 .L005pic_point:
2821         popl    %ebp
2822         leal    .LCamellia_SBOX-.L005pic_point(%ebp),%ebp
2823         movl    (%esi),%eax
2824         movl    4(%esi),%ebx
2825         movl    8(%esi),%ecx
2826         bswap   %eax
2827         movl    12(%esi),%edx
2828         bswap   %ebx
2829         bswap   %ecx
2830         bswap   %edx
2831         call    _x86_Camellia_decrypt
2832         movl    20(%esp),%esp
2833         bswap   %eax
2834         movl    24(%esp),%esi
2835         bswap   %ebx
2836         bswap   %ecx
2837         bswap   %edx
2838         movl    %eax,(%esi)
2839         movl    %ebx,4(%esi)
2840         movl    %ecx,8(%esi)
2841         movl    %edx,12(%esi)
2842         popl    %edi
2843         popl    %esi
2844         popl    %ebx
2845         popl    %ebp
2846         ret
2847 .size   Camellia_decrypt,.-.L_Camellia_decrypt_begin
2848 .type   _x86_Camellia_decrypt,@function
2849 .align  16
2850 _x86_Camellia_decrypt:
2851         xorl    (%edi),%eax
2852         xorl    4(%edi),%ebx
2853         xorl    8(%edi),%ecx
2854         xorl    12(%edi),%edx
2855         movl    -8(%edi),%esi
2856         movl    %eax,4(%esp)
2857         movl    %ebx,8(%esp)
2858         movl    %ecx,12(%esp)
2859         movl    %edx,16(%esp)
2860 .align  16
2861 .L006loop:
2862         xorl    %esi,%eax
2863         xorl    -4(%edi),%ebx
2864         movzbl  %ah,%esi
2865         movl    2052(%ebp,%esi,8),%edx
2866         movzbl  %al,%esi
2867         xorl    4(%ebp,%esi,8),%edx
2868         shrl    $16,%eax
2869         movzbl  %bl,%esi
2870         movl    (%ebp,%esi,8),%ecx
2871         movzbl  %ah,%esi
2872         xorl    (%ebp,%esi,8),%edx
2873         movzbl  %bh,%esi
2874         xorl    4(%ebp,%esi,8),%ecx
2875         shrl    $16,%ebx
2876         movzbl  %al,%eax
2877         xorl    2048(%ebp,%eax,8),%edx
2878         movzbl  %bh,%esi
2879         movl    16(%esp),%eax
2880         xorl    %edx,%ecx
2881         rorl    $8,%edx
2882         xorl    2048(%ebp,%esi,8),%ecx
2883         movzbl  %bl,%esi
2884         movl    12(%esp),%ebx
2885         xorl    %eax,%edx
2886         xorl    2052(%ebp,%esi,8),%ecx
2887         movl    -16(%edi),%esi
2888         xorl    %ecx,%edx
2889         movl    %edx,16(%esp)
2890         xorl    %ebx,%ecx
2891         movl    %ecx,12(%esp)
2892         xorl    %esi,%ecx
2893         xorl    -12(%edi),%edx
2894         movzbl  %ch,%esi
2895         movl    2052(%ebp,%esi,8),%ebx
2896         movzbl  %cl,%esi
2897         xorl    4(%ebp,%esi,8),%ebx
2898         shrl    $16,%ecx
2899         movzbl  %dl,%esi
2900         movl    (%ebp,%esi,8),%eax
2901         movzbl  %ch,%esi
2902         xorl    (%ebp,%esi,8),%ebx
2903         movzbl  %dh,%esi
2904         xorl    4(%ebp,%esi,8),%eax
2905         shrl    $16,%edx
2906         movzbl  %cl,%ecx
2907         xorl    2048(%ebp,%ecx,8),%ebx
2908         movzbl  %dh,%esi
2909         movl    8(%esp),%ecx
2910         xorl    %ebx,%eax
2911         rorl    $8,%ebx
2912         xorl    2048(%ebp,%esi,8),%eax
2913         movzbl  %dl,%esi
2914         movl    4(%esp),%edx
2915         xorl    %ecx,%ebx
2916         xorl    2052(%ebp,%esi,8),%eax
2917         movl    -24(%edi),%esi
2918         xorl    %eax,%ebx
2919         movl    %ebx,8(%esp)
2920         xorl    %edx,%eax
2921         movl    %eax,4(%esp)
2922         xorl    %esi,%eax
2923         xorl    -20(%edi),%ebx
2924         movzbl  %ah,%esi
2925         movl    2052(%ebp,%esi,8),%edx
2926         movzbl  %al,%esi
2927         xorl    4(%ebp,%esi,8),%edx
2928         shrl    $16,%eax
2929         movzbl  %bl,%esi
2930         movl    (%ebp,%esi,8),%ecx
2931         movzbl  %ah,%esi
2932         xorl    (%ebp,%esi,8),%edx
2933         movzbl  %bh,%esi
2934         xorl    4(%ebp,%esi,8),%ecx
2935         shrl    $16,%ebx
2936         movzbl  %al,%eax
2937         xorl    2048(%ebp,%eax,8),%edx
2938         movzbl  %bh,%esi
2939         movl    16(%esp),%eax
2940         xorl    %edx,%ecx
2941         rorl    $8,%edx
2942         xorl    2048(%ebp,%esi,8),%ecx
2943         movzbl  %bl,%esi
2944         movl    12(%esp),%ebx
2945         xorl    %eax,%edx
2946         xorl    2052(%ebp,%esi,8),%ecx
2947         movl    -32(%edi),%esi
2948         xorl    %ecx,%edx
2949         movl    %edx,16(%esp)
2950         xorl    %ebx,%ecx
2951         movl    %ecx,12(%esp)
2952         xorl    %esi,%ecx
2953         xorl    -28(%edi),%edx
2954         movzbl  %ch,%esi
2955         movl    2052(%ebp,%esi,8),%ebx
2956         movzbl  %cl,%esi
2957         xorl    4(%ebp,%esi,8),%ebx
2958         shrl    $16,%ecx
2959         movzbl  %dl,%esi
2960         movl    (%ebp,%esi,8),%eax
2961         movzbl  %ch,%esi
2962         xorl    (%ebp,%esi,8),%ebx
2963         movzbl  %dh,%esi
2964         xorl    4(%ebp,%esi,8),%eax
2965         shrl    $16,%edx
2966         movzbl  %cl,%ecx
2967         xorl    2048(%ebp,%ecx,8),%ebx
2968         movzbl  %dh,%esi
2969         movl    8(%esp),%ecx
2970         xorl    %ebx,%eax
2971         rorl    $8,%ebx
2972         xorl    2048(%ebp,%esi,8),%eax
2973         movzbl  %dl,%esi
2974         movl    4(%esp),%edx
2975         xorl    %ecx,%ebx
2976         xorl    2052(%ebp,%esi,8),%eax
2977         movl    -40(%edi),%esi
2978         xorl    %eax,%ebx
2979         movl    %ebx,8(%esp)
2980         xorl    %edx,%eax
2981         movl    %eax,4(%esp)
2982         xorl    %esi,%eax
2983         xorl    -36(%edi),%ebx
2984         movzbl  %ah,%esi
2985         movl    2052(%ebp,%esi,8),%edx
2986         movzbl  %al,%esi
2987         xorl    4(%ebp,%esi,8),%edx
2988         shrl    $16,%eax
2989         movzbl  %bl,%esi
2990         movl    (%ebp,%esi,8),%ecx
2991         movzbl  %ah,%esi
2992         xorl    (%ebp,%esi,8),%edx
2993         movzbl  %bh,%esi
2994         xorl    4(%ebp,%esi,8),%ecx
2995         shrl    $16,%ebx
2996         movzbl  %al,%eax
2997         xorl    2048(%ebp,%eax,8),%edx
2998         movzbl  %bh,%esi
2999         movl    16(%esp),%eax
3000         xorl    %edx,%ecx
3001         rorl    $8,%edx
3002         xorl    2048(%ebp,%esi,8),%ecx
3003         movzbl  %bl,%esi
3004         movl    12(%esp),%ebx
3005         xorl    %eax,%edx
3006         xorl    2052(%ebp,%esi,8),%ecx
3007         movl    -48(%edi),%esi
3008         xorl    %ecx,%edx
3009         movl    %edx,16(%esp)
3010         xorl    %ebx,%ecx
3011         movl    %ecx,12(%esp)
3012         xorl    %esi,%ecx
3013         xorl    -44(%edi),%edx
3014         movzbl  %ch,%esi
3015         movl    2052(%ebp,%esi,8),%ebx
3016         movzbl  %cl,%esi
3017         xorl    4(%ebp,%esi,8),%ebx
3018         shrl    $16,%ecx
3019         movzbl  %dl,%esi
3020         movl    (%ebp,%esi,8),%eax
3021         movzbl  %ch,%esi
3022         xorl    (%ebp,%esi,8),%ebx
3023         movzbl  %dh,%esi
3024         xorl    4(%ebp,%esi,8),%eax
3025         shrl    $16,%edx
3026         movzbl  %cl,%ecx
3027         xorl    2048(%ebp,%ecx,8),%ebx
3028         movzbl  %dh,%esi
3029         movl    8(%esp),%ecx
3030         xorl    %ebx,%eax
3031         rorl    $8,%ebx
3032         xorl    2048(%ebp,%esi,8),%eax
3033         movzbl  %dl,%esi
3034         movl    4(%esp),%edx
3035         xorl    %ecx,%ebx
3036         xorl    2052(%ebp,%esi,8),%eax
3037         movl    -56(%edi),%esi
3038         xorl    %eax,%ebx
3039         movl    %ebx,8(%esp)
3040         xorl    %edx,%eax
3041         movl    %eax,4(%esp)
3042         subl    $64,%edi
3043         cmpl    20(%esp),%edi
3044         je      .L007done
3045         andl    %eax,%esi
3046         movl    16(%esp),%edx
3047         roll    $1,%esi
3048         movl    %edx,%ecx
3049         xorl    %esi,%ebx
3050         orl     4(%edi),%ecx
3051         movl    %ebx,8(%esp)
3052         xorl    12(%esp),%ecx
3053         movl    12(%edi),%esi
3054         movl    %ecx,12(%esp)
3055         orl     %ebx,%esi
3056         andl    (%edi),%ecx
3057         xorl    %esi,%eax
3058         roll    $1,%ecx
3059         movl    %eax,4(%esp)
3060         xorl    %ecx,%edx
3061         movl    -8(%edi),%esi
3062         movl    %edx,16(%esp)
3063         jmp     .L006loop
3064 .align  8
3065 .L007done:
3066         movl    %eax,%ecx
3067         movl    %ebx,%edx
3068         movl    12(%esp),%eax
3069         movl    16(%esp),%ebx
3070         xorl    %esi,%ecx
3071         xorl    12(%edi),%edx
3072         xorl    (%edi),%eax
3073         xorl    4(%edi),%ebx
3074         ret
3075 .size   _x86_Camellia_decrypt,.-_x86_Camellia_decrypt
3076 .globl  Camellia_Ekeygen
3077 .type   Camellia_Ekeygen,@function
3078 .align  16
3079 Camellia_Ekeygen:
3080 .L_Camellia_Ekeygen_begin:
3081         pushl   %ebp
3082         pushl   %ebx
3083         pushl   %esi
3084         pushl   %edi
3085         subl    $16,%esp
3086         movl    36(%esp),%ebp
3087         movl    40(%esp),%esi
3088         movl    44(%esp),%edi
3089         movl    (%esi),%eax
3090         movl    4(%esi),%ebx
3091         movl    8(%esi),%ecx
3092         movl    12(%esi),%edx
3093         bswap   %eax
3094         bswap   %ebx
3095         bswap   %ecx
3096         bswap   %edx
3097         movl    %eax,(%edi)
3098         movl    %ebx,4(%edi)
3099         movl    %ecx,8(%edi)
3100         movl    %edx,12(%edi)
3101         cmpl    $128,%ebp
3102         je      .L0081st128
3103         movl    16(%esi),%eax
3104         movl    20(%esi),%ebx
3105         cmpl    $192,%ebp
3106         je      .L0091st192
3107         movl    24(%esi),%ecx
3108         movl    28(%esi),%edx
3109         jmp     .L0101st256
3110 .align  4
3111 .L0091st192:
3112         movl    %eax,%ecx
3113         movl    %ebx,%edx
3114         notl    %ecx
3115         notl    %edx
3116 .align  4
3117 .L0101st256:
3118         bswap   %eax
3119         bswap   %ebx
3120         bswap   %ecx
3121         bswap   %edx
3122         movl    %eax,32(%edi)
3123         movl    %ebx,36(%edi)
3124         movl    %ecx,40(%edi)
3125         movl    %edx,44(%edi)
3126         xorl    (%edi),%eax
3127         xorl    4(%edi),%ebx
3128         xorl    8(%edi),%ecx
3129         xorl    12(%edi),%edx
3130 .align  4
3131 .L0081st128:
3132         call    .L011pic_point
3133 .L011pic_point:
3134         popl    %ebp
3135         leal    .LCamellia_SBOX-.L011pic_point(%ebp),%ebp
3136         leal    .LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
3137         movl    (%edi),%esi
3138         movl    %eax,(%esp)
3139         movl    %ebx,4(%esp)
3140         movl    %ecx,8(%esp)
3141         movl    %edx,12(%esp)
3142         xorl    %esi,%eax
3143         xorl    4(%edi),%ebx
3144         movzbl  %ah,%esi
3145         movl    2052(%ebp,%esi,8),%edx
3146         movzbl  %al,%esi
3147         xorl    4(%ebp,%esi,8),%edx
3148         shrl    $16,%eax
3149         movzbl  %bl,%esi
3150         movl    (%ebp,%esi,8),%ecx
3151         movzbl  %ah,%esi
3152         xorl    (%ebp,%esi,8),%edx
3153         movzbl  %bh,%esi
3154         xorl    4(%ebp,%esi,8),%ecx
3155         shrl    $16,%ebx
3156         movzbl  %al,%eax
3157         xorl    2048(%ebp,%eax,8),%edx
3158         movzbl  %bh,%esi
3159         movl    12(%esp),%eax
3160         xorl    %edx,%ecx
3161         rorl    $8,%edx
3162         xorl    2048(%ebp,%esi,8),%ecx
3163         movzbl  %bl,%esi
3164         movl    8(%esp),%ebx
3165         xorl    %eax,%edx
3166         xorl    2052(%ebp,%esi,8),%ecx
3167         movl    8(%edi),%esi
3168         xorl    %ecx,%edx
3169         movl    %edx,12(%esp)
3170         xorl    %ebx,%ecx
3171         movl    %ecx,8(%esp)
3172         xorl    %esi,%ecx
3173         xorl    12(%edi),%edx
3174         movzbl  %ch,%esi
3175         movl    2052(%ebp,%esi,8),%ebx
3176         movzbl  %cl,%esi
3177         xorl    4(%ebp,%esi,8),%ebx
3178         shrl    $16,%ecx
3179         movzbl  %dl,%esi
3180         movl    (%ebp,%esi,8),%eax
3181         movzbl  %ch,%esi
3182         xorl    (%ebp,%esi,8),%ebx
3183         movzbl  %dh,%esi
3184         xorl    4(%ebp,%esi,8),%eax
3185         shrl    $16,%edx
3186         movzbl  %cl,%ecx
3187         xorl    2048(%ebp,%ecx,8),%ebx
3188         movzbl  %dh,%esi
3189         movl    4(%esp),%ecx
3190         xorl    %ebx,%eax
3191         rorl    $8,%ebx
3192         xorl    2048(%ebp,%esi,8),%eax
3193         movzbl  %dl,%esi
3194         movl    (%esp),%edx
3195         xorl    %ecx,%ebx
3196         xorl    2052(%ebp,%esi,8),%eax
3197         movl    16(%edi),%esi
3198         xorl    %eax,%ebx
3199         movl    %ebx,4(%esp)
3200         xorl    %edx,%eax
3201         movl    %eax,(%esp)
3202         movl    8(%esp),%ecx
3203         movl    12(%esp),%edx
3204         movl    44(%esp),%esi
3205         xorl    (%esi),%eax
3206         xorl    4(%esi),%ebx
3207         xorl    8(%esi),%ecx
3208         xorl    12(%esi),%edx
3209         movl    16(%edi),%esi
3210         movl    %eax,(%esp)
3211         movl    %ebx,4(%esp)
3212         movl    %ecx,8(%esp)
3213         movl    %edx,12(%esp)
3214         xorl    %esi,%eax
3215         xorl    20(%edi),%ebx
3216         movzbl  %ah,%esi
3217         movl    2052(%ebp,%esi,8),%edx
3218         movzbl  %al,%esi
3219         xorl    4(%ebp,%esi,8),%edx
3220         shrl    $16,%eax
3221         movzbl  %bl,%esi
3222         movl    (%ebp,%esi,8),%ecx
3223         movzbl  %ah,%esi
3224         xorl    (%ebp,%esi,8),%edx
3225         movzbl  %bh,%esi
3226         xorl    4(%ebp,%esi,8),%ecx
3227         shrl    $16,%ebx
3228         movzbl  %al,%eax
3229         xorl    2048(%ebp,%eax,8),%edx
3230         movzbl  %bh,%esi
3231         movl    12(%esp),%eax
3232         xorl    %edx,%ecx
3233         rorl    $8,%edx
3234         xorl    2048(%ebp,%esi,8),%ecx
3235         movzbl  %bl,%esi
3236         movl    8(%esp),%ebx
3237         xorl    %eax,%edx
3238         xorl    2052(%ebp,%esi,8),%ecx
3239         movl    24(%edi),%esi
3240         xorl    %ecx,%edx
3241         movl    %edx,12(%esp)
3242         xorl    %ebx,%ecx
3243         movl    %ecx,8(%esp)
3244         xorl    %esi,%ecx
3245         xorl    28(%edi),%edx
3246         movzbl  %ch,%esi
3247         movl    2052(%ebp,%esi,8),%ebx
3248         movzbl  %cl,%esi
3249         xorl    4(%ebp,%esi,8),%ebx
3250         shrl    $16,%ecx
3251         movzbl  %dl,%esi
3252         movl    (%ebp,%esi,8),%eax
3253         movzbl  %ch,%esi
3254         xorl    (%ebp,%esi,8),%ebx
3255         movzbl  %dh,%esi
3256         xorl    4(%ebp,%esi,8),%eax
3257         shrl    $16,%edx
3258         movzbl  %cl,%ecx
3259         xorl    2048(%ebp,%ecx,8),%ebx
3260         movzbl  %dh,%esi
3261         movl    4(%esp),%ecx
3262         xorl    %ebx,%eax
3263         rorl    $8,%ebx
3264         xorl    2048(%ebp,%esi,8),%eax
3265         movzbl  %dl,%esi
3266         movl    (%esp),%edx
3267         xorl    %ecx,%ebx
3268         xorl    2052(%ebp,%esi,8),%eax
3269         movl    32(%edi),%esi
3270         xorl    %eax,%ebx
3271         movl    %ebx,4(%esp)
3272         xorl    %edx,%eax
3273         movl    %eax,(%esp)
3274         movl    8(%esp),%ecx
3275         movl    12(%esp),%edx
3276         movl    36(%esp),%esi
3277         cmpl    $128,%esi
3278         jne     .L0122nd256
3279         movl    44(%esp),%edi
3280         leal    128(%edi),%edi
3281         movl    %eax,-112(%edi)
3282         movl    %ebx,-108(%edi)
3283         movl    %ecx,-104(%edi)
3284         movl    %edx,-100(%edi)
3285         movl    %eax,%ebp
3286         shll    $15,%eax
3287         movl    %ebx,%esi
3288         shrl    $17,%esi
3289         shll    $15,%ebx
3290         orl     %esi,%eax
3291         movl    %ecx,%esi
3292         shll    $15,%ecx
3293         movl    %eax,-80(%edi)
3294         shrl    $17,%esi
3295         orl     %esi,%ebx
3296         shrl    $17,%ebp
3297         movl    %edx,%esi
3298         shrl    $17,%esi
3299         movl    %ebx,-76(%edi)
3300         shll    $15,%edx
3301         orl     %esi,%ecx
3302         orl     %ebp,%edx
3303         movl    %ecx,-72(%edi)
3304         movl    %edx,-68(%edi)
3305         movl    %eax,%ebp
3306         shll    $15,%eax
3307         movl    %ebx,%esi
3308         shrl    $17,%esi
3309         shll    $15,%ebx
3310         orl     %esi,%eax
3311         movl    %ecx,%esi
3312         shll    $15,%ecx
3313         movl    %eax,-64(%edi)
3314         shrl    $17,%esi
3315         orl     %esi,%ebx
3316         shrl    $17,%ebp
3317         movl    %edx,%esi
3318         shrl    $17,%esi
3319         movl    %ebx,-60(%edi)
3320         shll    $15,%edx
3321         orl     %esi,%ecx
3322         orl     %ebp,%edx
3323         movl    %ecx,-56(%edi)
3324         movl    %edx,-52(%edi)
3325         movl    %eax,%ebp
3326         shll    $15,%eax
3327         movl    %ebx,%esi
3328         shrl    $17,%esi
3329         shll    $15,%ebx
3330         orl     %esi,%eax
3331         movl    %ecx,%esi
3332         shll    $15,%ecx
3333         movl    %eax,-32(%edi)
3334         shrl    $17,%esi
3335         orl     %esi,%ebx
3336         shrl    $17,%ebp
3337         movl    %edx,%esi
3338         shrl    $17,%esi
3339         movl    %ebx,-28(%edi)
3340         shll    $15,%edx
3341         orl     %esi,%ecx
3342         orl     %ebp,%edx
3343         movl    %eax,%ebp
3344         shll    $15,%eax
3345         movl    %ebx,%esi
3346         shrl    $17,%esi
3347         shll    $15,%ebx
3348         orl     %esi,%eax
3349         movl    %ecx,%esi
3350         shll    $15,%ecx
3351         movl    %eax,-16(%edi)
3352         shrl    $17,%esi
3353         orl     %esi,%ebx
3354         shrl    $17,%ebp
3355         movl    %edx,%esi
3356         shrl    $17,%esi
3357         movl    %ebx,-12(%edi)
3358         shll    $15,%edx
3359         orl     %esi,%ecx
3360         orl     %ebp,%edx
3361         movl    %ecx,-8(%edi)
3362         movl    %edx,-4(%edi)
3363         movl    %ebx,%ebp
3364         shll    $2,%ebx
3365         movl    %ecx,%esi
3366         shrl    $30,%esi
3367         shll    $2,%ecx
3368         orl     %esi,%ebx
3369         movl    %edx,%esi
3370         shll    $2,%edx
3371         movl    %ebx,32(%edi)
3372         shrl    $30,%esi
3373         orl     %esi,%ecx
3374         shrl    $30,%ebp
3375         movl    %eax,%esi
3376         shrl    $30,%esi
3377         movl    %ecx,36(%edi)
3378         shll    $2,%eax
3379         orl     %esi,%edx
3380         orl     %ebp,%eax
3381         movl    %edx,40(%edi)
3382         movl    %eax,44(%edi)
3383         movl    %ebx,%ebp
3384         shll    $17,%ebx
3385         movl    %ecx,%esi
3386         shrl    $15,%esi
3387         shll    $17,%ecx
3388         orl     %esi,%ebx
3389         movl    %edx,%esi
3390         shll    $17,%edx
3391         movl    %ebx,64(%edi)
3392         shrl    $15,%esi
3393         orl     %esi,%ecx
3394         shrl    $15,%ebp
3395         movl    %eax,%esi
3396         shrl    $15,%esi
3397         movl    %ecx,68(%edi)
3398         shll    $17,%eax
3399         orl     %esi,%edx
3400         orl     %ebp,%eax
3401         movl    %edx,72(%edi)
3402         movl    %eax,76(%edi)
3403         movl    -128(%edi),%ebx
3404         movl    -124(%edi),%ecx
3405         movl    -120(%edi),%edx
3406         movl    -116(%edi),%eax
3407         movl    %ebx,%ebp
3408         shll    $15,%ebx
3409         movl    %ecx,%esi
3410         shrl    $17,%esi
3411         shll    $15,%ecx
3412         orl     %esi,%ebx
3413         movl    %edx,%esi
3414         shll    $15,%edx
3415         movl    %ebx,-96(%edi)
3416         shrl    $17,%esi
3417         orl     %esi,%ecx
3418         shrl    $17,%ebp
3419         movl    %eax,%esi
3420         shrl    $17,%esi
3421         movl    %ecx,-92(%edi)
3422         shll    $15,%eax
3423         orl     %esi,%edx
3424         orl     %ebp,%eax
3425         movl    %edx,-88(%edi)
3426         movl    %eax,-84(%edi)
3427         movl    %ebx,%ebp
3428         shll    $30,%ebx
3429         movl    %ecx,%esi
3430         shrl    $2,%esi
3431         shll    $30,%ecx
3432         orl     %esi,%ebx
3433         movl    %edx,%esi
3434         shll    $30,%edx
3435         movl    %ebx,-48(%edi)
3436         shrl    $2,%esi
3437         orl     %esi,%ecx
3438         shrl    $2,%ebp
3439         movl    %eax,%esi
3440         shrl    $2,%esi
3441         movl    %ecx,-44(%edi)
3442         shll    $30,%eax
3443         orl     %esi,%edx
3444         orl     %ebp,%eax
3445         movl    %edx,-40(%edi)
3446         movl    %eax,-36(%edi)
3447         movl    %ebx,%ebp
3448         shll    $15,%ebx
3449         movl    %ecx,%esi
3450         shrl    $17,%esi
3451         shll    $15,%ecx
3452         orl     %esi,%ebx
3453         movl    %edx,%esi
3454         shll    $15,%edx
3455         shrl    $17,%esi
3456         orl     %esi,%ecx
3457         shrl    $17,%ebp
3458         movl    %eax,%esi
3459         shrl    $17,%esi
3460         shll    $15,%eax
3461         orl     %esi,%edx
3462         orl     %ebp,%eax
3463         movl    %edx,-24(%edi)
3464         movl    %eax,-20(%edi)
3465         movl    %ebx,%ebp
3466         shll    $17,%ebx
3467         movl    %ecx,%esi
3468         shrl    $15,%esi
3469         shll    $17,%ecx
3470         orl     %esi,%ebx
3471         movl    %edx,%esi
3472         shll    $17,%edx
3473         movl    %ebx,(%edi)
3474         shrl    $15,%esi
3475         orl     %esi,%ecx
3476         shrl    $15,%ebp
3477         movl    %eax,%esi
3478         shrl    $15,%esi
3479         movl    %ecx,4(%edi)
3480         shll    $17,%eax
3481         orl     %esi,%edx
3482         orl     %ebp,%eax
3483         movl    %edx,8(%edi)
3484         movl    %eax,12(%edi)
3485         movl    %ebx,%ebp
3486         shll    $17,%ebx
3487         movl    %ecx,%esi
3488         shrl    $15,%esi
3489         shll    $17,%ecx
3490         orl     %esi,%ebx
3491         movl    %edx,%esi
3492         shll    $17,%edx
3493         movl    %ebx,16(%edi)
3494         shrl    $15,%esi
3495         orl     %esi,%ecx
3496         shrl    $15,%ebp
3497         movl    %eax,%esi
3498         shrl    $15,%esi
3499         movl    %ecx,20(%edi)
3500         shll    $17,%eax
3501         orl     %esi,%edx
3502         orl     %ebp,%eax
3503         movl    %edx,24(%edi)
3504         movl    %eax,28(%edi)
3505         movl    %ebx,%ebp
3506         shll    $17,%ebx
3507         movl    %ecx,%esi
3508         shrl    $15,%esi
3509         shll    $17,%ecx
3510         orl     %esi,%ebx
3511         movl    %edx,%esi
3512         shll    $17,%edx
3513         movl    %ebx,48(%edi)
3514         shrl    $15,%esi
3515         orl     %esi,%ecx
3516         shrl    $15,%ebp
3517         movl    %eax,%esi
3518         shrl    $15,%esi
3519         movl    %ecx,52(%edi)
3520         shll    $17,%eax
3521         orl     %esi,%edx
3522         orl     %ebp,%eax
3523         movl    %edx,56(%edi)
3524         movl    %eax,60(%edi)
3525         movl    $3,%eax
3526         jmp     .L013done
3527 .align  16
3528 .L0122nd256:
3529         movl    44(%esp),%esi
3530         movl    %eax,48(%esi)
3531         movl    %ebx,52(%esi)
3532         movl    %ecx,56(%esi)
3533         movl    %edx,60(%esi)
3534         xorl    32(%esi),%eax
3535         xorl    36(%esi),%ebx
3536         xorl    40(%esi),%ecx
3537         xorl    44(%esi),%edx
3538         movl    32(%edi),%esi
3539         movl    %eax,(%esp)
3540         movl    %ebx,4(%esp)
3541         movl    %ecx,8(%esp)
3542         movl    %edx,12(%esp)
3543         xorl    %esi,%eax
3544         xorl    36(%edi),%ebx
3545         movzbl  %ah,%esi
3546         movl    2052(%ebp,%esi,8),%edx
3547         movzbl  %al,%esi
3548         xorl    4(%ebp,%esi,8),%edx
3549         shrl    $16,%eax
3550         movzbl  %bl,%esi
3551         movl    (%ebp,%esi,8),%ecx
3552         movzbl  %ah,%esi
3553         xorl    (%ebp,%esi,8),%edx
3554         movzbl  %bh,%esi
3555         xorl    4(%ebp,%esi,8),%ecx
3556         shrl    $16,%ebx
3557         movzbl  %al,%eax
3558         xorl    2048(%ebp,%eax,8),%edx
3559         movzbl  %bh,%esi
3560         movl    12(%esp),%eax
3561         xorl    %edx,%ecx
3562         rorl    $8,%edx
3563         xorl    2048(%ebp,%esi,8),%ecx
3564         movzbl  %bl,%esi
3565         movl    8(%esp),%ebx
3566         xorl    %eax,%edx
3567         xorl    2052(%ebp,%esi,8),%ecx
3568         movl    40(%edi),%esi
3569         xorl    %ecx,%edx
3570         movl    %edx,12(%esp)
3571         xorl    %ebx,%ecx
3572         movl    %ecx,8(%esp)
3573         xorl    %esi,%ecx
3574         xorl    44(%edi),%edx
3575         movzbl  %ch,%esi
3576         movl    2052(%ebp,%esi,8),%ebx
3577         movzbl  %cl,%esi
3578         xorl    4(%ebp,%esi,8),%ebx
3579         shrl    $16,%ecx
3580         movzbl  %dl,%esi
3581         movl    (%ebp,%esi,8),%eax
3582         movzbl  %ch,%esi
3583         xorl    (%ebp,%esi,8),%ebx
3584         movzbl  %dh,%esi
3585         xorl    4(%ebp,%esi,8),%eax
3586         shrl    $16,%edx
3587         movzbl  %cl,%ecx
3588         xorl    2048(%ebp,%ecx,8),%ebx
3589         movzbl  %dh,%esi
3590         movl    4(%esp),%ecx
3591         xorl    %ebx,%eax
3592         rorl    $8,%ebx
3593         xorl    2048(%ebp,%esi,8),%eax
3594         movzbl  %dl,%esi
3595         movl    (%esp),%edx
3596         xorl    %ecx,%ebx
3597         xorl    2052(%ebp,%esi,8),%eax
3598         movl    48(%edi),%esi
3599         xorl    %eax,%ebx
3600         movl    %ebx,4(%esp)
3601         xorl    %edx,%eax
3602         movl    %eax,(%esp)
3603         movl    8(%esp),%ecx
3604         movl    12(%esp),%edx
3605         movl    44(%esp),%edi
3606         leal    128(%edi),%edi
3607         movl    %eax,-112(%edi)
3608         movl    %ebx,-108(%edi)
3609         movl    %ecx,-104(%edi)
3610         movl    %edx,-100(%edi)
3611         movl    %eax,%ebp
3612         shll    $30,%eax
3613         movl    %ebx,%esi
3614         shrl    $2,%esi
3615         shll    $30,%ebx
3616         orl     %esi,%eax
3617         movl    %ecx,%esi
3618         shll    $30,%ecx
3619         movl    %eax,-48(%edi)
3620         shrl    $2,%esi
3621         orl     %esi,%ebx
3622         shrl    $2,%ebp
3623         movl    %edx,%esi
3624         shrl    $2,%esi
3625         movl    %ebx,-44(%edi)
3626         shll    $30,%edx
3627         orl     %esi,%ecx
3628         orl     %ebp,%edx
3629         movl    %ecx,-40(%edi)
3630         movl    %edx,-36(%edi)
3631         movl    %eax,%ebp
3632         shll    $30,%eax
3633         movl    %ebx,%esi
3634         shrl    $2,%esi
3635         shll    $30,%ebx
3636         orl     %esi,%eax
3637         movl    %ecx,%esi
3638         shll    $30,%ecx
3639         movl    %eax,32(%edi)
3640         shrl    $2,%esi
3641         orl     %esi,%ebx
3642         shrl    $2,%ebp
3643         movl    %edx,%esi
3644         shrl    $2,%esi
3645         movl    %ebx,36(%edi)
3646         shll    $30,%edx
3647         orl     %esi,%ecx
3648         orl     %ebp,%edx
3649         movl    %ecx,40(%edi)
3650         movl    %edx,44(%edi)
3651         movl    %ebx,%ebp
3652         shll    $19,%ebx
3653         movl    %ecx,%esi
3654         shrl    $13,%esi
3655         shll    $19,%ecx
3656         orl     %esi,%ebx
3657         movl    %edx,%esi
3658         shll    $19,%edx
3659         movl    %ebx,128(%edi)
3660         shrl    $13,%esi
3661         orl     %esi,%ecx
3662         shrl    $13,%ebp
3663         movl    %eax,%esi
3664         shrl    $13,%esi
3665         movl    %ecx,132(%edi)
3666         shll    $19,%eax
3667         orl     %esi,%edx
3668         orl     %ebp,%eax
3669         movl    %edx,136(%edi)
3670         movl    %eax,140(%edi)
3671         movl    -96(%edi),%ebx
3672         movl    -92(%edi),%ecx
3673         movl    -88(%edi),%edx
3674         movl    -84(%edi),%eax
3675         movl    %ebx,%ebp
3676         shll    $15,%ebx
3677         movl    %ecx,%esi
3678         shrl    $17,%esi
3679         shll    $15,%ecx
3680         orl     %esi,%ebx
3681         movl    %edx,%esi
3682         shll    $15,%edx
3683         movl    %ebx,-96(%edi)
3684         shrl    $17,%esi
3685         orl     %esi,%ecx
3686         shrl    $17,%ebp
3687         movl    %eax,%esi
3688         shrl    $17,%esi
3689         movl    %ecx,-92(%edi)
3690         shll    $15,%eax
3691         orl     %esi,%edx
3692         orl     %ebp,%eax
3693         movl    %edx,-88(%edi)
3694         movl    %eax,-84(%edi)
3695         movl    %ebx,%ebp
3696         shll    $15,%ebx
3697         movl    %ecx,%esi
3698         shrl    $17,%esi
3699         shll    $15,%ecx
3700         orl     %esi,%ebx
3701         movl    %edx,%esi
3702         shll    $15,%edx
3703         movl    %ebx,-64(%edi)
3704         shrl    $17,%esi
3705         orl     %esi,%ecx
3706         shrl    $17,%ebp
3707         movl    %eax,%esi
3708         shrl    $17,%esi
3709         movl    %ecx,-60(%edi)
3710         shll    $15,%eax
3711         orl     %esi,%edx
3712         orl     %ebp,%eax
3713         movl    %edx,-56(%edi)
3714         movl    %eax,-52(%edi)
3715         movl    %ebx,%ebp
3716         shll    $30,%ebx
3717         movl    %ecx,%esi
3718         shrl    $2,%esi
3719         shll    $30,%ecx
3720         orl     %esi,%ebx
3721         movl    %edx,%esi
3722         shll    $30,%edx
3723         movl    %ebx,16(%edi)
3724         shrl    $2,%esi
3725         orl     %esi,%ecx
3726         shrl    $2,%ebp
3727         movl    %eax,%esi
3728         shrl    $2,%esi
3729         movl    %ecx,20(%edi)
3730         shll    $30,%eax
3731         orl     %esi,%edx
3732         orl     %ebp,%eax
3733         movl    %edx,24(%edi)
3734         movl    %eax,28(%edi)
3735         movl    %ecx,%ebp
3736         shll    $2,%ecx
3737         movl    %edx,%esi
3738         shrl    $30,%esi
3739         shll    $2,%edx
3740         orl     %esi,%ecx
3741         movl    %eax,%esi
3742         shll    $2,%eax
3743         movl    %ecx,80(%edi)
3744         shrl    $30,%esi
3745         orl     %esi,%edx
3746         shrl    $30,%ebp
3747         movl    %ebx,%esi
3748         shrl    $30,%esi
3749         movl    %edx,84(%edi)
3750         shll    $2,%ebx
3751         orl     %esi,%eax
3752         orl     %ebp,%ebx
3753         movl    %eax,88(%edi)
3754         movl    %ebx,92(%edi)
3755         movl    -80(%edi),%ecx
3756         movl    -76(%edi),%edx
3757         movl    -72(%edi),%eax
3758         movl    -68(%edi),%ebx
3759         movl    %ecx,%ebp
3760         shll    $15,%ecx
3761         movl    %edx,%esi
3762         shrl    $17,%esi
3763         shll    $15,%edx
3764         orl     %esi,%ecx
3765         movl    %eax,%esi
3766         shll    $15,%eax
3767         movl    %ecx,-80(%edi)
3768         shrl    $17,%esi
3769         orl     %esi,%edx
3770         shrl    $17,%ebp
3771         movl    %ebx,%esi
3772         shrl    $17,%esi
3773         movl    %edx,-76(%edi)
3774         shll    $15,%ebx
3775         orl     %esi,%eax
3776         orl     %ebp,%ebx
3777         movl    %eax,-72(%edi)
3778         movl    %ebx,-68(%edi)
3779         movl    %ecx,%ebp
3780         shll    $30,%ecx
3781         movl    %edx,%esi
3782         shrl    $2,%esi
3783         shll    $30,%edx
3784         orl     %esi,%ecx
3785         movl    %eax,%esi
3786         shll    $30,%eax
3787         movl    %ecx,-16(%edi)
3788         shrl    $2,%esi
3789         orl     %esi,%edx
3790         shrl    $2,%ebp
3791         movl    %ebx,%esi
3792         shrl    $2,%esi
3793         movl    %edx,-12(%edi)
3794         shll    $30,%ebx
3795         orl     %esi,%eax
3796         orl     %ebp,%ebx
3797         movl    %eax,-8(%edi)
3798         movl    %ebx,-4(%edi)
3799         movl    %edx,64(%edi)
3800         movl    %eax,68(%edi)
3801         movl    %ebx,72(%edi)
3802         movl    %ecx,76(%edi)
3803         movl    %edx,%ebp
3804         shll    $17,%edx
3805         movl    %eax,%esi
3806         shrl    $15,%esi
3807         shll    $17,%eax
3808         orl     %esi,%edx
3809         movl    %ebx,%esi
3810         shll    $17,%ebx
3811         movl    %edx,96(%edi)
3812         shrl    $15,%esi
3813         orl     %esi,%eax
3814         shrl    $15,%ebp
3815         movl    %ecx,%esi
3816         shrl    $15,%esi
3817         movl    %eax,100(%edi)
3818         shll    $17,%ecx
3819         orl     %esi,%ebx
3820         orl     %ebp,%ecx
3821         movl    %ebx,104(%edi)
3822         movl    %ecx,108(%edi)
3823         movl    -128(%edi),%edx
3824         movl    -124(%edi),%eax
3825         movl    -120(%edi),%ebx
3826         movl    -116(%edi),%ecx
3827         movl    %eax,%ebp
3828         shll    $13,%eax
3829         movl    %ebx,%esi
3830         shrl    $19,%esi
3831         shll    $13,%ebx
3832         orl     %esi,%eax
3833         movl    %ecx,%esi
3834         shll    $13,%ecx
3835         movl    %eax,-32(%edi)
3836         shrl    $19,%esi
3837         orl     %esi,%ebx
3838         shrl    $19,%ebp
3839         movl    %edx,%esi
3840         shrl    $19,%esi
3841         movl    %ebx,-28(%edi)
3842         shll    $13,%edx
3843         orl     %esi,%ecx
3844         orl     %ebp,%edx
3845         movl    %ecx,-24(%edi)
3846         movl    %edx,-20(%edi)
3847         movl    %eax,%ebp
3848         shll    $15,%eax
3849         movl    %ebx,%esi
3850         shrl    $17,%esi
3851         shll    $15,%ebx
3852         orl     %esi,%eax
3853         movl    %ecx,%esi
3854         shll    $15,%ecx
3855         movl    %eax,(%edi)
3856         shrl    $17,%esi
3857         orl     %esi,%ebx
3858         shrl    $17,%ebp
3859         movl    %edx,%esi
3860         shrl    $17,%esi
3861         movl    %ebx,4(%edi)
3862         shll    $15,%edx
3863         orl     %esi,%ecx
3864         orl     %ebp,%edx
3865         movl    %ecx,8(%edi)
3866         movl    %edx,12(%edi)
3867         movl    %eax,%ebp
3868         shll    $17,%eax
3869         movl    %ebx,%esi
3870         shrl    $15,%esi
3871         shll    $17,%ebx
3872         orl     %esi,%eax
3873         movl    %ecx,%esi
3874         shll    $17,%ecx
3875         movl    %eax,48(%edi)
3876         shrl    $15,%esi
3877         orl     %esi,%ebx
3878         shrl    $15,%ebp
3879         movl    %edx,%esi
3880         shrl    $15,%esi
3881         movl    %ebx,52(%edi)
3882         shll    $17,%edx
3883         orl     %esi,%ecx
3884         orl     %ebp,%edx
3885         movl    %ecx,56(%edi)
3886         movl    %edx,60(%edi)
3887         movl    %ebx,%ebp
3888         shll    $2,%ebx
3889         movl    %ecx,%esi
3890         shrl    $30,%esi
3891         shll    $2,%ecx
3892         orl     %esi,%ebx
3893         movl    %edx,%esi
3894         shll    $2,%edx
3895         movl    %ebx,112(%edi)
3896         shrl    $30,%esi
3897         orl     %esi,%ecx
3898         shrl    $30,%ebp
3899         movl    %eax,%esi
3900         shrl    $30,%esi
3901         movl    %ecx,116(%edi)
3902         shll    $2,%eax
3903         orl     %esi,%edx
3904         orl     %ebp,%eax
3905         movl    %edx,120(%edi)
3906         movl    %eax,124(%edi)
3907         movl    $4,%eax
3908 .L013done:
3909         leal    144(%edi),%edx
3910         addl    $16,%esp
3911         popl    %edi
3912         popl    %esi
3913         popl    %ebx
3914         popl    %ebp
3915         ret
3916 .size   Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
3917 .globl  Camellia_set_key
3918 .type   Camellia_set_key,@function
3919 .align  16
3920 Camellia_set_key:
3921 .L_Camellia_set_key_begin:
3922         pushl   %ebx
3923         movl    8(%esp),%ecx
3924         movl    12(%esp),%ebx
3925         movl    16(%esp),%edx
3926         movl    $-1,%eax
3927         testl   %ecx,%ecx
3928         jz      .L014done
3929         testl   %edx,%edx
3930         jz      .L014done
3931         movl    $-2,%eax
3932         cmpl    $256,%ebx
3933         je      .L015arg_ok
3934         cmpl    $192,%ebx
3935         je      .L015arg_ok
3936         cmpl    $128,%ebx
3937         jne     .L014done
3938 .align  4
3939 .L015arg_ok:
3940         pushl   %edx
3941         pushl   %ecx
3942         pushl   %ebx
3943         call    .L_Camellia_Ekeygen_begin
3944         addl    $12,%esp
3945         movl    %eax,(%edx)
3946         xorl    %eax,%eax
3947 .align  4
3948 .L014done:
3949         popl    %ebx
3950         ret
3951 .size   Camellia_set_key,.-.L_Camellia_set_key_begin
3952 .align  64
3953 .LCamellia_SIGMA:
3954 .long   2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
3955 .align  64
3956 .LCamellia_SBOX:
3957 .long   1886416896,1886388336
3958 .long   2189591040,741081132
3959 .long   741092352,3014852787
3960 .long   3974949888,3233808576
3961 .long   3014898432,3840147684
3962 .long   656877312,1465319511
3963 .long   3233857536,3941204202
3964 .long   3857048832,2930639022
3965 .long   3840205824,589496355
3966 .long   2240120064,1802174571
3967 .long   1465341696,1162149957
3968 .long   892679424,2779054245
3969 .long   3941263872,3991732461
3970 .long   202116096,1330577487
3971 .long   2930683392,488439837
3972 .long   1094795520,2459041938
3973 .long   589505280,2256928902
3974 .long   4025478912,2947481775
3975 .long   1802201856,2088501372
3976 .long   2475922176,522125343
3977 .long   1162167552,1044250686
3978 .long   421075200,3705405660
3979 .long   2779096320,1583218782
3980 .long   555819264,185270283
3981 .long   3991792896,2795896998
3982 .long   235802112,960036921
3983 .long   1330597632,3587506389
3984 .long   1313754624,1566376029
3985 .long   488447232,3654877401
3986 .long   1701143808,1515847770
3987 .long   2459079168,1364262993
3988 .long   3183328512,1819017324
3989 .long   2256963072,2341142667
3990 .long   3099113472,2593783962
3991 .long   2947526400,4227531003
3992 .long   2408550144,2964324528
3993 .long   2088532992,1953759348
3994 .long   3958106880,724238379
3995 .long   522133248,4042260720
3996 .long   3469659648,2223243396
3997 .long   1044266496,3755933919
3998 .long   808464384,3419078859
3999 .long   3705461760,875823156
4000 .long   1600085760,1987444854
4001 .long   1583242752,1835860077
4002 .long   3318072576,2846425257
4003 .long   185273088,3520135377
4004 .long   437918208,67371012
4005 .long   2795939328,336855060
4006 .long   3789676800,976879674
4007 .long   960051456,3739091166
4008 .long   3402287616,286326801
4009 .long   3587560704,842137650
4010 .long   1195853568,2627469468
4011 .long   1566399744,1397948499
4012 .long   1027423488,4075946226
4013 .long   3654932736,4278059262
4014 .long   16843008,3486449871
4015 .long   1515870720,3284336835
4016 .long   3604403712,2054815866
4017 .long   1364283648,606339108
4018 .long   1448498688,3907518696
4019 .long   1819044864,1616904288
4020 .long   1296911616,1768489065
4021 .long   2341178112,2863268010
4022 .long   218959104,2694840480
4023 .long   2593823232,2711683233
4024 .long   1717986816,1650589794
4025 .long   4227595008,1414791252
4026 .long   3435973632,505282590
4027 .long   2964369408,3772776672
4028 .long   757935360,1684275300
4029 .long   1953788928,269484048
4030 .long   303174144,0
4031 .long   724249344,2745368739
4032 .long   538976256,1970602101
4033 .long   4042321920,2324299914
4034 .long   2981212416,3873833190
4035 .long   2223277056,151584777
4036 .long   2576980224,3722248413
4037 .long   3755990784,2273771655
4038 .long   1280068608,2206400643
4039 .long   3419130624,3452764365
4040 .long   3267543552,2425356432
4041 .long   875836416,1936916595
4042 .long   2122219008,4143317238
4043 .long   1987474944,2644312221
4044 .long   84215040,3216965823
4045 .long   1835887872,1381105746
4046 .long   3082270464,3638034648
4047 .long   2846468352,3368550600
4048 .long   825307392,3334865094
4049 .long   3520188672,2172715137
4050 .long   387389184,1869545583
4051 .long   67372032,320012307
4052 .long   3621246720,1667432547
4053 .long   336860160,3924361449
4054 .long   1482184704,2812739751
4055 .long   976894464,2677997727
4056 .long   1633771776,3166437564
4057 .long   3739147776,690552873
4058 .long   454761216,4193845497
4059 .long   286331136,791609391
4060 .long   471604224,3031695540
4061 .long   842150400,2021130360
4062 .long   252645120,101056518
4063 .long   2627509248,3890675943
4064 .long   370546176,1903231089
4065 .long   1397969664,3570663636
4066 .long   404232192,2880110763
4067 .long   4076007936,2290614408
4068 .long   572662272,2374828173
4069 .long   4278124032,1920073842
4070 .long   1145324544,3115909305
4071 .long   3486502656,4177002744
4072 .long   2998055424,2896953516
4073 .long   3284386560,909508662
4074 .long   3048584448,707395626
4075 .long   2054846976,1010565180
4076 .long   2442236160,4059103473
4077 .long   606348288,1077936192
4078 .long   134744064,3553820883
4079 .long   3907577856,3149594811
4080 .long   2829625344,1128464451
4081 .long   1616928768,353697813
4082 .long   4244438016,2913796269
4083 .long   1768515840,2004287607
4084 .long   1347440640,2155872384
4085 .long   2863311360,2189557890
4086 .long   3503345664,3974889708
4087 .long   2694881280,656867367
4088 .long   2105376000,3856990437
4089 .long   2711724288,2240086149
4090 .long   2307492096,892665909
4091 .long   1650614784,202113036
4092 .long   2543294208,1094778945
4093 .long   1414812672,4025417967
4094 .long   1532713728,2475884691
4095 .long   505290240,421068825
4096 .long   2509608192,555810849
4097 .long   3772833792,235798542
4098 .long   4294967040,1313734734
4099 .long   1684300800,1701118053
4100 .long   3537031680,3183280317
4101 .long   269488128,3099066552
4102 .long   3301229568,2408513679
4103 .long   0,3958046955
4104 .long   1212696576,3469607118
4105 .long   2745410304,808452144
4106 .long   4160222976,1600061535
4107 .long   1970631936,3318022341
4108 .long   3688618752,437911578
4109 .long   2324335104,3789619425
4110 .long   50529024,3402236106
4111 .long   3873891840,1195835463
4112 .long   3671775744,1027407933
4113 .long   151587072,16842753
4114 .long   1061109504,3604349142
4115 .long   3722304768,1448476758
4116 .long   2492765184,1296891981
4117 .long   2273806080,218955789
4118 .long   1549556736,1717960806
4119 .long   2206434048,3435921612
4120 .long   33686016,757923885
4121 .long   3452816640,303169554
4122 .long   1246382592,538968096
4123 .long   2425393152,2981167281
4124 .long   858993408,2576941209
4125 .long   1936945920,1280049228
4126 .long   1734829824,3267494082
4127 .long   4143379968,2122186878
4128 .long   4092850944,84213765
4129 .long   2644352256,3082223799
4130 .long   2139062016,825294897
4131 .long   3217014528,387383319
4132 .long   3806519808,3621191895
4133 .long   1381126656,1482162264
4134 .long   2610666240,1633747041
4135 .long   3638089728,454754331
4136 .long   640034304,471597084
4137 .long   3368601600,252641295
4138 .long   926365440,370540566
4139 .long   3334915584,404226072
4140 .long   993737472,572653602
4141 .long   2172748032,1145307204
4142 .long   2526451200,2998010034
4143 .long   1869573888,3048538293
4144 .long   1263225600,2442199185
4145 .long   320017152,134742024
4146 .long   3200171520,2829582504
4147 .long   1667457792,4244373756
4148 .long   774778368,1347420240
4149 .long   3924420864,3503292624
4150 .long   2038003968,2105344125
4151 .long   2812782336,2307457161
4152 .long   2358021120,2543255703
4153 .long   2678038272,1532690523
4154 .long   1852730880,2509570197
4155 .long   3166485504,4294902015
4156 .long   2391707136,3536978130
4157 .long   690563328,3301179588
4158 .long   4126536960,1212678216
4159 .long   4193908992,4160159991
4160 .long   3065427456,3688562907
4161 .long   791621376,50528259
4162 .long   4261281024,3671720154
4163 .long   3031741440,1061093439
4164 .long   1499027712,2492727444
4165 .long   2021160960,1549533276
4166 .long   2560137216,33685506
4167 .long   101058048,1246363722
4168 .long   1785358848,858980403
4169 .long   3890734848,1734803559
4170 .long   1179010560,4092788979
4171 .long   1903259904,2139029631
4172 .long   3132799488,3806462178
4173 .long   3570717696,2610626715
4174 .long   623191296,640024614
4175 .long   2880154368,926351415
4176 .long   1111638528,993722427
4177 .long   2290649088,2526412950
4178 .long   2728567296,1263206475
4179 .long   2374864128,3200123070
4180 .long   4210752000,774766638
4181 .long   1920102912,2037973113
4182 .long   117901056,2357985420
4183 .long   3115956480,1852702830
4184 .long   1431655680,2391670926
4185 .long   4177065984,4126474485
4186 .long   4008635904,3065381046
4187 .long   2896997376,4261216509
4188 .long   168430080,1499005017
4189 .long   909522432,2560098456
4190 .long   1229539584,1785331818
4191 .long   707406336,1178992710
4192 .long   1751672832,3132752058
4193 .long   1010580480,623181861
4194 .long   943208448,1111621698
4195 .long   4059164928,2728525986
4196 .long   2762253312,4210688250
4197 .long   1077952512,117899271
4198 .long   673720320,1431634005
4199 .long   3553874688,4008575214
4200 .long   2071689984,168427530
4201 .long   3149642496,1229520969
4202 .long   3385444608,1751646312
4203 .long   1128481536,943194168
4204 .long   3250700544,2762211492
4205 .long   353703168,673710120
4206 .long   3823362816,2071658619
4207 .long   2913840384,3385393353
4208 .long   4109693952,3250651329
4209 .long   2004317952,3823304931
4210 .long   3351758592,4109631732
4211 .long   2155905024,3351707847
4212 .long   2661195264,2661154974
4213 .long   14737632,939538488
4214 .long   328965,1090535745
4215 .long   5789784,369104406
4216 .long   14277081,1979741814
4217 .long   6776679,3640711641
4218 .long   5131854,2466288531
4219 .long   8487297,1610637408
4220 .long   13355979,4060148466
4221 .long   13224393,1912631922
4222 .long   723723,3254829762
4223 .long   11447982,2868947883
4224 .long   6974058,2583730842
4225 .long   14013909,1962964341
4226 .long   1579032,100664838
4227 .long   6118749,1459640151
4228 .long   8553090,2684395680
4229 .long   4605510,2432733585
4230 .long   14671839,4144035831
4231 .long   14079702,3036722613
4232 .long   2565927,3372272073
4233 .long   9079434,2717950626
4234 .long   3289650,2348846220
4235 .long   4934475,3523269330
4236 .long   4342338,2415956112
4237 .long   14408667,4127258358
4238 .long   1842204,117442311
4239 .long   10395294,2801837991
4240 .long   10263708,654321447
4241 .long   3815994,2382401166
4242 .long   13290186,2986390194
4243 .long   2434341,1224755529
4244 .long   8092539,3724599006
4245 .long   855309,1124090691
4246 .long   7434609,1543527516
4247 .long   6250335,3607156695
4248 .long   2039583,3338717127
4249 .long   16316664,1040203326
4250 .long   14145495,4110480885
4251 .long   4079166,2399178639
4252 .long   10329501,1728079719
4253 .long   8158332,520101663
4254 .long   6316128,402659352
4255 .long   12171705,1845522030
4256 .long   12500670,2936057775
4257 .long   12369084,788541231
4258 .long   9145227,3791708898
4259 .long   1447446,2231403909
4260 .long   3421236,218107149
4261 .long   5066061,1392530259
4262 .long   12829635,4026593520
4263 .long   7500402,2617285788
4264 .long   9803157,1694524773
4265 .long   11250603,3925928682
4266 .long   9342606,2734728099
4267 .long   12237498,2919280302
4268 .long   8026746,2650840734
4269 .long   11776947,3959483628
4270 .long   131586,2147516544
4271 .long   11842740,754986285
4272 .long   11382189,1795189611
4273 .long   10658466,2818615464
4274 .long   11316396,721431339
4275 .long   14211288,905983542
4276 .long   10132122,2785060518
4277 .long   1513239,3305162181
4278 .long   1710618,2248181382
4279 .long   3487029,1291865421
4280 .long   13421772,855651123
4281 .long   16250871,4244700669
4282 .long   10066329,1711302246
4283 .long   6381921,1476417624
4284 .long   5921370,2516620950
4285 .long   15263976,973093434
4286 .long   2368548,150997257
4287 .long   5658198,2499843477
4288 .long   4210752,268439568
4289 .long   14803425,2013296760
4290 .long   6513507,3623934168
4291 .long   592137,1107313218
4292 .long   3355443,3422604492
4293 .long   12566463,4009816047
4294 .long   10000536,637543974
4295 .long   9934743,3842041317
4296 .long   8750469,1627414881
4297 .long   6842472,436214298
4298 .long   16579836,1056980799
4299 .long   15527148,989870907
4300 .long   657930,2181071490
4301 .long   14342874,3053500086
4302 .long   7303023,3674266587
4303 .long   5460819,3556824276
4304 .long   6447714,2550175896
4305 .long   10724259,3892373736
4306 .long   3026478,2332068747
4307 .long   526344,33554946
4308 .long   11513775,3942706155
4309 .long   2631720,167774730
4310 .long   11579568,738208812
4311 .long   7631988,486546717
4312 .long   12763842,2952835248
4313 .long   12434877,1862299503
4314 .long   3552822,2365623693
4315 .long   2236962,2281736328
4316 .long   3684408,234884622
4317 .long   6579300,419436825
4318 .long   1973790,2264958855
4319 .long   3750201,1308642894
4320 .long   2894892,184552203
4321 .long   10921638,2835392937
4322 .long   3158064,201329676
4323 .long   15066597,2030074233
4324 .long   4473924,285217041
4325 .long   16645629,2130739071
4326 .long   8947848,570434082
4327 .long   10461087,3875596263
4328 .long   6645093,1493195097
4329 .long   8882055,3774931425
4330 .long   7039851,3657489114
4331 .long   16053492,1023425853
4332 .long   2302755,3355494600
4333 .long   4737096,301994514
4334 .long   1052688,67109892
4335 .long   13750737,1946186868
4336 .long   5329233,1409307732
4337 .long   12632256,805318704
4338 .long   16382457,2113961598
4339 .long   13816530,3019945140
4340 .long   10526880,671098920
4341 .long   5592405,1426085205
4342 .long   10592673,1744857192
4343 .long   4276545,1342197840
4344 .long   16448250,3187719870
4345 .long   4408131,3489714384
4346 .long   1250067,3288384708
4347 .long   12895428,822096177
4348 .long   3092271,3405827019
4349 .long   11053224,704653866
4350 .long   11974326,2902502829
4351 .long   3947580,251662095
4352 .long   2829099,3389049546
4353 .long   12698049,1879076976
4354 .long   16777215,4278255615
4355 .long   13158600,838873650
4356 .long   10855845,1761634665
4357 .long   2105376,134219784
4358 .long   9013641,1644192354
4359 .long   0,0
4360 .long   9474192,603989028
4361 .long   4671303,3506491857
4362 .long   15724527,4211145723
4363 .long   15395562,3120609978
4364 .long   12040119,3976261101
4365 .long   1381653,1157645637
4366 .long   394758,2164294017
4367 .long   13487565,1929409395
4368 .long   11908533,1828744557
4369 .long   1184274,2214626436
4370 .long   8289918,2667618207
4371 .long   12303291,3993038574
4372 .long   2697513,1241533002
4373 .long   986895,3271607235
4374 .long   12105912,771763758
4375 .long   460551,3238052289
4376 .long   263172,16777473
4377 .long   10197915,3858818790
4378 .long   9737364,620766501
4379 .long   2171169,1207978056
4380 .long   6710886,2566953369
4381 .long   15132390,3103832505
4382 .long   13553358,3003167667
4383 .long   15592941,2063629179
4384 .long   15198183,4177590777
4385 .long   3881787,3456159438
4386 .long   16711422,3204497343
4387 .long   8355711,3741376479
4388 .long   12961221,1895854449
4389 .long   10790052,687876393
4390 .long   3618615,3439381965
4391 .long   11645361,1811967084
4392 .long   5000268,318771987
4393 .long   9539985,1677747300
4394 .long   7237230,2600508315
4395 .long   9276813,1660969827
4396 .long   7763574,2634063261
4397 .long   197379,3221274816
4398 .long   2960685,1258310475
4399 .long   14606046,3070277559
4400 .long   9868950,2768283045
4401 .long   2500134,2298513801
4402 .long   8224125,1593859935
4403 .long   13027014,2969612721
4404 .long   6052956,385881879
4405 .long   13882323,4093703412
4406 .long   15921906,3154164924
4407 .long   5197647,3540046803
4408 .long   1644825,1174423110
4409 .long   4144959,3472936911
4410 .long   14474460,922761015
4411 .long   7960953,1577082462
4412 .long   1907997,1191200583
4413 .long   5395026,2483066004
4414 .long   15461355,4194368250
4415 .long   15987699,4227923196
4416 .long   7171437,1526750043
4417 .long   6184542,2533398423
4418 .long   16514043,4261478142
4419 .long   6908265,1509972570
4420 .long   11711154,2885725356
4421 .long   15790320,1006648380
4422 .long   3223857,1275087948
4423 .long   789516,50332419
4424 .long   13948116,889206069
4425 .long   13619151,4076925939
4426 .long   9211020,587211555
4427 .long   14869218,3087055032
4428 .long   7697781,1560304989
4429 .long   11119017,1778412138
4430 .long   4868682,2449511058
4431 .long   5723991,3573601749
4432 .long   8684676,553656609
4433 .long   1118481,1140868164
4434 .long   4539717,1358975313
4435 .long   1776411,3321939654
4436 .long   16119285,2097184125
4437 .long   15000804,956315961
4438 .long   921102,2197848963
4439 .long   7566195,3691044060
4440 .long   11184810,2852170410
4441 .long   15856113,2080406652
4442 .long   14540253,1996519287
4443 .long   5855577,1442862678
4444 .long   1315860,83887365
4445 .long   7105644,452991771
4446 .long   9605778,2751505572
4447 .long   5526612,352326933
4448 .long   13684944,872428596
4449 .long   7895160,503324190
4450 .long   7368816,469769244
4451 .long   14935011,4160813304
4452 .long   4802889,1375752786
4453 .long   8421504,536879136
4454 .long   5263440,335549460
4455 .long   10987431,3909151209
4456 .long   16185078,3170942397
4457 .long   7829367,3707821533
4458 .long   9671571,3825263844
4459 .long   8816262,2701173153
4460 .long   8618883,3758153952
4461 .long   2763306,2315291274
4462 .long   13092807,4043370993
4463 .long   5987163,3590379222
4464 .long   15329769,2046851706
4465 .long   15658734,3137387451
4466 .long   9408399,3808486371
4467 .long   65793,1073758272
4468 .long   4013373,1325420367
4469 .globl  Camellia_cbc_encrypt
4470 .type   Camellia_cbc_encrypt,@function
4471 .align  16
4472 Camellia_cbc_encrypt:
4473 .L_Camellia_cbc_encrypt_begin:
4474         pushl   %ebp
4475         pushl   %ebx
4476         pushl   %esi
4477         pushl   %edi
4478         movl    28(%esp),%ecx
4479         cmpl    $0,%ecx
4480         je      .L016enc_out
4481         pushfl
4482         cld
4483         movl    24(%esp),%eax
4484         movl    28(%esp),%ebx
4485         movl    36(%esp),%edx
4486         movl    40(%esp),%ebp
4487         leal    -64(%esp),%esi
4488         andl    $-64,%esi
4489         leal    -127(%edx),%edi
4490         subl    %esi,%edi
4491         negl    %edi
4492         andl    $960,%edi
4493         subl    %edi,%esi
4494         movl    44(%esp),%edi
4495         xchgl   %esi,%esp
4496         addl    $4,%esp
4497         movl    %esi,20(%esp)
4498         movl    %eax,24(%esp)
4499         movl    %ebx,28(%esp)
4500         movl    %ecx,32(%esp)
4501         movl    %edx,36(%esp)
4502         movl    %ebp,40(%esp)
4503         call    .L017pic_point
4504 .L017pic_point:
4505         popl    %ebp
4506         leal    .LCamellia_SBOX-.L017pic_point(%ebp),%ebp
4507         movl    $32,%esi
4508 .align  4
4509 .L018prefetch_sbox:
4510         movl    (%ebp),%eax
4511         movl    32(%ebp),%ebx
4512         movl    64(%ebp),%ecx
4513         movl    96(%ebp),%edx
4514         leal    128(%ebp),%ebp
4515         decl    %esi
4516         jnz     .L018prefetch_sbox
4517         movl    36(%esp),%eax
4518         subl    $4096,%ebp
4519         movl    24(%esp),%esi
4520         movl    272(%eax),%edx
4521         cmpl    $0,%edi
4522         je      .L019DECRYPT
4523         movl    32(%esp),%ecx
4524         movl    40(%esp),%edi
4525         shll    $6,%edx
4526         leal    (%eax,%edx,1),%edx
4527         movl    %edx,16(%esp)
4528         testl   $4294967280,%ecx
4529         jz      .L020enc_tail
4530         movl    (%edi),%eax
4531         movl    4(%edi),%ebx
4532 .align  4
4533 .L021enc_loop:
4534         movl    8(%edi),%ecx
4535         movl    12(%edi),%edx
4536         xorl    (%esi),%eax
4537         xorl    4(%esi),%ebx
4538         xorl    8(%esi),%ecx
4539         bswap   %eax
4540         xorl    12(%esi),%edx
4541         bswap   %ebx
4542         movl    36(%esp),%edi
4543         bswap   %ecx
4544         bswap   %edx
4545         call    _x86_Camellia_encrypt
4546         movl    24(%esp),%esi
4547         movl    28(%esp),%edi
4548         bswap   %eax
4549         bswap   %ebx
4550         bswap   %ecx
4551         movl    %eax,(%edi)
4552         bswap   %edx
4553         movl    %ebx,4(%edi)
4554         movl    %ecx,8(%edi)
4555         movl    %edx,12(%edi)
4556         movl    32(%esp),%ecx
4557         leal    16(%esi),%esi
4558         movl    %esi,24(%esp)
4559         leal    16(%edi),%edx
4560         movl    %edx,28(%esp)
4561         subl    $16,%ecx
4562         testl   $4294967280,%ecx
4563         movl    %ecx,32(%esp)
4564         jnz     .L021enc_loop
4565         testl   $15,%ecx
4566         jnz     .L020enc_tail
4567         movl    40(%esp),%esi
4568         movl    8(%edi),%ecx
4569         movl    12(%edi),%edx
4570         movl    %eax,(%esi)
4571         movl    %ebx,4(%esi)
4572         movl    %ecx,8(%esi)
4573         movl    %edx,12(%esi)
4574         movl    20(%esp),%esp
4575         popfl
4576 .L016enc_out:
4577         popl    %edi
4578         popl    %esi
4579         popl    %ebx
4580         popl    %ebp
4581         ret
4582         pushfl
4583 .align  4
4584 .L020enc_tail:
4585         movl    %edi,%eax
4586         movl    28(%esp),%edi
4587         pushl   %eax
4588         movl    $16,%ebx
4589         subl    %ecx,%ebx
4590         cmpl    %esi,%edi
4591         je      .L022enc_in_place
4592 .align  4
4593 .long   2767451785
4594         jmp     .L023enc_skip_in_place
4595 .L022enc_in_place:
4596         leal    (%edi,%ecx,1),%edi
4597 .L023enc_skip_in_place:
4598         movl    %ebx,%ecx
4599         xorl    %eax,%eax
4600 .align  4
4601 .long   2868115081
4602         popl    %edi
4603         movl    28(%esp),%esi
4604         movl    (%edi),%eax
4605         movl    4(%edi),%ebx
4606         movl    $16,32(%esp)
4607         jmp     .L021enc_loop
4608 .align  16
4609 .L019DECRYPT:
4610         shll    $6,%edx
4611         leal    (%eax,%edx,1),%edx
4612         movl    %eax,16(%esp)
4613         movl    %edx,36(%esp)
4614         cmpl    28(%esp),%esi
4615         je      .L024dec_in_place
4616         movl    40(%esp),%edi
4617         movl    %edi,44(%esp)
4618 .align  4
4619 .L025dec_loop:
4620         movl    (%esi),%eax
4621         movl    4(%esi),%ebx
4622         movl    8(%esi),%ecx
4623         bswap   %eax
4624         movl    12(%esi),%edx
4625         bswap   %ebx
4626         movl    36(%esp),%edi
4627         bswap   %ecx
4628         bswap   %edx
4629         call    _x86_Camellia_decrypt
4630         movl    44(%esp),%edi
4631         movl    32(%esp),%esi
4632         bswap   %eax
4633         bswap   %ebx
4634         bswap   %ecx
4635         xorl    (%edi),%eax
4636         bswap   %edx
4637         xorl    4(%edi),%ebx
4638         xorl    8(%edi),%ecx
4639         xorl    12(%edi),%edx
4640         subl    $16,%esi
4641         jc      .L026dec_partial
4642         movl    %esi,32(%esp)
4643         movl    24(%esp),%esi
4644         movl    28(%esp),%edi
4645         movl    %eax,(%edi)
4646         movl    %ebx,4(%edi)
4647         movl    %ecx,8(%edi)
4648         movl    %edx,12(%edi)
4649         movl    %esi,44(%esp)
4650         leal    16(%esi),%esi
4651         movl    %esi,24(%esp)
4652         leal    16(%edi),%edi
4653         movl    %edi,28(%esp)
4654         jnz     .L025dec_loop
4655         movl    44(%esp),%edi
4656 .L027dec_end:
4657         movl    40(%esp),%esi
4658         movl    (%edi),%eax
4659         movl    4(%edi),%ebx
4660         movl    8(%edi),%ecx
4661         movl    12(%edi),%edx
4662         movl    %eax,(%esi)
4663         movl    %ebx,4(%esi)
4664         movl    %ecx,8(%esi)
4665         movl    %edx,12(%esi)
4666         jmp     .L028dec_out
4667 .align  4
4668 .L026dec_partial:
4669         leal    44(%esp),%edi
4670         movl    %eax,(%edi)
4671         movl    %ebx,4(%edi)
4672         movl    %ecx,8(%edi)
4673         movl    %edx,12(%edi)
4674         leal    16(%esi),%ecx
4675         movl    %edi,%esi
4676         movl    28(%esp),%edi
4677 .long   2767451785
4678         movl    24(%esp),%edi
4679         jmp     .L027dec_end
4680 .align  4
4681 .L024dec_in_place:
4682 .L029dec_in_place_loop:
4683         leal    44(%esp),%edi
4684         movl    (%esi),%eax
4685         movl    4(%esi),%ebx
4686         movl    8(%esi),%ecx
4687         movl    12(%esi),%edx
4688         movl    %eax,(%edi)
4689         movl    %ebx,4(%edi)
4690         movl    %ecx,8(%edi)
4691         bswap   %eax
4692         movl    %edx,12(%edi)
4693         bswap   %ebx
4694         movl    36(%esp),%edi
4695         bswap   %ecx
4696         bswap   %edx
4697         call    _x86_Camellia_decrypt
4698         movl    40(%esp),%edi
4699         movl    28(%esp),%esi
4700         bswap   %eax
4701         bswap   %ebx
4702         bswap   %ecx
4703         xorl    (%edi),%eax
4704         bswap   %edx
4705         xorl    4(%edi),%ebx
4706         xorl    8(%edi),%ecx
4707         xorl    12(%edi),%edx
4708         movl    %eax,(%esi)
4709         movl    %ebx,4(%esi)
4710         movl    %ecx,8(%esi)
4711         movl    %edx,12(%esi)
4712         leal    16(%esi),%esi
4713         movl    %esi,28(%esp)
4714         leal    44(%esp),%esi
4715         movl    (%esi),%eax
4716         movl    4(%esi),%ebx
4717         movl    8(%esi),%ecx
4718         movl    12(%esi),%edx
4719         movl    %eax,(%edi)
4720         movl    %ebx,4(%edi)
4721         movl    %ecx,8(%edi)
4722         movl    %edx,12(%edi)
4723         movl    24(%esp),%esi
4724         leal    16(%esi),%esi
4725         movl    %esi,24(%esp)
4726         movl    32(%esp),%ecx
4727         subl    $16,%ecx
4728         jc      .L030dec_in_place_partial
4729         movl    %ecx,32(%esp)
4730         jnz     .L029dec_in_place_loop
4731         jmp     .L028dec_out
4732 .align  4
4733 .L030dec_in_place_partial:
4734         movl    28(%esp),%edi
4735         leal    44(%esp),%esi
4736         leal    (%edi,%ecx,1),%edi
4737         leal    16(%esi,%ecx,1),%esi
4738         negl    %ecx
4739 .long   2767451785
4740 .align  4
4741 .L028dec_out:
4742         movl    20(%esp),%esp
4743         popfl
4744         popl    %edi
4745         popl    %esi
4746         popl    %ebx
4747         popl    %ebp
4748         ret
4749 .size   Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
4750 .byte   67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
4751 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
4752 .byte   115,108,46,111,114,103,62,0
4753 #endif