Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Side by Side Diff: third_party/boringssl/win-x86/crypto/aes/aesni-x86.asm

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

Powered by Google App Engine
This is Rietveld 408576698