1 #include <machine/asm.h> 2 .text 3 .globl aesni_encrypt 4 .type aesni_encrypt,@function 5 .align 16 6 aesni_encrypt: 7 .L_aesni_encrypt_begin: 8 movl 4(%esp),%eax 9 movl 12(%esp),%edx 10 movups (%eax),%xmm2 11 movl 240(%edx),%ecx 12 movl 8(%esp),%eax 13 movups (%edx),%xmm0 14 movups 16(%edx),%xmm1 15 leal 32(%edx),%edx 16 xorps %xmm0,%xmm2 17 .L000enc1_loop_1: 18 .byte 102,15,56,220,209 19 decl %ecx 20 movups (%edx),%xmm1 21 leal 16(%edx),%edx 22 jnz .L000enc1_loop_1 23 .byte 102,15,56,221,209 24 pxor %xmm0,%xmm0 25 pxor %xmm1,%xmm1 26 movups %xmm2,(%eax) 27 pxor %xmm2,%xmm2 28 ret 29 .size aesni_encrypt,.-.L_aesni_encrypt_begin 30 .globl aesni_decrypt 31 .type aesni_decrypt,@function 32 .align 16 33 aesni_decrypt: 34 .L_aesni_decrypt_begin: 35 movl 4(%esp),%eax 36 movl 12(%esp),%edx 37 movups (%eax),%xmm2 38 movl 240(%edx),%ecx 39 movl 8(%esp),%eax 40 movups (%edx),%xmm0 41 movups 16(%edx),%xmm1 42 leal 32(%edx),%edx 43 xorps %xmm0,%xmm2 44 .L001dec1_loop_2: 45 .byte 102,15,56,222,209 46 decl %ecx 47 movups (%edx),%xmm1 48 leal 16(%edx),%edx 49 jnz .L001dec1_loop_2 50 .byte 102,15,56,223,209 51 pxor %xmm0,%xmm0 52 pxor %xmm1,%xmm1 53 movups %xmm2,(%eax) 54 pxor %xmm2,%xmm2 55 ret 56 .size aesni_decrypt,.-.L_aesni_decrypt_begin 57 .type _aesni_encrypt2,@function 58 .align 16 59 _aesni_encrypt2: 60 movups (%edx),%xmm0 61 shll $4,%ecx 62 movups 16(%edx),%xmm1 63 xorps %xmm0,%xmm2 64 pxor %xmm0,%xmm3 65 movups 32(%edx),%xmm0 66 leal 32(%edx,%ecx,1),%edx 67 negl %ecx 68 addl $16,%ecx 69 .L002enc2_loop: 70 .byte 102,15,56,220,209 71 .byte 102,15,56,220,217 72 movups (%edx,%ecx,1),%xmm1 73 addl $32,%ecx 74 .byte 102,15,56,220,208 75 .byte 102,15,56,220,216 76 movups -16(%edx,%ecx,1),%xmm0 77 jnz .L002enc2_loop 78 .byte 102,15,56,220,209 79 .byte 102,15,56,220,217 80 .byte 102,15,56,221,208 81 .byte 102,15,56,221,216 82 ret 83 .size _aesni_encrypt2,.-_aesni_encrypt2 84 .type _aesni_decrypt2,@function 85 .align 16 86 _aesni_decrypt2: 87 movups (%edx),%xmm0 88 shll $4,%ecx 89 movups 16(%edx),%xmm1 90 xorps %xmm0,%xmm2 91 pxor %xmm0,%xmm3 92 movups 32(%edx),%xmm0 93 leal 32(%edx,%ecx,1),%edx 94 negl %ecx 95 addl $16,%ecx 96 .L003dec2_loop: 97 .byte 102,15,56,222,209 98 .byte 102,15,56,222,217 99 movups (%edx,%ecx,1),%xmm1 100 addl $32,%ecx 101 .byte 102,15,56,222,208 102 .byte 102,15,56,222,216 103 movups -16(%edx,%ecx,1),%xmm0 104 jnz .L003dec2_loop 105 .byte 102,15,56,222,209 106 .byte 102,15,56,222,217 107 .byte 102,15,56,223,208 108 .byte 102,15,56,223,216 109 ret 110 .size _aesni_decrypt2,.-_aesni_decrypt2 111 .type _aesni_encrypt3,@function 112 .align 16 113 _aesni_encrypt3: 114 movups (%edx),%xmm0 115 shll $4,%ecx 116 movups 16(%edx),%xmm1 117 xorps %xmm0,%xmm2 118 pxor %xmm0,%xmm3 119 pxor %xmm0,%xmm4 120 movups 32(%edx),%xmm0 121 leal 32(%edx,%ecx,1),%edx 122 negl %ecx 123 addl $16,%ecx 124 .L004enc3_loop: 125 .byte 102,15,56,220,209 126 .byte 102,15,56,220,217 127 .byte 102,15,56,220,225 128 movups (%edx,%ecx,1),%xmm1 129 addl $32,%ecx 130 .byte 102,15,56,220,208 131 .byte 102,15,56,220,216 132 .byte 102,15,56,220,224 133 movups -16(%edx,%ecx,1),%xmm0 134 jnz .L004enc3_loop 135 .byte 102,15,56,220,209 136 .byte 102,15,56,220,217 137 .byte 102,15,56,220,225 138 .byte 102,15,56,221,208 139 .byte 102,15,56,221,216 140 .byte 102,15,56,221,224 141 ret 142 .size _aesni_encrypt3,.-_aesni_encrypt3 143 .type _aesni_decrypt3,@function 144 .align 16 145 _aesni_decrypt3: 146 movups (%edx),%xmm0 147 shll $4,%ecx 148 movups 16(%edx),%xmm1 149 xorps %xmm0,%xmm2 150 pxor %xmm0,%xmm3 151 pxor %xmm0,%xmm4 152 movups 32(%edx),%xmm0 153 leal 32(%edx,%ecx,1),%edx 154 negl %ecx 155 addl $16,%ecx 156 .L005dec3_loop: 157 .byte 102,15,56,222,209 158 .byte 102,15,56,222,217 159 .byte 102,15,56,222,225 160 movups (%edx,%ecx,1),%xmm1 161 addl $32,%ecx 162 .byte 102,15,56,222,208 163 .byte 102,15,56,222,216 164 .byte 102,15,56,222,224 165 movups -16(%edx,%ecx,1),%xmm0 166 jnz .L005dec3_loop 167 .byte 102,15,56,222,209 168 .byte 102,15,56,222,217 169 .byte 102,15,56,222,225 170 .byte 102,15,56,223,208 171 .byte 102,15,56,223,216 172 .byte 102,15,56,223,224 173 ret 174 .size _aesni_decrypt3,.-_aesni_decrypt3 175 .type _aesni_encrypt4,@function 176 .align 16 177 _aesni_encrypt4: 178 movups (%edx),%xmm0 179 movups 16(%edx),%xmm1 180 shll $4,%ecx 181 xorps %xmm0,%xmm2 182 pxor %xmm0,%xmm3 183 pxor %xmm0,%xmm4 184 pxor %xmm0,%xmm5 185 movups 32(%edx),%xmm0 186 leal 32(%edx,%ecx,1),%edx 187 negl %ecx 188 .byte 15,31,64,0 189 addl $16,%ecx 190 .L006enc4_loop: 191 .byte 102,15,56,220,209 192 .byte 102,15,56,220,217 193 .byte 102,15,56,220,225 194 .byte 102,15,56,220,233 195 movups (%edx,%ecx,1),%xmm1 196 addl $32,%ecx 197 .byte 102,15,56,220,208 198 .byte 102,15,56,220,216 199 .byte 102,15,56,220,224 200 .byte 102,15,56,220,232 201 movups -16(%edx,%ecx,1),%xmm0 202 jnz .L006enc4_loop 203 .byte 102,15,56,220,209 204 .byte 102,15,56,220,217 205 .byte 102,15,56,220,225 206 .byte 102,15,56,220,233 207 .byte 102,15,56,221,208 208 .byte 102,15,56,221,216 209 .byte 102,15,56,221,224 210 .byte 102,15,56,221,232 211 ret 212 .size _aesni_encrypt4,.-_aesni_encrypt4 213 .type _aesni_decrypt4,@function 214 .align 16 215 _aesni_decrypt4: 216 movups (%edx),%xmm0 217 movups 16(%edx),%xmm1 218 shll $4,%ecx 219 xorps %xmm0,%xmm2 220 pxor %xmm0,%xmm3 221 pxor %xmm0,%xmm4 222 pxor %xmm0,%xmm5 223 movups 32(%edx),%xmm0 224 leal 32(%edx,%ecx,1),%edx 225 negl %ecx 226 .byte 15,31,64,0 227 addl $16,%ecx 228 .L007dec4_loop: 229 .byte 102,15,56,222,209 230 .byte 102,15,56,222,217 231 .byte 102,15,56,222,225 232 .byte 102,15,56,222,233 233 movups (%edx,%ecx,1),%xmm1 234 addl $32,%ecx 235 .byte 102,15,56,222,208 236 .byte 102,15,56,222,216 237 .byte 102,15,56,222,224 238 .byte 102,15,56,222,232 239 movups -16(%edx,%ecx,1),%xmm0 240 jnz .L007dec4_loop 241 .byte 102,15,56,222,209 242 .byte 102,15,56,222,217 243 .byte 102,15,56,222,225 244 .byte 102,15,56,222,233 245 .byte 102,15,56,223,208 246 .byte 102,15,56,223,216 247 .byte 102,15,56,223,224 248 .byte 102,15,56,223,232 249 ret 250 .size _aesni_decrypt4,.-_aesni_decrypt4 251 .type _aesni_encrypt6,@function 252 .align 16 253 _aesni_encrypt6: 254 movups (%edx),%xmm0 255 shll $4,%ecx 256 movups 16(%edx),%xmm1 257 xorps %xmm0,%xmm2 258 pxor %xmm0,%xmm3 259 pxor %xmm0,%xmm4 260 .byte 102,15,56,220,209 261 pxor %xmm0,%xmm5 262 pxor %xmm0,%xmm6 263 .byte 102,15,56,220,217 264 leal 32(%edx,%ecx,1),%edx 265 negl %ecx 266 .byte 102,15,56,220,225 267 pxor %xmm0,%xmm7 268 movups (%edx,%ecx,1),%xmm0 269 addl $16,%ecx 270 jmp .L008_aesni_encrypt6_inner 271 .align 16 272 .L009enc6_loop: 273 .byte 102,15,56,220,209 274 .byte 102,15,56,220,217 275 .byte 102,15,56,220,225 276 .L008_aesni_encrypt6_inner: 277 .byte 102,15,56,220,233 278 .byte 102,15,56,220,241 279 .byte 102,15,56,220,249 280 .L_aesni_encrypt6_enter: 281 movups (%edx,%ecx,1),%xmm1 282 addl $32,%ecx 283 .byte 102,15,56,220,208 284 .byte 102,15,56,220,216 285 .byte 102,15,56,220,224 286 .byte 102,15,56,220,232 287 .byte 102,15,56,220,240 288 .byte 102,15,56,220,248 289 movups -16(%edx,%ecx,1),%xmm0 290 jnz .L009enc6_loop 291 .byte 102,15,56,220,209 292 .byte 102,15,56,220,217 293 .byte 102,15,56,220,225 294 .byte 102,15,56,220,233 295 .byte 102,15,56,220,241 296 .byte 102,15,56,220,249 297 .byte 102,15,56,221,208 298 .byte 102,15,56,221,216 299 .byte 102,15,56,221,224 300 .byte 102,15,56,221,232 301 .byte 102,15,56,221,240 302 .byte 102,15,56,221,248 303 ret 304 .size _aesni_encrypt6,.-_aesni_encrypt6 305 .type _aesni_decrypt6,@function 306 .align 16 307 _aesni_decrypt6: 308 movups (%edx),%xmm0 309 shll $4,%ecx 310 movups 16(%edx),%xmm1 311 xorps %xmm0,%xmm2 312 pxor %xmm0,%xmm3 313 pxor %xmm0,%xmm4 314 .byte 102,15,56,222,209 315 pxor %xmm0,%xmm5 316 pxor %xmm0,%xmm6 317 .byte 102,15,56,222,217 318 leal 32(%edx,%ecx,1),%edx 319 negl %ecx 320 .byte 102,15,56,222,225 321 pxor %xmm0,%xmm7 322 movups (%edx,%ecx,1),%xmm0 323 addl $16,%ecx 324 jmp .L010_aesni_decrypt6_inner 325 .align 16 326 .L011dec6_loop: 327 .byte 102,15,56,222,209 328 .byte 102,15,56,222,217 329 .byte 102,15,56,222,225 330 .L010_aesni_decrypt6_inner: 331 .byte 102,15,56,222,233 332 .byte 102,15,56,222,241 333 .byte 102,15,56,222,249 334 .L_aesni_decrypt6_enter: 335 movups (%edx,%ecx,1),%xmm1 336 addl $32,%ecx 337 .byte 102,15,56,222,208 338 .byte 102,15,56,222,216 339 .byte 102,15,56,222,224 340 .byte 102,15,56,222,232 341 .byte 102,15,56,222,240 342 .byte 102,15,56,222,248 343 movups -16(%edx,%ecx,1),%xmm0 344 jnz .L011dec6_loop 345 .byte 102,15,56,222,209 346 .byte 102,15,56,222,217 347 .byte 102,15,56,222,225 348 .byte 102,15,56,222,233 349 .byte 102,15,56,222,241 350 .byte 102,15,56,222,249 351 .byte 102,15,56,223,208 352 .byte 102,15,56,223,216 353 .byte 102,15,56,223,224 354 .byte 102,15,56,223,232 355 .byte 102,15,56,223,240 356 .byte 102,15,56,223,248 357 ret 358 .size _aesni_decrypt6,.-_aesni_decrypt6 359 .globl aesni_ecb_encrypt 360 .type aesni_ecb_encrypt,@function 361 .align 16 362 aesni_ecb_encrypt: 363 .L_aesni_ecb_encrypt_begin: 364 pushl %ebp 365 pushl %ebx 366 pushl %esi 367 pushl %edi 368 movl 20(%esp),%esi 369 movl 24(%esp),%edi 370 movl 28(%esp),%eax 371 movl 32(%esp),%edx 372 movl 36(%esp),%ebx 373 andl $-16,%eax 374 jz .L012ecb_ret 375 movl 240(%edx),%ecx 376 testl %ebx,%ebx 377 jz .L013ecb_decrypt 378 movl %edx,%ebp 379 movl %ecx,%ebx 380 cmpl $96,%eax 381 jb .L014ecb_enc_tail 382 movdqu (%esi),%xmm2 383 movdqu 16(%esi),%xmm3 384 movdqu 32(%esi),%xmm4 385 movdqu 48(%esi),%xmm5 386 movdqu 64(%esi),%xmm6 387 movdqu 80(%esi),%xmm7 388 leal 96(%esi),%esi 389 subl $96,%eax 390 jmp .L015ecb_enc_loop6_enter 391 .align 16 392 .L016ecb_enc_loop6: 393 movups %xmm2,(%edi) 394 movdqu (%esi),%xmm2 395 movups %xmm3,16(%edi) 396 movdqu 16(%esi),%xmm3 397 movups %xmm4,32(%edi) 398 movdqu 32(%esi),%xmm4 399 movups %xmm5,48(%edi) 400 movdqu 48(%esi),%xmm5 401 movups %xmm6,64(%edi) 402 movdqu 64(%esi),%xmm6 403 movups %xmm7,80(%edi) 404 leal 96(%edi),%edi 405 movdqu 80(%esi),%xmm7 406 leal 96(%esi),%esi 407 .L015ecb_enc_loop6_enter: 408 call _aesni_encrypt6 409 movl %ebp,%edx 410 movl %ebx,%ecx 411 subl $96,%eax 412 jnc .L016ecb_enc_loop6 413 movups %xmm2,(%edi) 414 movups %xmm3,16(%edi) 415 movups %xmm4,32(%edi) 416 movups %xmm5,48(%edi) 417 movups %xmm6,64(%edi) 418 movups %xmm7,80(%edi) 419 leal 96(%edi),%edi 420 addl $96,%eax 421 jz .L012ecb_ret 422 .L014ecb_enc_tail: 423 movups (%esi),%xmm2 424 cmpl $32,%eax 425 jb .L017ecb_enc_one 426 movups 16(%esi),%xmm3 427 je .L018ecb_enc_two 428 movups 32(%esi),%xmm4 429 cmpl $64,%eax 430 jb .L019ecb_enc_three 431 movups 48(%esi),%xmm5 432 je .L020ecb_enc_four 433 movups 64(%esi),%xmm6 434 xorps %xmm7,%xmm7 435 call _aesni_encrypt6 436 movups %xmm2,(%edi) 437 movups %xmm3,16(%edi) 438 movups %xmm4,32(%edi) 439 movups %xmm5,48(%edi) 440 movups %xmm6,64(%edi) 441 jmp .L012ecb_ret 442 .align 16 443 .L017ecb_enc_one: 444 movups (%edx),%xmm0 445 movups 16(%edx),%xmm1 446 leal 32(%edx),%edx 447 xorps %xmm0,%xmm2 448 .L021enc1_loop_3: 449 .byte 102,15,56,220,209 450 decl %ecx 451 movups (%edx),%xmm1 452 leal 16(%edx),%edx 453 jnz .L021enc1_loop_3 454 .byte 102,15,56,221,209 455 movups %xmm2,(%edi) 456 jmp .L012ecb_ret 457 .align 16 458 .L018ecb_enc_two: 459 call _aesni_encrypt2 460 movups %xmm2,(%edi) 461 movups %xmm3,16(%edi) 462 jmp .L012ecb_ret 463 .align 16 464 .L019ecb_enc_three: 465 call _aesni_encrypt3 466 movups %xmm2,(%edi) 467 movups %xmm3,16(%edi) 468 movups %xmm4,32(%edi) 469 jmp .L012ecb_ret 470 .align 16 471 .L020ecb_enc_four: 472 call _aesni_encrypt4 473 movups %xmm2,(%edi) 474 movups %xmm3,16(%edi) 475 movups %xmm4,32(%edi) 476 movups %xmm5,48(%edi) 477 jmp .L012ecb_ret 478 .align 16 479 .L013ecb_decrypt: 480 movl %edx,%ebp 481 movl %ecx,%ebx 482 cmpl $96,%eax 483 jb .L022ecb_dec_tail 484 movdqu (%esi),%xmm2 485 movdqu 16(%esi),%xmm3 486 movdqu 32(%esi),%xmm4 487 movdqu 48(%esi),%xmm5 488 movdqu 64(%esi),%xmm6 489 movdqu 80(%esi),%xmm7 490 leal 96(%esi),%esi 491 subl $96,%eax 492 jmp .L023ecb_dec_loop6_enter 493 .align 16 494 .L024ecb_dec_loop6: 495 movups %xmm2,(%edi) 496 movdqu (%esi),%xmm2 497 movups %xmm3,16(%edi) 498 movdqu 16(%esi),%xmm3 499 movups %xmm4,32(%edi) 500 movdqu 32(%esi),%xmm4 501 movups %xmm5,48(%edi) 502 movdqu 48(%esi),%xmm5 503 movups %xmm6,64(%edi) 504 movdqu 64(%esi),%xmm6 505 movups %xmm7,80(%edi) 506 leal 96(%edi),%edi 507 movdqu 80(%esi),%xmm7 508 leal 96(%esi),%esi 509 .L023ecb_dec_loop6_enter: 510 call _aesni_decrypt6 511 movl %ebp,%edx 512 movl %ebx,%ecx 513 subl $96,%eax 514 jnc .L024ecb_dec_loop6 515 movups %xmm2,(%edi) 516 movups %xmm3,16(%edi) 517 movups %xmm4,32(%edi) 518 movups %xmm5,48(%edi) 519 movups %xmm6,64(%edi) 520 movups %xmm7,80(%edi) 521 leal 96(%edi),%edi 522 addl $96,%eax 523 jz .L012ecb_ret 524 .L022ecb_dec_tail: 525 movups (%esi),%xmm2 526 cmpl $32,%eax 527 jb .L025ecb_dec_one 528 movups 16(%esi),%xmm3 529 je .L026ecb_dec_two 530 movups 32(%esi),%xmm4 531 cmpl $64,%eax 532 jb .L027ecb_dec_three 533 movups 48(%esi),%xmm5 534 je .L028ecb_dec_four 535 movups 64(%esi),%xmm6 536 xorps %xmm7,%xmm7 537 call _aesni_decrypt6 538 movups %xmm2,(%edi) 539 movups %xmm3,16(%edi) 540 movups %xmm4,32(%edi) 541 movups %xmm5,48(%edi) 542 movups %xmm6,64(%edi) 543 jmp .L012ecb_ret 544 .align 16 545 .L025ecb_dec_one: 546 movups (%edx),%xmm0 547 movups 16(%edx),%xmm1 548 leal 32(%edx),%edx 549 xorps %xmm0,%xmm2 550 .L029dec1_loop_4: 551 .byte 102,15,56,222,209 552 decl %ecx 553 movups (%edx),%xmm1 554 leal 16(%edx),%edx 555 jnz .L029dec1_loop_4 556 .byte 102,15,56,223,209 557 movups %xmm2,(%edi) 558 jmp .L012ecb_ret 559 .align 16 560 .L026ecb_dec_two: 561 call _aesni_decrypt2 562 movups %xmm2,(%edi) 563 movups %xmm3,16(%edi) 564 jmp .L012ecb_ret 565 .align 16 566 .L027ecb_dec_three: 567 call _aesni_decrypt3 568 movups %xmm2,(%edi) 569 movups %xmm3,16(%edi) 570 movups %xmm4,32(%edi) 571 jmp .L012ecb_ret 572 .align 16 573 .L028ecb_dec_four: 574 call _aesni_decrypt4 575 movups %xmm2,(%edi) 576 movups %xmm3,16(%edi) 577 movups %xmm4,32(%edi) 578 movups %xmm5,48(%edi) 579 .L012ecb_ret: 580 pxor %xmm0,%xmm0 581 pxor %xmm1,%xmm1 582 pxor %xmm2,%xmm2 583 pxor %xmm3,%xmm3 584 pxor %xmm4,%xmm4 585 pxor %xmm5,%xmm5 586 pxor %xmm6,%xmm6 587 pxor %xmm7,%xmm7 588 popl %edi 589 popl %esi 590 popl %ebx 591 popl %ebp 592 ret 593 .size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 594 .globl aesni_ccm64_encrypt_blocks 595 .type aesni_ccm64_encrypt_blocks,@function 596 .align 16 597 aesni_ccm64_encrypt_blocks: 598 .L_aesni_ccm64_encrypt_blocks_begin: 599 pushl %ebp 600 pushl %ebx 601 pushl %esi 602 pushl %edi 603 movl 20(%esp),%esi 604 movl 24(%esp),%edi 605 movl 28(%esp),%eax 606 movl 32(%esp),%edx 607 movl 36(%esp),%ebx 608 movl 40(%esp),%ecx 609 movl %esp,%ebp 610 subl $60,%esp 611 andl $-16,%esp 612 movl %ebp,48(%esp) 613 movdqu (%ebx),%xmm7 614 movdqu (%ecx),%xmm3 615 movl 240(%edx),%ecx 616 movl $202182159,(%esp) 617 movl $134810123,4(%esp) 618 movl $67438087,8(%esp) 619 movl $66051,12(%esp) 620 movl $1,%ebx 621 xorl %ebp,%ebp 622 movl %ebx,16(%esp) 623 movl %ebp,20(%esp) 624 movl %ebp,24(%esp) 625 movl %ebp,28(%esp) 626 shll $4,%ecx 627 movl $16,%ebx 628 leal (%edx),%ebp 629 movdqa (%esp),%xmm5 630 movdqa %xmm7,%xmm2 631 leal 32(%edx,%ecx,1),%edx 632 subl %ecx,%ebx 633 .byte 102,15,56,0,253 634 .L030ccm64_enc_outer: 635 movups (%ebp),%xmm0 636 movl %ebx,%ecx 637 movups (%esi),%xmm6 638 xorps %xmm0,%xmm2 639 movups 16(%ebp),%xmm1 640 xorps %xmm6,%xmm0 641 xorps %xmm0,%xmm3 642 movups 32(%ebp),%xmm0 643 .L031ccm64_enc2_loop: 644 .byte 102,15,56,220,209 645 .byte 102,15,56,220,217 646 movups (%edx,%ecx,1),%xmm1 647 addl $32,%ecx 648 .byte 102,15,56,220,208 649 .byte 102,15,56,220,216 650 movups -16(%edx,%ecx,1),%xmm0 651 jnz .L031ccm64_enc2_loop 652 .byte 102,15,56,220,209 653 .byte 102,15,56,220,217 654 paddq 16(%esp),%xmm7 655 decl %eax 656 .byte 102,15,56,221,208 657 .byte 102,15,56,221,216 658 leal 16(%esi),%esi 659 xorps %xmm2,%xmm6 660 movdqa %xmm7,%xmm2 661 movups %xmm6,(%edi) 662 .byte 102,15,56,0,213 663 leal 16(%edi),%edi 664 jnz .L030ccm64_enc_outer 665 movl 48(%esp),%esp 666 movl 40(%esp),%edi 667 movups %xmm3,(%edi) 668 pxor %xmm0,%xmm0 669 pxor %xmm1,%xmm1 670 pxor %xmm2,%xmm2 671 pxor %xmm3,%xmm3 672 pxor %xmm4,%xmm4 673 pxor %xmm5,%xmm5 674 pxor %xmm6,%xmm6 675 pxor %xmm7,%xmm7 676 popl %edi 677 popl %esi 678 popl %ebx 679 popl %ebp 680 ret 681 .size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 682 .globl aesni_ccm64_decrypt_blocks 683 .type aesni_ccm64_decrypt_blocks,@function 684 .align 16 685 aesni_ccm64_decrypt_blocks: 686 .L_aesni_ccm64_decrypt_blocks_begin: 687 pushl %ebp 688 pushl %ebx 689 pushl %esi 690 pushl %edi 691 movl 20(%esp),%esi 692 movl 24(%esp),%edi 693 movl 28(%esp),%eax 694 movl 32(%esp),%edx 695 movl 36(%esp),%ebx 696 movl 40(%esp),%ecx 697 movl %esp,%ebp 698 subl $60,%esp 699 andl $-16,%esp 700 movl %ebp,48(%esp) 701 movdqu (%ebx),%xmm7 702 movdqu (%ecx),%xmm3 703 movl 240(%edx),%ecx 704 movl $202182159,(%esp) 705 movl $134810123,4(%esp) 706 movl $67438087,8(%esp) 707 movl $66051,12(%esp) 708 movl $1,%ebx 709 xorl %ebp,%ebp 710 movl %ebx,16(%esp) 711 movl %ebp,20(%esp) 712 movl %ebp,24(%esp) 713 movl %ebp,28(%esp) 714 movdqa (%esp),%xmm5 715 movdqa %xmm7,%xmm2 716 movl %edx,%ebp 717 movl %ecx,%ebx 718 .byte 102,15,56,0,253 719 movups (%edx),%xmm0 720 movups 16(%edx),%xmm1 721 leal 32(%edx),%edx 722 xorps %xmm0,%xmm2 723 .L032enc1_loop_5: 724 .byte 102,15,56,220,209 725 decl %ecx 726 movups (%edx),%xmm1 727 leal 16(%edx),%edx 728 jnz .L032enc1_loop_5 729 .byte 102,15,56,221,209 730 shll $4,%ebx 731 movl $16,%ecx 732 movups (%esi),%xmm6 733 paddq 16(%esp),%xmm7 734 leal 16(%esi),%esi 735 subl %ebx,%ecx 736 leal 32(%ebp,%ebx,1),%edx 737 movl %ecx,%ebx 738 jmp .L033ccm64_dec_outer 739 .align 16 740 .L033ccm64_dec_outer: 741 xorps %xmm2,%xmm6 742 movdqa %xmm7,%xmm2 743 movups %xmm6,(%edi) 744 leal 16(%edi),%edi 745 .byte 102,15,56,0,213 746 subl $1,%eax 747 jz .L034ccm64_dec_break 748 movups (%ebp),%xmm0 749 movl %ebx,%ecx 750 movups 16(%ebp),%xmm1 751 xorps %xmm0,%xmm6 752 xorps %xmm0,%xmm2 753 xorps %xmm6,%xmm3 754 movups 32(%ebp),%xmm0 755 .L035ccm64_dec2_loop: 756 .byte 102,15,56,220,209 757 .byte 102,15,56,220,217 758 movups (%edx,%ecx,1),%xmm1 759 addl $32,%ecx 760 .byte 102,15,56,220,208 761 .byte 102,15,56,220,216 762 movups -16(%edx,%ecx,1),%xmm0 763 jnz .L035ccm64_dec2_loop 764 movups (%esi),%xmm6 765 paddq 16(%esp),%xmm7 766 .byte 102,15,56,220,209 767 .byte 102,15,56,220,217 768 .byte 102,15,56,221,208 769 .byte 102,15,56,221,216 770 leal 16(%esi),%esi 771 jmp .L033ccm64_dec_outer 772 .align 16 773 .L034ccm64_dec_break: 774 movl 240(%ebp),%ecx 775 movl %ebp,%edx 776 movups (%edx),%xmm0 777 movups 16(%edx),%xmm1 778 xorps %xmm0,%xmm6 779 leal 32(%edx),%edx 780 xorps %xmm6,%xmm3 781 .L036enc1_loop_6: 782 .byte 102,15,56,220,217 783 decl %ecx 784 movups (%edx),%xmm1 785 leal 16(%edx),%edx 786 jnz .L036enc1_loop_6 787 .byte 102,15,56,221,217 788 movl 48(%esp),%esp 789 movl 40(%esp),%edi 790 movups %xmm3,(%edi) 791 pxor %xmm0,%xmm0 792 pxor %xmm1,%xmm1 793 pxor %xmm2,%xmm2 794 pxor %xmm3,%xmm3 795 pxor %xmm4,%xmm4 796 pxor %xmm5,%xmm5 797 pxor %xmm6,%xmm6 798 pxor %xmm7,%xmm7 799 popl %edi 800 popl %esi 801 popl %ebx 802 popl %ebp 803 ret 804 .size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 805 .globl aesni_ctr32_encrypt_blocks 806 .type aesni_ctr32_encrypt_blocks,@function 807 .align 16 808 aesni_ctr32_encrypt_blocks: 809 .L_aesni_ctr32_encrypt_blocks_begin: 810 pushl %ebp 811 pushl %ebx 812 pushl %esi 813 pushl %edi 814 movl 20(%esp),%esi 815 movl 24(%esp),%edi 816 movl 28(%esp),%eax 817 movl 32(%esp),%edx 818 movl 36(%esp),%ebx 819 movl %esp,%ebp 820 subl $88,%esp 821 andl $-16,%esp 822 movl %ebp,80(%esp) 823 cmpl $1,%eax 824 je .L037ctr32_one_shortcut 825 movdqu (%ebx),%xmm7 826 movl $202182159,(%esp) 827 movl $134810123,4(%esp) 828 movl $67438087,8(%esp) 829 movl $66051,12(%esp) 830 movl $6,%ecx 831 xorl %ebp,%ebp 832 movl %ecx,16(%esp) 833 movl %ecx,20(%esp) 834 movl %ecx,24(%esp) 835 movl %ebp,28(%esp) 836 .byte 102,15,58,22,251,3 837 .byte 102,15,58,34,253,3 838 movl 240(%edx),%ecx 839 bswap %ebx 840 pxor %xmm0,%xmm0 841 pxor %xmm1,%xmm1 842 movdqa (%esp),%xmm2 843 .byte 102,15,58,34,195,0 844 leal 3(%ebx),%ebp 845 .byte 102,15,58,34,205,0 846 incl %ebx 847 .byte 102,15,58,34,195,1 848 incl %ebp 849 .byte 102,15,58,34,205,1 850 incl %ebx 851 .byte 102,15,58,34,195,2 852 incl %ebp 853 .byte 102,15,58,34,205,2 854 movdqa %xmm0,48(%esp) 855 .byte 102,15,56,0,194 856 movdqu (%edx),%xmm6 857 movdqa %xmm1,64(%esp) 858 .byte 102,15,56,0,202 859 pshufd $192,%xmm0,%xmm2 860 pshufd $128,%xmm0,%xmm3 861 cmpl $6,%eax 862 jb .L038ctr32_tail 863 pxor %xmm6,%xmm7 864 shll $4,%ecx 865 movl $16,%ebx 866 movdqa %xmm7,32(%esp) 867 movl %edx,%ebp 868 subl %ecx,%ebx 869 leal 32(%edx,%ecx,1),%edx 870 subl $6,%eax 871 jmp .L039ctr32_loop6 872 .align 16 873 .L039ctr32_loop6: 874 pshufd $64,%xmm0,%xmm4 875 movdqa 32(%esp),%xmm0 876 pshufd $192,%xmm1,%xmm5 877 pxor %xmm0,%xmm2 878 pshufd $128,%xmm1,%xmm6 879 pxor %xmm0,%xmm3 880 pshufd $64,%xmm1,%xmm7 881 movups 16(%ebp),%xmm1 882 pxor %xmm0,%xmm4 883 pxor %xmm0,%xmm5 884 .byte 102,15,56,220,209 885 pxor %xmm0,%xmm6 886 pxor %xmm0,%xmm7 887 .byte 102,15,56,220,217 888 movups 32(%ebp),%xmm0 889 movl %ebx,%ecx 890 .byte 102,15,56,220,225 891 .byte 102,15,56,220,233 892 .byte 102,15,56,220,241 893 .byte 102,15,56,220,249 894 call .L_aesni_encrypt6_enter 895 movups (%esi),%xmm1 896 movups 16(%esi),%xmm0 897 xorps %xmm1,%xmm2 898 movups 32(%esi),%xmm1 899 xorps %xmm0,%xmm3 900 movups %xmm2,(%edi) 901 movdqa 16(%esp),%xmm0 902 xorps %xmm1,%xmm4 903 movdqa 64(%esp),%xmm1 904 movups %xmm3,16(%edi) 905 movups %xmm4,32(%edi) 906 paddd %xmm0,%xmm1 907 paddd 48(%esp),%xmm0 908 movdqa (%esp),%xmm2 909 movups 48(%esi),%xmm3 910 movups 64(%esi),%xmm4 911 xorps %xmm3,%xmm5 912 movups 80(%esi),%xmm3 913 leal 96(%esi),%esi 914 movdqa %xmm0,48(%esp) 915 .byte 102,15,56,0,194 916 xorps %xmm4,%xmm6 917 movups %xmm5,48(%edi) 918 xorps %xmm3,%xmm7 919 movdqa %xmm1,64(%esp) 920 .byte 102,15,56,0,202 921 movups %xmm6,64(%edi) 922 pshufd $192,%xmm0,%xmm2 923 movups %xmm7,80(%edi) 924 leal 96(%edi),%edi 925 pshufd $128,%xmm0,%xmm3 926 subl $6,%eax 927 jnc .L039ctr32_loop6 928 addl $6,%eax 929 jz .L040ctr32_ret 930 movdqu (%ebp),%xmm7 931 movl %ebp,%edx 932 pxor 32(%esp),%xmm7 933 movl 240(%ebp),%ecx 934 .L038ctr32_tail: 935 por %xmm7,%xmm2 936 cmpl $2,%eax 937 jb .L041ctr32_one 938 pshufd $64,%xmm0,%xmm4 939 por %xmm7,%xmm3 940 je .L042ctr32_two 941 pshufd $192,%xmm1,%xmm5 942 por %xmm7,%xmm4 943 cmpl $4,%eax 944 jb .L043ctr32_three 945 pshufd $128,%xmm1,%xmm6 946 por %xmm7,%xmm5 947 je .L044ctr32_four 948 por %xmm7,%xmm6 949 call _aesni_encrypt6 950 movups (%esi),%xmm1 951 movups 16(%esi),%xmm0 952 xorps %xmm1,%xmm2 953 movups 32(%esi),%xmm1 954 xorps %xmm0,%xmm3 955 movups 48(%esi),%xmm0 956 xorps %xmm1,%xmm4 957 movups 64(%esi),%xmm1 958 xorps %xmm0,%xmm5 959 movups %xmm2,(%edi) 960 xorps %xmm1,%xmm6 961 movups %xmm3,16(%edi) 962 movups %xmm4,32(%edi) 963 movups %xmm5,48(%edi) 964 movups %xmm6,64(%edi) 965 jmp .L040ctr32_ret 966 .align 16 967 .L037ctr32_one_shortcut: 968 movups (%ebx),%xmm2 969 movl 240(%edx),%ecx 970 .L041ctr32_one: 971 movups (%edx),%xmm0 972 movups 16(%edx),%xmm1 973 leal 32(%edx),%edx 974 xorps %xmm0,%xmm2 975 .L045enc1_loop_7: 976 .byte 102,15,56,220,209 977 decl %ecx 978 movups (%edx),%xmm1 979 leal 16(%edx),%edx 980 jnz .L045enc1_loop_7 981 .byte 102,15,56,221,209 982 movups (%esi),%xmm6 983 xorps %xmm2,%xmm6 984 movups %xmm6,(%edi) 985 jmp .L040ctr32_ret 986 .align 16 987 .L042ctr32_two: 988 call _aesni_encrypt2 989 movups (%esi),%xmm5 990 movups 16(%esi),%xmm6 991 xorps %xmm5,%xmm2 992 xorps %xmm6,%xmm3 993 movups %xmm2,(%edi) 994 movups %xmm3,16(%edi) 995 jmp .L040ctr32_ret 996 .align 16 997 .L043ctr32_three: 998 call _aesni_encrypt3 999 movups (%esi),%xmm5 1000 movups 16(%esi),%xmm6 1001 xorps %xmm5,%xmm2 1002 movups 32(%esi),%xmm7 1003 xorps %xmm6,%xmm3 1004 movups %xmm2,(%edi) 1005 xorps %xmm7,%xmm4 1006 movups %xmm3,16(%edi) 1007 movups %xmm4,32(%edi) 1008 jmp .L040ctr32_ret 1009 .align 16 1010 .L044ctr32_four: 1011 call _aesni_encrypt4 1012 movups (%esi),%xmm6 1013 movups 16(%esi),%xmm7 1014 movups 32(%esi),%xmm1 1015 xorps %xmm6,%xmm2 1016 movups 48(%esi),%xmm0 1017 xorps %xmm7,%xmm3 1018 movups %xmm2,(%edi) 1019 xorps %xmm1,%xmm4 1020 movups %xmm3,16(%edi) 1021 xorps %xmm0,%xmm5 1022 movups %xmm4,32(%edi) 1023 movups %xmm5,48(%edi) 1024 .L040ctr32_ret: 1025 pxor %xmm0,%xmm0 1026 pxor %xmm1,%xmm1 1027 pxor %xmm2,%xmm2 1028 pxor %xmm3,%xmm3 1029 pxor %xmm4,%xmm4 1030 movdqa %xmm0,32(%esp) 1031 pxor %xmm5,%xmm5 1032 movdqa %xmm0,48(%esp) 1033 pxor %xmm6,%xmm6 1034 movdqa %xmm0,64(%esp) 1035 pxor %xmm7,%xmm7 1036 movl 80(%esp),%esp 1037 popl %edi 1038 popl %esi 1039 popl %ebx 1040 popl %ebp 1041 ret 1042 .size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 1043 .globl aesni_xts_encrypt 1044 .type aesni_xts_encrypt,@function 1045 .align 16 1046 aesni_xts_encrypt: 1047 .L_aesni_xts_encrypt_begin: 1048 pushl %ebp 1049 pushl %ebx 1050 pushl %esi 1051 pushl %edi 1052 movl 36(%esp),%edx 1053 movl 40(%esp),%esi 1054 movl 240(%edx),%ecx 1055 movups (%esi),%xmm2 1056 movups (%edx),%xmm0 1057 movups 16(%edx),%xmm1 1058 leal 32(%edx),%edx 1059 xorps %xmm0,%xmm2 1060 .L046enc1_loop_8: 1061 .byte 102,15,56,220,209 1062 decl %ecx 1063 movups (%edx),%xmm1 1064 leal 16(%edx),%edx 1065 jnz .L046enc1_loop_8 1066 .byte 102,15,56,221,209 1067 movl 20(%esp),%esi 1068 movl 24(%esp),%edi 1069 movl 28(%esp),%eax 1070 movl 32(%esp),%edx 1071 movl %esp,%ebp 1072 subl $120,%esp 1073 movl 240(%edx),%ecx 1074 andl $-16,%esp 1075 movl $135,96(%esp) 1076 movl $0,100(%esp) 1077 movl $1,104(%esp) 1078 movl $0,108(%esp) 1079 movl %eax,112(%esp) 1080 movl %ebp,116(%esp) 1081 movdqa %xmm2,%xmm1 1082 pxor %xmm0,%xmm0 1083 movdqa 96(%esp),%xmm3 1084 pcmpgtd %xmm1,%xmm0 1085 andl $-16,%eax 1086 movl %edx,%ebp 1087 movl %ecx,%ebx 1088 subl $96,%eax 1089 jc .L047xts_enc_short 1090 shll $4,%ecx 1091 movl $16,%ebx 1092 subl %ecx,%ebx 1093 leal 32(%edx,%ecx,1),%edx 1094 jmp .L048xts_enc_loop6 1095 .align 16 1096 .L048xts_enc_loop6: 1097 pshufd $19,%xmm0,%xmm2 1098 pxor %xmm0,%xmm0 1099 movdqa %xmm1,(%esp) 1100 paddq %xmm1,%xmm1 1101 pand %xmm3,%xmm2 1102 pcmpgtd %xmm1,%xmm0 1103 pxor %xmm2,%xmm1 1104 pshufd $19,%xmm0,%xmm2 1105 pxor %xmm0,%xmm0 1106 movdqa %xmm1,16(%esp) 1107 paddq %xmm1,%xmm1 1108 pand %xmm3,%xmm2 1109 pcmpgtd %xmm1,%xmm0 1110 pxor %xmm2,%xmm1 1111 pshufd $19,%xmm0,%xmm2 1112 pxor %xmm0,%xmm0 1113 movdqa %xmm1,32(%esp) 1114 paddq %xmm1,%xmm1 1115 pand %xmm3,%xmm2 1116 pcmpgtd %xmm1,%xmm0 1117 pxor %xmm2,%xmm1 1118 pshufd $19,%xmm0,%xmm2 1119 pxor %xmm0,%xmm0 1120 movdqa %xmm1,48(%esp) 1121 paddq %xmm1,%xmm1 1122 pand %xmm3,%xmm2 1123 pcmpgtd %xmm1,%xmm0 1124 pxor %xmm2,%xmm1 1125 pshufd $19,%xmm0,%xmm7 1126 movdqa %xmm1,64(%esp) 1127 paddq %xmm1,%xmm1 1128 movups (%ebp),%xmm0 1129 pand %xmm3,%xmm7 1130 movups (%esi),%xmm2 1131 pxor %xmm1,%xmm7 1132 movl %ebx,%ecx 1133 movdqu 16(%esi),%xmm3 1134 xorps %xmm0,%xmm2 1135 movdqu 32(%esi),%xmm4 1136 pxor %xmm0,%xmm3 1137 movdqu 48(%esi),%xmm5 1138 pxor %xmm0,%xmm4 1139 movdqu 64(%esi),%xmm6 1140 pxor %xmm0,%xmm5 1141 movdqu 80(%esi),%xmm1 1142 pxor %xmm0,%xmm6 1143 leal 96(%esi),%esi 1144 pxor (%esp),%xmm2 1145 movdqa %xmm7,80(%esp) 1146 pxor %xmm1,%xmm7 1147 movups 16(%ebp),%xmm1 1148 pxor 16(%esp),%xmm3 1149 pxor 32(%esp),%xmm4 1150 .byte 102,15,56,220,209 1151 pxor 48(%esp),%xmm5 1152 pxor 64(%esp),%xmm6 1153 .byte 102,15,56,220,217 1154 pxor %xmm0,%xmm7 1155 movups 32(%ebp),%xmm0 1156 .byte 102,15,56,220,225 1157 .byte 102,15,56,220,233 1158 .byte 102,15,56,220,241 1159 .byte 102,15,56,220,249 1160 call .L_aesni_encrypt6_enter 1161 movdqa 80(%esp),%xmm1 1162 pxor %xmm0,%xmm0 1163 xorps (%esp),%xmm2 1164 pcmpgtd %xmm1,%xmm0 1165 xorps 16(%esp),%xmm3 1166 movups %xmm2,(%edi) 1167 xorps 32(%esp),%xmm4 1168 movups %xmm3,16(%edi) 1169 xorps 48(%esp),%xmm5 1170 movups %xmm4,32(%edi) 1171 xorps 64(%esp),%xmm6 1172 movups %xmm5,48(%edi) 1173 xorps %xmm1,%xmm7 1174 movups %xmm6,64(%edi) 1175 pshufd $19,%xmm0,%xmm2 1176 movups %xmm7,80(%edi) 1177 leal 96(%edi),%edi 1178 movdqa 96(%esp),%xmm3 1179 pxor %xmm0,%xmm0 1180 paddq %xmm1,%xmm1 1181 pand %xmm3,%xmm2 1182 pcmpgtd %xmm1,%xmm0 1183 pxor %xmm2,%xmm1 1184 subl $96,%eax 1185 jnc .L048xts_enc_loop6 1186 movl 240(%ebp),%ecx 1187 movl %ebp,%edx 1188 movl %ecx,%ebx 1189 .L047xts_enc_short: 1190 addl $96,%eax 1191 jz .L049xts_enc_done6x 1192 movdqa %xmm1,%xmm5 1193 cmpl $32,%eax 1194 jb .L050xts_enc_one 1195 pshufd $19,%xmm0,%xmm2 1196 pxor %xmm0,%xmm0 1197 paddq %xmm1,%xmm1 1198 pand %xmm3,%xmm2 1199 pcmpgtd %xmm1,%xmm0 1200 pxor %xmm2,%xmm1 1201 je .L051xts_enc_two 1202 pshufd $19,%xmm0,%xmm2 1203 pxor %xmm0,%xmm0 1204 movdqa %xmm1,%xmm6 1205 paddq %xmm1,%xmm1 1206 pand %xmm3,%xmm2 1207 pcmpgtd %xmm1,%xmm0 1208 pxor %xmm2,%xmm1 1209 cmpl $64,%eax 1210 jb .L052xts_enc_three 1211 pshufd $19,%xmm0,%xmm2 1212 pxor %xmm0,%xmm0 1213 movdqa %xmm1,%xmm7 1214 paddq %xmm1,%xmm1 1215 pand %xmm3,%xmm2 1216 pcmpgtd %xmm1,%xmm0 1217 pxor %xmm2,%xmm1 1218 movdqa %xmm5,(%esp) 1219 movdqa %xmm6,16(%esp) 1220 je .L053xts_enc_four 1221 movdqa %xmm7,32(%esp) 1222 pshufd $19,%xmm0,%xmm7 1223 movdqa %xmm1,48(%esp) 1224 paddq %xmm1,%xmm1 1225 pand %xmm3,%xmm7 1226 pxor %xmm1,%xmm7 1227 movdqu (%esi),%xmm2 1228 movdqu 16(%esi),%xmm3 1229 movdqu 32(%esi),%xmm4 1230 pxor (%esp),%xmm2 1231 movdqu 48(%esi),%xmm5 1232 pxor 16(%esp),%xmm3 1233 movdqu 64(%esi),%xmm6 1234 pxor 32(%esp),%xmm4 1235 leal 80(%esi),%esi 1236 pxor 48(%esp),%xmm5 1237 movdqa %xmm7,64(%esp) 1238 pxor %xmm7,%xmm6 1239 call _aesni_encrypt6 1240 movaps 64(%esp),%xmm1 1241 xorps (%esp),%xmm2 1242 xorps 16(%esp),%xmm3 1243 xorps 32(%esp),%xmm4 1244 movups %xmm2,(%edi) 1245 xorps 48(%esp),%xmm5 1246 movups %xmm3,16(%edi) 1247 xorps %xmm1,%xmm6 1248 movups %xmm4,32(%edi) 1249 movups %xmm5,48(%edi) 1250 movups %xmm6,64(%edi) 1251 leal 80(%edi),%edi 1252 jmp .L054xts_enc_done 1253 .align 16 1254 .L050xts_enc_one: 1255 movups (%esi),%xmm2 1256 leal 16(%esi),%esi 1257 xorps %xmm5,%xmm2 1258 movups (%edx),%xmm0 1259 movups 16(%edx),%xmm1 1260 leal 32(%edx),%edx 1261 xorps %xmm0,%xmm2 1262 .L055enc1_loop_9: 1263 .byte 102,15,56,220,209 1264 decl %ecx 1265 movups (%edx),%xmm1 1266 leal 16(%edx),%edx 1267 jnz .L055enc1_loop_9 1268 .byte 102,15,56,221,209 1269 xorps %xmm5,%xmm2 1270 movups %xmm2,(%edi) 1271 leal 16(%edi),%edi 1272 movdqa %xmm5,%xmm1 1273 jmp .L054xts_enc_done 1274 .align 16 1275 .L051xts_enc_two: 1276 movaps %xmm1,%xmm6 1277 movups (%esi),%xmm2 1278 movups 16(%esi),%xmm3 1279 leal 32(%esi),%esi 1280 xorps %xmm5,%xmm2 1281 xorps %xmm6,%xmm3 1282 call _aesni_encrypt2 1283 xorps %xmm5,%xmm2 1284 xorps %xmm6,%xmm3 1285 movups %xmm2,(%edi) 1286 movups %xmm3,16(%edi) 1287 leal 32(%edi),%edi 1288 movdqa %xmm6,%xmm1 1289 jmp .L054xts_enc_done 1290 .align 16 1291 .L052xts_enc_three: 1292 movaps %xmm1,%xmm7 1293 movups (%esi),%xmm2 1294 movups 16(%esi),%xmm3 1295 movups 32(%esi),%xmm4 1296 leal 48(%esi),%esi 1297 xorps %xmm5,%xmm2 1298 xorps %xmm6,%xmm3 1299 xorps %xmm7,%xmm4 1300 call _aesni_encrypt3 1301 xorps %xmm5,%xmm2 1302 xorps %xmm6,%xmm3 1303 xorps %xmm7,%xmm4 1304 movups %xmm2,(%edi) 1305 movups %xmm3,16(%edi) 1306 movups %xmm4,32(%edi) 1307 leal 48(%edi),%edi 1308 movdqa %xmm7,%xmm1 1309 jmp .L054xts_enc_done 1310 .align 16 1311 .L053xts_enc_four: 1312 movaps %xmm1,%xmm6 1313 movups (%esi),%xmm2 1314 movups 16(%esi),%xmm3 1315 movups 32(%esi),%xmm4 1316 xorps (%esp),%xmm2 1317 movups 48(%esi),%xmm5 1318 leal 64(%esi),%esi 1319 xorps 16(%esp),%xmm3 1320 xorps %xmm7,%xmm4 1321 xorps %xmm6,%xmm5 1322 call _aesni_encrypt4 1323 xorps (%esp),%xmm2 1324 xorps 16(%esp),%xmm3 1325 xorps %xmm7,%xmm4 1326 movups %xmm2,(%edi) 1327 xorps %xmm6,%xmm5 1328 movups %xmm3,16(%edi) 1329 movups %xmm4,32(%edi) 1330 movups %xmm5,48(%edi) 1331 leal 64(%edi),%edi 1332 movdqa %xmm6,%xmm1 1333 jmp .L054xts_enc_done 1334 .align 16 1335 .L049xts_enc_done6x: 1336 movl 112(%esp),%eax 1337 andl $15,%eax 1338 jz .L056xts_enc_ret 1339 movdqa %xmm1,%xmm5 1340 movl %eax,112(%esp) 1341 jmp .L057xts_enc_steal 1342 .align 16 1343 .L054xts_enc_done: 1344 movl 112(%esp),%eax 1345 pxor %xmm0,%xmm0 1346 andl $15,%eax 1347 jz .L056xts_enc_ret 1348 pcmpgtd %xmm1,%xmm0 1349 movl %eax,112(%esp) 1350 pshufd $19,%xmm0,%xmm5 1351 paddq %xmm1,%xmm1 1352 pand 96(%esp),%xmm5 1353 pxor %xmm1,%xmm5 1354 .L057xts_enc_steal: 1355 movzbl (%esi),%ecx 1356 movzbl -16(%edi),%edx 1357 leal 1(%esi),%esi 1358 movb %cl,-16(%edi) 1359 movb %dl,(%edi) 1360 leal 1(%edi),%edi 1361 subl $1,%eax 1362 jnz .L057xts_enc_steal 1363 subl 112(%esp),%edi 1364 movl %ebp,%edx 1365 movl %ebx,%ecx 1366 movups -16(%edi),%xmm2 1367 xorps %xmm5,%xmm2 1368 movups (%edx),%xmm0 1369 movups 16(%edx),%xmm1 1370 leal 32(%edx),%edx 1371 xorps %xmm0,%xmm2 1372 .L058enc1_loop_10: 1373 .byte 102,15,56,220,209 1374 decl %ecx 1375 movups (%edx),%xmm1 1376 leal 16(%edx),%edx 1377 jnz .L058enc1_loop_10 1378 .byte 102,15,56,221,209 1379 xorps %xmm5,%xmm2 1380 movups %xmm2,-16(%edi) 1381 .L056xts_enc_ret: 1382 pxor %xmm0,%xmm0 1383 pxor %xmm1,%xmm1 1384 pxor %xmm2,%xmm2 1385 movdqa %xmm0,(%esp) 1386 pxor %xmm3,%xmm3 1387 movdqa %xmm0,16(%esp) 1388 pxor %xmm4,%xmm4 1389 movdqa %xmm0,32(%esp) 1390 pxor %xmm5,%xmm5 1391 movdqa %xmm0,48(%esp) 1392 pxor %xmm6,%xmm6 1393 movdqa %xmm0,64(%esp) 1394 pxor %xmm7,%xmm7 1395 movdqa %xmm0,80(%esp) 1396 movl 116(%esp),%esp 1397 popl %edi 1398 popl %esi 1399 popl %ebx 1400 popl %ebp 1401 ret 1402 .size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 1403 .globl aesni_xts_decrypt 1404 .type aesni_xts_decrypt,@function 1405 .align 16 1406 aesni_xts_decrypt: 1407 .L_aesni_xts_decrypt_begin: 1408 pushl %ebp 1409 pushl %ebx 1410 pushl %esi 1411 pushl %edi 1412 movl 36(%esp),%edx 1413 movl 40(%esp),%esi 1414 movl 240(%edx),%ecx 1415 movups (%esi),%xmm2 1416 movups (%edx),%xmm0 1417 movups 16(%edx),%xmm1 1418 leal 32(%edx),%edx 1419 xorps %xmm0,%xmm2 1420 .L059enc1_loop_11: 1421 .byte 102,15,56,220,209 1422 decl %ecx 1423 movups (%edx),%xmm1 1424 leal 16(%edx),%edx 1425 jnz .L059enc1_loop_11 1426 .byte 102,15,56,221,209 1427 movl 20(%esp),%esi 1428 movl 24(%esp),%edi 1429 movl 28(%esp),%eax 1430 movl 32(%esp),%edx 1431 movl %esp,%ebp 1432 subl $120,%esp 1433 andl $-16,%esp 1434 xorl %ebx,%ebx 1435 testl $15,%eax 1436 setnz %bl 1437 shll $4,%ebx 1438 subl %ebx,%eax 1439 movl $135,96(%esp) 1440 movl $0,100(%esp) 1441 movl $1,104(%esp) 1442 movl $0,108(%esp) 1443 movl %eax,112(%esp) 1444 movl %ebp,116(%esp) 1445 movl 240(%edx),%ecx 1446 movl %edx,%ebp 1447 movl %ecx,%ebx 1448 movdqa %xmm2,%xmm1 1449 pxor %xmm0,%xmm0 1450 movdqa 96(%esp),%xmm3 1451 pcmpgtd %xmm1,%xmm0 1452 andl $-16,%eax 1453 subl $96,%eax 1454 jc .L060xts_dec_short 1455 shll $4,%ecx 1456 movl $16,%ebx 1457 subl %ecx,%ebx 1458 leal 32(%edx,%ecx,1),%edx 1459 jmp .L061xts_dec_loop6 1460 .align 16 1461 .L061xts_dec_loop6: 1462 pshufd $19,%xmm0,%xmm2 1463 pxor %xmm0,%xmm0 1464 movdqa %xmm1,(%esp) 1465 paddq %xmm1,%xmm1 1466 pand %xmm3,%xmm2 1467 pcmpgtd %xmm1,%xmm0 1468 pxor %xmm2,%xmm1 1469 pshufd $19,%xmm0,%xmm2 1470 pxor %xmm0,%xmm0 1471 movdqa %xmm1,16(%esp) 1472 paddq %xmm1,%xmm1 1473 pand %xmm3,%xmm2 1474 pcmpgtd %xmm1,%xmm0 1475 pxor %xmm2,%xmm1 1476 pshufd $19,%xmm0,%xmm2 1477 pxor %xmm0,%xmm0 1478 movdqa %xmm1,32(%esp) 1479 paddq %xmm1,%xmm1 1480 pand %xmm3,%xmm2 1481 pcmpgtd %xmm1,%xmm0 1482 pxor %xmm2,%xmm1 1483 pshufd $19,%xmm0,%xmm2 1484 pxor %xmm0,%xmm0 1485 movdqa %xmm1,48(%esp) 1486 paddq %xmm1,%xmm1 1487 pand %xmm3,%xmm2 1488 pcmpgtd %xmm1,%xmm0 1489 pxor %xmm2,%xmm1 1490 pshufd $19,%xmm0,%xmm7 1491 movdqa %xmm1,64(%esp) 1492 paddq %xmm1,%xmm1 1493 movups (%ebp),%xmm0 1494 pand %xmm3,%xmm7 1495 movups (%esi),%xmm2 1496 pxor %xmm1,%xmm7 1497 movl %ebx,%ecx 1498 movdqu 16(%esi),%xmm3 1499 xorps %xmm0,%xmm2 1500 movdqu 32(%esi),%xmm4 1501 pxor %xmm0,%xmm3 1502 movdqu 48(%esi),%xmm5 1503 pxor %xmm0,%xmm4 1504 movdqu 64(%esi),%xmm6 1505 pxor %xmm0,%xmm5 1506 movdqu 80(%esi),%xmm1 1507 pxor %xmm0,%xmm6 1508 leal 96(%esi),%esi 1509 pxor (%esp),%xmm2 1510 movdqa %xmm7,80(%esp) 1511 pxor %xmm1,%xmm7 1512 movups 16(%ebp),%xmm1 1513 pxor 16(%esp),%xmm3 1514 pxor 32(%esp),%xmm4 1515 .byte 102,15,56,222,209 1516 pxor 48(%esp),%xmm5 1517 pxor 64(%esp),%xmm6 1518 .byte 102,15,56,222,217 1519 pxor %xmm0,%xmm7 1520 movups 32(%ebp),%xmm0 1521 .byte 102,15,56,222,225 1522 .byte 102,15,56,222,233 1523 .byte 102,15,56,222,241 1524 .byte 102,15,56,222,249 1525 call .L_aesni_decrypt6_enter 1526 movdqa 80(%esp),%xmm1 1527 pxor %xmm0,%xmm0 1528 xorps (%esp),%xmm2 1529 pcmpgtd %xmm1,%xmm0 1530 xorps 16(%esp),%xmm3 1531 movups %xmm2,(%edi) 1532 xorps 32(%esp),%xmm4 1533 movups %xmm3,16(%edi) 1534 xorps 48(%esp),%xmm5 1535 movups %xmm4,32(%edi) 1536 xorps 64(%esp),%xmm6 1537 movups %xmm5,48(%edi) 1538 xorps %xmm1,%xmm7 1539 movups %xmm6,64(%edi) 1540 pshufd $19,%xmm0,%xmm2 1541 movups %xmm7,80(%edi) 1542 leal 96(%edi),%edi 1543 movdqa 96(%esp),%xmm3 1544 pxor %xmm0,%xmm0 1545 paddq %xmm1,%xmm1 1546 pand %xmm3,%xmm2 1547 pcmpgtd %xmm1,%xmm0 1548 pxor %xmm2,%xmm1 1549 subl $96,%eax 1550 jnc .L061xts_dec_loop6 1551 movl 240(%ebp),%ecx 1552 movl %ebp,%edx 1553 movl %ecx,%ebx 1554 .L060xts_dec_short: 1555 addl $96,%eax 1556 jz .L062xts_dec_done6x 1557 movdqa %xmm1,%xmm5 1558 cmpl $32,%eax 1559 jb .L063xts_dec_one 1560 pshufd $19,%xmm0,%xmm2 1561 pxor %xmm0,%xmm0 1562 paddq %xmm1,%xmm1 1563 pand %xmm3,%xmm2 1564 pcmpgtd %xmm1,%xmm0 1565 pxor %xmm2,%xmm1 1566 je .L064xts_dec_two 1567 pshufd $19,%xmm0,%xmm2 1568 pxor %xmm0,%xmm0 1569 movdqa %xmm1,%xmm6 1570 paddq %xmm1,%xmm1 1571 pand %xmm3,%xmm2 1572 pcmpgtd %xmm1,%xmm0 1573 pxor %xmm2,%xmm1 1574 cmpl $64,%eax 1575 jb .L065xts_dec_three 1576 pshufd $19,%xmm0,%xmm2 1577 pxor %xmm0,%xmm0 1578 movdqa %xmm1,%xmm7 1579 paddq %xmm1,%xmm1 1580 pand %xmm3,%xmm2 1581 pcmpgtd %xmm1,%xmm0 1582 pxor %xmm2,%xmm1 1583 movdqa %xmm5,(%esp) 1584 movdqa %xmm6,16(%esp) 1585 je .L066xts_dec_four 1586 movdqa %xmm7,32(%esp) 1587 pshufd $19,%xmm0,%xmm7 1588 movdqa %xmm1,48(%esp) 1589 paddq %xmm1,%xmm1 1590 pand %xmm3,%xmm7 1591 pxor %xmm1,%xmm7 1592 movdqu (%esi),%xmm2 1593 movdqu 16(%esi),%xmm3 1594 movdqu 32(%esi),%xmm4 1595 pxor (%esp),%xmm2 1596 movdqu 48(%esi),%xmm5 1597 pxor 16(%esp),%xmm3 1598 movdqu 64(%esi),%xmm6 1599 pxor 32(%esp),%xmm4 1600 leal 80(%esi),%esi 1601 pxor 48(%esp),%xmm5 1602 movdqa %xmm7,64(%esp) 1603 pxor %xmm7,%xmm6 1604 call _aesni_decrypt6 1605 movaps 64(%esp),%xmm1 1606 xorps (%esp),%xmm2 1607 xorps 16(%esp),%xmm3 1608 xorps 32(%esp),%xmm4 1609 movups %xmm2,(%edi) 1610 xorps 48(%esp),%xmm5 1611 movups %xmm3,16(%edi) 1612 xorps %xmm1,%xmm6 1613 movups %xmm4,32(%edi) 1614 movups %xmm5,48(%edi) 1615 movups %xmm6,64(%edi) 1616 leal 80(%edi),%edi 1617 jmp .L067xts_dec_done 1618 .align 16 1619 .L063xts_dec_one: 1620 movups (%esi),%xmm2 1621 leal 16(%esi),%esi 1622 xorps %xmm5,%xmm2 1623 movups (%edx),%xmm0 1624 movups 16(%edx),%xmm1 1625 leal 32(%edx),%edx 1626 xorps %xmm0,%xmm2 1627 .L068dec1_loop_12: 1628 .byte 102,15,56,222,209 1629 decl %ecx 1630 movups (%edx),%xmm1 1631 leal 16(%edx),%edx 1632 jnz .L068dec1_loop_12 1633 .byte 102,15,56,223,209 1634 xorps %xmm5,%xmm2 1635 movups %xmm2,(%edi) 1636 leal 16(%edi),%edi 1637 movdqa %xmm5,%xmm1 1638 jmp .L067xts_dec_done 1639 .align 16 1640 .L064xts_dec_two: 1641 movaps %xmm1,%xmm6 1642 movups (%esi),%xmm2 1643 movups 16(%esi),%xmm3 1644 leal 32(%esi),%esi 1645 xorps %xmm5,%xmm2 1646 xorps %xmm6,%xmm3 1647 call _aesni_decrypt2 1648 xorps %xmm5,%xmm2 1649 xorps %xmm6,%xmm3 1650 movups %xmm2,(%edi) 1651 movups %xmm3,16(%edi) 1652 leal 32(%edi),%edi 1653 movdqa %xmm6,%xmm1 1654 jmp .L067xts_dec_done 1655 .align 16 1656 .L065xts_dec_three: 1657 movaps %xmm1,%xmm7 1658 movups (%esi),%xmm2 1659 movups 16(%esi),%xmm3 1660 movups 32(%esi),%xmm4 1661 leal 48(%esi),%esi 1662 xorps %xmm5,%xmm2 1663 xorps %xmm6,%xmm3 1664 xorps %xmm7,%xmm4 1665 call _aesni_decrypt3 1666 xorps %xmm5,%xmm2 1667 xorps %xmm6,%xmm3 1668 xorps %xmm7,%xmm4 1669 movups %xmm2,(%edi) 1670 movups %xmm3,16(%edi) 1671 movups %xmm4,32(%edi) 1672 leal 48(%edi),%edi 1673 movdqa %xmm7,%xmm1 1674 jmp .L067xts_dec_done 1675 .align 16 1676 .L066xts_dec_four: 1677 movaps %xmm1,%xmm6 1678 movups (%esi),%xmm2 1679 movups 16(%esi),%xmm3 1680 movups 32(%esi),%xmm4 1681 xorps (%esp),%xmm2 1682 movups 48(%esi),%xmm5 1683 leal 64(%esi),%esi 1684 xorps 16(%esp),%xmm3 1685 xorps %xmm7,%xmm4 1686 xorps %xmm6,%xmm5 1687 call _aesni_decrypt4 1688 xorps (%esp),%xmm2 1689 xorps 16(%esp),%xmm3 1690 xorps %xmm7,%xmm4 1691 movups %xmm2,(%edi) 1692 xorps %xmm6,%xmm5 1693 movups %xmm3,16(%edi) 1694 movups %xmm4,32(%edi) 1695 movups %xmm5,48(%edi) 1696 leal 64(%edi),%edi 1697 movdqa %xmm6,%xmm1 1698 jmp .L067xts_dec_done 1699 .align 16 1700 .L062xts_dec_done6x: 1701 movl 112(%esp),%eax 1702 andl $15,%eax 1703 jz .L069xts_dec_ret 1704 movl %eax,112(%esp) 1705 jmp .L070xts_dec_only_one_more 1706 .align 16 1707 .L067xts_dec_done: 1708 movl 112(%esp),%eax 1709 pxor %xmm0,%xmm0 1710 andl $15,%eax 1711 jz .L069xts_dec_ret 1712 pcmpgtd %xmm1,%xmm0 1713 movl %eax,112(%esp) 1714 pshufd $19,%xmm0,%xmm2 1715 pxor %xmm0,%xmm0 1716 movdqa 96(%esp),%xmm3 1717 paddq %xmm1,%xmm1 1718 pand %xmm3,%xmm2 1719 pcmpgtd %xmm1,%xmm0 1720 pxor %xmm2,%xmm1 1721 .L070xts_dec_only_one_more: 1722 pshufd $19,%xmm0,%xmm5 1723 movdqa %xmm1,%xmm6 1724 paddq %xmm1,%xmm1 1725 pand %xmm3,%xmm5 1726 pxor %xmm1,%xmm5 1727 movl %ebp,%edx 1728 movl %ebx,%ecx 1729 movups (%esi),%xmm2 1730 xorps %xmm5,%xmm2 1731 movups (%edx),%xmm0 1732 movups 16(%edx),%xmm1 1733 leal 32(%edx),%edx 1734 xorps %xmm0,%xmm2 1735 .L071dec1_loop_13: 1736 .byte 102,15,56,222,209 1737 decl %ecx 1738 movups (%edx),%xmm1 1739 leal 16(%edx),%edx 1740 jnz .L071dec1_loop_13 1741 .byte 102,15,56,223,209 1742 xorps %xmm5,%xmm2 1743 movups %xmm2,(%edi) 1744 .L072xts_dec_steal: 1745 movzbl 16(%esi),%ecx 1746 movzbl (%edi),%edx 1747 leal 1(%esi),%esi 1748 movb %cl,(%edi) 1749 movb %dl,16(%edi) 1750 leal 1(%edi),%edi 1751 subl $1,%eax 1752 jnz .L072xts_dec_steal 1753 subl 112(%esp),%edi 1754 movl %ebp,%edx 1755 movl %ebx,%ecx 1756 movups (%edi),%xmm2 1757 xorps %xmm6,%xmm2 1758 movups (%edx),%xmm0 1759 movups 16(%edx),%xmm1 1760 leal 32(%edx),%edx 1761 xorps %xmm0,%xmm2 1762 .L073dec1_loop_14: 1763 .byte 102,15,56,222,209 1764 decl %ecx 1765 movups (%edx),%xmm1 1766 leal 16(%edx),%edx 1767 jnz .L073dec1_loop_14 1768 .byte 102,15,56,223,209 1769 xorps %xmm6,%xmm2 1770 movups %xmm2,(%edi) 1771 .L069xts_dec_ret: 1772 pxor %xmm0,%xmm0 1773 pxor %xmm1,%xmm1 1774 pxor %xmm2,%xmm2 1775 movdqa %xmm0,(%esp) 1776 pxor %xmm3,%xmm3 1777 movdqa %xmm0,16(%esp) 1778 pxor %xmm4,%xmm4 1779 movdqa %xmm0,32(%esp) 1780 pxor %xmm5,%xmm5 1781 movdqa %xmm0,48(%esp) 1782 pxor %xmm6,%xmm6 1783 movdqa %xmm0,64(%esp) 1784 pxor %xmm7,%xmm7 1785 movdqa %xmm0,80(%esp) 1786 movl 116(%esp),%esp 1787 popl %edi 1788 popl %esi 1789 popl %ebx 1790 popl %ebp 1791 ret 1792 .size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 1793 .globl aesni_ocb_encrypt 1794 .type aesni_ocb_encrypt,@function 1795 .align 16 1796 aesni_ocb_encrypt: 1797 .L_aesni_ocb_encrypt_begin: 1798 pushl %ebp 1799 pushl %ebx 1800 pushl %esi 1801 pushl %edi 1802 movl 40(%esp),%ecx 1803 movl 48(%esp),%ebx 1804 movl 20(%esp),%esi 1805 movl 24(%esp),%edi 1806 movl 28(%esp),%eax 1807 movl 32(%esp),%edx 1808 movdqu (%ecx),%xmm0 1809 movl 36(%esp),%ebp 1810 movdqu (%ebx),%xmm1 1811 movl 44(%esp),%ebx 1812 movl %esp,%ecx 1813 subl $132,%esp 1814 andl $-16,%esp 1815 subl %esi,%edi 1816 shll $4,%eax 1817 leal -96(%esi,%eax,1),%eax 1818 movl %edi,120(%esp) 1819 movl %eax,124(%esp) 1820 movl %ecx,128(%esp) 1821 movl 240(%edx),%ecx 1822 testl $1,%ebp 1823 jnz .L074odd 1824 bsfl %ebp,%eax 1825 addl $1,%ebp 1826 shll $4,%eax 1827 movdqu (%ebx,%eax,1),%xmm7 1828 movl %edx,%eax 1829 movdqu (%esi),%xmm2 1830 leal 16(%esi),%esi 1831 pxor %xmm0,%xmm7 1832 pxor %xmm2,%xmm1 1833 pxor %xmm7,%xmm2 1834 movdqa %xmm1,%xmm6 1835 movups (%edx),%xmm0 1836 movups 16(%edx),%xmm1 1837 leal 32(%edx),%edx 1838 xorps %xmm0,%xmm2 1839 .L075enc1_loop_15: 1840 .byte 102,15,56,220,209 1841 decl %ecx 1842 movups (%edx),%xmm1 1843 leal 16(%edx),%edx 1844 jnz .L075enc1_loop_15 1845 .byte 102,15,56,221,209 1846 xorps %xmm7,%xmm2 1847 movdqa %xmm7,%xmm0 1848 movdqa %xmm6,%xmm1 1849 movups %xmm2,-16(%edi,%esi,1) 1850 movl 240(%eax),%ecx 1851 movl %eax,%edx 1852 movl 124(%esp),%eax 1853 .L074odd: 1854 shll $4,%ecx 1855 movl $16,%edi 1856 subl %ecx,%edi 1857 movl %edx,112(%esp) 1858 leal 32(%edx,%ecx,1),%edx 1859 movl %edi,116(%esp) 1860 cmpl %eax,%esi 1861 ja .L076short 1862 jmp .L077grandloop 1863 .align 32 1864 .L077grandloop: 1865 leal 1(%ebp),%ecx 1866 leal 3(%ebp),%eax 1867 leal 5(%ebp),%edi 1868 addl $6,%ebp 1869 bsfl %ecx,%ecx 1870 bsfl %eax,%eax 1871 bsfl %edi,%edi 1872 shll $4,%ecx 1873 shll $4,%eax 1874 shll $4,%edi 1875 movdqu (%ebx),%xmm2 1876 movdqu (%ebx,%ecx,1),%xmm3 1877 movl 116(%esp),%ecx 1878 movdqa %xmm2,%xmm4 1879 movdqu (%ebx,%eax,1),%xmm5 1880 movdqa %xmm2,%xmm6 1881 movdqu (%ebx,%edi,1),%xmm7 1882 pxor %xmm0,%xmm2 1883 pxor %xmm2,%xmm3 1884 movdqa %xmm2,(%esp) 1885 pxor %xmm3,%xmm4 1886 movdqa %xmm3,16(%esp) 1887 pxor %xmm4,%xmm5 1888 movdqa %xmm4,32(%esp) 1889 pxor %xmm5,%xmm6 1890 movdqa %xmm5,48(%esp) 1891 pxor %xmm6,%xmm7 1892 movdqa %xmm6,64(%esp) 1893 movdqa %xmm7,80(%esp) 1894 movups -48(%edx,%ecx,1),%xmm0 1895 movdqu (%esi),%xmm2 1896 movdqu 16(%esi),%xmm3 1897 movdqu 32(%esi),%xmm4 1898 movdqu 48(%esi),%xmm5 1899 movdqu 64(%esi),%xmm6 1900 movdqu 80(%esi),%xmm7 1901 leal 96(%esi),%esi 1902 pxor %xmm2,%xmm1 1903 pxor %xmm0,%xmm2 1904 pxor %xmm3,%xmm1 1905 pxor %xmm0,%xmm3 1906 pxor %xmm4,%xmm1 1907 pxor %xmm0,%xmm4 1908 pxor %xmm5,%xmm1 1909 pxor %xmm0,%xmm5 1910 pxor %xmm6,%xmm1 1911 pxor %xmm0,%xmm6 1912 pxor %xmm7,%xmm1 1913 pxor %xmm0,%xmm7 1914 movdqa %xmm1,96(%esp) 1915 movups -32(%edx,%ecx,1),%xmm1 1916 pxor (%esp),%xmm2 1917 pxor 16(%esp),%xmm3 1918 pxor 32(%esp),%xmm4 1919 pxor 48(%esp),%xmm5 1920 pxor 64(%esp),%xmm6 1921 pxor 80(%esp),%xmm7 1922 movups -16(%edx,%ecx,1),%xmm0 1923 .byte 102,15,56,220,209 1924 .byte 102,15,56,220,217 1925 .byte 102,15,56,220,225 1926 .byte 102,15,56,220,233 1927 .byte 102,15,56,220,241 1928 .byte 102,15,56,220,249 1929 movl 120(%esp),%edi 1930 movl 124(%esp),%eax 1931 call .L_aesni_encrypt6_enter 1932 movdqa 80(%esp),%xmm0 1933 pxor (%esp),%xmm2 1934 pxor 16(%esp),%xmm3 1935 pxor 32(%esp),%xmm4 1936 pxor 48(%esp),%xmm5 1937 pxor 64(%esp),%xmm6 1938 pxor %xmm0,%xmm7 1939 movdqa 96(%esp),%xmm1 1940 movdqu %xmm2,-96(%edi,%esi,1) 1941 movdqu %xmm3,-80(%edi,%esi,1) 1942 movdqu %xmm4,-64(%edi,%esi,1) 1943 movdqu %xmm5,-48(%edi,%esi,1) 1944 movdqu %xmm6,-32(%edi,%esi,1) 1945 movdqu %xmm7,-16(%edi,%esi,1) 1946 cmpl %eax,%esi 1947 jb .L077grandloop 1948 .L076short: 1949 addl $96,%eax 1950 subl %esi,%eax 1951 jz .L078done 1952 cmpl $32,%eax 1953 jb .L079one 1954 je .L080two 1955 cmpl $64,%eax 1956 jb .L081three 1957 je .L082four 1958 leal 1(%ebp),%ecx 1959 leal 3(%ebp),%eax 1960 bsfl %ecx,%ecx 1961 bsfl %eax,%eax 1962 shll $4,%ecx 1963 shll $4,%eax 1964 movdqu (%ebx),%xmm2 1965 movdqu (%ebx,%ecx,1),%xmm3 1966 movl 116(%esp),%ecx 1967 movdqa %xmm2,%xmm4 1968 movdqu (%ebx,%eax,1),%xmm5 1969 movdqa %xmm2,%xmm6 1970 pxor %xmm0,%xmm2 1971 pxor %xmm2,%xmm3 1972 movdqa %xmm2,(%esp) 1973 pxor %xmm3,%xmm4 1974 movdqa %xmm3,16(%esp) 1975 pxor %xmm4,%xmm5 1976 movdqa %xmm4,32(%esp) 1977 pxor %xmm5,%xmm6 1978 movdqa %xmm5,48(%esp) 1979 pxor %xmm6,%xmm7 1980 movdqa %xmm6,64(%esp) 1981 movups -48(%edx,%ecx,1),%xmm0 1982 movdqu (%esi),%xmm2 1983 movdqu 16(%esi),%xmm3 1984 movdqu 32(%esi),%xmm4 1985 movdqu 48(%esi),%xmm5 1986 movdqu 64(%esi),%xmm6 1987 pxor %xmm7,%xmm7 1988 pxor %xmm2,%xmm1 1989 pxor %xmm0,%xmm2 1990 pxor %xmm3,%xmm1 1991 pxor %xmm0,%xmm3 1992 pxor %xmm4,%xmm1 1993 pxor %xmm0,%xmm4 1994 pxor %xmm5,%xmm1 1995 pxor %xmm0,%xmm5 1996 pxor %xmm6,%xmm1 1997 pxor %xmm0,%xmm6 1998 movdqa %xmm1,96(%esp) 1999 movups -32(%edx,%ecx,1),%xmm1 2000 pxor (%esp),%xmm2 2001 pxor 16(%esp),%xmm3 2002 pxor 32(%esp),%xmm4 2003 pxor 48(%esp),%xmm5 2004 pxor 64(%esp),%xmm6 2005 movups -16(%edx,%ecx,1),%xmm0 2006 .byte 102,15,56,220,209 2007 .byte 102,15,56,220,217 2008 .byte 102,15,56,220,225 2009 .byte 102,15,56,220,233 2010 .byte 102,15,56,220,241 2011 .byte 102,15,56,220,249 2012 movl 120(%esp),%edi 2013 call .L_aesni_encrypt6_enter 2014 movdqa 64(%esp),%xmm0 2015 pxor (%esp),%xmm2 2016 pxor 16(%esp),%xmm3 2017 pxor 32(%esp),%xmm4 2018 pxor 48(%esp),%xmm5 2019 pxor %xmm0,%xmm6 2020 movdqa 96(%esp),%xmm1 2021 movdqu %xmm2,(%edi,%esi,1) 2022 movdqu %xmm3,16(%edi,%esi,1) 2023 movdqu %xmm4,32(%edi,%esi,1) 2024 movdqu %xmm5,48(%edi,%esi,1) 2025 movdqu %xmm6,64(%edi,%esi,1) 2026 jmp .L078done 2027 .align 16 2028 .L079one: 2029 movdqu (%ebx),%xmm7 2030 movl 112(%esp),%edx 2031 movdqu (%esi),%xmm2 2032 movl 240(%edx),%ecx 2033 pxor %xmm0,%xmm7 2034 pxor %xmm2,%xmm1 2035 pxor %xmm7,%xmm2 2036 movdqa %xmm1,%xmm6 2037 movl 120(%esp),%edi 2038 movups (%edx),%xmm0 2039 movups 16(%edx),%xmm1 2040 leal 32(%edx),%edx 2041 xorps %xmm0,%xmm2 2042 .L083enc1_loop_16: 2043 .byte 102,15,56,220,209 2044 decl %ecx 2045 movups (%edx),%xmm1 2046 leal 16(%edx),%edx 2047 jnz .L083enc1_loop_16 2048 .byte 102,15,56,221,209 2049 xorps %xmm7,%xmm2 2050 movdqa %xmm7,%xmm0 2051 movdqa %xmm6,%xmm1 2052 movups %xmm2,(%edi,%esi,1) 2053 jmp .L078done 2054 .align 16 2055 .L080two: 2056 leal 1(%ebp),%ecx 2057 movl 112(%esp),%edx 2058 bsfl %ecx,%ecx 2059 shll $4,%ecx 2060 movdqu (%ebx),%xmm6 2061 movdqu (%ebx,%ecx,1),%xmm7 2062 movdqu (%esi),%xmm2 2063 movdqu 16(%esi),%xmm3 2064 movl 240(%edx),%ecx 2065 pxor %xmm0,%xmm6 2066 pxor %xmm6,%xmm7 2067 pxor %xmm2,%xmm1 2068 pxor %xmm6,%xmm2 2069 pxor %xmm3,%xmm1 2070 pxor %xmm7,%xmm3 2071 movdqa %xmm1,%xmm5 2072 movl 120(%esp),%edi 2073 call _aesni_encrypt2 2074 xorps %xmm6,%xmm2 2075 xorps %xmm7,%xmm3 2076 movdqa %xmm7,%xmm0 2077 movdqa %xmm5,%xmm1 2078 movups %xmm2,(%edi,%esi,1) 2079 movups %xmm3,16(%edi,%esi,1) 2080 jmp .L078done 2081 .align 16 2082 .L081three: 2083 leal 1(%ebp),%ecx 2084 movl 112(%esp),%edx 2085 bsfl %ecx,%ecx 2086 shll $4,%ecx 2087 movdqu (%ebx),%xmm5 2088 movdqu (%ebx,%ecx,1),%xmm6 2089 movdqa %xmm5,%xmm7 2090 movdqu (%esi),%xmm2 2091 movdqu 16(%esi),%xmm3 2092 movdqu 32(%esi),%xmm4 2093 movl 240(%edx),%ecx 2094 pxor %xmm0,%xmm5 2095 pxor %xmm5,%xmm6 2096 pxor %xmm6,%xmm7 2097 pxor %xmm2,%xmm1 2098 pxor %xmm5,%xmm2 2099 pxor %xmm3,%xmm1 2100 pxor %xmm6,%xmm3 2101 pxor %xmm4,%xmm1 2102 pxor %xmm7,%xmm4 2103 movdqa %xmm1,96(%esp) 2104 movl 120(%esp),%edi 2105 call _aesni_encrypt3 2106 xorps %xmm5,%xmm2 2107 xorps %xmm6,%xmm3 2108 xorps %xmm7,%xmm4 2109 movdqa %xmm7,%xmm0 2110 movdqa 96(%esp),%xmm1 2111 movups %xmm2,(%edi,%esi,1) 2112 movups %xmm3,16(%edi,%esi,1) 2113 movups %xmm4,32(%edi,%esi,1) 2114 jmp .L078done 2115 .align 16 2116 .L082four: 2117 leal 1(%ebp),%ecx 2118 leal 3(%ebp),%eax 2119 bsfl %ecx,%ecx 2120 bsfl %eax,%eax 2121 movl 112(%esp),%edx 2122 shll $4,%ecx 2123 shll $4,%eax 2124 movdqu (%ebx),%xmm4 2125 movdqu (%ebx,%ecx,1),%xmm5 2126 movdqa %xmm4,%xmm6 2127 movdqu (%ebx,%eax,1),%xmm7 2128 pxor %xmm0,%xmm4 2129 movdqu (%esi),%xmm2 2130 pxor %xmm4,%xmm5 2131 movdqu 16(%esi),%xmm3 2132 pxor %xmm5,%xmm6 2133 movdqa %xmm4,(%esp) 2134 pxor %xmm6,%xmm7 2135 movdqa %xmm5,16(%esp) 2136 movdqu 32(%esi),%xmm4 2137 movdqu 48(%esi),%xmm5 2138 movl 240(%edx),%ecx 2139 pxor %xmm2,%xmm1 2140 pxor (%esp),%xmm2 2141 pxor %xmm3,%xmm1 2142 pxor 16(%esp),%xmm3 2143 pxor %xmm4,%xmm1 2144 pxor %xmm6,%xmm4 2145 pxor %xmm5,%xmm1 2146 pxor %xmm7,%xmm5 2147 movdqa %xmm1,96(%esp) 2148 movl 120(%esp),%edi 2149 call _aesni_encrypt4 2150 xorps (%esp),%xmm2 2151 xorps 16(%esp),%xmm3 2152 xorps %xmm6,%xmm4 2153 movups %xmm2,(%edi,%esi,1) 2154 xorps %xmm7,%xmm5 2155 movups %xmm3,16(%edi,%esi,1) 2156 movdqa %xmm7,%xmm0 2157 movups %xmm4,32(%edi,%esi,1) 2158 movdqa 96(%esp),%xmm1 2159 movups %xmm5,48(%edi,%esi,1) 2160 .L078done: 2161 movl 128(%esp),%edx 2162 pxor %xmm2,%xmm2 2163 pxor %xmm3,%xmm3 2164 movdqa %xmm2,(%esp) 2165 pxor %xmm4,%xmm4 2166 movdqa %xmm2,16(%esp) 2167 pxor %xmm5,%xmm5 2168 movdqa %xmm2,32(%esp) 2169 pxor %xmm6,%xmm6 2170 movdqa %xmm2,48(%esp) 2171 pxor %xmm7,%xmm7 2172 movdqa %xmm2,64(%esp) 2173 movdqa %xmm2,80(%esp) 2174 movdqa %xmm2,96(%esp) 2175 leal (%edx),%esp 2176 movl 40(%esp),%ecx 2177 movl 48(%esp),%ebx 2178 movdqu %xmm0,(%ecx) 2179 pxor %xmm0,%xmm0 2180 movdqu %xmm1,(%ebx) 2181 pxor %xmm1,%xmm1 2182 popl %edi 2183 popl %esi 2184 popl %ebx 2185 popl %ebp 2186 ret 2187 .size aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin 2188 .globl aesni_ocb_decrypt 2189 .type aesni_ocb_decrypt,@function 2190 .align 16 2191 aesni_ocb_decrypt: 2192 .L_aesni_ocb_decrypt_begin: 2193 pushl %ebp 2194 pushl %ebx 2195 pushl %esi 2196 pushl %edi 2197 movl 40(%esp),%ecx 2198 movl 48(%esp),%ebx 2199 movl 20(%esp),%esi 2200 movl 24(%esp),%edi 2201 movl 28(%esp),%eax 2202 movl 32(%esp),%edx 2203 movdqu (%ecx),%xmm0 2204 movl 36(%esp),%ebp 2205 movdqu (%ebx),%xmm1 2206 movl 44(%esp),%ebx 2207 movl %esp,%ecx 2208 subl $132,%esp 2209 andl $-16,%esp 2210 subl %esi,%edi 2211 shll $4,%eax 2212 leal -96(%esi,%eax,1),%eax 2213 movl %edi,120(%esp) 2214 movl %eax,124(%esp) 2215 movl %ecx,128(%esp) 2216 movl 240(%edx),%ecx 2217 testl $1,%ebp 2218 jnz .L084odd 2219 bsfl %ebp,%eax 2220 addl $1,%ebp 2221 shll $4,%eax 2222 movdqu (%ebx,%eax,1),%xmm7 2223 movl %edx,%eax 2224 movdqu (%esi),%xmm2 2225 leal 16(%esi),%esi 2226 pxor %xmm0,%xmm7 2227 pxor %xmm7,%xmm2 2228 movdqa %xmm1,%xmm6 2229 movups (%edx),%xmm0 2230 movups 16(%edx),%xmm1 2231 leal 32(%edx),%edx 2232 xorps %xmm0,%xmm2 2233 .L085dec1_loop_17: 2234 .byte 102,15,56,222,209 2235 decl %ecx 2236 movups (%edx),%xmm1 2237 leal 16(%edx),%edx 2238 jnz .L085dec1_loop_17 2239 .byte 102,15,56,223,209 2240 xorps %xmm7,%xmm2 2241 movaps %xmm6,%xmm1 2242 movdqa %xmm7,%xmm0 2243 xorps %xmm2,%xmm1 2244 movups %xmm2,-16(%edi,%esi,1) 2245 movl 240(%eax),%ecx 2246 movl %eax,%edx 2247 movl 124(%esp),%eax 2248 .L084odd: 2249 shll $4,%ecx 2250 movl $16,%edi 2251 subl %ecx,%edi 2252 movl %edx,112(%esp) 2253 leal 32(%edx,%ecx,1),%edx 2254 movl %edi,116(%esp) 2255 cmpl %eax,%esi 2256 ja .L086short 2257 jmp .L087grandloop 2258 .align 32 2259 .L087grandloop: 2260 leal 1(%ebp),%ecx 2261 leal 3(%ebp),%eax 2262 leal 5(%ebp),%edi 2263 addl $6,%ebp 2264 bsfl %ecx,%ecx 2265 bsfl %eax,%eax 2266 bsfl %edi,%edi 2267 shll $4,%ecx 2268 shll $4,%eax 2269 shll $4,%edi 2270 movdqu (%ebx),%xmm2 2271 movdqu (%ebx,%ecx,1),%xmm3 2272 movl 116(%esp),%ecx 2273 movdqa %xmm2,%xmm4 2274 movdqu (%ebx,%eax,1),%xmm5 2275 movdqa %xmm2,%xmm6 2276 movdqu (%ebx,%edi,1),%xmm7 2277 pxor %xmm0,%xmm2 2278 pxor %xmm2,%xmm3 2279 movdqa %xmm2,(%esp) 2280 pxor %xmm3,%xmm4 2281 movdqa %xmm3,16(%esp) 2282 pxor %xmm4,%xmm5 2283 movdqa %xmm4,32(%esp) 2284 pxor %xmm5,%xmm6 2285 movdqa %xmm5,48(%esp) 2286 pxor %xmm6,%xmm7 2287 movdqa %xmm6,64(%esp) 2288 movdqa %xmm7,80(%esp) 2289 movups -48(%edx,%ecx,1),%xmm0 2290 movdqu (%esi),%xmm2 2291 movdqu 16(%esi),%xmm3 2292 movdqu 32(%esi),%xmm4 2293 movdqu 48(%esi),%xmm5 2294 movdqu 64(%esi),%xmm6 2295 movdqu 80(%esi),%xmm7 2296 leal 96(%esi),%esi 2297 movdqa %xmm1,96(%esp) 2298 pxor %xmm0,%xmm2 2299 pxor %xmm0,%xmm3 2300 pxor %xmm0,%xmm4 2301 pxor %xmm0,%xmm5 2302 pxor %xmm0,%xmm6 2303 pxor %xmm0,%xmm7 2304 movups -32(%edx,%ecx,1),%xmm1 2305 pxor (%esp),%xmm2 2306 pxor 16(%esp),%xmm3 2307 pxor 32(%esp),%xmm4 2308 pxor 48(%esp),%xmm5 2309 pxor 64(%esp),%xmm6 2310 pxor 80(%esp),%xmm7 2311 movups -16(%edx,%ecx,1),%xmm0 2312 .byte 102,15,56,222,209 2313 .byte 102,15,56,222,217 2314 .byte 102,15,56,222,225 2315 .byte 102,15,56,222,233 2316 .byte 102,15,56,222,241 2317 .byte 102,15,56,222,249 2318 movl 120(%esp),%edi 2319 movl 124(%esp),%eax 2320 call .L_aesni_decrypt6_enter 2321 movdqa 80(%esp),%xmm0 2322 pxor (%esp),%xmm2 2323 movdqa 96(%esp),%xmm1 2324 pxor 16(%esp),%xmm3 2325 pxor 32(%esp),%xmm4 2326 pxor 48(%esp),%xmm5 2327 pxor 64(%esp),%xmm6 2328 pxor %xmm0,%xmm7 2329 pxor %xmm2,%xmm1 2330 movdqu %xmm2,-96(%edi,%esi,1) 2331 pxor %xmm3,%xmm1 2332 movdqu %xmm3,-80(%edi,%esi,1) 2333 pxor %xmm4,%xmm1 2334 movdqu %xmm4,-64(%edi,%esi,1) 2335 pxor %xmm5,%xmm1 2336 movdqu %xmm5,-48(%edi,%esi,1) 2337 pxor %xmm6,%xmm1 2338 movdqu %xmm6,-32(%edi,%esi,1) 2339 pxor %xmm7,%xmm1 2340 movdqu %xmm7,-16(%edi,%esi,1) 2341 cmpl %eax,%esi 2342 jb .L087grandloop 2343 .L086short: 2344 addl $96,%eax 2345 subl %esi,%eax 2346 jz .L088done 2347 cmpl $32,%eax 2348 jb .L089one 2349 je .L090two 2350 cmpl $64,%eax 2351 jb .L091three 2352 je .L092four 2353 leal 1(%ebp),%ecx 2354 leal 3(%ebp),%eax 2355 bsfl %ecx,%ecx 2356 bsfl %eax,%eax 2357 shll $4,%ecx 2358 shll $4,%eax 2359 movdqu (%ebx),%xmm2 2360 movdqu (%ebx,%ecx,1),%xmm3 2361 movl 116(%esp),%ecx 2362 movdqa %xmm2,%xmm4 2363 movdqu (%ebx,%eax,1),%xmm5 2364 movdqa %xmm2,%xmm6 2365 pxor %xmm0,%xmm2 2366 pxor %xmm2,%xmm3 2367 movdqa %xmm2,(%esp) 2368 pxor %xmm3,%xmm4 2369 movdqa %xmm3,16(%esp) 2370 pxor %xmm4,%xmm5 2371 movdqa %xmm4,32(%esp) 2372 pxor %xmm5,%xmm6 2373 movdqa %xmm5,48(%esp) 2374 pxor %xmm6,%xmm7 2375 movdqa %xmm6,64(%esp) 2376 movups -48(%edx,%ecx,1),%xmm0 2377 movdqu (%esi),%xmm2 2378 movdqu 16(%esi),%xmm3 2379 movdqu 32(%esi),%xmm4 2380 movdqu 48(%esi),%xmm5 2381 movdqu 64(%esi),%xmm6 2382 pxor %xmm7,%xmm7 2383 movdqa %xmm1,96(%esp) 2384 pxor %xmm0,%xmm2 2385 pxor %xmm0,%xmm3 2386 pxor %xmm0,%xmm4 2387 pxor %xmm0,%xmm5 2388 pxor %xmm0,%xmm6 2389 movups -32(%edx,%ecx,1),%xmm1 2390 pxor (%esp),%xmm2 2391 pxor 16(%esp),%xmm3 2392 pxor 32(%esp),%xmm4 2393 pxor 48(%esp),%xmm5 2394 pxor 64(%esp),%xmm6 2395 movups -16(%edx,%ecx,1),%xmm0 2396 .byte 102,15,56,222,209 2397 .byte 102,15,56,222,217 2398 .byte 102,15,56,222,225 2399 .byte 102,15,56,222,233 2400 .byte 102,15,56,222,241 2401 .byte 102,15,56,222,249 2402 movl 120(%esp),%edi 2403 call .L_aesni_decrypt6_enter 2404 movdqa 64(%esp),%xmm0 2405 pxor (%esp),%xmm2 2406 movdqa 96(%esp),%xmm1 2407 pxor 16(%esp),%xmm3 2408 pxor 32(%esp),%xmm4 2409 pxor 48(%esp),%xmm5 2410 pxor %xmm0,%xmm6 2411 pxor %xmm2,%xmm1 2412 movdqu %xmm2,(%edi,%esi,1) 2413 pxor %xmm3,%xmm1 2414 movdqu %xmm3,16(%edi,%esi,1) 2415 pxor %xmm4,%xmm1 2416 movdqu %xmm4,32(%edi,%esi,1) 2417 pxor %xmm5,%xmm1 2418 movdqu %xmm5,48(%edi,%esi,1) 2419 pxor %xmm6,%xmm1 2420 movdqu %xmm6,64(%edi,%esi,1) 2421 jmp .L088done 2422 .align 16 2423 .L089one: 2424 movdqu (%ebx),%xmm7 2425 movl 112(%esp),%edx 2426 movdqu (%esi),%xmm2 2427 movl 240(%edx),%ecx 2428 pxor %xmm0,%xmm7 2429 pxor %xmm7,%xmm2 2430 movdqa %xmm1,%xmm6 2431 movl 120(%esp),%edi 2432 movups (%edx),%xmm0 2433 movups 16(%edx),%xmm1 2434 leal 32(%edx),%edx 2435 xorps %xmm0,%xmm2 2436 .L093dec1_loop_18: 2437 .byte 102,15,56,222,209 2438 decl %ecx 2439 movups (%edx),%xmm1 2440 leal 16(%edx),%edx 2441 jnz .L093dec1_loop_18 2442 .byte 102,15,56,223,209 2443 xorps %xmm7,%xmm2 2444 movaps %xmm6,%xmm1 2445 movdqa %xmm7,%xmm0 2446 xorps %xmm2,%xmm1 2447 movups %xmm2,(%edi,%esi,1) 2448 jmp .L088done 2449 .align 16 2450 .L090two: 2451 leal 1(%ebp),%ecx 2452 movl 112(%esp),%edx 2453 bsfl %ecx,%ecx 2454 shll $4,%ecx 2455 movdqu (%ebx),%xmm6 2456 movdqu (%ebx,%ecx,1),%xmm7 2457 movdqu (%esi),%xmm2 2458 movdqu 16(%esi),%xmm3 2459 movl 240(%edx),%ecx 2460 movdqa %xmm1,%xmm5 2461 pxor %xmm0,%xmm6 2462 pxor %xmm6,%xmm7 2463 pxor %xmm6,%xmm2 2464 pxor %xmm7,%xmm3 2465 movl 120(%esp),%edi 2466 call _aesni_decrypt2 2467 xorps %xmm6,%xmm2 2468 xorps %xmm7,%xmm3 2469 movdqa %xmm7,%xmm0 2470 xorps %xmm2,%xmm5 2471 movups %xmm2,(%edi,%esi,1) 2472 xorps %xmm3,%xmm5 2473 movups %xmm3,16(%edi,%esi,1) 2474 movaps %xmm5,%xmm1 2475 jmp .L088done 2476 .align 16 2477 .L091three: 2478 leal 1(%ebp),%ecx 2479 movl 112(%esp),%edx 2480 bsfl %ecx,%ecx 2481 shll $4,%ecx 2482 movdqu (%ebx),%xmm5 2483 movdqu (%ebx,%ecx,1),%xmm6 2484 movdqa %xmm5,%xmm7 2485 movdqu (%esi),%xmm2 2486 movdqu 16(%esi),%xmm3 2487 movdqu 32(%esi),%xmm4 2488 movl 240(%edx),%ecx 2489 movdqa %xmm1,96(%esp) 2490 pxor %xmm0,%xmm5 2491 pxor %xmm5,%xmm6 2492 pxor %xmm6,%xmm7 2493 pxor %xmm5,%xmm2 2494 pxor %xmm6,%xmm3 2495 pxor %xmm7,%xmm4 2496 movl 120(%esp),%edi 2497 call _aesni_decrypt3 2498 movdqa 96(%esp),%xmm1 2499 xorps %xmm5,%xmm2 2500 xorps %xmm6,%xmm3 2501 xorps %xmm7,%xmm4 2502 movups %xmm2,(%edi,%esi,1) 2503 pxor %xmm2,%xmm1 2504 movdqa %xmm7,%xmm0 2505 movups %xmm3,16(%edi,%esi,1) 2506 pxor %xmm3,%xmm1 2507 movups %xmm4,32(%edi,%esi,1) 2508 pxor %xmm4,%xmm1 2509 jmp .L088done 2510 .align 16 2511 .L092four: 2512 leal 1(%ebp),%ecx 2513 leal 3(%ebp),%eax 2514 bsfl %ecx,%ecx 2515 bsfl %eax,%eax 2516 movl 112(%esp),%edx 2517 shll $4,%ecx 2518 shll $4,%eax 2519 movdqu (%ebx),%xmm4 2520 movdqu (%ebx,%ecx,1),%xmm5 2521 movdqa %xmm4,%xmm6 2522 movdqu (%ebx,%eax,1),%xmm7 2523 pxor %xmm0,%xmm4 2524 movdqu (%esi),%xmm2 2525 pxor %xmm4,%xmm5 2526 movdqu 16(%esi),%xmm3 2527 pxor %xmm5,%xmm6 2528 movdqa %xmm4,(%esp) 2529 pxor %xmm6,%xmm7 2530 movdqa %xmm5,16(%esp) 2531 movdqu 32(%esi),%xmm4 2532 movdqu 48(%esi),%xmm5 2533 movl 240(%edx),%ecx 2534 movdqa %xmm1,96(%esp) 2535 pxor (%esp),%xmm2 2536 pxor 16(%esp),%xmm3 2537 pxor %xmm6,%xmm4 2538 pxor %xmm7,%xmm5 2539 movl 120(%esp),%edi 2540 call _aesni_decrypt4 2541 movdqa 96(%esp),%xmm1 2542 xorps (%esp),%xmm2 2543 xorps 16(%esp),%xmm3 2544 xorps %xmm6,%xmm4 2545 movups %xmm2,(%edi,%esi,1) 2546 pxor %xmm2,%xmm1 2547 xorps %xmm7,%xmm5 2548 movups %xmm3,16(%edi,%esi,1) 2549 pxor %xmm3,%xmm1 2550 movdqa %xmm7,%xmm0 2551 movups %xmm4,32(%edi,%esi,1) 2552 pxor %xmm4,%xmm1 2553 movups %xmm5,48(%edi,%esi,1) 2554 pxor %xmm5,%xmm1 2555 .L088done: 2556 movl 128(%esp),%edx 2557 pxor %xmm2,%xmm2 2558 pxor %xmm3,%xmm3 2559 movdqa %xmm2,(%esp) 2560 pxor %xmm4,%xmm4 2561 movdqa %xmm2,16(%esp) 2562 pxor %xmm5,%xmm5 2563 movdqa %xmm2,32(%esp) 2564 pxor %xmm6,%xmm6 2565 movdqa %xmm2,48(%esp) 2566 pxor %xmm7,%xmm7 2567 movdqa %xmm2,64(%esp) 2568 movdqa %xmm2,80(%esp) 2569 movdqa %xmm2,96(%esp) 2570 leal (%edx),%esp 2571 movl 40(%esp),%ecx 2572 movl 48(%esp),%ebx 2573 movdqu %xmm0,(%ecx) 2574 pxor %xmm0,%xmm0 2575 movdqu %xmm1,(%ebx) 2576 pxor %xmm1,%xmm1 2577 popl %edi 2578 popl %esi 2579 popl %ebx 2580 popl %ebp 2581 ret 2582 .size aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin 2583 .globl aesni_cbc_encrypt 2584 .type aesni_cbc_encrypt,@function 2585 .align 16 2586 aesni_cbc_encrypt: 2587 .L_aesni_cbc_encrypt_begin: 2588 pushl %ebp 2589 pushl %ebx 2590 pushl %esi 2591 pushl %edi 2592 movl 20(%esp),%esi 2593 movl %esp,%ebx 2594 movl 24(%esp),%edi 2595 subl $24,%ebx 2596 movl 28(%esp),%eax 2597 andl $-16,%ebx 2598 movl 32(%esp),%edx 2599 movl 36(%esp),%ebp 2600 testl %eax,%eax 2601 jz .L094cbc_abort 2602 cmpl $0,40(%esp) 2603 xchgl %esp,%ebx 2604 movups (%ebp),%xmm7 2605 movl 240(%edx),%ecx 2606 movl %edx,%ebp 2607 movl %ebx,16(%esp) 2608 movl %ecx,%ebx 2609 je .L095cbc_decrypt 2610 movaps %xmm7,%xmm2 2611 cmpl $16,%eax 2612 jb .L096cbc_enc_tail 2613 subl $16,%eax 2614 jmp .L097cbc_enc_loop 2615 .align 16 2616 .L097cbc_enc_loop: 2617 movups (%esi),%xmm7 2618 leal 16(%esi),%esi 2619 movups (%edx),%xmm0 2620 movups 16(%edx),%xmm1 2621 xorps %xmm0,%xmm7 2622 leal 32(%edx),%edx 2623 xorps %xmm7,%xmm2 2624 .L098enc1_loop_19: 2625 .byte 102,15,56,220,209 2626 decl %ecx 2627 movups (%edx),%xmm1 2628 leal 16(%edx),%edx 2629 jnz .L098enc1_loop_19 2630 .byte 102,15,56,221,209 2631 movl %ebx,%ecx 2632 movl %ebp,%edx 2633 movups %xmm2,(%edi) 2634 leal 16(%edi),%edi 2635 subl $16,%eax 2636 jnc .L097cbc_enc_loop 2637 addl $16,%eax 2638 jnz .L096cbc_enc_tail 2639 movaps %xmm2,%xmm7 2640 pxor %xmm2,%xmm2 2641 jmp .L099cbc_ret 2642 .L096cbc_enc_tail: 2643 movl %eax,%ecx 2644 .long 2767451785 2645 movl $16,%ecx 2646 subl %eax,%ecx 2647 xorl %eax,%eax 2648 .long 2868115081 2649 leal -16(%edi),%edi 2650 movl %ebx,%ecx 2651 movl %edi,%esi 2652 movl %ebp,%edx 2653 jmp .L097cbc_enc_loop 2654 .align 16 2655 .L095cbc_decrypt: 2656 cmpl $80,%eax 2657 jbe .L100cbc_dec_tail 2658 movaps %xmm7,(%esp) 2659 subl $80,%eax 2660 jmp .L101cbc_dec_loop6_enter 2661 .align 16 2662 .L102cbc_dec_loop6: 2663 movaps %xmm0,(%esp) 2664 movups %xmm7,(%edi) 2665 leal 16(%edi),%edi 2666 .L101cbc_dec_loop6_enter: 2667 movdqu (%esi),%xmm2 2668 movdqu 16(%esi),%xmm3 2669 movdqu 32(%esi),%xmm4 2670 movdqu 48(%esi),%xmm5 2671 movdqu 64(%esi),%xmm6 2672 movdqu 80(%esi),%xmm7 2673 call _aesni_decrypt6 2674 movups (%esi),%xmm1 2675 movups 16(%esi),%xmm0 2676 xorps (%esp),%xmm2 2677 xorps %xmm1,%xmm3 2678 movups 32(%esi),%xmm1 2679 xorps %xmm0,%xmm4 2680 movups 48(%esi),%xmm0 2681 xorps %xmm1,%xmm5 2682 movups 64(%esi),%xmm1 2683 xorps %xmm0,%xmm6 2684 movups 80(%esi),%xmm0 2685 xorps %xmm1,%xmm7 2686 movups %xmm2,(%edi) 2687 movups %xmm3,16(%edi) 2688 leal 96(%esi),%esi 2689 movups %xmm4,32(%edi) 2690 movl %ebx,%ecx 2691 movups %xmm5,48(%edi) 2692 movl %ebp,%edx 2693 movups %xmm6,64(%edi) 2694 leal 80(%edi),%edi 2695 subl $96,%eax 2696 ja .L102cbc_dec_loop6 2697 movaps %xmm7,%xmm2 2698 movaps %xmm0,%xmm7 2699 addl $80,%eax 2700 jle .L103cbc_dec_clear_tail_collected 2701 movups %xmm2,(%edi) 2702 leal 16(%edi),%edi 2703 .L100cbc_dec_tail: 2704 movups (%esi),%xmm2 2705 movaps %xmm2,%xmm6 2706 cmpl $16,%eax 2707 jbe .L104cbc_dec_one 2708 movups 16(%esi),%xmm3 2709 movaps %xmm3,%xmm5 2710 cmpl $32,%eax 2711 jbe .L105cbc_dec_two 2712 movups 32(%esi),%xmm4 2713 cmpl $48,%eax 2714 jbe .L106cbc_dec_three 2715 movups 48(%esi),%xmm5 2716 cmpl $64,%eax 2717 jbe .L107cbc_dec_four 2718 movups 64(%esi),%xmm6 2719 movaps %xmm7,(%esp) 2720 movups (%esi),%xmm2 2721 xorps %xmm7,%xmm7 2722 call _aesni_decrypt6 2723 movups (%esi),%xmm1 2724 movups 16(%esi),%xmm0 2725 xorps (%esp),%xmm2 2726 xorps %xmm1,%xmm3 2727 movups 32(%esi),%xmm1 2728 xorps %xmm0,%xmm4 2729 movups 48(%esi),%xmm0 2730 xorps %xmm1,%xmm5 2731 movups 64(%esi),%xmm7 2732 xorps %xmm0,%xmm6 2733 movups %xmm2,(%edi) 2734 movups %xmm3,16(%edi) 2735 pxor %xmm3,%xmm3 2736 movups %xmm4,32(%edi) 2737 pxor %xmm4,%xmm4 2738 movups %xmm5,48(%edi) 2739 pxor %xmm5,%xmm5 2740 leal 64(%edi),%edi 2741 movaps %xmm6,%xmm2 2742 pxor %xmm6,%xmm6 2743 subl $80,%eax 2744 jmp .L108cbc_dec_tail_collected 2745 .align 16 2746 .L104cbc_dec_one: 2747 movups (%edx),%xmm0 2748 movups 16(%edx),%xmm1 2749 leal 32(%edx),%edx 2750 xorps %xmm0,%xmm2 2751 .L109dec1_loop_20: 2752 .byte 102,15,56,222,209 2753 decl %ecx 2754 movups (%edx),%xmm1 2755 leal 16(%edx),%edx 2756 jnz .L109dec1_loop_20 2757 .byte 102,15,56,223,209 2758 xorps %xmm7,%xmm2 2759 movaps %xmm6,%xmm7 2760 subl $16,%eax 2761 jmp .L108cbc_dec_tail_collected 2762 .align 16 2763 .L105cbc_dec_two: 2764 call _aesni_decrypt2 2765 xorps %xmm7,%xmm2 2766 xorps %xmm6,%xmm3 2767 movups %xmm2,(%edi) 2768 movaps %xmm3,%xmm2 2769 pxor %xmm3,%xmm3 2770 leal 16(%edi),%edi 2771 movaps %xmm5,%xmm7 2772 subl $32,%eax 2773 jmp .L108cbc_dec_tail_collected 2774 .align 16 2775 .L106cbc_dec_three: 2776 call _aesni_decrypt3 2777 xorps %xmm7,%xmm2 2778 xorps %xmm6,%xmm3 2779 xorps %xmm5,%xmm4 2780 movups %xmm2,(%edi) 2781 movaps %xmm4,%xmm2 2782 pxor %xmm4,%xmm4 2783 movups %xmm3,16(%edi) 2784 pxor %xmm3,%xmm3 2785 leal 32(%edi),%edi 2786 movups 32(%esi),%xmm7 2787 subl $48,%eax 2788 jmp .L108cbc_dec_tail_collected 2789 .align 16 2790 .L107cbc_dec_four: 2791 call _aesni_decrypt4 2792 movups 16(%esi),%xmm1 2793 movups 32(%esi),%xmm0 2794 xorps %xmm7,%xmm2 2795 movups 48(%esi),%xmm7 2796 xorps %xmm6,%xmm3 2797 movups %xmm2,(%edi) 2798 xorps %xmm1,%xmm4 2799 movups %xmm3,16(%edi) 2800 pxor %xmm3,%xmm3 2801 xorps %xmm0,%xmm5 2802 movups %xmm4,32(%edi) 2803 pxor %xmm4,%xmm4 2804 leal 48(%edi),%edi 2805 movaps %xmm5,%xmm2 2806 pxor %xmm5,%xmm5 2807 subl $64,%eax 2808 jmp .L108cbc_dec_tail_collected 2809 .align 16 2810 .L103cbc_dec_clear_tail_collected: 2811 pxor %xmm3,%xmm3 2812 pxor %xmm4,%xmm4 2813 pxor %xmm5,%xmm5 2814 pxor %xmm6,%xmm6 2815 .L108cbc_dec_tail_collected: 2816 andl $15,%eax 2817 jnz .L110cbc_dec_tail_partial 2818 movups %xmm2,(%edi) 2819 pxor %xmm0,%xmm0 2820 jmp .L099cbc_ret 2821 .align 16 2822 .L110cbc_dec_tail_partial: 2823 movaps %xmm2,(%esp) 2824 pxor %xmm0,%xmm0 2825 movl $16,%ecx 2826 movl %esp,%esi 2827 subl %eax,%ecx 2828 .long 2767451785 2829 movdqa %xmm2,(%esp) 2830 .L099cbc_ret: 2831 movl 16(%esp),%esp 2832 movl 36(%esp),%ebp 2833 pxor %xmm2,%xmm2 2834 pxor %xmm1,%xmm1 2835 movups %xmm7,(%ebp) 2836 pxor %xmm7,%xmm7 2837 .L094cbc_abort: 2838 popl %edi 2839 popl %esi 2840 popl %ebx 2841 popl %ebp 2842 ret 2843 .size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 2844 .type _aesni_set_encrypt_key,@function 2845 .align 16 2846 _aesni_set_encrypt_key: 2847 pushl %ebp 2848 pushl %ebx 2849 testl %eax,%eax 2850 jz .L111bad_pointer 2851 testl %edx,%edx 2852 jz .L111bad_pointer 2853 call .L112pic 2854 .L112pic: 2855 popl %ebx 2856 leal .Lkey_const-.L112pic(%ebx),%ebx 2857 leal OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp 2858 movups (%eax),%xmm0 2859 xorps %xmm4,%xmm4 2860 movl 4(%ebp),%ebp 2861 leal 16(%edx),%edx 2862 andl $268437504,%ebp 2863 cmpl $256,%ecx 2864 je .L11314rounds 2865 cmpl $192,%ecx 2866 je .L11412rounds 2867 cmpl $128,%ecx 2868 jne .L115bad_keybits 2869 .align 16 2870 .L11610rounds: 2871 cmpl $268435456,%ebp 2872 je .L11710rounds_alt 2873 movl $9,%ecx 2874 movups %xmm0,-16(%edx) 2875 .byte 102,15,58,223,200,1 2876 call .L118key_128_cold 2877 .byte 102,15,58,223,200,2 2878 call .L119key_128 2879 .byte 102,15,58,223,200,4 2880 call .L119key_128 2881 .byte 102,15,58,223,200,8 2882 call .L119key_128 2883 .byte 102,15,58,223,200,16 2884 call .L119key_128 2885 .byte 102,15,58,223,200,32 2886 call .L119key_128 2887 .byte 102,15,58,223,200,64 2888 call .L119key_128 2889 .byte 102,15,58,223,200,128 2890 call .L119key_128 2891 .byte 102,15,58,223,200,27 2892 call .L119key_128 2893 .byte 102,15,58,223,200,54 2894 call .L119key_128 2895 movups %xmm0,(%edx) 2896 movl %ecx,80(%edx) 2897 jmp .L120good_key 2898 .align 16 2899 .L119key_128: 2900 movups %xmm0,(%edx) 2901 leal 16(%edx),%edx 2902 .L118key_128_cold: 2903 shufps $16,%xmm0,%xmm4 2904 xorps %xmm4,%xmm0 2905 shufps $140,%xmm0,%xmm4 2906 xorps %xmm4,%xmm0 2907 shufps $255,%xmm1,%xmm1 2908 xorps %xmm1,%xmm0 2909 ret 2910 .align 16 2911 .L11710rounds_alt: 2912 movdqa (%ebx),%xmm5 2913 movl $8,%ecx 2914 movdqa 32(%ebx),%xmm4 2915 movdqa %xmm0,%xmm2 2916 movdqu %xmm0,-16(%edx) 2917 .L121loop_key128: 2918 .byte 102,15,56,0,197 2919 .byte 102,15,56,221,196 2920 pslld $1,%xmm4 2921 leal 16(%edx),%edx 2922 movdqa %xmm2,%xmm3 2923 pslldq $4,%xmm2 2924 pxor %xmm2,%xmm3 2925 pslldq $4,%xmm2 2926 pxor %xmm2,%xmm3 2927 pslldq $4,%xmm2 2928 pxor %xmm3,%xmm2 2929 pxor %xmm2,%xmm0 2930 movdqu %xmm0,-16(%edx) 2931 movdqa %xmm0,%xmm2 2932 decl %ecx 2933 jnz .L121loop_key128 2934 movdqa 48(%ebx),%xmm4 2935 .byte 102,15,56,0,197 2936 .byte 102,15,56,221,196 2937 pslld $1,%xmm4 2938 movdqa %xmm2,%xmm3 2939 pslldq $4,%xmm2 2940 pxor %xmm2,%xmm3 2941 pslldq $4,%xmm2 2942 pxor %xmm2,%xmm3 2943 pslldq $4,%xmm2 2944 pxor %xmm3,%xmm2 2945 pxor %xmm2,%xmm0 2946 movdqu %xmm0,(%edx) 2947 movdqa %xmm0,%xmm2 2948 .byte 102,15,56,0,197 2949 .byte 102,15,56,221,196 2950 movdqa %xmm2,%xmm3 2951 pslldq $4,%xmm2 2952 pxor %xmm2,%xmm3 2953 pslldq $4,%xmm2 2954 pxor %xmm2,%xmm3 2955 pslldq $4,%xmm2 2956 pxor %xmm3,%xmm2 2957 pxor %xmm2,%xmm0 2958 movdqu %xmm0,16(%edx) 2959 movl $9,%ecx 2960 movl %ecx,96(%edx) 2961 jmp .L120good_key 2962 .align 16 2963 .L11412rounds: 2964 movq 16(%eax),%xmm2 2965 cmpl $268435456,%ebp 2966 je .L12212rounds_alt 2967 movl $11,%ecx 2968 movups %xmm0,-16(%edx) 2969 .byte 102,15,58,223,202,1 2970 call .L123key_192a_cold 2971 .byte 102,15,58,223,202,2 2972 call .L124key_192b 2973 .byte 102,15,58,223,202,4 2974 call .L125key_192a 2975 .byte 102,15,58,223,202,8 2976 call .L124key_192b 2977 .byte 102,15,58,223,202,16 2978 call .L125key_192a 2979 .byte 102,15,58,223,202,32 2980 call .L124key_192b 2981 .byte 102,15,58,223,202,64 2982 call .L125key_192a 2983 .byte 102,15,58,223,202,128 2984 call .L124key_192b 2985 movups %xmm0,(%edx) 2986 movl %ecx,48(%edx) 2987 jmp .L120good_key 2988 .align 16 2989 .L125key_192a: 2990 movups %xmm0,(%edx) 2991 leal 16(%edx),%edx 2992 .align 16 2993 .L123key_192a_cold: 2994 movaps %xmm2,%xmm5 2995 .L126key_192b_warm: 2996 shufps $16,%xmm0,%xmm4 2997 movdqa %xmm2,%xmm3 2998 xorps %xmm4,%xmm0 2999 shufps $140,%xmm0,%xmm4 3000 pslldq $4,%xmm3 3001 xorps %xmm4,%xmm0 3002 pshufd $85,%xmm1,%xmm1 3003 pxor %xmm3,%xmm2 3004 pxor %xmm1,%xmm0 3005 pshufd $255,%xmm0,%xmm3 3006 pxor %xmm3,%xmm2 3007 ret 3008 .align 16 3009 .L124key_192b: 3010 movaps %xmm0,%xmm3 3011 shufps $68,%xmm0,%xmm5 3012 movups %xmm5,(%edx) 3013 shufps $78,%xmm2,%xmm3 3014 movups %xmm3,16(%edx) 3015 leal 32(%edx),%edx 3016 jmp .L126key_192b_warm 3017 .align 16 3018 .L12212rounds_alt: 3019 movdqa 16(%ebx),%xmm5 3020 movdqa 32(%ebx),%xmm4 3021 movl $8,%ecx 3022 movdqu %xmm0,-16(%edx) 3023 .L127loop_key192: 3024 movq %xmm2,(%edx) 3025 movdqa %xmm2,%xmm1 3026 .byte 102,15,56,0,213 3027 .byte 102,15,56,221,212 3028 pslld $1,%xmm4 3029 leal 24(%edx),%edx 3030 movdqa %xmm0,%xmm3 3031 pslldq $4,%xmm0 3032 pxor %xmm0,%xmm3 3033 pslldq $4,%xmm0 3034 pxor %xmm0,%xmm3 3035 pslldq $4,%xmm0 3036 pxor %xmm3,%xmm0 3037 pshufd $255,%xmm0,%xmm3 3038 pxor %xmm1,%xmm3 3039 pslldq $4,%xmm1 3040 pxor %xmm1,%xmm3 3041 pxor %xmm2,%xmm0 3042 pxor %xmm3,%xmm2 3043 movdqu %xmm0,-16(%edx) 3044 decl %ecx 3045 jnz .L127loop_key192 3046 movl $11,%ecx 3047 movl %ecx,32(%edx) 3048 jmp .L120good_key 3049 .align 16 3050 .L11314rounds: 3051 movups 16(%eax),%xmm2 3052 leal 16(%edx),%edx 3053 cmpl $268435456,%ebp 3054 je .L12814rounds_alt 3055 movl $13,%ecx 3056 movups %xmm0,-32(%edx) 3057 movups %xmm2,-16(%edx) 3058 .byte 102,15,58,223,202,1 3059 call .L129key_256a_cold 3060 .byte 102,15,58,223,200,1 3061 call .L130key_256b 3062 .byte 102,15,58,223,202,2 3063 call .L131key_256a 3064 .byte 102,15,58,223,200,2 3065 call .L130key_256b 3066 .byte 102,15,58,223,202,4 3067 call .L131key_256a 3068 .byte 102,15,58,223,200,4 3069 call .L130key_256b 3070 .byte 102,15,58,223,202,8 3071 call .L131key_256a 3072 .byte 102,15,58,223,200,8 3073 call .L130key_256b 3074 .byte 102,15,58,223,202,16 3075 call .L131key_256a 3076 .byte 102,15,58,223,200,16 3077 call .L130key_256b 3078 .byte 102,15,58,223,202,32 3079 call .L131key_256a 3080 .byte 102,15,58,223,200,32 3081 call .L130key_256b 3082 .byte 102,15,58,223,202,64 3083 call .L131key_256a 3084 movups %xmm0,(%edx) 3085 movl %ecx,16(%edx) 3086 xorl %eax,%eax 3087 jmp .L120good_key 3088 .align 16 3089 .L131key_256a: 3090 movups %xmm2,(%edx) 3091 leal 16(%edx),%edx 3092 .L129key_256a_cold: 3093 shufps $16,%xmm0,%xmm4 3094 xorps %xmm4,%xmm0 3095 shufps $140,%xmm0,%xmm4 3096 xorps %xmm4,%xmm0 3097 shufps $255,%xmm1,%xmm1 3098 xorps %xmm1,%xmm0 3099 ret 3100 .align 16 3101 .L130key_256b: 3102 movups %xmm0,(%edx) 3103 leal 16(%edx),%edx 3104 shufps $16,%xmm2,%xmm4 3105 xorps %xmm4,%xmm2 3106 shufps $140,%xmm2,%xmm4 3107 xorps %xmm4,%xmm2 3108 shufps $170,%xmm1,%xmm1 3109 xorps %xmm1,%xmm2 3110 ret 3111 .align 16 3112 .L12814rounds_alt: 3113 movdqa (%ebx),%xmm5 3114 movdqa 32(%ebx),%xmm4 3115 movl $7,%ecx 3116 movdqu %xmm0,-32(%edx) 3117 movdqa %xmm2,%xmm1 3118 movdqu %xmm2,-16(%edx) 3119 .L132loop_key256: 3120 .byte 102,15,56,0,213 3121 .byte 102,15,56,221,212 3122 movdqa %xmm0,%xmm3 3123 pslldq $4,%xmm0 3124 pxor %xmm0,%xmm3 3125 pslldq $4,%xmm0 3126 pxor %xmm0,%xmm3 3127 pslldq $4,%xmm0 3128 pxor %xmm3,%xmm0 3129 pslld $1,%xmm4 3130 pxor %xmm2,%xmm0 3131 movdqu %xmm0,(%edx) 3132 decl %ecx 3133 jz .L133done_key256 3134 pshufd $255,%xmm0,%xmm2 3135 pxor %xmm3,%xmm3 3136 .byte 102,15,56,221,211 3137 movdqa %xmm1,%xmm3 3138 pslldq $4,%xmm1 3139 pxor %xmm1,%xmm3 3140 pslldq $4,%xmm1 3141 pxor %xmm1,%xmm3 3142 pslldq $4,%xmm1 3143 pxor %xmm3,%xmm1 3144 pxor %xmm1,%xmm2 3145 movdqu %xmm2,16(%edx) 3146 leal 32(%edx),%edx 3147 movdqa %xmm2,%xmm1 3148 jmp .L132loop_key256 3149 .L133done_key256: 3150 movl $13,%ecx 3151 movl %ecx,16(%edx) 3152 .L120good_key: 3153 pxor %xmm0,%xmm0 3154 pxor %xmm1,%xmm1 3155 pxor %xmm2,%xmm2 3156 pxor %xmm3,%xmm3 3157 pxor %xmm4,%xmm4 3158 pxor %xmm5,%xmm5 3159 xorl %eax,%eax 3160 popl %ebx 3161 popl %ebp 3162 ret 3163 .align 4 3164 .L111bad_pointer: 3165 movl $-1,%eax 3166 popl %ebx 3167 popl %ebp 3168 ret 3169 .align 4 3170 .L115bad_keybits: 3171 pxor %xmm0,%xmm0 3172 movl $-2,%eax 3173 popl %ebx 3174 popl %ebp 3175 ret 3176 .size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 3177 .globl aesni_set_encrypt_key 3178 .type aesni_set_encrypt_key,@function 3179 .align 16 3180 aesni_set_encrypt_key: 3181 .L_aesni_set_encrypt_key_begin: 3182 movl 4(%esp),%eax 3183 movl 8(%esp),%ecx 3184 movl 12(%esp),%edx 3185 call _aesni_set_encrypt_key 3186 ret 3187 .size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 3188 .globl aesni_set_decrypt_key 3189 .type aesni_set_decrypt_key,@function 3190 .align 16 3191 aesni_set_decrypt_key: 3192 .L_aesni_set_decrypt_key_begin: 3193 movl 4(%esp),%eax 3194 movl 8(%esp),%ecx 3195 movl 12(%esp),%edx 3196 call _aesni_set_encrypt_key 3197 movl 12(%esp),%edx 3198 shll $4,%ecx 3199 testl %eax,%eax 3200 jnz .L134dec_key_ret 3201 leal 16(%edx,%ecx,1),%eax 3202 movups (%edx),%xmm0 3203 movups (%eax),%xmm1 3204 movups %xmm0,(%eax) 3205 movups %xmm1,(%edx) 3206 leal 16(%edx),%edx 3207 leal -16(%eax),%eax 3208 .L135dec_key_inverse: 3209 movups (%edx),%xmm0 3210 movups (%eax),%xmm1 3211 .byte 102,15,56,219,192 3212 .byte 102,15,56,219,201 3213 leal 16(%edx),%edx 3214 leal -16(%eax),%eax 3215 movups %xmm0,16(%eax) 3216 movups %xmm1,-16(%edx) 3217 cmpl %edx,%eax 3218 ja .L135dec_key_inverse 3219 movups (%edx),%xmm0 3220 .byte 102,15,56,219,192 3221 movups %xmm0,(%edx) 3222 pxor %xmm0,%xmm0 3223 pxor %xmm1,%xmm1 3224 xorl %eax,%eax 3225 .L134dec_key_ret: 3226 ret 3227 .size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 3228 .align 64 3229 .Lkey_const: 3230 .long 202313229,202313229,202313229,202313229 3231 .long 67569157,67569157,67569157,67569157 3232 .long 1,1,1,1 3233 .long 27,27,27,27 3234 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 3235 .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 3236 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 3237 .byte 115,108,46,111,114,103,62,0 3238 .comm OPENSSL_ia32cap_P,16,4 3239