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