xref: /aosp_15_r20/external/boringssl/src/gen/bcm/vpaes-x86-win.asm (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1; This file is generated from a similarly-named Perl script in the BoringSSL
2; source tree. Do not edit by hand.
3
4%ifdef BORINGSSL_PREFIX
5%include "boringssl_prefix_symbols_nasm.inc"
6%endif
7%ifidn __OUTPUT_FORMAT__, win32
8%ifidn __OUTPUT_FORMAT__,obj
9section	code	use32 class=code align=64
10%elifidn __OUTPUT_FORMAT__,win32
11$@feat.00 equ 1
12section	.text	code align=64
13%else
14section	.text	code
15%endif
16%ifdef BORINGSSL_DISPATCH_TEST
17extern	_BORINGSSL_function_hit
18%endif
19align	64
20L$_vpaes_consts:
21dd	218628480,235210255,168496130,67568393
22dd	252381056,17041926,33884169,51187212
23dd	252645135,252645135,252645135,252645135
24dd	1512730624,3266504856,1377990664,3401244816
25dd	830229760,1275146365,2969422977,3447763452
26dd	3411033600,2979783055,338359620,2782886510
27dd	4209124096,907596821,221174255,1006095553
28dd	191964160,3799684038,3164090317,1589111125
29dd	182528256,1777043520,2877432650,3265356744
30dd	1874708224,3503451415,3305285752,363511674
31dd	1606117888,3487855781,1093350906,2384367825
32dd	197121,67569157,134941193,202313229
33dd	67569157,134941193,202313229,197121
34dd	134941193,202313229,197121,67569157
35dd	202313229,197121,67569157,134941193
36dd	33619971,100992007,168364043,235736079
37dd	235736079,33619971,100992007,168364043
38dd	168364043,235736079,33619971,100992007
39dd	100992007,168364043,235736079,33619971
40dd	50462976,117835012,185207048,252579084
41dd	252314880,51251460,117574920,184942860
42dd	184682752,252054788,50987272,118359308
43dd	118099200,185467140,251790600,50727180
44dd	2946363062,528716217,1300004225,1881839624
45dd	1532713819,1532713819,1532713819,1532713819
46dd	3602276352,4288629033,3737020424,4153884961
47dd	1354558464,32357713,2958822624,3775749553
48dd	1201988352,132424512,1572796698,503232858
49dd	2213177600,1597421020,4103937655,675398315
50dd	2749646592,4273543773,1511898873,121693092
51dd	3040248576,1103263732,2871565598,1608280554
52dd	2236667136,2588920351,482954393,64377734
53dd	3069987328,291237287,2117370568,3650299247
54dd	533321216,3573750986,2572112006,1401264716
55dd	1339849704,2721158661,548607111,3445553514
56dd	2128193280,3054596040,2183486460,1257083700
57dd	655635200,1165381986,3923443150,2344132524
58dd	190078720,256924420,290342170,357187870
59dd	1610966272,2263057382,4103205268,309794674
60dd	2592527872,2233205587,1335446729,3402964816
61dd	3973531904,3225098121,3002836325,1918774430
62dd	3870401024,2102906079,2284471353,4117666579
63dd	617007872,1021508343,366931923,691083277
64dd	2528395776,3491914898,2968704004,1613121270
65dd	3445188352,3247741094,844474987,4093578302
66dd	651481088,1190302358,1689581232,574775300
67dd	4289380608,206939853,2555985458,2489840491
68dd	2130264064,327674451,3566485037,3349835193
69dd	2470714624,316102159,3636825756,3393945945
70db	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
71db	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
72db	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
73db	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
74db	118,101,114,115,105,116,121,41,0
75align	64
76align	16
77__vpaes_preheat:
78	add	ebp,DWORD [esp]
79	movdqa	xmm7,[ebp-48]
80	movdqa	xmm6,[ebp-16]
81	ret
82align	16
83__vpaes_encrypt_core:
84	mov	ecx,16
85	mov	eax,DWORD [240+edx]
86	movdqa	xmm1,xmm6
87	movdqa	xmm2,[ebp]
88	pandn	xmm1,xmm0
89	pand	xmm0,xmm6
90	movdqu	xmm5,[edx]
91db	102,15,56,0,208
92	movdqa	xmm0,[16+ebp]
93	pxor	xmm2,xmm5
94	psrld	xmm1,4
95	add	edx,16
96db	102,15,56,0,193
97	lea	ebx,[192+ebp]
98	pxor	xmm0,xmm2
99	jmp	NEAR L$000enc_entry
100align	16
101L$001enc_loop:
102	movdqa	xmm4,[32+ebp]
103	movdqa	xmm0,[48+ebp]
104db	102,15,56,0,226
105db	102,15,56,0,195
106	pxor	xmm4,xmm5
107	movdqa	xmm5,[64+ebp]
108	pxor	xmm0,xmm4
109	movdqa	xmm1,[ecx*1+ebx-64]
110db	102,15,56,0,234
111	movdqa	xmm2,[80+ebp]
112	movdqa	xmm4,[ecx*1+ebx]
113db	102,15,56,0,211
114	movdqa	xmm3,xmm0
115	pxor	xmm2,xmm5
116db	102,15,56,0,193
117	add	edx,16
118	pxor	xmm0,xmm2
119db	102,15,56,0,220
120	add	ecx,16
121	pxor	xmm3,xmm0
122db	102,15,56,0,193
123	and	ecx,48
124	sub	eax,1
125	pxor	xmm0,xmm3
126L$000enc_entry:
127	movdqa	xmm1,xmm6
128	movdqa	xmm5,[ebp-32]
129	pandn	xmm1,xmm0
130	psrld	xmm1,4
131	pand	xmm0,xmm6
132db	102,15,56,0,232
133	movdqa	xmm3,xmm7
134	pxor	xmm0,xmm1
135db	102,15,56,0,217
136	movdqa	xmm4,xmm7
137	pxor	xmm3,xmm5
138db	102,15,56,0,224
139	movdqa	xmm2,xmm7
140	pxor	xmm4,xmm5
141db	102,15,56,0,211
142	movdqa	xmm3,xmm7
143	pxor	xmm2,xmm0
144db	102,15,56,0,220
145	movdqu	xmm5,[edx]
146	pxor	xmm3,xmm1
147	jnz	NEAR L$001enc_loop
148	movdqa	xmm4,[96+ebp]
149	movdqa	xmm0,[112+ebp]
150db	102,15,56,0,226
151	pxor	xmm4,xmm5
152db	102,15,56,0,195
153	movdqa	xmm1,[64+ecx*1+ebx]
154	pxor	xmm0,xmm4
155db	102,15,56,0,193
156	ret
157align	16
158__vpaes_decrypt_core:
159	lea	ebx,[608+ebp]
160	mov	eax,DWORD [240+edx]
161	movdqa	xmm1,xmm6
162	movdqa	xmm2,[ebx-64]
163	pandn	xmm1,xmm0
164	mov	ecx,eax
165	psrld	xmm1,4
166	movdqu	xmm5,[edx]
167	shl	ecx,4
168	pand	xmm0,xmm6
169db	102,15,56,0,208
170	movdqa	xmm0,[ebx-48]
171	xor	ecx,48
172db	102,15,56,0,193
173	and	ecx,48
174	pxor	xmm2,xmm5
175	movdqa	xmm5,[176+ebp]
176	pxor	xmm0,xmm2
177	add	edx,16
178	lea	ecx,[ecx*1+ebx-352]
179	jmp	NEAR L$002dec_entry
180align	16
181L$003dec_loop:
182	movdqa	xmm4,[ebx-32]
183	movdqa	xmm1,[ebx-16]
184db	102,15,56,0,226
185db	102,15,56,0,203
186	pxor	xmm0,xmm4
187	movdqa	xmm4,[ebx]
188	pxor	xmm0,xmm1
189	movdqa	xmm1,[16+ebx]
190db	102,15,56,0,226
191db	102,15,56,0,197
192db	102,15,56,0,203
193	pxor	xmm0,xmm4
194	movdqa	xmm4,[32+ebx]
195	pxor	xmm0,xmm1
196	movdqa	xmm1,[48+ebx]
197db	102,15,56,0,226
198db	102,15,56,0,197
199db	102,15,56,0,203
200	pxor	xmm0,xmm4
201	movdqa	xmm4,[64+ebx]
202	pxor	xmm0,xmm1
203	movdqa	xmm1,[80+ebx]
204db	102,15,56,0,226
205db	102,15,56,0,197
206db	102,15,56,0,203
207	pxor	xmm0,xmm4
208	add	edx,16
209db	102,15,58,15,237,12
210	pxor	xmm0,xmm1
211	sub	eax,1
212L$002dec_entry:
213	movdqa	xmm1,xmm6
214	movdqa	xmm2,[ebp-32]
215	pandn	xmm1,xmm0
216	pand	xmm0,xmm6
217	psrld	xmm1,4
218db	102,15,56,0,208
219	movdqa	xmm3,xmm7
220	pxor	xmm0,xmm1
221db	102,15,56,0,217
222	movdqa	xmm4,xmm7
223	pxor	xmm3,xmm2
224db	102,15,56,0,224
225	pxor	xmm4,xmm2
226	movdqa	xmm2,xmm7
227db	102,15,56,0,211
228	movdqa	xmm3,xmm7
229	pxor	xmm2,xmm0
230db	102,15,56,0,220
231	movdqu	xmm0,[edx]
232	pxor	xmm3,xmm1
233	jnz	NEAR L$003dec_loop
234	movdqa	xmm4,[96+ebx]
235db	102,15,56,0,226
236	pxor	xmm4,xmm0
237	movdqa	xmm0,[112+ebx]
238	movdqa	xmm2,[ecx]
239db	102,15,56,0,195
240	pxor	xmm0,xmm4
241db	102,15,56,0,194
242	ret
243align	16
244__vpaes_schedule_core:
245	add	ebp,DWORD [esp]
246	movdqu	xmm0,[esi]
247	movdqa	xmm2,[320+ebp]
248	movdqa	xmm3,xmm0
249	lea	ebx,[ebp]
250	movdqa	[4+esp],xmm2
251	call	__vpaes_schedule_transform
252	movdqa	xmm7,xmm0
253	test	edi,edi
254	jnz	NEAR L$004schedule_am_decrypting
255	movdqu	[edx],xmm0
256	jmp	NEAR L$005schedule_go
257L$004schedule_am_decrypting:
258	movdqa	xmm1,[256+ecx*1+ebp]
259db	102,15,56,0,217
260	movdqu	[edx],xmm3
261	xor	ecx,48
262L$005schedule_go:
263	cmp	eax,192
264	ja	NEAR L$006schedule_256
265	je	NEAR L$007schedule_192
266L$008schedule_128:
267	mov	eax,10
268L$009loop_schedule_128:
269	call	__vpaes_schedule_round
270	dec	eax
271	jz	NEAR L$010schedule_mangle_last
272	call	__vpaes_schedule_mangle
273	jmp	NEAR L$009loop_schedule_128
274align	16
275L$007schedule_192:
276	movdqu	xmm0,[8+esi]
277	call	__vpaes_schedule_transform
278	movdqa	xmm6,xmm0
279	pxor	xmm4,xmm4
280	movhlps	xmm6,xmm4
281	mov	eax,4
282L$011loop_schedule_192:
283	call	__vpaes_schedule_round
284db	102,15,58,15,198,8
285	call	__vpaes_schedule_mangle
286	call	__vpaes_schedule_192_smear
287	call	__vpaes_schedule_mangle
288	call	__vpaes_schedule_round
289	dec	eax
290	jz	NEAR L$010schedule_mangle_last
291	call	__vpaes_schedule_mangle
292	call	__vpaes_schedule_192_smear
293	jmp	NEAR L$011loop_schedule_192
294align	16
295L$006schedule_256:
296	movdqu	xmm0,[16+esi]
297	call	__vpaes_schedule_transform
298	mov	eax,7
299L$012loop_schedule_256:
300	call	__vpaes_schedule_mangle
301	movdqa	xmm6,xmm0
302	call	__vpaes_schedule_round
303	dec	eax
304	jz	NEAR L$010schedule_mangle_last
305	call	__vpaes_schedule_mangle
306	pshufd	xmm0,xmm0,255
307	movdqa	[20+esp],xmm7
308	movdqa	xmm7,xmm6
309	call	L$_vpaes_schedule_low_round
310	movdqa	xmm7,[20+esp]
311	jmp	NEAR L$012loop_schedule_256
312align	16
313L$010schedule_mangle_last:
314	lea	ebx,[384+ebp]
315	test	edi,edi
316	jnz	NEAR L$013schedule_mangle_last_dec
317	movdqa	xmm1,[256+ecx*1+ebp]
318db	102,15,56,0,193
319	lea	ebx,[352+ebp]
320	add	edx,32
321L$013schedule_mangle_last_dec:
322	add	edx,-16
323	pxor	xmm0,[336+ebp]
324	call	__vpaes_schedule_transform
325	movdqu	[edx],xmm0
326	pxor	xmm0,xmm0
327	pxor	xmm1,xmm1
328	pxor	xmm2,xmm2
329	pxor	xmm3,xmm3
330	pxor	xmm4,xmm4
331	pxor	xmm5,xmm5
332	pxor	xmm6,xmm6
333	pxor	xmm7,xmm7
334	ret
335align	16
336__vpaes_schedule_192_smear:
337	pshufd	xmm1,xmm6,128
338	pshufd	xmm0,xmm7,254
339	pxor	xmm6,xmm1
340	pxor	xmm1,xmm1
341	pxor	xmm6,xmm0
342	movdqa	xmm0,xmm6
343	movhlps	xmm6,xmm1
344	ret
345align	16
346__vpaes_schedule_round:
347	movdqa	xmm2,[8+esp]
348	pxor	xmm1,xmm1
349db	102,15,58,15,202,15
350db	102,15,58,15,210,15
351	pxor	xmm7,xmm1
352	pshufd	xmm0,xmm0,255
353db	102,15,58,15,192,1
354	movdqa	[8+esp],xmm2
355L$_vpaes_schedule_low_round:
356	movdqa	xmm1,xmm7
357	pslldq	xmm7,4
358	pxor	xmm7,xmm1
359	movdqa	xmm1,xmm7
360	pslldq	xmm7,8
361	pxor	xmm7,xmm1
362	pxor	xmm7,[336+ebp]
363	movdqa	xmm4,[ebp-16]
364	movdqa	xmm5,[ebp-48]
365	movdqa	xmm1,xmm4
366	pandn	xmm1,xmm0
367	psrld	xmm1,4
368	pand	xmm0,xmm4
369	movdqa	xmm2,[ebp-32]
370db	102,15,56,0,208
371	pxor	xmm0,xmm1
372	movdqa	xmm3,xmm5
373db	102,15,56,0,217
374	pxor	xmm3,xmm2
375	movdqa	xmm4,xmm5
376db	102,15,56,0,224
377	pxor	xmm4,xmm2
378	movdqa	xmm2,xmm5
379db	102,15,56,0,211
380	pxor	xmm2,xmm0
381	movdqa	xmm3,xmm5
382db	102,15,56,0,220
383	pxor	xmm3,xmm1
384	movdqa	xmm4,[32+ebp]
385db	102,15,56,0,226
386	movdqa	xmm0,[48+ebp]
387db	102,15,56,0,195
388	pxor	xmm0,xmm4
389	pxor	xmm0,xmm7
390	movdqa	xmm7,xmm0
391	ret
392align	16
393__vpaes_schedule_transform:
394	movdqa	xmm2,[ebp-16]
395	movdqa	xmm1,xmm2
396	pandn	xmm1,xmm0
397	psrld	xmm1,4
398	pand	xmm0,xmm2
399	movdqa	xmm2,[ebx]
400db	102,15,56,0,208
401	movdqa	xmm0,[16+ebx]
402db	102,15,56,0,193
403	pxor	xmm0,xmm2
404	ret
405align	16
406__vpaes_schedule_mangle:
407	movdqa	xmm4,xmm0
408	movdqa	xmm5,[128+ebp]
409	test	edi,edi
410	jnz	NEAR L$014schedule_mangle_dec
411	add	edx,16
412	pxor	xmm4,[336+ebp]
413db	102,15,56,0,229
414	movdqa	xmm3,xmm4
415db	102,15,56,0,229
416	pxor	xmm3,xmm4
417db	102,15,56,0,229
418	pxor	xmm3,xmm4
419	jmp	NEAR L$015schedule_mangle_both
420align	16
421L$014schedule_mangle_dec:
422	movdqa	xmm2,[ebp-16]
423	lea	esi,[416+ebp]
424	movdqa	xmm1,xmm2
425	pandn	xmm1,xmm4
426	psrld	xmm1,4
427	pand	xmm4,xmm2
428	movdqa	xmm2,[esi]
429db	102,15,56,0,212
430	movdqa	xmm3,[16+esi]
431db	102,15,56,0,217
432	pxor	xmm3,xmm2
433db	102,15,56,0,221
434	movdqa	xmm2,[32+esi]
435db	102,15,56,0,212
436	pxor	xmm2,xmm3
437	movdqa	xmm3,[48+esi]
438db	102,15,56,0,217
439	pxor	xmm3,xmm2
440db	102,15,56,0,221
441	movdqa	xmm2,[64+esi]
442db	102,15,56,0,212
443	pxor	xmm2,xmm3
444	movdqa	xmm3,[80+esi]
445db	102,15,56,0,217
446	pxor	xmm3,xmm2
447db	102,15,56,0,221
448	movdqa	xmm2,[96+esi]
449db	102,15,56,0,212
450	pxor	xmm2,xmm3
451	movdqa	xmm3,[112+esi]
452db	102,15,56,0,217
453	pxor	xmm3,xmm2
454	add	edx,-16
455L$015schedule_mangle_both:
456	movdqa	xmm1,[256+ecx*1+ebp]
457db	102,15,56,0,217
458	add	ecx,-16
459	and	ecx,48
460	movdqu	[edx],xmm3
461	ret
462global	_vpaes_set_encrypt_key
463align	16
464_vpaes_set_encrypt_key:
465L$_vpaes_set_encrypt_key_begin:
466	push	ebp
467	push	ebx
468	push	esi
469	push	edi
470%ifdef BORINGSSL_DISPATCH_TEST
471	push	ebx
472	push	edx
473	call	L$016pic_for_function_hit
474L$016pic_for_function_hit:
475	pop	ebx
476	lea	ebx,[(_BORINGSSL_function_hit+5-L$016pic_for_function_hit)+ebx]
477	mov	edx,1
478	mov	BYTE [ebx],dl
479	pop	edx
480	pop	ebx
481%endif
482	mov	esi,DWORD [20+esp]
483	lea	ebx,[esp-56]
484	mov	eax,DWORD [24+esp]
485	and	ebx,-16
486	mov	edx,DWORD [28+esp]
487	xchg	ebx,esp
488	mov	DWORD [48+esp],ebx
489	mov	ebx,eax
490	shr	ebx,5
491	add	ebx,5
492	mov	DWORD [240+edx],ebx
493	mov	ecx,48
494	mov	edi,0
495	lea	ebp,[(L$_vpaes_consts+0x30-L$017pic_point)]
496	call	__vpaes_schedule_core
497L$017pic_point:
498	mov	esp,DWORD [48+esp]
499	xor	eax,eax
500	pop	edi
501	pop	esi
502	pop	ebx
503	pop	ebp
504	ret
505global	_vpaes_set_decrypt_key
506align	16
507_vpaes_set_decrypt_key:
508L$_vpaes_set_decrypt_key_begin:
509	push	ebp
510	push	ebx
511	push	esi
512	push	edi
513	mov	esi,DWORD [20+esp]
514	lea	ebx,[esp-56]
515	mov	eax,DWORD [24+esp]
516	and	ebx,-16
517	mov	edx,DWORD [28+esp]
518	xchg	ebx,esp
519	mov	DWORD [48+esp],ebx
520	mov	ebx,eax
521	shr	ebx,5
522	add	ebx,5
523	mov	DWORD [240+edx],ebx
524	shl	ebx,4
525	lea	edx,[16+ebx*1+edx]
526	mov	edi,1
527	mov	ecx,eax
528	shr	ecx,1
529	and	ecx,32
530	xor	ecx,32
531	lea	ebp,[(L$_vpaes_consts+0x30-L$018pic_point)]
532	call	__vpaes_schedule_core
533L$018pic_point:
534	mov	esp,DWORD [48+esp]
535	xor	eax,eax
536	pop	edi
537	pop	esi
538	pop	ebx
539	pop	ebp
540	ret
541global	_vpaes_encrypt
542align	16
543_vpaes_encrypt:
544L$_vpaes_encrypt_begin:
545	push	ebp
546	push	ebx
547	push	esi
548	push	edi
549%ifdef BORINGSSL_DISPATCH_TEST
550	push	ebx
551	push	edx
552	call	L$019pic_for_function_hit
553L$019pic_for_function_hit:
554	pop	ebx
555	lea	ebx,[(_BORINGSSL_function_hit+4-L$019pic_for_function_hit)+ebx]
556	mov	edx,1
557	mov	BYTE [ebx],dl
558	pop	edx
559	pop	ebx
560%endif
561	lea	ebp,[(L$_vpaes_consts+0x30-L$020pic_point)]
562	call	__vpaes_preheat
563L$020pic_point:
564	mov	esi,DWORD [20+esp]
565	lea	ebx,[esp-56]
566	mov	edi,DWORD [24+esp]
567	and	ebx,-16
568	mov	edx,DWORD [28+esp]
569	xchg	ebx,esp
570	mov	DWORD [48+esp],ebx
571	movdqu	xmm0,[esi]
572	call	__vpaes_encrypt_core
573	movdqu	[edi],xmm0
574	mov	esp,DWORD [48+esp]
575	pop	edi
576	pop	esi
577	pop	ebx
578	pop	ebp
579	ret
580global	_vpaes_decrypt
581align	16
582_vpaes_decrypt:
583L$_vpaes_decrypt_begin:
584	push	ebp
585	push	ebx
586	push	esi
587	push	edi
588	lea	ebp,[(L$_vpaes_consts+0x30-L$021pic_point)]
589	call	__vpaes_preheat
590L$021pic_point:
591	mov	esi,DWORD [20+esp]
592	lea	ebx,[esp-56]
593	mov	edi,DWORD [24+esp]
594	and	ebx,-16
595	mov	edx,DWORD [28+esp]
596	xchg	ebx,esp
597	mov	DWORD [48+esp],ebx
598	movdqu	xmm0,[esi]
599	call	__vpaes_decrypt_core
600	movdqu	[edi],xmm0
601	mov	esp,DWORD [48+esp]
602	pop	edi
603	pop	esi
604	pop	ebx
605	pop	ebp
606	ret
607global	_vpaes_cbc_encrypt
608align	16
609_vpaes_cbc_encrypt:
610L$_vpaes_cbc_encrypt_begin:
611	push	ebp
612	push	ebx
613	push	esi
614	push	edi
615	mov	esi,DWORD [20+esp]
616	mov	edi,DWORD [24+esp]
617	mov	eax,DWORD [28+esp]
618	mov	edx,DWORD [32+esp]
619	sub	eax,16
620	jc	NEAR L$022cbc_abort
621	lea	ebx,[esp-56]
622	mov	ebp,DWORD [36+esp]
623	and	ebx,-16
624	mov	ecx,DWORD [40+esp]
625	xchg	ebx,esp
626	movdqu	xmm1,[ebp]
627	sub	edi,esi
628	mov	DWORD [48+esp],ebx
629	mov	DWORD [esp],edi
630	mov	DWORD [4+esp],edx
631	mov	DWORD [8+esp],ebp
632	mov	edi,eax
633	lea	ebp,[(L$_vpaes_consts+0x30-L$023pic_point)]
634	call	__vpaes_preheat
635L$023pic_point:
636	cmp	ecx,0
637	je	NEAR L$024cbc_dec_loop
638	jmp	NEAR L$025cbc_enc_loop
639align	16
640L$025cbc_enc_loop:
641	movdqu	xmm0,[esi]
642	pxor	xmm0,xmm1
643	call	__vpaes_encrypt_core
644	mov	ebx,DWORD [esp]
645	mov	edx,DWORD [4+esp]
646	movdqa	xmm1,xmm0
647	movdqu	[esi*1+ebx],xmm0
648	lea	esi,[16+esi]
649	sub	edi,16
650	jnc	NEAR L$025cbc_enc_loop
651	jmp	NEAR L$026cbc_done
652align	16
653L$024cbc_dec_loop:
654	movdqu	xmm0,[esi]
655	movdqa	[16+esp],xmm1
656	movdqa	[32+esp],xmm0
657	call	__vpaes_decrypt_core
658	mov	ebx,DWORD [esp]
659	mov	edx,DWORD [4+esp]
660	pxor	xmm0,[16+esp]
661	movdqa	xmm1,[32+esp]
662	movdqu	[esi*1+ebx],xmm0
663	lea	esi,[16+esi]
664	sub	edi,16
665	jnc	NEAR L$024cbc_dec_loop
666L$026cbc_done:
667	mov	ebx,DWORD [8+esp]
668	mov	esp,DWORD [48+esp]
669	movdqu	[ebx],xmm1
670L$022cbc_abort:
671	pop	edi
672	pop	esi
673	pop	ebx
674	pop	ebp
675	ret
676%else
677; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
678ret
679%endif
680