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