• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1%ifidn __OUTPUT_FORMAT__,obj
2section	code	use32 class=code align=64
3%elifidn __OUTPUT_FORMAT__,win32
4$@feat.00 equ 1
5section	.text	code align=64
6%else
7section	.text	code
8%endif
9;extern	_OPENSSL_ia32cap_P
10global	_aesni_encrypt
11align	16
12_aesni_encrypt:
13L$_aesni_encrypt_begin:
14	mov	eax,DWORD [4+esp]
15	mov	edx,DWORD [12+esp]
16	movups	xmm2,[eax]
17	mov	ecx,DWORD [240+edx]
18	mov	eax,DWORD [8+esp]
19	movups	xmm0,[edx]
20	movups	xmm1,[16+edx]
21	lea	edx,[32+edx]
22	xorps	xmm2,xmm0
23L$000enc1_loop_1:
24db	102,15,56,220,209
25	dec	ecx
26	movups	xmm1,[edx]
27	lea	edx,[16+edx]
28	jnz	NEAR L$000enc1_loop_1
29db	102,15,56,221,209
30	pxor	xmm0,xmm0
31	pxor	xmm1,xmm1
32	movups	[eax],xmm2
33	pxor	xmm2,xmm2
34	ret
35global	_aesni_decrypt
36align	16
37_aesni_decrypt:
38L$_aesni_decrypt_begin:
39	mov	eax,DWORD [4+esp]
40	mov	edx,DWORD [12+esp]
41	movups	xmm2,[eax]
42	mov	ecx,DWORD [240+edx]
43	mov	eax,DWORD [8+esp]
44	movups	xmm0,[edx]
45	movups	xmm1,[16+edx]
46	lea	edx,[32+edx]
47	xorps	xmm2,xmm0
48L$001dec1_loop_2:
49db	102,15,56,222,209
50	dec	ecx
51	movups	xmm1,[edx]
52	lea	edx,[16+edx]
53	jnz	NEAR L$001dec1_loop_2
54db	102,15,56,223,209
55	pxor	xmm0,xmm0
56	pxor	xmm1,xmm1
57	movups	[eax],xmm2
58	pxor	xmm2,xmm2
59	ret
60align	16
61__aesni_encrypt2:
62	movups	xmm0,[edx]
63	shl	ecx,4
64	movups	xmm1,[16+edx]
65	xorps	xmm2,xmm0
66	pxor	xmm3,xmm0
67	movups	xmm0,[32+edx]
68	lea	edx,[32+ecx*1+edx]
69	neg	ecx
70	add	ecx,16
71L$002enc2_loop:
72db	102,15,56,220,209
73db	102,15,56,220,217
74	movups	xmm1,[ecx*1+edx]
75	add	ecx,32
76db	102,15,56,220,208
77db	102,15,56,220,216
78	movups	xmm0,[ecx*1+edx-16]
79	jnz	NEAR L$002enc2_loop
80db	102,15,56,220,209
81db	102,15,56,220,217
82db	102,15,56,221,208
83db	102,15,56,221,216
84	ret
85align	16
86__aesni_decrypt2:
87	movups	xmm0,[edx]
88	shl	ecx,4
89	movups	xmm1,[16+edx]
90	xorps	xmm2,xmm0
91	pxor	xmm3,xmm0
92	movups	xmm0,[32+edx]
93	lea	edx,[32+ecx*1+edx]
94	neg	ecx
95	add	ecx,16
96L$003dec2_loop:
97db	102,15,56,222,209
98db	102,15,56,222,217
99	movups	xmm1,[ecx*1+edx]
100	add	ecx,32
101db	102,15,56,222,208
102db	102,15,56,222,216
103	movups	xmm0,[ecx*1+edx-16]
104	jnz	NEAR L$003dec2_loop
105db	102,15,56,222,209
106db	102,15,56,222,217
107db	102,15,56,223,208
108db	102,15,56,223,216
109	ret
110align	16
111__aesni_encrypt3:
112	movups	xmm0,[edx]
113	shl	ecx,4
114	movups	xmm1,[16+edx]
115	xorps	xmm2,xmm0
116	pxor	xmm3,xmm0
117	pxor	xmm4,xmm0
118	movups	xmm0,[32+edx]
119	lea	edx,[32+ecx*1+edx]
120	neg	ecx
121	add	ecx,16
122L$004enc3_loop:
123db	102,15,56,220,209
124db	102,15,56,220,217
125db	102,15,56,220,225
126	movups	xmm1,[ecx*1+edx]
127	add	ecx,32
128db	102,15,56,220,208
129db	102,15,56,220,216
130db	102,15,56,220,224
131	movups	xmm0,[ecx*1+edx-16]
132	jnz	NEAR L$004enc3_loop
133db	102,15,56,220,209
134db	102,15,56,220,217
135db	102,15,56,220,225
136db	102,15,56,221,208
137db	102,15,56,221,216
138db	102,15,56,221,224
139	ret
140align	16
141__aesni_decrypt3:
142	movups	xmm0,[edx]
143	shl	ecx,4
144	movups	xmm1,[16+edx]
145	xorps	xmm2,xmm0
146	pxor	xmm3,xmm0
147	pxor	xmm4,xmm0
148	movups	xmm0,[32+edx]
149	lea	edx,[32+ecx*1+edx]
150	neg	ecx
151	add	ecx,16
152L$005dec3_loop:
153db	102,15,56,222,209
154db	102,15,56,222,217
155db	102,15,56,222,225
156	movups	xmm1,[ecx*1+edx]
157	add	ecx,32
158db	102,15,56,222,208
159db	102,15,56,222,216
160db	102,15,56,222,224
161	movups	xmm0,[ecx*1+edx-16]
162	jnz	NEAR L$005dec3_loop
163db	102,15,56,222,209
164db	102,15,56,222,217
165db	102,15,56,222,225
166db	102,15,56,223,208
167db	102,15,56,223,216
168db	102,15,56,223,224
169	ret
170align	16
171__aesni_encrypt4:
172	movups	xmm0,[edx]
173	movups	xmm1,[16+edx]
174	shl	ecx,4
175	xorps	xmm2,xmm0
176	pxor	xmm3,xmm0
177	pxor	xmm4,xmm0
178	pxor	xmm5,xmm0
179	movups	xmm0,[32+edx]
180	lea	edx,[32+ecx*1+edx]
181	neg	ecx
182db	15,31,64,0
183	add	ecx,16
184L$006enc4_loop:
185db	102,15,56,220,209
186db	102,15,56,220,217
187db	102,15,56,220,225
188db	102,15,56,220,233
189	movups	xmm1,[ecx*1+edx]
190	add	ecx,32
191db	102,15,56,220,208
192db	102,15,56,220,216
193db	102,15,56,220,224
194db	102,15,56,220,232
195	movups	xmm0,[ecx*1+edx-16]
196	jnz	NEAR L$006enc4_loop
197db	102,15,56,220,209
198db	102,15,56,220,217
199db	102,15,56,220,225
200db	102,15,56,220,233
201db	102,15,56,221,208
202db	102,15,56,221,216
203db	102,15,56,221,224
204db	102,15,56,221,232
205	ret
206align	16
207__aesni_decrypt4:
208	movups	xmm0,[edx]
209	movups	xmm1,[16+edx]
210	shl	ecx,4
211	xorps	xmm2,xmm0
212	pxor	xmm3,xmm0
213	pxor	xmm4,xmm0
214	pxor	xmm5,xmm0
215	movups	xmm0,[32+edx]
216	lea	edx,[32+ecx*1+edx]
217	neg	ecx
218db	15,31,64,0
219	add	ecx,16
220L$007dec4_loop:
221db	102,15,56,222,209
222db	102,15,56,222,217
223db	102,15,56,222,225
224db	102,15,56,222,233
225	movups	xmm1,[ecx*1+edx]
226	add	ecx,32
227db	102,15,56,222,208
228db	102,15,56,222,216
229db	102,15,56,222,224
230db	102,15,56,222,232
231	movups	xmm0,[ecx*1+edx-16]
232	jnz	NEAR L$007dec4_loop
233db	102,15,56,222,209
234db	102,15,56,222,217
235db	102,15,56,222,225
236db	102,15,56,222,233
237db	102,15,56,223,208
238db	102,15,56,223,216
239db	102,15,56,223,224
240db	102,15,56,223,232
241	ret
242align	16
243__aesni_encrypt6:
244	movups	xmm0,[edx]
245	shl	ecx,4
246	movups	xmm1,[16+edx]
247	xorps	xmm2,xmm0
248	pxor	xmm3,xmm0
249	pxor	xmm4,xmm0
250db	102,15,56,220,209
251	pxor	xmm5,xmm0
252	pxor	xmm6,xmm0
253db	102,15,56,220,217
254	lea	edx,[32+ecx*1+edx]
255	neg	ecx
256db	102,15,56,220,225
257	pxor	xmm7,xmm0
258	movups	xmm0,[ecx*1+edx]
259	add	ecx,16
260	jmp	NEAR L$008_aesni_encrypt6_inner
261align	16
262L$009enc6_loop:
263db	102,15,56,220,209
264db	102,15,56,220,217
265db	102,15,56,220,225
266L$008_aesni_encrypt6_inner:
267db	102,15,56,220,233
268db	102,15,56,220,241
269db	102,15,56,220,249
270L$_aesni_encrypt6_enter:
271	movups	xmm1,[ecx*1+edx]
272	add	ecx,32
273db	102,15,56,220,208
274db	102,15,56,220,216
275db	102,15,56,220,224
276db	102,15,56,220,232
277db	102,15,56,220,240
278db	102,15,56,220,248
279	movups	xmm0,[ecx*1+edx-16]
280	jnz	NEAR L$009enc6_loop
281db	102,15,56,220,209
282db	102,15,56,220,217
283db	102,15,56,220,225
284db	102,15,56,220,233
285db	102,15,56,220,241
286db	102,15,56,220,249
287db	102,15,56,221,208
288db	102,15,56,221,216
289db	102,15,56,221,224
290db	102,15,56,221,232
291db	102,15,56,221,240
292db	102,15,56,221,248
293	ret
294align	16
295__aesni_decrypt6:
296	movups	xmm0,[edx]
297	shl	ecx,4
298	movups	xmm1,[16+edx]
299	xorps	xmm2,xmm0
300	pxor	xmm3,xmm0
301	pxor	xmm4,xmm0
302db	102,15,56,222,209
303	pxor	xmm5,xmm0
304	pxor	xmm6,xmm0
305db	102,15,56,222,217
306	lea	edx,[32+ecx*1+edx]
307	neg	ecx
308db	102,15,56,222,225
309	pxor	xmm7,xmm0
310	movups	xmm0,[ecx*1+edx]
311	add	ecx,16
312	jmp	NEAR L$010_aesni_decrypt6_inner
313align	16
314L$011dec6_loop:
315db	102,15,56,222,209
316db	102,15,56,222,217
317db	102,15,56,222,225
318L$010_aesni_decrypt6_inner:
319db	102,15,56,222,233
320db	102,15,56,222,241
321db	102,15,56,222,249
322L$_aesni_decrypt6_enter:
323	movups	xmm1,[ecx*1+edx]
324	add	ecx,32
325db	102,15,56,222,208
326db	102,15,56,222,216
327db	102,15,56,222,224
328db	102,15,56,222,232
329db	102,15,56,222,240
330db	102,15,56,222,248
331	movups	xmm0,[ecx*1+edx-16]
332	jnz	NEAR L$011dec6_loop
333db	102,15,56,222,209
334db	102,15,56,222,217
335db	102,15,56,222,225
336db	102,15,56,222,233
337db	102,15,56,222,241
338db	102,15,56,222,249
339db	102,15,56,223,208
340db	102,15,56,223,216
341db	102,15,56,223,224
342db	102,15,56,223,232
343db	102,15,56,223,240
344db	102,15,56,223,248
345	ret
346global	_aesni_ecb_encrypt
347align	16
348_aesni_ecb_encrypt:
349L$_aesni_ecb_encrypt_begin:
350	push	ebp
351	push	ebx
352	push	esi
353	push	edi
354	mov	esi,DWORD [20+esp]
355	mov	edi,DWORD [24+esp]
356	mov	eax,DWORD [28+esp]
357	mov	edx,DWORD [32+esp]
358	mov	ebx,DWORD [36+esp]
359	and	eax,-16
360	jz	NEAR L$012ecb_ret
361	mov	ecx,DWORD [240+edx]
362	test	ebx,ebx
363	jz	NEAR L$013ecb_decrypt
364	mov	ebp,edx
365	mov	ebx,ecx
366	cmp	eax,96
367	jb	NEAR L$014ecb_enc_tail
368	movdqu	xmm2,[esi]
369	movdqu	xmm3,[16+esi]
370	movdqu	xmm4,[32+esi]
371	movdqu	xmm5,[48+esi]
372	movdqu	xmm6,[64+esi]
373	movdqu	xmm7,[80+esi]
374	lea	esi,[96+esi]
375	sub	eax,96
376	jmp	NEAR L$015ecb_enc_loop6_enter
377align	16
378L$016ecb_enc_loop6:
379	movups	[edi],xmm2
380	movdqu	xmm2,[esi]
381	movups	[16+edi],xmm3
382	movdqu	xmm3,[16+esi]
383	movups	[32+edi],xmm4
384	movdqu	xmm4,[32+esi]
385	movups	[48+edi],xmm5
386	movdqu	xmm5,[48+esi]
387	movups	[64+edi],xmm6
388	movdqu	xmm6,[64+esi]
389	movups	[80+edi],xmm7
390	lea	edi,[96+edi]
391	movdqu	xmm7,[80+esi]
392	lea	esi,[96+esi]
393L$015ecb_enc_loop6_enter:
394	call	__aesni_encrypt6
395	mov	edx,ebp
396	mov	ecx,ebx
397	sub	eax,96
398	jnc	NEAR L$016ecb_enc_loop6
399	movups	[edi],xmm2
400	movups	[16+edi],xmm3
401	movups	[32+edi],xmm4
402	movups	[48+edi],xmm5
403	movups	[64+edi],xmm6
404	movups	[80+edi],xmm7
405	lea	edi,[96+edi]
406	add	eax,96
407	jz	NEAR L$012ecb_ret
408L$014ecb_enc_tail:
409	movups	xmm2,[esi]
410	cmp	eax,32
411	jb	NEAR L$017ecb_enc_one
412	movups	xmm3,[16+esi]
413	je	NEAR L$018ecb_enc_two
414	movups	xmm4,[32+esi]
415	cmp	eax,64
416	jb	NEAR L$019ecb_enc_three
417	movups	xmm5,[48+esi]
418	je	NEAR L$020ecb_enc_four
419	movups	xmm6,[64+esi]
420	xorps	xmm7,xmm7
421	call	__aesni_encrypt6
422	movups	[edi],xmm2
423	movups	[16+edi],xmm3
424	movups	[32+edi],xmm4
425	movups	[48+edi],xmm5
426	movups	[64+edi],xmm6
427	jmp	NEAR L$012ecb_ret
428align	16
429L$017ecb_enc_one:
430	movups	xmm0,[edx]
431	movups	xmm1,[16+edx]
432	lea	edx,[32+edx]
433	xorps	xmm2,xmm0
434L$021enc1_loop_3:
435db	102,15,56,220,209
436	dec	ecx
437	movups	xmm1,[edx]
438	lea	edx,[16+edx]
439	jnz	NEAR L$021enc1_loop_3
440db	102,15,56,221,209
441	movups	[edi],xmm2
442	jmp	NEAR L$012ecb_ret
443align	16
444L$018ecb_enc_two:
445	call	__aesni_encrypt2
446	movups	[edi],xmm2
447	movups	[16+edi],xmm3
448	jmp	NEAR L$012ecb_ret
449align	16
450L$019ecb_enc_three:
451	call	__aesni_encrypt3
452	movups	[edi],xmm2
453	movups	[16+edi],xmm3
454	movups	[32+edi],xmm4
455	jmp	NEAR L$012ecb_ret
456align	16
457L$020ecb_enc_four:
458	call	__aesni_encrypt4
459	movups	[edi],xmm2
460	movups	[16+edi],xmm3
461	movups	[32+edi],xmm4
462	movups	[48+edi],xmm5
463	jmp	NEAR L$012ecb_ret
464align	16
465L$013ecb_decrypt:
466	mov	ebp,edx
467	mov	ebx,ecx
468	cmp	eax,96
469	jb	NEAR L$022ecb_dec_tail
470	movdqu	xmm2,[esi]
471	movdqu	xmm3,[16+esi]
472	movdqu	xmm4,[32+esi]
473	movdqu	xmm5,[48+esi]
474	movdqu	xmm6,[64+esi]
475	movdqu	xmm7,[80+esi]
476	lea	esi,[96+esi]
477	sub	eax,96
478	jmp	NEAR L$023ecb_dec_loop6_enter
479align	16
480L$024ecb_dec_loop6:
481	movups	[edi],xmm2
482	movdqu	xmm2,[esi]
483	movups	[16+edi],xmm3
484	movdqu	xmm3,[16+esi]
485	movups	[32+edi],xmm4
486	movdqu	xmm4,[32+esi]
487	movups	[48+edi],xmm5
488	movdqu	xmm5,[48+esi]
489	movups	[64+edi],xmm6
490	movdqu	xmm6,[64+esi]
491	movups	[80+edi],xmm7
492	lea	edi,[96+edi]
493	movdqu	xmm7,[80+esi]
494	lea	esi,[96+esi]
495L$023ecb_dec_loop6_enter:
496	call	__aesni_decrypt6
497	mov	edx,ebp
498	mov	ecx,ebx
499	sub	eax,96
500	jnc	NEAR L$024ecb_dec_loop6
501	movups	[edi],xmm2
502	movups	[16+edi],xmm3
503	movups	[32+edi],xmm4
504	movups	[48+edi],xmm5
505	movups	[64+edi],xmm6
506	movups	[80+edi],xmm7
507	lea	edi,[96+edi]
508	add	eax,96
509	jz	NEAR L$012ecb_ret
510L$022ecb_dec_tail:
511	movups	xmm2,[esi]
512	cmp	eax,32
513	jb	NEAR L$025ecb_dec_one
514	movups	xmm3,[16+esi]
515	je	NEAR L$026ecb_dec_two
516	movups	xmm4,[32+esi]
517	cmp	eax,64
518	jb	NEAR L$027ecb_dec_three
519	movups	xmm5,[48+esi]
520	je	NEAR L$028ecb_dec_four
521	movups	xmm6,[64+esi]
522	xorps	xmm7,xmm7
523	call	__aesni_decrypt6
524	movups	[edi],xmm2
525	movups	[16+edi],xmm3
526	movups	[32+edi],xmm4
527	movups	[48+edi],xmm5
528	movups	[64+edi],xmm6
529	jmp	NEAR L$012ecb_ret
530align	16
531L$025ecb_dec_one:
532	movups	xmm0,[edx]
533	movups	xmm1,[16+edx]
534	lea	edx,[32+edx]
535	xorps	xmm2,xmm0
536L$029dec1_loop_4:
537db	102,15,56,222,209
538	dec	ecx
539	movups	xmm1,[edx]
540	lea	edx,[16+edx]
541	jnz	NEAR L$029dec1_loop_4
542db	102,15,56,223,209
543	movups	[edi],xmm2
544	jmp	NEAR L$012ecb_ret
545align	16
546L$026ecb_dec_two:
547	call	__aesni_decrypt2
548	movups	[edi],xmm2
549	movups	[16+edi],xmm3
550	jmp	NEAR L$012ecb_ret
551align	16
552L$027ecb_dec_three:
553	call	__aesni_decrypt3
554	movups	[edi],xmm2
555	movups	[16+edi],xmm3
556	movups	[32+edi],xmm4
557	jmp	NEAR L$012ecb_ret
558align	16
559L$028ecb_dec_four:
560	call	__aesni_decrypt4
561	movups	[edi],xmm2
562	movups	[16+edi],xmm3
563	movups	[32+edi],xmm4
564	movups	[48+edi],xmm5
565L$012ecb_ret:
566	pxor	xmm0,xmm0
567	pxor	xmm1,xmm1
568	pxor	xmm2,xmm2
569	pxor	xmm3,xmm3
570	pxor	xmm4,xmm4
571	pxor	xmm5,xmm5
572	pxor	xmm6,xmm6
573	pxor	xmm7,xmm7
574	pop	edi
575	pop	esi
576	pop	ebx
577	pop	ebp
578	ret
579global	_aesni_ccm64_encrypt_blocks
580align	16
581_aesni_ccm64_encrypt_blocks:
582L$_aesni_ccm64_encrypt_blocks_begin:
583	push	ebp
584	push	ebx
585	push	esi
586	push	edi
587	mov	esi,DWORD [20+esp]
588	mov	edi,DWORD [24+esp]
589	mov	eax,DWORD [28+esp]
590	mov	edx,DWORD [32+esp]
591	mov	ebx,DWORD [36+esp]
592	mov	ecx,DWORD [40+esp]
593	mov	ebp,esp
594	sub	esp,60
595	and	esp,-16
596	mov	DWORD [48+esp],ebp
597	movdqu	xmm7,[ebx]
598	movdqu	xmm3,[ecx]
599	mov	ecx,DWORD [240+edx]
600	mov	DWORD [esp],202182159
601	mov	DWORD [4+esp],134810123
602	mov	DWORD [8+esp],67438087
603	mov	DWORD [12+esp],66051
604	mov	ebx,1
605	xor	ebp,ebp
606	mov	DWORD [16+esp],ebx
607	mov	DWORD [20+esp],ebp
608	mov	DWORD [24+esp],ebp
609	mov	DWORD [28+esp],ebp
610	shl	ecx,4
611	mov	ebx,16
612	lea	ebp,[edx]
613	movdqa	xmm5,[esp]
614	movdqa	xmm2,xmm7
615	lea	edx,[32+ecx*1+edx]
616	sub	ebx,ecx
617db	102,15,56,0,253
618L$030ccm64_enc_outer:
619	movups	xmm0,[ebp]
620	mov	ecx,ebx
621	movups	xmm6,[esi]
622	xorps	xmm2,xmm0
623	movups	xmm1,[16+ebp]
624	xorps	xmm0,xmm6
625	xorps	xmm3,xmm0
626	movups	xmm0,[32+ebp]
627L$031ccm64_enc2_loop:
628db	102,15,56,220,209
629db	102,15,56,220,217
630	movups	xmm1,[ecx*1+edx]
631	add	ecx,32
632db	102,15,56,220,208
633db	102,15,56,220,216
634	movups	xmm0,[ecx*1+edx-16]
635	jnz	NEAR L$031ccm64_enc2_loop
636db	102,15,56,220,209
637db	102,15,56,220,217
638	paddq	xmm7,[16+esp]
639	dec	eax
640db	102,15,56,221,208
641db	102,15,56,221,216
642	lea	esi,[16+esi]
643	xorps	xmm6,xmm2
644	movdqa	xmm2,xmm7
645	movups	[edi],xmm6
646db	102,15,56,0,213
647	lea	edi,[16+edi]
648	jnz	NEAR L$030ccm64_enc_outer
649	mov	esp,DWORD [48+esp]
650	mov	edi,DWORD [40+esp]
651	movups	[edi],xmm3
652	pxor	xmm0,xmm0
653	pxor	xmm1,xmm1
654	pxor	xmm2,xmm2
655	pxor	xmm3,xmm3
656	pxor	xmm4,xmm4
657	pxor	xmm5,xmm5
658	pxor	xmm6,xmm6
659	pxor	xmm7,xmm7
660	pop	edi
661	pop	esi
662	pop	ebx
663	pop	ebp
664	ret
665global	_aesni_ccm64_decrypt_blocks
666align	16
667_aesni_ccm64_decrypt_blocks:
668L$_aesni_ccm64_decrypt_blocks_begin:
669	push	ebp
670	push	ebx
671	push	esi
672	push	edi
673	mov	esi,DWORD [20+esp]
674	mov	edi,DWORD [24+esp]
675	mov	eax,DWORD [28+esp]
676	mov	edx,DWORD [32+esp]
677	mov	ebx,DWORD [36+esp]
678	mov	ecx,DWORD [40+esp]
679	mov	ebp,esp
680	sub	esp,60
681	and	esp,-16
682	mov	DWORD [48+esp],ebp
683	movdqu	xmm7,[ebx]
684	movdqu	xmm3,[ecx]
685	mov	ecx,DWORD [240+edx]
686	mov	DWORD [esp],202182159
687	mov	DWORD [4+esp],134810123
688	mov	DWORD [8+esp],67438087
689	mov	DWORD [12+esp],66051
690	mov	ebx,1
691	xor	ebp,ebp
692	mov	DWORD [16+esp],ebx
693	mov	DWORD [20+esp],ebp
694	mov	DWORD [24+esp],ebp
695	mov	DWORD [28+esp],ebp
696	movdqa	xmm5,[esp]
697	movdqa	xmm2,xmm7
698	mov	ebp,edx
699	mov	ebx,ecx
700db	102,15,56,0,253
701	movups	xmm0,[edx]
702	movups	xmm1,[16+edx]
703	lea	edx,[32+edx]
704	xorps	xmm2,xmm0
705L$032enc1_loop_5:
706db	102,15,56,220,209
707	dec	ecx
708	movups	xmm1,[edx]
709	lea	edx,[16+edx]
710	jnz	NEAR L$032enc1_loop_5
711db	102,15,56,221,209
712	shl	ebx,4
713	mov	ecx,16
714	movups	xmm6,[esi]
715	paddq	xmm7,[16+esp]
716	lea	esi,[16+esi]
717	sub	ecx,ebx
718	lea	edx,[32+ebx*1+ebp]
719	mov	ebx,ecx
720	jmp	NEAR L$033ccm64_dec_outer
721align	16
722L$033ccm64_dec_outer:
723	xorps	xmm6,xmm2
724	movdqa	xmm2,xmm7
725	movups	[edi],xmm6
726	lea	edi,[16+edi]
727db	102,15,56,0,213
728	sub	eax,1
729	jz	NEAR L$034ccm64_dec_break
730	movups	xmm0,[ebp]
731	mov	ecx,ebx
732	movups	xmm1,[16+ebp]
733	xorps	xmm6,xmm0
734	xorps	xmm2,xmm0
735	xorps	xmm3,xmm6
736	movups	xmm0,[32+ebp]
737L$035ccm64_dec2_loop:
738db	102,15,56,220,209
739db	102,15,56,220,217
740	movups	xmm1,[ecx*1+edx]
741	add	ecx,32
742db	102,15,56,220,208
743db	102,15,56,220,216
744	movups	xmm0,[ecx*1+edx-16]
745	jnz	NEAR L$035ccm64_dec2_loop
746	movups	xmm6,[esi]
747	paddq	xmm7,[16+esp]
748db	102,15,56,220,209
749db	102,15,56,220,217
750db	102,15,56,221,208
751db	102,15,56,221,216
752	lea	esi,[16+esi]
753	jmp	NEAR L$033ccm64_dec_outer
754align	16
755L$034ccm64_dec_break:
756	mov	ecx,DWORD [240+ebp]
757	mov	edx,ebp
758	movups	xmm0,[edx]
759	movups	xmm1,[16+edx]
760	xorps	xmm6,xmm0
761	lea	edx,[32+edx]
762	xorps	xmm3,xmm6
763L$036enc1_loop_6:
764db	102,15,56,220,217
765	dec	ecx
766	movups	xmm1,[edx]
767	lea	edx,[16+edx]
768	jnz	NEAR L$036enc1_loop_6
769db	102,15,56,221,217
770	mov	esp,DWORD [48+esp]
771	mov	edi,DWORD [40+esp]
772	movups	[edi],xmm3
773	pxor	xmm0,xmm0
774	pxor	xmm1,xmm1
775	pxor	xmm2,xmm2
776	pxor	xmm3,xmm3
777	pxor	xmm4,xmm4
778	pxor	xmm5,xmm5
779	pxor	xmm6,xmm6
780	pxor	xmm7,xmm7
781	pop	edi
782	pop	esi
783	pop	ebx
784	pop	ebp
785	ret
786global	_aesni_ctr32_encrypt_blocks
787align	16
788_aesni_ctr32_encrypt_blocks:
789L$_aesni_ctr32_encrypt_blocks_begin:
790	push	ebp
791	push	ebx
792	push	esi
793	push	edi
794	mov	esi,DWORD [20+esp]
795	mov	edi,DWORD [24+esp]
796	mov	eax,DWORD [28+esp]
797	mov	edx,DWORD [32+esp]
798	mov	ebx,DWORD [36+esp]
799	mov	ebp,esp
800	sub	esp,88
801	and	esp,-16
802	mov	DWORD [80+esp],ebp
803	cmp	eax,1
804	je	NEAR L$037ctr32_one_shortcut
805	movdqu	xmm7,[ebx]
806	mov	DWORD [esp],202182159
807	mov	DWORD [4+esp],134810123
808	mov	DWORD [8+esp],67438087
809	mov	DWORD [12+esp],66051
810	mov	ecx,6
811	xor	ebp,ebp
812	mov	DWORD [16+esp],ecx
813	mov	DWORD [20+esp],ecx
814	mov	DWORD [24+esp],ecx
815	mov	DWORD [28+esp],ebp
816db	102,15,58,22,251,3
817db	102,15,58,34,253,3
818	mov	ecx,DWORD [240+edx]
819	bswap	ebx
820	pxor	xmm0,xmm0
821	pxor	xmm1,xmm1
822	movdqa	xmm2,[esp]
823db	102,15,58,34,195,0
824	lea	ebp,[3+ebx]
825db	102,15,58,34,205,0
826	inc	ebx
827db	102,15,58,34,195,1
828	inc	ebp
829db	102,15,58,34,205,1
830	inc	ebx
831db	102,15,58,34,195,2
832	inc	ebp
833db	102,15,58,34,205,2
834	movdqa	[48+esp],xmm0
835db	102,15,56,0,194
836	movdqu	xmm6,[edx]
837	movdqa	[64+esp],xmm1
838db	102,15,56,0,202
839	pshufd	xmm2,xmm0,192
840	pshufd	xmm3,xmm0,128
841	cmp	eax,6
842	jb	NEAR L$038ctr32_tail
843	pxor	xmm7,xmm6
844	shl	ecx,4
845	mov	ebx,16
846	movdqa	[32+esp],xmm7
847	mov	ebp,edx
848	sub	ebx,ecx
849	lea	edx,[32+ecx*1+edx]
850	sub	eax,6
851	jmp	NEAR L$039ctr32_loop6
852align	16
853L$039ctr32_loop6:
854	pshufd	xmm4,xmm0,64
855	movdqa	xmm0,[32+esp]
856	pshufd	xmm5,xmm1,192
857	pxor	xmm2,xmm0
858	pshufd	xmm6,xmm1,128
859	pxor	xmm3,xmm0
860	pshufd	xmm7,xmm1,64
861	movups	xmm1,[16+ebp]
862	pxor	xmm4,xmm0
863	pxor	xmm5,xmm0
864db	102,15,56,220,209
865	pxor	xmm6,xmm0
866	pxor	xmm7,xmm0
867db	102,15,56,220,217
868	movups	xmm0,[32+ebp]
869	mov	ecx,ebx
870db	102,15,56,220,225
871db	102,15,56,220,233
872db	102,15,56,220,241
873db	102,15,56,220,249
874	call	L$_aesni_encrypt6_enter
875	movups	xmm1,[esi]
876	movups	xmm0,[16+esi]
877	xorps	xmm2,xmm1
878	movups	xmm1,[32+esi]
879	xorps	xmm3,xmm0
880	movups	[edi],xmm2
881	movdqa	xmm0,[16+esp]
882	xorps	xmm4,xmm1
883	movdqa	xmm1,[64+esp]
884	movups	[16+edi],xmm3
885	movups	[32+edi],xmm4
886	paddd	xmm1,xmm0
887	paddd	xmm0,[48+esp]
888	movdqa	xmm2,[esp]
889	movups	xmm3,[48+esi]
890	movups	xmm4,[64+esi]
891	xorps	xmm5,xmm3
892	movups	xmm3,[80+esi]
893	lea	esi,[96+esi]
894	movdqa	[48+esp],xmm0
895db	102,15,56,0,194
896	xorps	xmm6,xmm4
897	movups	[48+edi],xmm5
898	xorps	xmm7,xmm3
899	movdqa	[64+esp],xmm1
900db	102,15,56,0,202
901	movups	[64+edi],xmm6
902	pshufd	xmm2,xmm0,192
903	movups	[80+edi],xmm7
904	lea	edi,[96+edi]
905	pshufd	xmm3,xmm0,128
906	sub	eax,6
907	jnc	NEAR L$039ctr32_loop6
908	add	eax,6
909	jz	NEAR L$040ctr32_ret
910	movdqu	xmm7,[ebp]
911	mov	edx,ebp
912	pxor	xmm7,[32+esp]
913	mov	ecx,DWORD [240+ebp]
914L$038ctr32_tail:
915	por	xmm2,xmm7
916	cmp	eax,2
917	jb	NEAR L$041ctr32_one
918	pshufd	xmm4,xmm0,64
919	por	xmm3,xmm7
920	je	NEAR L$042ctr32_two
921	pshufd	xmm5,xmm1,192
922	por	xmm4,xmm7
923	cmp	eax,4
924	jb	NEAR L$043ctr32_three
925	pshufd	xmm6,xmm1,128
926	por	xmm5,xmm7
927	je	NEAR L$044ctr32_four
928	por	xmm6,xmm7
929	call	__aesni_encrypt6
930	movups	xmm1,[esi]
931	movups	xmm0,[16+esi]
932	xorps	xmm2,xmm1
933	movups	xmm1,[32+esi]
934	xorps	xmm3,xmm0
935	movups	xmm0,[48+esi]
936	xorps	xmm4,xmm1
937	movups	xmm1,[64+esi]
938	xorps	xmm5,xmm0
939	movups	[edi],xmm2
940	xorps	xmm6,xmm1
941	movups	[16+edi],xmm3
942	movups	[32+edi],xmm4
943	movups	[48+edi],xmm5
944	movups	[64+edi],xmm6
945	jmp	NEAR L$040ctr32_ret
946align	16
947L$037ctr32_one_shortcut:
948	movups	xmm2,[ebx]
949	mov	ecx,DWORD [240+edx]
950L$041ctr32_one:
951	movups	xmm0,[edx]
952	movups	xmm1,[16+edx]
953	lea	edx,[32+edx]
954	xorps	xmm2,xmm0
955L$045enc1_loop_7:
956db	102,15,56,220,209
957	dec	ecx
958	movups	xmm1,[edx]
959	lea	edx,[16+edx]
960	jnz	NEAR L$045enc1_loop_7
961db	102,15,56,221,209
962	movups	xmm6,[esi]
963	xorps	xmm6,xmm2
964	movups	[edi],xmm6
965	jmp	NEAR L$040ctr32_ret
966align	16
967L$042ctr32_two:
968	call	__aesni_encrypt2
969	movups	xmm5,[esi]
970	movups	xmm6,[16+esi]
971	xorps	xmm2,xmm5
972	xorps	xmm3,xmm6
973	movups	[edi],xmm2
974	movups	[16+edi],xmm3
975	jmp	NEAR L$040ctr32_ret
976align	16
977L$043ctr32_three:
978	call	__aesni_encrypt3
979	movups	xmm5,[esi]
980	movups	xmm6,[16+esi]
981	xorps	xmm2,xmm5
982	movups	xmm7,[32+esi]
983	xorps	xmm3,xmm6
984	movups	[edi],xmm2
985	xorps	xmm4,xmm7
986	movups	[16+edi],xmm3
987	movups	[32+edi],xmm4
988	jmp	NEAR L$040ctr32_ret
989align	16
990L$044ctr32_four:
991	call	__aesni_encrypt4
992	movups	xmm6,[esi]
993	movups	xmm7,[16+esi]
994	movups	xmm1,[32+esi]
995	xorps	xmm2,xmm6
996	movups	xmm0,[48+esi]
997	xorps	xmm3,xmm7
998	movups	[edi],xmm2
999	xorps	xmm4,xmm1
1000	movups	[16+edi],xmm3
1001	xorps	xmm5,xmm0
1002	movups	[32+edi],xmm4
1003	movups	[48+edi],xmm5
1004L$040ctr32_ret:
1005	pxor	xmm0,xmm0
1006	pxor	xmm1,xmm1
1007	pxor	xmm2,xmm2
1008	pxor	xmm3,xmm3
1009	pxor	xmm4,xmm4
1010	movdqa	[32+esp],xmm0
1011	pxor	xmm5,xmm5
1012	movdqa	[48+esp],xmm0
1013	pxor	xmm6,xmm6
1014	movdqa	[64+esp],xmm0
1015	pxor	xmm7,xmm7
1016	mov	esp,DWORD [80+esp]
1017	pop	edi
1018	pop	esi
1019	pop	ebx
1020	pop	ebp
1021	ret
1022global	_aesni_xts_encrypt
1023align	16
1024_aesni_xts_encrypt:
1025L$_aesni_xts_encrypt_begin:
1026	push	ebp
1027	push	ebx
1028	push	esi
1029	push	edi
1030	mov	edx,DWORD [36+esp]
1031	mov	esi,DWORD [40+esp]
1032	mov	ecx,DWORD [240+edx]
1033	movups	xmm2,[esi]
1034	movups	xmm0,[edx]
1035	movups	xmm1,[16+edx]
1036	lea	edx,[32+edx]
1037	xorps	xmm2,xmm0
1038L$046enc1_loop_8:
1039db	102,15,56,220,209
1040	dec	ecx
1041	movups	xmm1,[edx]
1042	lea	edx,[16+edx]
1043	jnz	NEAR L$046enc1_loop_8
1044db	102,15,56,221,209
1045	mov	esi,DWORD [20+esp]
1046	mov	edi,DWORD [24+esp]
1047	mov	eax,DWORD [28+esp]
1048	mov	edx,DWORD [32+esp]
1049	mov	ebp,esp
1050	sub	esp,120
1051	mov	ecx,DWORD [240+edx]
1052	and	esp,-16
1053	mov	DWORD [96+esp],135
1054	mov	DWORD [100+esp],0
1055	mov	DWORD [104+esp],1
1056	mov	DWORD [108+esp],0
1057	mov	DWORD [112+esp],eax
1058	mov	DWORD [116+esp],ebp
1059	movdqa	xmm1,xmm2
1060	pxor	xmm0,xmm0
1061	movdqa	xmm3,[96+esp]
1062	pcmpgtd	xmm0,xmm1
1063	and	eax,-16
1064	mov	ebp,edx
1065	mov	ebx,ecx
1066	sub	eax,96
1067	jc	NEAR L$047xts_enc_short
1068	shl	ecx,4
1069	mov	ebx,16
1070	sub	ebx,ecx
1071	lea	edx,[32+ecx*1+edx]
1072	jmp	NEAR L$048xts_enc_loop6
1073align	16
1074L$048xts_enc_loop6:
1075	pshufd	xmm2,xmm0,19
1076	pxor	xmm0,xmm0
1077	movdqa	[esp],xmm1
1078	paddq	xmm1,xmm1
1079	pand	xmm2,xmm3
1080	pcmpgtd	xmm0,xmm1
1081	pxor	xmm1,xmm2
1082	pshufd	xmm2,xmm0,19
1083	pxor	xmm0,xmm0
1084	movdqa	[16+esp],xmm1
1085	paddq	xmm1,xmm1
1086	pand	xmm2,xmm3
1087	pcmpgtd	xmm0,xmm1
1088	pxor	xmm1,xmm2
1089	pshufd	xmm2,xmm0,19
1090	pxor	xmm0,xmm0
1091	movdqa	[32+esp],xmm1
1092	paddq	xmm1,xmm1
1093	pand	xmm2,xmm3
1094	pcmpgtd	xmm0,xmm1
1095	pxor	xmm1,xmm2
1096	pshufd	xmm2,xmm0,19
1097	pxor	xmm0,xmm0
1098	movdqa	[48+esp],xmm1
1099	paddq	xmm1,xmm1
1100	pand	xmm2,xmm3
1101	pcmpgtd	xmm0,xmm1
1102	pxor	xmm1,xmm2
1103	pshufd	xmm7,xmm0,19
1104	movdqa	[64+esp],xmm1
1105	paddq	xmm1,xmm1
1106	movups	xmm0,[ebp]
1107	pand	xmm7,xmm3
1108	movups	xmm2,[esi]
1109	pxor	xmm7,xmm1
1110	mov	ecx,ebx
1111	movdqu	xmm3,[16+esi]
1112	xorps	xmm2,xmm0
1113	movdqu	xmm4,[32+esi]
1114	pxor	xmm3,xmm0
1115	movdqu	xmm5,[48+esi]
1116	pxor	xmm4,xmm0
1117	movdqu	xmm6,[64+esi]
1118	pxor	xmm5,xmm0
1119	movdqu	xmm1,[80+esi]
1120	pxor	xmm6,xmm0
1121	lea	esi,[96+esi]
1122	pxor	xmm2,[esp]
1123	movdqa	[80+esp],xmm7
1124	pxor	xmm7,xmm1
1125	movups	xmm1,[16+ebp]
1126	pxor	xmm3,[16+esp]
1127	pxor	xmm4,[32+esp]
1128db	102,15,56,220,209
1129	pxor	xmm5,[48+esp]
1130	pxor	xmm6,[64+esp]
1131db	102,15,56,220,217
1132	pxor	xmm7,xmm0
1133	movups	xmm0,[32+ebp]
1134db	102,15,56,220,225
1135db	102,15,56,220,233
1136db	102,15,56,220,241
1137db	102,15,56,220,249
1138	call	L$_aesni_encrypt6_enter
1139	movdqa	xmm1,[80+esp]
1140	pxor	xmm0,xmm0
1141	xorps	xmm2,[esp]
1142	pcmpgtd	xmm0,xmm1
1143	xorps	xmm3,[16+esp]
1144	movups	[edi],xmm2
1145	xorps	xmm4,[32+esp]
1146	movups	[16+edi],xmm3
1147	xorps	xmm5,[48+esp]
1148	movups	[32+edi],xmm4
1149	xorps	xmm6,[64+esp]
1150	movups	[48+edi],xmm5
1151	xorps	xmm7,xmm1
1152	movups	[64+edi],xmm6
1153	pshufd	xmm2,xmm0,19
1154	movups	[80+edi],xmm7
1155	lea	edi,[96+edi]
1156	movdqa	xmm3,[96+esp]
1157	pxor	xmm0,xmm0
1158	paddq	xmm1,xmm1
1159	pand	xmm2,xmm3
1160	pcmpgtd	xmm0,xmm1
1161	pxor	xmm1,xmm2
1162	sub	eax,96
1163	jnc	NEAR L$048xts_enc_loop6
1164	mov	ecx,DWORD [240+ebp]
1165	mov	edx,ebp
1166	mov	ebx,ecx
1167L$047xts_enc_short:
1168	add	eax,96
1169	jz	NEAR L$049xts_enc_done6x
1170	movdqa	xmm5,xmm1
1171	cmp	eax,32
1172	jb	NEAR L$050xts_enc_one
1173	pshufd	xmm2,xmm0,19
1174	pxor	xmm0,xmm0
1175	paddq	xmm1,xmm1
1176	pand	xmm2,xmm3
1177	pcmpgtd	xmm0,xmm1
1178	pxor	xmm1,xmm2
1179	je	NEAR L$051xts_enc_two
1180	pshufd	xmm2,xmm0,19
1181	pxor	xmm0,xmm0
1182	movdqa	xmm6,xmm1
1183	paddq	xmm1,xmm1
1184	pand	xmm2,xmm3
1185	pcmpgtd	xmm0,xmm1
1186	pxor	xmm1,xmm2
1187	cmp	eax,64
1188	jb	NEAR L$052xts_enc_three
1189	pshufd	xmm2,xmm0,19
1190	pxor	xmm0,xmm0
1191	movdqa	xmm7,xmm1
1192	paddq	xmm1,xmm1
1193	pand	xmm2,xmm3
1194	pcmpgtd	xmm0,xmm1
1195	pxor	xmm1,xmm2
1196	movdqa	[esp],xmm5
1197	movdqa	[16+esp],xmm6
1198	je	NEAR L$053xts_enc_four
1199	movdqa	[32+esp],xmm7
1200	pshufd	xmm7,xmm0,19
1201	movdqa	[48+esp],xmm1
1202	paddq	xmm1,xmm1
1203	pand	xmm7,xmm3
1204	pxor	xmm7,xmm1
1205	movdqu	xmm2,[esi]
1206	movdqu	xmm3,[16+esi]
1207	movdqu	xmm4,[32+esi]
1208	pxor	xmm2,[esp]
1209	movdqu	xmm5,[48+esi]
1210	pxor	xmm3,[16+esp]
1211	movdqu	xmm6,[64+esi]
1212	pxor	xmm4,[32+esp]
1213	lea	esi,[80+esi]
1214	pxor	xmm5,[48+esp]
1215	movdqa	[64+esp],xmm7
1216	pxor	xmm6,xmm7
1217	call	__aesni_encrypt6
1218	movaps	xmm1,[64+esp]
1219	xorps	xmm2,[esp]
1220	xorps	xmm3,[16+esp]
1221	xorps	xmm4,[32+esp]
1222	movups	[edi],xmm2
1223	xorps	xmm5,[48+esp]
1224	movups	[16+edi],xmm3
1225	xorps	xmm6,xmm1
1226	movups	[32+edi],xmm4
1227	movups	[48+edi],xmm5
1228	movups	[64+edi],xmm6
1229	lea	edi,[80+edi]
1230	jmp	NEAR L$054xts_enc_done
1231align	16
1232L$050xts_enc_one:
1233	movups	xmm2,[esi]
1234	lea	esi,[16+esi]
1235	xorps	xmm2,xmm5
1236	movups	xmm0,[edx]
1237	movups	xmm1,[16+edx]
1238	lea	edx,[32+edx]
1239	xorps	xmm2,xmm0
1240L$055enc1_loop_9:
1241db	102,15,56,220,209
1242	dec	ecx
1243	movups	xmm1,[edx]
1244	lea	edx,[16+edx]
1245	jnz	NEAR L$055enc1_loop_9
1246db	102,15,56,221,209
1247	xorps	xmm2,xmm5
1248	movups	[edi],xmm2
1249	lea	edi,[16+edi]
1250	movdqa	xmm1,xmm5
1251	jmp	NEAR L$054xts_enc_done
1252align	16
1253L$051xts_enc_two:
1254	movaps	xmm6,xmm1
1255	movups	xmm2,[esi]
1256	movups	xmm3,[16+esi]
1257	lea	esi,[32+esi]
1258	xorps	xmm2,xmm5
1259	xorps	xmm3,xmm6
1260	call	__aesni_encrypt2
1261	xorps	xmm2,xmm5
1262	xorps	xmm3,xmm6
1263	movups	[edi],xmm2
1264	movups	[16+edi],xmm3
1265	lea	edi,[32+edi]
1266	movdqa	xmm1,xmm6
1267	jmp	NEAR L$054xts_enc_done
1268align	16
1269L$052xts_enc_three:
1270	movaps	xmm7,xmm1
1271	movups	xmm2,[esi]
1272	movups	xmm3,[16+esi]
1273	movups	xmm4,[32+esi]
1274	lea	esi,[48+esi]
1275	xorps	xmm2,xmm5
1276	xorps	xmm3,xmm6
1277	xorps	xmm4,xmm7
1278	call	__aesni_encrypt3
1279	xorps	xmm2,xmm5
1280	xorps	xmm3,xmm6
1281	xorps	xmm4,xmm7
1282	movups	[edi],xmm2
1283	movups	[16+edi],xmm3
1284	movups	[32+edi],xmm4
1285	lea	edi,[48+edi]
1286	movdqa	xmm1,xmm7
1287	jmp	NEAR L$054xts_enc_done
1288align	16
1289L$053xts_enc_four:
1290	movaps	xmm6,xmm1
1291	movups	xmm2,[esi]
1292	movups	xmm3,[16+esi]
1293	movups	xmm4,[32+esi]
1294	xorps	xmm2,[esp]
1295	movups	xmm5,[48+esi]
1296	lea	esi,[64+esi]
1297	xorps	xmm3,[16+esp]
1298	xorps	xmm4,xmm7
1299	xorps	xmm5,xmm6
1300	call	__aesni_encrypt4
1301	xorps	xmm2,[esp]
1302	xorps	xmm3,[16+esp]
1303	xorps	xmm4,xmm7
1304	movups	[edi],xmm2
1305	xorps	xmm5,xmm6
1306	movups	[16+edi],xmm3
1307	movups	[32+edi],xmm4
1308	movups	[48+edi],xmm5
1309	lea	edi,[64+edi]
1310	movdqa	xmm1,xmm6
1311	jmp	NEAR L$054xts_enc_done
1312align	16
1313L$049xts_enc_done6x:
1314	mov	eax,DWORD [112+esp]
1315	and	eax,15
1316	jz	NEAR L$056xts_enc_ret
1317	movdqa	xmm5,xmm1
1318	mov	DWORD [112+esp],eax
1319	jmp	NEAR L$057xts_enc_steal
1320align	16
1321L$054xts_enc_done:
1322	mov	eax,DWORD [112+esp]
1323	pxor	xmm0,xmm0
1324	and	eax,15
1325	jz	NEAR L$056xts_enc_ret
1326	pcmpgtd	xmm0,xmm1
1327	mov	DWORD [112+esp],eax
1328	pshufd	xmm5,xmm0,19
1329	paddq	xmm1,xmm1
1330	pand	xmm5,[96+esp]
1331	pxor	xmm5,xmm1
1332L$057xts_enc_steal:
1333	movzx	ecx,BYTE [esi]
1334	movzx	edx,BYTE [edi-16]
1335	lea	esi,[1+esi]
1336	mov	BYTE [edi-16],cl
1337	mov	BYTE [edi],dl
1338	lea	edi,[1+edi]
1339	sub	eax,1
1340	jnz	NEAR L$057xts_enc_steal
1341	sub	edi,DWORD [112+esp]
1342	mov	edx,ebp
1343	mov	ecx,ebx
1344	movups	xmm2,[edi-16]
1345	xorps	xmm2,xmm5
1346	movups	xmm0,[edx]
1347	movups	xmm1,[16+edx]
1348	lea	edx,[32+edx]
1349	xorps	xmm2,xmm0
1350L$058enc1_loop_10:
1351db	102,15,56,220,209
1352	dec	ecx
1353	movups	xmm1,[edx]
1354	lea	edx,[16+edx]
1355	jnz	NEAR L$058enc1_loop_10
1356db	102,15,56,221,209
1357	xorps	xmm2,xmm5
1358	movups	[edi-16],xmm2
1359L$056xts_enc_ret:
1360	pxor	xmm0,xmm0
1361	pxor	xmm1,xmm1
1362	pxor	xmm2,xmm2
1363	movdqa	[esp],xmm0
1364	pxor	xmm3,xmm3
1365	movdqa	[16+esp],xmm0
1366	pxor	xmm4,xmm4
1367	movdqa	[32+esp],xmm0
1368	pxor	xmm5,xmm5
1369	movdqa	[48+esp],xmm0
1370	pxor	xmm6,xmm6
1371	movdqa	[64+esp],xmm0
1372	pxor	xmm7,xmm7
1373	movdqa	[80+esp],xmm0
1374	mov	esp,DWORD [116+esp]
1375	pop	edi
1376	pop	esi
1377	pop	ebx
1378	pop	ebp
1379	ret
1380global	_aesni_xts_decrypt
1381align	16
1382_aesni_xts_decrypt:
1383L$_aesni_xts_decrypt_begin:
1384	push	ebp
1385	push	ebx
1386	push	esi
1387	push	edi
1388	mov	edx,DWORD [36+esp]
1389	mov	esi,DWORD [40+esp]
1390	mov	ecx,DWORD [240+edx]
1391	movups	xmm2,[esi]
1392	movups	xmm0,[edx]
1393	movups	xmm1,[16+edx]
1394	lea	edx,[32+edx]
1395	xorps	xmm2,xmm0
1396L$059enc1_loop_11:
1397db	102,15,56,220,209
1398	dec	ecx
1399	movups	xmm1,[edx]
1400	lea	edx,[16+edx]
1401	jnz	NEAR L$059enc1_loop_11
1402db	102,15,56,221,209
1403	mov	esi,DWORD [20+esp]
1404	mov	edi,DWORD [24+esp]
1405	mov	eax,DWORD [28+esp]
1406	mov	edx,DWORD [32+esp]
1407	mov	ebp,esp
1408	sub	esp,120
1409	and	esp,-16
1410	xor	ebx,ebx
1411	test	eax,15
1412	setnz	bl
1413	shl	ebx,4
1414	sub	eax,ebx
1415	mov	DWORD [96+esp],135
1416	mov	DWORD [100+esp],0
1417	mov	DWORD [104+esp],1
1418	mov	DWORD [108+esp],0
1419	mov	DWORD [112+esp],eax
1420	mov	DWORD [116+esp],ebp
1421	mov	ecx,DWORD [240+edx]
1422	mov	ebp,edx
1423	mov	ebx,ecx
1424	movdqa	xmm1,xmm2
1425	pxor	xmm0,xmm0
1426	movdqa	xmm3,[96+esp]
1427	pcmpgtd	xmm0,xmm1
1428	and	eax,-16
1429	sub	eax,96
1430	jc	NEAR L$060xts_dec_short
1431	shl	ecx,4
1432	mov	ebx,16
1433	sub	ebx,ecx
1434	lea	edx,[32+ecx*1+edx]
1435	jmp	NEAR L$061xts_dec_loop6
1436align	16
1437L$061xts_dec_loop6:
1438	pshufd	xmm2,xmm0,19
1439	pxor	xmm0,xmm0
1440	movdqa	[esp],xmm1
1441	paddq	xmm1,xmm1
1442	pand	xmm2,xmm3
1443	pcmpgtd	xmm0,xmm1
1444	pxor	xmm1,xmm2
1445	pshufd	xmm2,xmm0,19
1446	pxor	xmm0,xmm0
1447	movdqa	[16+esp],xmm1
1448	paddq	xmm1,xmm1
1449	pand	xmm2,xmm3
1450	pcmpgtd	xmm0,xmm1
1451	pxor	xmm1,xmm2
1452	pshufd	xmm2,xmm0,19
1453	pxor	xmm0,xmm0
1454	movdqa	[32+esp],xmm1
1455	paddq	xmm1,xmm1
1456	pand	xmm2,xmm3
1457	pcmpgtd	xmm0,xmm1
1458	pxor	xmm1,xmm2
1459	pshufd	xmm2,xmm0,19
1460	pxor	xmm0,xmm0
1461	movdqa	[48+esp],xmm1
1462	paddq	xmm1,xmm1
1463	pand	xmm2,xmm3
1464	pcmpgtd	xmm0,xmm1
1465	pxor	xmm1,xmm2
1466	pshufd	xmm7,xmm0,19
1467	movdqa	[64+esp],xmm1
1468	paddq	xmm1,xmm1
1469	movups	xmm0,[ebp]
1470	pand	xmm7,xmm3
1471	movups	xmm2,[esi]
1472	pxor	xmm7,xmm1
1473	mov	ecx,ebx
1474	movdqu	xmm3,[16+esi]
1475	xorps	xmm2,xmm0
1476	movdqu	xmm4,[32+esi]
1477	pxor	xmm3,xmm0
1478	movdqu	xmm5,[48+esi]
1479	pxor	xmm4,xmm0
1480	movdqu	xmm6,[64+esi]
1481	pxor	xmm5,xmm0
1482	movdqu	xmm1,[80+esi]
1483	pxor	xmm6,xmm0
1484	lea	esi,[96+esi]
1485	pxor	xmm2,[esp]
1486	movdqa	[80+esp],xmm7
1487	pxor	xmm7,xmm1
1488	movups	xmm1,[16+ebp]
1489	pxor	xmm3,[16+esp]
1490	pxor	xmm4,[32+esp]
1491db	102,15,56,222,209
1492	pxor	xmm5,[48+esp]
1493	pxor	xmm6,[64+esp]
1494db	102,15,56,222,217
1495	pxor	xmm7,xmm0
1496	movups	xmm0,[32+ebp]
1497db	102,15,56,222,225
1498db	102,15,56,222,233
1499db	102,15,56,222,241
1500db	102,15,56,222,249
1501	call	L$_aesni_decrypt6_enter
1502	movdqa	xmm1,[80+esp]
1503	pxor	xmm0,xmm0
1504	xorps	xmm2,[esp]
1505	pcmpgtd	xmm0,xmm1
1506	xorps	xmm3,[16+esp]
1507	movups	[edi],xmm2
1508	xorps	xmm4,[32+esp]
1509	movups	[16+edi],xmm3
1510	xorps	xmm5,[48+esp]
1511	movups	[32+edi],xmm4
1512	xorps	xmm6,[64+esp]
1513	movups	[48+edi],xmm5
1514	xorps	xmm7,xmm1
1515	movups	[64+edi],xmm6
1516	pshufd	xmm2,xmm0,19
1517	movups	[80+edi],xmm7
1518	lea	edi,[96+edi]
1519	movdqa	xmm3,[96+esp]
1520	pxor	xmm0,xmm0
1521	paddq	xmm1,xmm1
1522	pand	xmm2,xmm3
1523	pcmpgtd	xmm0,xmm1
1524	pxor	xmm1,xmm2
1525	sub	eax,96
1526	jnc	NEAR L$061xts_dec_loop6
1527	mov	ecx,DWORD [240+ebp]
1528	mov	edx,ebp
1529	mov	ebx,ecx
1530L$060xts_dec_short:
1531	add	eax,96
1532	jz	NEAR L$062xts_dec_done6x
1533	movdqa	xmm5,xmm1
1534	cmp	eax,32
1535	jb	NEAR L$063xts_dec_one
1536	pshufd	xmm2,xmm0,19
1537	pxor	xmm0,xmm0
1538	paddq	xmm1,xmm1
1539	pand	xmm2,xmm3
1540	pcmpgtd	xmm0,xmm1
1541	pxor	xmm1,xmm2
1542	je	NEAR L$064xts_dec_two
1543	pshufd	xmm2,xmm0,19
1544	pxor	xmm0,xmm0
1545	movdqa	xmm6,xmm1
1546	paddq	xmm1,xmm1
1547	pand	xmm2,xmm3
1548	pcmpgtd	xmm0,xmm1
1549	pxor	xmm1,xmm2
1550	cmp	eax,64
1551	jb	NEAR L$065xts_dec_three
1552	pshufd	xmm2,xmm0,19
1553	pxor	xmm0,xmm0
1554	movdqa	xmm7,xmm1
1555	paddq	xmm1,xmm1
1556	pand	xmm2,xmm3
1557	pcmpgtd	xmm0,xmm1
1558	pxor	xmm1,xmm2
1559	movdqa	[esp],xmm5
1560	movdqa	[16+esp],xmm6
1561	je	NEAR L$066xts_dec_four
1562	movdqa	[32+esp],xmm7
1563	pshufd	xmm7,xmm0,19
1564	movdqa	[48+esp],xmm1
1565	paddq	xmm1,xmm1
1566	pand	xmm7,xmm3
1567	pxor	xmm7,xmm1
1568	movdqu	xmm2,[esi]
1569	movdqu	xmm3,[16+esi]
1570	movdqu	xmm4,[32+esi]
1571	pxor	xmm2,[esp]
1572	movdqu	xmm5,[48+esi]
1573	pxor	xmm3,[16+esp]
1574	movdqu	xmm6,[64+esi]
1575	pxor	xmm4,[32+esp]
1576	lea	esi,[80+esi]
1577	pxor	xmm5,[48+esp]
1578	movdqa	[64+esp],xmm7
1579	pxor	xmm6,xmm7
1580	call	__aesni_decrypt6
1581	movaps	xmm1,[64+esp]
1582	xorps	xmm2,[esp]
1583	xorps	xmm3,[16+esp]
1584	xorps	xmm4,[32+esp]
1585	movups	[edi],xmm2
1586	xorps	xmm5,[48+esp]
1587	movups	[16+edi],xmm3
1588	xorps	xmm6,xmm1
1589	movups	[32+edi],xmm4
1590	movups	[48+edi],xmm5
1591	movups	[64+edi],xmm6
1592	lea	edi,[80+edi]
1593	jmp	NEAR L$067xts_dec_done
1594align	16
1595L$063xts_dec_one:
1596	movups	xmm2,[esi]
1597	lea	esi,[16+esi]
1598	xorps	xmm2,xmm5
1599	movups	xmm0,[edx]
1600	movups	xmm1,[16+edx]
1601	lea	edx,[32+edx]
1602	xorps	xmm2,xmm0
1603L$068dec1_loop_12:
1604db	102,15,56,222,209
1605	dec	ecx
1606	movups	xmm1,[edx]
1607	lea	edx,[16+edx]
1608	jnz	NEAR L$068dec1_loop_12
1609db	102,15,56,223,209
1610	xorps	xmm2,xmm5
1611	movups	[edi],xmm2
1612	lea	edi,[16+edi]
1613	movdqa	xmm1,xmm5
1614	jmp	NEAR L$067xts_dec_done
1615align	16
1616L$064xts_dec_two:
1617	movaps	xmm6,xmm1
1618	movups	xmm2,[esi]
1619	movups	xmm3,[16+esi]
1620	lea	esi,[32+esi]
1621	xorps	xmm2,xmm5
1622	xorps	xmm3,xmm6
1623	call	__aesni_decrypt2
1624	xorps	xmm2,xmm5
1625	xorps	xmm3,xmm6
1626	movups	[edi],xmm2
1627	movups	[16+edi],xmm3
1628	lea	edi,[32+edi]
1629	movdqa	xmm1,xmm6
1630	jmp	NEAR L$067xts_dec_done
1631align	16
1632L$065xts_dec_three:
1633	movaps	xmm7,xmm1
1634	movups	xmm2,[esi]
1635	movups	xmm3,[16+esi]
1636	movups	xmm4,[32+esi]
1637	lea	esi,[48+esi]
1638	xorps	xmm2,xmm5
1639	xorps	xmm3,xmm6
1640	xorps	xmm4,xmm7
1641	call	__aesni_decrypt3
1642	xorps	xmm2,xmm5
1643	xorps	xmm3,xmm6
1644	xorps	xmm4,xmm7
1645	movups	[edi],xmm2
1646	movups	[16+edi],xmm3
1647	movups	[32+edi],xmm4
1648	lea	edi,[48+edi]
1649	movdqa	xmm1,xmm7
1650	jmp	NEAR L$067xts_dec_done
1651align	16
1652L$066xts_dec_four:
1653	movaps	xmm6,xmm1
1654	movups	xmm2,[esi]
1655	movups	xmm3,[16+esi]
1656	movups	xmm4,[32+esi]
1657	xorps	xmm2,[esp]
1658	movups	xmm5,[48+esi]
1659	lea	esi,[64+esi]
1660	xorps	xmm3,[16+esp]
1661	xorps	xmm4,xmm7
1662	xorps	xmm5,xmm6
1663	call	__aesni_decrypt4
1664	xorps	xmm2,[esp]
1665	xorps	xmm3,[16+esp]
1666	xorps	xmm4,xmm7
1667	movups	[edi],xmm2
1668	xorps	xmm5,xmm6
1669	movups	[16+edi],xmm3
1670	movups	[32+edi],xmm4
1671	movups	[48+edi],xmm5
1672	lea	edi,[64+edi]
1673	movdqa	xmm1,xmm6
1674	jmp	NEAR L$067xts_dec_done
1675align	16
1676L$062xts_dec_done6x:
1677	mov	eax,DWORD [112+esp]
1678	and	eax,15
1679	jz	NEAR L$069xts_dec_ret
1680	mov	DWORD [112+esp],eax
1681	jmp	NEAR L$070xts_dec_only_one_more
1682align	16
1683L$067xts_dec_done:
1684	mov	eax,DWORD [112+esp]
1685	pxor	xmm0,xmm0
1686	and	eax,15
1687	jz	NEAR L$069xts_dec_ret
1688	pcmpgtd	xmm0,xmm1
1689	mov	DWORD [112+esp],eax
1690	pshufd	xmm2,xmm0,19
1691	pxor	xmm0,xmm0
1692	movdqa	xmm3,[96+esp]
1693	paddq	xmm1,xmm1
1694	pand	xmm2,xmm3
1695	pcmpgtd	xmm0,xmm1
1696	pxor	xmm1,xmm2
1697L$070xts_dec_only_one_more:
1698	pshufd	xmm5,xmm0,19
1699	movdqa	xmm6,xmm1
1700	paddq	xmm1,xmm1
1701	pand	xmm5,xmm3
1702	pxor	xmm5,xmm1
1703	mov	edx,ebp
1704	mov	ecx,ebx
1705	movups	xmm2,[esi]
1706	xorps	xmm2,xmm5
1707	movups	xmm0,[edx]
1708	movups	xmm1,[16+edx]
1709	lea	edx,[32+edx]
1710	xorps	xmm2,xmm0
1711L$071dec1_loop_13:
1712db	102,15,56,222,209
1713	dec	ecx
1714	movups	xmm1,[edx]
1715	lea	edx,[16+edx]
1716	jnz	NEAR L$071dec1_loop_13
1717db	102,15,56,223,209
1718	xorps	xmm2,xmm5
1719	movups	[edi],xmm2
1720L$072xts_dec_steal:
1721	movzx	ecx,BYTE [16+esi]
1722	movzx	edx,BYTE [edi]
1723	lea	esi,[1+esi]
1724	mov	BYTE [edi],cl
1725	mov	BYTE [16+edi],dl
1726	lea	edi,[1+edi]
1727	sub	eax,1
1728	jnz	NEAR L$072xts_dec_steal
1729	sub	edi,DWORD [112+esp]
1730	mov	edx,ebp
1731	mov	ecx,ebx
1732	movups	xmm2,[edi]
1733	xorps	xmm2,xmm6
1734	movups	xmm0,[edx]
1735	movups	xmm1,[16+edx]
1736	lea	edx,[32+edx]
1737	xorps	xmm2,xmm0
1738L$073dec1_loop_14:
1739db	102,15,56,222,209
1740	dec	ecx
1741	movups	xmm1,[edx]
1742	lea	edx,[16+edx]
1743	jnz	NEAR L$073dec1_loop_14
1744db	102,15,56,223,209
1745	xorps	xmm2,xmm6
1746	movups	[edi],xmm2
1747L$069xts_dec_ret:
1748	pxor	xmm0,xmm0
1749	pxor	xmm1,xmm1
1750	pxor	xmm2,xmm2
1751	movdqa	[esp],xmm0
1752	pxor	xmm3,xmm3
1753	movdqa	[16+esp],xmm0
1754	pxor	xmm4,xmm4
1755	movdqa	[32+esp],xmm0
1756	pxor	xmm5,xmm5
1757	movdqa	[48+esp],xmm0
1758	pxor	xmm6,xmm6
1759	movdqa	[64+esp],xmm0
1760	pxor	xmm7,xmm7
1761	movdqa	[80+esp],xmm0
1762	mov	esp,DWORD [116+esp]
1763	pop	edi
1764	pop	esi
1765	pop	ebx
1766	pop	ebp
1767	ret
1768global	_aesni_ocb_encrypt
1769align	16
1770_aesni_ocb_encrypt:
1771L$_aesni_ocb_encrypt_begin:
1772	push	ebp
1773	push	ebx
1774	push	esi
1775	push	edi
1776	mov	ecx,DWORD [40+esp]
1777	mov	ebx,DWORD [48+esp]
1778	mov	esi,DWORD [20+esp]
1779	mov	edi,DWORD [24+esp]
1780	mov	eax,DWORD [28+esp]
1781	mov	edx,DWORD [32+esp]
1782	movdqu	xmm0,[ecx]
1783	mov	ebp,DWORD [36+esp]
1784	movdqu	xmm1,[ebx]
1785	mov	ebx,DWORD [44+esp]
1786	mov	ecx,esp
1787	sub	esp,132
1788	and	esp,-16
1789	sub	edi,esi
1790	shl	eax,4
1791	lea	eax,[eax*1+esi-96]
1792	mov	DWORD [120+esp],edi
1793	mov	DWORD [124+esp],eax
1794	mov	DWORD [128+esp],ecx
1795	mov	ecx,DWORD [240+edx]
1796	test	ebp,1
1797	jnz	NEAR L$074odd
1798	bsf	eax,ebp
1799	add	ebp,1
1800	shl	eax,4
1801	movdqu	xmm7,[eax*1+ebx]
1802	mov	eax,edx
1803	movdqu	xmm2,[esi]
1804	lea	esi,[16+esi]
1805	pxor	xmm7,xmm0
1806	pxor	xmm1,xmm2
1807	pxor	xmm2,xmm7
1808	movdqa	xmm6,xmm1
1809	movups	xmm0,[edx]
1810	movups	xmm1,[16+edx]
1811	lea	edx,[32+edx]
1812	xorps	xmm2,xmm0
1813L$075enc1_loop_15:
1814db	102,15,56,220,209
1815	dec	ecx
1816	movups	xmm1,[edx]
1817	lea	edx,[16+edx]
1818	jnz	NEAR L$075enc1_loop_15
1819db	102,15,56,221,209
1820	xorps	xmm2,xmm7
1821	movdqa	xmm0,xmm7
1822	movdqa	xmm1,xmm6
1823	movups	[esi*1+edi-16],xmm2
1824	mov	ecx,DWORD [240+eax]
1825	mov	edx,eax
1826	mov	eax,DWORD [124+esp]
1827L$074odd:
1828	shl	ecx,4
1829	mov	edi,16
1830	sub	edi,ecx
1831	mov	DWORD [112+esp],edx
1832	lea	edx,[32+ecx*1+edx]
1833	mov	DWORD [116+esp],edi
1834	cmp	esi,eax
1835	ja	NEAR L$076short
1836	jmp	NEAR L$077grandloop
1837align	32
1838L$077grandloop:
1839	lea	ecx,[1+ebp]
1840	lea	eax,[3+ebp]
1841	lea	edi,[5+ebp]
1842	add	ebp,6
1843	bsf	ecx,ecx
1844	bsf	eax,eax
1845	bsf	edi,edi
1846	shl	ecx,4
1847	shl	eax,4
1848	shl	edi,4
1849	movdqu	xmm2,[ebx]
1850	movdqu	xmm3,[ecx*1+ebx]
1851	mov	ecx,DWORD [116+esp]
1852	movdqa	xmm4,xmm2
1853	movdqu	xmm5,[eax*1+ebx]
1854	movdqa	xmm6,xmm2
1855	movdqu	xmm7,[edi*1+ebx]
1856	pxor	xmm2,xmm0
1857	pxor	xmm3,xmm2
1858	movdqa	[esp],xmm2
1859	pxor	xmm4,xmm3
1860	movdqa	[16+esp],xmm3
1861	pxor	xmm5,xmm4
1862	movdqa	[32+esp],xmm4
1863	pxor	xmm6,xmm5
1864	movdqa	[48+esp],xmm5
1865	pxor	xmm7,xmm6
1866	movdqa	[64+esp],xmm6
1867	movdqa	[80+esp],xmm7
1868	movups	xmm0,[ecx*1+edx-48]
1869	movdqu	xmm2,[esi]
1870	movdqu	xmm3,[16+esi]
1871	movdqu	xmm4,[32+esi]
1872	movdqu	xmm5,[48+esi]
1873	movdqu	xmm6,[64+esi]
1874	movdqu	xmm7,[80+esi]
1875	lea	esi,[96+esi]
1876	pxor	xmm1,xmm2
1877	pxor	xmm2,xmm0
1878	pxor	xmm1,xmm3
1879	pxor	xmm3,xmm0
1880	pxor	xmm1,xmm4
1881	pxor	xmm4,xmm0
1882	pxor	xmm1,xmm5
1883	pxor	xmm5,xmm0
1884	pxor	xmm1,xmm6
1885	pxor	xmm6,xmm0
1886	pxor	xmm1,xmm7
1887	pxor	xmm7,xmm0
1888	movdqa	[96+esp],xmm1
1889	movups	xmm1,[ecx*1+edx-32]
1890	pxor	xmm2,[esp]
1891	pxor	xmm3,[16+esp]
1892	pxor	xmm4,[32+esp]
1893	pxor	xmm5,[48+esp]
1894	pxor	xmm6,[64+esp]
1895	pxor	xmm7,[80+esp]
1896	movups	xmm0,[ecx*1+edx-16]
1897db	102,15,56,220,209
1898db	102,15,56,220,217
1899db	102,15,56,220,225
1900db	102,15,56,220,233
1901db	102,15,56,220,241
1902db	102,15,56,220,249
1903	mov	edi,DWORD [120+esp]
1904	mov	eax,DWORD [124+esp]
1905	call	L$_aesni_encrypt6_enter
1906	movdqa	xmm0,[80+esp]
1907	pxor	xmm2,[esp]
1908	pxor	xmm3,[16+esp]
1909	pxor	xmm4,[32+esp]
1910	pxor	xmm5,[48+esp]
1911	pxor	xmm6,[64+esp]
1912	pxor	xmm7,xmm0
1913	movdqa	xmm1,[96+esp]
1914	movdqu	[esi*1+edi-96],xmm2
1915	movdqu	[esi*1+edi-80],xmm3
1916	movdqu	[esi*1+edi-64],xmm4
1917	movdqu	[esi*1+edi-48],xmm5
1918	movdqu	[esi*1+edi-32],xmm6
1919	movdqu	[esi*1+edi-16],xmm7
1920	cmp	esi,eax
1921	jbe	NEAR L$077grandloop
1922L$076short:
1923	add	eax,96
1924	sub	eax,esi
1925	jz	NEAR L$078done
1926	cmp	eax,32
1927	jb	NEAR L$079one
1928	je	NEAR L$080two
1929	cmp	eax,64
1930	jb	NEAR L$081three
1931	je	NEAR L$082four
1932	lea	ecx,[1+ebp]
1933	lea	eax,[3+ebp]
1934	bsf	ecx,ecx
1935	bsf	eax,eax
1936	shl	ecx,4
1937	shl	eax,4
1938	movdqu	xmm2,[ebx]
1939	movdqu	xmm3,[ecx*1+ebx]
1940	mov	ecx,DWORD [116+esp]
1941	movdqa	xmm4,xmm2
1942	movdqu	xmm5,[eax*1+ebx]
1943	movdqa	xmm6,xmm2
1944	pxor	xmm2,xmm0
1945	pxor	xmm3,xmm2
1946	movdqa	[esp],xmm2
1947	pxor	xmm4,xmm3
1948	movdqa	[16+esp],xmm3
1949	pxor	xmm5,xmm4
1950	movdqa	[32+esp],xmm4
1951	pxor	xmm6,xmm5
1952	movdqa	[48+esp],xmm5
1953	pxor	xmm7,xmm6
1954	movdqa	[64+esp],xmm6
1955	movups	xmm0,[ecx*1+edx-48]
1956	movdqu	xmm2,[esi]
1957	movdqu	xmm3,[16+esi]
1958	movdqu	xmm4,[32+esi]
1959	movdqu	xmm5,[48+esi]
1960	movdqu	xmm6,[64+esi]
1961	pxor	xmm7,xmm7
1962	pxor	xmm1,xmm2
1963	pxor	xmm2,xmm0
1964	pxor	xmm1,xmm3
1965	pxor	xmm3,xmm0
1966	pxor	xmm1,xmm4
1967	pxor	xmm4,xmm0
1968	pxor	xmm1,xmm5
1969	pxor	xmm5,xmm0
1970	pxor	xmm1,xmm6
1971	pxor	xmm6,xmm0
1972	movdqa	[96+esp],xmm1
1973	movups	xmm1,[ecx*1+edx-32]
1974	pxor	xmm2,[esp]
1975	pxor	xmm3,[16+esp]
1976	pxor	xmm4,[32+esp]
1977	pxor	xmm5,[48+esp]
1978	pxor	xmm6,[64+esp]
1979	movups	xmm0,[ecx*1+edx-16]
1980db	102,15,56,220,209
1981db	102,15,56,220,217
1982db	102,15,56,220,225
1983db	102,15,56,220,233
1984db	102,15,56,220,241
1985db	102,15,56,220,249
1986	mov	edi,DWORD [120+esp]
1987	call	L$_aesni_encrypt6_enter
1988	movdqa	xmm0,[64+esp]
1989	pxor	xmm2,[esp]
1990	pxor	xmm3,[16+esp]
1991	pxor	xmm4,[32+esp]
1992	pxor	xmm5,[48+esp]
1993	pxor	xmm6,xmm0
1994	movdqa	xmm1,[96+esp]
1995	movdqu	[esi*1+edi],xmm2
1996	movdqu	[16+esi*1+edi],xmm3
1997	movdqu	[32+esi*1+edi],xmm4
1998	movdqu	[48+esi*1+edi],xmm5
1999	movdqu	[64+esi*1+edi],xmm6
2000	jmp	NEAR L$078done
2001align	16
2002L$079one:
2003	movdqu	xmm7,[ebx]
2004	mov	edx,DWORD [112+esp]
2005	movdqu	xmm2,[esi]
2006	mov	ecx,DWORD [240+edx]
2007	pxor	xmm7,xmm0
2008	pxor	xmm1,xmm2
2009	pxor	xmm2,xmm7
2010	movdqa	xmm6,xmm1
2011	mov	edi,DWORD [120+esp]
2012	movups	xmm0,[edx]
2013	movups	xmm1,[16+edx]
2014	lea	edx,[32+edx]
2015	xorps	xmm2,xmm0
2016L$083enc1_loop_16:
2017db	102,15,56,220,209
2018	dec	ecx
2019	movups	xmm1,[edx]
2020	lea	edx,[16+edx]
2021	jnz	NEAR L$083enc1_loop_16
2022db	102,15,56,221,209
2023	xorps	xmm2,xmm7
2024	movdqa	xmm0,xmm7
2025	movdqa	xmm1,xmm6
2026	movups	[esi*1+edi],xmm2
2027	jmp	NEAR L$078done
2028align	16
2029L$080two:
2030	lea	ecx,[1+ebp]
2031	mov	edx,DWORD [112+esp]
2032	bsf	ecx,ecx
2033	shl	ecx,4
2034	movdqu	xmm6,[ebx]
2035	movdqu	xmm7,[ecx*1+ebx]
2036	movdqu	xmm2,[esi]
2037	movdqu	xmm3,[16+esi]
2038	mov	ecx,DWORD [240+edx]
2039	pxor	xmm6,xmm0
2040	pxor	xmm7,xmm6
2041	pxor	xmm1,xmm2
2042	pxor	xmm2,xmm6
2043	pxor	xmm1,xmm3
2044	pxor	xmm3,xmm7
2045	movdqa	xmm5,xmm1
2046	mov	edi,DWORD [120+esp]
2047	call	__aesni_encrypt2
2048	xorps	xmm2,xmm6
2049	xorps	xmm3,xmm7
2050	movdqa	xmm0,xmm7
2051	movdqa	xmm1,xmm5
2052	movups	[esi*1+edi],xmm2
2053	movups	[16+esi*1+edi],xmm3
2054	jmp	NEAR L$078done
2055align	16
2056L$081three:
2057	lea	ecx,[1+ebp]
2058	mov	edx,DWORD [112+esp]
2059	bsf	ecx,ecx
2060	shl	ecx,4
2061	movdqu	xmm5,[ebx]
2062	movdqu	xmm6,[ecx*1+ebx]
2063	movdqa	xmm7,xmm5
2064	movdqu	xmm2,[esi]
2065	movdqu	xmm3,[16+esi]
2066	movdqu	xmm4,[32+esi]
2067	mov	ecx,DWORD [240+edx]
2068	pxor	xmm5,xmm0
2069	pxor	xmm6,xmm5
2070	pxor	xmm7,xmm6
2071	pxor	xmm1,xmm2
2072	pxor	xmm2,xmm5
2073	pxor	xmm1,xmm3
2074	pxor	xmm3,xmm6
2075	pxor	xmm1,xmm4
2076	pxor	xmm4,xmm7
2077	movdqa	[96+esp],xmm1
2078	mov	edi,DWORD [120+esp]
2079	call	__aesni_encrypt3
2080	xorps	xmm2,xmm5
2081	xorps	xmm3,xmm6
2082	xorps	xmm4,xmm7
2083	movdqa	xmm0,xmm7
2084	movdqa	xmm1,[96+esp]
2085	movups	[esi*1+edi],xmm2
2086	movups	[16+esi*1+edi],xmm3
2087	movups	[32+esi*1+edi],xmm4
2088	jmp	NEAR L$078done
2089align	16
2090L$082four:
2091	lea	ecx,[1+ebp]
2092	lea	eax,[3+ebp]
2093	bsf	ecx,ecx
2094	bsf	eax,eax
2095	mov	edx,DWORD [112+esp]
2096	shl	ecx,4
2097	shl	eax,4
2098	movdqu	xmm4,[ebx]
2099	movdqu	xmm5,[ecx*1+ebx]
2100	movdqa	xmm6,xmm4
2101	movdqu	xmm7,[eax*1+ebx]
2102	pxor	xmm4,xmm0
2103	movdqu	xmm2,[esi]
2104	pxor	xmm5,xmm4
2105	movdqu	xmm3,[16+esi]
2106	pxor	xmm6,xmm5
2107	movdqa	[esp],xmm4
2108	pxor	xmm7,xmm6
2109	movdqa	[16+esp],xmm5
2110	movdqu	xmm4,[32+esi]
2111	movdqu	xmm5,[48+esi]
2112	mov	ecx,DWORD [240+edx]
2113	pxor	xmm1,xmm2
2114	pxor	xmm2,[esp]
2115	pxor	xmm1,xmm3
2116	pxor	xmm3,[16+esp]
2117	pxor	xmm1,xmm4
2118	pxor	xmm4,xmm6
2119	pxor	xmm1,xmm5
2120	pxor	xmm5,xmm7
2121	movdqa	[96+esp],xmm1
2122	mov	edi,DWORD [120+esp]
2123	call	__aesni_encrypt4
2124	xorps	xmm2,[esp]
2125	xorps	xmm3,[16+esp]
2126	xorps	xmm4,xmm6
2127	movups	[esi*1+edi],xmm2
2128	xorps	xmm5,xmm7
2129	movups	[16+esi*1+edi],xmm3
2130	movdqa	xmm0,xmm7
2131	movups	[32+esi*1+edi],xmm4
2132	movdqa	xmm1,[96+esp]
2133	movups	[48+esi*1+edi],xmm5
2134L$078done:
2135	mov	edx,DWORD [128+esp]
2136	pxor	xmm2,xmm2
2137	pxor	xmm3,xmm3
2138	movdqa	[esp],xmm2
2139	pxor	xmm4,xmm4
2140	movdqa	[16+esp],xmm2
2141	pxor	xmm5,xmm5
2142	movdqa	[32+esp],xmm2
2143	pxor	xmm6,xmm6
2144	movdqa	[48+esp],xmm2
2145	pxor	xmm7,xmm7
2146	movdqa	[64+esp],xmm2
2147	movdqa	[80+esp],xmm2
2148	movdqa	[96+esp],xmm2
2149	lea	esp,[edx]
2150	mov	ecx,DWORD [40+esp]
2151	mov	ebx,DWORD [48+esp]
2152	movdqu	[ecx],xmm0
2153	pxor	xmm0,xmm0
2154	movdqu	[ebx],xmm1
2155	pxor	xmm1,xmm1
2156	pop	edi
2157	pop	esi
2158	pop	ebx
2159	pop	ebp
2160	ret
2161global	_aesni_ocb_decrypt
2162align	16
2163_aesni_ocb_decrypt:
2164L$_aesni_ocb_decrypt_begin:
2165	push	ebp
2166	push	ebx
2167	push	esi
2168	push	edi
2169	mov	ecx,DWORD [40+esp]
2170	mov	ebx,DWORD [48+esp]
2171	mov	esi,DWORD [20+esp]
2172	mov	edi,DWORD [24+esp]
2173	mov	eax,DWORD [28+esp]
2174	mov	edx,DWORD [32+esp]
2175	movdqu	xmm0,[ecx]
2176	mov	ebp,DWORD [36+esp]
2177	movdqu	xmm1,[ebx]
2178	mov	ebx,DWORD [44+esp]
2179	mov	ecx,esp
2180	sub	esp,132
2181	and	esp,-16
2182	sub	edi,esi
2183	shl	eax,4
2184	lea	eax,[eax*1+esi-96]
2185	mov	DWORD [120+esp],edi
2186	mov	DWORD [124+esp],eax
2187	mov	DWORD [128+esp],ecx
2188	mov	ecx,DWORD [240+edx]
2189	test	ebp,1
2190	jnz	NEAR L$084odd
2191	bsf	eax,ebp
2192	add	ebp,1
2193	shl	eax,4
2194	movdqu	xmm7,[eax*1+ebx]
2195	mov	eax,edx
2196	movdqu	xmm2,[esi]
2197	lea	esi,[16+esi]
2198	pxor	xmm7,xmm0
2199	pxor	xmm2,xmm7
2200	movdqa	xmm6,xmm1
2201	movups	xmm0,[edx]
2202	movups	xmm1,[16+edx]
2203	lea	edx,[32+edx]
2204	xorps	xmm2,xmm0
2205L$085dec1_loop_17:
2206db	102,15,56,222,209
2207	dec	ecx
2208	movups	xmm1,[edx]
2209	lea	edx,[16+edx]
2210	jnz	NEAR L$085dec1_loop_17
2211db	102,15,56,223,209
2212	xorps	xmm2,xmm7
2213	movaps	xmm1,xmm6
2214	movdqa	xmm0,xmm7
2215	xorps	xmm1,xmm2
2216	movups	[esi*1+edi-16],xmm2
2217	mov	ecx,DWORD [240+eax]
2218	mov	edx,eax
2219	mov	eax,DWORD [124+esp]
2220L$084odd:
2221	shl	ecx,4
2222	mov	edi,16
2223	sub	edi,ecx
2224	mov	DWORD [112+esp],edx
2225	lea	edx,[32+ecx*1+edx]
2226	mov	DWORD [116+esp],edi
2227	cmp	esi,eax
2228	ja	NEAR L$086short
2229	jmp	NEAR L$087grandloop
2230align	32
2231L$087grandloop:
2232	lea	ecx,[1+ebp]
2233	lea	eax,[3+ebp]
2234	lea	edi,[5+ebp]
2235	add	ebp,6
2236	bsf	ecx,ecx
2237	bsf	eax,eax
2238	bsf	edi,edi
2239	shl	ecx,4
2240	shl	eax,4
2241	shl	edi,4
2242	movdqu	xmm2,[ebx]
2243	movdqu	xmm3,[ecx*1+ebx]
2244	mov	ecx,DWORD [116+esp]
2245	movdqa	xmm4,xmm2
2246	movdqu	xmm5,[eax*1+ebx]
2247	movdqa	xmm6,xmm2
2248	movdqu	xmm7,[edi*1+ebx]
2249	pxor	xmm2,xmm0
2250	pxor	xmm3,xmm2
2251	movdqa	[esp],xmm2
2252	pxor	xmm4,xmm3
2253	movdqa	[16+esp],xmm3
2254	pxor	xmm5,xmm4
2255	movdqa	[32+esp],xmm4
2256	pxor	xmm6,xmm5
2257	movdqa	[48+esp],xmm5
2258	pxor	xmm7,xmm6
2259	movdqa	[64+esp],xmm6
2260	movdqa	[80+esp],xmm7
2261	movups	xmm0,[ecx*1+edx-48]
2262	movdqu	xmm2,[esi]
2263	movdqu	xmm3,[16+esi]
2264	movdqu	xmm4,[32+esi]
2265	movdqu	xmm5,[48+esi]
2266	movdqu	xmm6,[64+esi]
2267	movdqu	xmm7,[80+esi]
2268	lea	esi,[96+esi]
2269	movdqa	[96+esp],xmm1
2270	pxor	xmm2,xmm0
2271	pxor	xmm3,xmm0
2272	pxor	xmm4,xmm0
2273	pxor	xmm5,xmm0
2274	pxor	xmm6,xmm0
2275	pxor	xmm7,xmm0
2276	movups	xmm1,[ecx*1+edx-32]
2277	pxor	xmm2,[esp]
2278	pxor	xmm3,[16+esp]
2279	pxor	xmm4,[32+esp]
2280	pxor	xmm5,[48+esp]
2281	pxor	xmm6,[64+esp]
2282	pxor	xmm7,[80+esp]
2283	movups	xmm0,[ecx*1+edx-16]
2284db	102,15,56,222,209
2285db	102,15,56,222,217
2286db	102,15,56,222,225
2287db	102,15,56,222,233
2288db	102,15,56,222,241
2289db	102,15,56,222,249
2290	mov	edi,DWORD [120+esp]
2291	mov	eax,DWORD [124+esp]
2292	call	L$_aesni_decrypt6_enter
2293	movdqa	xmm0,[80+esp]
2294	pxor	xmm2,[esp]
2295	movdqa	xmm1,[96+esp]
2296	pxor	xmm3,[16+esp]
2297	pxor	xmm4,[32+esp]
2298	pxor	xmm5,[48+esp]
2299	pxor	xmm6,[64+esp]
2300	pxor	xmm7,xmm0
2301	pxor	xmm1,xmm2
2302	movdqu	[esi*1+edi-96],xmm2
2303	pxor	xmm1,xmm3
2304	movdqu	[esi*1+edi-80],xmm3
2305	pxor	xmm1,xmm4
2306	movdqu	[esi*1+edi-64],xmm4
2307	pxor	xmm1,xmm5
2308	movdqu	[esi*1+edi-48],xmm5
2309	pxor	xmm1,xmm6
2310	movdqu	[esi*1+edi-32],xmm6
2311	pxor	xmm1,xmm7
2312	movdqu	[esi*1+edi-16],xmm7
2313	cmp	esi,eax
2314	jbe	NEAR L$087grandloop
2315L$086short:
2316	add	eax,96
2317	sub	eax,esi
2318	jz	NEAR L$088done
2319	cmp	eax,32
2320	jb	NEAR L$089one
2321	je	NEAR L$090two
2322	cmp	eax,64
2323	jb	NEAR L$091three
2324	je	NEAR L$092four
2325	lea	ecx,[1+ebp]
2326	lea	eax,[3+ebp]
2327	bsf	ecx,ecx
2328	bsf	eax,eax
2329	shl	ecx,4
2330	shl	eax,4
2331	movdqu	xmm2,[ebx]
2332	movdqu	xmm3,[ecx*1+ebx]
2333	mov	ecx,DWORD [116+esp]
2334	movdqa	xmm4,xmm2
2335	movdqu	xmm5,[eax*1+ebx]
2336	movdqa	xmm6,xmm2
2337	pxor	xmm2,xmm0
2338	pxor	xmm3,xmm2
2339	movdqa	[esp],xmm2
2340	pxor	xmm4,xmm3
2341	movdqa	[16+esp],xmm3
2342	pxor	xmm5,xmm4
2343	movdqa	[32+esp],xmm4
2344	pxor	xmm6,xmm5
2345	movdqa	[48+esp],xmm5
2346	pxor	xmm7,xmm6
2347	movdqa	[64+esp],xmm6
2348	movups	xmm0,[ecx*1+edx-48]
2349	movdqu	xmm2,[esi]
2350	movdqu	xmm3,[16+esi]
2351	movdqu	xmm4,[32+esi]
2352	movdqu	xmm5,[48+esi]
2353	movdqu	xmm6,[64+esi]
2354	pxor	xmm7,xmm7
2355	movdqa	[96+esp],xmm1
2356	pxor	xmm2,xmm0
2357	pxor	xmm3,xmm0
2358	pxor	xmm4,xmm0
2359	pxor	xmm5,xmm0
2360	pxor	xmm6,xmm0
2361	movups	xmm1,[ecx*1+edx-32]
2362	pxor	xmm2,[esp]
2363	pxor	xmm3,[16+esp]
2364	pxor	xmm4,[32+esp]
2365	pxor	xmm5,[48+esp]
2366	pxor	xmm6,[64+esp]
2367	movups	xmm0,[ecx*1+edx-16]
2368db	102,15,56,222,209
2369db	102,15,56,222,217
2370db	102,15,56,222,225
2371db	102,15,56,222,233
2372db	102,15,56,222,241
2373db	102,15,56,222,249
2374	mov	edi,DWORD [120+esp]
2375	call	L$_aesni_decrypt6_enter
2376	movdqa	xmm0,[64+esp]
2377	pxor	xmm2,[esp]
2378	movdqa	xmm1,[96+esp]
2379	pxor	xmm3,[16+esp]
2380	pxor	xmm4,[32+esp]
2381	pxor	xmm5,[48+esp]
2382	pxor	xmm6,xmm0
2383	pxor	xmm1,xmm2
2384	movdqu	[esi*1+edi],xmm2
2385	pxor	xmm1,xmm3
2386	movdqu	[16+esi*1+edi],xmm3
2387	pxor	xmm1,xmm4
2388	movdqu	[32+esi*1+edi],xmm4
2389	pxor	xmm1,xmm5
2390	movdqu	[48+esi*1+edi],xmm5
2391	pxor	xmm1,xmm6
2392	movdqu	[64+esi*1+edi],xmm6
2393	jmp	NEAR L$088done
2394align	16
2395L$089one:
2396	movdqu	xmm7,[ebx]
2397	mov	edx,DWORD [112+esp]
2398	movdqu	xmm2,[esi]
2399	mov	ecx,DWORD [240+edx]
2400	pxor	xmm7,xmm0
2401	pxor	xmm2,xmm7
2402	movdqa	xmm6,xmm1
2403	mov	edi,DWORD [120+esp]
2404	movups	xmm0,[edx]
2405	movups	xmm1,[16+edx]
2406	lea	edx,[32+edx]
2407	xorps	xmm2,xmm0
2408L$093dec1_loop_18:
2409db	102,15,56,222,209
2410	dec	ecx
2411	movups	xmm1,[edx]
2412	lea	edx,[16+edx]
2413	jnz	NEAR L$093dec1_loop_18
2414db	102,15,56,223,209
2415	xorps	xmm2,xmm7
2416	movaps	xmm1,xmm6
2417	movdqa	xmm0,xmm7
2418	xorps	xmm1,xmm2
2419	movups	[esi*1+edi],xmm2
2420	jmp	NEAR L$088done
2421align	16
2422L$090two:
2423	lea	ecx,[1+ebp]
2424	mov	edx,DWORD [112+esp]
2425	bsf	ecx,ecx
2426	shl	ecx,4
2427	movdqu	xmm6,[ebx]
2428	movdqu	xmm7,[ecx*1+ebx]
2429	movdqu	xmm2,[esi]
2430	movdqu	xmm3,[16+esi]
2431	mov	ecx,DWORD [240+edx]
2432	movdqa	xmm5,xmm1
2433	pxor	xmm6,xmm0
2434	pxor	xmm7,xmm6
2435	pxor	xmm2,xmm6
2436	pxor	xmm3,xmm7
2437	mov	edi,DWORD [120+esp]
2438	call	__aesni_decrypt2
2439	xorps	xmm2,xmm6
2440	xorps	xmm3,xmm7
2441	movdqa	xmm0,xmm7
2442	xorps	xmm5,xmm2
2443	movups	[esi*1+edi],xmm2
2444	xorps	xmm5,xmm3
2445	movups	[16+esi*1+edi],xmm3
2446	movaps	xmm1,xmm5
2447	jmp	NEAR L$088done
2448align	16
2449L$091three:
2450	lea	ecx,[1+ebp]
2451	mov	edx,DWORD [112+esp]
2452	bsf	ecx,ecx
2453	shl	ecx,4
2454	movdqu	xmm5,[ebx]
2455	movdqu	xmm6,[ecx*1+ebx]
2456	movdqa	xmm7,xmm5
2457	movdqu	xmm2,[esi]
2458	movdqu	xmm3,[16+esi]
2459	movdqu	xmm4,[32+esi]
2460	mov	ecx,DWORD [240+edx]
2461	movdqa	[96+esp],xmm1
2462	pxor	xmm5,xmm0
2463	pxor	xmm6,xmm5
2464	pxor	xmm7,xmm6
2465	pxor	xmm2,xmm5
2466	pxor	xmm3,xmm6
2467	pxor	xmm4,xmm7
2468	mov	edi,DWORD [120+esp]
2469	call	__aesni_decrypt3
2470	movdqa	xmm1,[96+esp]
2471	xorps	xmm2,xmm5
2472	xorps	xmm3,xmm6
2473	xorps	xmm4,xmm7
2474	movups	[esi*1+edi],xmm2
2475	pxor	xmm1,xmm2
2476	movdqa	xmm0,xmm7
2477	movups	[16+esi*1+edi],xmm3
2478	pxor	xmm1,xmm3
2479	movups	[32+esi*1+edi],xmm4
2480	pxor	xmm1,xmm4
2481	jmp	NEAR L$088done
2482align	16
2483L$092four:
2484	lea	ecx,[1+ebp]
2485	lea	eax,[3+ebp]
2486	bsf	ecx,ecx
2487	bsf	eax,eax
2488	mov	edx,DWORD [112+esp]
2489	shl	ecx,4
2490	shl	eax,4
2491	movdqu	xmm4,[ebx]
2492	movdqu	xmm5,[ecx*1+ebx]
2493	movdqa	xmm6,xmm4
2494	movdqu	xmm7,[eax*1+ebx]
2495	pxor	xmm4,xmm0
2496	movdqu	xmm2,[esi]
2497	pxor	xmm5,xmm4
2498	movdqu	xmm3,[16+esi]
2499	pxor	xmm6,xmm5
2500	movdqa	[esp],xmm4
2501	pxor	xmm7,xmm6
2502	movdqa	[16+esp],xmm5
2503	movdqu	xmm4,[32+esi]
2504	movdqu	xmm5,[48+esi]
2505	mov	ecx,DWORD [240+edx]
2506	movdqa	[96+esp],xmm1
2507	pxor	xmm2,[esp]
2508	pxor	xmm3,[16+esp]
2509	pxor	xmm4,xmm6
2510	pxor	xmm5,xmm7
2511	mov	edi,DWORD [120+esp]
2512	call	__aesni_decrypt4
2513	movdqa	xmm1,[96+esp]
2514	xorps	xmm2,[esp]
2515	xorps	xmm3,[16+esp]
2516	xorps	xmm4,xmm6
2517	movups	[esi*1+edi],xmm2
2518	pxor	xmm1,xmm2
2519	xorps	xmm5,xmm7
2520	movups	[16+esi*1+edi],xmm3
2521	pxor	xmm1,xmm3
2522	movdqa	xmm0,xmm7
2523	movups	[32+esi*1+edi],xmm4
2524	pxor	xmm1,xmm4
2525	movups	[48+esi*1+edi],xmm5
2526	pxor	xmm1,xmm5
2527L$088done:
2528	mov	edx,DWORD [128+esp]
2529	pxor	xmm2,xmm2
2530	pxor	xmm3,xmm3
2531	movdqa	[esp],xmm2
2532	pxor	xmm4,xmm4
2533	movdqa	[16+esp],xmm2
2534	pxor	xmm5,xmm5
2535	movdqa	[32+esp],xmm2
2536	pxor	xmm6,xmm6
2537	movdqa	[48+esp],xmm2
2538	pxor	xmm7,xmm7
2539	movdqa	[64+esp],xmm2
2540	movdqa	[80+esp],xmm2
2541	movdqa	[96+esp],xmm2
2542	lea	esp,[edx]
2543	mov	ecx,DWORD [40+esp]
2544	mov	ebx,DWORD [48+esp]
2545	movdqu	[ecx],xmm0
2546	pxor	xmm0,xmm0
2547	movdqu	[ebx],xmm1
2548	pxor	xmm1,xmm1
2549	pop	edi
2550	pop	esi
2551	pop	ebx
2552	pop	ebp
2553	ret
2554global	_aesni_cbc_encrypt
2555align	16
2556_aesni_cbc_encrypt:
2557L$_aesni_cbc_encrypt_begin:
2558	push	ebp
2559	push	ebx
2560	push	esi
2561	push	edi
2562	mov	esi,DWORD [20+esp]
2563	mov	ebx,esp
2564	mov	edi,DWORD [24+esp]
2565	sub	ebx,24
2566	mov	eax,DWORD [28+esp]
2567	and	ebx,-16
2568	mov	edx,DWORD [32+esp]
2569	mov	ebp,DWORD [36+esp]
2570	test	eax,eax
2571	jz	NEAR L$094cbc_abort
2572	cmp	DWORD [40+esp],0
2573	xchg	ebx,esp
2574	movups	xmm7,[ebp]
2575	mov	ecx,DWORD [240+edx]
2576	mov	ebp,edx
2577	mov	DWORD [16+esp],ebx
2578	mov	ebx,ecx
2579	je	NEAR L$095cbc_decrypt
2580	movaps	xmm2,xmm7
2581	cmp	eax,16
2582	jb	NEAR L$096cbc_enc_tail
2583	sub	eax,16
2584	jmp	NEAR L$097cbc_enc_loop
2585align	16
2586L$097cbc_enc_loop:
2587	movups	xmm7,[esi]
2588	lea	esi,[16+esi]
2589	movups	xmm0,[edx]
2590	movups	xmm1,[16+edx]
2591	xorps	xmm7,xmm0
2592	lea	edx,[32+edx]
2593	xorps	xmm2,xmm7
2594L$098enc1_loop_19:
2595db	102,15,56,220,209
2596	dec	ecx
2597	movups	xmm1,[edx]
2598	lea	edx,[16+edx]
2599	jnz	NEAR L$098enc1_loop_19
2600db	102,15,56,221,209
2601	mov	ecx,ebx
2602	mov	edx,ebp
2603	movups	[edi],xmm2
2604	lea	edi,[16+edi]
2605	sub	eax,16
2606	jnc	NEAR L$097cbc_enc_loop
2607	add	eax,16
2608	jnz	NEAR L$096cbc_enc_tail
2609	movaps	xmm7,xmm2
2610	pxor	xmm2,xmm2
2611	jmp	NEAR L$099cbc_ret
2612L$096cbc_enc_tail:
2613	mov	ecx,eax
2614dd	2767451785
2615	mov	ecx,16
2616	sub	ecx,eax
2617	xor	eax,eax
2618dd	2868115081
2619	lea	edi,[edi-16]
2620	mov	ecx,ebx
2621	mov	esi,edi
2622	mov	edx,ebp
2623	jmp	NEAR L$097cbc_enc_loop
2624align	16
2625L$095cbc_decrypt:
2626	cmp	eax,80
2627	jbe	NEAR L$100cbc_dec_tail
2628	movaps	[esp],xmm7
2629	sub	eax,80
2630	jmp	NEAR L$101cbc_dec_loop6_enter
2631align	16
2632L$102cbc_dec_loop6:
2633	movaps	[esp],xmm0
2634	movups	[edi],xmm7
2635	lea	edi,[16+edi]
2636L$101cbc_dec_loop6_enter:
2637	movdqu	xmm2,[esi]
2638	movdqu	xmm3,[16+esi]
2639	movdqu	xmm4,[32+esi]
2640	movdqu	xmm5,[48+esi]
2641	movdqu	xmm6,[64+esi]
2642	movdqu	xmm7,[80+esi]
2643	call	__aesni_decrypt6
2644	movups	xmm1,[esi]
2645	movups	xmm0,[16+esi]
2646	xorps	xmm2,[esp]
2647	xorps	xmm3,xmm1
2648	movups	xmm1,[32+esi]
2649	xorps	xmm4,xmm0
2650	movups	xmm0,[48+esi]
2651	xorps	xmm5,xmm1
2652	movups	xmm1,[64+esi]
2653	xorps	xmm6,xmm0
2654	movups	xmm0,[80+esi]
2655	xorps	xmm7,xmm1
2656	movups	[edi],xmm2
2657	movups	[16+edi],xmm3
2658	lea	esi,[96+esi]
2659	movups	[32+edi],xmm4
2660	mov	ecx,ebx
2661	movups	[48+edi],xmm5
2662	mov	edx,ebp
2663	movups	[64+edi],xmm6
2664	lea	edi,[80+edi]
2665	sub	eax,96
2666	ja	NEAR L$102cbc_dec_loop6
2667	movaps	xmm2,xmm7
2668	movaps	xmm7,xmm0
2669	add	eax,80
2670	jle	NEAR L$103cbc_dec_clear_tail_collected
2671	movups	[edi],xmm2
2672	lea	edi,[16+edi]
2673L$100cbc_dec_tail:
2674	movups	xmm2,[esi]
2675	movaps	xmm6,xmm2
2676	cmp	eax,16
2677	jbe	NEAR L$104cbc_dec_one
2678	movups	xmm3,[16+esi]
2679	movaps	xmm5,xmm3
2680	cmp	eax,32
2681	jbe	NEAR L$105cbc_dec_two
2682	movups	xmm4,[32+esi]
2683	cmp	eax,48
2684	jbe	NEAR L$106cbc_dec_three
2685	movups	xmm5,[48+esi]
2686	cmp	eax,64
2687	jbe	NEAR L$107cbc_dec_four
2688	movups	xmm6,[64+esi]
2689	movaps	[esp],xmm7
2690	movups	xmm2,[esi]
2691	xorps	xmm7,xmm7
2692	call	__aesni_decrypt6
2693	movups	xmm1,[esi]
2694	movups	xmm0,[16+esi]
2695	xorps	xmm2,[esp]
2696	xorps	xmm3,xmm1
2697	movups	xmm1,[32+esi]
2698	xorps	xmm4,xmm0
2699	movups	xmm0,[48+esi]
2700	xorps	xmm5,xmm1
2701	movups	xmm7,[64+esi]
2702	xorps	xmm6,xmm0
2703	movups	[edi],xmm2
2704	movups	[16+edi],xmm3
2705	pxor	xmm3,xmm3
2706	movups	[32+edi],xmm4
2707	pxor	xmm4,xmm4
2708	movups	[48+edi],xmm5
2709	pxor	xmm5,xmm5
2710	lea	edi,[64+edi]
2711	movaps	xmm2,xmm6
2712	pxor	xmm6,xmm6
2713	sub	eax,80
2714	jmp	NEAR L$108cbc_dec_tail_collected
2715align	16
2716L$104cbc_dec_one:
2717	movups	xmm0,[edx]
2718	movups	xmm1,[16+edx]
2719	lea	edx,[32+edx]
2720	xorps	xmm2,xmm0
2721L$109dec1_loop_20:
2722db	102,15,56,222,209
2723	dec	ecx
2724	movups	xmm1,[edx]
2725	lea	edx,[16+edx]
2726	jnz	NEAR L$109dec1_loop_20
2727db	102,15,56,223,209
2728	xorps	xmm2,xmm7
2729	movaps	xmm7,xmm6
2730	sub	eax,16
2731	jmp	NEAR L$108cbc_dec_tail_collected
2732align	16
2733L$105cbc_dec_two:
2734	call	__aesni_decrypt2
2735	xorps	xmm2,xmm7
2736	xorps	xmm3,xmm6
2737	movups	[edi],xmm2
2738	movaps	xmm2,xmm3
2739	pxor	xmm3,xmm3
2740	lea	edi,[16+edi]
2741	movaps	xmm7,xmm5
2742	sub	eax,32
2743	jmp	NEAR L$108cbc_dec_tail_collected
2744align	16
2745L$106cbc_dec_three:
2746	call	__aesni_decrypt3
2747	xorps	xmm2,xmm7
2748	xorps	xmm3,xmm6
2749	xorps	xmm4,xmm5
2750	movups	[edi],xmm2
2751	movaps	xmm2,xmm4
2752	pxor	xmm4,xmm4
2753	movups	[16+edi],xmm3
2754	pxor	xmm3,xmm3
2755	lea	edi,[32+edi]
2756	movups	xmm7,[32+esi]
2757	sub	eax,48
2758	jmp	NEAR L$108cbc_dec_tail_collected
2759align	16
2760L$107cbc_dec_four:
2761	call	__aesni_decrypt4
2762	movups	xmm1,[16+esi]
2763	movups	xmm0,[32+esi]
2764	xorps	xmm2,xmm7
2765	movups	xmm7,[48+esi]
2766	xorps	xmm3,xmm6
2767	movups	[edi],xmm2
2768	xorps	xmm4,xmm1
2769	movups	[16+edi],xmm3
2770	pxor	xmm3,xmm3
2771	xorps	xmm5,xmm0
2772	movups	[32+edi],xmm4
2773	pxor	xmm4,xmm4
2774	lea	edi,[48+edi]
2775	movaps	xmm2,xmm5
2776	pxor	xmm5,xmm5
2777	sub	eax,64
2778	jmp	NEAR L$108cbc_dec_tail_collected
2779align	16
2780L$103cbc_dec_clear_tail_collected:
2781	pxor	xmm3,xmm3
2782	pxor	xmm4,xmm4
2783	pxor	xmm5,xmm5
2784	pxor	xmm6,xmm6
2785L$108cbc_dec_tail_collected:
2786	and	eax,15
2787	jnz	NEAR L$110cbc_dec_tail_partial
2788	movups	[edi],xmm2
2789	pxor	xmm0,xmm0
2790	jmp	NEAR L$099cbc_ret
2791align	16
2792L$110cbc_dec_tail_partial:
2793	movaps	[esp],xmm2
2794	pxor	xmm0,xmm0
2795	mov	ecx,16
2796	mov	esi,esp
2797	sub	ecx,eax
2798dd	2767451785
2799	movdqa	[esp],xmm2
2800L$099cbc_ret:
2801	mov	esp,DWORD [16+esp]
2802	mov	ebp,DWORD [36+esp]
2803	pxor	xmm2,xmm2
2804	pxor	xmm1,xmm1
2805	movups	[ebp],xmm7
2806	pxor	xmm7,xmm7
2807L$094cbc_abort:
2808	pop	edi
2809	pop	esi
2810	pop	ebx
2811	pop	ebp
2812	ret
2813align	16
2814__aesni_set_encrypt_key:
2815	push	ebp
2816	push	ebx
2817	test	eax,eax
2818	jz	NEAR L$111bad_pointer
2819	test	edx,edx
2820	jz	NEAR L$111bad_pointer
2821	call	L$112pic
2822L$112pic:
2823	pop	ebx
2824	lea	ebx,[(L$key_const-L$112pic)+ebx]
2825	lea	ebp,[_OPENSSL_ia32cap_P]
2826	movups	xmm0,[eax]
2827	xorps	xmm4,xmm4
2828	mov	ebp,DWORD [4+ebp]
2829	lea	edx,[16+edx]
2830	and	ebp,268437504
2831	cmp	ecx,256
2832	je	NEAR L$11314rounds
2833	cmp	ecx,192
2834	je	NEAR L$11412rounds
2835	cmp	ecx,128
2836	jne	NEAR L$115bad_keybits
2837align	16
2838L$11610rounds:
2839	cmp	ebp,268435456
2840	je	NEAR L$11710rounds_alt
2841	mov	ecx,9
2842	movups	[edx-16],xmm0
2843db	102,15,58,223,200,1
2844	call	L$118key_128_cold
2845db	102,15,58,223,200,2
2846	call	L$119key_128
2847db	102,15,58,223,200,4
2848	call	L$119key_128
2849db	102,15,58,223,200,8
2850	call	L$119key_128
2851db	102,15,58,223,200,16
2852	call	L$119key_128
2853db	102,15,58,223,200,32
2854	call	L$119key_128
2855db	102,15,58,223,200,64
2856	call	L$119key_128
2857db	102,15,58,223,200,128
2858	call	L$119key_128
2859db	102,15,58,223,200,27
2860	call	L$119key_128
2861db	102,15,58,223,200,54
2862	call	L$119key_128
2863	movups	[edx],xmm0
2864	mov	DWORD [80+edx],ecx
2865	jmp	NEAR L$120good_key
2866align	16
2867L$119key_128:
2868	movups	[edx],xmm0
2869	lea	edx,[16+edx]
2870L$118key_128_cold:
2871	shufps	xmm4,xmm0,16
2872	xorps	xmm0,xmm4
2873	shufps	xmm4,xmm0,140
2874	xorps	xmm0,xmm4
2875	shufps	xmm1,xmm1,255
2876	xorps	xmm0,xmm1
2877	ret
2878align	16
2879L$11710rounds_alt:
2880	movdqa	xmm5,[ebx]
2881	mov	ecx,8
2882	movdqa	xmm4,[32+ebx]
2883	movdqa	xmm2,xmm0
2884	movdqu	[edx-16],xmm0
2885L$121loop_key128:
2886db	102,15,56,0,197
2887db	102,15,56,221,196
2888	pslld	xmm4,1
2889	lea	edx,[16+edx]
2890	movdqa	xmm3,xmm2
2891	pslldq	xmm2,4
2892	pxor	xmm3,xmm2
2893	pslldq	xmm2,4
2894	pxor	xmm3,xmm2
2895	pslldq	xmm2,4
2896	pxor	xmm2,xmm3
2897	pxor	xmm0,xmm2
2898	movdqu	[edx-16],xmm0
2899	movdqa	xmm2,xmm0
2900	dec	ecx
2901	jnz	NEAR L$121loop_key128
2902	movdqa	xmm4,[48+ebx]
2903db	102,15,56,0,197
2904db	102,15,56,221,196
2905	pslld	xmm4,1
2906	movdqa	xmm3,xmm2
2907	pslldq	xmm2,4
2908	pxor	xmm3,xmm2
2909	pslldq	xmm2,4
2910	pxor	xmm3,xmm2
2911	pslldq	xmm2,4
2912	pxor	xmm2,xmm3
2913	pxor	xmm0,xmm2
2914	movdqu	[edx],xmm0
2915	movdqa	xmm2,xmm0
2916db	102,15,56,0,197
2917db	102,15,56,221,196
2918	movdqa	xmm3,xmm2
2919	pslldq	xmm2,4
2920	pxor	xmm3,xmm2
2921	pslldq	xmm2,4
2922	pxor	xmm3,xmm2
2923	pslldq	xmm2,4
2924	pxor	xmm2,xmm3
2925	pxor	xmm0,xmm2
2926	movdqu	[16+edx],xmm0
2927	mov	ecx,9
2928	mov	DWORD [96+edx],ecx
2929	jmp	NEAR L$120good_key
2930align	16
2931L$11412rounds:
2932	movq	xmm2,[16+eax]
2933	cmp	ebp,268435456
2934	je	NEAR L$12212rounds_alt
2935	mov	ecx,11
2936	movups	[edx-16],xmm0
2937db	102,15,58,223,202,1
2938	call	L$123key_192a_cold
2939db	102,15,58,223,202,2
2940	call	L$124key_192b
2941db	102,15,58,223,202,4
2942	call	L$125key_192a
2943db	102,15,58,223,202,8
2944	call	L$124key_192b
2945db	102,15,58,223,202,16
2946	call	L$125key_192a
2947db	102,15,58,223,202,32
2948	call	L$124key_192b
2949db	102,15,58,223,202,64
2950	call	L$125key_192a
2951db	102,15,58,223,202,128
2952	call	L$124key_192b
2953	movups	[edx],xmm0
2954	mov	DWORD [48+edx],ecx
2955	jmp	NEAR L$120good_key
2956align	16
2957L$125key_192a:
2958	movups	[edx],xmm0
2959	lea	edx,[16+edx]
2960align	16
2961L$123key_192a_cold:
2962	movaps	xmm5,xmm2
2963L$126key_192b_warm:
2964	shufps	xmm4,xmm0,16
2965	movdqa	xmm3,xmm2
2966	xorps	xmm0,xmm4
2967	shufps	xmm4,xmm0,140
2968	pslldq	xmm3,4
2969	xorps	xmm0,xmm4
2970	pshufd	xmm1,xmm1,85
2971	pxor	xmm2,xmm3
2972	pxor	xmm0,xmm1
2973	pshufd	xmm3,xmm0,255
2974	pxor	xmm2,xmm3
2975	ret
2976align	16
2977L$124key_192b:
2978	movaps	xmm3,xmm0
2979	shufps	xmm5,xmm0,68
2980	movups	[edx],xmm5
2981	shufps	xmm3,xmm2,78
2982	movups	[16+edx],xmm3
2983	lea	edx,[32+edx]
2984	jmp	NEAR L$126key_192b_warm
2985align	16
2986L$12212rounds_alt:
2987	movdqa	xmm5,[16+ebx]
2988	movdqa	xmm4,[32+ebx]
2989	mov	ecx,8
2990	movdqu	[edx-16],xmm0
2991L$127loop_key192:
2992	movq	[edx],xmm2
2993	movdqa	xmm1,xmm2
2994db	102,15,56,0,213
2995db	102,15,56,221,212
2996	pslld	xmm4,1
2997	lea	edx,[24+edx]
2998	movdqa	xmm3,xmm0
2999	pslldq	xmm0,4
3000	pxor	xmm3,xmm0
3001	pslldq	xmm0,4
3002	pxor	xmm3,xmm0
3003	pslldq	xmm0,4
3004	pxor	xmm0,xmm3
3005	pshufd	xmm3,xmm0,255
3006	pxor	xmm3,xmm1
3007	pslldq	xmm1,4
3008	pxor	xmm3,xmm1
3009	pxor	xmm0,xmm2
3010	pxor	xmm2,xmm3
3011	movdqu	[edx-16],xmm0
3012	dec	ecx
3013	jnz	NEAR L$127loop_key192
3014	mov	ecx,11
3015	mov	DWORD [32+edx],ecx
3016	jmp	NEAR L$120good_key
3017align	16
3018L$11314rounds:
3019	movups	xmm2,[16+eax]
3020	lea	edx,[16+edx]
3021	cmp	ebp,268435456
3022	je	NEAR L$12814rounds_alt
3023	mov	ecx,13
3024	movups	[edx-32],xmm0
3025	movups	[edx-16],xmm2
3026db	102,15,58,223,202,1
3027	call	L$129key_256a_cold
3028db	102,15,58,223,200,1
3029	call	L$130key_256b
3030db	102,15,58,223,202,2
3031	call	L$131key_256a
3032db	102,15,58,223,200,2
3033	call	L$130key_256b
3034db	102,15,58,223,202,4
3035	call	L$131key_256a
3036db	102,15,58,223,200,4
3037	call	L$130key_256b
3038db	102,15,58,223,202,8
3039	call	L$131key_256a
3040db	102,15,58,223,200,8
3041	call	L$130key_256b
3042db	102,15,58,223,202,16
3043	call	L$131key_256a
3044db	102,15,58,223,200,16
3045	call	L$130key_256b
3046db	102,15,58,223,202,32
3047	call	L$131key_256a
3048db	102,15,58,223,200,32
3049	call	L$130key_256b
3050db	102,15,58,223,202,64
3051	call	L$131key_256a
3052	movups	[edx],xmm0
3053	mov	DWORD [16+edx],ecx
3054	xor	eax,eax
3055	jmp	NEAR L$120good_key
3056align	16
3057L$131key_256a:
3058	movups	[edx],xmm2
3059	lea	edx,[16+edx]
3060L$129key_256a_cold:
3061	shufps	xmm4,xmm0,16
3062	xorps	xmm0,xmm4
3063	shufps	xmm4,xmm0,140
3064	xorps	xmm0,xmm4
3065	shufps	xmm1,xmm1,255
3066	xorps	xmm0,xmm1
3067	ret
3068align	16
3069L$130key_256b:
3070	movups	[edx],xmm0
3071	lea	edx,[16+edx]
3072	shufps	xmm4,xmm2,16
3073	xorps	xmm2,xmm4
3074	shufps	xmm4,xmm2,140
3075	xorps	xmm2,xmm4
3076	shufps	xmm1,xmm1,170
3077	xorps	xmm2,xmm1
3078	ret
3079align	16
3080L$12814rounds_alt:
3081	movdqa	xmm5,[ebx]
3082	movdqa	xmm4,[32+ebx]
3083	mov	ecx,7
3084	movdqu	[edx-32],xmm0
3085	movdqa	xmm1,xmm2
3086	movdqu	[edx-16],xmm2
3087L$132loop_key256:
3088db	102,15,56,0,213
3089db	102,15,56,221,212
3090	movdqa	xmm3,xmm0
3091	pslldq	xmm0,4
3092	pxor	xmm3,xmm0
3093	pslldq	xmm0,4
3094	pxor	xmm3,xmm0
3095	pslldq	xmm0,4
3096	pxor	xmm0,xmm3
3097	pslld	xmm4,1
3098	pxor	xmm0,xmm2
3099	movdqu	[edx],xmm0
3100	dec	ecx
3101	jz	NEAR L$133done_key256
3102	pshufd	xmm2,xmm0,255
3103	pxor	xmm3,xmm3
3104db	102,15,56,221,211
3105	movdqa	xmm3,xmm1
3106	pslldq	xmm1,4
3107	pxor	xmm3,xmm1
3108	pslldq	xmm1,4
3109	pxor	xmm3,xmm1
3110	pslldq	xmm1,4
3111	pxor	xmm1,xmm3
3112	pxor	xmm2,xmm1
3113	movdqu	[16+edx],xmm2
3114	lea	edx,[32+edx]
3115	movdqa	xmm1,xmm2
3116	jmp	NEAR L$132loop_key256
3117L$133done_key256:
3118	mov	ecx,13
3119	mov	DWORD [16+edx],ecx
3120L$120good_key:
3121	pxor	xmm0,xmm0
3122	pxor	xmm1,xmm1
3123	pxor	xmm2,xmm2
3124	pxor	xmm3,xmm3
3125	pxor	xmm4,xmm4
3126	pxor	xmm5,xmm5
3127	xor	eax,eax
3128	pop	ebx
3129	pop	ebp
3130	ret
3131align	4
3132L$111bad_pointer:
3133	mov	eax,-1
3134	pop	ebx
3135	pop	ebp
3136	ret
3137align	4
3138L$115bad_keybits:
3139	pxor	xmm0,xmm0
3140	mov	eax,-2
3141	pop	ebx
3142	pop	ebp
3143	ret
3144global	_aesni_set_encrypt_key
3145align	16
3146_aesni_set_encrypt_key:
3147L$_aesni_set_encrypt_key_begin:
3148	mov	eax,DWORD [4+esp]
3149	mov	ecx,DWORD [8+esp]
3150	mov	edx,DWORD [12+esp]
3151	call	__aesni_set_encrypt_key
3152	ret
3153global	_aesni_set_decrypt_key
3154align	16
3155_aesni_set_decrypt_key:
3156L$_aesni_set_decrypt_key_begin:
3157	mov	eax,DWORD [4+esp]
3158	mov	ecx,DWORD [8+esp]
3159	mov	edx,DWORD [12+esp]
3160	call	__aesni_set_encrypt_key
3161	mov	edx,DWORD [12+esp]
3162	shl	ecx,4
3163	test	eax,eax
3164	jnz	NEAR L$134dec_key_ret
3165	lea	eax,[16+ecx*1+edx]
3166	movups	xmm0,[edx]
3167	movups	xmm1,[eax]
3168	movups	[eax],xmm0
3169	movups	[edx],xmm1
3170	lea	edx,[16+edx]
3171	lea	eax,[eax-16]
3172L$135dec_key_inverse:
3173	movups	xmm0,[edx]
3174	movups	xmm1,[eax]
3175db	102,15,56,219,192
3176db	102,15,56,219,201
3177	lea	edx,[16+edx]
3178	lea	eax,[eax-16]
3179	movups	[16+eax],xmm0
3180	movups	[edx-16],xmm1
3181	cmp	eax,edx
3182	ja	NEAR L$135dec_key_inverse
3183	movups	xmm0,[edx]
3184db	102,15,56,219,192
3185	movups	[edx],xmm0
3186	pxor	xmm0,xmm0
3187	pxor	xmm1,xmm1
3188	xor	eax,eax
3189L$134dec_key_ret:
3190	ret
3191align	64
3192L$key_const:
3193dd	202313229,202313229,202313229,202313229
3194dd	67569157,67569157,67569157,67569157
3195dd	1,1,1,1
3196dd	27,27,27,27
3197db	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
3198db	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
3199db	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
3200db	115,108,46,111,114,103,62,0
3201segment	.bss
3202common	_OPENSSL_ia32cap_P 16
3203