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 ;extern _OPENSSL_ia32cap_P | |
18 global _aesni_encrypt | |
19 align 16 | |
20 _aesni_encrypt: | |
21 L$_aesni_encrypt_begin: | |
22 mov eax,DWORD [4+esp] | |
23 mov edx,DWORD [12+esp] | |
24 movups xmm2,[eax] | |
25 mov ecx,DWORD [240+edx] | |
26 mov eax,DWORD [8+esp] | |
27 movups xmm0,[edx] | |
28 movups xmm1,[16+edx] | |
29 lea edx,[32+edx] | |
30 xorps xmm2,xmm0 | |
31 L$000enc1_loop_1: | |
32 db 102,15,56,220,209 | |
33 dec ecx | |
34 movups xmm1,[edx] | |
35 lea edx,[16+edx] | |
36 jnz NEAR L$000enc1_loop_1 | |
37 db 102,15,56,221,209 | |
38 pxor xmm0,xmm0 | |
39 pxor xmm1,xmm1 | |
40 movups [eax],xmm2 | |
41 pxor xmm2,xmm2 | |
42 ret | |
43 global _aesni_decrypt | |
44 align 16 | |
45 _aesni_decrypt: | |
46 L$_aesni_decrypt_begin: | |
47 mov eax,DWORD [4+esp] | |
48 mov edx,DWORD [12+esp] | |
49 movups xmm2,[eax] | |
50 mov ecx,DWORD [240+edx] | |
51 mov eax,DWORD [8+esp] | |
52 movups xmm0,[edx] | |
53 movups xmm1,[16+edx] | |
54 lea edx,[32+edx] | |
55 xorps xmm2,xmm0 | |
56 L$001dec1_loop_2: | |
57 db 102,15,56,222,209 | |
58 dec ecx | |
59 movups xmm1,[edx] | |
60 lea edx,[16+edx] | |
61 jnz NEAR L$001dec1_loop_2 | |
62 db 102,15,56,223,209 | |
63 pxor xmm0,xmm0 | |
64 pxor xmm1,xmm1 | |
65 movups [eax],xmm2 | |
66 pxor xmm2,xmm2 | |
67 ret | |
68 align 16 | |
69 __aesni_encrypt2: | |
70 movups xmm0,[edx] | |
71 shl ecx,4 | |
72 movups xmm1,[16+edx] | |
73 xorps xmm2,xmm0 | |
74 pxor xmm3,xmm0 | |
75 movups xmm0,[32+edx] | |
76 lea edx,[32+ecx*1+edx] | |
77 neg ecx | |
78 add ecx,16 | |
79 L$002enc2_loop: | |
80 db 102,15,56,220,209 | |
81 db 102,15,56,220,217 | |
82 movups xmm1,[ecx*1+edx] | |
83 add ecx,32 | |
84 db 102,15,56,220,208 | |
85 db 102,15,56,220,216 | |
86 movups xmm0,[ecx*1+edx-16] | |
87 jnz NEAR L$002enc2_loop | |
88 db 102,15,56,220,209 | |
89 db 102,15,56,220,217 | |
90 db 102,15,56,221,208 | |
91 db 102,15,56,221,216 | |
92 ret | |
93 align 16 | |
94 __aesni_decrypt2: | |
95 movups xmm0,[edx] | |
96 shl ecx,4 | |
97 movups xmm1,[16+edx] | |
98 xorps xmm2,xmm0 | |
99 pxor xmm3,xmm0 | |
100 movups xmm0,[32+edx] | |
101 lea edx,[32+ecx*1+edx] | |
102 neg ecx | |
103 add ecx,16 | |
104 L$003dec2_loop: | |
105 db 102,15,56,222,209 | |
106 db 102,15,56,222,217 | |
107 movups xmm1,[ecx*1+edx] | |
108 add ecx,32 | |
109 db 102,15,56,222,208 | |
110 db 102,15,56,222,216 | |
111 movups xmm0,[ecx*1+edx-16] | |
112 jnz NEAR L$003dec2_loop | |
113 db 102,15,56,222,209 | |
114 db 102,15,56,222,217 | |
115 db 102,15,56,223,208 | |
116 db 102,15,56,223,216 | |
117 ret | |
118 align 16 | |
119 __aesni_encrypt3: | |
120 movups xmm0,[edx] | |
121 shl ecx,4 | |
122 movups xmm1,[16+edx] | |
123 xorps xmm2,xmm0 | |
124 pxor xmm3,xmm0 | |
125 pxor xmm4,xmm0 | |
126 movups xmm0,[32+edx] | |
127 lea edx,[32+ecx*1+edx] | |
128 neg ecx | |
129 add ecx,16 | |
130 L$004enc3_loop: | |
131 db 102,15,56,220,209 | |
132 db 102,15,56,220,217 | |
133 db 102,15,56,220,225 | |
134 movups xmm1,[ecx*1+edx] | |
135 add ecx,32 | |
136 db 102,15,56,220,208 | |
137 db 102,15,56,220,216 | |
138 db 102,15,56,220,224 | |
139 movups xmm0,[ecx*1+edx-16] | |
140 jnz NEAR L$004enc3_loop | |
141 db 102,15,56,220,209 | |
142 db 102,15,56,220,217 | |
143 db 102,15,56,220,225 | |
144 db 102,15,56,221,208 | |
145 db 102,15,56,221,216 | |
146 db 102,15,56,221,224 | |
147 ret | |
148 align 16 | |
149 __aesni_decrypt3: | |
150 movups xmm0,[edx] | |
151 shl ecx,4 | |
152 movups xmm1,[16+edx] | |
153 xorps xmm2,xmm0 | |
154 pxor xmm3,xmm0 | |
155 pxor xmm4,xmm0 | |
156 movups xmm0,[32+edx] | |
157 lea edx,[32+ecx*1+edx] | |
158 neg ecx | |
159 add ecx,16 | |
160 L$005dec3_loop: | |
161 db 102,15,56,222,209 | |
162 db 102,15,56,222,217 | |
163 db 102,15,56,222,225 | |
164 movups xmm1,[ecx*1+edx] | |
165 add ecx,32 | |
166 db 102,15,56,222,208 | |
167 db 102,15,56,222,216 | |
168 db 102,15,56,222,224 | |
169 movups xmm0,[ecx*1+edx-16] | |
170 jnz NEAR L$005dec3_loop | |
171 db 102,15,56,222,209 | |
172 db 102,15,56,222,217 | |
173 db 102,15,56,222,225 | |
174 db 102,15,56,223,208 | |
175 db 102,15,56,223,216 | |
176 db 102,15,56,223,224 | |
177 ret | |
178 align 16 | |
179 __aesni_encrypt4: | |
180 movups xmm0,[edx] | |
181 movups xmm1,[16+edx] | |
182 shl ecx,4 | |
183 xorps xmm2,xmm0 | |
184 pxor xmm3,xmm0 | |
185 pxor xmm4,xmm0 | |
186 pxor xmm5,xmm0 | |
187 movups xmm0,[32+edx] | |
188 lea edx,[32+ecx*1+edx] | |
189 neg ecx | |
190 db 15,31,64,0 | |
191 add ecx,16 | |
192 L$006enc4_loop: | |
193 db 102,15,56,220,209 | |
194 db 102,15,56,220,217 | |
195 db 102,15,56,220,225 | |
196 db 102,15,56,220,233 | |
197 movups xmm1,[ecx*1+edx] | |
198 add ecx,32 | |
199 db 102,15,56,220,208 | |
200 db 102,15,56,220,216 | |
201 db 102,15,56,220,224 | |
202 db 102,15,56,220,232 | |
203 movups xmm0,[ecx*1+edx-16] | |
204 jnz NEAR L$006enc4_loop | |
205 db 102,15,56,220,209 | |
206 db 102,15,56,220,217 | |
207 db 102,15,56,220,225 | |
208 db 102,15,56,220,233 | |
209 db 102,15,56,221,208 | |
210 db 102,15,56,221,216 | |
211 db 102,15,56,221,224 | |
212 db 102,15,56,221,232 | |
213 ret | |
214 align 16 | |
215 __aesni_decrypt4: | |
216 movups xmm0,[edx] | |
217 movups xmm1,[16+edx] | |
218 shl ecx,4 | |
219 xorps xmm2,xmm0 | |
220 pxor xmm3,xmm0 | |
221 pxor xmm4,xmm0 | |
222 pxor xmm5,xmm0 | |
223 movups xmm0,[32+edx] | |
224 lea edx,[32+ecx*1+edx] | |
225 neg ecx | |
226 db 15,31,64,0 | |
227 add ecx,16 | |
228 L$007dec4_loop: | |
229 db 102,15,56,222,209 | |
230 db 102,15,56,222,217 | |
231 db 102,15,56,222,225 | |
232 db 102,15,56,222,233 | |
233 movups xmm1,[ecx*1+edx] | |
234 add ecx,32 | |
235 db 102,15,56,222,208 | |
236 db 102,15,56,222,216 | |
237 db 102,15,56,222,224 | |
238 db 102,15,56,222,232 | |
239 movups xmm0,[ecx*1+edx-16] | |
240 jnz NEAR L$007dec4_loop | |
241 db 102,15,56,222,209 | |
242 db 102,15,56,222,217 | |
243 db 102,15,56,222,225 | |
244 db 102,15,56,222,233 | |
245 db 102,15,56,223,208 | |
246 db 102,15,56,223,216 | |
247 db 102,15,56,223,224 | |
248 db 102,15,56,223,232 | |
249 ret | |
250 align 16 | |
251 __aesni_encrypt6: | |
252 movups xmm0,[edx] | |
253 shl ecx,4 | |
254 movups xmm1,[16+edx] | |
255 xorps xmm2,xmm0 | |
256 pxor xmm3,xmm0 | |
257 pxor xmm4,xmm0 | |
258 db 102,15,56,220,209 | |
259 pxor xmm5,xmm0 | |
260 pxor xmm6,xmm0 | |
261 db 102,15,56,220,217 | |
262 lea edx,[32+ecx*1+edx] | |
263 neg ecx | |
264 db 102,15,56,220,225 | |
265 pxor xmm7,xmm0 | |
266 movups xmm0,[ecx*1+edx] | |
267 add ecx,16 | |
268 jmp NEAR L$008_aesni_encrypt6_inner | |
269 align 16 | |
270 L$009enc6_loop: | |
271 db 102,15,56,220,209 | |
272 db 102,15,56,220,217 | |
273 db 102,15,56,220,225 | |
274 L$008_aesni_encrypt6_inner: | |
275 db 102,15,56,220,233 | |
276 db 102,15,56,220,241 | |
277 db 102,15,56,220,249 | |
278 L$_aesni_encrypt6_enter: | |
279 movups xmm1,[ecx*1+edx] | |
280 add ecx,32 | |
281 db 102,15,56,220,208 | |
282 db 102,15,56,220,216 | |
283 db 102,15,56,220,224 | |
284 db 102,15,56,220,232 | |
285 db 102,15,56,220,240 | |
286 db 102,15,56,220,248 | |
287 movups xmm0,[ecx*1+edx-16] | |
288 jnz NEAR L$009enc6_loop | |
289 db 102,15,56,220,209 | |
290 db 102,15,56,220,217 | |
291 db 102,15,56,220,225 | |
292 db 102,15,56,220,233 | |
293 db 102,15,56,220,241 | |
294 db 102,15,56,220,249 | |
295 db 102,15,56,221,208 | |
296 db 102,15,56,221,216 | |
297 db 102,15,56,221,224 | |
298 db 102,15,56,221,232 | |
299 db 102,15,56,221,240 | |
300 db 102,15,56,221,248 | |
301 ret | |
302 align 16 | |
303 __aesni_decrypt6: | |
304 movups xmm0,[edx] | |
305 shl ecx,4 | |
306 movups xmm1,[16+edx] | |
307 xorps xmm2,xmm0 | |
308 pxor xmm3,xmm0 | |
309 pxor xmm4,xmm0 | |
310 db 102,15,56,222,209 | |
311 pxor xmm5,xmm0 | |
312 pxor xmm6,xmm0 | |
313 db 102,15,56,222,217 | |
314 lea edx,[32+ecx*1+edx] | |
315 neg ecx | |
316 db 102,15,56,222,225 | |
317 pxor xmm7,xmm0 | |
318 movups xmm0,[ecx*1+edx] | |
319 add ecx,16 | |
320 jmp NEAR L$010_aesni_decrypt6_inner | |
321 align 16 | |
322 L$011dec6_loop: | |
323 db 102,15,56,222,209 | |
324 db 102,15,56,222,217 | |
325 db 102,15,56,222,225 | |
326 L$010_aesni_decrypt6_inner: | |
327 db 102,15,56,222,233 | |
328 db 102,15,56,222,241 | |
329 db 102,15,56,222,249 | |
330 L$_aesni_decrypt6_enter: | |
331 movups xmm1,[ecx*1+edx] | |
332 add ecx,32 | |
333 db 102,15,56,222,208 | |
334 db 102,15,56,222,216 | |
335 db 102,15,56,222,224 | |
336 db 102,15,56,222,232 | |
337 db 102,15,56,222,240 | |
338 db 102,15,56,222,248 | |
339 movups xmm0,[ecx*1+edx-16] | |
340 jnz NEAR L$011dec6_loop | |
341 db 102,15,56,222,209 | |
342 db 102,15,56,222,217 | |
343 db 102,15,56,222,225 | |
344 db 102,15,56,222,233 | |
345 db 102,15,56,222,241 | |
346 db 102,15,56,222,249 | |
347 db 102,15,56,223,208 | |
348 db 102,15,56,223,216 | |
349 db 102,15,56,223,224 | |
350 db 102,15,56,223,232 | |
351 db 102,15,56,223,240 | |
352 db 102,15,56,223,248 | |
353 ret | |
354 global _aesni_ecb_encrypt | |
355 align 16 | |
356 _aesni_ecb_encrypt: | |
357 L$_aesni_ecb_encrypt_begin: | |
358 push ebp | |
359 push ebx | |
360 push esi | |
361 push edi | |
362 mov esi,DWORD [20+esp] | |
363 mov edi,DWORD [24+esp] | |
364 mov eax,DWORD [28+esp] | |
365 mov edx,DWORD [32+esp] | |
366 mov ebx,DWORD [36+esp] | |
367 and eax,-16 | |
368 jz NEAR L$012ecb_ret | |
369 mov ecx,DWORD [240+edx] | |
370 test ebx,ebx | |
371 jz NEAR L$013ecb_decrypt | |
372 mov ebp,edx | |
373 mov ebx,ecx | |
374 cmp eax,96 | |
375 jb NEAR L$014ecb_enc_tail | |
376 movdqu xmm2,[esi] | |
377 movdqu xmm3,[16+esi] | |
378 movdqu xmm4,[32+esi] | |
379 movdqu xmm5,[48+esi] | |
380 movdqu xmm6,[64+esi] | |
381 movdqu xmm7,[80+esi] | |
382 lea esi,[96+esi] | |
383 sub eax,96 | |
384 jmp NEAR L$015ecb_enc_loop6_enter | |
385 align 16 | |
386 L$016ecb_enc_loop6: | |
387 movups [edi],xmm2 | |
388 movdqu xmm2,[esi] | |
389 movups [16+edi],xmm3 | |
390 movdqu xmm3,[16+esi] | |
391 movups [32+edi],xmm4 | |
392 movdqu xmm4,[32+esi] | |
393 movups [48+edi],xmm5 | |
394 movdqu xmm5,[48+esi] | |
395 movups [64+edi],xmm6 | |
396 movdqu xmm6,[64+esi] | |
397 movups [80+edi],xmm7 | |
398 lea edi,[96+edi] | |
399 movdqu xmm7,[80+esi] | |
400 lea esi,[96+esi] | |
401 L$015ecb_enc_loop6_enter: | |
402 call __aesni_encrypt6 | |
403 mov edx,ebp | |
404 mov ecx,ebx | |
405 sub eax,96 | |
406 jnc NEAR L$016ecb_enc_loop6 | |
407 movups [edi],xmm2 | |
408 movups [16+edi],xmm3 | |
409 movups [32+edi],xmm4 | |
410 movups [48+edi],xmm5 | |
411 movups [64+edi],xmm6 | |
412 movups [80+edi],xmm7 | |
413 lea edi,[96+edi] | |
414 add eax,96 | |
415 jz NEAR L$012ecb_ret | |
416 L$014ecb_enc_tail: | |
417 movups xmm2,[esi] | |
418 cmp eax,32 | |
419 jb NEAR L$017ecb_enc_one | |
420 movups xmm3,[16+esi] | |
421 je NEAR L$018ecb_enc_two | |
422 movups xmm4,[32+esi] | |
423 cmp eax,64 | |
424 jb NEAR L$019ecb_enc_three | |
425 movups xmm5,[48+esi] | |
426 je NEAR L$020ecb_enc_four | |
427 movups xmm6,[64+esi] | |
428 xorps xmm7,xmm7 | |
429 call __aesni_encrypt6 | |
430 movups [edi],xmm2 | |
431 movups [16+edi],xmm3 | |
432 movups [32+edi],xmm4 | |
433 movups [48+edi],xmm5 | |
434 movups [64+edi],xmm6 | |
435 jmp NEAR L$012ecb_ret | |
436 align 16 | |
437 L$017ecb_enc_one: | |
438 movups xmm0,[edx] | |
439 movups xmm1,[16+edx] | |
440 lea edx,[32+edx] | |
441 xorps xmm2,xmm0 | |
442 L$021enc1_loop_3: | |
443 db 102,15,56,220,209 | |
444 dec ecx | |
445 movups xmm1,[edx] | |
446 lea edx,[16+edx] | |
447 jnz NEAR L$021enc1_loop_3 | |
448 db 102,15,56,221,209 | |
449 movups [edi],xmm2 | |
450 jmp NEAR L$012ecb_ret | |
451 align 16 | |
452 L$018ecb_enc_two: | |
453 call __aesni_encrypt2 | |
454 movups [edi],xmm2 | |
455 movups [16+edi],xmm3 | |
456 jmp NEAR L$012ecb_ret | |
457 align 16 | |
458 L$019ecb_enc_three: | |
459 call __aesni_encrypt3 | |
460 movups [edi],xmm2 | |
461 movups [16+edi],xmm3 | |
462 movups [32+edi],xmm4 | |
463 jmp NEAR L$012ecb_ret | |
464 align 16 | |
465 L$020ecb_enc_four: | |
466 call __aesni_encrypt4 | |
467 movups [edi],xmm2 | |
468 movups [16+edi],xmm3 | |
469 movups [32+edi],xmm4 | |
470 movups [48+edi],xmm5 | |
471 jmp NEAR L$012ecb_ret | |
472 align 16 | |
473 L$013ecb_decrypt: | |
474 mov ebp,edx | |
475 mov ebx,ecx | |
476 cmp eax,96 | |
477 jb NEAR L$022ecb_dec_tail | |
478 movdqu xmm2,[esi] | |
479 movdqu xmm3,[16+esi] | |
480 movdqu xmm4,[32+esi] | |
481 movdqu xmm5,[48+esi] | |
482 movdqu xmm6,[64+esi] | |
483 movdqu xmm7,[80+esi] | |
484 lea esi,[96+esi] | |
485 sub eax,96 | |
486 jmp NEAR L$023ecb_dec_loop6_enter | |
487 align 16 | |
488 L$024ecb_dec_loop6: | |
489 movups [edi],xmm2 | |
490 movdqu xmm2,[esi] | |
491 movups [16+edi],xmm3 | |
492 movdqu xmm3,[16+esi] | |
493 movups [32+edi],xmm4 | |
494 movdqu xmm4,[32+esi] | |
495 movups [48+edi],xmm5 | |
496 movdqu xmm5,[48+esi] | |
497 movups [64+edi],xmm6 | |
498 movdqu xmm6,[64+esi] | |
499 movups [80+edi],xmm7 | |
500 lea edi,[96+edi] | |
501 movdqu xmm7,[80+esi] | |
502 lea esi,[96+esi] | |
503 L$023ecb_dec_loop6_enter: | |
504 call __aesni_decrypt6 | |
505 mov edx,ebp | |
506 mov ecx,ebx | |
507 sub eax,96 | |
508 jnc NEAR L$024ecb_dec_loop6 | |
509 movups [edi],xmm2 | |
510 movups [16+edi],xmm3 | |
511 movups [32+edi],xmm4 | |
512 movups [48+edi],xmm5 | |
513 movups [64+edi],xmm6 | |
514 movups [80+edi],xmm7 | |
515 lea edi,[96+edi] | |
516 add eax,96 | |
517 jz NEAR L$012ecb_ret | |
518 L$022ecb_dec_tail: | |
519 movups xmm2,[esi] | |
520 cmp eax,32 | |
521 jb NEAR L$025ecb_dec_one | |
522 movups xmm3,[16+esi] | |
523 je NEAR L$026ecb_dec_two | |
524 movups xmm4,[32+esi] | |
525 cmp eax,64 | |
526 jb NEAR L$027ecb_dec_three | |
527 movups xmm5,[48+esi] | |
528 je NEAR L$028ecb_dec_four | |
529 movups xmm6,[64+esi] | |
530 xorps xmm7,xmm7 | |
531 call __aesni_decrypt6 | |
532 movups [edi],xmm2 | |
533 movups [16+edi],xmm3 | |
534 movups [32+edi],xmm4 | |
535 movups [48+edi],xmm5 | |
536 movups [64+edi],xmm6 | |
537 jmp NEAR L$012ecb_ret | |
538 align 16 | |
539 L$025ecb_dec_one: | |
540 movups xmm0,[edx] | |
541 movups xmm1,[16+edx] | |
542 lea edx,[32+edx] | |
543 xorps xmm2,xmm0 | |
544 L$029dec1_loop_4: | |
545 db 102,15,56,222,209 | |
546 dec ecx | |
547 movups xmm1,[edx] | |
548 lea edx,[16+edx] | |
549 jnz NEAR L$029dec1_loop_4 | |
550 db 102,15,56,223,209 | |
551 movups [edi],xmm2 | |
552 jmp NEAR L$012ecb_ret | |
553 align 16 | |
554 L$026ecb_dec_two: | |
555 call __aesni_decrypt2 | |
556 movups [edi],xmm2 | |
557 movups [16+edi],xmm3 | |
558 jmp NEAR L$012ecb_ret | |
559 align 16 | |
560 L$027ecb_dec_three: | |
561 call __aesni_decrypt3 | |
562 movups [edi],xmm2 | |
563 movups [16+edi],xmm3 | |
564 movups [32+edi],xmm4 | |
565 jmp NEAR L$012ecb_ret | |
566 align 16 | |
567 L$028ecb_dec_four: | |
568 call __aesni_decrypt4 | |
569 movups [edi],xmm2 | |
570 movups [16+edi],xmm3 | |
571 movups [32+edi],xmm4 | |
572 movups [48+edi],xmm5 | |
573 L$012ecb_ret: | |
574 pxor xmm0,xmm0 | |
575 pxor xmm1,xmm1 | |
576 pxor xmm2,xmm2 | |
577 pxor xmm3,xmm3 | |
578 pxor xmm4,xmm4 | |
579 pxor xmm5,xmm5 | |
580 pxor xmm6,xmm6 | |
581 pxor xmm7,xmm7 | |
582 pop edi | |
583 pop esi | |
584 pop ebx | |
585 pop ebp | |
586 ret | |
587 global _aesni_ccm64_encrypt_blocks | |
588 align 16 | |
589 _aesni_ccm64_encrypt_blocks: | |
590 L$_aesni_ccm64_encrypt_blocks_begin: | |
591 push ebp | |
592 push ebx | |
593 push esi | |
594 push edi | |
595 mov esi,DWORD [20+esp] | |
596 mov edi,DWORD [24+esp] | |
597 mov eax,DWORD [28+esp] | |
598 mov edx,DWORD [32+esp] | |
599 mov ebx,DWORD [36+esp] | |
600 mov ecx,DWORD [40+esp] | |
601 mov ebp,esp | |
602 sub esp,60 | |
603 and esp,-16 | |
604 mov DWORD [48+esp],ebp | |
605 movdqu xmm7,[ebx] | |
606 movdqu xmm3,[ecx] | |
607 mov ecx,DWORD [240+edx] | |
608 mov DWORD [esp],202182159 | |
609 mov DWORD [4+esp],134810123 | |
610 mov DWORD [8+esp],67438087 | |
611 mov DWORD [12+esp],66051 | |
612 mov ebx,1 | |
613 xor ebp,ebp | |
614 mov DWORD [16+esp],ebx | |
615 mov DWORD [20+esp],ebp | |
616 mov DWORD [24+esp],ebp | |
617 mov DWORD [28+esp],ebp | |
618 shl ecx,4 | |
619 mov ebx,16 | |
620 lea ebp,[edx] | |
621 movdqa xmm5,[esp] | |
622 movdqa xmm2,xmm7 | |
623 lea edx,[32+ecx*1+edx] | |
624 sub ebx,ecx | |
625 db 102,15,56,0,253 | |
626 L$030ccm64_enc_outer: | |
627 movups xmm0,[ebp] | |
628 mov ecx,ebx | |
629 movups xmm6,[esi] | |
630 xorps xmm2,xmm0 | |
631 movups xmm1,[16+ebp] | |
632 xorps xmm0,xmm6 | |
633 xorps xmm3,xmm0 | |
634 movups xmm0,[32+ebp] | |
635 L$031ccm64_enc2_loop: | |
636 db 102,15,56,220,209 | |
637 db 102,15,56,220,217 | |
638 movups xmm1,[ecx*1+edx] | |
639 add ecx,32 | |
640 db 102,15,56,220,208 | |
641 db 102,15,56,220,216 | |
642 movups xmm0,[ecx*1+edx-16] | |
643 jnz NEAR L$031ccm64_enc2_loop | |
644 db 102,15,56,220,209 | |
645 db 102,15,56,220,217 | |
646 paddq xmm7,[16+esp] | |
647 dec eax | |
648 db 102,15,56,221,208 | |
649 db 102,15,56,221,216 | |
650 lea esi,[16+esi] | |
651 xorps xmm6,xmm2 | |
652 movdqa xmm2,xmm7 | |
653 movups [edi],xmm6 | |
654 db 102,15,56,0,213 | |
655 lea edi,[16+edi] | |
656 jnz NEAR L$030ccm64_enc_outer | |
657 mov esp,DWORD [48+esp] | |
658 mov edi,DWORD [40+esp] | |
659 movups [edi],xmm3 | |
660 pxor xmm0,xmm0 | |
661 pxor xmm1,xmm1 | |
662 pxor xmm2,xmm2 | |
663 pxor xmm3,xmm3 | |
664 pxor xmm4,xmm4 | |
665 pxor xmm5,xmm5 | |
666 pxor xmm6,xmm6 | |
667 pxor xmm7,xmm7 | |
668 pop edi | |
669 pop esi | |
670 pop ebx | |
671 pop ebp | |
672 ret | |
673 global _aesni_ccm64_decrypt_blocks | |
674 align 16 | |
675 _aesni_ccm64_decrypt_blocks: | |
676 L$_aesni_ccm64_decrypt_blocks_begin: | |
677 push ebp | |
678 push ebx | |
679 push esi | |
680 push edi | |
681 mov esi,DWORD [20+esp] | |
682 mov edi,DWORD [24+esp] | |
683 mov eax,DWORD [28+esp] | |
684 mov edx,DWORD [32+esp] | |
685 mov ebx,DWORD [36+esp] | |
686 mov ecx,DWORD [40+esp] | |
687 mov ebp,esp | |
688 sub esp,60 | |
689 and esp,-16 | |
690 mov DWORD [48+esp],ebp | |
691 movdqu xmm7,[ebx] | |
692 movdqu xmm3,[ecx] | |
693 mov ecx,DWORD [240+edx] | |
694 mov DWORD [esp],202182159 | |
695 mov DWORD [4+esp],134810123 | |
696 mov DWORD [8+esp],67438087 | |
697 mov DWORD [12+esp],66051 | |
698 mov ebx,1 | |
699 xor ebp,ebp | |
700 mov DWORD [16+esp],ebx | |
701 mov DWORD [20+esp],ebp | |
702 mov DWORD [24+esp],ebp | |
703 mov DWORD [28+esp],ebp | |
704 movdqa xmm5,[esp] | |
705 movdqa xmm2,xmm7 | |
706 mov ebp,edx | |
707 mov ebx,ecx | |
708 db 102,15,56,0,253 | |
709 movups xmm0,[edx] | |
710 movups xmm1,[16+edx] | |
711 lea edx,[32+edx] | |
712 xorps xmm2,xmm0 | |
713 L$032enc1_loop_5: | |
714 db 102,15,56,220,209 | |
715 dec ecx | |
716 movups xmm1,[edx] | |
717 lea edx,[16+edx] | |
718 jnz NEAR L$032enc1_loop_5 | |
719 db 102,15,56,221,209 | |
720 shl ebx,4 | |
721 mov ecx,16 | |
722 movups xmm6,[esi] | |
723 paddq xmm7,[16+esp] | |
724 lea esi,[16+esi] | |
725 sub ecx,ebx | |
726 lea edx,[32+ebx*1+ebp] | |
727 mov ebx,ecx | |
728 jmp NEAR L$033ccm64_dec_outer | |
729 align 16 | |
730 L$033ccm64_dec_outer: | |
731 xorps xmm6,xmm2 | |
732 movdqa xmm2,xmm7 | |
733 movups [edi],xmm6 | |
734 lea edi,[16+edi] | |
735 db 102,15,56,0,213 | |
736 sub eax,1 | |
737 jz NEAR L$034ccm64_dec_break | |
738 movups xmm0,[ebp] | |
739 mov ecx,ebx | |
740 movups xmm1,[16+ebp] | |
741 xorps xmm6,xmm0 | |
742 xorps xmm2,xmm0 | |
743 xorps xmm3,xmm6 | |
744 movups xmm0,[32+ebp] | |
745 L$035ccm64_dec2_loop: | |
746 db 102,15,56,220,209 | |
747 db 102,15,56,220,217 | |
748 movups xmm1,[ecx*1+edx] | |
749 add ecx,32 | |
750 db 102,15,56,220,208 | |
751 db 102,15,56,220,216 | |
752 movups xmm0,[ecx*1+edx-16] | |
753 jnz NEAR L$035ccm64_dec2_loop | |
754 movups xmm6,[esi] | |
755 paddq xmm7,[16+esp] | |
756 db 102,15,56,220,209 | |
757 db 102,15,56,220,217 | |
758 db 102,15,56,221,208 | |
759 db 102,15,56,221,216 | |
760 lea esi,[16+esi] | |
761 jmp NEAR L$033ccm64_dec_outer | |
762 align 16 | |
763 L$034ccm64_dec_break: | |
764 mov ecx,DWORD [240+ebp] | |
765 mov edx,ebp | |
766 movups xmm0,[edx] | |
767 movups xmm1,[16+edx] | |
768 xorps xmm6,xmm0 | |
769 lea edx,[32+edx] | |
770 xorps xmm3,xmm6 | |
771 L$036enc1_loop_6: | |
772 db 102,15,56,220,217 | |
773 dec ecx | |
774 movups xmm1,[edx] | |
775 lea edx,[16+edx] | |
776 jnz NEAR L$036enc1_loop_6 | |
777 db 102,15,56,221,217 | |
778 mov esp,DWORD [48+esp] | |
779 mov edi,DWORD [40+esp] | |
780 movups [edi],xmm3 | |
781 pxor xmm0,xmm0 | |
782 pxor xmm1,xmm1 | |
783 pxor xmm2,xmm2 | |
784 pxor xmm3,xmm3 | |
785 pxor xmm4,xmm4 | |
786 pxor xmm5,xmm5 | |
787 pxor xmm6,xmm6 | |
788 pxor xmm7,xmm7 | |
789 pop edi | |
790 pop esi | |
791 pop ebx | |
792 pop ebp | |
793 ret | |
794 global _aesni_ctr32_encrypt_blocks | |
795 align 16 | |
796 _aesni_ctr32_encrypt_blocks: | |
797 L$_aesni_ctr32_encrypt_blocks_begin: | |
798 push ebp | |
799 push ebx | |
800 push esi | |
801 push edi | |
802 mov esi,DWORD [20+esp] | |
803 mov edi,DWORD [24+esp] | |
804 mov eax,DWORD [28+esp] | |
805 mov edx,DWORD [32+esp] | |
806 mov ebx,DWORD [36+esp] | |
807 mov ebp,esp | |
808 sub esp,88 | |
809 and esp,-16 | |
810 mov DWORD [80+esp],ebp | |
811 cmp eax,1 | |
812 je NEAR L$037ctr32_one_shortcut | |
813 movdqu xmm7,[ebx] | |
814 mov DWORD [esp],202182159 | |
815 mov DWORD [4+esp],134810123 | |
816 mov DWORD [8+esp],67438087 | |
817 mov DWORD [12+esp],66051 | |
818 mov ecx,6 | |
819 xor ebp,ebp | |
820 mov DWORD [16+esp],ecx | |
821 mov DWORD [20+esp],ecx | |
822 mov DWORD [24+esp],ecx | |
823 mov DWORD [28+esp],ebp | |
824 db 102,15,58,22,251,3 | |
825 db 102,15,58,34,253,3 | |
826 mov ecx,DWORD [240+edx] | |
827 bswap ebx | |
828 pxor xmm0,xmm0 | |
829 pxor xmm1,xmm1 | |
830 movdqa xmm2,[esp] | |
831 db 102,15,58,34,195,0 | |
832 lea ebp,[3+ebx] | |
833 db 102,15,58,34,205,0 | |
834 inc ebx | |
835 db 102,15,58,34,195,1 | |
836 inc ebp | |
837 db 102,15,58,34,205,1 | |
838 inc ebx | |
839 db 102,15,58,34,195,2 | |
840 inc ebp | |
841 db 102,15,58,34,205,2 | |
842 movdqa [48+esp],xmm0 | |
843 db 102,15,56,0,194 | |
844 movdqu xmm6,[edx] | |
845 movdqa [64+esp],xmm1 | |
846 db 102,15,56,0,202 | |
847 pshufd xmm2,xmm0,192 | |
848 pshufd xmm3,xmm0,128 | |
849 cmp eax,6 | |
850 jb NEAR L$038ctr32_tail | |
851 pxor xmm7,xmm6 | |
852 shl ecx,4 | |
853 mov ebx,16 | |
854 movdqa [32+esp],xmm7 | |
855 mov ebp,edx | |
856 sub ebx,ecx | |
857 lea edx,[32+ecx*1+edx] | |
858 sub eax,6 | |
859 jmp NEAR L$039ctr32_loop6 | |
860 align 16 | |
861 L$039ctr32_loop6: | |
862 pshufd xmm4,xmm0,64 | |
863 movdqa xmm0,[32+esp] | |
864 pshufd xmm5,xmm1,192 | |
865 pxor xmm2,xmm0 | |
866 pshufd xmm6,xmm1,128 | |
867 pxor xmm3,xmm0 | |
868 pshufd xmm7,xmm1,64 | |
869 movups xmm1,[16+ebp] | |
870 pxor xmm4,xmm0 | |
871 pxor xmm5,xmm0 | |
872 db 102,15,56,220,209 | |
873 pxor xmm6,xmm0 | |
874 pxor xmm7,xmm0 | |
875 db 102,15,56,220,217 | |
876 movups xmm0,[32+ebp] | |
877 mov ecx,ebx | |
878 db 102,15,56,220,225 | |
879 db 102,15,56,220,233 | |
880 db 102,15,56,220,241 | |
881 db 102,15,56,220,249 | |
882 call L$_aesni_encrypt6_enter | |
883 movups xmm1,[esi] | |
884 movups xmm0,[16+esi] | |
885 xorps xmm2,xmm1 | |
886 movups xmm1,[32+esi] | |
887 xorps xmm3,xmm0 | |
888 movups [edi],xmm2 | |
889 movdqa xmm0,[16+esp] | |
890 xorps xmm4,xmm1 | |
891 movdqa xmm1,[64+esp] | |
892 movups [16+edi],xmm3 | |
893 movups [32+edi],xmm4 | |
894 paddd xmm1,xmm0 | |
895 paddd xmm0,[48+esp] | |
896 movdqa xmm2,[esp] | |
897 movups xmm3,[48+esi] | |
898 movups xmm4,[64+esi] | |
899 xorps xmm5,xmm3 | |
900 movups xmm3,[80+esi] | |
901 lea esi,[96+esi] | |
902 movdqa [48+esp],xmm0 | |
903 db 102,15,56,0,194 | |
904 xorps xmm6,xmm4 | |
905 movups [48+edi],xmm5 | |
906 xorps xmm7,xmm3 | |
907 movdqa [64+esp],xmm1 | |
908 db 102,15,56,0,202 | |
909 movups [64+edi],xmm6 | |
910 pshufd xmm2,xmm0,192 | |
911 movups [80+edi],xmm7 | |
912 lea edi,[96+edi] | |
913 pshufd xmm3,xmm0,128 | |
914 sub eax,6 | |
915 jnc NEAR L$039ctr32_loop6 | |
916 add eax,6 | |
917 jz NEAR L$040ctr32_ret | |
918 movdqu xmm7,[ebp] | |
919 mov edx,ebp | |
920 pxor xmm7,[32+esp] | |
921 mov ecx,DWORD [240+ebp] | |
922 L$038ctr32_tail: | |
923 por xmm2,xmm7 | |
924 cmp eax,2 | |
925 jb NEAR L$041ctr32_one | |
926 pshufd xmm4,xmm0,64 | |
927 por xmm3,xmm7 | |
928 je NEAR L$042ctr32_two | |
929 pshufd xmm5,xmm1,192 | |
930 por xmm4,xmm7 | |
931 cmp eax,4 | |
932 jb NEAR L$043ctr32_three | |
933 pshufd xmm6,xmm1,128 | |
934 por xmm5,xmm7 | |
935 je NEAR L$044ctr32_four | |
936 por xmm6,xmm7 | |
937 call __aesni_encrypt6 | |
938 movups xmm1,[esi] | |
939 movups xmm0,[16+esi] | |
940 xorps xmm2,xmm1 | |
941 movups xmm1,[32+esi] | |
942 xorps xmm3,xmm0 | |
943 movups xmm0,[48+esi] | |
944 xorps xmm4,xmm1 | |
945 movups xmm1,[64+esi] | |
946 xorps xmm5,xmm0 | |
947 movups [edi],xmm2 | |
948 xorps xmm6,xmm1 | |
949 movups [16+edi],xmm3 | |
950 movups [32+edi],xmm4 | |
951 movups [48+edi],xmm5 | |
952 movups [64+edi],xmm6 | |
953 jmp NEAR L$040ctr32_ret | |
954 align 16 | |
955 L$037ctr32_one_shortcut: | |
956 movups xmm2,[ebx] | |
957 mov ecx,DWORD [240+edx] | |
958 L$041ctr32_one: | |
959 movups xmm0,[edx] | |
960 movups xmm1,[16+edx] | |
961 lea edx,[32+edx] | |
962 xorps xmm2,xmm0 | |
963 L$045enc1_loop_7: | |
964 db 102,15,56,220,209 | |
965 dec ecx | |
966 movups xmm1,[edx] | |
967 lea edx,[16+edx] | |
968 jnz NEAR L$045enc1_loop_7 | |
969 db 102,15,56,221,209 | |
970 movups xmm6,[esi] | |
971 xorps xmm6,xmm2 | |
972 movups [edi],xmm6 | |
973 jmp NEAR L$040ctr32_ret | |
974 align 16 | |
975 L$042ctr32_two: | |
976 call __aesni_encrypt2 | |
977 movups xmm5,[esi] | |
978 movups xmm6,[16+esi] | |
979 xorps xmm2,xmm5 | |
980 xorps xmm3,xmm6 | |
981 movups [edi],xmm2 | |
982 movups [16+edi],xmm3 | |
983 jmp NEAR L$040ctr32_ret | |
984 align 16 | |
985 L$043ctr32_three: | |
986 call __aesni_encrypt3 | |
987 movups xmm5,[esi] | |
988 movups xmm6,[16+esi] | |
989 xorps xmm2,xmm5 | |
990 movups xmm7,[32+esi] | |
991 xorps xmm3,xmm6 | |
992 movups [edi],xmm2 | |
993 xorps xmm4,xmm7 | |
994 movups [16+edi],xmm3 | |
995 movups [32+edi],xmm4 | |
996 jmp NEAR L$040ctr32_ret | |
997 align 16 | |
998 L$044ctr32_four: | |
999 call __aesni_encrypt4 | |
1000 movups xmm6,[esi] | |
1001 movups xmm7,[16+esi] | |
1002 movups xmm1,[32+esi] | |
1003 xorps xmm2,xmm6 | |
1004 movups xmm0,[48+esi] | |
1005 xorps xmm3,xmm7 | |
1006 movups [edi],xmm2 | |
1007 xorps xmm4,xmm1 | |
1008 movups [16+edi],xmm3 | |
1009 xorps xmm5,xmm0 | |
1010 movups [32+edi],xmm4 | |
1011 movups [48+edi],xmm5 | |
1012 L$040ctr32_ret: | |
1013 pxor xmm0,xmm0 | |
1014 pxor xmm1,xmm1 | |
1015 pxor xmm2,xmm2 | |
1016 pxor xmm3,xmm3 | |
1017 pxor xmm4,xmm4 | |
1018 movdqa [32+esp],xmm0 | |
1019 pxor xmm5,xmm5 | |
1020 movdqa [48+esp],xmm0 | |
1021 pxor xmm6,xmm6 | |
1022 movdqa [64+esp],xmm0 | |
1023 pxor xmm7,xmm7 | |
1024 mov esp,DWORD [80+esp] | |
1025 pop edi | |
1026 pop esi | |
1027 pop ebx | |
1028 pop ebp | |
1029 ret | |
1030 global _aesni_xts_encrypt | |
1031 align 16 | |
1032 _aesni_xts_encrypt: | |
1033 L$_aesni_xts_encrypt_begin: | |
1034 push ebp | |
1035 push ebx | |
1036 push esi | |
1037 push edi | |
1038 mov edx,DWORD [36+esp] | |
1039 mov esi,DWORD [40+esp] | |
1040 mov ecx,DWORD [240+edx] | |
1041 movups xmm2,[esi] | |
1042 movups xmm0,[edx] | |
1043 movups xmm1,[16+edx] | |
1044 lea edx,[32+edx] | |
1045 xorps xmm2,xmm0 | |
1046 L$046enc1_loop_8: | |
1047 db 102,15,56,220,209 | |
1048 dec ecx | |
1049 movups xmm1,[edx] | |
1050 lea edx,[16+edx] | |
1051 jnz NEAR L$046enc1_loop_8 | |
1052 db 102,15,56,221,209 | |
1053 mov esi,DWORD [20+esp] | |
1054 mov edi,DWORD [24+esp] | |
1055 mov eax,DWORD [28+esp] | |
1056 mov edx,DWORD [32+esp] | |
1057 mov ebp,esp | |
1058 sub esp,120 | |
1059 mov ecx,DWORD [240+edx] | |
1060 and esp,-16 | |
1061 mov DWORD [96+esp],135 | |
1062 mov DWORD [100+esp],0 | |
1063 mov DWORD [104+esp],1 | |
1064 mov DWORD [108+esp],0 | |
1065 mov DWORD [112+esp],eax | |
1066 mov DWORD [116+esp],ebp | |
1067 movdqa xmm1,xmm2 | |
1068 pxor xmm0,xmm0 | |
1069 movdqa xmm3,[96+esp] | |
1070 pcmpgtd xmm0,xmm1 | |
1071 and eax,-16 | |
1072 mov ebp,edx | |
1073 mov ebx,ecx | |
1074 sub eax,96 | |
1075 jc NEAR L$047xts_enc_short | |
1076 shl ecx,4 | |
1077 mov ebx,16 | |
1078 sub ebx,ecx | |
1079 lea edx,[32+ecx*1+edx] | |
1080 jmp NEAR L$048xts_enc_loop6 | |
1081 align 16 | |
1082 L$048xts_enc_loop6: | |
1083 pshufd xmm2,xmm0,19 | |
1084 pxor xmm0,xmm0 | |
1085 movdqa [esp],xmm1 | |
1086 paddq xmm1,xmm1 | |
1087 pand xmm2,xmm3 | |
1088 pcmpgtd xmm0,xmm1 | |
1089 pxor xmm1,xmm2 | |
1090 pshufd xmm2,xmm0,19 | |
1091 pxor xmm0,xmm0 | |
1092 movdqa [16+esp],xmm1 | |
1093 paddq xmm1,xmm1 | |
1094 pand xmm2,xmm3 | |
1095 pcmpgtd xmm0,xmm1 | |
1096 pxor xmm1,xmm2 | |
1097 pshufd xmm2,xmm0,19 | |
1098 pxor xmm0,xmm0 | |
1099 movdqa [32+esp],xmm1 | |
1100 paddq xmm1,xmm1 | |
1101 pand xmm2,xmm3 | |
1102 pcmpgtd xmm0,xmm1 | |
1103 pxor xmm1,xmm2 | |
1104 pshufd xmm2,xmm0,19 | |
1105 pxor xmm0,xmm0 | |
1106 movdqa [48+esp],xmm1 | |
1107 paddq xmm1,xmm1 | |
1108 pand xmm2,xmm3 | |
1109 pcmpgtd xmm0,xmm1 | |
1110 pxor xmm1,xmm2 | |
1111 pshufd xmm7,xmm0,19 | |
1112 movdqa [64+esp],xmm1 | |
1113 paddq xmm1,xmm1 | |
1114 movups xmm0,[ebp] | |
1115 pand xmm7,xmm3 | |
1116 movups xmm2,[esi] | |
1117 pxor xmm7,xmm1 | |
1118 mov ecx,ebx | |
1119 movdqu xmm3,[16+esi] | |
1120 xorps xmm2,xmm0 | |
1121 movdqu xmm4,[32+esi] | |
1122 pxor xmm3,xmm0 | |
1123 movdqu xmm5,[48+esi] | |
1124 pxor xmm4,xmm0 | |
1125 movdqu xmm6,[64+esi] | |
1126 pxor xmm5,xmm0 | |
1127 movdqu xmm1,[80+esi] | |
1128 pxor xmm6,xmm0 | |
1129 lea esi,[96+esi] | |
1130 pxor xmm2,[esp] | |
1131 movdqa [80+esp],xmm7 | |
1132 pxor xmm7,xmm1 | |
1133 movups xmm1,[16+ebp] | |
1134 pxor xmm3,[16+esp] | |
1135 pxor xmm4,[32+esp] | |
1136 db 102,15,56,220,209 | |
1137 pxor xmm5,[48+esp] | |
1138 pxor xmm6,[64+esp] | |
1139 db 102,15,56,220,217 | |
1140 pxor xmm7,xmm0 | |
1141 movups xmm0,[32+ebp] | |
1142 db 102,15,56,220,225 | |
1143 db 102,15,56,220,233 | |
1144 db 102,15,56,220,241 | |
1145 db 102,15,56,220,249 | |
1146 call L$_aesni_encrypt6_enter | |
1147 movdqa xmm1,[80+esp] | |
1148 pxor xmm0,xmm0 | |
1149 xorps xmm2,[esp] | |
1150 pcmpgtd xmm0,xmm1 | |
1151 xorps xmm3,[16+esp] | |
1152 movups [edi],xmm2 | |
1153 xorps xmm4,[32+esp] | |
1154 movups [16+edi],xmm3 | |
1155 xorps xmm5,[48+esp] | |
1156 movups [32+edi],xmm4 | |
1157 xorps xmm6,[64+esp] | |
1158 movups [48+edi],xmm5 | |
1159 xorps xmm7,xmm1 | |
1160 movups [64+edi],xmm6 | |
1161 pshufd xmm2,xmm0,19 | |
1162 movups [80+edi],xmm7 | |
1163 lea edi,[96+edi] | |
1164 movdqa xmm3,[96+esp] | |
1165 pxor xmm0,xmm0 | |
1166 paddq xmm1,xmm1 | |
1167 pand xmm2,xmm3 | |
1168 pcmpgtd xmm0,xmm1 | |
1169 pxor xmm1,xmm2 | |
1170 sub eax,96 | |
1171 jnc NEAR L$048xts_enc_loop6 | |
1172 mov ecx,DWORD [240+ebp] | |
1173 mov edx,ebp | |
1174 mov ebx,ecx | |
1175 L$047xts_enc_short: | |
1176 add eax,96 | |
1177 jz NEAR L$049xts_enc_done6x | |
1178 movdqa xmm5,xmm1 | |
1179 cmp eax,32 | |
1180 jb NEAR L$050xts_enc_one | |
1181 pshufd xmm2,xmm0,19 | |
1182 pxor xmm0,xmm0 | |
1183 paddq xmm1,xmm1 | |
1184 pand xmm2,xmm3 | |
1185 pcmpgtd xmm0,xmm1 | |
1186 pxor xmm1,xmm2 | |
1187 je NEAR L$051xts_enc_two | |
1188 pshufd xmm2,xmm0,19 | |
1189 pxor xmm0,xmm0 | |
1190 movdqa xmm6,xmm1 | |
1191 paddq xmm1,xmm1 | |
1192 pand xmm2,xmm3 | |
1193 pcmpgtd xmm0,xmm1 | |
1194 pxor xmm1,xmm2 | |
1195 cmp eax,64 | |
1196 jb NEAR L$052xts_enc_three | |
1197 pshufd xmm2,xmm0,19 | |
1198 pxor xmm0,xmm0 | |
1199 movdqa xmm7,xmm1 | |
1200 paddq xmm1,xmm1 | |
1201 pand xmm2,xmm3 | |
1202 pcmpgtd xmm0,xmm1 | |
1203 pxor xmm1,xmm2 | |
1204 movdqa [esp],xmm5 | |
1205 movdqa [16+esp],xmm6 | |
1206 je NEAR L$053xts_enc_four | |
1207 movdqa [32+esp],xmm7 | |
1208 pshufd xmm7,xmm0,19 | |
1209 movdqa [48+esp],xmm1 | |
1210 paddq xmm1,xmm1 | |
1211 pand xmm7,xmm3 | |
1212 pxor xmm7,xmm1 | |
1213 movdqu xmm2,[esi] | |
1214 movdqu xmm3,[16+esi] | |
1215 movdqu xmm4,[32+esi] | |
1216 pxor xmm2,[esp] | |
1217 movdqu xmm5,[48+esi] | |
1218 pxor xmm3,[16+esp] | |
1219 movdqu xmm6,[64+esi] | |
1220 pxor xmm4,[32+esp] | |
1221 lea esi,[80+esi] | |
1222 pxor xmm5,[48+esp] | |
1223 movdqa [64+esp],xmm7 | |
1224 pxor xmm6,xmm7 | |
1225 call __aesni_encrypt6 | |
1226 movaps xmm1,[64+esp] | |
1227 xorps xmm2,[esp] | |
1228 xorps xmm3,[16+esp] | |
1229 xorps xmm4,[32+esp] | |
1230 movups [edi],xmm2 | |
1231 xorps xmm5,[48+esp] | |
1232 movups [16+edi],xmm3 | |
1233 xorps xmm6,xmm1 | |
1234 movups [32+edi],xmm4 | |
1235 movups [48+edi],xmm5 | |
1236 movups [64+edi],xmm6 | |
1237 lea edi,[80+edi] | |
1238 jmp NEAR L$054xts_enc_done | |
1239 align 16 | |
1240 L$050xts_enc_one: | |
1241 movups xmm2,[esi] | |
1242 lea esi,[16+esi] | |
1243 xorps xmm2,xmm5 | |
1244 movups xmm0,[edx] | |
1245 movups xmm1,[16+edx] | |
1246 lea edx,[32+edx] | |
1247 xorps xmm2,xmm0 | |
1248 L$055enc1_loop_9: | |
1249 db 102,15,56,220,209 | |
1250 dec ecx | |
1251 movups xmm1,[edx] | |
1252 lea edx,[16+edx] | |
1253 jnz NEAR L$055enc1_loop_9 | |
1254 db 102,15,56,221,209 | |
1255 xorps xmm2,xmm5 | |
1256 movups [edi],xmm2 | |
1257 lea edi,[16+edi] | |
1258 movdqa xmm1,xmm5 | |
1259 jmp NEAR L$054xts_enc_done | |
1260 align 16 | |
1261 L$051xts_enc_two: | |
1262 movaps xmm6,xmm1 | |
1263 movups xmm2,[esi] | |
1264 movups xmm3,[16+esi] | |
1265 lea esi,[32+esi] | |
1266 xorps xmm2,xmm5 | |
1267 xorps xmm3,xmm6 | |
1268 call __aesni_encrypt2 | |
1269 xorps xmm2,xmm5 | |
1270 xorps xmm3,xmm6 | |
1271 movups [edi],xmm2 | |
1272 movups [16+edi],xmm3 | |
1273 lea edi,[32+edi] | |
1274 movdqa xmm1,xmm6 | |
1275 jmp NEAR L$054xts_enc_done | |
1276 align 16 | |
1277 L$052xts_enc_three: | |
1278 movaps xmm7,xmm1 | |
1279 movups xmm2,[esi] | |
1280 movups xmm3,[16+esi] | |
1281 movups xmm4,[32+esi] | |
1282 lea esi,[48+esi] | |
1283 xorps xmm2,xmm5 | |
1284 xorps xmm3,xmm6 | |
1285 xorps xmm4,xmm7 | |
1286 call __aesni_encrypt3 | |
1287 xorps xmm2,xmm5 | |
1288 xorps xmm3,xmm6 | |
1289 xorps xmm4,xmm7 | |
1290 movups [edi],xmm2 | |
1291 movups [16+edi],xmm3 | |
1292 movups [32+edi],xmm4 | |
1293 lea edi,[48+edi] | |
1294 movdqa xmm1,xmm7 | |
1295 jmp NEAR L$054xts_enc_done | |
1296 align 16 | |
1297 L$053xts_enc_four: | |
1298 movaps xmm6,xmm1 | |
1299 movups xmm2,[esi] | |
1300 movups xmm3,[16+esi] | |
1301 movups xmm4,[32+esi] | |
1302 xorps xmm2,[esp] | |
1303 movups xmm5,[48+esi] | |
1304 lea esi,[64+esi] | |
1305 xorps xmm3,[16+esp] | |
1306 xorps xmm4,xmm7 | |
1307 xorps xmm5,xmm6 | |
1308 call __aesni_encrypt4 | |
1309 xorps xmm2,[esp] | |
1310 xorps xmm3,[16+esp] | |
1311 xorps xmm4,xmm7 | |
1312 movups [edi],xmm2 | |
1313 xorps xmm5,xmm6 | |
1314 movups [16+edi],xmm3 | |
1315 movups [32+edi],xmm4 | |
1316 movups [48+edi],xmm5 | |
1317 lea edi,[64+edi] | |
1318 movdqa xmm1,xmm6 | |
1319 jmp NEAR L$054xts_enc_done | |
1320 align 16 | |
1321 L$049xts_enc_done6x: | |
1322 mov eax,DWORD [112+esp] | |
1323 and eax,15 | |
1324 jz NEAR L$056xts_enc_ret | |
1325 movdqa xmm5,xmm1 | |
1326 mov DWORD [112+esp],eax | |
1327 jmp NEAR L$057xts_enc_steal | |
1328 align 16 | |
1329 L$054xts_enc_done: | |
1330 mov eax,DWORD [112+esp] | |
1331 pxor xmm0,xmm0 | |
1332 and eax,15 | |
1333 jz NEAR L$056xts_enc_ret | |
1334 pcmpgtd xmm0,xmm1 | |
1335 mov DWORD [112+esp],eax | |
1336 pshufd xmm5,xmm0,19 | |
1337 paddq xmm1,xmm1 | |
1338 pand xmm5,[96+esp] | |
1339 pxor xmm5,xmm1 | |
1340 L$057xts_enc_steal: | |
1341 movzx ecx,BYTE [esi] | |
1342 movzx edx,BYTE [edi-16] | |
1343 lea esi,[1+esi] | |
1344 mov BYTE [edi-16],cl | |
1345 mov BYTE [edi],dl | |
1346 lea edi,[1+edi] | |
1347 sub eax,1 | |
1348 jnz NEAR L$057xts_enc_steal | |
1349 sub edi,DWORD [112+esp] | |
1350 mov edx,ebp | |
1351 mov ecx,ebx | |
1352 movups xmm2,[edi-16] | |
1353 xorps xmm2,xmm5 | |
1354 movups xmm0,[edx] | |
1355 movups xmm1,[16+edx] | |
1356 lea edx,[32+edx] | |
1357 xorps xmm2,xmm0 | |
1358 L$058enc1_loop_10: | |
1359 db 102,15,56,220,209 | |
1360 dec ecx | |
1361 movups xmm1,[edx] | |
1362 lea edx,[16+edx] | |
1363 jnz NEAR L$058enc1_loop_10 | |
1364 db 102,15,56,221,209 | |
1365 xorps xmm2,xmm5 | |
1366 movups [edi-16],xmm2 | |
1367 L$056xts_enc_ret: | |
1368 pxor xmm0,xmm0 | |
1369 pxor xmm1,xmm1 | |
1370 pxor xmm2,xmm2 | |
1371 movdqa [esp],xmm0 | |
1372 pxor xmm3,xmm3 | |
1373 movdqa [16+esp],xmm0 | |
1374 pxor xmm4,xmm4 | |
1375 movdqa [32+esp],xmm0 | |
1376 pxor xmm5,xmm5 | |
1377 movdqa [48+esp],xmm0 | |
1378 pxor xmm6,xmm6 | |
1379 movdqa [64+esp],xmm0 | |
1380 pxor xmm7,xmm7 | |
1381 movdqa [80+esp],xmm0 | |
1382 mov esp,DWORD [116+esp] | |
1383 pop edi | |
1384 pop esi | |
1385 pop ebx | |
1386 pop ebp | |
1387 ret | |
1388 global _aesni_xts_decrypt | |
1389 align 16 | |
1390 _aesni_xts_decrypt: | |
1391 L$_aesni_xts_decrypt_begin: | |
1392 push ebp | |
1393 push ebx | |
1394 push esi | |
1395 push edi | |
1396 mov edx,DWORD [36+esp] | |
1397 mov esi,DWORD [40+esp] | |
1398 mov ecx,DWORD [240+edx] | |
1399 movups xmm2,[esi] | |
1400 movups xmm0,[edx] | |
1401 movups xmm1,[16+edx] | |
1402 lea edx,[32+edx] | |
1403 xorps xmm2,xmm0 | |
1404 L$059enc1_loop_11: | |
1405 db 102,15,56,220,209 | |
1406 dec ecx | |
1407 movups xmm1,[edx] | |
1408 lea edx,[16+edx] | |
1409 jnz NEAR L$059enc1_loop_11 | |
1410 db 102,15,56,221,209 | |
1411 mov esi,DWORD [20+esp] | |
1412 mov edi,DWORD [24+esp] | |
1413 mov eax,DWORD [28+esp] | |
1414 mov edx,DWORD [32+esp] | |
1415 mov ebp,esp | |
1416 sub esp,120 | |
1417 and esp,-16 | |
1418 xor ebx,ebx | |
1419 test eax,15 | |
1420 setnz bl | |
1421 shl ebx,4 | |
1422 sub eax,ebx | |
1423 mov DWORD [96+esp],135 | |
1424 mov DWORD [100+esp],0 | |
1425 mov DWORD [104+esp],1 | |
1426 mov DWORD [108+esp],0 | |
1427 mov DWORD [112+esp],eax | |
1428 mov DWORD [116+esp],ebp | |
1429 mov ecx,DWORD [240+edx] | |
1430 mov ebp,edx | |
1431 mov ebx,ecx | |
1432 movdqa xmm1,xmm2 | |
1433 pxor xmm0,xmm0 | |
1434 movdqa xmm3,[96+esp] | |
1435 pcmpgtd xmm0,xmm1 | |
1436 and eax,-16 | |
1437 sub eax,96 | |
1438 jc NEAR L$060xts_dec_short | |
1439 shl ecx,4 | |
1440 mov ebx,16 | |
1441 sub ebx,ecx | |
1442 lea edx,[32+ecx*1+edx] | |
1443 jmp NEAR L$061xts_dec_loop6 | |
1444 align 16 | |
1445 L$061xts_dec_loop6: | |
1446 pshufd xmm2,xmm0,19 | |
1447 pxor xmm0,xmm0 | |
1448 movdqa [esp],xmm1 | |
1449 paddq xmm1,xmm1 | |
1450 pand xmm2,xmm3 | |
1451 pcmpgtd xmm0,xmm1 | |
1452 pxor xmm1,xmm2 | |
1453 pshufd xmm2,xmm0,19 | |
1454 pxor xmm0,xmm0 | |
1455 movdqa [16+esp],xmm1 | |
1456 paddq xmm1,xmm1 | |
1457 pand xmm2,xmm3 | |
1458 pcmpgtd xmm0,xmm1 | |
1459 pxor xmm1,xmm2 | |
1460 pshufd xmm2,xmm0,19 | |
1461 pxor xmm0,xmm0 | |
1462 movdqa [32+esp],xmm1 | |
1463 paddq xmm1,xmm1 | |
1464 pand xmm2,xmm3 | |
1465 pcmpgtd xmm0,xmm1 | |
1466 pxor xmm1,xmm2 | |
1467 pshufd xmm2,xmm0,19 | |
1468 pxor xmm0,xmm0 | |
1469 movdqa [48+esp],xmm1 | |
1470 paddq xmm1,xmm1 | |
1471 pand xmm2,xmm3 | |
1472 pcmpgtd xmm0,xmm1 | |
1473 pxor xmm1,xmm2 | |
1474 pshufd xmm7,xmm0,19 | |
1475 movdqa [64+esp],xmm1 | |
1476 paddq xmm1,xmm1 | |
1477 movups xmm0,[ebp] | |
1478 pand xmm7,xmm3 | |
1479 movups xmm2,[esi] | |
1480 pxor xmm7,xmm1 | |
1481 mov ecx,ebx | |
1482 movdqu xmm3,[16+esi] | |
1483 xorps xmm2,xmm0 | |
1484 movdqu xmm4,[32+esi] | |
1485 pxor xmm3,xmm0 | |
1486 movdqu xmm5,[48+esi] | |
1487 pxor xmm4,xmm0 | |
1488 movdqu xmm6,[64+esi] | |
1489 pxor xmm5,xmm0 | |
1490 movdqu xmm1,[80+esi] | |
1491 pxor xmm6,xmm0 | |
1492 lea esi,[96+esi] | |
1493 pxor xmm2,[esp] | |
1494 movdqa [80+esp],xmm7 | |
1495 pxor xmm7,xmm1 | |
1496 movups xmm1,[16+ebp] | |
1497 pxor xmm3,[16+esp] | |
1498 pxor xmm4,[32+esp] | |
1499 db 102,15,56,222,209 | |
1500 pxor xmm5,[48+esp] | |
1501 pxor xmm6,[64+esp] | |
1502 db 102,15,56,222,217 | |
1503 pxor xmm7,xmm0 | |
1504 movups xmm0,[32+ebp] | |
1505 db 102,15,56,222,225 | |
1506 db 102,15,56,222,233 | |
1507 db 102,15,56,222,241 | |
1508 db 102,15,56,222,249 | |
1509 call L$_aesni_decrypt6_enter | |
1510 movdqa xmm1,[80+esp] | |
1511 pxor xmm0,xmm0 | |
1512 xorps xmm2,[esp] | |
1513 pcmpgtd xmm0,xmm1 | |
1514 xorps xmm3,[16+esp] | |
1515 movups [edi],xmm2 | |
1516 xorps xmm4,[32+esp] | |
1517 movups [16+edi],xmm3 | |
1518 xorps xmm5,[48+esp] | |
1519 movups [32+edi],xmm4 | |
1520 xorps xmm6,[64+esp] | |
1521 movups [48+edi],xmm5 | |
1522 xorps xmm7,xmm1 | |
1523 movups [64+edi],xmm6 | |
1524 pshufd xmm2,xmm0,19 | |
1525 movups [80+edi],xmm7 | |
1526 lea edi,[96+edi] | |
1527 movdqa xmm3,[96+esp] | |
1528 pxor xmm0,xmm0 | |
1529 paddq xmm1,xmm1 | |
1530 pand xmm2,xmm3 | |
1531 pcmpgtd xmm0,xmm1 | |
1532 pxor xmm1,xmm2 | |
1533 sub eax,96 | |
1534 jnc NEAR L$061xts_dec_loop6 | |
1535 mov ecx,DWORD [240+ebp] | |
1536 mov edx,ebp | |
1537 mov ebx,ecx | |
1538 L$060xts_dec_short: | |
1539 add eax,96 | |
1540 jz NEAR L$062xts_dec_done6x | |
1541 movdqa xmm5,xmm1 | |
1542 cmp eax,32 | |
1543 jb NEAR L$063xts_dec_one | |
1544 pshufd xmm2,xmm0,19 | |
1545 pxor xmm0,xmm0 | |
1546 paddq xmm1,xmm1 | |
1547 pand xmm2,xmm3 | |
1548 pcmpgtd xmm0,xmm1 | |
1549 pxor xmm1,xmm2 | |
1550 je NEAR L$064xts_dec_two | |
1551 pshufd xmm2,xmm0,19 | |
1552 pxor xmm0,xmm0 | |
1553 movdqa xmm6,xmm1 | |
1554 paddq xmm1,xmm1 | |
1555 pand xmm2,xmm3 | |
1556 pcmpgtd xmm0,xmm1 | |
1557 pxor xmm1,xmm2 | |
1558 cmp eax,64 | |
1559 jb NEAR L$065xts_dec_three | |
1560 pshufd xmm2,xmm0,19 | |
1561 pxor xmm0,xmm0 | |
1562 movdqa xmm7,xmm1 | |
1563 paddq xmm1,xmm1 | |
1564 pand xmm2,xmm3 | |
1565 pcmpgtd xmm0,xmm1 | |
1566 pxor xmm1,xmm2 | |
1567 movdqa [esp],xmm5 | |
1568 movdqa [16+esp],xmm6 | |
1569 je NEAR L$066xts_dec_four | |
1570 movdqa [32+esp],xmm7 | |
1571 pshufd xmm7,xmm0,19 | |
1572 movdqa [48+esp],xmm1 | |
1573 paddq xmm1,xmm1 | |
1574 pand xmm7,xmm3 | |
1575 pxor xmm7,xmm1 | |
1576 movdqu xmm2,[esi] | |
1577 movdqu xmm3,[16+esi] | |
1578 movdqu xmm4,[32+esi] | |
1579 pxor xmm2,[esp] | |
1580 movdqu xmm5,[48+esi] | |
1581 pxor xmm3,[16+esp] | |
1582 movdqu xmm6,[64+esi] | |
1583 pxor xmm4,[32+esp] | |
1584 lea esi,[80+esi] | |
1585 pxor xmm5,[48+esp] | |
1586 movdqa [64+esp],xmm7 | |
1587 pxor xmm6,xmm7 | |
1588 call __aesni_decrypt6 | |
1589 movaps xmm1,[64+esp] | |
1590 xorps xmm2,[esp] | |
1591 xorps xmm3,[16+esp] | |
1592 xorps xmm4,[32+esp] | |
1593 movups [edi],xmm2 | |
1594 xorps xmm5,[48+esp] | |
1595 movups [16+edi],xmm3 | |
1596 xorps xmm6,xmm1 | |
1597 movups [32+edi],xmm4 | |
1598 movups [48+edi],xmm5 | |
1599 movups [64+edi],xmm6 | |
1600 lea edi,[80+edi] | |
1601 jmp NEAR L$067xts_dec_done | |
1602 align 16 | |
1603 L$063xts_dec_one: | |
1604 movups xmm2,[esi] | |
1605 lea esi,[16+esi] | |
1606 xorps xmm2,xmm5 | |
1607 movups xmm0,[edx] | |
1608 movups xmm1,[16+edx] | |
1609 lea edx,[32+edx] | |
1610 xorps xmm2,xmm0 | |
1611 L$068dec1_loop_12: | |
1612 db 102,15,56,222,209 | |
1613 dec ecx | |
1614 movups xmm1,[edx] | |
1615 lea edx,[16+edx] | |
1616 jnz NEAR L$068dec1_loop_12 | |
1617 db 102,15,56,223,209 | |
1618 xorps xmm2,xmm5 | |
1619 movups [edi],xmm2 | |
1620 lea edi,[16+edi] | |
1621 movdqa xmm1,xmm5 | |
1622 jmp NEAR L$067xts_dec_done | |
1623 align 16 | |
1624 L$064xts_dec_two: | |
1625 movaps xmm6,xmm1 | |
1626 movups xmm2,[esi] | |
1627 movups xmm3,[16+esi] | |
1628 lea esi,[32+esi] | |
1629 xorps xmm2,xmm5 | |
1630 xorps xmm3,xmm6 | |
1631 call __aesni_decrypt2 | |
1632 xorps xmm2,xmm5 | |
1633 xorps xmm3,xmm6 | |
1634 movups [edi],xmm2 | |
1635 movups [16+edi],xmm3 | |
1636 lea edi,[32+edi] | |
1637 movdqa xmm1,xmm6 | |
1638 jmp NEAR L$067xts_dec_done | |
1639 align 16 | |
1640 L$065xts_dec_three: | |
1641 movaps xmm7,xmm1 | |
1642 movups xmm2,[esi] | |
1643 movups xmm3,[16+esi] | |
1644 movups xmm4,[32+esi] | |
1645 lea esi,[48+esi] | |
1646 xorps xmm2,xmm5 | |
1647 xorps xmm3,xmm6 | |
1648 xorps xmm4,xmm7 | |
1649 call __aesni_decrypt3 | |
1650 xorps xmm2,xmm5 | |
1651 xorps xmm3,xmm6 | |
1652 xorps xmm4,xmm7 | |
1653 movups [edi],xmm2 | |
1654 movups [16+edi],xmm3 | |
1655 movups [32+edi],xmm4 | |
1656 lea edi,[48+edi] | |
1657 movdqa xmm1,xmm7 | |
1658 jmp NEAR L$067xts_dec_done | |
1659 align 16 | |
1660 L$066xts_dec_four: | |
1661 movaps xmm6,xmm1 | |
1662 movups xmm2,[esi] | |
1663 movups xmm3,[16+esi] | |
1664 movups xmm4,[32+esi] | |
1665 xorps xmm2,[esp] | |
1666 movups xmm5,[48+esi] | |
1667 lea esi,[64+esi] | |
1668 xorps xmm3,[16+esp] | |
1669 xorps xmm4,xmm7 | |
1670 xorps xmm5,xmm6 | |
1671 call __aesni_decrypt4 | |
1672 xorps xmm2,[esp] | |
1673 xorps xmm3,[16+esp] | |
1674 xorps xmm4,xmm7 | |
1675 movups [edi],xmm2 | |
1676 xorps xmm5,xmm6 | |
1677 movups [16+edi],xmm3 | |
1678 movups [32+edi],xmm4 | |
1679 movups [48+edi],xmm5 | |
1680 lea edi,[64+edi] | |
1681 movdqa xmm1,xmm6 | |
1682 jmp NEAR L$067xts_dec_done | |
1683 align 16 | |
1684 L$062xts_dec_done6x: | |
1685 mov eax,DWORD [112+esp] | |
1686 and eax,15 | |
1687 jz NEAR L$069xts_dec_ret | |
1688 mov DWORD [112+esp],eax | |
1689 jmp NEAR L$070xts_dec_only_one_more | |
1690 align 16 | |
1691 L$067xts_dec_done: | |
1692 mov eax,DWORD [112+esp] | |
1693 pxor xmm0,xmm0 | |
1694 and eax,15 | |
1695 jz NEAR L$069xts_dec_ret | |
1696 pcmpgtd xmm0,xmm1 | |
1697 mov DWORD [112+esp],eax | |
1698 pshufd xmm2,xmm0,19 | |
1699 pxor xmm0,xmm0 | |
1700 movdqa xmm3,[96+esp] | |
1701 paddq xmm1,xmm1 | |
1702 pand xmm2,xmm3 | |
1703 pcmpgtd xmm0,xmm1 | |
1704 pxor xmm1,xmm2 | |
1705 L$070xts_dec_only_one_more: | |
1706 pshufd xmm5,xmm0,19 | |
1707 movdqa xmm6,xmm1 | |
1708 paddq xmm1,xmm1 | |
1709 pand xmm5,xmm3 | |
1710 pxor xmm5,xmm1 | |
1711 mov edx,ebp | |
1712 mov ecx,ebx | |
1713 movups xmm2,[esi] | |
1714 xorps xmm2,xmm5 | |
1715 movups xmm0,[edx] | |
1716 movups xmm1,[16+edx] | |
1717 lea edx,[32+edx] | |
1718 xorps xmm2,xmm0 | |
1719 L$071dec1_loop_13: | |
1720 db 102,15,56,222,209 | |
1721 dec ecx | |
1722 movups xmm1,[edx] | |
1723 lea edx,[16+edx] | |
1724 jnz NEAR L$071dec1_loop_13 | |
1725 db 102,15,56,223,209 | |
1726 xorps xmm2,xmm5 | |
1727 movups [edi],xmm2 | |
1728 L$072xts_dec_steal: | |
1729 movzx ecx,BYTE [16+esi] | |
1730 movzx edx,BYTE [edi] | |
1731 lea esi,[1+esi] | |
1732 mov BYTE [edi],cl | |
1733 mov BYTE [16+edi],dl | |
1734 lea edi,[1+edi] | |
1735 sub eax,1 | |
1736 jnz NEAR L$072xts_dec_steal | |
1737 sub edi,DWORD [112+esp] | |
1738 mov edx,ebp | |
1739 mov ecx,ebx | |
1740 movups xmm2,[edi] | |
1741 xorps xmm2,xmm6 | |
1742 movups xmm0,[edx] | |
1743 movups xmm1,[16+edx] | |
1744 lea edx,[32+edx] | |
1745 xorps xmm2,xmm0 | |
1746 L$073dec1_loop_14: | |
1747 db 102,15,56,222,209 | |
1748 dec ecx | |
1749 movups xmm1,[edx] | |
1750 lea edx,[16+edx] | |
1751 jnz NEAR L$073dec1_loop_14 | |
1752 db 102,15,56,223,209 | |
1753 xorps xmm2,xmm6 | |
1754 movups [edi],xmm2 | |
1755 L$069xts_dec_ret: | |
1756 pxor xmm0,xmm0 | |
1757 pxor xmm1,xmm1 | |
1758 pxor xmm2,xmm2 | |
1759 movdqa [esp],xmm0 | |
1760 pxor xmm3,xmm3 | |
1761 movdqa [16+esp],xmm0 | |
1762 pxor xmm4,xmm4 | |
1763 movdqa [32+esp],xmm0 | |
1764 pxor xmm5,xmm5 | |
1765 movdqa [48+esp],xmm0 | |
1766 pxor xmm6,xmm6 | |
1767 movdqa [64+esp],xmm0 | |
1768 pxor xmm7,xmm7 | |
1769 movdqa [80+esp],xmm0 | |
1770 mov esp,DWORD [116+esp] | |
1771 pop edi | |
1772 pop esi | |
1773 pop ebx | |
1774 pop ebp | |
1775 ret | |
1776 global _aesni_cbc_encrypt | |
1777 align 16 | |
1778 _aesni_cbc_encrypt: | |
1779 L$_aesni_cbc_encrypt_begin: | |
1780 push ebp | |
1781 push ebx | |
1782 push esi | |
1783 push edi | |
1784 mov esi,DWORD [20+esp] | |
1785 mov ebx,esp | |
1786 mov edi,DWORD [24+esp] | |
1787 sub ebx,24 | |
1788 mov eax,DWORD [28+esp] | |
1789 and ebx,-16 | |
1790 mov edx,DWORD [32+esp] | |
1791 mov ebp,DWORD [36+esp] | |
1792 test eax,eax | |
1793 jz NEAR L$074cbc_abort | |
1794 cmp DWORD [40+esp],0 | |
1795 xchg ebx,esp | |
1796 movups xmm7,[ebp] | |
1797 mov ecx,DWORD [240+edx] | |
1798 mov ebp,edx | |
1799 mov DWORD [16+esp],ebx | |
1800 mov ebx,ecx | |
1801 je NEAR L$075cbc_decrypt | |
1802 movaps xmm2,xmm7 | |
1803 cmp eax,16 | |
1804 jb NEAR L$076cbc_enc_tail | |
1805 sub eax,16 | |
1806 jmp NEAR L$077cbc_enc_loop | |
1807 align 16 | |
1808 L$077cbc_enc_loop: | |
1809 movups xmm7,[esi] | |
1810 lea esi,[16+esi] | |
1811 movups xmm0,[edx] | |
1812 movups xmm1,[16+edx] | |
1813 xorps xmm7,xmm0 | |
1814 lea edx,[32+edx] | |
1815 xorps xmm2,xmm7 | |
1816 L$078enc1_loop_15: | |
1817 db 102,15,56,220,209 | |
1818 dec ecx | |
1819 movups xmm1,[edx] | |
1820 lea edx,[16+edx] | |
1821 jnz NEAR L$078enc1_loop_15 | |
1822 db 102,15,56,221,209 | |
1823 mov ecx,ebx | |
1824 mov edx,ebp | |
1825 movups [edi],xmm2 | |
1826 lea edi,[16+edi] | |
1827 sub eax,16 | |
1828 jnc NEAR L$077cbc_enc_loop | |
1829 add eax,16 | |
1830 jnz NEAR L$076cbc_enc_tail | |
1831 movaps xmm7,xmm2 | |
1832 pxor xmm2,xmm2 | |
1833 jmp NEAR L$079cbc_ret | |
1834 L$076cbc_enc_tail: | |
1835 mov ecx,eax | |
1836 dd 2767451785 | |
1837 mov ecx,16 | |
1838 sub ecx,eax | |
1839 xor eax,eax | |
1840 dd 2868115081 | |
1841 lea edi,[edi-16] | |
1842 mov ecx,ebx | |
1843 mov esi,edi | |
1844 mov edx,ebp | |
1845 jmp NEAR L$077cbc_enc_loop | |
1846 align 16 | |
1847 L$075cbc_decrypt: | |
1848 cmp eax,80 | |
1849 jbe NEAR L$080cbc_dec_tail | |
1850 movaps [esp],xmm7 | |
1851 sub eax,80 | |
1852 jmp NEAR L$081cbc_dec_loop6_enter | |
1853 align 16 | |
1854 L$082cbc_dec_loop6: | |
1855 movaps [esp],xmm0 | |
1856 movups [edi],xmm7 | |
1857 lea edi,[16+edi] | |
1858 L$081cbc_dec_loop6_enter: | |
1859 movdqu xmm2,[esi] | |
1860 movdqu xmm3,[16+esi] | |
1861 movdqu xmm4,[32+esi] | |
1862 movdqu xmm5,[48+esi] | |
1863 movdqu xmm6,[64+esi] | |
1864 movdqu xmm7,[80+esi] | |
1865 call __aesni_decrypt6 | |
1866 movups xmm1,[esi] | |
1867 movups xmm0,[16+esi] | |
1868 xorps xmm2,[esp] | |
1869 xorps xmm3,xmm1 | |
1870 movups xmm1,[32+esi] | |
1871 xorps xmm4,xmm0 | |
1872 movups xmm0,[48+esi] | |
1873 xorps xmm5,xmm1 | |
1874 movups xmm1,[64+esi] | |
1875 xorps xmm6,xmm0 | |
1876 movups xmm0,[80+esi] | |
1877 xorps xmm7,xmm1 | |
1878 movups [edi],xmm2 | |
1879 movups [16+edi],xmm3 | |
1880 lea esi,[96+esi] | |
1881 movups [32+edi],xmm4 | |
1882 mov ecx,ebx | |
1883 movups [48+edi],xmm5 | |
1884 mov edx,ebp | |
1885 movups [64+edi],xmm6 | |
1886 lea edi,[80+edi] | |
1887 sub eax,96 | |
1888 ja NEAR L$082cbc_dec_loop6 | |
1889 movaps xmm2,xmm7 | |
1890 movaps xmm7,xmm0 | |
1891 add eax,80 | |
1892 jle NEAR L$083cbc_dec_clear_tail_collected | |
1893 movups [edi],xmm2 | |
1894 lea edi,[16+edi] | |
1895 L$080cbc_dec_tail: | |
1896 movups xmm2,[esi] | |
1897 movaps xmm6,xmm2 | |
1898 cmp eax,16 | |
1899 jbe NEAR L$084cbc_dec_one | |
1900 movups xmm3,[16+esi] | |
1901 movaps xmm5,xmm3 | |
1902 cmp eax,32 | |
1903 jbe NEAR L$085cbc_dec_two | |
1904 movups xmm4,[32+esi] | |
1905 cmp eax,48 | |
1906 jbe NEAR L$086cbc_dec_three | |
1907 movups xmm5,[48+esi] | |
1908 cmp eax,64 | |
1909 jbe NEAR L$087cbc_dec_four | |
1910 movups xmm6,[64+esi] | |
1911 movaps [esp],xmm7 | |
1912 movups xmm2,[esi] | |
1913 xorps xmm7,xmm7 | |
1914 call __aesni_decrypt6 | |
1915 movups xmm1,[esi] | |
1916 movups xmm0,[16+esi] | |
1917 xorps xmm2,[esp] | |
1918 xorps xmm3,xmm1 | |
1919 movups xmm1,[32+esi] | |
1920 xorps xmm4,xmm0 | |
1921 movups xmm0,[48+esi] | |
1922 xorps xmm5,xmm1 | |
1923 movups xmm7,[64+esi] | |
1924 xorps xmm6,xmm0 | |
1925 movups [edi],xmm2 | |
1926 movups [16+edi],xmm3 | |
1927 pxor xmm3,xmm3 | |
1928 movups [32+edi],xmm4 | |
1929 pxor xmm4,xmm4 | |
1930 movups [48+edi],xmm5 | |
1931 pxor xmm5,xmm5 | |
1932 lea edi,[64+edi] | |
1933 movaps xmm2,xmm6 | |
1934 pxor xmm6,xmm6 | |
1935 sub eax,80 | |
1936 jmp NEAR L$088cbc_dec_tail_collected | |
1937 align 16 | |
1938 L$084cbc_dec_one: | |
1939 movups xmm0,[edx] | |
1940 movups xmm1,[16+edx] | |
1941 lea edx,[32+edx] | |
1942 xorps xmm2,xmm0 | |
1943 L$089dec1_loop_16: | |
1944 db 102,15,56,222,209 | |
1945 dec ecx | |
1946 movups xmm1,[edx] | |
1947 lea edx,[16+edx] | |
1948 jnz NEAR L$089dec1_loop_16 | |
1949 db 102,15,56,223,209 | |
1950 xorps xmm2,xmm7 | |
1951 movaps xmm7,xmm6 | |
1952 sub eax,16 | |
1953 jmp NEAR L$088cbc_dec_tail_collected | |
1954 align 16 | |
1955 L$085cbc_dec_two: | |
1956 call __aesni_decrypt2 | |
1957 xorps xmm2,xmm7 | |
1958 xorps xmm3,xmm6 | |
1959 movups [edi],xmm2 | |
1960 movaps xmm2,xmm3 | |
1961 pxor xmm3,xmm3 | |
1962 lea edi,[16+edi] | |
1963 movaps xmm7,xmm5 | |
1964 sub eax,32 | |
1965 jmp NEAR L$088cbc_dec_tail_collected | |
1966 align 16 | |
1967 L$086cbc_dec_three: | |
1968 call __aesni_decrypt3 | |
1969 xorps xmm2,xmm7 | |
1970 xorps xmm3,xmm6 | |
1971 xorps xmm4,xmm5 | |
1972 movups [edi],xmm2 | |
1973 movaps xmm2,xmm4 | |
1974 pxor xmm4,xmm4 | |
1975 movups [16+edi],xmm3 | |
1976 pxor xmm3,xmm3 | |
1977 lea edi,[32+edi] | |
1978 movups xmm7,[32+esi] | |
1979 sub eax,48 | |
1980 jmp NEAR L$088cbc_dec_tail_collected | |
1981 align 16 | |
1982 L$087cbc_dec_four: | |
1983 call __aesni_decrypt4 | |
1984 movups xmm1,[16+esi] | |
1985 movups xmm0,[32+esi] | |
1986 xorps xmm2,xmm7 | |
1987 movups xmm7,[48+esi] | |
1988 xorps xmm3,xmm6 | |
1989 movups [edi],xmm2 | |
1990 xorps xmm4,xmm1 | |
1991 movups [16+edi],xmm3 | |
1992 pxor xmm3,xmm3 | |
1993 xorps xmm5,xmm0 | |
1994 movups [32+edi],xmm4 | |
1995 pxor xmm4,xmm4 | |
1996 lea edi,[48+edi] | |
1997 movaps xmm2,xmm5 | |
1998 pxor xmm5,xmm5 | |
1999 sub eax,64 | |
2000 jmp NEAR L$088cbc_dec_tail_collected | |
2001 align 16 | |
2002 L$083cbc_dec_clear_tail_collected: | |
2003 pxor xmm3,xmm3 | |
2004 pxor xmm4,xmm4 | |
2005 pxor xmm5,xmm5 | |
2006 pxor xmm6,xmm6 | |
2007 L$088cbc_dec_tail_collected: | |
2008 and eax,15 | |
2009 jnz NEAR L$090cbc_dec_tail_partial | |
2010 movups [edi],xmm2 | |
2011 pxor xmm0,xmm0 | |
2012 jmp NEAR L$079cbc_ret | |
2013 align 16 | |
2014 L$090cbc_dec_tail_partial: | |
2015 movaps [esp],xmm2 | |
2016 pxor xmm0,xmm0 | |
2017 mov ecx,16 | |
2018 mov esi,esp | |
2019 sub ecx,eax | |
2020 dd 2767451785 | |
2021 movdqa [esp],xmm2 | |
2022 L$079cbc_ret: | |
2023 mov esp,DWORD [16+esp] | |
2024 mov ebp,DWORD [36+esp] | |
2025 pxor xmm2,xmm2 | |
2026 pxor xmm1,xmm1 | |
2027 movups [ebp],xmm7 | |
2028 pxor xmm7,xmm7 | |
2029 L$074cbc_abort: | |
2030 pop edi | |
2031 pop esi | |
2032 pop ebx | |
2033 pop ebp | |
2034 ret | |
2035 align 16 | |
2036 __aesni_set_encrypt_key: | |
2037 push ebp | |
2038 push ebx | |
2039 test eax,eax | |
2040 jz NEAR L$091bad_pointer | |
2041 test edx,edx | |
2042 jz NEAR L$091bad_pointer | |
2043 call L$092pic | |
2044 L$092pic: | |
2045 pop ebx | |
2046 lea ebx,[(L$key_const-L$092pic)+ebx] | |
2047 lea ebp,[_OPENSSL_ia32cap_P] | |
2048 movups xmm0,[eax] | |
2049 xorps xmm4,xmm4 | |
2050 mov ebp,DWORD [4+ebp] | |
2051 lea edx,[16+edx] | |
2052 and ebp,268437504 | |
2053 cmp ecx,256 | |
2054 je NEAR L$09314rounds | |
2055 cmp ecx,192 | |
2056 je NEAR L$09412rounds | |
2057 cmp ecx,128 | |
2058 jne NEAR L$095bad_keybits | |
2059 align 16 | |
2060 L$09610rounds: | |
2061 cmp ebp,268435456 | |
2062 je NEAR L$09710rounds_alt | |
2063 mov ecx,9 | |
2064 movups [edx-16],xmm0 | |
2065 db 102,15,58,223,200,1 | |
2066 call L$098key_128_cold | |
2067 db 102,15,58,223,200,2 | |
2068 call L$099key_128 | |
2069 db 102,15,58,223,200,4 | |
2070 call L$099key_128 | |
2071 db 102,15,58,223,200,8 | |
2072 call L$099key_128 | |
2073 db 102,15,58,223,200,16 | |
2074 call L$099key_128 | |
2075 db 102,15,58,223,200,32 | |
2076 call L$099key_128 | |
2077 db 102,15,58,223,200,64 | |
2078 call L$099key_128 | |
2079 db 102,15,58,223,200,128 | |
2080 call L$099key_128 | |
2081 db 102,15,58,223,200,27 | |
2082 call L$099key_128 | |
2083 db 102,15,58,223,200,54 | |
2084 call L$099key_128 | |
2085 movups [edx],xmm0 | |
2086 mov DWORD [80+edx],ecx | |
2087 jmp NEAR L$100good_key | |
2088 align 16 | |
2089 L$099key_128: | |
2090 movups [edx],xmm0 | |
2091 lea edx,[16+edx] | |
2092 L$098key_128_cold: | |
2093 shufps xmm4,xmm0,16 | |
2094 xorps xmm0,xmm4 | |
2095 shufps xmm4,xmm0,140 | |
2096 xorps xmm0,xmm4 | |
2097 shufps xmm1,xmm1,255 | |
2098 xorps xmm0,xmm1 | |
2099 ret | |
2100 align 16 | |
2101 L$09710rounds_alt: | |
2102 movdqa xmm5,[ebx] | |
2103 mov ecx,8 | |
2104 movdqa xmm4,[32+ebx] | |
2105 movdqa xmm2,xmm0 | |
2106 movdqu [edx-16],xmm0 | |
2107 L$101loop_key128: | |
2108 db 102,15,56,0,197 | |
2109 db 102,15,56,221,196 | |
2110 pslld xmm4,1 | |
2111 lea edx,[16+edx] | |
2112 movdqa xmm3,xmm2 | |
2113 pslldq xmm2,4 | |
2114 pxor xmm3,xmm2 | |
2115 pslldq xmm2,4 | |
2116 pxor xmm3,xmm2 | |
2117 pslldq xmm2,4 | |
2118 pxor xmm2,xmm3 | |
2119 pxor xmm0,xmm2 | |
2120 movdqu [edx-16],xmm0 | |
2121 movdqa xmm2,xmm0 | |
2122 dec ecx | |
2123 jnz NEAR L$101loop_key128 | |
2124 movdqa xmm4,[48+ebx] | |
2125 db 102,15,56,0,197 | |
2126 db 102,15,56,221,196 | |
2127 pslld xmm4,1 | |
2128 movdqa xmm3,xmm2 | |
2129 pslldq xmm2,4 | |
2130 pxor xmm3,xmm2 | |
2131 pslldq xmm2,4 | |
2132 pxor xmm3,xmm2 | |
2133 pslldq xmm2,4 | |
2134 pxor xmm2,xmm3 | |
2135 pxor xmm0,xmm2 | |
2136 movdqu [edx],xmm0 | |
2137 movdqa xmm2,xmm0 | |
2138 db 102,15,56,0,197 | |
2139 db 102,15,56,221,196 | |
2140 movdqa xmm3,xmm2 | |
2141 pslldq xmm2,4 | |
2142 pxor xmm3,xmm2 | |
2143 pslldq xmm2,4 | |
2144 pxor xmm3,xmm2 | |
2145 pslldq xmm2,4 | |
2146 pxor xmm2,xmm3 | |
2147 pxor xmm0,xmm2 | |
2148 movdqu [16+edx],xmm0 | |
2149 mov ecx,9 | |
2150 mov DWORD [96+edx],ecx | |
2151 jmp NEAR L$100good_key | |
2152 align 16 | |
2153 L$09412rounds: | |
2154 movq xmm2,[16+eax] | |
2155 cmp ebp,268435456 | |
2156 je NEAR L$10212rounds_alt | |
2157 mov ecx,11 | |
2158 movups [edx-16],xmm0 | |
2159 db 102,15,58,223,202,1 | |
2160 call L$103key_192a_cold | |
2161 db 102,15,58,223,202,2 | |
2162 call L$104key_192b | |
2163 db 102,15,58,223,202,4 | |
2164 call L$105key_192a | |
2165 db 102,15,58,223,202,8 | |
2166 call L$104key_192b | |
2167 db 102,15,58,223,202,16 | |
2168 call L$105key_192a | |
2169 db 102,15,58,223,202,32 | |
2170 call L$104key_192b | |
2171 db 102,15,58,223,202,64 | |
2172 call L$105key_192a | |
2173 db 102,15,58,223,202,128 | |
2174 call L$104key_192b | |
2175 movups [edx],xmm0 | |
2176 mov DWORD [48+edx],ecx | |
2177 jmp NEAR L$100good_key | |
2178 align 16 | |
2179 L$105key_192a: | |
2180 movups [edx],xmm0 | |
2181 lea edx,[16+edx] | |
2182 align 16 | |
2183 L$103key_192a_cold: | |
2184 movaps xmm5,xmm2 | |
2185 L$106key_192b_warm: | |
2186 shufps xmm4,xmm0,16 | |
2187 movdqa xmm3,xmm2 | |
2188 xorps xmm0,xmm4 | |
2189 shufps xmm4,xmm0,140 | |
2190 pslldq xmm3,4 | |
2191 xorps xmm0,xmm4 | |
2192 pshufd xmm1,xmm1,85 | |
2193 pxor xmm2,xmm3 | |
2194 pxor xmm0,xmm1 | |
2195 pshufd xmm3,xmm0,255 | |
2196 pxor xmm2,xmm3 | |
2197 ret | |
2198 align 16 | |
2199 L$104key_192b: | |
2200 movaps xmm3,xmm0 | |
2201 shufps xmm5,xmm0,68 | |
2202 movups [edx],xmm5 | |
2203 shufps xmm3,xmm2,78 | |
2204 movups [16+edx],xmm3 | |
2205 lea edx,[32+edx] | |
2206 jmp NEAR L$106key_192b_warm | |
2207 align 16 | |
2208 L$10212rounds_alt: | |
2209 movdqa xmm5,[16+ebx] | |
2210 movdqa xmm4,[32+ebx] | |
2211 mov ecx,8 | |
2212 movdqu [edx-16],xmm0 | |
2213 L$107loop_key192: | |
2214 movq [edx],xmm2 | |
2215 movdqa xmm1,xmm2 | |
2216 db 102,15,56,0,213 | |
2217 db 102,15,56,221,212 | |
2218 pslld xmm4,1 | |
2219 lea edx,[24+edx] | |
2220 movdqa xmm3,xmm0 | |
2221 pslldq xmm0,4 | |
2222 pxor xmm3,xmm0 | |
2223 pslldq xmm0,4 | |
2224 pxor xmm3,xmm0 | |
2225 pslldq xmm0,4 | |
2226 pxor xmm0,xmm3 | |
2227 pshufd xmm3,xmm0,255 | |
2228 pxor xmm3,xmm1 | |
2229 pslldq xmm1,4 | |
2230 pxor xmm3,xmm1 | |
2231 pxor xmm0,xmm2 | |
2232 pxor xmm2,xmm3 | |
2233 movdqu [edx-16],xmm0 | |
2234 dec ecx | |
2235 jnz NEAR L$107loop_key192 | |
2236 mov ecx,11 | |
2237 mov DWORD [32+edx],ecx | |
2238 jmp NEAR L$100good_key | |
2239 align 16 | |
2240 L$09314rounds: | |
2241 movups xmm2,[16+eax] | |
2242 lea edx,[16+edx] | |
2243 cmp ebp,268435456 | |
2244 je NEAR L$10814rounds_alt | |
2245 mov ecx,13 | |
2246 movups [edx-32],xmm0 | |
2247 movups [edx-16],xmm2 | |
2248 db 102,15,58,223,202,1 | |
2249 call L$109key_256a_cold | |
2250 db 102,15,58,223,200,1 | |
2251 call L$110key_256b | |
2252 db 102,15,58,223,202,2 | |
2253 call L$111key_256a | |
2254 db 102,15,58,223,200,2 | |
2255 call L$110key_256b | |
2256 db 102,15,58,223,202,4 | |
2257 call L$111key_256a | |
2258 db 102,15,58,223,200,4 | |
2259 call L$110key_256b | |
2260 db 102,15,58,223,202,8 | |
2261 call L$111key_256a | |
2262 db 102,15,58,223,200,8 | |
2263 call L$110key_256b | |
2264 db 102,15,58,223,202,16 | |
2265 call L$111key_256a | |
2266 db 102,15,58,223,200,16 | |
2267 call L$110key_256b | |
2268 db 102,15,58,223,202,32 | |
2269 call L$111key_256a | |
2270 db 102,15,58,223,200,32 | |
2271 call L$110key_256b | |
2272 db 102,15,58,223,202,64 | |
2273 call L$111key_256a | |
2274 movups [edx],xmm0 | |
2275 mov DWORD [16+edx],ecx | |
2276 xor eax,eax | |
2277 jmp NEAR L$100good_key | |
2278 align 16 | |
2279 L$111key_256a: | |
2280 movups [edx],xmm2 | |
2281 lea edx,[16+edx] | |
2282 L$109key_256a_cold: | |
2283 shufps xmm4,xmm0,16 | |
2284 xorps xmm0,xmm4 | |
2285 shufps xmm4,xmm0,140 | |
2286 xorps xmm0,xmm4 | |
2287 shufps xmm1,xmm1,255 | |
2288 xorps xmm0,xmm1 | |
2289 ret | |
2290 align 16 | |
2291 L$110key_256b: | |
2292 movups [edx],xmm0 | |
2293 lea edx,[16+edx] | |
2294 shufps xmm4,xmm2,16 | |
2295 xorps xmm2,xmm4 | |
2296 shufps xmm4,xmm2,140 | |
2297 xorps xmm2,xmm4 | |
2298 shufps xmm1,xmm1,170 | |
2299 xorps xmm2,xmm1 | |
2300 ret | |
2301 align 16 | |
2302 L$10814rounds_alt: | |
2303 movdqa xmm5,[ebx] | |
2304 movdqa xmm4,[32+ebx] | |
2305 mov ecx,7 | |
2306 movdqu [edx-32],xmm0 | |
2307 movdqa xmm1,xmm2 | |
2308 movdqu [edx-16],xmm2 | |
2309 L$112loop_key256: | |
2310 db 102,15,56,0,213 | |
2311 db 102,15,56,221,212 | |
2312 movdqa xmm3,xmm0 | |
2313 pslldq xmm0,4 | |
2314 pxor xmm3,xmm0 | |
2315 pslldq xmm0,4 | |
2316 pxor xmm3,xmm0 | |
2317 pslldq xmm0,4 | |
2318 pxor xmm0,xmm3 | |
2319 pslld xmm4,1 | |
2320 pxor xmm0,xmm2 | |
2321 movdqu [edx],xmm0 | |
2322 dec ecx | |
2323 jz NEAR L$113done_key256 | |
2324 pshufd xmm2,xmm0,255 | |
2325 pxor xmm3,xmm3 | |
2326 db 102,15,56,221,211 | |
2327 movdqa xmm3,xmm1 | |
2328 pslldq xmm1,4 | |
2329 pxor xmm3,xmm1 | |
2330 pslldq xmm1,4 | |
2331 pxor xmm3,xmm1 | |
2332 pslldq xmm1,4 | |
2333 pxor xmm1,xmm3 | |
2334 pxor xmm2,xmm1 | |
2335 movdqu [16+edx],xmm2 | |
2336 lea edx,[32+edx] | |
2337 movdqa xmm1,xmm2 | |
2338 jmp NEAR L$112loop_key256 | |
2339 L$113done_key256: | |
2340 mov ecx,13 | |
2341 mov DWORD [16+edx],ecx | |
2342 L$100good_key: | |
2343 pxor xmm0,xmm0 | |
2344 pxor xmm1,xmm1 | |
2345 pxor xmm2,xmm2 | |
2346 pxor xmm3,xmm3 | |
2347 pxor xmm4,xmm4 | |
2348 pxor xmm5,xmm5 | |
2349 xor eax,eax | |
2350 pop ebx | |
2351 pop ebp | |
2352 ret | |
2353 align 4 | |
2354 L$091bad_pointer: | |
2355 mov eax,-1 | |
2356 pop ebx | |
2357 pop ebp | |
2358 ret | |
2359 align 4 | |
2360 L$095bad_keybits: | |
2361 pxor xmm0,xmm0 | |
2362 mov eax,-2 | |
2363 pop ebx | |
2364 pop ebp | |
2365 ret | |
2366 global _aesni_set_encrypt_key | |
2367 align 16 | |
2368 _aesni_set_encrypt_key: | |
2369 L$_aesni_set_encrypt_key_begin: | |
2370 mov eax,DWORD [4+esp] | |
2371 mov ecx,DWORD [8+esp] | |
2372 mov edx,DWORD [12+esp] | |
2373 call __aesni_set_encrypt_key | |
2374 ret | |
2375 global _aesni_set_decrypt_key | |
2376 align 16 | |
2377 _aesni_set_decrypt_key: | |
2378 L$_aesni_set_decrypt_key_begin: | |
2379 mov eax,DWORD [4+esp] | |
2380 mov ecx,DWORD [8+esp] | |
2381 mov edx,DWORD [12+esp] | |
2382 call __aesni_set_encrypt_key | |
2383 mov edx,DWORD [12+esp] | |
2384 shl ecx,4 | |
2385 test eax,eax | |
2386 jnz NEAR L$114dec_key_ret | |
2387 lea eax,[16+ecx*1+edx] | |
2388 movups xmm0,[edx] | |
2389 movups xmm1,[eax] | |
2390 movups [eax],xmm0 | |
2391 movups [edx],xmm1 | |
2392 lea edx,[16+edx] | |
2393 lea eax,[eax-16] | |
2394 L$115dec_key_inverse: | |
2395 movups xmm0,[edx] | |
2396 movups xmm1,[eax] | |
2397 db 102,15,56,219,192 | |
2398 db 102,15,56,219,201 | |
2399 lea edx,[16+edx] | |
2400 lea eax,[eax-16] | |
2401 movups [16+eax],xmm0 | |
2402 movups [edx-16],xmm1 | |
2403 cmp eax,edx | |
2404 ja NEAR L$115dec_key_inverse | |
2405 movups xmm0,[edx] | |
2406 db 102,15,56,219,192 | |
2407 movups [edx],xmm0 | |
2408 pxor xmm0,xmm0 | |
2409 pxor xmm1,xmm1 | |
2410 xor eax,eax | |
2411 L$114dec_key_ret: | |
2412 ret | |
2413 align 64 | |
2414 L$key_const: | |
2415 dd 202313229,202313229,202313229,202313229 | |
2416 dd 67569157,67569157,67569157,67569157 | |
2417 dd 1,1,1,1 | |
2418 dd 27,27,27,27 | |
2419 db 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 | |
2420 db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 | |
2421 db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 | |
2422 db 115,108,46,111,114,103,62,0 | |
2423 segment .bss | |
2424 common _OPENSSL_ia32cap_P 16 | |
OLD | NEW |