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