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