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