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