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