]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/amd64/aes-x86_64.S
file: update to 5.34
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / amd64 / aes-x86_64.S
1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from aes-x86_64.pl. */
3 .text   
4 .type   _x86_64_AES_encrypt,@function
5 .align  16
6 _x86_64_AES_encrypt:
7         xorl    0(%r15),%eax
8         xorl    4(%r15),%ebx
9         xorl    8(%r15),%ecx
10         xorl    12(%r15),%edx
11
12         movl    240(%r15),%r13d
13         subl    $1,%r13d
14         jmp     .Lenc_loop
15 .align  16
16 .Lenc_loop:
17
18         movzbl  %al,%esi
19         movzbl  %bl,%edi
20         movzbl  %cl,%ebp
21         movl    0(%r14,%rsi,8),%r10d
22         movl    0(%r14,%rdi,8),%r11d
23         movl    0(%r14,%rbp,8),%r12d
24
25         movzbl  %bh,%esi
26         movzbl  %ch,%edi
27         movzbl  %dl,%ebp
28         xorl    3(%r14,%rsi,8),%r10d
29         xorl    3(%r14,%rdi,8),%r11d
30         movl    0(%r14,%rbp,8),%r8d
31
32         movzbl  %dh,%esi
33         shrl    $16,%ecx
34         movzbl  %ah,%ebp
35         xorl    3(%r14,%rsi,8),%r12d
36         shrl    $16,%edx
37         xorl    3(%r14,%rbp,8),%r8d
38
39         shrl    $16,%ebx
40         leaq    16(%r15),%r15
41         shrl    $16,%eax
42
43         movzbl  %cl,%esi
44         movzbl  %dl,%edi
45         movzbl  %al,%ebp
46         xorl    2(%r14,%rsi,8),%r10d
47         xorl    2(%r14,%rdi,8),%r11d
48         xorl    2(%r14,%rbp,8),%r12d
49
50         movzbl  %dh,%esi
51         movzbl  %ah,%edi
52         movzbl  %bl,%ebp
53         xorl    1(%r14,%rsi,8),%r10d
54         xorl    1(%r14,%rdi,8),%r11d
55         xorl    2(%r14,%rbp,8),%r8d
56
57         movl    12(%r15),%edx
58         movzbl  %bh,%edi
59         movzbl  %ch,%ebp
60         movl    0(%r15),%eax
61         xorl    1(%r14,%rdi,8),%r12d
62         xorl    1(%r14,%rbp,8),%r8d
63
64         movl    4(%r15),%ebx
65         movl    8(%r15),%ecx
66         xorl    %r10d,%eax
67         xorl    %r11d,%ebx
68         xorl    %r12d,%ecx
69         xorl    %r8d,%edx
70         subl    $1,%r13d
71         jnz     .Lenc_loop
72         movzbl  %al,%esi
73         movzbl  %bl,%edi
74         movzbl  %cl,%ebp
75         movzbl  2(%r14,%rsi,8),%r10d
76         movzbl  2(%r14,%rdi,8),%r11d
77         movzbl  2(%r14,%rbp,8),%r12d
78
79         movzbl  %dl,%esi
80         movzbl  %bh,%edi
81         movzbl  %ch,%ebp
82         movzbl  2(%r14,%rsi,8),%r8d
83         movl    0(%r14,%rdi,8),%edi
84         movl    0(%r14,%rbp,8),%ebp
85
86         andl    $0x0000ff00,%edi
87         andl    $0x0000ff00,%ebp
88
89         xorl    %edi,%r10d
90         xorl    %ebp,%r11d
91         shrl    $16,%ecx
92
93         movzbl  %dh,%esi
94         movzbl  %ah,%edi
95         shrl    $16,%edx
96         movl    0(%r14,%rsi,8),%esi
97         movl    0(%r14,%rdi,8),%edi
98
99         andl    $0x0000ff00,%esi
100         andl    $0x0000ff00,%edi
101         shrl    $16,%ebx
102         xorl    %esi,%r12d
103         xorl    %edi,%r8d
104         shrl    $16,%eax
105
106         movzbl  %cl,%esi
107         movzbl  %dl,%edi
108         movzbl  %al,%ebp
109         movl    0(%r14,%rsi,8),%esi
110         movl    0(%r14,%rdi,8),%edi
111         movl    0(%r14,%rbp,8),%ebp
112
113         andl    $0x00ff0000,%esi
114         andl    $0x00ff0000,%edi
115         andl    $0x00ff0000,%ebp
116
117         xorl    %esi,%r10d
118         xorl    %edi,%r11d
119         xorl    %ebp,%r12d
120
121         movzbl  %bl,%esi
122         movzbl  %dh,%edi
123         movzbl  %ah,%ebp
124         movl    0(%r14,%rsi,8),%esi
125         movl    2(%r14,%rdi,8),%edi
126         movl    2(%r14,%rbp,8),%ebp
127
128         andl    $0x00ff0000,%esi
129         andl    $0xff000000,%edi
130         andl    $0xff000000,%ebp
131
132         xorl    %esi,%r8d
133         xorl    %edi,%r10d
134         xorl    %ebp,%r11d
135
136         movzbl  %bh,%esi
137         movzbl  %ch,%edi
138         movl    16+12(%r15),%edx
139         movl    2(%r14,%rsi,8),%esi
140         movl    2(%r14,%rdi,8),%edi
141         movl    16+0(%r15),%eax
142
143         andl    $0xff000000,%esi
144         andl    $0xff000000,%edi
145
146         xorl    %esi,%r12d
147         xorl    %edi,%r8d
148
149         movl    16+4(%r15),%ebx
150         movl    16+8(%r15),%ecx
151         xorl    %r10d,%eax
152         xorl    %r11d,%ebx
153         xorl    %r12d,%ecx
154         xorl    %r8d,%edx
155 .byte   0xf3,0xc3
156 .size   _x86_64_AES_encrypt,.-_x86_64_AES_encrypt
157 .type   _x86_64_AES_encrypt_compact,@function
158 .align  16
159 _x86_64_AES_encrypt_compact:
160         leaq    128(%r14),%r8
161         movl    0-128(%r8),%edi
162         movl    32-128(%r8),%ebp
163         movl    64-128(%r8),%r10d
164         movl    96-128(%r8),%r11d
165         movl    128-128(%r8),%edi
166         movl    160-128(%r8),%ebp
167         movl    192-128(%r8),%r10d
168         movl    224-128(%r8),%r11d
169         jmp     .Lenc_loop_compact
170 .align  16
171 .Lenc_loop_compact:
172         xorl    0(%r15),%eax
173         xorl    4(%r15),%ebx
174         xorl    8(%r15),%ecx
175         xorl    12(%r15),%edx
176         leaq    16(%r15),%r15
177         movzbl  %al,%r10d
178         movzbl  %bl,%r11d
179         movzbl  %cl,%r12d
180         movzbl  %dl,%r8d
181         movzbl  %bh,%esi
182         movzbl  %ch,%edi
183         shrl    $16,%ecx
184         movzbl  %dh,%ebp
185         movzbl  (%r14,%r10,1),%r10d
186         movzbl  (%r14,%r11,1),%r11d
187         movzbl  (%r14,%r12,1),%r12d
188         movzbl  (%r14,%r8,1),%r8d
189
190         movzbl  (%r14,%rsi,1),%r9d
191         movzbl  %ah,%esi
192         movzbl  (%r14,%rdi,1),%r13d
193         movzbl  %cl,%edi
194         movzbl  (%r14,%rbp,1),%ebp
195         movzbl  (%r14,%rsi,1),%esi
196
197         shll    $8,%r9d
198         shrl    $16,%edx
199         shll    $8,%r13d
200         xorl    %r9d,%r10d
201         shrl    $16,%eax
202         movzbl  %dl,%r9d
203         shrl    $16,%ebx
204         xorl    %r13d,%r11d
205         shll    $8,%ebp
206         movzbl  %al,%r13d
207         movzbl  (%r14,%rdi,1),%edi
208         xorl    %ebp,%r12d
209
210         shll    $8,%esi
211         movzbl  %bl,%ebp
212         shll    $16,%edi
213         xorl    %esi,%r8d
214         movzbl  (%r14,%r9,1),%r9d
215         movzbl  %dh,%esi
216         movzbl  (%r14,%r13,1),%r13d
217         xorl    %edi,%r10d
218
219         shrl    $8,%ecx
220         movzbl  %ah,%edi
221         shll    $16,%r9d
222         shrl    $8,%ebx
223         shll    $16,%r13d
224         xorl    %r9d,%r11d
225         movzbl  (%r14,%rbp,1),%ebp
226         movzbl  (%r14,%rsi,1),%esi
227         movzbl  (%r14,%rdi,1),%edi
228         movzbl  (%r14,%rcx,1),%edx
229         movzbl  (%r14,%rbx,1),%ecx
230
231         shll    $16,%ebp
232         xorl    %r13d,%r12d
233         shll    $24,%esi
234         xorl    %ebp,%r8d
235         shll    $24,%edi
236         xorl    %esi,%r10d
237         shll    $24,%edx
238         xorl    %edi,%r11d
239         shll    $24,%ecx
240         movl    %r10d,%eax
241         movl    %r11d,%ebx
242         xorl    %r12d,%ecx
243         xorl    %r8d,%edx
244         cmpq    16(%rsp),%r15
245         je      .Lenc_compact_done
246         movl    $0x80808080,%r10d
247         movl    $0x80808080,%r11d
248         andl    %eax,%r10d
249         andl    %ebx,%r11d
250         movl    %r10d,%esi
251         movl    %r11d,%edi
252         shrl    $7,%r10d
253         leal    (%rax,%rax,1),%r8d
254         shrl    $7,%r11d
255         leal    (%rbx,%rbx,1),%r9d
256         subl    %r10d,%esi
257         subl    %r11d,%edi
258         andl    $0xfefefefe,%r8d
259         andl    $0xfefefefe,%r9d
260         andl    $0x1b1b1b1b,%esi
261         andl    $0x1b1b1b1b,%edi
262         movl    %eax,%r10d
263         movl    %ebx,%r11d
264         xorl    %esi,%r8d
265         xorl    %edi,%r9d
266
267         xorl    %r8d,%eax
268         xorl    %r9d,%ebx
269         movl    $0x80808080,%r12d
270         roll    $24,%eax
271         movl    $0x80808080,%ebp
272         roll    $24,%ebx
273         andl    %ecx,%r12d
274         andl    %edx,%ebp
275         xorl    %r8d,%eax
276         xorl    %r9d,%ebx
277         movl    %r12d,%esi
278         rorl    $16,%r10d
279         movl    %ebp,%edi
280         rorl    $16,%r11d
281         leal    (%rcx,%rcx,1),%r8d
282         shrl    $7,%r12d
283         xorl    %r10d,%eax
284         shrl    $7,%ebp
285         xorl    %r11d,%ebx
286         rorl    $8,%r10d
287         leal    (%rdx,%rdx,1),%r9d
288         rorl    $8,%r11d
289         subl    %r12d,%esi
290         subl    %ebp,%edi
291         xorl    %r10d,%eax
292         xorl    %r11d,%ebx
293
294         andl    $0xfefefefe,%r8d
295         andl    $0xfefefefe,%r9d
296         andl    $0x1b1b1b1b,%esi
297         andl    $0x1b1b1b1b,%edi
298         movl    %ecx,%r12d
299         movl    %edx,%ebp
300         xorl    %esi,%r8d
301         xorl    %edi,%r9d
302
303         rorl    $16,%r12d
304         xorl    %r8d,%ecx
305         rorl    $16,%ebp
306         xorl    %r9d,%edx
307         roll    $24,%ecx
308         movl    0(%r14),%esi
309         roll    $24,%edx
310         xorl    %r8d,%ecx
311         movl    64(%r14),%edi
312         xorl    %r9d,%edx
313         movl    128(%r14),%r8d
314         xorl    %r12d,%ecx
315         rorl    $8,%r12d
316         xorl    %ebp,%edx
317         rorl    $8,%ebp
318         xorl    %r12d,%ecx
319         movl    192(%r14),%r9d
320         xorl    %ebp,%edx
321         jmp     .Lenc_loop_compact
322 .align  16
323 .Lenc_compact_done:
324         xorl    0(%r15),%eax
325         xorl    4(%r15),%ebx
326         xorl    8(%r15),%ecx
327         xorl    12(%r15),%edx
328 .byte   0xf3,0xc3
329 .size   _x86_64_AES_encrypt_compact,.-_x86_64_AES_encrypt_compact
330 .globl  AES_encrypt
331 .type   AES_encrypt,@function
332 .align  16
333 .globl  asm_AES_encrypt
334 .hidden asm_AES_encrypt
335 asm_AES_encrypt:
336 AES_encrypt:
337         pushq   %rbx
338         pushq   %rbp
339         pushq   %r12
340         pushq   %r13
341         pushq   %r14
342         pushq   %r15
343
344
345         movq    %rsp,%r10
346         leaq    -63(%rdx),%rcx
347         andq    $-64,%rsp
348         subq    %rsp,%rcx
349         negq    %rcx
350         andq    $0x3c0,%rcx
351         subq    %rcx,%rsp
352         subq    $32,%rsp
353
354         movq    %rsi,16(%rsp)
355         movq    %r10,24(%rsp)
356 .Lenc_prologue:
357
358         movq    %rdx,%r15
359         movl    240(%r15),%r13d
360
361         movl    0(%rdi),%eax
362         movl    4(%rdi),%ebx
363         movl    8(%rdi),%ecx
364         movl    12(%rdi),%edx
365
366         shll    $4,%r13d
367         leaq    (%r15,%r13,1),%rbp
368         movq    %r15,(%rsp)
369         movq    %rbp,8(%rsp)
370
371
372         leaq    .LAES_Te+2048(%rip),%r14
373         leaq    768(%rsp),%rbp
374         subq    %r14,%rbp
375         andq    $0x300,%rbp
376         leaq    (%r14,%rbp,1),%r14
377
378         call    _x86_64_AES_encrypt_compact
379
380         movq    16(%rsp),%r9
381         movq    24(%rsp),%rsi
382         movl    %eax,0(%r9)
383         movl    %ebx,4(%r9)
384         movl    %ecx,8(%r9)
385         movl    %edx,12(%r9)
386
387         movq    (%rsi),%r15
388         movq    8(%rsi),%r14
389         movq    16(%rsi),%r13
390         movq    24(%rsi),%r12
391         movq    32(%rsi),%rbp
392         movq    40(%rsi),%rbx
393         leaq    48(%rsi),%rsp
394 .Lenc_epilogue:
395         .byte   0xf3,0xc3
396 .size   AES_encrypt,.-AES_encrypt
397 .type   _x86_64_AES_decrypt,@function
398 .align  16
399 _x86_64_AES_decrypt:
400         xorl    0(%r15),%eax
401         xorl    4(%r15),%ebx
402         xorl    8(%r15),%ecx
403         xorl    12(%r15),%edx
404
405         movl    240(%r15),%r13d
406         subl    $1,%r13d
407         jmp     .Ldec_loop
408 .align  16
409 .Ldec_loop:
410
411         movzbl  %al,%esi
412         movzbl  %bl,%edi
413         movzbl  %cl,%ebp
414         movl    0(%r14,%rsi,8),%r10d
415         movl    0(%r14,%rdi,8),%r11d
416         movl    0(%r14,%rbp,8),%r12d
417
418         movzbl  %dh,%esi
419         movzbl  %ah,%edi
420         movzbl  %dl,%ebp
421         xorl    3(%r14,%rsi,8),%r10d
422         xorl    3(%r14,%rdi,8),%r11d
423         movl    0(%r14,%rbp,8),%r8d
424
425         movzbl  %bh,%esi
426         shrl    $16,%eax
427         movzbl  %ch,%ebp
428         xorl    3(%r14,%rsi,8),%r12d
429         shrl    $16,%edx
430         xorl    3(%r14,%rbp,8),%r8d
431
432         shrl    $16,%ebx
433         leaq    16(%r15),%r15
434         shrl    $16,%ecx
435
436         movzbl  %cl,%esi
437         movzbl  %dl,%edi
438         movzbl  %al,%ebp
439         xorl    2(%r14,%rsi,8),%r10d
440         xorl    2(%r14,%rdi,8),%r11d
441         xorl    2(%r14,%rbp,8),%r12d
442
443         movzbl  %bh,%esi
444         movzbl  %ch,%edi
445         movzbl  %bl,%ebp
446         xorl    1(%r14,%rsi,8),%r10d
447         xorl    1(%r14,%rdi,8),%r11d
448         xorl    2(%r14,%rbp,8),%r8d
449
450         movzbl  %dh,%esi
451         movl    12(%r15),%edx
452         movzbl  %ah,%ebp
453         xorl    1(%r14,%rsi,8),%r12d
454         movl    0(%r15),%eax
455         xorl    1(%r14,%rbp,8),%r8d
456
457         xorl    %r10d,%eax
458         movl    4(%r15),%ebx
459         movl    8(%r15),%ecx
460         xorl    %r12d,%ecx
461         xorl    %r11d,%ebx
462         xorl    %r8d,%edx
463         subl    $1,%r13d
464         jnz     .Ldec_loop
465         leaq    2048(%r14),%r14
466         movzbl  %al,%esi
467         movzbl  %bl,%edi
468         movzbl  %cl,%ebp
469         movzbl  (%r14,%rsi,1),%r10d
470         movzbl  (%r14,%rdi,1),%r11d
471         movzbl  (%r14,%rbp,1),%r12d
472
473         movzbl  %dl,%esi
474         movzbl  %dh,%edi
475         movzbl  %ah,%ebp
476         movzbl  (%r14,%rsi,1),%r8d
477         movzbl  (%r14,%rdi,1),%edi
478         movzbl  (%r14,%rbp,1),%ebp
479
480         shll    $8,%edi
481         shll    $8,%ebp
482
483         xorl    %edi,%r10d
484         xorl    %ebp,%r11d
485         shrl    $16,%edx
486
487         movzbl  %bh,%esi
488         movzbl  %ch,%edi
489         shrl    $16,%eax
490         movzbl  (%r14,%rsi,1),%esi
491         movzbl  (%r14,%rdi,1),%edi
492
493         shll    $8,%esi
494         shll    $8,%edi
495         shrl    $16,%ebx
496         xorl    %esi,%r12d
497         xorl    %edi,%r8d
498         shrl    $16,%ecx
499
500         movzbl  %cl,%esi
501         movzbl  %dl,%edi
502         movzbl  %al,%ebp
503         movzbl  (%r14,%rsi,1),%esi
504         movzbl  (%r14,%rdi,1),%edi
505         movzbl  (%r14,%rbp,1),%ebp
506
507         shll    $16,%esi
508         shll    $16,%edi
509         shll    $16,%ebp
510
511         xorl    %esi,%r10d
512         xorl    %edi,%r11d
513         xorl    %ebp,%r12d
514
515         movzbl  %bl,%esi
516         movzbl  %bh,%edi
517         movzbl  %ch,%ebp
518         movzbl  (%r14,%rsi,1),%esi
519         movzbl  (%r14,%rdi,1),%edi
520         movzbl  (%r14,%rbp,1),%ebp
521
522         shll    $16,%esi
523         shll    $24,%edi
524         shll    $24,%ebp
525
526         xorl    %esi,%r8d
527         xorl    %edi,%r10d
528         xorl    %ebp,%r11d
529
530         movzbl  %dh,%esi
531         movzbl  %ah,%edi
532         movl    16+12(%r15),%edx
533         movzbl  (%r14,%rsi,1),%esi
534         movzbl  (%r14,%rdi,1),%edi
535         movl    16+0(%r15),%eax
536
537         shll    $24,%esi
538         shll    $24,%edi
539
540         xorl    %esi,%r12d
541         xorl    %edi,%r8d
542
543         movl    16+4(%r15),%ebx
544         movl    16+8(%r15),%ecx
545         leaq    -2048(%r14),%r14
546         xorl    %r10d,%eax
547         xorl    %r11d,%ebx
548         xorl    %r12d,%ecx
549         xorl    %r8d,%edx
550 .byte   0xf3,0xc3
551 .size   _x86_64_AES_decrypt,.-_x86_64_AES_decrypt
552 .type   _x86_64_AES_decrypt_compact,@function
553 .align  16
554 _x86_64_AES_decrypt_compact:
555         leaq    128(%r14),%r8
556         movl    0-128(%r8),%edi
557         movl    32-128(%r8),%ebp
558         movl    64-128(%r8),%r10d
559         movl    96-128(%r8),%r11d
560         movl    128-128(%r8),%edi
561         movl    160-128(%r8),%ebp
562         movl    192-128(%r8),%r10d
563         movl    224-128(%r8),%r11d
564         jmp     .Ldec_loop_compact
565
566 .align  16
567 .Ldec_loop_compact:
568         xorl    0(%r15),%eax
569         xorl    4(%r15),%ebx
570         xorl    8(%r15),%ecx
571         xorl    12(%r15),%edx
572         leaq    16(%r15),%r15
573         movzbl  %al,%r10d
574         movzbl  %bl,%r11d
575         movzbl  %cl,%r12d
576         movzbl  %dl,%r8d
577         movzbl  %dh,%esi
578         movzbl  %ah,%edi
579         shrl    $16,%edx
580         movzbl  %bh,%ebp
581         movzbl  (%r14,%r10,1),%r10d
582         movzbl  (%r14,%r11,1),%r11d
583         movzbl  (%r14,%r12,1),%r12d
584         movzbl  (%r14,%r8,1),%r8d
585
586         movzbl  (%r14,%rsi,1),%r9d
587         movzbl  %ch,%esi
588         movzbl  (%r14,%rdi,1),%r13d
589         movzbl  (%r14,%rbp,1),%ebp
590         movzbl  (%r14,%rsi,1),%esi
591
592         shrl    $16,%ecx
593         shll    $8,%r13d
594         shll    $8,%r9d
595         movzbl  %cl,%edi
596         shrl    $16,%eax
597         xorl    %r9d,%r10d
598         shrl    $16,%ebx
599         movzbl  %dl,%r9d
600
601         shll    $8,%ebp
602         xorl    %r13d,%r11d
603         shll    $8,%esi
604         movzbl  %al,%r13d
605         movzbl  (%r14,%rdi,1),%edi
606         xorl    %ebp,%r12d
607         movzbl  %bl,%ebp
608
609         shll    $16,%edi
610         xorl    %esi,%r8d
611         movzbl  (%r14,%r9,1),%r9d
612         movzbl  %bh,%esi
613         movzbl  (%r14,%rbp,1),%ebp
614         xorl    %edi,%r10d
615         movzbl  (%r14,%r13,1),%r13d
616         movzbl  %ch,%edi
617
618         shll    $16,%ebp
619         shll    $16,%r9d
620         shll    $16,%r13d
621         xorl    %ebp,%r8d
622         movzbl  %dh,%ebp
623         xorl    %r9d,%r11d
624         shrl    $8,%eax
625         xorl    %r13d,%r12d
626
627         movzbl  (%r14,%rsi,1),%esi
628         movzbl  (%r14,%rdi,1),%ebx
629         movzbl  (%r14,%rbp,1),%ecx
630         movzbl  (%r14,%rax,1),%edx
631
632         movl    %r10d,%eax
633         shll    $24,%esi
634         shll    $24,%ebx
635         shll    $24,%ecx
636         xorl    %esi,%eax
637         shll    $24,%edx
638         xorl    %r11d,%ebx
639         xorl    %r12d,%ecx
640         xorl    %r8d,%edx
641         cmpq    16(%rsp),%r15
642         je      .Ldec_compact_done
643
644         movq    256+0(%r14),%rsi
645         shlq    $32,%rbx
646         shlq    $32,%rdx
647         movq    256+8(%r14),%rdi
648         orq     %rbx,%rax
649         orq     %rdx,%rcx
650         movq    256+16(%r14),%rbp
651         movq    %rsi,%r9
652         movq    %rsi,%r12
653         andq    %rax,%r9
654         andq    %rcx,%r12
655         movq    %r9,%rbx
656         movq    %r12,%rdx
657         shrq    $7,%r9
658         leaq    (%rax,%rax,1),%r8
659         shrq    $7,%r12
660         leaq    (%rcx,%rcx,1),%r11
661         subq    %r9,%rbx
662         subq    %r12,%rdx
663         andq    %rdi,%r8
664         andq    %rdi,%r11
665         andq    %rbp,%rbx
666         andq    %rbp,%rdx
667         xorq    %rbx,%r8
668         xorq    %rdx,%r11
669         movq    %rsi,%r10
670         movq    %rsi,%r13
671
672         andq    %r8,%r10
673         andq    %r11,%r13
674         movq    %r10,%rbx
675         movq    %r13,%rdx
676         shrq    $7,%r10
677         leaq    (%r8,%r8,1),%r9
678         shrq    $7,%r13
679         leaq    (%r11,%r11,1),%r12
680         subq    %r10,%rbx
681         subq    %r13,%rdx
682         andq    %rdi,%r9
683         andq    %rdi,%r12
684         andq    %rbp,%rbx
685         andq    %rbp,%rdx
686         xorq    %rbx,%r9
687         xorq    %rdx,%r12
688         movq    %rsi,%r10
689         movq    %rsi,%r13
690
691         andq    %r9,%r10
692         andq    %r12,%r13
693         movq    %r10,%rbx
694         movq    %r13,%rdx
695         shrq    $7,%r10
696         xorq    %rax,%r8
697         shrq    $7,%r13
698         xorq    %rcx,%r11
699         subq    %r10,%rbx
700         subq    %r13,%rdx
701         leaq    (%r9,%r9,1),%r10
702         leaq    (%r12,%r12,1),%r13
703         xorq    %rax,%r9
704         xorq    %rcx,%r12
705         andq    %rdi,%r10
706         andq    %rdi,%r13
707         andq    %rbp,%rbx
708         andq    %rbp,%rdx
709         xorq    %rbx,%r10
710         xorq    %rdx,%r13
711
712         xorq    %r10,%rax
713         xorq    %r13,%rcx
714         xorq    %r10,%r8
715         xorq    %r13,%r11
716         movq    %rax,%rbx
717         movq    %rcx,%rdx
718         xorq    %r10,%r9
719         shrq    $32,%rbx
720         xorq    %r13,%r12
721         shrq    $32,%rdx
722         xorq    %r8,%r10
723         roll    $8,%eax
724         xorq    %r11,%r13
725         roll    $8,%ecx
726         xorq    %r9,%r10
727         roll    $8,%ebx
728         xorq    %r12,%r13
729
730         roll    $8,%edx
731         xorl    %r10d,%eax
732         shrq    $32,%r10
733         xorl    %r13d,%ecx
734         shrq    $32,%r13
735         xorl    %r10d,%ebx
736         xorl    %r13d,%edx
737
738         movq    %r8,%r10
739         roll    $24,%r8d
740         movq    %r11,%r13
741         roll    $24,%r11d
742         shrq    $32,%r10
743         xorl    %r8d,%eax
744         shrq    $32,%r13
745         xorl    %r11d,%ecx
746         roll    $24,%r10d
747         movq    %r9,%r8
748         roll    $24,%r13d
749         movq    %r12,%r11
750         shrq    $32,%r8
751         xorl    %r10d,%ebx
752         shrq    $32,%r11
753         xorl    %r13d,%edx
754
755         movq    0(%r14),%rsi
756         roll    $16,%r9d
757         movq    64(%r14),%rdi
758         roll    $16,%r12d
759         movq    128(%r14),%rbp
760         roll    $16,%r8d
761         movq    192(%r14),%r10
762         xorl    %r9d,%eax
763         roll    $16,%r11d
764         xorl    %r12d,%ecx
765         movq    256(%r14),%r13
766         xorl    %r8d,%ebx
767         xorl    %r11d,%edx
768         jmp     .Ldec_loop_compact
769 .align  16
770 .Ldec_compact_done:
771         xorl    0(%r15),%eax
772         xorl    4(%r15),%ebx
773         xorl    8(%r15),%ecx
774         xorl    12(%r15),%edx
775 .byte   0xf3,0xc3
776 .size   _x86_64_AES_decrypt_compact,.-_x86_64_AES_decrypt_compact
777 .globl  AES_decrypt
778 .type   AES_decrypt,@function
779 .align  16
780 .globl  asm_AES_decrypt
781 .hidden asm_AES_decrypt
782 asm_AES_decrypt:
783 AES_decrypt:
784         pushq   %rbx
785         pushq   %rbp
786         pushq   %r12
787         pushq   %r13
788         pushq   %r14
789         pushq   %r15
790
791
792         movq    %rsp,%r10
793         leaq    -63(%rdx),%rcx
794         andq    $-64,%rsp
795         subq    %rsp,%rcx
796         negq    %rcx
797         andq    $0x3c0,%rcx
798         subq    %rcx,%rsp
799         subq    $32,%rsp
800
801         movq    %rsi,16(%rsp)
802         movq    %r10,24(%rsp)
803 .Ldec_prologue:
804
805         movq    %rdx,%r15
806         movl    240(%r15),%r13d
807
808         movl    0(%rdi),%eax
809         movl    4(%rdi),%ebx
810         movl    8(%rdi),%ecx
811         movl    12(%rdi),%edx
812
813         shll    $4,%r13d
814         leaq    (%r15,%r13,1),%rbp
815         movq    %r15,(%rsp)
816         movq    %rbp,8(%rsp)
817
818
819         leaq    .LAES_Td+2048(%rip),%r14
820         leaq    768(%rsp),%rbp
821         subq    %r14,%rbp
822         andq    $0x300,%rbp
823         leaq    (%r14,%rbp,1),%r14
824         shrq    $3,%rbp
825         addq    %rbp,%r14
826
827         call    _x86_64_AES_decrypt_compact
828
829         movq    16(%rsp),%r9
830         movq    24(%rsp),%rsi
831         movl    %eax,0(%r9)
832         movl    %ebx,4(%r9)
833         movl    %ecx,8(%r9)
834         movl    %edx,12(%r9)
835
836         movq    (%rsi),%r15
837         movq    8(%rsi),%r14
838         movq    16(%rsi),%r13
839         movq    24(%rsi),%r12
840         movq    32(%rsi),%rbp
841         movq    40(%rsi),%rbx
842         leaq    48(%rsi),%rsp
843 .Ldec_epilogue:
844         .byte   0xf3,0xc3
845 .size   AES_decrypt,.-AES_decrypt
846 .globl  private_AES_set_encrypt_key
847 .type   private_AES_set_encrypt_key,@function
848 .align  16
849 private_AES_set_encrypt_key:
850         pushq   %rbx
851         pushq   %rbp
852         pushq   %r12
853         pushq   %r13
854         pushq   %r14
855         pushq   %r15
856         subq    $8,%rsp
857 .Lenc_key_prologue:
858
859         call    _x86_64_AES_set_encrypt_key
860
861         movq    40(%rsp),%rbp
862         movq    48(%rsp),%rbx
863         addq    $56,%rsp
864 .Lenc_key_epilogue:
865         .byte   0xf3,0xc3
866 .size   private_AES_set_encrypt_key,.-private_AES_set_encrypt_key
867
868 .type   _x86_64_AES_set_encrypt_key,@function
869 .align  16
870 _x86_64_AES_set_encrypt_key:
871         movl    %esi,%ecx
872         movq    %rdi,%rsi
873         movq    %rdx,%rdi
874
875         testq   $-1,%rsi
876         jz      .Lbadpointer
877         testq   $-1,%rdi
878         jz      .Lbadpointer
879
880         leaq    .LAES_Te(%rip),%rbp
881         leaq    2048+128(%rbp),%rbp
882
883
884         movl    0-128(%rbp),%eax
885         movl    32-128(%rbp),%ebx
886         movl    64-128(%rbp),%r8d
887         movl    96-128(%rbp),%edx
888         movl    128-128(%rbp),%eax
889         movl    160-128(%rbp),%ebx
890         movl    192-128(%rbp),%r8d
891         movl    224-128(%rbp),%edx
892
893         cmpl    $128,%ecx
894         je      .L10rounds
895         cmpl    $192,%ecx
896         je      .L12rounds
897         cmpl    $256,%ecx
898         je      .L14rounds
899         movq    $-2,%rax
900         jmp     .Lexit
901
902 .L10rounds:
903         movq    0(%rsi),%rax
904         movq    8(%rsi),%rdx
905         movq    %rax,0(%rdi)
906         movq    %rdx,8(%rdi)
907
908         shrq    $32,%rdx
909         xorl    %ecx,%ecx
910         jmp     .L10shortcut
911 .align  4
912 .L10loop:
913         movl    0(%rdi),%eax
914         movl    12(%rdi),%edx
915 .L10shortcut:
916         movzbl  %dl,%esi
917         movzbl  -128(%rbp,%rsi,1),%ebx
918         movzbl  %dh,%esi
919         shll    $24,%ebx
920         xorl    %ebx,%eax
921
922         movzbl  -128(%rbp,%rsi,1),%ebx
923         shrl    $16,%edx
924         movzbl  %dl,%esi
925         xorl    %ebx,%eax
926
927         movzbl  -128(%rbp,%rsi,1),%ebx
928         movzbl  %dh,%esi
929         shll    $8,%ebx
930         xorl    %ebx,%eax
931
932         movzbl  -128(%rbp,%rsi,1),%ebx
933         shll    $16,%ebx
934         xorl    %ebx,%eax
935
936         xorl    1024-128(%rbp,%rcx,4),%eax
937         movl    %eax,16(%rdi)
938         xorl    4(%rdi),%eax
939         movl    %eax,20(%rdi)
940         xorl    8(%rdi),%eax
941         movl    %eax,24(%rdi)
942         xorl    12(%rdi),%eax
943         movl    %eax,28(%rdi)
944         addl    $1,%ecx
945         leaq    16(%rdi),%rdi
946         cmpl    $10,%ecx
947         jl      .L10loop
948
949         movl    $10,80(%rdi)
950         xorq    %rax,%rax
951         jmp     .Lexit
952
953 .L12rounds:
954         movq    0(%rsi),%rax
955         movq    8(%rsi),%rbx
956         movq    16(%rsi),%rdx
957         movq    %rax,0(%rdi)
958         movq    %rbx,8(%rdi)
959         movq    %rdx,16(%rdi)
960
961         shrq    $32,%rdx
962         xorl    %ecx,%ecx
963         jmp     .L12shortcut
964 .align  4
965 .L12loop:
966         movl    0(%rdi),%eax
967         movl    20(%rdi),%edx
968 .L12shortcut:
969         movzbl  %dl,%esi
970         movzbl  -128(%rbp,%rsi,1),%ebx
971         movzbl  %dh,%esi
972         shll    $24,%ebx
973         xorl    %ebx,%eax
974
975         movzbl  -128(%rbp,%rsi,1),%ebx
976         shrl    $16,%edx
977         movzbl  %dl,%esi
978         xorl    %ebx,%eax
979
980         movzbl  -128(%rbp,%rsi,1),%ebx
981         movzbl  %dh,%esi
982         shll    $8,%ebx
983         xorl    %ebx,%eax
984
985         movzbl  -128(%rbp,%rsi,1),%ebx
986         shll    $16,%ebx
987         xorl    %ebx,%eax
988
989         xorl    1024-128(%rbp,%rcx,4),%eax
990         movl    %eax,24(%rdi)
991         xorl    4(%rdi),%eax
992         movl    %eax,28(%rdi)
993         xorl    8(%rdi),%eax
994         movl    %eax,32(%rdi)
995         xorl    12(%rdi),%eax
996         movl    %eax,36(%rdi)
997
998         cmpl    $7,%ecx
999         je      .L12break
1000         addl    $1,%ecx
1001
1002         xorl    16(%rdi),%eax
1003         movl    %eax,40(%rdi)
1004         xorl    20(%rdi),%eax
1005         movl    %eax,44(%rdi)
1006
1007         leaq    24(%rdi),%rdi
1008         jmp     .L12loop
1009 .L12break:
1010         movl    $12,72(%rdi)
1011         xorq    %rax,%rax
1012         jmp     .Lexit
1013
1014 .L14rounds:
1015         movq    0(%rsi),%rax
1016         movq    8(%rsi),%rbx
1017         movq    16(%rsi),%rcx
1018         movq    24(%rsi),%rdx
1019         movq    %rax,0(%rdi)
1020         movq    %rbx,8(%rdi)
1021         movq    %rcx,16(%rdi)
1022         movq    %rdx,24(%rdi)
1023
1024         shrq    $32,%rdx
1025         xorl    %ecx,%ecx
1026         jmp     .L14shortcut
1027 .align  4
1028 .L14loop:
1029         movl    0(%rdi),%eax
1030         movl    28(%rdi),%edx
1031 .L14shortcut:
1032         movzbl  %dl,%esi
1033         movzbl  -128(%rbp,%rsi,1),%ebx
1034         movzbl  %dh,%esi
1035         shll    $24,%ebx
1036         xorl    %ebx,%eax
1037
1038         movzbl  -128(%rbp,%rsi,1),%ebx
1039         shrl    $16,%edx
1040         movzbl  %dl,%esi
1041         xorl    %ebx,%eax
1042
1043         movzbl  -128(%rbp,%rsi,1),%ebx
1044         movzbl  %dh,%esi
1045         shll    $8,%ebx
1046         xorl    %ebx,%eax
1047
1048         movzbl  -128(%rbp,%rsi,1),%ebx
1049         shll    $16,%ebx
1050         xorl    %ebx,%eax
1051
1052         xorl    1024-128(%rbp,%rcx,4),%eax
1053         movl    %eax,32(%rdi)
1054         xorl    4(%rdi),%eax
1055         movl    %eax,36(%rdi)
1056         xorl    8(%rdi),%eax
1057         movl    %eax,40(%rdi)
1058         xorl    12(%rdi),%eax
1059         movl    %eax,44(%rdi)
1060
1061         cmpl    $6,%ecx
1062         je      .L14break
1063         addl    $1,%ecx
1064
1065         movl    %eax,%edx
1066         movl    16(%rdi),%eax
1067         movzbl  %dl,%esi
1068         movzbl  -128(%rbp,%rsi,1),%ebx
1069         movzbl  %dh,%esi
1070         xorl    %ebx,%eax
1071
1072         movzbl  -128(%rbp,%rsi,1),%ebx
1073         shrl    $16,%edx
1074         shll    $8,%ebx
1075         movzbl  %dl,%esi
1076         xorl    %ebx,%eax
1077
1078         movzbl  -128(%rbp,%rsi,1),%ebx
1079         movzbl  %dh,%esi
1080         shll    $16,%ebx
1081         xorl    %ebx,%eax
1082
1083         movzbl  -128(%rbp,%rsi,1),%ebx
1084         shll    $24,%ebx
1085         xorl    %ebx,%eax
1086
1087         movl    %eax,48(%rdi)
1088         xorl    20(%rdi),%eax
1089         movl    %eax,52(%rdi)
1090         xorl    24(%rdi),%eax
1091         movl    %eax,56(%rdi)
1092         xorl    28(%rdi),%eax
1093         movl    %eax,60(%rdi)
1094
1095         leaq    32(%rdi),%rdi
1096         jmp     .L14loop
1097 .L14break:
1098         movl    $14,48(%rdi)
1099         xorq    %rax,%rax
1100         jmp     .Lexit
1101
1102 .Lbadpointer:
1103         movq    $-1,%rax
1104 .Lexit:
1105 .byte   0xf3,0xc3
1106 .size   _x86_64_AES_set_encrypt_key,.-_x86_64_AES_set_encrypt_key
1107 .globl  private_AES_set_decrypt_key
1108 .type   private_AES_set_decrypt_key,@function
1109 .align  16
1110 private_AES_set_decrypt_key:
1111         pushq   %rbx
1112         pushq   %rbp
1113         pushq   %r12
1114         pushq   %r13
1115         pushq   %r14
1116         pushq   %r15
1117         pushq   %rdx
1118 .Ldec_key_prologue:
1119
1120         call    _x86_64_AES_set_encrypt_key
1121         movq    (%rsp),%r8
1122         cmpl    $0,%eax
1123         jne     .Labort
1124
1125         movl    240(%r8),%r14d
1126         xorq    %rdi,%rdi
1127         leaq    (%rdi,%r14,4),%rcx
1128         movq    %r8,%rsi
1129         leaq    (%r8,%rcx,4),%rdi
1130 .align  4
1131 .Linvert:
1132         movq    0(%rsi),%rax
1133         movq    8(%rsi),%rbx
1134         movq    0(%rdi),%rcx
1135         movq    8(%rdi),%rdx
1136         movq    %rax,0(%rdi)
1137         movq    %rbx,8(%rdi)
1138         movq    %rcx,0(%rsi)
1139         movq    %rdx,8(%rsi)
1140         leaq    16(%rsi),%rsi
1141         leaq    -16(%rdi),%rdi
1142         cmpq    %rsi,%rdi
1143         jne     .Linvert
1144
1145         leaq    .LAES_Te+2048+1024(%rip),%rax
1146
1147         movq    40(%rax),%rsi
1148         movq    48(%rax),%rdi
1149         movq    56(%rax),%rbp
1150
1151         movq    %r8,%r15
1152         subl    $1,%r14d
1153 .align  4
1154 .Lpermute:
1155         leaq    16(%r15),%r15
1156         movq    0(%r15),%rax
1157         movq    8(%r15),%rcx
1158         movq    %rsi,%r9
1159         movq    %rsi,%r12
1160         andq    %rax,%r9
1161         andq    %rcx,%r12
1162         movq    %r9,%rbx
1163         movq    %r12,%rdx
1164         shrq    $7,%r9
1165         leaq    (%rax,%rax,1),%r8
1166         shrq    $7,%r12
1167         leaq    (%rcx,%rcx,1),%r11
1168         subq    %r9,%rbx
1169         subq    %r12,%rdx
1170         andq    %rdi,%r8
1171         andq    %rdi,%r11
1172         andq    %rbp,%rbx
1173         andq    %rbp,%rdx
1174         xorq    %rbx,%r8
1175         xorq    %rdx,%r11
1176         movq    %rsi,%r10
1177         movq    %rsi,%r13
1178
1179         andq    %r8,%r10
1180         andq    %r11,%r13
1181         movq    %r10,%rbx
1182         movq    %r13,%rdx
1183         shrq    $7,%r10
1184         leaq    (%r8,%r8,1),%r9
1185         shrq    $7,%r13
1186         leaq    (%r11,%r11,1),%r12
1187         subq    %r10,%rbx
1188         subq    %r13,%rdx
1189         andq    %rdi,%r9
1190         andq    %rdi,%r12
1191         andq    %rbp,%rbx
1192         andq    %rbp,%rdx
1193         xorq    %rbx,%r9
1194         xorq    %rdx,%r12
1195         movq    %rsi,%r10
1196         movq    %rsi,%r13
1197
1198         andq    %r9,%r10
1199         andq    %r12,%r13
1200         movq    %r10,%rbx
1201         movq    %r13,%rdx
1202         shrq    $7,%r10
1203         xorq    %rax,%r8
1204         shrq    $7,%r13
1205         xorq    %rcx,%r11
1206         subq    %r10,%rbx
1207         subq    %r13,%rdx
1208         leaq    (%r9,%r9,1),%r10
1209         leaq    (%r12,%r12,1),%r13
1210         xorq    %rax,%r9
1211         xorq    %rcx,%r12
1212         andq    %rdi,%r10
1213         andq    %rdi,%r13
1214         andq    %rbp,%rbx
1215         andq    %rbp,%rdx
1216         xorq    %rbx,%r10
1217         xorq    %rdx,%r13
1218
1219         xorq    %r10,%rax
1220         xorq    %r13,%rcx
1221         xorq    %r10,%r8
1222         xorq    %r13,%r11
1223         movq    %rax,%rbx
1224         movq    %rcx,%rdx
1225         xorq    %r10,%r9
1226         shrq    $32,%rbx
1227         xorq    %r13,%r12
1228         shrq    $32,%rdx
1229         xorq    %r8,%r10
1230         roll    $8,%eax
1231         xorq    %r11,%r13
1232         roll    $8,%ecx
1233         xorq    %r9,%r10
1234         roll    $8,%ebx
1235         xorq    %r12,%r13
1236
1237         roll    $8,%edx
1238         xorl    %r10d,%eax
1239         shrq    $32,%r10
1240         xorl    %r13d,%ecx
1241         shrq    $32,%r13
1242         xorl    %r10d,%ebx
1243         xorl    %r13d,%edx
1244
1245         movq    %r8,%r10
1246         roll    $24,%r8d
1247         movq    %r11,%r13
1248         roll    $24,%r11d
1249         shrq    $32,%r10
1250         xorl    %r8d,%eax
1251         shrq    $32,%r13
1252         xorl    %r11d,%ecx
1253         roll    $24,%r10d
1254         movq    %r9,%r8
1255         roll    $24,%r13d
1256         movq    %r12,%r11
1257         shrq    $32,%r8
1258         xorl    %r10d,%ebx
1259         shrq    $32,%r11
1260         xorl    %r13d,%edx
1261
1262
1263         roll    $16,%r9d
1264
1265         roll    $16,%r12d
1266
1267         roll    $16,%r8d
1268
1269         xorl    %r9d,%eax
1270         roll    $16,%r11d
1271         xorl    %r12d,%ecx
1272
1273         xorl    %r8d,%ebx
1274         xorl    %r11d,%edx
1275         movl    %eax,0(%r15)
1276         movl    %ebx,4(%r15)
1277         movl    %ecx,8(%r15)
1278         movl    %edx,12(%r15)
1279         subl    $1,%r14d
1280         jnz     .Lpermute
1281
1282         xorq    %rax,%rax
1283 .Labort:
1284         movq    8(%rsp),%r15
1285         movq    16(%rsp),%r14
1286         movq    24(%rsp),%r13
1287         movq    32(%rsp),%r12
1288         movq    40(%rsp),%rbp
1289         movq    48(%rsp),%rbx
1290         addq    $56,%rsp
1291 .Ldec_key_epilogue:
1292         .byte   0xf3,0xc3
1293 .size   private_AES_set_decrypt_key,.-private_AES_set_decrypt_key
1294 .globl  AES_cbc_encrypt
1295 .type   AES_cbc_encrypt,@function
1296 .align  16
1297
1298 .globl  asm_AES_cbc_encrypt
1299 .hidden asm_AES_cbc_encrypt
1300 asm_AES_cbc_encrypt:
1301 AES_cbc_encrypt:
1302         cmpq    $0,%rdx
1303         je      .Lcbc_epilogue
1304         pushfq
1305         pushq   %rbx
1306         pushq   %rbp
1307         pushq   %r12
1308         pushq   %r13
1309         pushq   %r14
1310         pushq   %r15
1311 .Lcbc_prologue:
1312
1313         cld
1314         movl    %r9d,%r9d
1315
1316         leaq    .LAES_Te(%rip),%r14
1317         cmpq    $0,%r9
1318         jne     .Lcbc_picked_te
1319         leaq    .LAES_Td(%rip),%r14
1320 .Lcbc_picked_te:
1321
1322         movl    OPENSSL_ia32cap_P(%rip),%r10d
1323         cmpq    $512,%rdx
1324         jb      .Lcbc_slow_prologue
1325         testq   $15,%rdx
1326         jnz     .Lcbc_slow_prologue
1327         btl     $28,%r10d
1328         jc      .Lcbc_slow_prologue
1329
1330
1331         leaq    -88-248(%rsp),%r15
1332         andq    $-64,%r15
1333
1334
1335         movq    %r14,%r10
1336         leaq    2304(%r14),%r11
1337         movq    %r15,%r12
1338         andq    $0xFFF,%r10
1339         andq    $0xFFF,%r11
1340         andq    $0xFFF,%r12
1341
1342         cmpq    %r11,%r12
1343         jb      .Lcbc_te_break_out
1344         subq    %r11,%r12
1345         subq    %r12,%r15
1346         jmp     .Lcbc_te_ok
1347 .Lcbc_te_break_out:
1348         subq    %r10,%r12
1349         andq    $0xFFF,%r12
1350         addq    $320,%r12
1351         subq    %r12,%r15
1352 .align  4
1353 .Lcbc_te_ok:
1354
1355         xchgq   %rsp,%r15
1356
1357         movq    %r15,16(%rsp)
1358 .Lcbc_fast_body:
1359         movq    %rdi,24(%rsp)
1360         movq    %rsi,32(%rsp)
1361         movq    %rdx,40(%rsp)
1362         movq    %rcx,48(%rsp)
1363         movq    %r8,56(%rsp)
1364         movl    $0,80+240(%rsp)
1365         movq    %r8,%rbp
1366         movq    %r9,%rbx
1367         movq    %rsi,%r9
1368         movq    %rdi,%r8
1369         movq    %rcx,%r15
1370
1371         movl    240(%r15),%eax
1372
1373         movq    %r15,%r10
1374         subq    %r14,%r10
1375         andq    $0xfff,%r10
1376         cmpq    $2304,%r10
1377         jb      .Lcbc_do_ecopy
1378         cmpq    $4096-248,%r10
1379         jb      .Lcbc_skip_ecopy
1380 .align  4
1381 .Lcbc_do_ecopy:
1382         movq    %r15,%rsi
1383         leaq    80(%rsp),%rdi
1384         leaq    80(%rsp),%r15
1385         movl    $30,%ecx
1386 .long   0x90A548F3
1387         movl    %eax,(%rdi)
1388 .Lcbc_skip_ecopy:
1389         movq    %r15,0(%rsp)
1390
1391         movl    $18,%ecx
1392 .align  4
1393 .Lcbc_prefetch_te:
1394         movq    0(%r14),%r10
1395         movq    32(%r14),%r11
1396         movq    64(%r14),%r12
1397         movq    96(%r14),%r13
1398         leaq    128(%r14),%r14
1399         subl    $1,%ecx
1400         jnz     .Lcbc_prefetch_te
1401         leaq    -2304(%r14),%r14
1402
1403         cmpq    $0,%rbx
1404         je      .LFAST_DECRYPT
1405
1406
1407         movl    0(%rbp),%eax
1408         movl    4(%rbp),%ebx
1409         movl    8(%rbp),%ecx
1410         movl    12(%rbp),%edx
1411
1412 .align  4
1413 .Lcbc_fast_enc_loop:
1414         xorl    0(%r8),%eax
1415         xorl    4(%r8),%ebx
1416         xorl    8(%r8),%ecx
1417         xorl    12(%r8),%edx
1418         movq    0(%rsp),%r15
1419         movq    %r8,24(%rsp)
1420
1421         call    _x86_64_AES_encrypt
1422
1423         movq    24(%rsp),%r8
1424         movq    40(%rsp),%r10
1425         movl    %eax,0(%r9)
1426         movl    %ebx,4(%r9)
1427         movl    %ecx,8(%r9)
1428         movl    %edx,12(%r9)
1429
1430         leaq    16(%r8),%r8
1431         leaq    16(%r9),%r9
1432         subq    $16,%r10
1433         testq   $-16,%r10
1434         movq    %r10,40(%rsp)
1435         jnz     .Lcbc_fast_enc_loop
1436         movq    56(%rsp),%rbp
1437         movl    %eax,0(%rbp)
1438         movl    %ebx,4(%rbp)
1439         movl    %ecx,8(%rbp)
1440         movl    %edx,12(%rbp)
1441
1442         jmp     .Lcbc_fast_cleanup
1443
1444
1445 .align  16
1446 .LFAST_DECRYPT:
1447         cmpq    %r8,%r9
1448         je      .Lcbc_fast_dec_in_place
1449
1450         movq    %rbp,64(%rsp)
1451 .align  4
1452 .Lcbc_fast_dec_loop:
1453         movl    0(%r8),%eax
1454         movl    4(%r8),%ebx
1455         movl    8(%r8),%ecx
1456         movl    12(%r8),%edx
1457         movq    0(%rsp),%r15
1458         movq    %r8,24(%rsp)
1459
1460         call    _x86_64_AES_decrypt
1461
1462         movq    64(%rsp),%rbp
1463         movq    24(%rsp),%r8
1464         movq    40(%rsp),%r10
1465         xorl    0(%rbp),%eax
1466         xorl    4(%rbp),%ebx
1467         xorl    8(%rbp),%ecx
1468         xorl    12(%rbp),%edx
1469         movq    %r8,%rbp
1470
1471         subq    $16,%r10
1472         movq    %r10,40(%rsp)
1473         movq    %rbp,64(%rsp)
1474
1475         movl    %eax,0(%r9)
1476         movl    %ebx,4(%r9)
1477         movl    %ecx,8(%r9)
1478         movl    %edx,12(%r9)
1479
1480         leaq    16(%r8),%r8
1481         leaq    16(%r9),%r9
1482         jnz     .Lcbc_fast_dec_loop
1483         movq    56(%rsp),%r12
1484         movq    0(%rbp),%r10
1485         movq    8(%rbp),%r11
1486         movq    %r10,0(%r12)
1487         movq    %r11,8(%r12)
1488         jmp     .Lcbc_fast_cleanup
1489
1490 .align  16
1491 .Lcbc_fast_dec_in_place:
1492         movq    0(%rbp),%r10
1493         movq    8(%rbp),%r11
1494         movq    %r10,0+64(%rsp)
1495         movq    %r11,8+64(%rsp)
1496 .align  4
1497 .Lcbc_fast_dec_in_place_loop:
1498         movl    0(%r8),%eax
1499         movl    4(%r8),%ebx
1500         movl    8(%r8),%ecx
1501         movl    12(%r8),%edx
1502         movq    0(%rsp),%r15
1503         movq    %r8,24(%rsp)
1504
1505         call    _x86_64_AES_decrypt
1506
1507         movq    24(%rsp),%r8
1508         movq    40(%rsp),%r10
1509         xorl    0+64(%rsp),%eax
1510         xorl    4+64(%rsp),%ebx
1511         xorl    8+64(%rsp),%ecx
1512         xorl    12+64(%rsp),%edx
1513
1514         movq    0(%r8),%r11
1515         movq    8(%r8),%r12
1516         subq    $16,%r10
1517         jz      .Lcbc_fast_dec_in_place_done
1518
1519         movq    %r11,0+64(%rsp)
1520         movq    %r12,8+64(%rsp)
1521
1522         movl    %eax,0(%r9)
1523         movl    %ebx,4(%r9)
1524         movl    %ecx,8(%r9)
1525         movl    %edx,12(%r9)
1526
1527         leaq    16(%r8),%r8
1528         leaq    16(%r9),%r9
1529         movq    %r10,40(%rsp)
1530         jmp     .Lcbc_fast_dec_in_place_loop
1531 .Lcbc_fast_dec_in_place_done:
1532         movq    56(%rsp),%rdi
1533         movq    %r11,0(%rdi)
1534         movq    %r12,8(%rdi)
1535
1536         movl    %eax,0(%r9)
1537         movl    %ebx,4(%r9)
1538         movl    %ecx,8(%r9)
1539         movl    %edx,12(%r9)
1540
1541 .align  4
1542 .Lcbc_fast_cleanup:
1543         cmpl    $0,80+240(%rsp)
1544         leaq    80(%rsp),%rdi
1545         je      .Lcbc_exit
1546         movl    $30,%ecx
1547         xorq    %rax,%rax
1548 .long   0x90AB48F3
1549
1550         jmp     .Lcbc_exit
1551
1552
1553 .align  16
1554 .Lcbc_slow_prologue:
1555
1556         leaq    -88(%rsp),%rbp
1557         andq    $-64,%rbp
1558
1559         leaq    -88-63(%rcx),%r10
1560         subq    %rbp,%r10
1561         negq    %r10
1562         andq    $0x3c0,%r10
1563         subq    %r10,%rbp
1564
1565         xchgq   %rsp,%rbp
1566
1567         movq    %rbp,16(%rsp)
1568 .Lcbc_slow_body:
1569
1570
1571
1572
1573         movq    %r8,56(%rsp)
1574         movq    %r8,%rbp
1575         movq    %r9,%rbx
1576         movq    %rsi,%r9
1577         movq    %rdi,%r8
1578         movq    %rcx,%r15
1579         movq    %rdx,%r10
1580
1581         movl    240(%r15),%eax
1582         movq    %r15,0(%rsp)
1583         shll    $4,%eax
1584         leaq    (%r15,%rax,1),%rax
1585         movq    %rax,8(%rsp)
1586
1587
1588         leaq    2048(%r14),%r14
1589         leaq    768-8(%rsp),%rax
1590         subq    %r14,%rax
1591         andq    $0x300,%rax
1592         leaq    (%r14,%rax,1),%r14
1593
1594         cmpq    $0,%rbx
1595         je      .LSLOW_DECRYPT
1596
1597
1598         testq   $-16,%r10
1599         movl    0(%rbp),%eax
1600         movl    4(%rbp),%ebx
1601         movl    8(%rbp),%ecx
1602         movl    12(%rbp),%edx
1603         jz      .Lcbc_slow_enc_tail
1604
1605 .align  4
1606 .Lcbc_slow_enc_loop:
1607         xorl    0(%r8),%eax
1608         xorl    4(%r8),%ebx
1609         xorl    8(%r8),%ecx
1610         xorl    12(%r8),%edx
1611         movq    0(%rsp),%r15
1612         movq    %r8,24(%rsp)
1613         movq    %r9,32(%rsp)
1614         movq    %r10,40(%rsp)
1615
1616         call    _x86_64_AES_encrypt_compact
1617
1618         movq    24(%rsp),%r8
1619         movq    32(%rsp),%r9
1620         movq    40(%rsp),%r10
1621         movl    %eax,0(%r9)
1622         movl    %ebx,4(%r9)
1623         movl    %ecx,8(%r9)
1624         movl    %edx,12(%r9)
1625
1626         leaq    16(%r8),%r8
1627         leaq    16(%r9),%r9
1628         subq    $16,%r10
1629         testq   $-16,%r10
1630         jnz     .Lcbc_slow_enc_loop
1631         testq   $15,%r10
1632         jnz     .Lcbc_slow_enc_tail
1633         movq    56(%rsp),%rbp
1634         movl    %eax,0(%rbp)
1635         movl    %ebx,4(%rbp)
1636         movl    %ecx,8(%rbp)
1637         movl    %edx,12(%rbp)
1638
1639         jmp     .Lcbc_exit
1640
1641 .align  4
1642 .Lcbc_slow_enc_tail:
1643         movq    %rax,%r11
1644         movq    %rcx,%r12
1645         movq    %r10,%rcx
1646         movq    %r8,%rsi
1647         movq    %r9,%rdi
1648 .long   0x9066A4F3
1649         movq    $16,%rcx
1650         subq    %r10,%rcx
1651         xorq    %rax,%rax
1652 .long   0x9066AAF3
1653         movq    %r9,%r8
1654         movq    $16,%r10
1655         movq    %r11,%rax
1656         movq    %r12,%rcx
1657         jmp     .Lcbc_slow_enc_loop
1658
1659 .align  16
1660 .LSLOW_DECRYPT:
1661         shrq    $3,%rax
1662         addq    %rax,%r14
1663
1664         movq    0(%rbp),%r11
1665         movq    8(%rbp),%r12
1666         movq    %r11,0+64(%rsp)
1667         movq    %r12,8+64(%rsp)
1668
1669 .align  4
1670 .Lcbc_slow_dec_loop:
1671         movl    0(%r8),%eax
1672         movl    4(%r8),%ebx
1673         movl    8(%r8),%ecx
1674         movl    12(%r8),%edx
1675         movq    0(%rsp),%r15
1676         movq    %r8,24(%rsp)
1677         movq    %r9,32(%rsp)
1678         movq    %r10,40(%rsp)
1679
1680         call    _x86_64_AES_decrypt_compact
1681
1682         movq    24(%rsp),%r8
1683         movq    32(%rsp),%r9
1684         movq    40(%rsp),%r10
1685         xorl    0+64(%rsp),%eax
1686         xorl    4+64(%rsp),%ebx
1687         xorl    8+64(%rsp),%ecx
1688         xorl    12+64(%rsp),%edx
1689
1690         movq    0(%r8),%r11
1691         movq    8(%r8),%r12
1692         subq    $16,%r10
1693         jc      .Lcbc_slow_dec_partial
1694         jz      .Lcbc_slow_dec_done
1695
1696         movq    %r11,0+64(%rsp)
1697         movq    %r12,8+64(%rsp)
1698
1699         movl    %eax,0(%r9)
1700         movl    %ebx,4(%r9)
1701         movl    %ecx,8(%r9)
1702         movl    %edx,12(%r9)
1703
1704         leaq    16(%r8),%r8
1705         leaq    16(%r9),%r9
1706         jmp     .Lcbc_slow_dec_loop
1707 .Lcbc_slow_dec_done:
1708         movq    56(%rsp),%rdi
1709         movq    %r11,0(%rdi)
1710         movq    %r12,8(%rdi)
1711
1712         movl    %eax,0(%r9)
1713         movl    %ebx,4(%r9)
1714         movl    %ecx,8(%r9)
1715         movl    %edx,12(%r9)
1716
1717         jmp     .Lcbc_exit
1718
1719 .align  4
1720 .Lcbc_slow_dec_partial:
1721         movq    56(%rsp),%rdi
1722         movq    %r11,0(%rdi)
1723         movq    %r12,8(%rdi)
1724
1725         movl    %eax,0+64(%rsp)
1726         movl    %ebx,4+64(%rsp)
1727         movl    %ecx,8+64(%rsp)
1728         movl    %edx,12+64(%rsp)
1729
1730         movq    %r9,%rdi
1731         leaq    64(%rsp),%rsi
1732         leaq    16(%r10),%rcx
1733 .long   0x9066A4F3
1734         jmp     .Lcbc_exit
1735
1736 .align  16
1737 .Lcbc_exit:
1738         movq    16(%rsp),%rsi
1739         movq    (%rsi),%r15
1740         movq    8(%rsi),%r14
1741         movq    16(%rsi),%r13
1742         movq    24(%rsi),%r12
1743         movq    32(%rsi),%rbp
1744         movq    40(%rsi),%rbx
1745         leaq    48(%rsi),%rsp
1746 .Lcbc_popfq:
1747         popfq
1748 .Lcbc_epilogue:
1749         .byte   0xf3,0xc3
1750 .size   AES_cbc_encrypt,.-AES_cbc_encrypt
1751 .align  64
1752 .LAES_Te:
1753 .long   0xa56363c6,0xa56363c6
1754 .long   0x847c7cf8,0x847c7cf8
1755 .long   0x997777ee,0x997777ee
1756 .long   0x8d7b7bf6,0x8d7b7bf6
1757 .long   0x0df2f2ff,0x0df2f2ff
1758 .long   0xbd6b6bd6,0xbd6b6bd6
1759 .long   0xb16f6fde,0xb16f6fde
1760 .long   0x54c5c591,0x54c5c591
1761 .long   0x50303060,0x50303060
1762 .long   0x03010102,0x03010102
1763 .long   0xa96767ce,0xa96767ce
1764 .long   0x7d2b2b56,0x7d2b2b56
1765 .long   0x19fefee7,0x19fefee7
1766 .long   0x62d7d7b5,0x62d7d7b5
1767 .long   0xe6abab4d,0xe6abab4d
1768 .long   0x9a7676ec,0x9a7676ec
1769 .long   0x45caca8f,0x45caca8f
1770 .long   0x9d82821f,0x9d82821f
1771 .long   0x40c9c989,0x40c9c989
1772 .long   0x877d7dfa,0x877d7dfa
1773 .long   0x15fafaef,0x15fafaef
1774 .long   0xeb5959b2,0xeb5959b2
1775 .long   0xc947478e,0xc947478e
1776 .long   0x0bf0f0fb,0x0bf0f0fb
1777 .long   0xecadad41,0xecadad41
1778 .long   0x67d4d4b3,0x67d4d4b3
1779 .long   0xfda2a25f,0xfda2a25f
1780 .long   0xeaafaf45,0xeaafaf45
1781 .long   0xbf9c9c23,0xbf9c9c23
1782 .long   0xf7a4a453,0xf7a4a453
1783 .long   0x967272e4,0x967272e4
1784 .long   0x5bc0c09b,0x5bc0c09b
1785 .long   0xc2b7b775,0xc2b7b775
1786 .long   0x1cfdfde1,0x1cfdfde1
1787 .long   0xae93933d,0xae93933d
1788 .long   0x6a26264c,0x6a26264c
1789 .long   0x5a36366c,0x5a36366c
1790 .long   0x413f3f7e,0x413f3f7e
1791 .long   0x02f7f7f5,0x02f7f7f5
1792 .long   0x4fcccc83,0x4fcccc83
1793 .long   0x5c343468,0x5c343468
1794 .long   0xf4a5a551,0xf4a5a551
1795 .long   0x34e5e5d1,0x34e5e5d1
1796 .long   0x08f1f1f9,0x08f1f1f9
1797 .long   0x937171e2,0x937171e2
1798 .long   0x73d8d8ab,0x73d8d8ab
1799 .long   0x53313162,0x53313162
1800 .long   0x3f15152a,0x3f15152a
1801 .long   0x0c040408,0x0c040408
1802 .long   0x52c7c795,0x52c7c795
1803 .long   0x65232346,0x65232346
1804 .long   0x5ec3c39d,0x5ec3c39d
1805 .long   0x28181830,0x28181830
1806 .long   0xa1969637,0xa1969637
1807 .long   0x0f05050a,0x0f05050a
1808 .long   0xb59a9a2f,0xb59a9a2f
1809 .long   0x0907070e,0x0907070e
1810 .long   0x36121224,0x36121224
1811 .long   0x9b80801b,0x9b80801b
1812 .long   0x3de2e2df,0x3de2e2df
1813 .long   0x26ebebcd,0x26ebebcd
1814 .long   0x6927274e,0x6927274e
1815 .long   0xcdb2b27f,0xcdb2b27f
1816 .long   0x9f7575ea,0x9f7575ea
1817 .long   0x1b090912,0x1b090912
1818 .long   0x9e83831d,0x9e83831d
1819 .long   0x742c2c58,0x742c2c58
1820 .long   0x2e1a1a34,0x2e1a1a34
1821 .long   0x2d1b1b36,0x2d1b1b36
1822 .long   0xb26e6edc,0xb26e6edc
1823 .long   0xee5a5ab4,0xee5a5ab4
1824 .long   0xfba0a05b,0xfba0a05b
1825 .long   0xf65252a4,0xf65252a4
1826 .long   0x4d3b3b76,0x4d3b3b76
1827 .long   0x61d6d6b7,0x61d6d6b7
1828 .long   0xceb3b37d,0xceb3b37d
1829 .long   0x7b292952,0x7b292952
1830 .long   0x3ee3e3dd,0x3ee3e3dd
1831 .long   0x712f2f5e,0x712f2f5e
1832 .long   0x97848413,0x97848413
1833 .long   0xf55353a6,0xf55353a6
1834 .long   0x68d1d1b9,0x68d1d1b9
1835 .long   0x00000000,0x00000000
1836 .long   0x2cededc1,0x2cededc1
1837 .long   0x60202040,0x60202040
1838 .long   0x1ffcfce3,0x1ffcfce3
1839 .long   0xc8b1b179,0xc8b1b179
1840 .long   0xed5b5bb6,0xed5b5bb6
1841 .long   0xbe6a6ad4,0xbe6a6ad4
1842 .long   0x46cbcb8d,0x46cbcb8d
1843 .long   0xd9bebe67,0xd9bebe67
1844 .long   0x4b393972,0x4b393972
1845 .long   0xde4a4a94,0xde4a4a94
1846 .long   0xd44c4c98,0xd44c4c98
1847 .long   0xe85858b0,0xe85858b0
1848 .long   0x4acfcf85,0x4acfcf85
1849 .long   0x6bd0d0bb,0x6bd0d0bb
1850 .long   0x2aefefc5,0x2aefefc5
1851 .long   0xe5aaaa4f,0xe5aaaa4f
1852 .long   0x16fbfbed,0x16fbfbed
1853 .long   0xc5434386,0xc5434386
1854 .long   0xd74d4d9a,0xd74d4d9a
1855 .long   0x55333366,0x55333366
1856 .long   0x94858511,0x94858511
1857 .long   0xcf45458a,0xcf45458a
1858 .long   0x10f9f9e9,0x10f9f9e9
1859 .long   0x06020204,0x06020204
1860 .long   0x817f7ffe,0x817f7ffe
1861 .long   0xf05050a0,0xf05050a0
1862 .long   0x443c3c78,0x443c3c78
1863 .long   0xba9f9f25,0xba9f9f25
1864 .long   0xe3a8a84b,0xe3a8a84b
1865 .long   0xf35151a2,0xf35151a2
1866 .long   0xfea3a35d,0xfea3a35d
1867 .long   0xc0404080,0xc0404080
1868 .long   0x8a8f8f05,0x8a8f8f05
1869 .long   0xad92923f,0xad92923f
1870 .long   0xbc9d9d21,0xbc9d9d21
1871 .long   0x48383870,0x48383870
1872 .long   0x04f5f5f1,0x04f5f5f1
1873 .long   0xdfbcbc63,0xdfbcbc63
1874 .long   0xc1b6b677,0xc1b6b677
1875 .long   0x75dadaaf,0x75dadaaf
1876 .long   0x63212142,0x63212142
1877 .long   0x30101020,0x30101020
1878 .long   0x1affffe5,0x1affffe5
1879 .long   0x0ef3f3fd,0x0ef3f3fd
1880 .long   0x6dd2d2bf,0x6dd2d2bf
1881 .long   0x4ccdcd81,0x4ccdcd81
1882 .long   0x140c0c18,0x140c0c18
1883 .long   0x35131326,0x35131326
1884 .long   0x2fececc3,0x2fececc3
1885 .long   0xe15f5fbe,0xe15f5fbe
1886 .long   0xa2979735,0xa2979735
1887 .long   0xcc444488,0xcc444488
1888 .long   0x3917172e,0x3917172e
1889 .long   0x57c4c493,0x57c4c493
1890 .long   0xf2a7a755,0xf2a7a755
1891 .long   0x827e7efc,0x827e7efc
1892 .long   0x473d3d7a,0x473d3d7a
1893 .long   0xac6464c8,0xac6464c8
1894 .long   0xe75d5dba,0xe75d5dba
1895 .long   0x2b191932,0x2b191932
1896 .long   0x957373e6,0x957373e6
1897 .long   0xa06060c0,0xa06060c0
1898 .long   0x98818119,0x98818119
1899 .long   0xd14f4f9e,0xd14f4f9e
1900 .long   0x7fdcdca3,0x7fdcdca3
1901 .long   0x66222244,0x66222244
1902 .long   0x7e2a2a54,0x7e2a2a54
1903 .long   0xab90903b,0xab90903b
1904 .long   0x8388880b,0x8388880b
1905 .long   0xca46468c,0xca46468c
1906 .long   0x29eeeec7,0x29eeeec7
1907 .long   0xd3b8b86b,0xd3b8b86b
1908 .long   0x3c141428,0x3c141428
1909 .long   0x79dedea7,0x79dedea7
1910 .long   0xe25e5ebc,0xe25e5ebc
1911 .long   0x1d0b0b16,0x1d0b0b16
1912 .long   0x76dbdbad,0x76dbdbad
1913 .long   0x3be0e0db,0x3be0e0db
1914 .long   0x56323264,0x56323264
1915 .long   0x4e3a3a74,0x4e3a3a74
1916 .long   0x1e0a0a14,0x1e0a0a14
1917 .long   0xdb494992,0xdb494992
1918 .long   0x0a06060c,0x0a06060c
1919 .long   0x6c242448,0x6c242448
1920 .long   0xe45c5cb8,0xe45c5cb8
1921 .long   0x5dc2c29f,0x5dc2c29f
1922 .long   0x6ed3d3bd,0x6ed3d3bd
1923 .long   0xefacac43,0xefacac43
1924 .long   0xa66262c4,0xa66262c4
1925 .long   0xa8919139,0xa8919139
1926 .long   0xa4959531,0xa4959531
1927 .long   0x37e4e4d3,0x37e4e4d3
1928 .long   0x8b7979f2,0x8b7979f2
1929 .long   0x32e7e7d5,0x32e7e7d5
1930 .long   0x43c8c88b,0x43c8c88b
1931 .long   0x5937376e,0x5937376e
1932 .long   0xb76d6dda,0xb76d6dda
1933 .long   0x8c8d8d01,0x8c8d8d01
1934 .long   0x64d5d5b1,0x64d5d5b1
1935 .long   0xd24e4e9c,0xd24e4e9c
1936 .long   0xe0a9a949,0xe0a9a949
1937 .long   0xb46c6cd8,0xb46c6cd8
1938 .long   0xfa5656ac,0xfa5656ac
1939 .long   0x07f4f4f3,0x07f4f4f3
1940 .long   0x25eaeacf,0x25eaeacf
1941 .long   0xaf6565ca,0xaf6565ca
1942 .long   0x8e7a7af4,0x8e7a7af4
1943 .long   0xe9aeae47,0xe9aeae47
1944 .long   0x18080810,0x18080810
1945 .long   0xd5baba6f,0xd5baba6f
1946 .long   0x887878f0,0x887878f0
1947 .long   0x6f25254a,0x6f25254a
1948 .long   0x722e2e5c,0x722e2e5c
1949 .long   0x241c1c38,0x241c1c38
1950 .long   0xf1a6a657,0xf1a6a657
1951 .long   0xc7b4b473,0xc7b4b473
1952 .long   0x51c6c697,0x51c6c697
1953 .long   0x23e8e8cb,0x23e8e8cb
1954 .long   0x7cdddda1,0x7cdddda1
1955 .long   0x9c7474e8,0x9c7474e8
1956 .long   0x211f1f3e,0x211f1f3e
1957 .long   0xdd4b4b96,0xdd4b4b96
1958 .long   0xdcbdbd61,0xdcbdbd61
1959 .long   0x868b8b0d,0x868b8b0d
1960 .long   0x858a8a0f,0x858a8a0f
1961 .long   0x907070e0,0x907070e0
1962 .long   0x423e3e7c,0x423e3e7c
1963 .long   0xc4b5b571,0xc4b5b571
1964 .long   0xaa6666cc,0xaa6666cc
1965 .long   0xd8484890,0xd8484890
1966 .long   0x05030306,0x05030306
1967 .long   0x01f6f6f7,0x01f6f6f7
1968 .long   0x120e0e1c,0x120e0e1c
1969 .long   0xa36161c2,0xa36161c2
1970 .long   0x5f35356a,0x5f35356a
1971 .long   0xf95757ae,0xf95757ae
1972 .long   0xd0b9b969,0xd0b9b969
1973 .long   0x91868617,0x91868617
1974 .long   0x58c1c199,0x58c1c199
1975 .long   0x271d1d3a,0x271d1d3a
1976 .long   0xb99e9e27,0xb99e9e27
1977 .long   0x38e1e1d9,0x38e1e1d9
1978 .long   0x13f8f8eb,0x13f8f8eb
1979 .long   0xb398982b,0xb398982b
1980 .long   0x33111122,0x33111122
1981 .long   0xbb6969d2,0xbb6969d2
1982 .long   0x70d9d9a9,0x70d9d9a9
1983 .long   0x898e8e07,0x898e8e07
1984 .long   0xa7949433,0xa7949433
1985 .long   0xb69b9b2d,0xb69b9b2d
1986 .long   0x221e1e3c,0x221e1e3c
1987 .long   0x92878715,0x92878715
1988 .long   0x20e9e9c9,0x20e9e9c9
1989 .long   0x49cece87,0x49cece87
1990 .long   0xff5555aa,0xff5555aa
1991 .long   0x78282850,0x78282850
1992 .long   0x7adfdfa5,0x7adfdfa5
1993 .long   0x8f8c8c03,0x8f8c8c03
1994 .long   0xf8a1a159,0xf8a1a159
1995 .long   0x80898909,0x80898909
1996 .long   0x170d0d1a,0x170d0d1a
1997 .long   0xdabfbf65,0xdabfbf65
1998 .long   0x31e6e6d7,0x31e6e6d7
1999 .long   0xc6424284,0xc6424284
2000 .long   0xb86868d0,0xb86868d0
2001 .long   0xc3414182,0xc3414182
2002 .long   0xb0999929,0xb0999929
2003 .long   0x772d2d5a,0x772d2d5a
2004 .long   0x110f0f1e,0x110f0f1e
2005 .long   0xcbb0b07b,0xcbb0b07b
2006 .long   0xfc5454a8,0xfc5454a8
2007 .long   0xd6bbbb6d,0xd6bbbb6d
2008 .long   0x3a16162c,0x3a16162c
2009 .byte   0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2010 .byte   0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2011 .byte   0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2012 .byte   0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2013 .byte   0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2014 .byte   0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2015 .byte   0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2016 .byte   0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2017 .byte   0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2018 .byte   0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2019 .byte   0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2020 .byte   0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2021 .byte   0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2022 .byte   0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2023 .byte   0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2024 .byte   0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2025 .byte   0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2026 .byte   0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2027 .byte   0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2028 .byte   0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2029 .byte   0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2030 .byte   0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2031 .byte   0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2032 .byte   0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2033 .byte   0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2034 .byte   0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2035 .byte   0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2036 .byte   0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2037 .byte   0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2038 .byte   0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2039 .byte   0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2040 .byte   0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2041 .byte   0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2042 .byte   0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2043 .byte   0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2044 .byte   0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2045 .byte   0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2046 .byte   0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2047 .byte   0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2048 .byte   0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2049 .byte   0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2050 .byte   0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2051 .byte   0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2052 .byte   0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2053 .byte   0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2054 .byte   0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2055 .byte   0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2056 .byte   0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2057 .byte   0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2058 .byte   0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2059 .byte   0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2060 .byte   0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2061 .byte   0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2062 .byte   0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2063 .byte   0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2064 .byte   0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2065 .byte   0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2066 .byte   0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2067 .byte   0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2068 .byte   0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2069 .byte   0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2070 .byte   0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2071 .byte   0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2072 .byte   0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2073 .byte   0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2074 .byte   0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2075 .byte   0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2076 .byte   0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2077 .byte   0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2078 .byte   0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2079 .byte   0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2080 .byte   0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2081 .byte   0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2082 .byte   0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2083 .byte   0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2084 .byte   0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2085 .byte   0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2086 .byte   0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2087 .byte   0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2088 .byte   0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2089 .byte   0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2090 .byte   0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2091 .byte   0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2092 .byte   0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2093 .byte   0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2094 .byte   0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2095 .byte   0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2096 .byte   0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2097 .byte   0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2098 .byte   0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2099 .byte   0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2100 .byte   0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2101 .byte   0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2102 .byte   0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2103 .byte   0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2104 .byte   0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2105 .byte   0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2106 .byte   0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2107 .byte   0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2108 .byte   0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2109 .byte   0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2110 .byte   0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2111 .byte   0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2112 .byte   0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2113 .byte   0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2114 .byte   0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2115 .byte   0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2116 .byte   0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2117 .byte   0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2118 .byte   0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2119 .byte   0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2120 .byte   0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2121 .byte   0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2122 .byte   0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2123 .byte   0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2124 .byte   0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2125 .byte   0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2126 .byte   0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2127 .byte   0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2128 .byte   0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2129 .byte   0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2130 .byte   0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2131 .byte   0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2132 .byte   0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2133 .byte   0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2134 .byte   0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2135 .byte   0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2136 .byte   0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2137 .long   0x00000001, 0x00000002, 0x00000004, 0x00000008
2138 .long   0x00000010, 0x00000020, 0x00000040, 0x00000080
2139 .long   0x0000001b, 0x00000036, 0x80808080, 0x80808080
2140 .long   0xfefefefe, 0xfefefefe, 0x1b1b1b1b, 0x1b1b1b1b
2141 .align  64
2142 .LAES_Td:
2143 .long   0x50a7f451,0x50a7f451
2144 .long   0x5365417e,0x5365417e
2145 .long   0xc3a4171a,0xc3a4171a
2146 .long   0x965e273a,0x965e273a
2147 .long   0xcb6bab3b,0xcb6bab3b
2148 .long   0xf1459d1f,0xf1459d1f
2149 .long   0xab58faac,0xab58faac
2150 .long   0x9303e34b,0x9303e34b
2151 .long   0x55fa3020,0x55fa3020
2152 .long   0xf66d76ad,0xf66d76ad
2153 .long   0x9176cc88,0x9176cc88
2154 .long   0x254c02f5,0x254c02f5
2155 .long   0xfcd7e54f,0xfcd7e54f
2156 .long   0xd7cb2ac5,0xd7cb2ac5
2157 .long   0x80443526,0x80443526
2158 .long   0x8fa362b5,0x8fa362b5
2159 .long   0x495ab1de,0x495ab1de
2160 .long   0x671bba25,0x671bba25
2161 .long   0x980eea45,0x980eea45
2162 .long   0xe1c0fe5d,0xe1c0fe5d
2163 .long   0x02752fc3,0x02752fc3
2164 .long   0x12f04c81,0x12f04c81
2165 .long   0xa397468d,0xa397468d
2166 .long   0xc6f9d36b,0xc6f9d36b
2167 .long   0xe75f8f03,0xe75f8f03
2168 .long   0x959c9215,0x959c9215
2169 .long   0xeb7a6dbf,0xeb7a6dbf
2170 .long   0xda595295,0xda595295
2171 .long   0x2d83bed4,0x2d83bed4
2172 .long   0xd3217458,0xd3217458
2173 .long   0x2969e049,0x2969e049
2174 .long   0x44c8c98e,0x44c8c98e
2175 .long   0x6a89c275,0x6a89c275
2176 .long   0x78798ef4,0x78798ef4
2177 .long   0x6b3e5899,0x6b3e5899
2178 .long   0xdd71b927,0xdd71b927
2179 .long   0xb64fe1be,0xb64fe1be
2180 .long   0x17ad88f0,0x17ad88f0
2181 .long   0x66ac20c9,0x66ac20c9
2182 .long   0xb43ace7d,0xb43ace7d
2183 .long   0x184adf63,0x184adf63
2184 .long   0x82311ae5,0x82311ae5
2185 .long   0x60335197,0x60335197
2186 .long   0x457f5362,0x457f5362
2187 .long   0xe07764b1,0xe07764b1
2188 .long   0x84ae6bbb,0x84ae6bbb
2189 .long   0x1ca081fe,0x1ca081fe
2190 .long   0x942b08f9,0x942b08f9
2191 .long   0x58684870,0x58684870
2192 .long   0x19fd458f,0x19fd458f
2193 .long   0x876cde94,0x876cde94
2194 .long   0xb7f87b52,0xb7f87b52
2195 .long   0x23d373ab,0x23d373ab
2196 .long   0xe2024b72,0xe2024b72
2197 .long   0x578f1fe3,0x578f1fe3
2198 .long   0x2aab5566,0x2aab5566
2199 .long   0x0728ebb2,0x0728ebb2
2200 .long   0x03c2b52f,0x03c2b52f
2201 .long   0x9a7bc586,0x9a7bc586
2202 .long   0xa50837d3,0xa50837d3
2203 .long   0xf2872830,0xf2872830
2204 .long   0xb2a5bf23,0xb2a5bf23
2205 .long   0xba6a0302,0xba6a0302
2206 .long   0x5c8216ed,0x5c8216ed
2207 .long   0x2b1ccf8a,0x2b1ccf8a
2208 .long   0x92b479a7,0x92b479a7
2209 .long   0xf0f207f3,0xf0f207f3
2210 .long   0xa1e2694e,0xa1e2694e
2211 .long   0xcdf4da65,0xcdf4da65
2212 .long   0xd5be0506,0xd5be0506
2213 .long   0x1f6234d1,0x1f6234d1
2214 .long   0x8afea6c4,0x8afea6c4
2215 .long   0x9d532e34,0x9d532e34
2216 .long   0xa055f3a2,0xa055f3a2
2217 .long   0x32e18a05,0x32e18a05
2218 .long   0x75ebf6a4,0x75ebf6a4
2219 .long   0x39ec830b,0x39ec830b
2220 .long   0xaaef6040,0xaaef6040
2221 .long   0x069f715e,0x069f715e
2222 .long   0x51106ebd,0x51106ebd
2223 .long   0xf98a213e,0xf98a213e
2224 .long   0x3d06dd96,0x3d06dd96
2225 .long   0xae053edd,0xae053edd
2226 .long   0x46bde64d,0x46bde64d
2227 .long   0xb58d5491,0xb58d5491
2228 .long   0x055dc471,0x055dc471
2229 .long   0x6fd40604,0x6fd40604
2230 .long   0xff155060,0xff155060
2231 .long   0x24fb9819,0x24fb9819
2232 .long   0x97e9bdd6,0x97e9bdd6
2233 .long   0xcc434089,0xcc434089
2234 .long   0x779ed967,0x779ed967
2235 .long   0xbd42e8b0,0xbd42e8b0
2236 .long   0x888b8907,0x888b8907
2237 .long   0x385b19e7,0x385b19e7
2238 .long   0xdbeec879,0xdbeec879
2239 .long   0x470a7ca1,0x470a7ca1
2240 .long   0xe90f427c,0xe90f427c
2241 .long   0xc91e84f8,0xc91e84f8
2242 .long   0x00000000,0x00000000
2243 .long   0x83868009,0x83868009
2244 .long   0x48ed2b32,0x48ed2b32
2245 .long   0xac70111e,0xac70111e
2246 .long   0x4e725a6c,0x4e725a6c
2247 .long   0xfbff0efd,0xfbff0efd
2248 .long   0x5638850f,0x5638850f
2249 .long   0x1ed5ae3d,0x1ed5ae3d
2250 .long   0x27392d36,0x27392d36
2251 .long   0x64d90f0a,0x64d90f0a
2252 .long   0x21a65c68,0x21a65c68
2253 .long   0xd1545b9b,0xd1545b9b
2254 .long   0x3a2e3624,0x3a2e3624
2255 .long   0xb1670a0c,0xb1670a0c
2256 .long   0x0fe75793,0x0fe75793
2257 .long   0xd296eeb4,0xd296eeb4
2258 .long   0x9e919b1b,0x9e919b1b
2259 .long   0x4fc5c080,0x4fc5c080
2260 .long   0xa220dc61,0xa220dc61
2261 .long   0x694b775a,0x694b775a
2262 .long   0x161a121c,0x161a121c
2263 .long   0x0aba93e2,0x0aba93e2
2264 .long   0xe52aa0c0,0xe52aa0c0
2265 .long   0x43e0223c,0x43e0223c
2266 .long   0x1d171b12,0x1d171b12
2267 .long   0x0b0d090e,0x0b0d090e
2268 .long   0xadc78bf2,0xadc78bf2
2269 .long   0xb9a8b62d,0xb9a8b62d
2270 .long   0xc8a91e14,0xc8a91e14
2271 .long   0x8519f157,0x8519f157
2272 .long   0x4c0775af,0x4c0775af
2273 .long   0xbbdd99ee,0xbbdd99ee
2274 .long   0xfd607fa3,0xfd607fa3
2275 .long   0x9f2601f7,0x9f2601f7
2276 .long   0xbcf5725c,0xbcf5725c
2277 .long   0xc53b6644,0xc53b6644
2278 .long   0x347efb5b,0x347efb5b
2279 .long   0x7629438b,0x7629438b
2280 .long   0xdcc623cb,0xdcc623cb
2281 .long   0x68fcedb6,0x68fcedb6
2282 .long   0x63f1e4b8,0x63f1e4b8
2283 .long   0xcadc31d7,0xcadc31d7
2284 .long   0x10856342,0x10856342
2285 .long   0x40229713,0x40229713
2286 .long   0x2011c684,0x2011c684
2287 .long   0x7d244a85,0x7d244a85
2288 .long   0xf83dbbd2,0xf83dbbd2
2289 .long   0x1132f9ae,0x1132f9ae
2290 .long   0x6da129c7,0x6da129c7
2291 .long   0x4b2f9e1d,0x4b2f9e1d
2292 .long   0xf330b2dc,0xf330b2dc
2293 .long   0xec52860d,0xec52860d
2294 .long   0xd0e3c177,0xd0e3c177
2295 .long   0x6c16b32b,0x6c16b32b
2296 .long   0x99b970a9,0x99b970a9
2297 .long   0xfa489411,0xfa489411
2298 .long   0x2264e947,0x2264e947
2299 .long   0xc48cfca8,0xc48cfca8
2300 .long   0x1a3ff0a0,0x1a3ff0a0
2301 .long   0xd82c7d56,0xd82c7d56
2302 .long   0xef903322,0xef903322
2303 .long   0xc74e4987,0xc74e4987
2304 .long   0xc1d138d9,0xc1d138d9
2305 .long   0xfea2ca8c,0xfea2ca8c
2306 .long   0x360bd498,0x360bd498
2307 .long   0xcf81f5a6,0xcf81f5a6
2308 .long   0x28de7aa5,0x28de7aa5
2309 .long   0x268eb7da,0x268eb7da
2310 .long   0xa4bfad3f,0xa4bfad3f
2311 .long   0xe49d3a2c,0xe49d3a2c
2312 .long   0x0d927850,0x0d927850
2313 .long   0x9bcc5f6a,0x9bcc5f6a
2314 .long   0x62467e54,0x62467e54
2315 .long   0xc2138df6,0xc2138df6
2316 .long   0xe8b8d890,0xe8b8d890
2317 .long   0x5ef7392e,0x5ef7392e
2318 .long   0xf5afc382,0xf5afc382
2319 .long   0xbe805d9f,0xbe805d9f
2320 .long   0x7c93d069,0x7c93d069
2321 .long   0xa92dd56f,0xa92dd56f
2322 .long   0xb31225cf,0xb31225cf
2323 .long   0x3b99acc8,0x3b99acc8
2324 .long   0xa77d1810,0xa77d1810
2325 .long   0x6e639ce8,0x6e639ce8
2326 .long   0x7bbb3bdb,0x7bbb3bdb
2327 .long   0x097826cd,0x097826cd
2328 .long   0xf418596e,0xf418596e
2329 .long   0x01b79aec,0x01b79aec
2330 .long   0xa89a4f83,0xa89a4f83
2331 .long   0x656e95e6,0x656e95e6
2332 .long   0x7ee6ffaa,0x7ee6ffaa
2333 .long   0x08cfbc21,0x08cfbc21
2334 .long   0xe6e815ef,0xe6e815ef
2335 .long   0xd99be7ba,0xd99be7ba
2336 .long   0xce366f4a,0xce366f4a
2337 .long   0xd4099fea,0xd4099fea
2338 .long   0xd67cb029,0xd67cb029
2339 .long   0xafb2a431,0xafb2a431
2340 .long   0x31233f2a,0x31233f2a
2341 .long   0x3094a5c6,0x3094a5c6
2342 .long   0xc066a235,0xc066a235
2343 .long   0x37bc4e74,0x37bc4e74
2344 .long   0xa6ca82fc,0xa6ca82fc
2345 .long   0xb0d090e0,0xb0d090e0
2346 .long   0x15d8a733,0x15d8a733
2347 .long   0x4a9804f1,0x4a9804f1
2348 .long   0xf7daec41,0xf7daec41
2349 .long   0x0e50cd7f,0x0e50cd7f
2350 .long   0x2ff69117,0x2ff69117
2351 .long   0x8dd64d76,0x8dd64d76
2352 .long   0x4db0ef43,0x4db0ef43
2353 .long   0x544daacc,0x544daacc
2354 .long   0xdf0496e4,0xdf0496e4
2355 .long   0xe3b5d19e,0xe3b5d19e
2356 .long   0x1b886a4c,0x1b886a4c
2357 .long   0xb81f2cc1,0xb81f2cc1
2358 .long   0x7f516546,0x7f516546
2359 .long   0x04ea5e9d,0x04ea5e9d
2360 .long   0x5d358c01,0x5d358c01
2361 .long   0x737487fa,0x737487fa
2362 .long   0x2e410bfb,0x2e410bfb
2363 .long   0x5a1d67b3,0x5a1d67b3
2364 .long   0x52d2db92,0x52d2db92
2365 .long   0x335610e9,0x335610e9
2366 .long   0x1347d66d,0x1347d66d
2367 .long   0x8c61d79a,0x8c61d79a
2368 .long   0x7a0ca137,0x7a0ca137
2369 .long   0x8e14f859,0x8e14f859
2370 .long   0x893c13eb,0x893c13eb
2371 .long   0xee27a9ce,0xee27a9ce
2372 .long   0x35c961b7,0x35c961b7
2373 .long   0xede51ce1,0xede51ce1
2374 .long   0x3cb1477a,0x3cb1477a
2375 .long   0x59dfd29c,0x59dfd29c
2376 .long   0x3f73f255,0x3f73f255
2377 .long   0x79ce1418,0x79ce1418
2378 .long   0xbf37c773,0xbf37c773
2379 .long   0xeacdf753,0xeacdf753
2380 .long   0x5baafd5f,0x5baafd5f
2381 .long   0x146f3ddf,0x146f3ddf
2382 .long   0x86db4478,0x86db4478
2383 .long   0x81f3afca,0x81f3afca
2384 .long   0x3ec468b9,0x3ec468b9
2385 .long   0x2c342438,0x2c342438
2386 .long   0x5f40a3c2,0x5f40a3c2
2387 .long   0x72c31d16,0x72c31d16
2388 .long   0x0c25e2bc,0x0c25e2bc
2389 .long   0x8b493c28,0x8b493c28
2390 .long   0x41950dff,0x41950dff
2391 .long   0x7101a839,0x7101a839
2392 .long   0xdeb30c08,0xdeb30c08
2393 .long   0x9ce4b4d8,0x9ce4b4d8
2394 .long   0x90c15664,0x90c15664
2395 .long   0x6184cb7b,0x6184cb7b
2396 .long   0x70b632d5,0x70b632d5
2397 .long   0x745c6c48,0x745c6c48
2398 .long   0x4257b8d0,0x4257b8d0
2399 .byte   0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2400 .byte   0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2401 .byte   0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2402 .byte   0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2403 .byte   0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2404 .byte   0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2405 .byte   0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2406 .byte   0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2407 .byte   0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2408 .byte   0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2409 .byte   0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2410 .byte   0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2411 .byte   0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2412 .byte   0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2413 .byte   0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2414 .byte   0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2415 .byte   0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2416 .byte   0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2417 .byte   0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2418 .byte   0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2419 .byte   0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2420 .byte   0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2421 .byte   0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2422 .byte   0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2423 .byte   0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2424 .byte   0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2425 .byte   0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2426 .byte   0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2427 .byte   0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2428 .byte   0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2429 .byte   0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2430 .byte   0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2431 .long   0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe
2432 .long   0x1b1b1b1b, 0x1b1b1b1b, 0, 0
2433 .byte   0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2434 .byte   0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2435 .byte   0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2436 .byte   0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2437 .byte   0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2438 .byte   0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2439 .byte   0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2440 .byte   0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2441 .byte   0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2442 .byte   0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2443 .byte   0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2444 .byte   0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2445 .byte   0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2446 .byte   0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2447 .byte   0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2448 .byte   0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2449 .byte   0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2450 .byte   0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2451 .byte   0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2452 .byte   0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2453 .byte   0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2454 .byte   0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2455 .byte   0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2456 .byte   0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2457 .byte   0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2458 .byte   0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2459 .byte   0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2460 .byte   0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2461 .byte   0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2462 .byte   0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2463 .byte   0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2464 .byte   0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2465 .long   0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe
2466 .long   0x1b1b1b1b, 0x1b1b1b1b, 0, 0
2467 .byte   0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2468 .byte   0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2469 .byte   0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2470 .byte   0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2471 .byte   0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2472 .byte   0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2473 .byte   0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2474 .byte   0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2475 .byte   0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2476 .byte   0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2477 .byte   0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2478 .byte   0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2479 .byte   0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2480 .byte   0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2481 .byte   0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2482 .byte   0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2483 .byte   0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2484 .byte   0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2485 .byte   0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2486 .byte   0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2487 .byte   0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2488 .byte   0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2489 .byte   0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2490 .byte   0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2491 .byte   0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2492 .byte   0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2493 .byte   0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2494 .byte   0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2495 .byte   0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2496 .byte   0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2497 .byte   0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2498 .byte   0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2499 .long   0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe
2500 .long   0x1b1b1b1b, 0x1b1b1b1b, 0, 0
2501 .byte   0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2502 .byte   0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2503 .byte   0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2504 .byte   0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2505 .byte   0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2506 .byte   0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2507 .byte   0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2508 .byte   0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2509 .byte   0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2510 .byte   0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2511 .byte   0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2512 .byte   0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2513 .byte   0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2514 .byte   0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2515 .byte   0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2516 .byte   0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2517 .byte   0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2518 .byte   0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2519 .byte   0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2520 .byte   0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2521 .byte   0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2522 .byte   0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2523 .byte   0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2524 .byte   0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2525 .byte   0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2526 .byte   0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2527 .byte   0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2528 .byte   0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2529 .byte   0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2530 .byte   0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2531 .byte   0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2532 .byte   0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2533 .long   0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe
2534 .long   0x1b1b1b1b, 0x1b1b1b1b, 0, 0
2535 .byte   65,69,83,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
2536 .align  64