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