• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
16.p2align	4
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	L$enc_loop
26.p2align	4
27L$enc_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	L$enc_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
168
169.p2align	4
170_x86_64_AES_encrypt_compact:
171
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	L$enc_loop_compact
182.p2align	4
183L$enc_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	L$enc_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	L$enc_loop_compact
334.p2align	4
335L$enc_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
342
343.p2align	4
344.globl	_aes_nohw_encrypt
345.private_extern _aes_nohw_encrypt
346
347.private_extern	_aes_nohw_encrypt
348_aes_nohw_encrypt:
349
350	movq	%rsp,%rax
351
352	pushq	%rbx
353
354	pushq	%rbp
355
356	pushq	%r12
357
358	pushq	%r13
359
360	pushq	%r14
361
362	pushq	%r15
363
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
377L$enc_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	L$AES_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
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
411	movq	-40(%rsi),%r14
412
413	movq	-32(%rsi),%r13
414
415	movq	-24(%rsi),%r12
416
417	movq	-16(%rsi),%rbp
418
419	movq	-8(%rsi),%rbx
420
421	leaq	(%rsi),%rsp
422
423L$enc_epilogue:
424	.byte	0xf3,0xc3
425
426
427
428.p2align	4
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	L$dec_loop
438.p2align	4
439L$dec_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	L$dec_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
582
583.p2align	4
584_x86_64_AES_decrypt_compact:
585
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	L$dec_loop_compact
596
597.p2align	4
598L$dec_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	L$dec_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	L$dec_loop_compact
800.p2align	4
801L$dec_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
808
809.p2align	4
810.globl	_aes_nohw_decrypt
811.private_extern _aes_nohw_decrypt
812
813.private_extern	_aes_nohw_decrypt
814_aes_nohw_decrypt:
815
816	movq	%rsp,%rax
817
818	pushq	%rbx
819
820	pushq	%rbp
821
822	pushq	%r12
823
824	pushq	%r13
825
826	pushq	%r14
827
828	pushq	%r15
829
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
843L$dec_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	L$AES_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
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
879	movq	-40(%rsi),%r14
880
881	movq	-32(%rsi),%r13
882
883	movq	-24(%rsi),%r12
884
885	movq	-16(%rsi),%rbp
886
887	movq	-8(%rsi),%rbx
888
889	leaq	(%rsi),%rsp
890
891L$dec_epilogue:
892	.byte	0xf3,0xc3
893
894
895.p2align	4
896.globl	_aes_nohw_set_encrypt_key
897.private_extern _aes_nohw_set_encrypt_key
898
899_aes_nohw_set_encrypt_key:
900
901	pushq	%rbx
902
903	pushq	%rbp
904
905	pushq	%r12
906
907	pushq	%r13
908
909	pushq	%r14
910
911	pushq	%r15
912
913	subq	$8,%rsp
914
915L$enc_key_prologue:
916
917	call	_x86_64_AES_set_encrypt_key
918
919	movq	40(%rsp),%rbp
920
921	movq	48(%rsp),%rbx
922
923	addq	$56,%rsp
924
925L$enc_key_epilogue:
926	.byte	0xf3,0xc3
927
928
929
930
931.p2align	4
932_x86_64_AES_set_encrypt_key:
933
934	movl	%esi,%ecx
935	movq	%rdi,%rsi
936	movq	%rdx,%rdi
937
938	testq	$-1,%rsi
939	jz	L$badpointer
940	testq	$-1,%rdi
941	jz	L$badpointer
942
943	leaq	L$AES_Te(%rip),%rbp
944	leaq	2048+128(%rbp),%rbp
945
946
947	movl	0-128(%rbp),%eax
948	movl	32-128(%rbp),%ebx
949	movl	64-128(%rbp),%r8d
950	movl	96-128(%rbp),%edx
951	movl	128-128(%rbp),%eax
952	movl	160-128(%rbp),%ebx
953	movl	192-128(%rbp),%r8d
954	movl	224-128(%rbp),%edx
955
956	cmpl	$128,%ecx
957	je	L$10rounds
958	cmpl	$192,%ecx
959	je	L$12rounds
960	cmpl	$256,%ecx
961	je	L$14rounds
962	movq	$-2,%rax
963	jmp	L$exit
964
965L$10rounds:
966	movq	0(%rsi),%rax
967	movq	8(%rsi),%rdx
968	movq	%rax,0(%rdi)
969	movq	%rdx,8(%rdi)
970
971	shrq	$32,%rdx
972	xorl	%ecx,%ecx
973	jmp	L$10shortcut
974.p2align	2
975L$10loop:
976	movl	0(%rdi),%eax
977	movl	12(%rdi),%edx
978L$10shortcut:
979	movzbl	%dl,%esi
980	movzbl	-128(%rbp,%rsi,1),%ebx
981	movzbl	%dh,%esi
982	shll	$24,%ebx
983	xorl	%ebx,%eax
984
985	movzbl	-128(%rbp,%rsi,1),%ebx
986	shrl	$16,%edx
987	movzbl	%dl,%esi
988	xorl	%ebx,%eax
989
990	movzbl	-128(%rbp,%rsi,1),%ebx
991	movzbl	%dh,%esi
992	shll	$8,%ebx
993	xorl	%ebx,%eax
994
995	movzbl	-128(%rbp,%rsi,1),%ebx
996	shll	$16,%ebx
997	xorl	%ebx,%eax
998
999	xorl	1024-128(%rbp,%rcx,4),%eax
1000	movl	%eax,16(%rdi)
1001	xorl	4(%rdi),%eax
1002	movl	%eax,20(%rdi)
1003	xorl	8(%rdi),%eax
1004	movl	%eax,24(%rdi)
1005	xorl	12(%rdi),%eax
1006	movl	%eax,28(%rdi)
1007	addl	$1,%ecx
1008	leaq	16(%rdi),%rdi
1009	cmpl	$10,%ecx
1010	jl	L$10loop
1011
1012	movl	$10,80(%rdi)
1013	xorq	%rax,%rax
1014	jmp	L$exit
1015
1016L$12rounds:
1017	movq	0(%rsi),%rax
1018	movq	8(%rsi),%rbx
1019	movq	16(%rsi),%rdx
1020	movq	%rax,0(%rdi)
1021	movq	%rbx,8(%rdi)
1022	movq	%rdx,16(%rdi)
1023
1024	shrq	$32,%rdx
1025	xorl	%ecx,%ecx
1026	jmp	L$12shortcut
1027.p2align	2
1028L$12loop:
1029	movl	0(%rdi),%eax
1030	movl	20(%rdi),%edx
1031L$12shortcut:
1032	movzbl	%dl,%esi
1033	movzbl	-128(%rbp,%rsi,1),%ebx
1034	movzbl	%dh,%esi
1035	shll	$24,%ebx
1036	xorl	%ebx,%eax
1037
1038	movzbl	-128(%rbp,%rsi,1),%ebx
1039	shrl	$16,%edx
1040	movzbl	%dl,%esi
1041	xorl	%ebx,%eax
1042
1043	movzbl	-128(%rbp,%rsi,1),%ebx
1044	movzbl	%dh,%esi
1045	shll	$8,%ebx
1046	xorl	%ebx,%eax
1047
1048	movzbl	-128(%rbp,%rsi,1),%ebx
1049	shll	$16,%ebx
1050	xorl	%ebx,%eax
1051
1052	xorl	1024-128(%rbp,%rcx,4),%eax
1053	movl	%eax,24(%rdi)
1054	xorl	4(%rdi),%eax
1055	movl	%eax,28(%rdi)
1056	xorl	8(%rdi),%eax
1057	movl	%eax,32(%rdi)
1058	xorl	12(%rdi),%eax
1059	movl	%eax,36(%rdi)
1060
1061	cmpl	$7,%ecx
1062	je	L$12break
1063	addl	$1,%ecx
1064
1065	xorl	16(%rdi),%eax
1066	movl	%eax,40(%rdi)
1067	xorl	20(%rdi),%eax
1068	movl	%eax,44(%rdi)
1069
1070	leaq	24(%rdi),%rdi
1071	jmp	L$12loop
1072L$12break:
1073	movl	$12,72(%rdi)
1074	xorq	%rax,%rax
1075	jmp	L$exit
1076
1077L$14rounds:
1078	movq	0(%rsi),%rax
1079	movq	8(%rsi),%rbx
1080	movq	16(%rsi),%rcx
1081	movq	24(%rsi),%rdx
1082	movq	%rax,0(%rdi)
1083	movq	%rbx,8(%rdi)
1084	movq	%rcx,16(%rdi)
1085	movq	%rdx,24(%rdi)
1086
1087	shrq	$32,%rdx
1088	xorl	%ecx,%ecx
1089	jmp	L$14shortcut
1090.p2align	2
1091L$14loop:
1092	movl	0(%rdi),%eax
1093	movl	28(%rdi),%edx
1094L$14shortcut:
1095	movzbl	%dl,%esi
1096	movzbl	-128(%rbp,%rsi,1),%ebx
1097	movzbl	%dh,%esi
1098	shll	$24,%ebx
1099	xorl	%ebx,%eax
1100
1101	movzbl	-128(%rbp,%rsi,1),%ebx
1102	shrl	$16,%edx
1103	movzbl	%dl,%esi
1104	xorl	%ebx,%eax
1105
1106	movzbl	-128(%rbp,%rsi,1),%ebx
1107	movzbl	%dh,%esi
1108	shll	$8,%ebx
1109	xorl	%ebx,%eax
1110
1111	movzbl	-128(%rbp,%rsi,1),%ebx
1112	shll	$16,%ebx
1113	xorl	%ebx,%eax
1114
1115	xorl	1024-128(%rbp,%rcx,4),%eax
1116	movl	%eax,32(%rdi)
1117	xorl	4(%rdi),%eax
1118	movl	%eax,36(%rdi)
1119	xorl	8(%rdi),%eax
1120	movl	%eax,40(%rdi)
1121	xorl	12(%rdi),%eax
1122	movl	%eax,44(%rdi)
1123
1124	cmpl	$6,%ecx
1125	je	L$14break
1126	addl	$1,%ecx
1127
1128	movl	%eax,%edx
1129	movl	16(%rdi),%eax
1130	movzbl	%dl,%esi
1131	movzbl	-128(%rbp,%rsi,1),%ebx
1132	movzbl	%dh,%esi
1133	xorl	%ebx,%eax
1134
1135	movzbl	-128(%rbp,%rsi,1),%ebx
1136	shrl	$16,%edx
1137	shll	$8,%ebx
1138	movzbl	%dl,%esi
1139	xorl	%ebx,%eax
1140
1141	movzbl	-128(%rbp,%rsi,1),%ebx
1142	movzbl	%dh,%esi
1143	shll	$16,%ebx
1144	xorl	%ebx,%eax
1145
1146	movzbl	-128(%rbp,%rsi,1),%ebx
1147	shll	$24,%ebx
1148	xorl	%ebx,%eax
1149
1150	movl	%eax,48(%rdi)
1151	xorl	20(%rdi),%eax
1152	movl	%eax,52(%rdi)
1153	xorl	24(%rdi),%eax
1154	movl	%eax,56(%rdi)
1155	xorl	28(%rdi),%eax
1156	movl	%eax,60(%rdi)
1157
1158	leaq	32(%rdi),%rdi
1159	jmp	L$14loop
1160L$14break:
1161	movl	$14,48(%rdi)
1162	xorq	%rax,%rax
1163	jmp	L$exit
1164
1165L$badpointer:
1166	movq	$-1,%rax
1167L$exit:
1168.byte	0xf3,0xc3
1169
1170
1171.p2align	4
1172.globl	_aes_nohw_set_decrypt_key
1173.private_extern _aes_nohw_set_decrypt_key
1174
1175_aes_nohw_set_decrypt_key:
1176
1177	pushq	%rbx
1178
1179	pushq	%rbp
1180
1181	pushq	%r12
1182
1183	pushq	%r13
1184
1185	pushq	%r14
1186
1187	pushq	%r15
1188
1189	pushq	%rdx
1190
1191L$dec_key_prologue:
1192
1193	call	_x86_64_AES_set_encrypt_key
1194	movq	(%rsp),%r8
1195	cmpl	$0,%eax
1196	jne	L$abort
1197
1198	movl	240(%r8),%r14d
1199	xorq	%rdi,%rdi
1200	leaq	(%rdi,%r14,4),%rcx
1201	movq	%r8,%rsi
1202	leaq	(%r8,%rcx,4),%rdi
1203.p2align	2
1204L$invert:
1205	movq	0(%rsi),%rax
1206	movq	8(%rsi),%rbx
1207	movq	0(%rdi),%rcx
1208	movq	8(%rdi),%rdx
1209	movq	%rax,0(%rdi)
1210	movq	%rbx,8(%rdi)
1211	movq	%rcx,0(%rsi)
1212	movq	%rdx,8(%rsi)
1213	leaq	16(%rsi),%rsi
1214	leaq	-16(%rdi),%rdi
1215	cmpq	%rsi,%rdi
1216	jne	L$invert
1217
1218	leaq	L$AES_Te+2048+1024(%rip),%rax
1219
1220	movq	40(%rax),%rsi
1221	movq	48(%rax),%rdi
1222	movq	56(%rax),%rbp
1223
1224	movq	%r8,%r15
1225	subl	$1,%r14d
1226.p2align	2
1227L$permute:
1228	leaq	16(%r15),%r15
1229	movq	0(%r15),%rax
1230	movq	8(%r15),%rcx
1231	movq	%rsi,%r9
1232	movq	%rsi,%r12
1233	andq	%rax,%r9
1234	andq	%rcx,%r12
1235	movq	%r9,%rbx
1236	movq	%r12,%rdx
1237	shrq	$7,%r9
1238	leaq	(%rax,%rax,1),%r8
1239	shrq	$7,%r12
1240	leaq	(%rcx,%rcx,1),%r11
1241	subq	%r9,%rbx
1242	subq	%r12,%rdx
1243	andq	%rdi,%r8
1244	andq	%rdi,%r11
1245	andq	%rbp,%rbx
1246	andq	%rbp,%rdx
1247	xorq	%rbx,%r8
1248	xorq	%rdx,%r11
1249	movq	%rsi,%r10
1250	movq	%rsi,%r13
1251
1252	andq	%r8,%r10
1253	andq	%r11,%r13
1254	movq	%r10,%rbx
1255	movq	%r13,%rdx
1256	shrq	$7,%r10
1257	leaq	(%r8,%r8,1),%r9
1258	shrq	$7,%r13
1259	leaq	(%r11,%r11,1),%r12
1260	subq	%r10,%rbx
1261	subq	%r13,%rdx
1262	andq	%rdi,%r9
1263	andq	%rdi,%r12
1264	andq	%rbp,%rbx
1265	andq	%rbp,%rdx
1266	xorq	%rbx,%r9
1267	xorq	%rdx,%r12
1268	movq	%rsi,%r10
1269	movq	%rsi,%r13
1270
1271	andq	%r9,%r10
1272	andq	%r12,%r13
1273	movq	%r10,%rbx
1274	movq	%r13,%rdx
1275	shrq	$7,%r10
1276	xorq	%rax,%r8
1277	shrq	$7,%r13
1278	xorq	%rcx,%r11
1279	subq	%r10,%rbx
1280	subq	%r13,%rdx
1281	leaq	(%r9,%r9,1),%r10
1282	leaq	(%r12,%r12,1),%r13
1283	xorq	%rax,%r9
1284	xorq	%rcx,%r12
1285	andq	%rdi,%r10
1286	andq	%rdi,%r13
1287	andq	%rbp,%rbx
1288	andq	%rbp,%rdx
1289	xorq	%rbx,%r10
1290	xorq	%rdx,%r13
1291
1292	xorq	%r10,%rax
1293	xorq	%r13,%rcx
1294	xorq	%r10,%r8
1295	xorq	%r13,%r11
1296	movq	%rax,%rbx
1297	movq	%rcx,%rdx
1298	xorq	%r10,%r9
1299	shrq	$32,%rbx
1300	xorq	%r13,%r12
1301	shrq	$32,%rdx
1302	xorq	%r8,%r10
1303	roll	$8,%eax
1304	xorq	%r11,%r13
1305	roll	$8,%ecx
1306	xorq	%r9,%r10
1307	roll	$8,%ebx
1308	xorq	%r12,%r13
1309
1310	roll	$8,%edx
1311	xorl	%r10d,%eax
1312	shrq	$32,%r10
1313	xorl	%r13d,%ecx
1314	shrq	$32,%r13
1315	xorl	%r10d,%ebx
1316	xorl	%r13d,%edx
1317
1318	movq	%r8,%r10
1319	roll	$24,%r8d
1320	movq	%r11,%r13
1321	roll	$24,%r11d
1322	shrq	$32,%r10
1323	xorl	%r8d,%eax
1324	shrq	$32,%r13
1325	xorl	%r11d,%ecx
1326	roll	$24,%r10d
1327	movq	%r9,%r8
1328	roll	$24,%r13d
1329	movq	%r12,%r11
1330	shrq	$32,%r8
1331	xorl	%r10d,%ebx
1332	shrq	$32,%r11
1333	xorl	%r13d,%edx
1334
1335
1336	roll	$16,%r9d
1337
1338	roll	$16,%r12d
1339
1340	roll	$16,%r8d
1341
1342	xorl	%r9d,%eax
1343	roll	$16,%r11d
1344	xorl	%r12d,%ecx
1345
1346	xorl	%r8d,%ebx
1347	xorl	%r11d,%edx
1348	movl	%eax,0(%r15)
1349	movl	%ebx,4(%r15)
1350	movl	%ecx,8(%r15)
1351	movl	%edx,12(%r15)
1352	subl	$1,%r14d
1353	jnz	L$permute
1354
1355	xorq	%rax,%rax
1356L$abort:
1357	movq	8(%rsp),%r15
1358
1359	movq	16(%rsp),%r14
1360
1361	movq	24(%rsp),%r13
1362
1363	movq	32(%rsp),%r12
1364
1365	movq	40(%rsp),%rbp
1366
1367	movq	48(%rsp),%rbx
1368
1369	addq	$56,%rsp
1370
1371L$dec_key_epilogue:
1372	.byte	0xf3,0xc3
1373
1374
1375.p2align	4
1376.globl	_aes_nohw_cbc_encrypt
1377.private_extern _aes_nohw_cbc_encrypt
1378
1379
1380.private_extern	_aes_nohw_cbc_encrypt
1381_aes_nohw_cbc_encrypt:
1382
1383	cmpq	$0,%rdx
1384	je	L$cbc_epilogue
1385	pushfq
1386
1387
1388
1389	pushq	%rbx
1390
1391	pushq	%rbp
1392
1393	pushq	%r12
1394
1395	pushq	%r13
1396
1397	pushq	%r14
1398
1399	pushq	%r15
1400
1401L$cbc_prologue:
1402
1403	cld
1404	movl	%r9d,%r9d
1405
1406	leaq	L$AES_Te(%rip),%r14
1407	leaq	L$AES_Td(%rip),%r10
1408	cmpq	$0,%r9
1409	cmoveq	%r10,%r14
1410
1411
1412	leaq	_OPENSSL_ia32cap_P(%rip),%r10
1413	movl	(%r10),%r10d
1414	cmpq	$512,%rdx
1415	jb	L$cbc_slow_prologue
1416	testq	$15,%rdx
1417	jnz	L$cbc_slow_prologue
1418	btl	$28,%r10d
1419	jc	L$cbc_slow_prologue
1420
1421
1422	leaq	-88-248(%rsp),%r15
1423	andq	$-64,%r15
1424
1425
1426	movq	%r14,%r10
1427	leaq	2304(%r14),%r11
1428	movq	%r15,%r12
1429	andq	$0xFFF,%r10
1430	andq	$0xFFF,%r11
1431	andq	$0xFFF,%r12
1432
1433	cmpq	%r11,%r12
1434	jb	L$cbc_te_break_out
1435	subq	%r11,%r12
1436	subq	%r12,%r15
1437	jmp	L$cbc_te_ok
1438L$cbc_te_break_out:
1439	subq	%r10,%r12
1440	andq	$0xFFF,%r12
1441	addq	$320,%r12
1442	subq	%r12,%r15
1443.p2align	2
1444L$cbc_te_ok:
1445
1446	xchgq	%rsp,%r15
1447
1448
1449	movq	%r15,16(%rsp)
1450
1451L$cbc_fast_body:
1452	movq	%rdi,24(%rsp)
1453	movq	%rsi,32(%rsp)
1454	movq	%rdx,40(%rsp)
1455	movq	%rcx,48(%rsp)
1456	movq	%r8,56(%rsp)
1457	movl	$0,80+240(%rsp)
1458	movq	%r8,%rbp
1459	movq	%r9,%rbx
1460	movq	%rsi,%r9
1461	movq	%rdi,%r8
1462	movq	%rcx,%r15
1463
1464	movl	240(%r15),%eax
1465
1466	movq	%r15,%r10
1467	subq	%r14,%r10
1468	andq	$0xfff,%r10
1469	cmpq	$2304,%r10
1470	jb	L$cbc_do_ecopy
1471	cmpq	$4096-248,%r10
1472	jb	L$cbc_skip_ecopy
1473.p2align	2
1474L$cbc_do_ecopy:
1475	movq	%r15,%rsi
1476	leaq	80(%rsp),%rdi
1477	leaq	80(%rsp),%r15
1478	movl	$30,%ecx
1479.long	0x90A548F3
1480	movl	%eax,(%rdi)
1481L$cbc_skip_ecopy:
1482	movq	%r15,0(%rsp)
1483
1484	movl	$18,%ecx
1485.p2align	2
1486L$cbc_prefetch_te:
1487	movq	0(%r14),%r10
1488	movq	32(%r14),%r11
1489	movq	64(%r14),%r12
1490	movq	96(%r14),%r13
1491	leaq	128(%r14),%r14
1492	subl	$1,%ecx
1493	jnz	L$cbc_prefetch_te
1494	leaq	-2304(%r14),%r14
1495
1496	cmpq	$0,%rbx
1497	je	L$FAST_DECRYPT
1498
1499
1500	movl	0(%rbp),%eax
1501	movl	4(%rbp),%ebx
1502	movl	8(%rbp),%ecx
1503	movl	12(%rbp),%edx
1504
1505.p2align	2
1506L$cbc_fast_enc_loop:
1507	xorl	0(%r8),%eax
1508	xorl	4(%r8),%ebx
1509	xorl	8(%r8),%ecx
1510	xorl	12(%r8),%edx
1511	movq	0(%rsp),%r15
1512	movq	%r8,24(%rsp)
1513
1514	call	_x86_64_AES_encrypt
1515
1516	movq	24(%rsp),%r8
1517	movq	40(%rsp),%r10
1518	movl	%eax,0(%r9)
1519	movl	%ebx,4(%r9)
1520	movl	%ecx,8(%r9)
1521	movl	%edx,12(%r9)
1522
1523	leaq	16(%r8),%r8
1524	leaq	16(%r9),%r9
1525	subq	$16,%r10
1526	testq	$-16,%r10
1527	movq	%r10,40(%rsp)
1528	jnz	L$cbc_fast_enc_loop
1529	movq	56(%rsp),%rbp
1530	movl	%eax,0(%rbp)
1531	movl	%ebx,4(%rbp)
1532	movl	%ecx,8(%rbp)
1533	movl	%edx,12(%rbp)
1534
1535	jmp	L$cbc_fast_cleanup
1536
1537
1538.p2align	4
1539L$FAST_DECRYPT:
1540	cmpq	%r8,%r9
1541	je	L$cbc_fast_dec_in_place
1542
1543	movq	%rbp,64(%rsp)
1544.p2align	2
1545L$cbc_fast_dec_loop:
1546	movl	0(%r8),%eax
1547	movl	4(%r8),%ebx
1548	movl	8(%r8),%ecx
1549	movl	12(%r8),%edx
1550	movq	0(%rsp),%r15
1551	movq	%r8,24(%rsp)
1552
1553	call	_x86_64_AES_decrypt
1554
1555	movq	64(%rsp),%rbp
1556	movq	24(%rsp),%r8
1557	movq	40(%rsp),%r10
1558	xorl	0(%rbp),%eax
1559	xorl	4(%rbp),%ebx
1560	xorl	8(%rbp),%ecx
1561	xorl	12(%rbp),%edx
1562	movq	%r8,%rbp
1563
1564	subq	$16,%r10
1565	movq	%r10,40(%rsp)
1566	movq	%rbp,64(%rsp)
1567
1568	movl	%eax,0(%r9)
1569	movl	%ebx,4(%r9)
1570	movl	%ecx,8(%r9)
1571	movl	%edx,12(%r9)
1572
1573	leaq	16(%r8),%r8
1574	leaq	16(%r9),%r9
1575	jnz	L$cbc_fast_dec_loop
1576	movq	56(%rsp),%r12
1577	movq	0(%rbp),%r10
1578	movq	8(%rbp),%r11
1579	movq	%r10,0(%r12)
1580	movq	%r11,8(%r12)
1581	jmp	L$cbc_fast_cleanup
1582
1583.p2align	4
1584L$cbc_fast_dec_in_place:
1585	movq	0(%rbp),%r10
1586	movq	8(%rbp),%r11
1587	movq	%r10,0+64(%rsp)
1588	movq	%r11,8+64(%rsp)
1589.p2align	2
1590L$cbc_fast_dec_in_place_loop:
1591	movl	0(%r8),%eax
1592	movl	4(%r8),%ebx
1593	movl	8(%r8),%ecx
1594	movl	12(%r8),%edx
1595	movq	0(%rsp),%r15
1596	movq	%r8,24(%rsp)
1597
1598	call	_x86_64_AES_decrypt
1599
1600	movq	24(%rsp),%r8
1601	movq	40(%rsp),%r10
1602	xorl	0+64(%rsp),%eax
1603	xorl	4+64(%rsp),%ebx
1604	xorl	8+64(%rsp),%ecx
1605	xorl	12+64(%rsp),%edx
1606
1607	movq	0(%r8),%r11
1608	movq	8(%r8),%r12
1609	subq	$16,%r10
1610	jz	L$cbc_fast_dec_in_place_done
1611
1612	movq	%r11,0+64(%rsp)
1613	movq	%r12,8+64(%rsp)
1614
1615	movl	%eax,0(%r9)
1616	movl	%ebx,4(%r9)
1617	movl	%ecx,8(%r9)
1618	movl	%edx,12(%r9)
1619
1620	leaq	16(%r8),%r8
1621	leaq	16(%r9),%r9
1622	movq	%r10,40(%rsp)
1623	jmp	L$cbc_fast_dec_in_place_loop
1624L$cbc_fast_dec_in_place_done:
1625	movq	56(%rsp),%rdi
1626	movq	%r11,0(%rdi)
1627	movq	%r12,8(%rdi)
1628
1629	movl	%eax,0(%r9)
1630	movl	%ebx,4(%r9)
1631	movl	%ecx,8(%r9)
1632	movl	%edx,12(%r9)
1633
1634.p2align	2
1635L$cbc_fast_cleanup:
1636	cmpl	$0,80+240(%rsp)
1637	leaq	80(%rsp),%rdi
1638	je	L$cbc_exit
1639	movl	$30,%ecx
1640	xorq	%rax,%rax
1641.long	0x90AB48F3
1642
1643	jmp	L$cbc_exit
1644
1645
1646.p2align	4
1647L$cbc_slow_prologue:
1648
1649
1650	leaq	-88(%rsp),%rbp
1651	andq	$-64,%rbp
1652
1653	leaq	-88-63(%rcx),%r10
1654	subq	%rbp,%r10
1655	negq	%r10
1656	andq	$0x3c0,%r10
1657	subq	%r10,%rbp
1658
1659	xchgq	%rsp,%rbp
1660
1661
1662	movq	%rbp,16(%rsp)
1663
1664L$cbc_slow_body:
1665
1666
1667
1668
1669	movq	%r8,56(%rsp)
1670	movq	%r8,%rbp
1671	movq	%r9,%rbx
1672	movq	%rsi,%r9
1673	movq	%rdi,%r8
1674	movq	%rcx,%r15
1675	movq	%rdx,%r10
1676
1677	movl	240(%r15),%eax
1678	movq	%r15,0(%rsp)
1679	shll	$4,%eax
1680	leaq	(%r15,%rax,1),%rax
1681	movq	%rax,8(%rsp)
1682
1683
1684	leaq	2048(%r14),%r14
1685	leaq	768-8(%rsp),%rax
1686	subq	%r14,%rax
1687	andq	$0x300,%rax
1688	leaq	(%r14,%rax,1),%r14
1689
1690	cmpq	$0,%rbx
1691	je	L$SLOW_DECRYPT
1692
1693
1694	testq	$-16,%r10
1695	movl	0(%rbp),%eax
1696	movl	4(%rbp),%ebx
1697	movl	8(%rbp),%ecx
1698	movl	12(%rbp),%edx
1699	jz	L$cbc_slow_enc_tail
1700
1701.p2align	2
1702L$cbc_slow_enc_loop:
1703	xorl	0(%r8),%eax
1704	xorl	4(%r8),%ebx
1705	xorl	8(%r8),%ecx
1706	xorl	12(%r8),%edx
1707	movq	0(%rsp),%r15
1708	movq	%r8,24(%rsp)
1709	movq	%r9,32(%rsp)
1710	movq	%r10,40(%rsp)
1711
1712	call	_x86_64_AES_encrypt_compact
1713
1714	movq	24(%rsp),%r8
1715	movq	32(%rsp),%r9
1716	movq	40(%rsp),%r10
1717	movl	%eax,0(%r9)
1718	movl	%ebx,4(%r9)
1719	movl	%ecx,8(%r9)
1720	movl	%edx,12(%r9)
1721
1722	leaq	16(%r8),%r8
1723	leaq	16(%r9),%r9
1724	subq	$16,%r10
1725	testq	$-16,%r10
1726	jnz	L$cbc_slow_enc_loop
1727	testq	$15,%r10
1728	jnz	L$cbc_slow_enc_tail
1729	movq	56(%rsp),%rbp
1730	movl	%eax,0(%rbp)
1731	movl	%ebx,4(%rbp)
1732	movl	%ecx,8(%rbp)
1733	movl	%edx,12(%rbp)
1734
1735	jmp	L$cbc_exit
1736
1737.p2align	2
1738L$cbc_slow_enc_tail:
1739	movq	%rax,%r11
1740	movq	%rcx,%r12
1741	movq	%r10,%rcx
1742	movq	%r8,%rsi
1743	movq	%r9,%rdi
1744.long	0x9066A4F3
1745	movq	$16,%rcx
1746	subq	%r10,%rcx
1747	xorq	%rax,%rax
1748.long	0x9066AAF3
1749	movq	%r9,%r8
1750	movq	$16,%r10
1751	movq	%r11,%rax
1752	movq	%r12,%rcx
1753	jmp	L$cbc_slow_enc_loop
1754
1755.p2align	4
1756L$SLOW_DECRYPT:
1757	shrq	$3,%rax
1758	addq	%rax,%r14
1759
1760	movq	0(%rbp),%r11
1761	movq	8(%rbp),%r12
1762	movq	%r11,0+64(%rsp)
1763	movq	%r12,8+64(%rsp)
1764
1765.p2align	2
1766L$cbc_slow_dec_loop:
1767	movl	0(%r8),%eax
1768	movl	4(%r8),%ebx
1769	movl	8(%r8),%ecx
1770	movl	12(%r8),%edx
1771	movq	0(%rsp),%r15
1772	movq	%r8,24(%rsp)
1773	movq	%r9,32(%rsp)
1774	movq	%r10,40(%rsp)
1775
1776	call	_x86_64_AES_decrypt_compact
1777
1778	movq	24(%rsp),%r8
1779	movq	32(%rsp),%r9
1780	movq	40(%rsp),%r10
1781	xorl	0+64(%rsp),%eax
1782	xorl	4+64(%rsp),%ebx
1783	xorl	8+64(%rsp),%ecx
1784	xorl	12+64(%rsp),%edx
1785
1786	movq	0(%r8),%r11
1787	movq	8(%r8),%r12
1788	subq	$16,%r10
1789	jc	L$cbc_slow_dec_partial
1790	jz	L$cbc_slow_dec_done
1791
1792	movq	%r11,0+64(%rsp)
1793	movq	%r12,8+64(%rsp)
1794
1795	movl	%eax,0(%r9)
1796	movl	%ebx,4(%r9)
1797	movl	%ecx,8(%r9)
1798	movl	%edx,12(%r9)
1799
1800	leaq	16(%r8),%r8
1801	leaq	16(%r9),%r9
1802	jmp	L$cbc_slow_dec_loop
1803L$cbc_slow_dec_done:
1804	movq	56(%rsp),%rdi
1805	movq	%r11,0(%rdi)
1806	movq	%r12,8(%rdi)
1807
1808	movl	%eax,0(%r9)
1809	movl	%ebx,4(%r9)
1810	movl	%ecx,8(%r9)
1811	movl	%edx,12(%r9)
1812
1813	jmp	L$cbc_exit
1814
1815.p2align	2
1816L$cbc_slow_dec_partial:
1817	movq	56(%rsp),%rdi
1818	movq	%r11,0(%rdi)
1819	movq	%r12,8(%rdi)
1820
1821	movl	%eax,0+64(%rsp)
1822	movl	%ebx,4+64(%rsp)
1823	movl	%ecx,8+64(%rsp)
1824	movl	%edx,12+64(%rsp)
1825
1826	movq	%r9,%rdi
1827	leaq	64(%rsp),%rsi
1828	leaq	16(%r10),%rcx
1829.long	0x9066A4F3
1830	jmp	L$cbc_exit
1831
1832.p2align	4
1833L$cbc_exit:
1834	movq	16(%rsp),%rsi
1835
1836	movq	(%rsi),%r15
1837
1838	movq	8(%rsi),%r14
1839
1840	movq	16(%rsi),%r13
1841
1842	movq	24(%rsi),%r12
1843
1844	movq	32(%rsi),%rbp
1845
1846	movq	40(%rsi),%rbx
1847
1848	leaq	48(%rsi),%rsp
1849
1850L$cbc_popfq:
1851	popfq
1852
1853
1854
1855L$cbc_epilogue:
1856	.byte	0xf3,0xc3
1857
1858
1859.p2align	6
1860L$AES_Te:
1861.long	0xa56363c6,0xa56363c6
1862.long	0x847c7cf8,0x847c7cf8
1863.long	0x997777ee,0x997777ee
1864.long	0x8d7b7bf6,0x8d7b7bf6
1865.long	0x0df2f2ff,0x0df2f2ff
1866.long	0xbd6b6bd6,0xbd6b6bd6
1867.long	0xb16f6fde,0xb16f6fde
1868.long	0x54c5c591,0x54c5c591
1869.long	0x50303060,0x50303060
1870.long	0x03010102,0x03010102
1871.long	0xa96767ce,0xa96767ce
1872.long	0x7d2b2b56,0x7d2b2b56
1873.long	0x19fefee7,0x19fefee7
1874.long	0x62d7d7b5,0x62d7d7b5
1875.long	0xe6abab4d,0xe6abab4d
1876.long	0x9a7676ec,0x9a7676ec
1877.long	0x45caca8f,0x45caca8f
1878.long	0x9d82821f,0x9d82821f
1879.long	0x40c9c989,0x40c9c989
1880.long	0x877d7dfa,0x877d7dfa
1881.long	0x15fafaef,0x15fafaef
1882.long	0xeb5959b2,0xeb5959b2
1883.long	0xc947478e,0xc947478e
1884.long	0x0bf0f0fb,0x0bf0f0fb
1885.long	0xecadad41,0xecadad41
1886.long	0x67d4d4b3,0x67d4d4b3
1887.long	0xfda2a25f,0xfda2a25f
1888.long	0xeaafaf45,0xeaafaf45
1889.long	0xbf9c9c23,0xbf9c9c23
1890.long	0xf7a4a453,0xf7a4a453
1891.long	0x967272e4,0x967272e4
1892.long	0x5bc0c09b,0x5bc0c09b
1893.long	0xc2b7b775,0xc2b7b775
1894.long	0x1cfdfde1,0x1cfdfde1
1895.long	0xae93933d,0xae93933d
1896.long	0x6a26264c,0x6a26264c
1897.long	0x5a36366c,0x5a36366c
1898.long	0x413f3f7e,0x413f3f7e
1899.long	0x02f7f7f5,0x02f7f7f5
1900.long	0x4fcccc83,0x4fcccc83
1901.long	0x5c343468,0x5c343468
1902.long	0xf4a5a551,0xf4a5a551
1903.long	0x34e5e5d1,0x34e5e5d1
1904.long	0x08f1f1f9,0x08f1f1f9
1905.long	0x937171e2,0x937171e2
1906.long	0x73d8d8ab,0x73d8d8ab
1907.long	0x53313162,0x53313162
1908.long	0x3f15152a,0x3f15152a
1909.long	0x0c040408,0x0c040408
1910.long	0x52c7c795,0x52c7c795
1911.long	0x65232346,0x65232346
1912.long	0x5ec3c39d,0x5ec3c39d
1913.long	0x28181830,0x28181830
1914.long	0xa1969637,0xa1969637
1915.long	0x0f05050a,0x0f05050a
1916.long	0xb59a9a2f,0xb59a9a2f
1917.long	0x0907070e,0x0907070e
1918.long	0x36121224,0x36121224
1919.long	0x9b80801b,0x9b80801b
1920.long	0x3de2e2df,0x3de2e2df
1921.long	0x26ebebcd,0x26ebebcd
1922.long	0x6927274e,0x6927274e
1923.long	0xcdb2b27f,0xcdb2b27f
1924.long	0x9f7575ea,0x9f7575ea
1925.long	0x1b090912,0x1b090912
1926.long	0x9e83831d,0x9e83831d
1927.long	0x742c2c58,0x742c2c58
1928.long	0x2e1a1a34,0x2e1a1a34
1929.long	0x2d1b1b36,0x2d1b1b36
1930.long	0xb26e6edc,0xb26e6edc
1931.long	0xee5a5ab4,0xee5a5ab4
1932.long	0xfba0a05b,0xfba0a05b
1933.long	0xf65252a4,0xf65252a4
1934.long	0x4d3b3b76,0x4d3b3b76
1935.long	0x61d6d6b7,0x61d6d6b7
1936.long	0xceb3b37d,0xceb3b37d
1937.long	0x7b292952,0x7b292952
1938.long	0x3ee3e3dd,0x3ee3e3dd
1939.long	0x712f2f5e,0x712f2f5e
1940.long	0x97848413,0x97848413
1941.long	0xf55353a6,0xf55353a6
1942.long	0x68d1d1b9,0x68d1d1b9
1943.long	0x00000000,0x00000000
1944.long	0x2cededc1,0x2cededc1
1945.long	0x60202040,0x60202040
1946.long	0x1ffcfce3,0x1ffcfce3
1947.long	0xc8b1b179,0xc8b1b179
1948.long	0xed5b5bb6,0xed5b5bb6
1949.long	0xbe6a6ad4,0xbe6a6ad4
1950.long	0x46cbcb8d,0x46cbcb8d
1951.long	0xd9bebe67,0xd9bebe67
1952.long	0x4b393972,0x4b393972
1953.long	0xde4a4a94,0xde4a4a94
1954.long	0xd44c4c98,0xd44c4c98
1955.long	0xe85858b0,0xe85858b0
1956.long	0x4acfcf85,0x4acfcf85
1957.long	0x6bd0d0bb,0x6bd0d0bb
1958.long	0x2aefefc5,0x2aefefc5
1959.long	0xe5aaaa4f,0xe5aaaa4f
1960.long	0x16fbfbed,0x16fbfbed
1961.long	0xc5434386,0xc5434386
1962.long	0xd74d4d9a,0xd74d4d9a
1963.long	0x55333366,0x55333366
1964.long	0x94858511,0x94858511
1965.long	0xcf45458a,0xcf45458a
1966.long	0x10f9f9e9,0x10f9f9e9
1967.long	0x06020204,0x06020204
1968.long	0x817f7ffe,0x817f7ffe
1969.long	0xf05050a0,0xf05050a0
1970.long	0x443c3c78,0x443c3c78
1971.long	0xba9f9f25,0xba9f9f25
1972.long	0xe3a8a84b,0xe3a8a84b
1973.long	0xf35151a2,0xf35151a2
1974.long	0xfea3a35d,0xfea3a35d
1975.long	0xc0404080,0xc0404080
1976.long	0x8a8f8f05,0x8a8f8f05
1977.long	0xad92923f,0xad92923f
1978.long	0xbc9d9d21,0xbc9d9d21
1979.long	0x48383870,0x48383870
1980.long	0x04f5f5f1,0x04f5f5f1
1981.long	0xdfbcbc63,0xdfbcbc63
1982.long	0xc1b6b677,0xc1b6b677
1983.long	0x75dadaaf,0x75dadaaf
1984.long	0x63212142,0x63212142
1985.long	0x30101020,0x30101020
1986.long	0x1affffe5,0x1affffe5
1987.long	0x0ef3f3fd,0x0ef3f3fd
1988.long	0x6dd2d2bf,0x6dd2d2bf
1989.long	0x4ccdcd81,0x4ccdcd81
1990.long	0x140c0c18,0x140c0c18
1991.long	0x35131326,0x35131326
1992.long	0x2fececc3,0x2fececc3
1993.long	0xe15f5fbe,0xe15f5fbe
1994.long	0xa2979735,0xa2979735
1995.long	0xcc444488,0xcc444488
1996.long	0x3917172e,0x3917172e
1997.long	0x57c4c493,0x57c4c493
1998.long	0xf2a7a755,0xf2a7a755
1999.long	0x827e7efc,0x827e7efc
2000.long	0x473d3d7a,0x473d3d7a
2001.long	0xac6464c8,0xac6464c8
2002.long	0xe75d5dba,0xe75d5dba
2003.long	0x2b191932,0x2b191932
2004.long	0x957373e6,0x957373e6
2005.long	0xa06060c0,0xa06060c0
2006.long	0x98818119,0x98818119
2007.long	0xd14f4f9e,0xd14f4f9e
2008.long	0x7fdcdca3,0x7fdcdca3
2009.long	0x66222244,0x66222244
2010.long	0x7e2a2a54,0x7e2a2a54
2011.long	0xab90903b,0xab90903b
2012.long	0x8388880b,0x8388880b
2013.long	0xca46468c,0xca46468c
2014.long	0x29eeeec7,0x29eeeec7
2015.long	0xd3b8b86b,0xd3b8b86b
2016.long	0x3c141428,0x3c141428
2017.long	0x79dedea7,0x79dedea7
2018.long	0xe25e5ebc,0xe25e5ebc
2019.long	0x1d0b0b16,0x1d0b0b16
2020.long	0x76dbdbad,0x76dbdbad
2021.long	0x3be0e0db,0x3be0e0db
2022.long	0x56323264,0x56323264
2023.long	0x4e3a3a74,0x4e3a3a74
2024.long	0x1e0a0a14,0x1e0a0a14
2025.long	0xdb494992,0xdb494992
2026.long	0x0a06060c,0x0a06060c
2027.long	0x6c242448,0x6c242448
2028.long	0xe45c5cb8,0xe45c5cb8
2029.long	0x5dc2c29f,0x5dc2c29f
2030.long	0x6ed3d3bd,0x6ed3d3bd
2031.long	0xefacac43,0xefacac43
2032.long	0xa66262c4,0xa66262c4
2033.long	0xa8919139,0xa8919139
2034.long	0xa4959531,0xa4959531
2035.long	0x37e4e4d3,0x37e4e4d3
2036.long	0x8b7979f2,0x8b7979f2
2037.long	0x32e7e7d5,0x32e7e7d5
2038.long	0x43c8c88b,0x43c8c88b
2039.long	0x5937376e,0x5937376e
2040.long	0xb76d6dda,0xb76d6dda
2041.long	0x8c8d8d01,0x8c8d8d01
2042.long	0x64d5d5b1,0x64d5d5b1
2043.long	0xd24e4e9c,0xd24e4e9c
2044.long	0xe0a9a949,0xe0a9a949
2045.long	0xb46c6cd8,0xb46c6cd8
2046.long	0xfa5656ac,0xfa5656ac
2047.long	0x07f4f4f3,0x07f4f4f3
2048.long	0x25eaeacf,0x25eaeacf
2049.long	0xaf6565ca,0xaf6565ca
2050.long	0x8e7a7af4,0x8e7a7af4
2051.long	0xe9aeae47,0xe9aeae47
2052.long	0x18080810,0x18080810
2053.long	0xd5baba6f,0xd5baba6f
2054.long	0x887878f0,0x887878f0
2055.long	0x6f25254a,0x6f25254a
2056.long	0x722e2e5c,0x722e2e5c
2057.long	0x241c1c38,0x241c1c38
2058.long	0xf1a6a657,0xf1a6a657
2059.long	0xc7b4b473,0xc7b4b473
2060.long	0x51c6c697,0x51c6c697
2061.long	0x23e8e8cb,0x23e8e8cb
2062.long	0x7cdddda1,0x7cdddda1
2063.long	0x9c7474e8,0x9c7474e8
2064.long	0x211f1f3e,0x211f1f3e
2065.long	0xdd4b4b96,0xdd4b4b96
2066.long	0xdcbdbd61,0xdcbdbd61
2067.long	0x868b8b0d,0x868b8b0d
2068.long	0x858a8a0f,0x858a8a0f
2069.long	0x907070e0,0x907070e0
2070.long	0x423e3e7c,0x423e3e7c
2071.long	0xc4b5b571,0xc4b5b571
2072.long	0xaa6666cc,0xaa6666cc
2073.long	0xd8484890,0xd8484890
2074.long	0x05030306,0x05030306
2075.long	0x01f6f6f7,0x01f6f6f7
2076.long	0x120e0e1c,0x120e0e1c
2077.long	0xa36161c2,0xa36161c2
2078.long	0x5f35356a,0x5f35356a
2079.long	0xf95757ae,0xf95757ae
2080.long	0xd0b9b969,0xd0b9b969
2081.long	0x91868617,0x91868617
2082.long	0x58c1c199,0x58c1c199
2083.long	0x271d1d3a,0x271d1d3a
2084.long	0xb99e9e27,0xb99e9e27
2085.long	0x38e1e1d9,0x38e1e1d9
2086.long	0x13f8f8eb,0x13f8f8eb
2087.long	0xb398982b,0xb398982b
2088.long	0x33111122,0x33111122
2089.long	0xbb6969d2,0xbb6969d2
2090.long	0x70d9d9a9,0x70d9d9a9
2091.long	0x898e8e07,0x898e8e07
2092.long	0xa7949433,0xa7949433
2093.long	0xb69b9b2d,0xb69b9b2d
2094.long	0x221e1e3c,0x221e1e3c
2095.long	0x92878715,0x92878715
2096.long	0x20e9e9c9,0x20e9e9c9
2097.long	0x49cece87,0x49cece87
2098.long	0xff5555aa,0xff5555aa
2099.long	0x78282850,0x78282850
2100.long	0x7adfdfa5,0x7adfdfa5
2101.long	0x8f8c8c03,0x8f8c8c03
2102.long	0xf8a1a159,0xf8a1a159
2103.long	0x80898909,0x80898909
2104.long	0x170d0d1a,0x170d0d1a
2105.long	0xdabfbf65,0xdabfbf65
2106.long	0x31e6e6d7,0x31e6e6d7
2107.long	0xc6424284,0xc6424284
2108.long	0xb86868d0,0xb86868d0
2109.long	0xc3414182,0xc3414182
2110.long	0xb0999929,0xb0999929
2111.long	0x772d2d5a,0x772d2d5a
2112.long	0x110f0f1e,0x110f0f1e
2113.long	0xcbb0b07b,0xcbb0b07b
2114.long	0xfc5454a8,0xfc5454a8
2115.long	0xd6bbbb6d,0xd6bbbb6d
2116.long	0x3a16162c,0x3a16162c
2117.byte	0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2118.byte	0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2119.byte	0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2120.byte	0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2121.byte	0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2122.byte	0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2123.byte	0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2124.byte	0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2125.byte	0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2126.byte	0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2127.byte	0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2128.byte	0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2129.byte	0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2130.byte	0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2131.byte	0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2132.byte	0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2133.byte	0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2134.byte	0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2135.byte	0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2136.byte	0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2137.byte	0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2138.byte	0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2139.byte	0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2140.byte	0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2141.byte	0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2142.byte	0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2143.byte	0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2144.byte	0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2145.byte	0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2146.byte	0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2147.byte	0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2148.byte	0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2149.byte	0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2150.byte	0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2151.byte	0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2152.byte	0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2153.byte	0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2154.byte	0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2155.byte	0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2156.byte	0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2157.byte	0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2158.byte	0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2159.byte	0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2160.byte	0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2161.byte	0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2162.byte	0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2163.byte	0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2164.byte	0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2165.byte	0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2166.byte	0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2167.byte	0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2168.byte	0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2169.byte	0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2170.byte	0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2171.byte	0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2172.byte	0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2173.byte	0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2174.byte	0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2175.byte	0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2176.byte	0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2177.byte	0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2178.byte	0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2179.byte	0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2180.byte	0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2181.byte	0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2182.byte	0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2183.byte	0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2184.byte	0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2185.byte	0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2186.byte	0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2187.byte	0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2188.byte	0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2189.byte	0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2190.byte	0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2191.byte	0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2192.byte	0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2193.byte	0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2194.byte	0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2195.byte	0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2196.byte	0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2197.byte	0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2198.byte	0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2199.byte	0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2200.byte	0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2201.byte	0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2202.byte	0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2203.byte	0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2204.byte	0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2205.byte	0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2206.byte	0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2207.byte	0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2208.byte	0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2209.byte	0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2210.byte	0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2211.byte	0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2212.byte	0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2213.byte	0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5
2214.byte	0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76
2215.byte	0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0
2216.byte	0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0
2217.byte	0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc
2218.byte	0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15
2219.byte	0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a
2220.byte	0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75
2221.byte	0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0
2222.byte	0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84
2223.byte	0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b
2224.byte	0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf
2225.byte	0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85
2226.byte	0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8
2227.byte	0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5
2228.byte	0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2
2229.byte	0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17
2230.byte	0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73
2231.byte	0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88
2232.byte	0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb
2233.byte	0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c
2234.byte	0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79
2235.byte	0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9
2236.byte	0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08
2237.byte	0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6
2238.byte	0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a
2239.byte	0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e
2240.byte	0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e
2241.byte	0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94
2242.byte	0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf
2243.byte	0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68
2244.byte	0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16
2245.long	0x00000001, 0x00000002, 0x00000004, 0x00000008
2246.long	0x00000010, 0x00000020, 0x00000040, 0x00000080
2247.long	0x0000001b, 0x00000036, 0x80808080, 0x80808080
2248.long	0xfefefefe, 0xfefefefe, 0x1b1b1b1b, 0x1b1b1b1b
2249.p2align	6
2250L$AES_Td:
2251.long	0x50a7f451,0x50a7f451
2252.long	0x5365417e,0x5365417e
2253.long	0xc3a4171a,0xc3a4171a
2254.long	0x965e273a,0x965e273a
2255.long	0xcb6bab3b,0xcb6bab3b
2256.long	0xf1459d1f,0xf1459d1f
2257.long	0xab58faac,0xab58faac
2258.long	0x9303e34b,0x9303e34b
2259.long	0x55fa3020,0x55fa3020
2260.long	0xf66d76ad,0xf66d76ad
2261.long	0x9176cc88,0x9176cc88
2262.long	0x254c02f5,0x254c02f5
2263.long	0xfcd7e54f,0xfcd7e54f
2264.long	0xd7cb2ac5,0xd7cb2ac5
2265.long	0x80443526,0x80443526
2266.long	0x8fa362b5,0x8fa362b5
2267.long	0x495ab1de,0x495ab1de
2268.long	0x671bba25,0x671bba25
2269.long	0x980eea45,0x980eea45
2270.long	0xe1c0fe5d,0xe1c0fe5d
2271.long	0x02752fc3,0x02752fc3
2272.long	0x12f04c81,0x12f04c81
2273.long	0xa397468d,0xa397468d
2274.long	0xc6f9d36b,0xc6f9d36b
2275.long	0xe75f8f03,0xe75f8f03
2276.long	0x959c9215,0x959c9215
2277.long	0xeb7a6dbf,0xeb7a6dbf
2278.long	0xda595295,0xda595295
2279.long	0x2d83bed4,0x2d83bed4
2280.long	0xd3217458,0xd3217458
2281.long	0x2969e049,0x2969e049
2282.long	0x44c8c98e,0x44c8c98e
2283.long	0x6a89c275,0x6a89c275
2284.long	0x78798ef4,0x78798ef4
2285.long	0x6b3e5899,0x6b3e5899
2286.long	0xdd71b927,0xdd71b927
2287.long	0xb64fe1be,0xb64fe1be
2288.long	0x17ad88f0,0x17ad88f0
2289.long	0x66ac20c9,0x66ac20c9
2290.long	0xb43ace7d,0xb43ace7d
2291.long	0x184adf63,0x184adf63
2292.long	0x82311ae5,0x82311ae5
2293.long	0x60335197,0x60335197
2294.long	0x457f5362,0x457f5362
2295.long	0xe07764b1,0xe07764b1
2296.long	0x84ae6bbb,0x84ae6bbb
2297.long	0x1ca081fe,0x1ca081fe
2298.long	0x942b08f9,0x942b08f9
2299.long	0x58684870,0x58684870
2300.long	0x19fd458f,0x19fd458f
2301.long	0x876cde94,0x876cde94
2302.long	0xb7f87b52,0xb7f87b52
2303.long	0x23d373ab,0x23d373ab
2304.long	0xe2024b72,0xe2024b72
2305.long	0x578f1fe3,0x578f1fe3
2306.long	0x2aab5566,0x2aab5566
2307.long	0x0728ebb2,0x0728ebb2
2308.long	0x03c2b52f,0x03c2b52f
2309.long	0x9a7bc586,0x9a7bc586
2310.long	0xa50837d3,0xa50837d3
2311.long	0xf2872830,0xf2872830
2312.long	0xb2a5bf23,0xb2a5bf23
2313.long	0xba6a0302,0xba6a0302
2314.long	0x5c8216ed,0x5c8216ed
2315.long	0x2b1ccf8a,0x2b1ccf8a
2316.long	0x92b479a7,0x92b479a7
2317.long	0xf0f207f3,0xf0f207f3
2318.long	0xa1e2694e,0xa1e2694e
2319.long	0xcdf4da65,0xcdf4da65
2320.long	0xd5be0506,0xd5be0506
2321.long	0x1f6234d1,0x1f6234d1
2322.long	0x8afea6c4,0x8afea6c4
2323.long	0x9d532e34,0x9d532e34
2324.long	0xa055f3a2,0xa055f3a2
2325.long	0x32e18a05,0x32e18a05
2326.long	0x75ebf6a4,0x75ebf6a4
2327.long	0x39ec830b,0x39ec830b
2328.long	0xaaef6040,0xaaef6040
2329.long	0x069f715e,0x069f715e
2330.long	0x51106ebd,0x51106ebd
2331.long	0xf98a213e,0xf98a213e
2332.long	0x3d06dd96,0x3d06dd96
2333.long	0xae053edd,0xae053edd
2334.long	0x46bde64d,0x46bde64d
2335.long	0xb58d5491,0xb58d5491
2336.long	0x055dc471,0x055dc471
2337.long	0x6fd40604,0x6fd40604
2338.long	0xff155060,0xff155060
2339.long	0x24fb9819,0x24fb9819
2340.long	0x97e9bdd6,0x97e9bdd6
2341.long	0xcc434089,0xcc434089
2342.long	0x779ed967,0x779ed967
2343.long	0xbd42e8b0,0xbd42e8b0
2344.long	0x888b8907,0x888b8907
2345.long	0x385b19e7,0x385b19e7
2346.long	0xdbeec879,0xdbeec879
2347.long	0x470a7ca1,0x470a7ca1
2348.long	0xe90f427c,0xe90f427c
2349.long	0xc91e84f8,0xc91e84f8
2350.long	0x00000000,0x00000000
2351.long	0x83868009,0x83868009
2352.long	0x48ed2b32,0x48ed2b32
2353.long	0xac70111e,0xac70111e
2354.long	0x4e725a6c,0x4e725a6c
2355.long	0xfbff0efd,0xfbff0efd
2356.long	0x5638850f,0x5638850f
2357.long	0x1ed5ae3d,0x1ed5ae3d
2358.long	0x27392d36,0x27392d36
2359.long	0x64d90f0a,0x64d90f0a
2360.long	0x21a65c68,0x21a65c68
2361.long	0xd1545b9b,0xd1545b9b
2362.long	0x3a2e3624,0x3a2e3624
2363.long	0xb1670a0c,0xb1670a0c
2364.long	0x0fe75793,0x0fe75793
2365.long	0xd296eeb4,0xd296eeb4
2366.long	0x9e919b1b,0x9e919b1b
2367.long	0x4fc5c080,0x4fc5c080
2368.long	0xa220dc61,0xa220dc61
2369.long	0x694b775a,0x694b775a
2370.long	0x161a121c,0x161a121c
2371.long	0x0aba93e2,0x0aba93e2
2372.long	0xe52aa0c0,0xe52aa0c0
2373.long	0x43e0223c,0x43e0223c
2374.long	0x1d171b12,0x1d171b12
2375.long	0x0b0d090e,0x0b0d090e
2376.long	0xadc78bf2,0xadc78bf2
2377.long	0xb9a8b62d,0xb9a8b62d
2378.long	0xc8a91e14,0xc8a91e14
2379.long	0x8519f157,0x8519f157
2380.long	0x4c0775af,0x4c0775af
2381.long	0xbbdd99ee,0xbbdd99ee
2382.long	0xfd607fa3,0xfd607fa3
2383.long	0x9f2601f7,0x9f2601f7
2384.long	0xbcf5725c,0xbcf5725c
2385.long	0xc53b6644,0xc53b6644
2386.long	0x347efb5b,0x347efb5b
2387.long	0x7629438b,0x7629438b
2388.long	0xdcc623cb,0xdcc623cb
2389.long	0x68fcedb6,0x68fcedb6
2390.long	0x63f1e4b8,0x63f1e4b8
2391.long	0xcadc31d7,0xcadc31d7
2392.long	0x10856342,0x10856342
2393.long	0x40229713,0x40229713
2394.long	0x2011c684,0x2011c684
2395.long	0x7d244a85,0x7d244a85
2396.long	0xf83dbbd2,0xf83dbbd2
2397.long	0x1132f9ae,0x1132f9ae
2398.long	0x6da129c7,0x6da129c7
2399.long	0x4b2f9e1d,0x4b2f9e1d
2400.long	0xf330b2dc,0xf330b2dc
2401.long	0xec52860d,0xec52860d
2402.long	0xd0e3c177,0xd0e3c177
2403.long	0x6c16b32b,0x6c16b32b
2404.long	0x99b970a9,0x99b970a9
2405.long	0xfa489411,0xfa489411
2406.long	0x2264e947,0x2264e947
2407.long	0xc48cfca8,0xc48cfca8
2408.long	0x1a3ff0a0,0x1a3ff0a0
2409.long	0xd82c7d56,0xd82c7d56
2410.long	0xef903322,0xef903322
2411.long	0xc74e4987,0xc74e4987
2412.long	0xc1d138d9,0xc1d138d9
2413.long	0xfea2ca8c,0xfea2ca8c
2414.long	0x360bd498,0x360bd498
2415.long	0xcf81f5a6,0xcf81f5a6
2416.long	0x28de7aa5,0x28de7aa5
2417.long	0x268eb7da,0x268eb7da
2418.long	0xa4bfad3f,0xa4bfad3f
2419.long	0xe49d3a2c,0xe49d3a2c
2420.long	0x0d927850,0x0d927850
2421.long	0x9bcc5f6a,0x9bcc5f6a
2422.long	0x62467e54,0x62467e54
2423.long	0xc2138df6,0xc2138df6
2424.long	0xe8b8d890,0xe8b8d890
2425.long	0x5ef7392e,0x5ef7392e
2426.long	0xf5afc382,0xf5afc382
2427.long	0xbe805d9f,0xbe805d9f
2428.long	0x7c93d069,0x7c93d069
2429.long	0xa92dd56f,0xa92dd56f
2430.long	0xb31225cf,0xb31225cf
2431.long	0x3b99acc8,0x3b99acc8
2432.long	0xa77d1810,0xa77d1810
2433.long	0x6e639ce8,0x6e639ce8
2434.long	0x7bbb3bdb,0x7bbb3bdb
2435.long	0x097826cd,0x097826cd
2436.long	0xf418596e,0xf418596e
2437.long	0x01b79aec,0x01b79aec
2438.long	0xa89a4f83,0xa89a4f83
2439.long	0x656e95e6,0x656e95e6
2440.long	0x7ee6ffaa,0x7ee6ffaa
2441.long	0x08cfbc21,0x08cfbc21
2442.long	0xe6e815ef,0xe6e815ef
2443.long	0xd99be7ba,0xd99be7ba
2444.long	0xce366f4a,0xce366f4a
2445.long	0xd4099fea,0xd4099fea
2446.long	0xd67cb029,0xd67cb029
2447.long	0xafb2a431,0xafb2a431
2448.long	0x31233f2a,0x31233f2a
2449.long	0x3094a5c6,0x3094a5c6
2450.long	0xc066a235,0xc066a235
2451.long	0x37bc4e74,0x37bc4e74
2452.long	0xa6ca82fc,0xa6ca82fc
2453.long	0xb0d090e0,0xb0d090e0
2454.long	0x15d8a733,0x15d8a733
2455.long	0x4a9804f1,0x4a9804f1
2456.long	0xf7daec41,0xf7daec41
2457.long	0x0e50cd7f,0x0e50cd7f
2458.long	0x2ff69117,0x2ff69117
2459.long	0x8dd64d76,0x8dd64d76
2460.long	0x4db0ef43,0x4db0ef43
2461.long	0x544daacc,0x544daacc
2462.long	0xdf0496e4,0xdf0496e4
2463.long	0xe3b5d19e,0xe3b5d19e
2464.long	0x1b886a4c,0x1b886a4c
2465.long	0xb81f2cc1,0xb81f2cc1
2466.long	0x7f516546,0x7f516546
2467.long	0x04ea5e9d,0x04ea5e9d
2468.long	0x5d358c01,0x5d358c01
2469.long	0x737487fa,0x737487fa
2470.long	0x2e410bfb,0x2e410bfb
2471.long	0x5a1d67b3,0x5a1d67b3
2472.long	0x52d2db92,0x52d2db92
2473.long	0x335610e9,0x335610e9
2474.long	0x1347d66d,0x1347d66d
2475.long	0x8c61d79a,0x8c61d79a
2476.long	0x7a0ca137,0x7a0ca137
2477.long	0x8e14f859,0x8e14f859
2478.long	0x893c13eb,0x893c13eb
2479.long	0xee27a9ce,0xee27a9ce
2480.long	0x35c961b7,0x35c961b7
2481.long	0xede51ce1,0xede51ce1
2482.long	0x3cb1477a,0x3cb1477a
2483.long	0x59dfd29c,0x59dfd29c
2484.long	0x3f73f255,0x3f73f255
2485.long	0x79ce1418,0x79ce1418
2486.long	0xbf37c773,0xbf37c773
2487.long	0xeacdf753,0xeacdf753
2488.long	0x5baafd5f,0x5baafd5f
2489.long	0x146f3ddf,0x146f3ddf
2490.long	0x86db4478,0x86db4478
2491.long	0x81f3afca,0x81f3afca
2492.long	0x3ec468b9,0x3ec468b9
2493.long	0x2c342438,0x2c342438
2494.long	0x5f40a3c2,0x5f40a3c2
2495.long	0x72c31d16,0x72c31d16
2496.long	0x0c25e2bc,0x0c25e2bc
2497.long	0x8b493c28,0x8b493c28
2498.long	0x41950dff,0x41950dff
2499.long	0x7101a839,0x7101a839
2500.long	0xdeb30c08,0xdeb30c08
2501.long	0x9ce4b4d8,0x9ce4b4d8
2502.long	0x90c15664,0x90c15664
2503.long	0x6184cb7b,0x6184cb7b
2504.long	0x70b632d5,0x70b632d5
2505.long	0x745c6c48,0x745c6c48
2506.long	0x4257b8d0,0x4257b8d0
2507.byte	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2508.byte	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2509.byte	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2510.byte	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2511.byte	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2512.byte	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2513.byte	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2514.byte	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2515.byte	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2516.byte	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2517.byte	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2518.byte	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2519.byte	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2520.byte	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2521.byte	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2522.byte	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2523.byte	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2524.byte	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2525.byte	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2526.byte	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2527.byte	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2528.byte	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2529.byte	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2530.byte	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2531.byte	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2532.byte	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2533.byte	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2534.byte	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2535.byte	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2536.byte	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2537.byte	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2538.byte	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2539.long	0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe
2540.long	0x1b1b1b1b, 0x1b1b1b1b, 0, 0
2541.byte	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2542.byte	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2543.byte	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2544.byte	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2545.byte	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2546.byte	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2547.byte	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2548.byte	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2549.byte	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2550.byte	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2551.byte	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2552.byte	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2553.byte	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2554.byte	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2555.byte	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2556.byte	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2557.byte	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2558.byte	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2559.byte	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2560.byte	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2561.byte	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2562.byte	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2563.byte	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2564.byte	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2565.byte	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2566.byte	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2567.byte	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2568.byte	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2569.byte	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2570.byte	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2571.byte	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2572.byte	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2573.long	0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe
2574.long	0x1b1b1b1b, 0x1b1b1b1b, 0, 0
2575.byte	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2576.byte	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2577.byte	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2578.byte	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2579.byte	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2580.byte	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2581.byte	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2582.byte	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2583.byte	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2584.byte	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2585.byte	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2586.byte	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2587.byte	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2588.byte	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2589.byte	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2590.byte	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2591.byte	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2592.byte	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2593.byte	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2594.byte	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2595.byte	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2596.byte	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2597.byte	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2598.byte	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2599.byte	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2600.byte	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2601.byte	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2602.byte	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2603.byte	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2604.byte	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2605.byte	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2606.byte	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2607.long	0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe
2608.long	0x1b1b1b1b, 0x1b1b1b1b, 0, 0
2609.byte	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
2610.byte	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
2611.byte	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
2612.byte	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
2613.byte	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
2614.byte	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
2615.byte	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
2616.byte	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
2617.byte	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
2618.byte	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
2619.byte	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
2620.byte	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
2621.byte	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
2622.byte	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
2623.byte	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
2624.byte	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
2625.byte	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
2626.byte	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
2627.byte	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
2628.byte	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
2629.byte	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
2630.byte	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
2631.byte	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
2632.byte	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
2633.byte	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
2634.byte	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
2635.byte	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
2636.byte	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
2637.byte	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
2638.byte	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
2639.byte	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
2640.byte	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
2641.long	0x80808080, 0x80808080, 0xfefefefe, 0xfefefefe
2642.long	0x1b1b1b1b, 0x1b1b1b1b, 0, 0
2643.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
2644.p2align	6
2645#endif
2646