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