]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - secure/lib/libcrypto/amd64/cmll-x86_64.S
- Make libcrypto.so position independent on i386.
[FreeBSD/stable/10.git] / secure / lib / libcrypto / amd64 / cmll-x86_64.S
1 # $FreeBSD$
2 # Do not modify. This file is auto-generated from cmll-x86_64.pl.
3 .text   
4
5
6 .globl  Camellia_EncryptBlock
7 .type   Camellia_EncryptBlock,@function
8 .align  16
9 Camellia_EncryptBlock:
10         movl    $128,%eax
11         subl    %edi,%eax
12         movl    $3,%edi
13         adcl    $0,%edi
14         jmp     .Lenc_rounds
15 .size   Camellia_EncryptBlock,.-Camellia_EncryptBlock
16
17 .globl  Camellia_EncryptBlock_Rounds
18 .type   Camellia_EncryptBlock_Rounds,@function
19 .align  16
20 .Lenc_rounds:
21 Camellia_EncryptBlock_Rounds:
22         pushq   %rbx
23         pushq   %rbp
24         pushq   %r13
25         pushq   %r14
26         pushq   %r15
27 .Lenc_prologue:
28
29
30         movq    %rcx,%r13
31         movq    %rdx,%r14
32
33         shll    $6,%edi
34         leaq    .LCamellia_SBOX(%rip),%rbp
35         leaq    (%r14,%rdi,1),%r15
36
37         movl    0(%rsi),%r8d
38         movl    4(%rsi),%r9d
39         movl    8(%rsi),%r10d
40         bswapl  %r8d
41         movl    12(%rsi),%r11d
42         bswapl  %r9d
43         bswapl  %r10d
44         bswapl  %r11d
45
46         call    _x86_64_Camellia_encrypt
47
48         bswapl  %r8d
49         bswapl  %r9d
50         bswapl  %r10d
51         movl    %r8d,0(%r13)
52         bswapl  %r11d
53         movl    %r9d,4(%r13)
54         movl    %r10d,8(%r13)
55         movl    %r11d,12(%r13)
56
57         movq    0(%rsp),%r15
58         movq    8(%rsp),%r14
59         movq    16(%rsp),%r13
60         movq    24(%rsp),%rbp
61         movq    32(%rsp),%rbx
62         leaq    40(%rsp),%rsp
63 .Lenc_epilogue:
64         .byte   0xf3,0xc3
65 .size   Camellia_EncryptBlock_Rounds,.-Camellia_EncryptBlock_Rounds
66
67 .type   _x86_64_Camellia_encrypt,@function
68 .align  16
69 _x86_64_Camellia_encrypt:
70         xorl    0(%r14),%r9d
71         xorl    4(%r14),%r8d
72         xorl    8(%r14),%r11d
73         xorl    12(%r14),%r10d
74 .align  16
75 .Leloop:
76         movl    16(%r14),%ebx
77         movl    20(%r14),%eax
78
79         xorl    %r8d,%eax
80         xorl    %r9d,%ebx
81         movzbl  %ah,%esi
82         movzbl  %bl,%edi
83         movl    2052(%rbp,%rsi,8),%edx
84         movl    0(%rbp,%rdi,8),%ecx
85         movzbl  %al,%esi
86         shrl    $16,%eax
87         movzbl  %bh,%edi
88         xorl    4(%rbp,%rsi,8),%edx
89         shrl    $16,%ebx
90         xorl    4(%rbp,%rdi,8),%ecx
91         movzbl  %ah,%esi
92         movzbl  %bl,%edi
93         xorl    0(%rbp,%rsi,8),%edx
94         xorl    2052(%rbp,%rdi,8),%ecx
95         movzbl  %al,%esi
96         movzbl  %bh,%edi
97         xorl    2048(%rbp,%rsi,8),%edx
98         xorl    2048(%rbp,%rdi,8),%ecx
99         movl    24(%r14),%ebx
100         movl    28(%r14),%eax
101         xorl    %edx,%ecx
102         rorl    $8,%edx
103         xorl    %ecx,%r10d
104         xorl    %ecx,%r11d
105         xorl    %edx,%r11d
106         xorl    %r10d,%eax
107         xorl    %r11d,%ebx
108         movzbl  %ah,%esi
109         movzbl  %bl,%edi
110         movl    2052(%rbp,%rsi,8),%edx
111         movl    0(%rbp,%rdi,8),%ecx
112         movzbl  %al,%esi
113         shrl    $16,%eax
114         movzbl  %bh,%edi
115         xorl    4(%rbp,%rsi,8),%edx
116         shrl    $16,%ebx
117         xorl    4(%rbp,%rdi,8),%ecx
118         movzbl  %ah,%esi
119         movzbl  %bl,%edi
120         xorl    0(%rbp,%rsi,8),%edx
121         xorl    2052(%rbp,%rdi,8),%ecx
122         movzbl  %al,%esi
123         movzbl  %bh,%edi
124         xorl    2048(%rbp,%rsi,8),%edx
125         xorl    2048(%rbp,%rdi,8),%ecx
126         movl    32(%r14),%ebx
127         movl    36(%r14),%eax
128         xorl    %edx,%ecx
129         rorl    $8,%edx
130         xorl    %ecx,%r8d
131         xorl    %ecx,%r9d
132         xorl    %edx,%r9d
133         xorl    %r8d,%eax
134         xorl    %r9d,%ebx
135         movzbl  %ah,%esi
136         movzbl  %bl,%edi
137         movl    2052(%rbp,%rsi,8),%edx
138         movl    0(%rbp,%rdi,8),%ecx
139         movzbl  %al,%esi
140         shrl    $16,%eax
141         movzbl  %bh,%edi
142         xorl    4(%rbp,%rsi,8),%edx
143         shrl    $16,%ebx
144         xorl    4(%rbp,%rdi,8),%ecx
145         movzbl  %ah,%esi
146         movzbl  %bl,%edi
147         xorl    0(%rbp,%rsi,8),%edx
148         xorl    2052(%rbp,%rdi,8),%ecx
149         movzbl  %al,%esi
150         movzbl  %bh,%edi
151         xorl    2048(%rbp,%rsi,8),%edx
152         xorl    2048(%rbp,%rdi,8),%ecx
153         movl    40(%r14),%ebx
154         movl    44(%r14),%eax
155         xorl    %edx,%ecx
156         rorl    $8,%edx
157         xorl    %ecx,%r10d
158         xorl    %ecx,%r11d
159         xorl    %edx,%r11d
160         xorl    %r10d,%eax
161         xorl    %r11d,%ebx
162         movzbl  %ah,%esi
163         movzbl  %bl,%edi
164         movl    2052(%rbp,%rsi,8),%edx
165         movl    0(%rbp,%rdi,8),%ecx
166         movzbl  %al,%esi
167         shrl    $16,%eax
168         movzbl  %bh,%edi
169         xorl    4(%rbp,%rsi,8),%edx
170         shrl    $16,%ebx
171         xorl    4(%rbp,%rdi,8),%ecx
172         movzbl  %ah,%esi
173         movzbl  %bl,%edi
174         xorl    0(%rbp,%rsi,8),%edx
175         xorl    2052(%rbp,%rdi,8),%ecx
176         movzbl  %al,%esi
177         movzbl  %bh,%edi
178         xorl    2048(%rbp,%rsi,8),%edx
179         xorl    2048(%rbp,%rdi,8),%ecx
180         movl    48(%r14),%ebx
181         movl    52(%r14),%eax
182         xorl    %edx,%ecx
183         rorl    $8,%edx
184         xorl    %ecx,%r8d
185         xorl    %ecx,%r9d
186         xorl    %edx,%r9d
187         xorl    %r8d,%eax
188         xorl    %r9d,%ebx
189         movzbl  %ah,%esi
190         movzbl  %bl,%edi
191         movl    2052(%rbp,%rsi,8),%edx
192         movl    0(%rbp,%rdi,8),%ecx
193         movzbl  %al,%esi
194         shrl    $16,%eax
195         movzbl  %bh,%edi
196         xorl    4(%rbp,%rsi,8),%edx
197         shrl    $16,%ebx
198         xorl    4(%rbp,%rdi,8),%ecx
199         movzbl  %ah,%esi
200         movzbl  %bl,%edi
201         xorl    0(%rbp,%rsi,8),%edx
202         xorl    2052(%rbp,%rdi,8),%ecx
203         movzbl  %al,%esi
204         movzbl  %bh,%edi
205         xorl    2048(%rbp,%rsi,8),%edx
206         xorl    2048(%rbp,%rdi,8),%ecx
207         movl    56(%r14),%ebx
208         movl    60(%r14),%eax
209         xorl    %edx,%ecx
210         rorl    $8,%edx
211         xorl    %ecx,%r10d
212         xorl    %ecx,%r11d
213         xorl    %edx,%r11d
214         xorl    %r10d,%eax
215         xorl    %r11d,%ebx
216         movzbl  %ah,%esi
217         movzbl  %bl,%edi
218         movl    2052(%rbp,%rsi,8),%edx
219         movl    0(%rbp,%rdi,8),%ecx
220         movzbl  %al,%esi
221         shrl    $16,%eax
222         movzbl  %bh,%edi
223         xorl    4(%rbp,%rsi,8),%edx
224         shrl    $16,%ebx
225         xorl    4(%rbp,%rdi,8),%ecx
226         movzbl  %ah,%esi
227         movzbl  %bl,%edi
228         xorl    0(%rbp,%rsi,8),%edx
229         xorl    2052(%rbp,%rdi,8),%ecx
230         movzbl  %al,%esi
231         movzbl  %bh,%edi
232         xorl    2048(%rbp,%rsi,8),%edx
233         xorl    2048(%rbp,%rdi,8),%ecx
234         movl    64(%r14),%ebx
235         movl    68(%r14),%eax
236         xorl    %edx,%ecx
237         rorl    $8,%edx
238         xorl    %ecx,%r8d
239         xorl    %ecx,%r9d
240         xorl    %edx,%r9d
241         leaq    64(%r14),%r14
242         cmpq    %r15,%r14
243         movl    8(%r14),%edx
244         movl    12(%r14),%ecx
245         je      .Ledone
246
247         andl    %r8d,%eax
248         orl     %r11d,%edx
249         roll    $1,%eax
250         xorl    %edx,%r10d
251         xorl    %eax,%r9d
252         andl    %r10d,%ecx
253         orl     %r9d,%ebx
254         roll    $1,%ecx
255         xorl    %ebx,%r8d
256         xorl    %ecx,%r11d
257         jmp     .Leloop
258
259 .align  16
260 .Ledone:
261         xorl    %r10d,%eax
262         xorl    %r11d,%ebx
263         xorl    %r8d,%ecx
264         xorl    %r9d,%edx
265
266         movl    %eax,%r8d
267         movl    %ebx,%r9d
268         movl    %ecx,%r10d
269         movl    %edx,%r11d
270
271 .byte   0xf3,0xc3               
272 .size   _x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt
273
274
275 .globl  Camellia_DecryptBlock
276 .type   Camellia_DecryptBlock,@function
277 .align  16
278 Camellia_DecryptBlock:
279         movl    $128,%eax
280         subl    %edi,%eax
281         movl    $3,%edi
282         adcl    $0,%edi
283         jmp     .Ldec_rounds
284 .size   Camellia_DecryptBlock,.-Camellia_DecryptBlock
285
286 .globl  Camellia_DecryptBlock_Rounds
287 .type   Camellia_DecryptBlock_Rounds,@function
288 .align  16
289 .Ldec_rounds:
290 Camellia_DecryptBlock_Rounds:
291         pushq   %rbx
292         pushq   %rbp
293         pushq   %r13
294         pushq   %r14
295         pushq   %r15
296 .Ldec_prologue:
297
298
299         movq    %rcx,%r13
300         movq    %rdx,%r15
301
302         shll    $6,%edi
303         leaq    .LCamellia_SBOX(%rip),%rbp
304         leaq    (%r15,%rdi,1),%r14
305
306         movl    0(%rsi),%r8d
307         movl    4(%rsi),%r9d
308         movl    8(%rsi),%r10d
309         bswapl  %r8d
310         movl    12(%rsi),%r11d
311         bswapl  %r9d
312         bswapl  %r10d
313         bswapl  %r11d
314
315         call    _x86_64_Camellia_decrypt
316
317         bswapl  %r8d
318         bswapl  %r9d
319         bswapl  %r10d
320         movl    %r8d,0(%r13)
321         bswapl  %r11d
322         movl    %r9d,4(%r13)
323         movl    %r10d,8(%r13)
324         movl    %r11d,12(%r13)
325
326         movq    0(%rsp),%r15
327         movq    8(%rsp),%r14
328         movq    16(%rsp),%r13
329         movq    24(%rsp),%rbp
330         movq    32(%rsp),%rbx
331         leaq    40(%rsp),%rsp
332 .Ldec_epilogue:
333         .byte   0xf3,0xc3
334 .size   Camellia_DecryptBlock_Rounds,.-Camellia_DecryptBlock_Rounds
335
336 .type   _x86_64_Camellia_decrypt,@function
337 .align  16
338 _x86_64_Camellia_decrypt:
339         xorl    0(%r14),%r9d
340         xorl    4(%r14),%r8d
341         xorl    8(%r14),%r11d
342         xorl    12(%r14),%r10d
343 .align  16
344 .Ldloop:
345         movl    -8(%r14),%ebx
346         movl    -4(%r14),%eax
347
348         xorl    %r8d,%eax
349         xorl    %r9d,%ebx
350         movzbl  %ah,%esi
351         movzbl  %bl,%edi
352         movl    2052(%rbp,%rsi,8),%edx
353         movl    0(%rbp,%rdi,8),%ecx
354         movzbl  %al,%esi
355         shrl    $16,%eax
356         movzbl  %bh,%edi
357         xorl    4(%rbp,%rsi,8),%edx
358         shrl    $16,%ebx
359         xorl    4(%rbp,%rdi,8),%ecx
360         movzbl  %ah,%esi
361         movzbl  %bl,%edi
362         xorl    0(%rbp,%rsi,8),%edx
363         xorl    2052(%rbp,%rdi,8),%ecx
364         movzbl  %al,%esi
365         movzbl  %bh,%edi
366         xorl    2048(%rbp,%rsi,8),%edx
367         xorl    2048(%rbp,%rdi,8),%ecx
368         movl    -16(%r14),%ebx
369         movl    -12(%r14),%eax
370         xorl    %edx,%ecx
371         rorl    $8,%edx
372         xorl    %ecx,%r10d
373         xorl    %ecx,%r11d
374         xorl    %edx,%r11d
375         xorl    %r10d,%eax
376         xorl    %r11d,%ebx
377         movzbl  %ah,%esi
378         movzbl  %bl,%edi
379         movl    2052(%rbp,%rsi,8),%edx
380         movl    0(%rbp,%rdi,8),%ecx
381         movzbl  %al,%esi
382         shrl    $16,%eax
383         movzbl  %bh,%edi
384         xorl    4(%rbp,%rsi,8),%edx
385         shrl    $16,%ebx
386         xorl    4(%rbp,%rdi,8),%ecx
387         movzbl  %ah,%esi
388         movzbl  %bl,%edi
389         xorl    0(%rbp,%rsi,8),%edx
390         xorl    2052(%rbp,%rdi,8),%ecx
391         movzbl  %al,%esi
392         movzbl  %bh,%edi
393         xorl    2048(%rbp,%rsi,8),%edx
394         xorl    2048(%rbp,%rdi,8),%ecx
395         movl    -24(%r14),%ebx
396         movl    -20(%r14),%eax
397         xorl    %edx,%ecx
398         rorl    $8,%edx
399         xorl    %ecx,%r8d
400         xorl    %ecx,%r9d
401         xorl    %edx,%r9d
402         xorl    %r8d,%eax
403         xorl    %r9d,%ebx
404         movzbl  %ah,%esi
405         movzbl  %bl,%edi
406         movl    2052(%rbp,%rsi,8),%edx
407         movl    0(%rbp,%rdi,8),%ecx
408         movzbl  %al,%esi
409         shrl    $16,%eax
410         movzbl  %bh,%edi
411         xorl    4(%rbp,%rsi,8),%edx
412         shrl    $16,%ebx
413         xorl    4(%rbp,%rdi,8),%ecx
414         movzbl  %ah,%esi
415         movzbl  %bl,%edi
416         xorl    0(%rbp,%rsi,8),%edx
417         xorl    2052(%rbp,%rdi,8),%ecx
418         movzbl  %al,%esi
419         movzbl  %bh,%edi
420         xorl    2048(%rbp,%rsi,8),%edx
421         xorl    2048(%rbp,%rdi,8),%ecx
422         movl    -32(%r14),%ebx
423         movl    -28(%r14),%eax
424         xorl    %edx,%ecx
425         rorl    $8,%edx
426         xorl    %ecx,%r10d
427         xorl    %ecx,%r11d
428         xorl    %edx,%r11d
429         xorl    %r10d,%eax
430         xorl    %r11d,%ebx
431         movzbl  %ah,%esi
432         movzbl  %bl,%edi
433         movl    2052(%rbp,%rsi,8),%edx
434         movl    0(%rbp,%rdi,8),%ecx
435         movzbl  %al,%esi
436         shrl    $16,%eax
437         movzbl  %bh,%edi
438         xorl    4(%rbp,%rsi,8),%edx
439         shrl    $16,%ebx
440         xorl    4(%rbp,%rdi,8),%ecx
441         movzbl  %ah,%esi
442         movzbl  %bl,%edi
443         xorl    0(%rbp,%rsi,8),%edx
444         xorl    2052(%rbp,%rdi,8),%ecx
445         movzbl  %al,%esi
446         movzbl  %bh,%edi
447         xorl    2048(%rbp,%rsi,8),%edx
448         xorl    2048(%rbp,%rdi,8),%ecx
449         movl    -40(%r14),%ebx
450         movl    -36(%r14),%eax
451         xorl    %edx,%ecx
452         rorl    $8,%edx
453         xorl    %ecx,%r8d
454         xorl    %ecx,%r9d
455         xorl    %edx,%r9d
456         xorl    %r8d,%eax
457         xorl    %r9d,%ebx
458         movzbl  %ah,%esi
459         movzbl  %bl,%edi
460         movl    2052(%rbp,%rsi,8),%edx
461         movl    0(%rbp,%rdi,8),%ecx
462         movzbl  %al,%esi
463         shrl    $16,%eax
464         movzbl  %bh,%edi
465         xorl    4(%rbp,%rsi,8),%edx
466         shrl    $16,%ebx
467         xorl    4(%rbp,%rdi,8),%ecx
468         movzbl  %ah,%esi
469         movzbl  %bl,%edi
470         xorl    0(%rbp,%rsi,8),%edx
471         xorl    2052(%rbp,%rdi,8),%ecx
472         movzbl  %al,%esi
473         movzbl  %bh,%edi
474         xorl    2048(%rbp,%rsi,8),%edx
475         xorl    2048(%rbp,%rdi,8),%ecx
476         movl    -48(%r14),%ebx
477         movl    -44(%r14),%eax
478         xorl    %edx,%ecx
479         rorl    $8,%edx
480         xorl    %ecx,%r10d
481         xorl    %ecx,%r11d
482         xorl    %edx,%r11d
483         xorl    %r10d,%eax
484         xorl    %r11d,%ebx
485         movzbl  %ah,%esi
486         movzbl  %bl,%edi
487         movl    2052(%rbp,%rsi,8),%edx
488         movl    0(%rbp,%rdi,8),%ecx
489         movzbl  %al,%esi
490         shrl    $16,%eax
491         movzbl  %bh,%edi
492         xorl    4(%rbp,%rsi,8),%edx
493         shrl    $16,%ebx
494         xorl    4(%rbp,%rdi,8),%ecx
495         movzbl  %ah,%esi
496         movzbl  %bl,%edi
497         xorl    0(%rbp,%rsi,8),%edx
498         xorl    2052(%rbp,%rdi,8),%ecx
499         movzbl  %al,%esi
500         movzbl  %bh,%edi
501         xorl    2048(%rbp,%rsi,8),%edx
502         xorl    2048(%rbp,%rdi,8),%ecx
503         movl    -56(%r14),%ebx
504         movl    -52(%r14),%eax
505         xorl    %edx,%ecx
506         rorl    $8,%edx
507         xorl    %ecx,%r8d
508         xorl    %ecx,%r9d
509         xorl    %edx,%r9d
510         leaq    -64(%r14),%r14
511         cmpq    %r15,%r14
512         movl    0(%r14),%edx
513         movl    4(%r14),%ecx
514         je      .Lddone
515
516         andl    %r8d,%eax
517         orl     %r11d,%edx
518         roll    $1,%eax
519         xorl    %edx,%r10d
520         xorl    %eax,%r9d
521         andl    %r10d,%ecx
522         orl     %r9d,%ebx
523         roll    $1,%ecx
524         xorl    %ebx,%r8d
525         xorl    %ecx,%r11d
526
527         jmp     .Ldloop
528
529 .align  16
530 .Lddone:
531         xorl    %r10d,%ecx
532         xorl    %r11d,%edx
533         xorl    %r8d,%eax
534         xorl    %r9d,%ebx
535
536         movl    %ecx,%r8d
537         movl    %edx,%r9d
538         movl    %eax,%r10d
539         movl    %ebx,%r11d
540
541 .byte   0xf3,0xc3               
542 .size   _x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt
543 .globl  Camellia_Ekeygen
544 .type   Camellia_Ekeygen,@function
545 .align  16
546 Camellia_Ekeygen:
547         pushq   %rbx
548         pushq   %rbp
549         pushq   %r13
550         pushq   %r14
551         pushq   %r15
552 .Lkey_prologue:
553
554         movq    %rdi,%r15
555         movq    %rdx,%r13
556
557         movl    0(%rsi),%r8d
558         movl    4(%rsi),%r9d
559         movl    8(%rsi),%r10d
560         movl    12(%rsi),%r11d
561
562         bswapl  %r8d
563         bswapl  %r9d
564         bswapl  %r10d
565         bswapl  %r11d
566         movl    %r9d,0(%r13)
567         movl    %r8d,4(%r13)
568         movl    %r11d,8(%r13)
569         movl    %r10d,12(%r13)
570         cmpq    $128,%r15
571         je      .L1st128
572
573         movl    16(%rsi),%r8d
574         movl    20(%rsi),%r9d
575         cmpq    $192,%r15
576         je      .L1st192
577         movl    24(%rsi),%r10d
578         movl    28(%rsi),%r11d
579         jmp     .L1st256
580 .L1st192:
581         movl    %r8d,%r10d
582         movl    %r9d,%r11d
583         notl    %r10d
584         notl    %r11d
585 .L1st256:
586         bswapl  %r8d
587         bswapl  %r9d
588         bswapl  %r10d
589         bswapl  %r11d
590         movl    %r9d,32(%r13)
591         movl    %r8d,36(%r13)
592         movl    %r11d,40(%r13)
593         movl    %r10d,44(%r13)
594         xorl    0(%r13),%r9d
595         xorl    4(%r13),%r8d
596         xorl    8(%r13),%r11d
597         xorl    12(%r13),%r10d
598
599 .L1st128:
600         leaq    .LCamellia_SIGMA(%rip),%r14
601         leaq    .LCamellia_SBOX(%rip),%rbp
602
603         movl    0(%r14),%ebx
604         movl    4(%r14),%eax
605         xorl    %r8d,%eax
606         xorl    %r9d,%ebx
607         movzbl  %ah,%esi
608         movzbl  %bl,%edi
609         movl    2052(%rbp,%rsi,8),%edx
610         movl    0(%rbp,%rdi,8),%ecx
611         movzbl  %al,%esi
612         shrl    $16,%eax
613         movzbl  %bh,%edi
614         xorl    4(%rbp,%rsi,8),%edx
615         shrl    $16,%ebx
616         xorl    4(%rbp,%rdi,8),%ecx
617         movzbl  %ah,%esi
618         movzbl  %bl,%edi
619         xorl    0(%rbp,%rsi,8),%edx
620         xorl    2052(%rbp,%rdi,8),%ecx
621         movzbl  %al,%esi
622         movzbl  %bh,%edi
623         xorl    2048(%rbp,%rsi,8),%edx
624         xorl    2048(%rbp,%rdi,8),%ecx
625         movl    8(%r14),%ebx
626         movl    12(%r14),%eax
627         xorl    %edx,%ecx
628         rorl    $8,%edx
629         xorl    %ecx,%r10d
630         xorl    %ecx,%r11d
631         xorl    %edx,%r11d
632         xorl    %r10d,%eax
633         xorl    %r11d,%ebx
634         movzbl  %ah,%esi
635         movzbl  %bl,%edi
636         movl    2052(%rbp,%rsi,8),%edx
637         movl    0(%rbp,%rdi,8),%ecx
638         movzbl  %al,%esi
639         shrl    $16,%eax
640         movzbl  %bh,%edi
641         xorl    4(%rbp,%rsi,8),%edx
642         shrl    $16,%ebx
643         xorl    4(%rbp,%rdi,8),%ecx
644         movzbl  %ah,%esi
645         movzbl  %bl,%edi
646         xorl    0(%rbp,%rsi,8),%edx
647         xorl    2052(%rbp,%rdi,8),%ecx
648         movzbl  %al,%esi
649         movzbl  %bh,%edi
650         xorl    2048(%rbp,%rsi,8),%edx
651         xorl    2048(%rbp,%rdi,8),%ecx
652         movl    16(%r14),%ebx
653         movl    20(%r14),%eax
654         xorl    %edx,%ecx
655         rorl    $8,%edx
656         xorl    %ecx,%r8d
657         xorl    %ecx,%r9d
658         xorl    %edx,%r9d
659         xorl    0(%r13),%r9d
660         xorl    4(%r13),%r8d
661         xorl    8(%r13),%r11d
662         xorl    12(%r13),%r10d
663         xorl    %r8d,%eax
664         xorl    %r9d,%ebx
665         movzbl  %ah,%esi
666         movzbl  %bl,%edi
667         movl    2052(%rbp,%rsi,8),%edx
668         movl    0(%rbp,%rdi,8),%ecx
669         movzbl  %al,%esi
670         shrl    $16,%eax
671         movzbl  %bh,%edi
672         xorl    4(%rbp,%rsi,8),%edx
673         shrl    $16,%ebx
674         xorl    4(%rbp,%rdi,8),%ecx
675         movzbl  %ah,%esi
676         movzbl  %bl,%edi
677         xorl    0(%rbp,%rsi,8),%edx
678         xorl    2052(%rbp,%rdi,8),%ecx
679         movzbl  %al,%esi
680         movzbl  %bh,%edi
681         xorl    2048(%rbp,%rsi,8),%edx
682         xorl    2048(%rbp,%rdi,8),%ecx
683         movl    24(%r14),%ebx
684         movl    28(%r14),%eax
685         xorl    %edx,%ecx
686         rorl    $8,%edx
687         xorl    %ecx,%r10d
688         xorl    %ecx,%r11d
689         xorl    %edx,%r11d
690         xorl    %r10d,%eax
691         xorl    %r11d,%ebx
692         movzbl  %ah,%esi
693         movzbl  %bl,%edi
694         movl    2052(%rbp,%rsi,8),%edx
695         movl    0(%rbp,%rdi,8),%ecx
696         movzbl  %al,%esi
697         shrl    $16,%eax
698         movzbl  %bh,%edi
699         xorl    4(%rbp,%rsi,8),%edx
700         shrl    $16,%ebx
701         xorl    4(%rbp,%rdi,8),%ecx
702         movzbl  %ah,%esi
703         movzbl  %bl,%edi
704         xorl    0(%rbp,%rsi,8),%edx
705         xorl    2052(%rbp,%rdi,8),%ecx
706         movzbl  %al,%esi
707         movzbl  %bh,%edi
708         xorl    2048(%rbp,%rsi,8),%edx
709         xorl    2048(%rbp,%rdi,8),%ecx
710         movl    32(%r14),%ebx
711         movl    36(%r14),%eax
712         xorl    %edx,%ecx
713         rorl    $8,%edx
714         xorl    %ecx,%r8d
715         xorl    %ecx,%r9d
716         xorl    %edx,%r9d
717         cmpq    $128,%r15
718         jne     .L2nd256
719
720         leaq    128(%r13),%r13
721         shlq    $32,%r8
722         shlq    $32,%r10
723         orq     %r9,%r8
724         orq     %r11,%r10
725         movq    -128(%r13),%rax
726         movq    -120(%r13),%rbx
727         movq    %r8,-112(%r13)
728         movq    %r10,-104(%r13)
729         movq    %rax,%r11
730         shlq    $15,%rax
731         movq    %rbx,%r9
732         shrq    $49,%r9
733         shrq    $49,%r11
734         orq     %r9,%rax
735         shlq    $15,%rbx
736         orq     %r11,%rbx
737         movq    %rax,-96(%r13)
738         movq    %rbx,-88(%r13)
739         movq    %r8,%r11
740         shlq    $15,%r8
741         movq    %r10,%r9
742         shrq    $49,%r9
743         shrq    $49,%r11
744         orq     %r9,%r8
745         shlq    $15,%r10
746         orq     %r11,%r10
747         movq    %r8,-80(%r13)
748         movq    %r10,-72(%r13)
749         movq    %r8,%r11
750         shlq    $15,%r8
751         movq    %r10,%r9
752         shrq    $49,%r9
753         shrq    $49,%r11
754         orq     %r9,%r8
755         shlq    $15,%r10
756         orq     %r11,%r10
757         movq    %r8,-64(%r13)
758         movq    %r10,-56(%r13)
759         movq    %rax,%r11
760         shlq    $30,%rax
761         movq    %rbx,%r9
762         shrq    $34,%r9
763         shrq    $34,%r11
764         orq     %r9,%rax
765         shlq    $30,%rbx
766         orq     %r11,%rbx
767         movq    %rax,-48(%r13)
768         movq    %rbx,-40(%r13)
769         movq    %r8,%r11
770         shlq    $15,%r8
771         movq    %r10,%r9
772         shrq    $49,%r9
773         shrq    $49,%r11
774         orq     %r9,%r8
775         shlq    $15,%r10
776         orq     %r11,%r10
777         movq    %r8,-32(%r13)
778         movq    %rax,%r11
779         shlq    $15,%rax
780         movq    %rbx,%r9
781         shrq    $49,%r9
782         shrq    $49,%r11
783         orq     %r9,%rax
784         shlq    $15,%rbx
785         orq     %r11,%rbx
786         movq    %rbx,-24(%r13)
787         movq    %r8,%r11
788         shlq    $15,%r8
789         movq    %r10,%r9
790         shrq    $49,%r9
791         shrq    $49,%r11
792         orq     %r9,%r8
793         shlq    $15,%r10
794         orq     %r11,%r10
795         movq    %r8,-16(%r13)
796         movq    %r10,-8(%r13)
797         movq    %rax,%r11
798         shlq    $17,%rax
799         movq    %rbx,%r9
800         shrq    $47,%r9
801         shrq    $47,%r11
802         orq     %r9,%rax
803         shlq    $17,%rbx
804         orq     %r11,%rbx
805         movq    %rax,0(%r13)
806         movq    %rbx,8(%r13)
807         movq    %rax,%r11
808         shlq    $17,%rax
809         movq    %rbx,%r9
810         shrq    $47,%r9
811         shrq    $47,%r11
812         orq     %r9,%rax
813         shlq    $17,%rbx
814         orq     %r11,%rbx
815         movq    %rax,16(%r13)
816         movq    %rbx,24(%r13)
817         movq    %r8,%r11
818         shlq    $34,%r8
819         movq    %r10,%r9
820         shrq    $30,%r9
821         shrq    $30,%r11
822         orq     %r9,%r8
823         shlq    $34,%r10
824         orq     %r11,%r10
825         movq    %r8,32(%r13)
826         movq    %r10,40(%r13)
827         movq    %rax,%r11
828         shlq    $17,%rax
829         movq    %rbx,%r9
830         shrq    $47,%r9
831         shrq    $47,%r11
832         orq     %r9,%rax
833         shlq    $17,%rbx
834         orq     %r11,%rbx
835         movq    %rax,48(%r13)
836         movq    %rbx,56(%r13)
837         movq    %r8,%r11
838         shlq    $17,%r8
839         movq    %r10,%r9
840         shrq    $47,%r9
841         shrq    $47,%r11
842         orq     %r9,%r8
843         shlq    $17,%r10
844         orq     %r11,%r10
845         movq    %r8,64(%r13)
846         movq    %r10,72(%r13)
847         movl    $3,%eax
848         jmp     .Ldone
849 .align  16
850 .L2nd256:
851         movl    %r9d,48(%r13)
852         movl    %r8d,52(%r13)
853         movl    %r11d,56(%r13)
854         movl    %r10d,60(%r13)
855         xorl    32(%r13),%r9d
856         xorl    36(%r13),%r8d
857         xorl    40(%r13),%r11d
858         xorl    44(%r13),%r10d
859         xorl    %r8d,%eax
860         xorl    %r9d,%ebx
861         movzbl  %ah,%esi
862         movzbl  %bl,%edi
863         movl    2052(%rbp,%rsi,8),%edx
864         movl    0(%rbp,%rdi,8),%ecx
865         movzbl  %al,%esi
866         shrl    $16,%eax
867         movzbl  %bh,%edi
868         xorl    4(%rbp,%rsi,8),%edx
869         shrl    $16,%ebx
870         xorl    4(%rbp,%rdi,8),%ecx
871         movzbl  %ah,%esi
872         movzbl  %bl,%edi
873         xorl    0(%rbp,%rsi,8),%edx
874         xorl    2052(%rbp,%rdi,8),%ecx
875         movzbl  %al,%esi
876         movzbl  %bh,%edi
877         xorl    2048(%rbp,%rsi,8),%edx
878         xorl    2048(%rbp,%rdi,8),%ecx
879         movl    40(%r14),%ebx
880         movl    44(%r14),%eax
881         xorl    %edx,%ecx
882         rorl    $8,%edx
883         xorl    %ecx,%r10d
884         xorl    %ecx,%r11d
885         xorl    %edx,%r11d
886         xorl    %r10d,%eax
887         xorl    %r11d,%ebx
888         movzbl  %ah,%esi
889         movzbl  %bl,%edi
890         movl    2052(%rbp,%rsi,8),%edx
891         movl    0(%rbp,%rdi,8),%ecx
892         movzbl  %al,%esi
893         shrl    $16,%eax
894         movzbl  %bh,%edi
895         xorl    4(%rbp,%rsi,8),%edx
896         shrl    $16,%ebx
897         xorl    4(%rbp,%rdi,8),%ecx
898         movzbl  %ah,%esi
899         movzbl  %bl,%edi
900         xorl    0(%rbp,%rsi,8),%edx
901         xorl    2052(%rbp,%rdi,8),%ecx
902         movzbl  %al,%esi
903         movzbl  %bh,%edi
904         xorl    2048(%rbp,%rsi,8),%edx
905         xorl    2048(%rbp,%rdi,8),%ecx
906         movl    48(%r14),%ebx
907         movl    52(%r14),%eax
908         xorl    %edx,%ecx
909         rorl    $8,%edx
910         xorl    %ecx,%r8d
911         xorl    %ecx,%r9d
912         xorl    %edx,%r9d
913         movq    0(%r13),%rax
914         movq    8(%r13),%rbx
915         movq    32(%r13),%rcx
916         movq    40(%r13),%rdx
917         movq    48(%r13),%r14
918         movq    56(%r13),%r15
919         leaq    128(%r13),%r13
920         shlq    $32,%r8
921         shlq    $32,%r10
922         orq     %r9,%r8
923         orq     %r11,%r10
924         movq    %r8,-112(%r13)
925         movq    %r10,-104(%r13)
926         movq    %rcx,%r11
927         shlq    $15,%rcx
928         movq    %rdx,%r9
929         shrq    $49,%r9
930         shrq    $49,%r11
931         orq     %r9,%rcx
932         shlq    $15,%rdx
933         orq     %r11,%rdx
934         movq    %rcx,-96(%r13)
935         movq    %rdx,-88(%r13)
936         movq    %r14,%r11
937         shlq    $15,%r14
938         movq    %r15,%r9
939         shrq    $49,%r9
940         shrq    $49,%r11
941         orq     %r9,%r14
942         shlq    $15,%r15
943         orq     %r11,%r15
944         movq    %r14,-80(%r13)
945         movq    %r15,-72(%r13)
946         movq    %rcx,%r11
947         shlq    $15,%rcx
948         movq    %rdx,%r9
949         shrq    $49,%r9
950         shrq    $49,%r11
951         orq     %r9,%rcx
952         shlq    $15,%rdx
953         orq     %r11,%rdx
954         movq    %rcx,-64(%r13)
955         movq    %rdx,-56(%r13)
956         movq    %r8,%r11
957         shlq    $30,%r8
958         movq    %r10,%r9
959         shrq    $34,%r9
960         shrq    $34,%r11
961         orq     %r9,%r8
962         shlq    $30,%r10
963         orq     %r11,%r10
964         movq    %r8,-48(%r13)
965         movq    %r10,-40(%r13)
966         movq    %rax,%r11
967         shlq    $45,%rax
968         movq    %rbx,%r9
969         shrq    $19,%r9
970         shrq    $19,%r11
971         orq     %r9,%rax
972         shlq    $45,%rbx
973         orq     %r11,%rbx
974         movq    %rax,-32(%r13)
975         movq    %rbx,-24(%r13)
976         movq    %r14,%r11
977         shlq    $30,%r14
978         movq    %r15,%r9
979         shrq    $34,%r9
980         shrq    $34,%r11
981         orq     %r9,%r14
982         shlq    $30,%r15
983         orq     %r11,%r15
984         movq    %r14,-16(%r13)
985         movq    %r15,-8(%r13)
986         movq    %rax,%r11
987         shlq    $15,%rax
988         movq    %rbx,%r9
989         shrq    $49,%r9
990         shrq    $49,%r11
991         orq     %r9,%rax
992         shlq    $15,%rbx
993         orq     %r11,%rbx
994         movq    %rax,0(%r13)
995         movq    %rbx,8(%r13)
996         movq    %rcx,%r11
997         shlq    $30,%rcx
998         movq    %rdx,%r9
999         shrq    $34,%r9
1000         shrq    $34,%r11
1001         orq     %r9,%rcx
1002         shlq    $30,%rdx
1003         orq     %r11,%rdx
1004         movq    %rcx,16(%r13)
1005         movq    %rdx,24(%r13)
1006         movq    %r8,%r11
1007         shlq    $30,%r8
1008         movq    %r10,%r9
1009         shrq    $34,%r9
1010         shrq    $34,%r11
1011         orq     %r9,%r8
1012         shlq    $30,%r10
1013         orq     %r11,%r10
1014         movq    %r8,32(%r13)
1015         movq    %r10,40(%r13)
1016         movq    %rax,%r11
1017         shlq    $17,%rax
1018         movq    %rbx,%r9
1019         shrq    $47,%r9
1020         shrq    $47,%r11
1021         orq     %r9,%rax
1022         shlq    $17,%rbx
1023         orq     %r11,%rbx
1024         movq    %rax,48(%r13)
1025         movq    %rbx,56(%r13)
1026         movq    %r14,%r11
1027         shlq    $32,%r14
1028         movq    %r15,%r9
1029         shrq    $32,%r9
1030         shrq    $32,%r11
1031         orq     %r9,%r14
1032         shlq    $32,%r15
1033         orq     %r11,%r15
1034         movq    %r14,64(%r13)
1035         movq    %r15,72(%r13)
1036         movq    %rcx,%r11
1037         shlq    $34,%rcx
1038         movq    %rdx,%r9
1039         shrq    $30,%r9
1040         shrq    $30,%r11
1041         orq     %r9,%rcx
1042         shlq    $34,%rdx
1043         orq     %r11,%rdx
1044         movq    %rcx,80(%r13)
1045         movq    %rdx,88(%r13)
1046         movq    %r14,%r11
1047         shlq    $17,%r14
1048         movq    %r15,%r9
1049         shrq    $47,%r9
1050         shrq    $47,%r11
1051         orq     %r9,%r14
1052         shlq    $17,%r15
1053         orq     %r11,%r15
1054         movq    %r14,96(%r13)
1055         movq    %r15,104(%r13)
1056         movq    %rax,%r11
1057         shlq    $34,%rax
1058         movq    %rbx,%r9
1059         shrq    $30,%r9
1060         shrq    $30,%r11
1061         orq     %r9,%rax
1062         shlq    $34,%rbx
1063         orq     %r11,%rbx
1064         movq    %rax,112(%r13)
1065         movq    %rbx,120(%r13)
1066         movq    %r8,%r11
1067         shlq    $51,%r8
1068         movq    %r10,%r9
1069         shrq    $13,%r9
1070         shrq    $13,%r11
1071         orq     %r9,%r8
1072         shlq    $51,%r10
1073         orq     %r11,%r10
1074         movq    %r8,128(%r13)
1075         movq    %r10,136(%r13)
1076         movl    $4,%eax
1077 .Ldone:
1078         movq    0(%rsp),%r15
1079         movq    8(%rsp),%r14
1080         movq    16(%rsp),%r13
1081         movq    24(%rsp),%rbp
1082         movq    32(%rsp),%rbx
1083         leaq    40(%rsp),%rsp
1084 .Lkey_epilogue:
1085         .byte   0xf3,0xc3
1086 .size   Camellia_Ekeygen,.-Camellia_Ekeygen
1087 .align  64
1088 .LCamellia_SIGMA:
1089 .long   0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858
1090 .long   0xe94f82be, 0xc6ef372f, 0xf1d36f1c, 0x54ff53a5
1091 .long   0xde682d1d, 0x10e527fa, 0xb3e6c1fd, 0xb05688c2
1092 .long   0,          0,          0,          0
1093 .LCamellia_SBOX:
1094 .long   0x70707000,0x70700070
1095 .long   0x82828200,0x2c2c002c
1096 .long   0x2c2c2c00,0xb3b300b3
1097 .long   0xececec00,0xc0c000c0
1098 .long   0xb3b3b300,0xe4e400e4
1099 .long   0x27272700,0x57570057
1100 .long   0xc0c0c000,0xeaea00ea
1101 .long   0xe5e5e500,0xaeae00ae
1102 .long   0xe4e4e400,0x23230023
1103 .long   0x85858500,0x6b6b006b
1104 .long   0x57575700,0x45450045
1105 .long   0x35353500,0xa5a500a5
1106 .long   0xeaeaea00,0xeded00ed
1107 .long   0x0c0c0c00,0x4f4f004f
1108 .long   0xaeaeae00,0x1d1d001d
1109 .long   0x41414100,0x92920092
1110 .long   0x23232300,0x86860086
1111 .long   0xefefef00,0xafaf00af
1112 .long   0x6b6b6b00,0x7c7c007c
1113 .long   0x93939300,0x1f1f001f
1114 .long   0x45454500,0x3e3e003e
1115 .long   0x19191900,0xdcdc00dc
1116 .long   0xa5a5a500,0x5e5e005e
1117 .long   0x21212100,0x0b0b000b
1118 .long   0xededed00,0xa6a600a6
1119 .long   0x0e0e0e00,0x39390039
1120 .long   0x4f4f4f00,0xd5d500d5
1121 .long   0x4e4e4e00,0x5d5d005d
1122 .long   0x1d1d1d00,0xd9d900d9
1123 .long   0x65656500,0x5a5a005a
1124 .long   0x92929200,0x51510051
1125 .long   0xbdbdbd00,0x6c6c006c
1126 .long   0x86868600,0x8b8b008b
1127 .long   0xb8b8b800,0x9a9a009a
1128 .long   0xafafaf00,0xfbfb00fb
1129 .long   0x8f8f8f00,0xb0b000b0
1130 .long   0x7c7c7c00,0x74740074
1131 .long   0xebebeb00,0x2b2b002b
1132 .long   0x1f1f1f00,0xf0f000f0
1133 .long   0xcecece00,0x84840084
1134 .long   0x3e3e3e00,0xdfdf00df
1135 .long   0x30303000,0xcbcb00cb
1136 .long   0xdcdcdc00,0x34340034
1137 .long   0x5f5f5f00,0x76760076
1138 .long   0x5e5e5e00,0x6d6d006d
1139 .long   0xc5c5c500,0xa9a900a9
1140 .long   0x0b0b0b00,0xd1d100d1
1141 .long   0x1a1a1a00,0x04040004
1142 .long   0xa6a6a600,0x14140014
1143 .long   0xe1e1e100,0x3a3a003a
1144 .long   0x39393900,0xdede00de
1145 .long   0xcacaca00,0x11110011
1146 .long   0xd5d5d500,0x32320032
1147 .long   0x47474700,0x9c9c009c
1148 .long   0x5d5d5d00,0x53530053
1149 .long   0x3d3d3d00,0xf2f200f2
1150 .long   0xd9d9d900,0xfefe00fe
1151 .long   0x01010100,0xcfcf00cf
1152 .long   0x5a5a5a00,0xc3c300c3
1153 .long   0xd6d6d600,0x7a7a007a
1154 .long   0x51515100,0x24240024
1155 .long   0x56565600,0xe8e800e8
1156 .long   0x6c6c6c00,0x60600060
1157 .long   0x4d4d4d00,0x69690069
1158 .long   0x8b8b8b00,0xaaaa00aa
1159 .long   0x0d0d0d00,0xa0a000a0
1160 .long   0x9a9a9a00,0xa1a100a1
1161 .long   0x66666600,0x62620062
1162 .long   0xfbfbfb00,0x54540054
1163 .long   0xcccccc00,0x1e1e001e
1164 .long   0xb0b0b000,0xe0e000e0
1165 .long   0x2d2d2d00,0x64640064
1166 .long   0x74747400,0x10100010
1167 .long   0x12121200,0x00000000
1168 .long   0x2b2b2b00,0xa3a300a3
1169 .long   0x20202000,0x75750075
1170 .long   0xf0f0f000,0x8a8a008a
1171 .long   0xb1b1b100,0xe6e600e6
1172 .long   0x84848400,0x09090009
1173 .long   0x99999900,0xdddd00dd
1174 .long   0xdfdfdf00,0x87870087
1175 .long   0x4c4c4c00,0x83830083
1176 .long   0xcbcbcb00,0xcdcd00cd
1177 .long   0xc2c2c200,0x90900090
1178 .long   0x34343400,0x73730073
1179 .long   0x7e7e7e00,0xf6f600f6
1180 .long   0x76767600,0x9d9d009d
1181 .long   0x05050500,0xbfbf00bf
1182 .long   0x6d6d6d00,0x52520052
1183 .long   0xb7b7b700,0xd8d800d8
1184 .long   0xa9a9a900,0xc8c800c8
1185 .long   0x31313100,0xc6c600c6
1186 .long   0xd1d1d100,0x81810081
1187 .long   0x17171700,0x6f6f006f
1188 .long   0x04040400,0x13130013
1189 .long   0xd7d7d700,0x63630063
1190 .long   0x14141400,0xe9e900e9
1191 .long   0x58585800,0xa7a700a7
1192 .long   0x3a3a3a00,0x9f9f009f
1193 .long   0x61616100,0xbcbc00bc
1194 .long   0xdedede00,0x29290029
1195 .long   0x1b1b1b00,0xf9f900f9
1196 .long   0x11111100,0x2f2f002f
1197 .long   0x1c1c1c00,0xb4b400b4
1198 .long   0x32323200,0x78780078
1199 .long   0x0f0f0f00,0x06060006
1200 .long   0x9c9c9c00,0xe7e700e7
1201 .long   0x16161600,0x71710071
1202 .long   0x53535300,0xd4d400d4
1203 .long   0x18181800,0xabab00ab
1204 .long   0xf2f2f200,0x88880088
1205 .long   0x22222200,0x8d8d008d
1206 .long   0xfefefe00,0x72720072
1207 .long   0x44444400,0xb9b900b9
1208 .long   0xcfcfcf00,0xf8f800f8
1209 .long   0xb2b2b200,0xacac00ac
1210 .long   0xc3c3c300,0x36360036
1211 .long   0xb5b5b500,0x2a2a002a
1212 .long   0x7a7a7a00,0x3c3c003c
1213 .long   0x91919100,0xf1f100f1
1214 .long   0x24242400,0x40400040
1215 .long   0x08080800,0xd3d300d3
1216 .long   0xe8e8e800,0xbbbb00bb
1217 .long   0xa8a8a800,0x43430043
1218 .long   0x60606000,0x15150015
1219 .long   0xfcfcfc00,0xadad00ad
1220 .long   0x69696900,0x77770077
1221 .long   0x50505000,0x80800080
1222 .long   0xaaaaaa00,0x82820082
1223 .long   0xd0d0d000,0xecec00ec
1224 .long   0xa0a0a000,0x27270027
1225 .long   0x7d7d7d00,0xe5e500e5
1226 .long   0xa1a1a100,0x85850085
1227 .long   0x89898900,0x35350035
1228 .long   0x62626200,0x0c0c000c
1229 .long   0x97979700,0x41410041
1230 .long   0x54545400,0xefef00ef
1231 .long   0x5b5b5b00,0x93930093
1232 .long   0x1e1e1e00,0x19190019
1233 .long   0x95959500,0x21210021
1234 .long   0xe0e0e000,0x0e0e000e
1235 .long   0xffffff00,0x4e4e004e
1236 .long   0x64646400,0x65650065
1237 .long   0xd2d2d200,0xbdbd00bd
1238 .long   0x10101000,0xb8b800b8
1239 .long   0xc4c4c400,0x8f8f008f
1240 .long   0x00000000,0xebeb00eb
1241 .long   0x48484800,0xcece00ce
1242 .long   0xa3a3a300,0x30300030
1243 .long   0xf7f7f700,0x5f5f005f
1244 .long   0x75757500,0xc5c500c5
1245 .long   0xdbdbdb00,0x1a1a001a
1246 .long   0x8a8a8a00,0xe1e100e1
1247 .long   0x03030300,0xcaca00ca
1248 .long   0xe6e6e600,0x47470047
1249 .long   0xdadada00,0x3d3d003d
1250 .long   0x09090900,0x01010001
1251 .long   0x3f3f3f00,0xd6d600d6
1252 .long   0xdddddd00,0x56560056
1253 .long   0x94949400,0x4d4d004d
1254 .long   0x87878700,0x0d0d000d
1255 .long   0x5c5c5c00,0x66660066
1256 .long   0x83838300,0xcccc00cc
1257 .long   0x02020200,0x2d2d002d
1258 .long   0xcdcdcd00,0x12120012
1259 .long   0x4a4a4a00,0x20200020
1260 .long   0x90909000,0xb1b100b1
1261 .long   0x33333300,0x99990099
1262 .long   0x73737300,0x4c4c004c
1263 .long   0x67676700,0xc2c200c2
1264 .long   0xf6f6f600,0x7e7e007e
1265 .long   0xf3f3f300,0x05050005
1266 .long   0x9d9d9d00,0xb7b700b7
1267 .long   0x7f7f7f00,0x31310031
1268 .long   0xbfbfbf00,0x17170017
1269 .long   0xe2e2e200,0xd7d700d7
1270 .long   0x52525200,0x58580058
1271 .long   0x9b9b9b00,0x61610061
1272 .long   0xd8d8d800,0x1b1b001b
1273 .long   0x26262600,0x1c1c001c
1274 .long   0xc8c8c800,0x0f0f000f
1275 .long   0x37373700,0x16160016
1276 .long   0xc6c6c600,0x18180018
1277 .long   0x3b3b3b00,0x22220022
1278 .long   0x81818100,0x44440044
1279 .long   0x96969600,0xb2b200b2
1280 .long   0x6f6f6f00,0xb5b500b5
1281 .long   0x4b4b4b00,0x91910091
1282 .long   0x13131300,0x08080008
1283 .long   0xbebebe00,0xa8a800a8
1284 .long   0x63636300,0xfcfc00fc
1285 .long   0x2e2e2e00,0x50500050
1286 .long   0xe9e9e900,0xd0d000d0
1287 .long   0x79797900,0x7d7d007d
1288 .long   0xa7a7a700,0x89890089
1289 .long   0x8c8c8c00,0x97970097
1290 .long   0x9f9f9f00,0x5b5b005b
1291 .long   0x6e6e6e00,0x95950095
1292 .long   0xbcbcbc00,0xffff00ff
1293 .long   0x8e8e8e00,0xd2d200d2
1294 .long   0x29292900,0xc4c400c4
1295 .long   0xf5f5f500,0x48480048
1296 .long   0xf9f9f900,0xf7f700f7
1297 .long   0xb6b6b600,0xdbdb00db
1298 .long   0x2f2f2f00,0x03030003
1299 .long   0xfdfdfd00,0xdada00da
1300 .long   0xb4b4b400,0x3f3f003f
1301 .long   0x59595900,0x94940094
1302 .long   0x78787800,0x5c5c005c
1303 .long   0x98989800,0x02020002
1304 .long   0x06060600,0x4a4a004a
1305 .long   0x6a6a6a00,0x33330033
1306 .long   0xe7e7e700,0x67670067
1307 .long   0x46464600,0xf3f300f3
1308 .long   0x71717100,0x7f7f007f
1309 .long   0xbababa00,0xe2e200e2
1310 .long   0xd4d4d400,0x9b9b009b
1311 .long   0x25252500,0x26260026
1312 .long   0xababab00,0x37370037
1313 .long   0x42424200,0x3b3b003b
1314 .long   0x88888800,0x96960096
1315 .long   0xa2a2a200,0x4b4b004b
1316 .long   0x8d8d8d00,0xbebe00be
1317 .long   0xfafafa00,0x2e2e002e
1318 .long   0x72727200,0x79790079
1319 .long   0x07070700,0x8c8c008c
1320 .long   0xb9b9b900,0x6e6e006e
1321 .long   0x55555500,0x8e8e008e
1322 .long   0xf8f8f800,0xf5f500f5
1323 .long   0xeeeeee00,0xb6b600b6
1324 .long   0xacacac00,0xfdfd00fd
1325 .long   0x0a0a0a00,0x59590059
1326 .long   0x36363600,0x98980098
1327 .long   0x49494900,0x6a6a006a
1328 .long   0x2a2a2a00,0x46460046
1329 .long   0x68686800,0xbaba00ba
1330 .long   0x3c3c3c00,0x25250025
1331 .long   0x38383800,0x42420042
1332 .long   0xf1f1f100,0xa2a200a2
1333 .long   0xa4a4a400,0xfafa00fa
1334 .long   0x40404000,0x07070007
1335 .long   0x28282800,0x55550055
1336 .long   0xd3d3d300,0xeeee00ee
1337 .long   0x7b7b7b00,0x0a0a000a
1338 .long   0xbbbbbb00,0x49490049
1339 .long   0xc9c9c900,0x68680068
1340 .long   0x43434300,0x38380038
1341 .long   0xc1c1c100,0xa4a400a4
1342 .long   0x15151500,0x28280028
1343 .long   0xe3e3e300,0x7b7b007b
1344 .long   0xadadad00,0xc9c900c9
1345 .long   0xf4f4f400,0xc1c100c1
1346 .long   0x77777700,0xe3e300e3
1347 .long   0xc7c7c700,0xf4f400f4
1348 .long   0x80808000,0xc7c700c7
1349 .long   0x9e9e9e00,0x9e9e009e
1350 .long   0x00e0e0e0,0x38003838
1351 .long   0x00050505,0x41004141
1352 .long   0x00585858,0x16001616
1353 .long   0x00d9d9d9,0x76007676
1354 .long   0x00676767,0xd900d9d9
1355 .long   0x004e4e4e,0x93009393
1356 .long   0x00818181,0x60006060
1357 .long   0x00cbcbcb,0xf200f2f2
1358 .long   0x00c9c9c9,0x72007272
1359 .long   0x000b0b0b,0xc200c2c2
1360 .long   0x00aeaeae,0xab00abab
1361 .long   0x006a6a6a,0x9a009a9a
1362 .long   0x00d5d5d5,0x75007575
1363 .long   0x00181818,0x06000606
1364 .long   0x005d5d5d,0x57005757
1365 .long   0x00828282,0xa000a0a0
1366 .long   0x00464646,0x91009191
1367 .long   0x00dfdfdf,0xf700f7f7
1368 .long   0x00d6d6d6,0xb500b5b5
1369 .long   0x00272727,0xc900c9c9
1370 .long   0x008a8a8a,0xa200a2a2
1371 .long   0x00323232,0x8c008c8c
1372 .long   0x004b4b4b,0xd200d2d2
1373 .long   0x00424242,0x90009090
1374 .long   0x00dbdbdb,0xf600f6f6
1375 .long   0x001c1c1c,0x07000707
1376 .long   0x009e9e9e,0xa700a7a7
1377 .long   0x009c9c9c,0x27002727
1378 .long   0x003a3a3a,0x8e008e8e
1379 .long   0x00cacaca,0xb200b2b2
1380 .long   0x00252525,0x49004949
1381 .long   0x007b7b7b,0xde00dede
1382 .long   0x000d0d0d,0x43004343
1383 .long   0x00717171,0x5c005c5c
1384 .long   0x005f5f5f,0xd700d7d7
1385 .long   0x001f1f1f,0xc700c7c7
1386 .long   0x00f8f8f8,0x3e003e3e
1387 .long   0x00d7d7d7,0xf500f5f5
1388 .long   0x003e3e3e,0x8f008f8f
1389 .long   0x009d9d9d,0x67006767
1390 .long   0x007c7c7c,0x1f001f1f
1391 .long   0x00606060,0x18001818
1392 .long   0x00b9b9b9,0x6e006e6e
1393 .long   0x00bebebe,0xaf00afaf
1394 .long   0x00bcbcbc,0x2f002f2f
1395 .long   0x008b8b8b,0xe200e2e2
1396 .long   0x00161616,0x85008585
1397 .long   0x00343434,0x0d000d0d
1398 .long   0x004d4d4d,0x53005353
1399 .long   0x00c3c3c3,0xf000f0f0
1400 .long   0x00727272,0x9c009c9c
1401 .long   0x00959595,0x65006565
1402 .long   0x00ababab,0xea00eaea
1403 .long   0x008e8e8e,0xa300a3a3
1404 .long   0x00bababa,0xae00aeae
1405 .long   0x007a7a7a,0x9e009e9e
1406 .long   0x00b3b3b3,0xec00ecec
1407 .long   0x00020202,0x80008080
1408 .long   0x00b4b4b4,0x2d002d2d
1409 .long   0x00adadad,0x6b006b6b
1410 .long   0x00a2a2a2,0xa800a8a8
1411 .long   0x00acacac,0x2b002b2b
1412 .long   0x00d8d8d8,0x36003636
1413 .long   0x009a9a9a,0xa600a6a6
1414 .long   0x00171717,0xc500c5c5
1415 .long   0x001a1a1a,0x86008686
1416 .long   0x00353535,0x4d004d4d
1417 .long   0x00cccccc,0x33003333
1418 .long   0x00f7f7f7,0xfd00fdfd
1419 .long   0x00999999,0x66006666
1420 .long   0x00616161,0x58005858
1421 .long   0x005a5a5a,0x96009696
1422 .long   0x00e8e8e8,0x3a003a3a
1423 .long   0x00242424,0x09000909
1424 .long   0x00565656,0x95009595
1425 .long   0x00404040,0x10001010
1426 .long   0x00e1e1e1,0x78007878
1427 .long   0x00636363,0xd800d8d8
1428 .long   0x00090909,0x42004242
1429 .long   0x00333333,0xcc00cccc
1430 .long   0x00bfbfbf,0xef00efef
1431 .long   0x00989898,0x26002626
1432 .long   0x00979797,0xe500e5e5
1433 .long   0x00858585,0x61006161
1434 .long   0x00686868,0x1a001a1a
1435 .long   0x00fcfcfc,0x3f003f3f
1436 .long   0x00ececec,0x3b003b3b
1437 .long   0x000a0a0a,0x82008282
1438 .long   0x00dadada,0xb600b6b6
1439 .long   0x006f6f6f,0xdb00dbdb
1440 .long   0x00535353,0xd400d4d4
1441 .long   0x00626262,0x98009898
1442 .long   0x00a3a3a3,0xe800e8e8
1443 .long   0x002e2e2e,0x8b008b8b
1444 .long   0x00080808,0x02000202
1445 .long   0x00afafaf,0xeb00ebeb
1446 .long   0x00282828,0x0a000a0a
1447 .long   0x00b0b0b0,0x2c002c2c
1448 .long   0x00747474,0x1d001d1d
1449 .long   0x00c2c2c2,0xb000b0b0
1450 .long   0x00bdbdbd,0x6f006f6f
1451 .long   0x00363636,0x8d008d8d
1452 .long   0x00222222,0x88008888
1453 .long   0x00383838,0x0e000e0e
1454 .long   0x00646464,0x19001919
1455 .long   0x001e1e1e,0x87008787
1456 .long   0x00393939,0x4e004e4e
1457 .long   0x002c2c2c,0x0b000b0b
1458 .long   0x00a6a6a6,0xa900a9a9
1459 .long   0x00303030,0x0c000c0c
1460 .long   0x00e5e5e5,0x79007979
1461 .long   0x00444444,0x11001111
1462 .long   0x00fdfdfd,0x7f007f7f
1463 .long   0x00888888,0x22002222
1464 .long   0x009f9f9f,0xe700e7e7
1465 .long   0x00656565,0x59005959
1466 .long   0x00878787,0xe100e1e1
1467 .long   0x006b6b6b,0xda00dada
1468 .long   0x00f4f4f4,0x3d003d3d
1469 .long   0x00232323,0xc800c8c8
1470 .long   0x00484848,0x12001212
1471 .long   0x00101010,0x04000404
1472 .long   0x00d1d1d1,0x74007474
1473 .long   0x00515151,0x54005454
1474 .long   0x00c0c0c0,0x30003030
1475 .long   0x00f9f9f9,0x7e007e7e
1476 .long   0x00d2d2d2,0xb400b4b4
1477 .long   0x00a0a0a0,0x28002828
1478 .long   0x00555555,0x55005555
1479 .long   0x00a1a1a1,0x68006868
1480 .long   0x00414141,0x50005050
1481 .long   0x00fafafa,0xbe00bebe
1482 .long   0x00434343,0xd000d0d0
1483 .long   0x00131313,0xc400c4c4
1484 .long   0x00c4c4c4,0x31003131
1485 .long   0x002f2f2f,0xcb00cbcb
1486 .long   0x00a8a8a8,0x2a002a2a
1487 .long   0x00b6b6b6,0xad00adad
1488 .long   0x003c3c3c,0x0f000f0f
1489 .long   0x002b2b2b,0xca00caca
1490 .long   0x00c1c1c1,0x70007070
1491 .long   0x00ffffff,0xff00ffff
1492 .long   0x00c8c8c8,0x32003232
1493 .long   0x00a5a5a5,0x69006969
1494 .long   0x00202020,0x08000808
1495 .long   0x00898989,0x62006262
1496 .long   0x00000000,0x00000000
1497 .long   0x00909090,0x24002424
1498 .long   0x00474747,0xd100d1d1
1499 .long   0x00efefef,0xfb00fbfb
1500 .long   0x00eaeaea,0xba00baba
1501 .long   0x00b7b7b7,0xed00eded
1502 .long   0x00151515,0x45004545
1503 .long   0x00060606,0x81008181
1504 .long   0x00cdcdcd,0x73007373
1505 .long   0x00b5b5b5,0x6d006d6d
1506 .long   0x00121212,0x84008484
1507 .long   0x007e7e7e,0x9f009f9f
1508 .long   0x00bbbbbb,0xee00eeee
1509 .long   0x00292929,0x4a004a4a
1510 .long   0x000f0f0f,0xc300c3c3
1511 .long   0x00b8b8b8,0x2e002e2e
1512 .long   0x00070707,0xc100c1c1
1513 .long   0x00040404,0x01000101
1514 .long   0x009b9b9b,0xe600e6e6
1515 .long   0x00949494,0x25002525
1516 .long   0x00212121,0x48004848
1517 .long   0x00666666,0x99009999
1518 .long   0x00e6e6e6,0xb900b9b9
1519 .long   0x00cecece,0xb300b3b3
1520 .long   0x00ededed,0x7b007b7b
1521 .long   0x00e7e7e7,0xf900f9f9
1522 .long   0x003b3b3b,0xce00cece
1523 .long   0x00fefefe,0xbf00bfbf
1524 .long   0x007f7f7f,0xdf00dfdf
1525 .long   0x00c5c5c5,0x71007171
1526 .long   0x00a4a4a4,0x29002929
1527 .long   0x00373737,0xcd00cdcd
1528 .long   0x00b1b1b1,0x6c006c6c
1529 .long   0x004c4c4c,0x13001313
1530 .long   0x00919191,0x64006464
1531 .long   0x006e6e6e,0x9b009b9b
1532 .long   0x008d8d8d,0x63006363
1533 .long   0x00767676,0x9d009d9d
1534 .long   0x00030303,0xc000c0c0
1535 .long   0x002d2d2d,0x4b004b4b
1536 .long   0x00dedede,0xb700b7b7
1537 .long   0x00969696,0xa500a5a5
1538 .long   0x00262626,0x89008989
1539 .long   0x007d7d7d,0x5f005f5f
1540 .long   0x00c6c6c6,0xb100b1b1
1541 .long   0x005c5c5c,0x17001717
1542 .long   0x00d3d3d3,0xf400f4f4
1543 .long   0x00f2f2f2,0xbc00bcbc
1544 .long   0x004f4f4f,0xd300d3d3
1545 .long   0x00191919,0x46004646
1546 .long   0x003f3f3f,0xcf00cfcf
1547 .long   0x00dcdcdc,0x37003737
1548 .long   0x00797979,0x5e005e5e
1549 .long   0x001d1d1d,0x47004747
1550 .long   0x00525252,0x94009494
1551 .long   0x00ebebeb,0xfa00fafa
1552 .long   0x00f3f3f3,0xfc00fcfc
1553 .long   0x006d6d6d,0x5b005b5b
1554 .long   0x005e5e5e,0x97009797
1555 .long   0x00fbfbfb,0xfe00fefe
1556 .long   0x00696969,0x5a005a5a
1557 .long   0x00b2b2b2,0xac00acac
1558 .long   0x00f0f0f0,0x3c003c3c
1559 .long   0x00313131,0x4c004c4c
1560 .long   0x000c0c0c,0x03000303
1561 .long   0x00d4d4d4,0x35003535
1562 .long   0x00cfcfcf,0xf300f3f3
1563 .long   0x008c8c8c,0x23002323
1564 .long   0x00e2e2e2,0xb800b8b8
1565 .long   0x00757575,0x5d005d5d
1566 .long   0x00a9a9a9,0x6a006a6a
1567 .long   0x004a4a4a,0x92009292
1568 .long   0x00575757,0xd500d5d5
1569 .long   0x00848484,0x21002121
1570 .long   0x00111111,0x44004444
1571 .long   0x00454545,0x51005151
1572 .long   0x001b1b1b,0xc600c6c6
1573 .long   0x00f5f5f5,0x7d007d7d
1574 .long   0x00e4e4e4,0x39003939
1575 .long   0x000e0e0e,0x83008383
1576 .long   0x00737373,0xdc00dcdc
1577 .long   0x00aaaaaa,0xaa00aaaa
1578 .long   0x00f1f1f1,0x7c007c7c
1579 .long   0x00dddddd,0x77007777
1580 .long   0x00595959,0x56005656
1581 .long   0x00141414,0x05000505
1582 .long   0x006c6c6c,0x1b001b1b
1583 .long   0x00929292,0xa400a4a4
1584 .long   0x00545454,0x15001515
1585 .long   0x00d0d0d0,0x34003434
1586 .long   0x00787878,0x1e001e1e
1587 .long   0x00707070,0x1c001c1c
1588 .long   0x00e3e3e3,0xf800f8f8
1589 .long   0x00494949,0x52005252
1590 .long   0x00808080,0x20002020
1591 .long   0x00505050,0x14001414
1592 .long   0x00a7a7a7,0xe900e9e9
1593 .long   0x00f6f6f6,0xbd00bdbd
1594 .long   0x00777777,0xdd00dddd
1595 .long   0x00939393,0xe400e4e4
1596 .long   0x00868686,0xa100a1a1
1597 .long   0x00838383,0xe000e0e0
1598 .long   0x002a2a2a,0x8a008a8a
1599 .long   0x00c7c7c7,0xf100f1f1
1600 .long   0x005b5b5b,0xd600d6d6
1601 .long   0x00e9e9e9,0x7a007a7a
1602 .long   0x00eeeeee,0xbb00bbbb
1603 .long   0x008f8f8f,0xe300e3e3
1604 .long   0x00010101,0x40004040
1605 .long   0x003d3d3d,0x4f004f4f
1606 .globl  Camellia_cbc_encrypt
1607 .type   Camellia_cbc_encrypt,@function
1608 .align  16
1609 Camellia_cbc_encrypt:
1610         cmpq    $0,%rdx
1611         je      .Lcbc_abort
1612         pushq   %rbx
1613         pushq   %rbp
1614         pushq   %r12
1615         pushq   %r13
1616         pushq   %r14
1617         pushq   %r15
1618 .Lcbc_prologue:
1619
1620         movq    %rsp,%rbp
1621         subq    $64,%rsp
1622         andq    $-64,%rsp
1623
1624
1625
1626         leaq    -64-63(%rcx),%r10
1627         subq    %rsp,%r10
1628         negq    %r10
1629         andq    $960,%r10
1630         subq    %r10,%rsp
1631
1632
1633         movq    %rdi,%r12
1634         movq    %rsi,%r13
1635         movq    %r8,%rbx
1636         movq    %rcx,%r14
1637         movl    272(%rcx),%r15d
1638
1639         movq    %r8,40(%rsp)
1640         movq    %rbp,48(%rsp)
1641
1642 .Lcbc_body:
1643         leaq    .LCamellia_SBOX(%rip),%rbp
1644
1645         movl    $32,%ecx
1646 .align  4
1647 .Lcbc_prefetch_sbox:
1648         movq    0(%rbp),%rax
1649         movq    32(%rbp),%rsi
1650         movq    64(%rbp),%rdi
1651         movq    96(%rbp),%r11
1652         leaq    128(%rbp),%rbp
1653         loop    .Lcbc_prefetch_sbox
1654         subq    $4096,%rbp
1655         shlq    $6,%r15
1656         movq    %rdx,%rcx
1657         leaq    (%r14,%r15,1),%r15
1658
1659         cmpl    $0,%r9d
1660         je      .LCBC_DECRYPT
1661
1662         andq    $-16,%rdx
1663         andq    $15,%rcx
1664         leaq    (%r12,%rdx,1),%rdx
1665         movq    %r14,0(%rsp)
1666         movq    %rdx,8(%rsp)
1667         movq    %rcx,16(%rsp)
1668
1669         cmpq    %r12,%rdx
1670         movl    0(%rbx),%r8d
1671         movl    4(%rbx),%r9d
1672         movl    8(%rbx),%r10d
1673         movl    12(%rbx),%r11d
1674         je      .Lcbc_enc_tail
1675         jmp     .Lcbc_eloop
1676
1677 .align  16
1678 .Lcbc_eloop:
1679         xorl    0(%r12),%r8d
1680         xorl    4(%r12),%r9d
1681         xorl    8(%r12),%r10d
1682         bswapl  %r8d
1683         xorl    12(%r12),%r11d
1684         bswapl  %r9d
1685         bswapl  %r10d
1686         bswapl  %r11d
1687
1688         call    _x86_64_Camellia_encrypt
1689
1690         movq    0(%rsp),%r14
1691         bswapl  %r8d
1692         movq    8(%rsp),%rdx
1693         bswapl  %r9d
1694         movq    16(%rsp),%rcx
1695         bswapl  %r10d
1696         movl    %r8d,0(%r13)
1697         bswapl  %r11d
1698         movl    %r9d,4(%r13)
1699         movl    %r10d,8(%r13)
1700         leaq    16(%r12),%r12
1701         movl    %r11d,12(%r13)
1702         cmpq    %rdx,%r12
1703         leaq    16(%r13),%r13
1704         jne     .Lcbc_eloop
1705
1706         cmpq    $0,%rcx
1707         jne     .Lcbc_enc_tail
1708
1709         movq    40(%rsp),%r13
1710         movl    %r8d,0(%r13)
1711         movl    %r9d,4(%r13)
1712         movl    %r10d,8(%r13)
1713         movl    %r11d,12(%r13)
1714         jmp     .Lcbc_done
1715
1716 .align  16
1717 .Lcbc_enc_tail:
1718         xorq    %rax,%rax
1719         movq    %rax,0+24(%rsp)
1720         movq    %rax,8+24(%rsp)
1721         movq    %rax,16(%rsp)
1722
1723 .Lcbc_enc_pushf:
1724         pushfq
1725         cld
1726         movq    %r12,%rsi
1727         leaq    8+24(%rsp),%rdi
1728 .long   0x9066A4F3              
1729         popfq
1730 .Lcbc_enc_popf:
1731
1732         leaq    24(%rsp),%r12
1733         leaq    16+24(%rsp),%rax
1734         movq    %rax,8(%rsp)
1735         jmp     .Lcbc_eloop             
1736
1737 .align  16
1738 .LCBC_DECRYPT:
1739         xchgq   %r14,%r15
1740         addq    $15,%rdx
1741         andq    $15,%rcx
1742         andq    $-16,%rdx
1743         movq    %r14,0(%rsp)
1744         leaq    (%r12,%rdx,1),%rdx
1745         movq    %rdx,8(%rsp)
1746         movq    %rcx,16(%rsp)
1747
1748         movq    (%rbx),%rax
1749         movq    8(%rbx),%rbx
1750         jmp     .Lcbc_dloop
1751 .align  16
1752 .Lcbc_dloop:
1753         movl    0(%r12),%r8d
1754         movl    4(%r12),%r9d
1755         movl    8(%r12),%r10d
1756         bswapl  %r8d
1757         movl    12(%r12),%r11d
1758         bswapl  %r9d
1759         movq    %rax,0+24(%rsp)
1760         bswapl  %r10d
1761         movq    %rbx,8+24(%rsp)
1762         bswapl  %r11d
1763
1764         call    _x86_64_Camellia_decrypt
1765
1766         movq    0(%rsp),%r14
1767         movq    8(%rsp),%rdx
1768         movq    16(%rsp),%rcx
1769
1770         bswapl  %r8d
1771         movq    (%r12),%rax
1772         bswapl  %r9d
1773         movq    8(%r12),%rbx
1774         bswapl  %r10d
1775         xorl    0+24(%rsp),%r8d
1776         bswapl  %r11d
1777         xorl    4+24(%rsp),%r9d
1778         xorl    8+24(%rsp),%r10d
1779         leaq    16(%r12),%r12
1780         xorl    12+24(%rsp),%r11d
1781         cmpq    %rdx,%r12
1782         je      .Lcbc_ddone
1783
1784         movl    %r8d,0(%r13)
1785         movl    %r9d,4(%r13)
1786         movl    %r10d,8(%r13)
1787         movl    %r11d,12(%r13)
1788
1789         leaq    16(%r13),%r13
1790         jmp     .Lcbc_dloop
1791
1792 .align  16
1793 .Lcbc_ddone:
1794         movq    40(%rsp),%rdx
1795         cmpq    $0,%rcx
1796         jne     .Lcbc_dec_tail
1797
1798         movl    %r8d,0(%r13)
1799         movl    %r9d,4(%r13)
1800         movl    %r10d,8(%r13)
1801         movl    %r11d,12(%r13)
1802
1803         movq    %rax,(%rdx)
1804         movq    %rbx,8(%rdx)
1805         jmp     .Lcbc_done
1806 .align  16
1807 .Lcbc_dec_tail:
1808         movl    %r8d,0+24(%rsp)
1809         movl    %r9d,4+24(%rsp)
1810         movl    %r10d,8+24(%rsp)
1811         movl    %r11d,12+24(%rsp)
1812
1813 .Lcbc_dec_pushf:
1814         pushfq
1815         cld
1816         leaq    8+24(%rsp),%rsi
1817         leaq    (%r13),%rdi
1818 .long   0x9066A4F3              
1819         popfq
1820 .Lcbc_dec_popf:
1821
1822         movq    %rax,(%rdx)
1823         movq    %rbx,8(%rdx)
1824         jmp     .Lcbc_done
1825
1826 .align  16
1827 .Lcbc_done:
1828         movq    48(%rsp),%rcx
1829         movq    0(%rcx),%r15
1830         movq    8(%rcx),%r14
1831         movq    16(%rcx),%r13
1832         movq    24(%rcx),%r12
1833         movq    32(%rcx),%rbp
1834         movq    40(%rcx),%rbx
1835         leaq    48(%rcx),%rsp
1836 .Lcbc_abort:
1837         .byte   0xf3,0xc3
1838 .size   Camellia_cbc_encrypt,.-Camellia_cbc_encrypt
1839
1840 .byte   67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54,95,54,52,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0