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