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