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