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