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