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