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