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