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