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