1 .file "crypto/aes/asm/aesni-x86.s" 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 movups %xmm2,(%eax) 25 ret 26 .size aesni_encrypt,.-.L_aesni_encrypt_begin 27 .globl aesni_decrypt 28 .type aesni_decrypt,@function 29 .align 16 30 aesni_decrypt: 31 .L_aesni_decrypt_begin: 32 movl 4(%esp),%eax 33 movl 12(%esp),%edx 34 movups (%eax),%xmm2 35 movl 240(%edx),%ecx 36 movl 8(%esp),%eax 37 movups (%edx),%xmm0 38 movups 16(%edx),%xmm1 39 leal 32(%edx),%edx 40 xorps %xmm0,%xmm2 41 .L001dec1_loop_2: 42 .byte 102,15,56,222,209 43 decl %ecx 44 movups (%edx),%xmm1 45 leal 16(%edx),%edx 46 jnz .L001dec1_loop_2 47 .byte 102,15,56,223,209 48 movups %xmm2,(%eax) 49 ret 50 .size aesni_decrypt,.-.L_aesni_decrypt_begin 51 .type _aesni_encrypt3,@function 52 .align 16 53 _aesni_encrypt3: 54 movups (%edx),%xmm0 55 shrl $1,%ecx 56 movups 16(%edx),%xmm1 57 leal 32(%edx),%edx 58 xorps %xmm0,%xmm2 59 pxor %xmm0,%xmm3 60 pxor %xmm0,%xmm4 61 movups (%edx),%xmm0 62 .L002enc3_loop: 63 .byte 102,15,56,220,209 64 .byte 102,15,56,220,217 65 decl %ecx 66 .byte 102,15,56,220,225 67 movups 16(%edx),%xmm1 68 .byte 102,15,56,220,208 69 .byte 102,15,56,220,216 70 leal 32(%edx),%edx 71 .byte 102,15,56,220,224 72 movups (%edx),%xmm0 73 jnz .L002enc3_loop 74 .byte 102,15,56,220,209 75 .byte 102,15,56,220,217 76 .byte 102,15,56,220,225 77 .byte 102,15,56,221,208 78 .byte 102,15,56,221,216 79 .byte 102,15,56,221,224 80 ret 81 .size _aesni_encrypt3,.-_aesni_encrypt3 82 .type _aesni_decrypt3,@function 83 .align 16 84 _aesni_decrypt3: 85 movups (%edx),%xmm0 86 shrl $1,%ecx 87 movups 16(%edx),%xmm1 88 leal 32(%edx),%edx 89 xorps %xmm0,%xmm2 90 pxor %xmm0,%xmm3 91 pxor %xmm0,%xmm4 92 movups (%edx),%xmm0 93 .L003dec3_loop: 94 .byte 102,15,56,222,209 95 .byte 102,15,56,222,217 96 decl %ecx 97 .byte 102,15,56,222,225 98 movups 16(%edx),%xmm1 99 .byte 102,15,56,222,208 100 .byte 102,15,56,222,216 101 leal 32(%edx),%edx 102 .byte 102,15,56,222,224 103 movups (%edx),%xmm0 104 jnz .L003dec3_loop 105 .byte 102,15,56,222,209 106 .byte 102,15,56,222,217 107 .byte 102,15,56,222,225 108 .byte 102,15,56,223,208 109 .byte 102,15,56,223,216 110 .byte 102,15,56,223,224 111 ret 112 .size _aesni_decrypt3,.-_aesni_decrypt3 113 .type _aesni_encrypt4,@function 114 .align 16 115 _aesni_encrypt4: 116 movups (%edx),%xmm0 117 movups 16(%edx),%xmm1 118 shrl $1,%ecx 119 leal 32(%edx),%edx 120 xorps %xmm0,%xmm2 121 pxor %xmm0,%xmm3 122 pxor %xmm0,%xmm4 123 pxor %xmm0,%xmm5 124 movups (%edx),%xmm0 125 .L004enc4_loop: 126 .byte 102,15,56,220,209 127 .byte 102,15,56,220,217 128 decl %ecx 129 .byte 102,15,56,220,225 130 .byte 102,15,56,220,233 131 movups 16(%edx),%xmm1 132 .byte 102,15,56,220,208 133 .byte 102,15,56,220,216 134 leal 32(%edx),%edx 135 .byte 102,15,56,220,224 136 .byte 102,15,56,220,232 137 movups (%edx),%xmm0 138 jnz .L004enc4_loop 139 .byte 102,15,56,220,209 140 .byte 102,15,56,220,217 141 .byte 102,15,56,220,225 142 .byte 102,15,56,220,233 143 .byte 102,15,56,221,208 144 .byte 102,15,56,221,216 145 .byte 102,15,56,221,224 146 .byte 102,15,56,221,232 147 ret 148 .size _aesni_encrypt4,.-_aesni_encrypt4 149 .type _aesni_decrypt4,@function 150 .align 16 151 _aesni_decrypt4: 152 movups (%edx),%xmm0 153 movups 16(%edx),%xmm1 154 shrl $1,%ecx 155 leal 32(%edx),%edx 156 xorps %xmm0,%xmm2 157 pxor %xmm0,%xmm3 158 pxor %xmm0,%xmm4 159 pxor %xmm0,%xmm5 160 movups (%edx),%xmm0 161 .L005dec4_loop: 162 .byte 102,15,56,222,209 163 .byte 102,15,56,222,217 164 decl %ecx 165 .byte 102,15,56,222,225 166 .byte 102,15,56,222,233 167 movups 16(%edx),%xmm1 168 .byte 102,15,56,222,208 169 .byte 102,15,56,222,216 170 leal 32(%edx),%edx 171 .byte 102,15,56,222,224 172 .byte 102,15,56,222,232 173 movups (%edx),%xmm0 174 jnz .L005dec4_loop 175 .byte 102,15,56,222,209 176 .byte 102,15,56,222,217 177 .byte 102,15,56,222,225 178 .byte 102,15,56,222,233 179 .byte 102,15,56,223,208 180 .byte 102,15,56,223,216 181 .byte 102,15,56,223,224 182 .byte 102,15,56,223,232 183 ret 184 .size _aesni_decrypt4,.-_aesni_decrypt4 185 .type _aesni_encrypt6,@function 186 .align 16 187 _aesni_encrypt6: 188 movups (%edx),%xmm0 189 shrl $1,%ecx 190 movups 16(%edx),%xmm1 191 leal 32(%edx),%edx 192 xorps %xmm0,%xmm2 193 pxor %xmm0,%xmm3 194 .byte 102,15,56,220,209 195 pxor %xmm0,%xmm4 196 .byte 102,15,56,220,217 197 pxor %xmm0,%xmm5 198 decl %ecx 199 .byte 102,15,56,220,225 200 pxor %xmm0,%xmm6 201 .byte 102,15,56,220,233 202 pxor %xmm0,%xmm7 203 .byte 102,15,56,220,241 204 movups (%edx),%xmm0 205 .byte 102,15,56,220,249 206 jmp .L_aesni_encrypt6_enter 207 .align 16 208 .L006enc6_loop: 209 .byte 102,15,56,220,209 210 .byte 102,15,56,220,217 211 decl %ecx 212 .byte 102,15,56,220,225 213 .byte 102,15,56,220,233 214 .byte 102,15,56,220,241 215 .byte 102,15,56,220,249 216 .align 16 217 .L_aesni_encrypt6_enter: 218 movups 16(%edx),%xmm1 219 .byte 102,15,56,220,208 220 .byte 102,15,56,220,216 221 leal 32(%edx),%edx 222 .byte 102,15,56,220,224 223 .byte 102,15,56,220,232 224 .byte 102,15,56,220,240 225 .byte 102,15,56,220,248 226 movups (%edx),%xmm0 227 jnz .L006enc6_loop 228 .byte 102,15,56,220,209 229 .byte 102,15,56,220,217 230 .byte 102,15,56,220,225 231 .byte 102,15,56,220,233 232 .byte 102,15,56,220,241 233 .byte 102,15,56,220,249 234 .byte 102,15,56,221,208 235 .byte 102,15,56,221,216 236 .byte 102,15,56,221,224 237 .byte 102,15,56,221,232 238 .byte 102,15,56,221,240 239 .byte 102,15,56,221,248 240 ret 241 .size _aesni_encrypt6,.-_aesni_encrypt6 242 .type _aesni_decrypt6,@function 243 .align 16 244 _aesni_decrypt6: 245 movups (%edx),%xmm0 246 shrl $1,%ecx 247 movups 16(%edx),%xmm1 248 leal 32(%edx),%edx 249 xorps %xmm0,%xmm2 250 pxor %xmm0,%xmm3 251 .byte 102,15,56,222,209 252 pxor %xmm0,%xmm4 253 .byte 102,15,56,222,217 254 pxor %xmm0,%xmm5 255 decl %ecx 256 .byte 102,15,56,222,225 257 pxor %xmm0,%xmm6 258 .byte 102,15,56,222,233 259 pxor %xmm0,%xmm7 260 .byte 102,15,56,222,241 261 movups (%edx),%xmm0 262 .byte 102,15,56,222,249 263 jmp .L_aesni_decrypt6_enter 264 .align 16 265 .L007dec6_loop: 266 .byte 102,15,56,222,209 267 .byte 102,15,56,222,217 268 decl %ecx 269 .byte 102,15,56,222,225 270 .byte 102,15,56,222,233 271 .byte 102,15,56,222,241 272 .byte 102,15,56,222,249 273 .align 16 274 .L_aesni_decrypt6_enter: 275 movups 16(%edx),%xmm1 276 .byte 102,15,56,222,208 277 .byte 102,15,56,222,216 278 leal 32(%edx),%edx 279 .byte 102,15,56,222,224 280 .byte 102,15,56,222,232 281 .byte 102,15,56,222,240 282 .byte 102,15,56,222,248 283 movups (%edx),%xmm0 284 jnz .L007dec6_loop 285 .byte 102,15,56,222,209 286 .byte 102,15,56,222,217 287 .byte 102,15,56,222,225 288 .byte 102,15,56,222,233 289 .byte 102,15,56,222,241 290 .byte 102,15,56,222,249 291 .byte 102,15,56,223,208 292 .byte 102,15,56,223,216 293 .byte 102,15,56,223,224 294 .byte 102,15,56,223,232 295 .byte 102,15,56,223,240 296 .byte 102,15,56,223,248 297 ret 298 .size _aesni_decrypt6,.-_aesni_decrypt6 299 .globl aesni_ecb_encrypt 300 .type aesni_ecb_encrypt,@function 301 .align 16 302 aesni_ecb_encrypt: 303 .L_aesni_ecb_encrypt_begin: 304 pushl %ebp 305 pushl %ebx 306 pushl %esi 307 pushl %edi 308 movl 20(%esp),%esi 309 movl 24(%esp),%edi 310 movl 28(%esp),%eax 311 movl 32(%esp),%edx 312 movl 36(%esp),%ebx 313 andl $-16,%eax 314 jz .L008ecb_ret 315 movl 240(%edx),%ecx 316 testl %ebx,%ebx 317 jz .L009ecb_decrypt 318 movl %edx,%ebp 319 movl %ecx,%ebx 320 cmpl $96,%eax 321 jb .L010ecb_enc_tail 322 movdqu (%esi),%xmm2 323 movdqu 16(%esi),%xmm3 324 movdqu 32(%esi),%xmm4 325 movdqu 48(%esi),%xmm5 326 movdqu 64(%esi),%xmm6 327 movdqu 80(%esi),%xmm7 328 leal 96(%esi),%esi 329 subl $96,%eax 330 jmp .L011ecb_enc_loop6_enter 331 .align 16 332 .L012ecb_enc_loop6: 333 movups %xmm2,(%edi) 334 movdqu (%esi),%xmm2 335 movups %xmm3,16(%edi) 336 movdqu 16(%esi),%xmm3 337 movups %xmm4,32(%edi) 338 movdqu 32(%esi),%xmm4 339 movups %xmm5,48(%edi) 340 movdqu 48(%esi),%xmm5 341 movups %xmm6,64(%edi) 342 movdqu 64(%esi),%xmm6 343 movups %xmm7,80(%edi) 344 leal 96(%edi),%edi 345 movdqu 80(%esi),%xmm7 346 leal 96(%esi),%esi 347 .L011ecb_enc_loop6_enter: 348 call _aesni_encrypt6 349 movl %ebp,%edx 350 movl %ebx,%ecx 351 subl $96,%eax 352 jnc .L012ecb_enc_loop6 353 movups %xmm2,(%edi) 354 movups %xmm3,16(%edi) 355 movups %xmm4,32(%edi) 356 movups %xmm5,48(%edi) 357 movups %xmm6,64(%edi) 358 movups %xmm7,80(%edi) 359 leal 96(%edi),%edi 360 addl $96,%eax 361 jz .L008ecb_ret 362 .L010ecb_enc_tail: 363 movups (%esi),%xmm2 364 cmpl $32,%eax 365 jb .L013ecb_enc_one 366 movups 16(%esi),%xmm3 367 je .L014ecb_enc_two 368 movups 32(%esi),%xmm4 369 cmpl $64,%eax 370 jb .L015ecb_enc_three 371 movups 48(%esi),%xmm5 372 je .L016ecb_enc_four 373 movups 64(%esi),%xmm6 374 xorps %xmm7,%xmm7 375 call _aesni_encrypt6 376 movups %xmm2,(%edi) 377 movups %xmm3,16(%edi) 378 movups %xmm4,32(%edi) 379 movups %xmm5,48(%edi) 380 movups %xmm6,64(%edi) 381 jmp .L008ecb_ret 382 .align 16 383 .L013ecb_enc_one: 384 movups (%edx),%xmm0 385 movups 16(%edx),%xmm1 386 leal 32(%edx),%edx 387 xorps %xmm0,%xmm2 388 .L017enc1_loop_3: 389 .byte 102,15,56,220,209 390 decl %ecx 391 movups (%edx),%xmm1 392 leal 16(%edx),%edx 393 jnz .L017enc1_loop_3 394 .byte 102,15,56,221,209 395 movups %xmm2,(%edi) 396 jmp .L008ecb_ret 397 .align 16 398 .L014ecb_enc_two: 399 xorps %xmm4,%xmm4 400 call _aesni_encrypt3 401 movups %xmm2,(%edi) 402 movups %xmm3,16(%edi) 403 jmp .L008ecb_ret 404 .align 16 405 .L015ecb_enc_three: 406 call _aesni_encrypt3 407 movups %xmm2,(%edi) 408 movups %xmm3,16(%edi) 409 movups %xmm4,32(%edi) 410 jmp .L008ecb_ret 411 .align 16 412 .L016ecb_enc_four: 413 call _aesni_encrypt4 414 movups %xmm2,(%edi) 415 movups %xmm3,16(%edi) 416 movups %xmm4,32(%edi) 417 movups %xmm5,48(%edi) 418 jmp .L008ecb_ret 419 .align 16 420 .L009ecb_decrypt: 421 movl %edx,%ebp 422 movl %ecx,%ebx 423 cmpl $96,%eax 424 jb .L018ecb_dec_tail 425 movdqu (%esi),%xmm2 426 movdqu 16(%esi),%xmm3 427 movdqu 32(%esi),%xmm4 428 movdqu 48(%esi),%xmm5 429 movdqu 64(%esi),%xmm6 430 movdqu 80(%esi),%xmm7 431 leal 96(%esi),%esi 432 subl $96,%eax 433 jmp .L019ecb_dec_loop6_enter 434 .align 16 435 .L020ecb_dec_loop6: 436 movups %xmm2,(%edi) 437 movdqu (%esi),%xmm2 438 movups %xmm3,16(%edi) 439 movdqu 16(%esi),%xmm3 440 movups %xmm4,32(%edi) 441 movdqu 32(%esi),%xmm4 442 movups %xmm5,48(%edi) 443 movdqu 48(%esi),%xmm5 444 movups %xmm6,64(%edi) 445 movdqu 64(%esi),%xmm6 446 movups %xmm7,80(%edi) 447 leal 96(%edi),%edi 448 movdqu 80(%esi),%xmm7 449 leal 96(%esi),%esi 450 .L019ecb_dec_loop6_enter: 451 call _aesni_decrypt6 452 movl %ebp,%edx 453 movl %ebx,%ecx 454 subl $96,%eax 455 jnc .L020ecb_dec_loop6 456 movups %xmm2,(%edi) 457 movups %xmm3,16(%edi) 458 movups %xmm4,32(%edi) 459 movups %xmm5,48(%edi) 460 movups %xmm6,64(%edi) 461 movups %xmm7,80(%edi) 462 leal 96(%edi),%edi 463 addl $96,%eax 464 jz .L008ecb_ret 465 .L018ecb_dec_tail: 466 movups (%esi),%xmm2 467 cmpl $32,%eax 468 jb .L021ecb_dec_one 469 movups 16(%esi),%xmm3 470 je .L022ecb_dec_two 471 movups 32(%esi),%xmm4 472 cmpl $64,%eax 473 jb .L023ecb_dec_three 474 movups 48(%esi),%xmm5 475 je .L024ecb_dec_four 476 movups 64(%esi),%xmm6 477 xorps %xmm7,%xmm7 478 call _aesni_decrypt6 479 movups %xmm2,(%edi) 480 movups %xmm3,16(%edi) 481 movups %xmm4,32(%edi) 482 movups %xmm5,48(%edi) 483 movups %xmm6,64(%edi) 484 jmp .L008ecb_ret 485 .align 16 486 .L021ecb_dec_one: 487 movups (%edx),%xmm0 488 movups 16(%edx),%xmm1 489 leal 32(%edx),%edx 490 xorps %xmm0,%xmm2 491 .L025dec1_loop_4: 492 .byte 102,15,56,222,209 493 decl %ecx 494 movups (%edx),%xmm1 495 leal 16(%edx),%edx 496 jnz .L025dec1_loop_4 497 .byte 102,15,56,223,209 498 movups %xmm2,(%edi) 499 jmp .L008ecb_ret 500 .align 16 501 .L022ecb_dec_two: 502 xorps %xmm4,%xmm4 503 call _aesni_decrypt3 504 movups %xmm2,(%edi) 505 movups %xmm3,16(%edi) 506 jmp .L008ecb_ret 507 .align 16 508 .L023ecb_dec_three: 509 call _aesni_decrypt3 510 movups %xmm2,(%edi) 511 movups %xmm3,16(%edi) 512 movups %xmm4,32(%edi) 513 jmp .L008ecb_ret 514 .align 16 515 .L024ecb_dec_four: 516 call _aesni_decrypt4 517 movups %xmm2,(%edi) 518 movups %xmm3,16(%edi) 519 movups %xmm4,32(%edi) 520 movups %xmm5,48(%edi) 521 .L008ecb_ret: 522 popl %edi 523 popl %esi 524 popl %ebx 525 popl %ebp 526 ret 527 .size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 528 .globl aesni_ccm64_encrypt_blocks 529 .type aesni_ccm64_encrypt_blocks,@function 530 .align 16 531 aesni_ccm64_encrypt_blocks: 532 .L_aesni_ccm64_encrypt_blocks_begin: 533 pushl %ebp 534 pushl %ebx 535 pushl %esi 536 pushl %edi 537 movl 20(%esp),%esi 538 movl 24(%esp),%edi 539 movl 28(%esp),%eax 540 movl 32(%esp),%edx 541 movl 36(%esp),%ebx 542 movl 40(%esp),%ecx 543 movl %esp,%ebp 544 subl $60,%esp 545 andl $-16,%esp 546 movl %ebp,48(%esp) 547 movdqu (%ebx),%xmm7 548 movdqu (%ecx),%xmm3 549 movl 240(%edx),%ecx 550 movl $202182159,(%esp) 551 movl $134810123,4(%esp) 552 movl $67438087,8(%esp) 553 movl $66051,12(%esp) 554 movl $1,%ebx 555 xorl %ebp,%ebp 556 movl %ebx,16(%esp) 557 movl %ebp,20(%esp) 558 movl %ebp,24(%esp) 559 movl %ebp,28(%esp) 560 shrl $1,%ecx 561 leal (%edx),%ebp 562 movdqa (%esp),%xmm5 563 movdqa %xmm7,%xmm2 564 movl %ecx,%ebx 565 .byte 102,15,56,0,253 566 .L026ccm64_enc_outer: 567 movups (%ebp),%xmm0 568 movl %ebx,%ecx 569 movups (%esi),%xmm6 570 xorps %xmm0,%xmm2 571 movups 16(%ebp),%xmm1 572 xorps %xmm6,%xmm0 573 leal 32(%ebp),%edx 574 xorps %xmm0,%xmm3 575 movups (%edx),%xmm0 576 .L027ccm64_enc2_loop: 577 .byte 102,15,56,220,209 578 decl %ecx 579 .byte 102,15,56,220,217 580 movups 16(%edx),%xmm1 581 .byte 102,15,56,220,208 582 leal 32(%edx),%edx 583 .byte 102,15,56,220,216 584 movups (%edx),%xmm0 585 jnz .L027ccm64_enc2_loop 586 .byte 102,15,56,220,209 587 .byte 102,15,56,220,217 588 paddq 16(%esp),%xmm7 589 .byte 102,15,56,221,208 590 .byte 102,15,56,221,216 591 decl %eax 592 leal 16(%esi),%esi 593 xorps %xmm2,%xmm6 594 movdqa %xmm7,%xmm2 595 movups %xmm6,(%edi) 596 leal 16(%edi),%edi 597 .byte 102,15,56,0,213 598 jnz .L026ccm64_enc_outer 599 movl 48(%esp),%esp 600 movl 40(%esp),%edi 601 movups %xmm3,(%edi) 602 popl %edi 603 popl %esi 604 popl %ebx 605 popl %ebp 606 ret 607 .size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 608 .globl aesni_ccm64_decrypt_blocks 609 .type aesni_ccm64_decrypt_blocks,@function 610 .align 16 611 aesni_ccm64_decrypt_blocks: 612 .L_aesni_ccm64_decrypt_blocks_begin: 613 pushl %ebp 614 pushl %ebx 615 pushl %esi 616 pushl %edi 617 movl 20(%esp),%esi 618 movl 24(%esp),%edi 619 movl 28(%esp),%eax 620 movl 32(%esp),%edx 621 movl 36(%esp),%ebx 622 movl 40(%esp),%ecx 623 movl %esp,%ebp 624 subl $60,%esp 625 andl $-16,%esp 626 movl %ebp,48(%esp) 627 movdqu (%ebx),%xmm7 628 movdqu (%ecx),%xmm3 629 movl 240(%edx),%ecx 630 movl $202182159,(%esp) 631 movl $134810123,4(%esp) 632 movl $67438087,8(%esp) 633 movl $66051,12(%esp) 634 movl $1,%ebx 635 xorl %ebp,%ebp 636 movl %ebx,16(%esp) 637 movl %ebp,20(%esp) 638 movl %ebp,24(%esp) 639 movl %ebp,28(%esp) 640 movdqa (%esp),%xmm5 641 movdqa %xmm7,%xmm2 642 movl %edx,%ebp 643 movl %ecx,%ebx 644 .byte 102,15,56,0,253 645 movups (%edx),%xmm0 646 movups 16(%edx),%xmm1 647 leal 32(%edx),%edx 648 xorps %xmm0,%xmm2 649 .L028enc1_loop_5: 650 .byte 102,15,56,220,209 651 decl %ecx 652 movups (%edx),%xmm1 653 leal 16(%edx),%edx 654 jnz .L028enc1_loop_5 655 .byte 102,15,56,221,209 656 movups (%esi),%xmm6 657 paddq 16(%esp),%xmm7 658 leal 16(%esi),%esi 659 jmp .L029ccm64_dec_outer 660 .align 16 661 .L029ccm64_dec_outer: 662 xorps %xmm2,%xmm6 663 movdqa %xmm7,%xmm2 664 movl %ebx,%ecx 665 movups %xmm6,(%edi) 666 leal 16(%edi),%edi 667 .byte 102,15,56,0,213 668 subl $1,%eax 669 jz .L030ccm64_dec_break 670 movups (%ebp),%xmm0 671 shrl $1,%ecx 672 movups 16(%ebp),%xmm1 673 xorps %xmm0,%xmm6 674 leal 32(%ebp),%edx 675 xorps %xmm0,%xmm2 676 xorps %xmm6,%xmm3 677 movups (%edx),%xmm0 678 .L031ccm64_dec2_loop: 679 .byte 102,15,56,220,209 680 decl %ecx 681 .byte 102,15,56,220,217 682 movups 16(%edx),%xmm1 683 .byte 102,15,56,220,208 684 leal 32(%edx),%edx 685 .byte 102,15,56,220,216 686 movups (%edx),%xmm0 687 jnz .L031ccm64_dec2_loop 688 movups (%esi),%xmm6 689 paddq 16(%esp),%xmm7 690 .byte 102,15,56,220,209 691 .byte 102,15,56,220,217 692 leal 16(%esi),%esi 693 .byte 102,15,56,221,208 694 .byte 102,15,56,221,216 695 jmp .L029ccm64_dec_outer 696 .align 16 697 .L030ccm64_dec_break: 698 movl %ebp,%edx 699 movups (%edx),%xmm0 700 movups 16(%edx),%xmm1 701 xorps %xmm0,%xmm6 702 leal 32(%edx),%edx 703 xorps %xmm6,%xmm3 704 .L032enc1_loop_6: 705 .byte 102,15,56,220,217 706 decl %ecx 707 movups (%edx),%xmm1 708 leal 16(%edx),%edx 709 jnz .L032enc1_loop_6 710 .byte 102,15,56,221,217 711 movl 48(%esp),%esp 712 movl 40(%esp),%edi 713 movups %xmm3,(%edi) 714 popl %edi 715 popl %esi 716 popl %ebx 717 popl %ebp 718 ret 719 .size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 720 .globl aesni_ctr32_encrypt_blocks 721 .type aesni_ctr32_encrypt_blocks,@function 722 .align 16 723 aesni_ctr32_encrypt_blocks: 724 .L_aesni_ctr32_encrypt_blocks_begin: 725 pushl %ebp 726 pushl %ebx 727 pushl %esi 728 pushl %edi 729 movl 20(%esp),%esi 730 movl 24(%esp),%edi 731 movl 28(%esp),%eax 732 movl 32(%esp),%edx 733 movl 36(%esp),%ebx 734 movl %esp,%ebp 735 subl $88,%esp 736 andl $-16,%esp 737 movl %ebp,80(%esp) 738 cmpl $1,%eax 739 je .L033ctr32_one_shortcut 740 movdqu (%ebx),%xmm7 741 movl $202182159,(%esp) 742 movl $134810123,4(%esp) 743 movl $67438087,8(%esp) 744 movl $66051,12(%esp) 745 movl $6,%ecx 746 xorl %ebp,%ebp 747 movl %ecx,16(%esp) 748 movl %ecx,20(%esp) 749 movl %ecx,24(%esp) 750 movl %ebp,28(%esp) 751 .byte 102,15,58,22,251,3 752 .byte 102,15,58,34,253,3 753 movl 240(%edx),%ecx 754 bswap %ebx 755 pxor %xmm1,%xmm1 756 pxor %xmm0,%xmm0 757 movdqa (%esp),%xmm2 758 .byte 102,15,58,34,203,0 759 leal 3(%ebx),%ebp 760 .byte 102,15,58,34,197,0 761 incl %ebx 762 .byte 102,15,58,34,203,1 763 incl %ebp 764 .byte 102,15,58,34,197,1 765 incl %ebx 766 .byte 102,15,58,34,203,2 767 incl %ebp 768 .byte 102,15,58,34,197,2 769 movdqa %xmm1,48(%esp) 770 .byte 102,15,56,0,202 771 movdqa %xmm0,64(%esp) 772 .byte 102,15,56,0,194 773 pshufd $192,%xmm1,%xmm2 774 pshufd $128,%xmm1,%xmm3 775 cmpl $6,%eax 776 jb .L034ctr32_tail 777 movdqa %xmm7,32(%esp) 778 shrl $1,%ecx 779 movl %edx,%ebp 780 movl %ecx,%ebx 781 subl $6,%eax 782 jmp .L035ctr32_loop6 783 .align 16 784 .L035ctr32_loop6: 785 pshufd $64,%xmm1,%xmm4 786 movdqa 32(%esp),%xmm1 787 pshufd $192,%xmm0,%xmm5 788 por %xmm1,%xmm2 789 pshufd $128,%xmm0,%xmm6 790 por %xmm1,%xmm3 791 pshufd $64,%xmm0,%xmm7 792 por %xmm1,%xmm4 793 por %xmm1,%xmm5 794 por %xmm1,%xmm6 795 por %xmm1,%xmm7 796 movups (%ebp),%xmm0 797 movups 16(%ebp),%xmm1 798 leal 32(%ebp),%edx 799 decl %ecx 800 pxor %xmm0,%xmm2 801 pxor %xmm0,%xmm3 802 .byte 102,15,56,220,209 803 pxor %xmm0,%xmm4 804 .byte 102,15,56,220,217 805 pxor %xmm0,%xmm5 806 .byte 102,15,56,220,225 807 pxor %xmm0,%xmm6 808 .byte 102,15,56,220,233 809 pxor %xmm0,%xmm7 810 .byte 102,15,56,220,241 811 movups (%edx),%xmm0 812 .byte 102,15,56,220,249 813 call .L_aesni_encrypt6_enter 814 movups (%esi),%xmm1 815 movups 16(%esi),%xmm0 816 xorps %xmm1,%xmm2 817 movups 32(%esi),%xmm1 818 xorps %xmm0,%xmm3 819 movups %xmm2,(%edi) 820 movdqa 16(%esp),%xmm0 821 xorps %xmm1,%xmm4 822 movdqa 48(%esp),%xmm1 823 movups %xmm3,16(%edi) 824 movups %xmm4,32(%edi) 825 paddd %xmm0,%xmm1 826 paddd 64(%esp),%xmm0 827 movdqa (%esp),%xmm2 828 movups 48(%esi),%xmm3 829 movups 64(%esi),%xmm4 830 xorps %xmm3,%xmm5 831 movups 80(%esi),%xmm3 832 leal 96(%esi),%esi 833 movdqa %xmm1,48(%esp) 834 .byte 102,15,56,0,202 835 xorps %xmm4,%xmm6 836 movups %xmm5,48(%edi) 837 xorps %xmm3,%xmm7 838 movdqa %xmm0,64(%esp) 839 .byte 102,15,56,0,194 840 movups %xmm6,64(%edi) 841 pshufd $192,%xmm1,%xmm2 842 movups %xmm7,80(%edi) 843 leal 96(%edi),%edi 844 movl %ebx,%ecx 845 pshufd $128,%xmm1,%xmm3 846 subl $6,%eax 847 jnc .L035ctr32_loop6 848 addl $6,%eax 849 jz .L036ctr32_ret 850 movl %ebp,%edx 851 leal 1(,%ecx,2),%ecx 852 movdqa 32(%esp),%xmm7 853 .L034ctr32_tail: 854 por %xmm7,%xmm2 855 cmpl $2,%eax 856 jb .L037ctr32_one 857 pshufd $64,%xmm1,%xmm4 858 por %xmm7,%xmm3 859 je .L038ctr32_two 860 pshufd $192,%xmm0,%xmm5 861 por %xmm7,%xmm4 862 cmpl $4,%eax 863 jb .L039ctr32_three 864 pshufd $128,%xmm0,%xmm6 865 por %xmm7,%xmm5 866 je .L040ctr32_four 867 por %xmm7,%xmm6 868 call _aesni_encrypt6 869 movups (%esi),%xmm1 870 movups 16(%esi),%xmm0 871 xorps %xmm1,%xmm2 872 movups 32(%esi),%xmm1 873 xorps %xmm0,%xmm3 874 movups 48(%esi),%xmm0 875 xorps %xmm1,%xmm4 876 movups 64(%esi),%xmm1 877 xorps %xmm0,%xmm5 878 movups %xmm2,(%edi) 879 xorps %xmm1,%xmm6 880 movups %xmm3,16(%edi) 881 movups %xmm4,32(%edi) 882 movups %xmm5,48(%edi) 883 movups %xmm6,64(%edi) 884 jmp .L036ctr32_ret 885 .align 16 886 .L033ctr32_one_shortcut: 887 movups (%ebx),%xmm2 888 movl 240(%edx),%ecx 889 .L037ctr32_one: 890 movups (%edx),%xmm0 891 movups 16(%edx),%xmm1 892 leal 32(%edx),%edx 893 xorps %xmm0,%xmm2 894 .L041enc1_loop_7: 895 .byte 102,15,56,220,209 896 decl %ecx 897 movups (%edx),%xmm1 898 leal 16(%edx),%edx 899 jnz .L041enc1_loop_7 900 .byte 102,15,56,221,209 901 movups (%esi),%xmm6 902 xorps %xmm2,%xmm6 903 movups %xmm6,(%edi) 904 jmp .L036ctr32_ret 905 .align 16 906 .L038ctr32_two: 907 call _aesni_encrypt3 908 movups (%esi),%xmm5 909 movups 16(%esi),%xmm6 910 xorps %xmm5,%xmm2 911 xorps %xmm6,%xmm3 912 movups %xmm2,(%edi) 913 movups %xmm3,16(%edi) 914 jmp .L036ctr32_ret 915 .align 16 916 .L039ctr32_three: 917 call _aesni_encrypt3 918 movups (%esi),%xmm5 919 movups 16(%esi),%xmm6 920 xorps %xmm5,%xmm2 921 movups 32(%esi),%xmm7 922 xorps %xmm6,%xmm3 923 movups %xmm2,(%edi) 924 xorps %xmm7,%xmm4 925 movups %xmm3,16(%edi) 926 movups %xmm4,32(%edi) 927 jmp .L036ctr32_ret 928 .align 16 929 .L040ctr32_four: 930 call _aesni_encrypt4 931 movups (%esi),%xmm6 932 movups 16(%esi),%xmm7 933 movups 32(%esi),%xmm1 934 xorps %xmm6,%xmm2 935 movups 48(%esi),%xmm0 936 xorps %xmm7,%xmm3 937 movups %xmm2,(%edi) 938 xorps %xmm1,%xmm4 939 movups %xmm3,16(%edi) 940 xorps %xmm0,%xmm5 941 movups %xmm4,32(%edi) 942 movups %xmm5,48(%edi) 943 .L036ctr32_ret: 944 movl 80(%esp),%esp 945 popl %edi 946 popl %esi 947 popl %ebx 948 popl %ebp 949 ret 950 .size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 951 .globl aesni_xts_encrypt 952 .type aesni_xts_encrypt,@function 953 .align 16 954 aesni_xts_encrypt: 955 .L_aesni_xts_encrypt_begin: 956 pushl %ebp 957 pushl %ebx 958 pushl %esi 959 pushl %edi 960 movl 36(%esp),%edx 961 movl 40(%esp),%esi 962 movl 240(%edx),%ecx 963 movups (%esi),%xmm2 964 movups (%edx),%xmm0 965 movups 16(%edx),%xmm1 966 leal 32(%edx),%edx 967 xorps %xmm0,%xmm2 968 .L042enc1_loop_8: 969 .byte 102,15,56,220,209 970 decl %ecx 971 movups (%edx),%xmm1 972 leal 16(%edx),%edx 973 jnz .L042enc1_loop_8 974 .byte 102,15,56,221,209 975 movl 20(%esp),%esi 976 movl 24(%esp),%edi 977 movl 28(%esp),%eax 978 movl 32(%esp),%edx 979 movl %esp,%ebp 980 subl $120,%esp 981 movl 240(%edx),%ecx 982 andl $-16,%esp 983 movl $135,96(%esp) 984 movl $0,100(%esp) 985 movl $1,104(%esp) 986 movl $0,108(%esp) 987 movl %eax,112(%esp) 988 movl %ebp,116(%esp) 989 movdqa %xmm2,%xmm1 990 pxor %xmm0,%xmm0 991 movdqa 96(%esp),%xmm3 992 pcmpgtd %xmm1,%xmm0 993 andl $-16,%eax 994 movl %edx,%ebp 995 movl %ecx,%ebx 996 subl $96,%eax 997 jc .L043xts_enc_short 998 shrl $1,%ecx 999 movl %ecx,%ebx 1000 jmp .L044xts_enc_loop6 1001 .align 16 1002 .L044xts_enc_loop6: 1003 pshufd $19,%xmm0,%xmm2 1004 pxor %xmm0,%xmm0 1005 movdqa %xmm1,(%esp) 1006 paddq %xmm1,%xmm1 1007 pand %xmm3,%xmm2 1008 pcmpgtd %xmm1,%xmm0 1009 pxor %xmm2,%xmm1 1010 pshufd $19,%xmm0,%xmm2 1011 pxor %xmm0,%xmm0 1012 movdqa %xmm1,16(%esp) 1013 paddq %xmm1,%xmm1 1014 pand %xmm3,%xmm2 1015 pcmpgtd %xmm1,%xmm0 1016 pxor %xmm2,%xmm1 1017 pshufd $19,%xmm0,%xmm2 1018 pxor %xmm0,%xmm0 1019 movdqa %xmm1,32(%esp) 1020 paddq %xmm1,%xmm1 1021 pand %xmm3,%xmm2 1022 pcmpgtd %xmm1,%xmm0 1023 pxor %xmm2,%xmm1 1024 pshufd $19,%xmm0,%xmm2 1025 pxor %xmm0,%xmm0 1026 movdqa %xmm1,48(%esp) 1027 paddq %xmm1,%xmm1 1028 pand %xmm3,%xmm2 1029 pcmpgtd %xmm1,%xmm0 1030 pxor %xmm2,%xmm1 1031 pshufd $19,%xmm0,%xmm7 1032 movdqa %xmm1,64(%esp) 1033 paddq %xmm1,%xmm1 1034 movups (%ebp),%xmm0 1035 pand %xmm3,%xmm7 1036 movups (%esi),%xmm2 1037 pxor %xmm1,%xmm7 1038 movdqu 16(%esi),%xmm3 1039 xorps %xmm0,%xmm2 1040 movdqu 32(%esi),%xmm4 1041 pxor %xmm0,%xmm3 1042 movdqu 48(%esi),%xmm5 1043 pxor %xmm0,%xmm4 1044 movdqu 64(%esi),%xmm6 1045 pxor %xmm0,%xmm5 1046 movdqu 80(%esi),%xmm1 1047 pxor %xmm0,%xmm6 1048 leal 96(%esi),%esi 1049 pxor (%esp),%xmm2 1050 movdqa %xmm7,80(%esp) 1051 pxor %xmm1,%xmm7 1052 movups 16(%ebp),%xmm1 1053 leal 32(%ebp),%edx 1054 pxor 16(%esp),%xmm3 1055 .byte 102,15,56,220,209 1056 pxor 32(%esp),%xmm4 1057 .byte 102,15,56,220,217 1058 pxor 48(%esp),%xmm5 1059 decl %ecx 1060 .byte 102,15,56,220,225 1061 pxor 64(%esp),%xmm6 1062 .byte 102,15,56,220,233 1063 pxor %xmm0,%xmm7 1064 .byte 102,15,56,220,241 1065 movups (%edx),%xmm0 1066 .byte 102,15,56,220,249 1067 call .L_aesni_encrypt6_enter 1068 movdqa 80(%esp),%xmm1 1069 pxor %xmm0,%xmm0 1070 xorps (%esp),%xmm2 1071 pcmpgtd %xmm1,%xmm0 1072 xorps 16(%esp),%xmm3 1073 movups %xmm2,(%edi) 1074 xorps 32(%esp),%xmm4 1075 movups %xmm3,16(%edi) 1076 xorps 48(%esp),%xmm5 1077 movups %xmm4,32(%edi) 1078 xorps 64(%esp),%xmm6 1079 movups %xmm5,48(%edi) 1080 xorps %xmm1,%xmm7 1081 movups %xmm6,64(%edi) 1082 pshufd $19,%xmm0,%xmm2 1083 movups %xmm7,80(%edi) 1084 leal 96(%edi),%edi 1085 movdqa 96(%esp),%xmm3 1086 pxor %xmm0,%xmm0 1087 paddq %xmm1,%xmm1 1088 pand %xmm3,%xmm2 1089 pcmpgtd %xmm1,%xmm0 1090 movl %ebx,%ecx 1091 pxor %xmm2,%xmm1 1092 subl $96,%eax 1093 jnc .L044xts_enc_loop6 1094 leal 1(,%ecx,2),%ecx 1095 movl %ebp,%edx 1096 movl %ecx,%ebx 1097 .L043xts_enc_short: 1098 addl $96,%eax 1099 jz .L045xts_enc_done6x 1100 movdqa %xmm1,%xmm5 1101 cmpl $32,%eax 1102 jb .L046xts_enc_one 1103 pshufd $19,%xmm0,%xmm2 1104 pxor %xmm0,%xmm0 1105 paddq %xmm1,%xmm1 1106 pand %xmm3,%xmm2 1107 pcmpgtd %xmm1,%xmm0 1108 pxor %xmm2,%xmm1 1109 je .L047xts_enc_two 1110 pshufd $19,%xmm0,%xmm2 1111 pxor %xmm0,%xmm0 1112 movdqa %xmm1,%xmm6 1113 paddq %xmm1,%xmm1 1114 pand %xmm3,%xmm2 1115 pcmpgtd %xmm1,%xmm0 1116 pxor %xmm2,%xmm1 1117 cmpl $64,%eax 1118 jb .L048xts_enc_three 1119 pshufd $19,%xmm0,%xmm2 1120 pxor %xmm0,%xmm0 1121 movdqa %xmm1,%xmm7 1122 paddq %xmm1,%xmm1 1123 pand %xmm3,%xmm2 1124 pcmpgtd %xmm1,%xmm0 1125 pxor %xmm2,%xmm1 1126 movdqa %xmm5,(%esp) 1127 movdqa %xmm6,16(%esp) 1128 je .L049xts_enc_four 1129 movdqa %xmm7,32(%esp) 1130 pshufd $19,%xmm0,%xmm7 1131 movdqa %xmm1,48(%esp) 1132 paddq %xmm1,%xmm1 1133 pand %xmm3,%xmm7 1134 pxor %xmm1,%xmm7 1135 movdqu (%esi),%xmm2 1136 movdqu 16(%esi),%xmm3 1137 movdqu 32(%esi),%xmm4 1138 pxor (%esp),%xmm2 1139 movdqu 48(%esi),%xmm5 1140 pxor 16(%esp),%xmm3 1141 movdqu 64(%esi),%xmm6 1142 pxor 32(%esp),%xmm4 1143 leal 80(%esi),%esi 1144 pxor 48(%esp),%xmm5 1145 movdqa %xmm7,64(%esp) 1146 pxor %xmm7,%xmm6 1147 call _aesni_encrypt6 1148 movaps 64(%esp),%xmm1 1149 xorps (%esp),%xmm2 1150 xorps 16(%esp),%xmm3 1151 xorps 32(%esp),%xmm4 1152 movups %xmm2,(%edi) 1153 xorps 48(%esp),%xmm5 1154 movups %xmm3,16(%edi) 1155 xorps %xmm1,%xmm6 1156 movups %xmm4,32(%edi) 1157 movups %xmm5,48(%edi) 1158 movups %xmm6,64(%edi) 1159 leal 80(%edi),%edi 1160 jmp .L050xts_enc_done 1161 .align 16 1162 .L046xts_enc_one: 1163 movups (%esi),%xmm2 1164 leal 16(%esi),%esi 1165 xorps %xmm5,%xmm2 1166 movups (%edx),%xmm0 1167 movups 16(%edx),%xmm1 1168 leal 32(%edx),%edx 1169 xorps %xmm0,%xmm2 1170 .L051enc1_loop_9: 1171 .byte 102,15,56,220,209 1172 decl %ecx 1173 movups (%edx),%xmm1 1174 leal 16(%edx),%edx 1175 jnz .L051enc1_loop_9 1176 .byte 102,15,56,221,209 1177 xorps %xmm5,%xmm2 1178 movups %xmm2,(%edi) 1179 leal 16(%edi),%edi 1180 movdqa %xmm5,%xmm1 1181 jmp .L050xts_enc_done 1182 .align 16 1183 .L047xts_enc_two: 1184 movaps %xmm1,%xmm6 1185 movups (%esi),%xmm2 1186 movups 16(%esi),%xmm3 1187 leal 32(%esi),%esi 1188 xorps %xmm5,%xmm2 1189 xorps %xmm6,%xmm3 1190 xorps %xmm4,%xmm4 1191 call _aesni_encrypt3 1192 xorps %xmm5,%xmm2 1193 xorps %xmm6,%xmm3 1194 movups %xmm2,(%edi) 1195 movups %xmm3,16(%edi) 1196 leal 32(%edi),%edi 1197 movdqa %xmm6,%xmm1 1198 jmp .L050xts_enc_done 1199 .align 16 1200 .L048xts_enc_three: 1201 movaps %xmm1,%xmm7 1202 movups (%esi),%xmm2 1203 movups 16(%esi),%xmm3 1204 movups 32(%esi),%xmm4 1205 leal 48(%esi),%esi 1206 xorps %xmm5,%xmm2 1207 xorps %xmm6,%xmm3 1208 xorps %xmm7,%xmm4 1209 call _aesni_encrypt3 1210 xorps %xmm5,%xmm2 1211 xorps %xmm6,%xmm3 1212 xorps %xmm7,%xmm4 1213 movups %xmm2,(%edi) 1214 movups %xmm3,16(%edi) 1215 movups %xmm4,32(%edi) 1216 leal 48(%edi),%edi 1217 movdqa %xmm7,%xmm1 1218 jmp .L050xts_enc_done 1219 .align 16 1220 .L049xts_enc_four: 1221 movaps %xmm1,%xmm6 1222 movups (%esi),%xmm2 1223 movups 16(%esi),%xmm3 1224 movups 32(%esi),%xmm4 1225 xorps (%esp),%xmm2 1226 movups 48(%esi),%xmm5 1227 leal 64(%esi),%esi 1228 xorps 16(%esp),%xmm3 1229 xorps %xmm7,%xmm4 1230 xorps %xmm6,%xmm5 1231 call _aesni_encrypt4 1232 xorps (%esp),%xmm2 1233 xorps 16(%esp),%xmm3 1234 xorps %xmm7,%xmm4 1235 movups %xmm2,(%edi) 1236 xorps %xmm6,%xmm5 1237 movups %xmm3,16(%edi) 1238 movups %xmm4,32(%edi) 1239 movups %xmm5,48(%edi) 1240 leal 64(%edi),%edi 1241 movdqa %xmm6,%xmm1 1242 jmp .L050xts_enc_done 1243 .align 16 1244 .L045xts_enc_done6x: 1245 movl 112(%esp),%eax 1246 andl $15,%eax 1247 jz .L052xts_enc_ret 1248 movdqa %xmm1,%xmm5 1249 movl %eax,112(%esp) 1250 jmp .L053xts_enc_steal 1251 .align 16 1252 .L050xts_enc_done: 1253 movl 112(%esp),%eax 1254 pxor %xmm0,%xmm0 1255 andl $15,%eax 1256 jz .L052xts_enc_ret 1257 pcmpgtd %xmm1,%xmm0 1258 movl %eax,112(%esp) 1259 pshufd $19,%xmm0,%xmm5 1260 paddq %xmm1,%xmm1 1261 pand 96(%esp),%xmm5 1262 pxor %xmm1,%xmm5 1263 .L053xts_enc_steal: 1264 movzbl (%esi),%ecx 1265 movzbl -16(%edi),%edx 1266 leal 1(%esi),%esi 1267 movb %cl,-16(%edi) 1268 movb %dl,(%edi) 1269 leal 1(%edi),%edi 1270 subl $1,%eax 1271 jnz .L053xts_enc_steal 1272 subl 112(%esp),%edi 1273 movl %ebp,%edx 1274 movl %ebx,%ecx 1275 movups -16(%edi),%xmm2 1276 xorps %xmm5,%xmm2 1277 movups (%edx),%xmm0 1278 movups 16(%edx),%xmm1 1279 leal 32(%edx),%edx 1280 xorps %xmm0,%xmm2 1281 .L054enc1_loop_10: 1282 .byte 102,15,56,220,209 1283 decl %ecx 1284 movups (%edx),%xmm1 1285 leal 16(%edx),%edx 1286 jnz .L054enc1_loop_10 1287 .byte 102,15,56,221,209 1288 xorps %xmm5,%xmm2 1289 movups %xmm2,-16(%edi) 1290 .L052xts_enc_ret: 1291 movl 116(%esp),%esp 1292 popl %edi 1293 popl %esi 1294 popl %ebx 1295 popl %ebp 1296 ret 1297 .size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 1298 .globl aesni_xts_decrypt 1299 .type aesni_xts_decrypt,@function 1300 .align 16 1301 aesni_xts_decrypt: 1302 .L_aesni_xts_decrypt_begin: 1303 pushl %ebp 1304 pushl %ebx 1305 pushl %esi 1306 pushl %edi 1307 movl 36(%esp),%edx 1308 movl 40(%esp),%esi 1309 movl 240(%edx),%ecx 1310 movups (%esi),%xmm2 1311 movups (%edx),%xmm0 1312 movups 16(%edx),%xmm1 1313 leal 32(%edx),%edx 1314 xorps %xmm0,%xmm2 1315 .L055enc1_loop_11: 1316 .byte 102,15,56,220,209 1317 decl %ecx 1318 movups (%edx),%xmm1 1319 leal 16(%edx),%edx 1320 jnz .L055enc1_loop_11 1321 .byte 102,15,56,221,209 1322 movl 20(%esp),%esi 1323 movl 24(%esp),%edi 1324 movl 28(%esp),%eax 1325 movl 32(%esp),%edx 1326 movl %esp,%ebp 1327 subl $120,%esp 1328 andl $-16,%esp 1329 xorl %ebx,%ebx 1330 testl $15,%eax 1331 setnz %bl 1332 shll $4,%ebx 1333 subl %ebx,%eax 1334 movl $135,96(%esp) 1335 movl $0,100(%esp) 1336 movl $1,104(%esp) 1337 movl $0,108(%esp) 1338 movl %eax,112(%esp) 1339 movl %ebp,116(%esp) 1340 movl 240(%edx),%ecx 1341 movl %edx,%ebp 1342 movl %ecx,%ebx 1343 movdqa %xmm2,%xmm1 1344 pxor %xmm0,%xmm0 1345 movdqa 96(%esp),%xmm3 1346 pcmpgtd %xmm1,%xmm0 1347 andl $-16,%eax 1348 subl $96,%eax 1349 jc .L056xts_dec_short 1350 shrl $1,%ecx 1351 movl %ecx,%ebx 1352 jmp .L057xts_dec_loop6 1353 .align 16 1354 .L057xts_dec_loop6: 1355 pshufd $19,%xmm0,%xmm2 1356 pxor %xmm0,%xmm0 1357 movdqa %xmm1,(%esp) 1358 paddq %xmm1,%xmm1 1359 pand %xmm3,%xmm2 1360 pcmpgtd %xmm1,%xmm0 1361 pxor %xmm2,%xmm1 1362 pshufd $19,%xmm0,%xmm2 1363 pxor %xmm0,%xmm0 1364 movdqa %xmm1,16(%esp) 1365 paddq %xmm1,%xmm1 1366 pand %xmm3,%xmm2 1367 pcmpgtd %xmm1,%xmm0 1368 pxor %xmm2,%xmm1 1369 pshufd $19,%xmm0,%xmm2 1370 pxor %xmm0,%xmm0 1371 movdqa %xmm1,32(%esp) 1372 paddq %xmm1,%xmm1 1373 pand %xmm3,%xmm2 1374 pcmpgtd %xmm1,%xmm0 1375 pxor %xmm2,%xmm1 1376 pshufd $19,%xmm0,%xmm2 1377 pxor %xmm0,%xmm0 1378 movdqa %xmm1,48(%esp) 1379 paddq %xmm1,%xmm1 1380 pand %xmm3,%xmm2 1381 pcmpgtd %xmm1,%xmm0 1382 pxor %xmm2,%xmm1 1383 pshufd $19,%xmm0,%xmm7 1384 movdqa %xmm1,64(%esp) 1385 paddq %xmm1,%xmm1 1386 movups (%ebp),%xmm0 1387 pand %xmm3,%xmm7 1388 movups (%esi),%xmm2 1389 pxor %xmm1,%xmm7 1390 movdqu 16(%esi),%xmm3 1391 xorps %xmm0,%xmm2 1392 movdqu 32(%esi),%xmm4 1393 pxor %xmm0,%xmm3 1394 movdqu 48(%esi),%xmm5 1395 pxor %xmm0,%xmm4 1396 movdqu 64(%esi),%xmm6 1397 pxor %xmm0,%xmm5 1398 movdqu 80(%esi),%xmm1 1399 pxor %xmm0,%xmm6 1400 leal 96(%esi),%esi 1401 pxor (%esp),%xmm2 1402 movdqa %xmm7,80(%esp) 1403 pxor %xmm1,%xmm7 1404 movups 16(%ebp),%xmm1 1405 leal 32(%ebp),%edx 1406 pxor 16(%esp),%xmm3 1407 .byte 102,15,56,222,209 1408 pxor 32(%esp),%xmm4 1409 .byte 102,15,56,222,217 1410 pxor 48(%esp),%xmm5 1411 decl %ecx 1412 .byte 102,15,56,222,225 1413 pxor 64(%esp),%xmm6 1414 .byte 102,15,56,222,233 1415 pxor %xmm0,%xmm7 1416 .byte 102,15,56,222,241 1417 movups (%edx),%xmm0 1418 .byte 102,15,56,222,249 1419 call .L_aesni_decrypt6_enter 1420 movdqa 80(%esp),%xmm1 1421 pxor %xmm0,%xmm0 1422 xorps (%esp),%xmm2 1423 pcmpgtd %xmm1,%xmm0 1424 xorps 16(%esp),%xmm3 1425 movups %xmm2,(%edi) 1426 xorps 32(%esp),%xmm4 1427 movups %xmm3,16(%edi) 1428 xorps 48(%esp),%xmm5 1429 movups %xmm4,32(%edi) 1430 xorps 64(%esp),%xmm6 1431 movups %xmm5,48(%edi) 1432 xorps %xmm1,%xmm7 1433 movups %xmm6,64(%edi) 1434 pshufd $19,%xmm0,%xmm2 1435 movups %xmm7,80(%edi) 1436 leal 96(%edi),%edi 1437 movdqa 96(%esp),%xmm3 1438 pxor %xmm0,%xmm0 1439 paddq %xmm1,%xmm1 1440 pand %xmm3,%xmm2 1441 pcmpgtd %xmm1,%xmm0 1442 movl %ebx,%ecx 1443 pxor %xmm2,%xmm1 1444 subl $96,%eax 1445 jnc .L057xts_dec_loop6 1446 leal 1(,%ecx,2),%ecx 1447 movl %ebp,%edx 1448 movl %ecx,%ebx 1449 .L056xts_dec_short: 1450 addl $96,%eax 1451 jz .L058xts_dec_done6x 1452 movdqa %xmm1,%xmm5 1453 cmpl $32,%eax 1454 jb .L059xts_dec_one 1455 pshufd $19,%xmm0,%xmm2 1456 pxor %xmm0,%xmm0 1457 paddq %xmm1,%xmm1 1458 pand %xmm3,%xmm2 1459 pcmpgtd %xmm1,%xmm0 1460 pxor %xmm2,%xmm1 1461 je .L060xts_dec_two 1462 pshufd $19,%xmm0,%xmm2 1463 pxor %xmm0,%xmm0 1464 movdqa %xmm1,%xmm6 1465 paddq %xmm1,%xmm1 1466 pand %xmm3,%xmm2 1467 pcmpgtd %xmm1,%xmm0 1468 pxor %xmm2,%xmm1 1469 cmpl $64,%eax 1470 jb .L061xts_dec_three 1471 pshufd $19,%xmm0,%xmm2 1472 pxor %xmm0,%xmm0 1473 movdqa %xmm1,%xmm7 1474 paddq %xmm1,%xmm1 1475 pand %xmm3,%xmm2 1476 pcmpgtd %xmm1,%xmm0 1477 pxor %xmm2,%xmm1 1478 movdqa %xmm5,(%esp) 1479 movdqa %xmm6,16(%esp) 1480 je .L062xts_dec_four 1481 movdqa %xmm7,32(%esp) 1482 pshufd $19,%xmm0,%xmm7 1483 movdqa %xmm1,48(%esp) 1484 paddq %xmm1,%xmm1 1485 pand %xmm3,%xmm7 1486 pxor %xmm1,%xmm7 1487 movdqu (%esi),%xmm2 1488 movdqu 16(%esi),%xmm3 1489 movdqu 32(%esi),%xmm4 1490 pxor (%esp),%xmm2 1491 movdqu 48(%esi),%xmm5 1492 pxor 16(%esp),%xmm3 1493 movdqu 64(%esi),%xmm6 1494 pxor 32(%esp),%xmm4 1495 leal 80(%esi),%esi 1496 pxor 48(%esp),%xmm5 1497 movdqa %xmm7,64(%esp) 1498 pxor %xmm7,%xmm6 1499 call _aesni_decrypt6 1500 movaps 64(%esp),%xmm1 1501 xorps (%esp),%xmm2 1502 xorps 16(%esp),%xmm3 1503 xorps 32(%esp),%xmm4 1504 movups %xmm2,(%edi) 1505 xorps 48(%esp),%xmm5 1506 movups %xmm3,16(%edi) 1507 xorps %xmm1,%xmm6 1508 movups %xmm4,32(%edi) 1509 movups %xmm5,48(%edi) 1510 movups %xmm6,64(%edi) 1511 leal 80(%edi),%edi 1512 jmp .L063xts_dec_done 1513 .align 16 1514 .L059xts_dec_one: 1515 movups (%esi),%xmm2 1516 leal 16(%esi),%esi 1517 xorps %xmm5,%xmm2 1518 movups (%edx),%xmm0 1519 movups 16(%edx),%xmm1 1520 leal 32(%edx),%edx 1521 xorps %xmm0,%xmm2 1522 .L064dec1_loop_12: 1523 .byte 102,15,56,222,209 1524 decl %ecx 1525 movups (%edx),%xmm1 1526 leal 16(%edx),%edx 1527 jnz .L064dec1_loop_12 1528 .byte 102,15,56,223,209 1529 xorps %xmm5,%xmm2 1530 movups %xmm2,(%edi) 1531 leal 16(%edi),%edi 1532 movdqa %xmm5,%xmm1 1533 jmp .L063xts_dec_done 1534 .align 16 1535 .L060xts_dec_two: 1536 movaps %xmm1,%xmm6 1537 movups (%esi),%xmm2 1538 movups 16(%esi),%xmm3 1539 leal 32(%esi),%esi 1540 xorps %xmm5,%xmm2 1541 xorps %xmm6,%xmm3 1542 call _aesni_decrypt3 1543 xorps %xmm5,%xmm2 1544 xorps %xmm6,%xmm3 1545 movups %xmm2,(%edi) 1546 movups %xmm3,16(%edi) 1547 leal 32(%edi),%edi 1548 movdqa %xmm6,%xmm1 1549 jmp .L063xts_dec_done 1550 .align 16 1551 .L061xts_dec_three: 1552 movaps %xmm1,%xmm7 1553 movups (%esi),%xmm2 1554 movups 16(%esi),%xmm3 1555 movups 32(%esi),%xmm4 1556 leal 48(%esi),%esi 1557 xorps %xmm5,%xmm2 1558 xorps %xmm6,%xmm3 1559 xorps %xmm7,%xmm4 1560 call _aesni_decrypt3 1561 xorps %xmm5,%xmm2 1562 xorps %xmm6,%xmm3 1563 xorps %xmm7,%xmm4 1564 movups %xmm2,(%edi) 1565 movups %xmm3,16(%edi) 1566 movups %xmm4,32(%edi) 1567 leal 48(%edi),%edi 1568 movdqa %xmm7,%xmm1 1569 jmp .L063xts_dec_done 1570 .align 16 1571 .L062xts_dec_four: 1572 movaps %xmm1,%xmm6 1573 movups (%esi),%xmm2 1574 movups 16(%esi),%xmm3 1575 movups 32(%esi),%xmm4 1576 xorps (%esp),%xmm2 1577 movups 48(%esi),%xmm5 1578 leal 64(%esi),%esi 1579 xorps 16(%esp),%xmm3 1580 xorps %xmm7,%xmm4 1581 xorps %xmm6,%xmm5 1582 call _aesni_decrypt4 1583 xorps (%esp),%xmm2 1584 xorps 16(%esp),%xmm3 1585 xorps %xmm7,%xmm4 1586 movups %xmm2,(%edi) 1587 xorps %xmm6,%xmm5 1588 movups %xmm3,16(%edi) 1589 movups %xmm4,32(%edi) 1590 movups %xmm5,48(%edi) 1591 leal 64(%edi),%edi 1592 movdqa %xmm6,%xmm1 1593 jmp .L063xts_dec_done 1594 .align 16 1595 .L058xts_dec_done6x: 1596 movl 112(%esp),%eax 1597 andl $15,%eax 1598 jz .L065xts_dec_ret 1599 movl %eax,112(%esp) 1600 jmp .L066xts_dec_only_one_more 1601 .align 16 1602 .L063xts_dec_done: 1603 movl 112(%esp),%eax 1604 pxor %xmm0,%xmm0 1605 andl $15,%eax 1606 jz .L065xts_dec_ret 1607 pcmpgtd %xmm1,%xmm0 1608 movl %eax,112(%esp) 1609 pshufd $19,%xmm0,%xmm2 1610 pxor %xmm0,%xmm0 1611 movdqa 96(%esp),%xmm3 1612 paddq %xmm1,%xmm1 1613 pand %xmm3,%xmm2 1614 pcmpgtd %xmm1,%xmm0 1615 pxor %xmm2,%xmm1 1616 .L066xts_dec_only_one_more: 1617 pshufd $19,%xmm0,%xmm5 1618 movdqa %xmm1,%xmm6 1619 paddq %xmm1,%xmm1 1620 pand %xmm3,%xmm5 1621 pxor %xmm1,%xmm5 1622 movl %ebp,%edx 1623 movl %ebx,%ecx 1624 movups (%esi),%xmm2 1625 xorps %xmm5,%xmm2 1626 movups (%edx),%xmm0 1627 movups 16(%edx),%xmm1 1628 leal 32(%edx),%edx 1629 xorps %xmm0,%xmm2 1630 .L067dec1_loop_13: 1631 .byte 102,15,56,222,209 1632 decl %ecx 1633 movups (%edx),%xmm1 1634 leal 16(%edx),%edx 1635 jnz .L067dec1_loop_13 1636 .byte 102,15,56,223,209 1637 xorps %xmm5,%xmm2 1638 movups %xmm2,(%edi) 1639 .L068xts_dec_steal: 1640 movzbl 16(%esi),%ecx 1641 movzbl (%edi),%edx 1642 leal 1(%esi),%esi 1643 movb %cl,(%edi) 1644 movb %dl,16(%edi) 1645 leal 1(%edi),%edi 1646 subl $1,%eax 1647 jnz .L068xts_dec_steal 1648 subl 112(%esp),%edi 1649 movl %ebp,%edx 1650 movl %ebx,%ecx 1651 movups (%edi),%xmm2 1652 xorps %xmm6,%xmm2 1653 movups (%edx),%xmm0 1654 movups 16(%edx),%xmm1 1655 leal 32(%edx),%edx 1656 xorps %xmm0,%xmm2 1657 .L069dec1_loop_14: 1658 .byte 102,15,56,222,209 1659 decl %ecx 1660 movups (%edx),%xmm1 1661 leal 16(%edx),%edx 1662 jnz .L069dec1_loop_14 1663 .byte 102,15,56,223,209 1664 xorps %xmm6,%xmm2 1665 movups %xmm2,(%edi) 1666 .L065xts_dec_ret: 1667 movl 116(%esp),%esp 1668 popl %edi 1669 popl %esi 1670 popl %ebx 1671 popl %ebp 1672 ret 1673 .size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 1674 .globl aesni_cbc_encrypt 1675 .type aesni_cbc_encrypt,@function 1676 .align 16 1677 aesni_cbc_encrypt: 1678 .L_aesni_cbc_encrypt_begin: 1679 pushl %ebp 1680 pushl %ebx 1681 pushl %esi 1682 pushl %edi 1683 movl 20(%esp),%esi 1684 movl %esp,%ebx 1685 movl 24(%esp),%edi 1686 subl $24,%ebx 1687 movl 28(%esp),%eax 1688 andl $-16,%ebx 1689 movl 32(%esp),%edx 1690 movl 36(%esp),%ebp 1691 testl %eax,%eax 1692 jz .L070cbc_abort 1693 cmpl $0,40(%esp) 1694 xchgl %esp,%ebx 1695 movups (%ebp),%xmm7 1696 movl 240(%edx),%ecx 1697 movl %edx,%ebp 1698 movl %ebx,16(%esp) 1699 movl %ecx,%ebx 1700 je .L071cbc_decrypt 1701 movaps %xmm7,%xmm2 1702 cmpl $16,%eax 1703 jb .L072cbc_enc_tail 1704 subl $16,%eax 1705 jmp .L073cbc_enc_loop 1706 .align 16 1707 .L073cbc_enc_loop: 1708 movups (%esi),%xmm7 1709 leal 16(%esi),%esi 1710 movups (%edx),%xmm0 1711 movups 16(%edx),%xmm1 1712 xorps %xmm0,%xmm7 1713 leal 32(%edx),%edx 1714 xorps %xmm7,%xmm2 1715 .L074enc1_loop_15: 1716 .byte 102,15,56,220,209 1717 decl %ecx 1718 movups (%edx),%xmm1 1719 leal 16(%edx),%edx 1720 jnz .L074enc1_loop_15 1721 .byte 102,15,56,221,209 1722 movl %ebx,%ecx 1723 movl %ebp,%edx 1724 movups %xmm2,(%edi) 1725 leal 16(%edi),%edi 1726 subl $16,%eax 1727 jnc .L073cbc_enc_loop 1728 addl $16,%eax 1729 jnz .L072cbc_enc_tail 1730 movaps %xmm2,%xmm7 1731 jmp .L075cbc_ret 1732 .L072cbc_enc_tail: 1733 movl %eax,%ecx 1734 .long 2767451785 1735 movl $16,%ecx 1736 subl %eax,%ecx 1737 xorl %eax,%eax 1738 .long 2868115081 1739 leal -16(%edi),%edi 1740 movl %ebx,%ecx 1741 movl %edi,%esi 1742 movl %ebp,%edx 1743 jmp .L073cbc_enc_loop 1744 .align 16 1745 .L071cbc_decrypt: 1746 cmpl $80,%eax 1747 jbe .L076cbc_dec_tail 1748 movaps %xmm7,(%esp) 1749 subl $80,%eax 1750 jmp .L077cbc_dec_loop6_enter 1751 .align 16 1752 .L078cbc_dec_loop6: 1753 movaps %xmm0,(%esp) 1754 movups %xmm7,(%edi) 1755 leal 16(%edi),%edi 1756 .L077cbc_dec_loop6_enter: 1757 movdqu (%esi),%xmm2 1758 movdqu 16(%esi),%xmm3 1759 movdqu 32(%esi),%xmm4 1760 movdqu 48(%esi),%xmm5 1761 movdqu 64(%esi),%xmm6 1762 movdqu 80(%esi),%xmm7 1763 call _aesni_decrypt6 1764 movups (%esi),%xmm1 1765 movups 16(%esi),%xmm0 1766 xorps (%esp),%xmm2 1767 xorps %xmm1,%xmm3 1768 movups 32(%esi),%xmm1 1769 xorps %xmm0,%xmm4 1770 movups 48(%esi),%xmm0 1771 xorps %xmm1,%xmm5 1772 movups 64(%esi),%xmm1 1773 xorps %xmm0,%xmm6 1774 movups 80(%esi),%xmm0 1775 xorps %xmm1,%xmm7 1776 movups %xmm2,(%edi) 1777 movups %xmm3,16(%edi) 1778 leal 96(%esi),%esi 1779 movups %xmm4,32(%edi) 1780 movl %ebx,%ecx 1781 movups %xmm5,48(%edi) 1782 movl %ebp,%edx 1783 movups %xmm6,64(%edi) 1784 leal 80(%edi),%edi 1785 subl $96,%eax 1786 ja .L078cbc_dec_loop6 1787 movaps %xmm7,%xmm2 1788 movaps %xmm0,%xmm7 1789 addl $80,%eax 1790 jle .L079cbc_dec_tail_collected 1791 movups %xmm2,(%edi) 1792 leal 16(%edi),%edi 1793 .L076cbc_dec_tail: 1794 movups (%esi),%xmm2 1795 movaps %xmm2,%xmm6 1796 cmpl $16,%eax 1797 jbe .L080cbc_dec_one 1798 movups 16(%esi),%xmm3 1799 movaps %xmm3,%xmm5 1800 cmpl $32,%eax 1801 jbe .L081cbc_dec_two 1802 movups 32(%esi),%xmm4 1803 cmpl $48,%eax 1804 jbe .L082cbc_dec_three 1805 movups 48(%esi),%xmm5 1806 cmpl $64,%eax 1807 jbe .L083cbc_dec_four 1808 movups 64(%esi),%xmm6 1809 movaps %xmm7,(%esp) 1810 movups (%esi),%xmm2 1811 xorps %xmm7,%xmm7 1812 call _aesni_decrypt6 1813 movups (%esi),%xmm1 1814 movups 16(%esi),%xmm0 1815 xorps (%esp),%xmm2 1816 xorps %xmm1,%xmm3 1817 movups 32(%esi),%xmm1 1818 xorps %xmm0,%xmm4 1819 movups 48(%esi),%xmm0 1820 xorps %xmm1,%xmm5 1821 movups 64(%esi),%xmm7 1822 xorps %xmm0,%xmm6 1823 movups %xmm2,(%edi) 1824 movups %xmm3,16(%edi) 1825 movups %xmm4,32(%edi) 1826 movups %xmm5,48(%edi) 1827 leal 64(%edi),%edi 1828 movaps %xmm6,%xmm2 1829 subl $80,%eax 1830 jmp .L079cbc_dec_tail_collected 1831 .align 16 1832 .L080cbc_dec_one: 1833 movups (%edx),%xmm0 1834 movups 16(%edx),%xmm1 1835 leal 32(%edx),%edx 1836 xorps %xmm0,%xmm2 1837 .L084dec1_loop_16: 1838 .byte 102,15,56,222,209 1839 decl %ecx 1840 movups (%edx),%xmm1 1841 leal 16(%edx),%edx 1842 jnz .L084dec1_loop_16 1843 .byte 102,15,56,223,209 1844 xorps %xmm7,%xmm2 1845 movaps %xmm6,%xmm7 1846 subl $16,%eax 1847 jmp .L079cbc_dec_tail_collected 1848 .align 16 1849 .L081cbc_dec_two: 1850 xorps %xmm4,%xmm4 1851 call _aesni_decrypt3 1852 xorps %xmm7,%xmm2 1853 xorps %xmm6,%xmm3 1854 movups %xmm2,(%edi) 1855 movaps %xmm3,%xmm2 1856 leal 16(%edi),%edi 1857 movaps %xmm5,%xmm7 1858 subl $32,%eax 1859 jmp .L079cbc_dec_tail_collected 1860 .align 16 1861 .L082cbc_dec_three: 1862 call _aesni_decrypt3 1863 xorps %xmm7,%xmm2 1864 xorps %xmm6,%xmm3 1865 xorps %xmm5,%xmm4 1866 movups %xmm2,(%edi) 1867 movaps %xmm4,%xmm2 1868 movups %xmm3,16(%edi) 1869 leal 32(%edi),%edi 1870 movups 32(%esi),%xmm7 1871 subl $48,%eax 1872 jmp .L079cbc_dec_tail_collected 1873 .align 16 1874 .L083cbc_dec_four: 1875 call _aesni_decrypt4 1876 movups 16(%esi),%xmm1 1877 movups 32(%esi),%xmm0 1878 xorps %xmm7,%xmm2 1879 movups 48(%esi),%xmm7 1880 xorps %xmm6,%xmm3 1881 movups %xmm2,(%edi) 1882 xorps %xmm1,%xmm4 1883 movups %xmm3,16(%edi) 1884 xorps %xmm0,%xmm5 1885 movups %xmm4,32(%edi) 1886 leal 48(%edi),%edi 1887 movaps %xmm5,%xmm2 1888 subl $64,%eax 1889 .L079cbc_dec_tail_collected: 1890 andl $15,%eax 1891 jnz .L085cbc_dec_tail_partial 1892 movups %xmm2,(%edi) 1893 jmp .L075cbc_ret 1894 .align 16 1895 .L085cbc_dec_tail_partial: 1896 movaps %xmm2,(%esp) 1897 movl $16,%ecx 1898 movl %esp,%esi 1899 subl %eax,%ecx 1900 .long 2767451785 1901 .L075cbc_ret: 1902 movl 16(%esp),%esp 1903 movl 36(%esp),%ebp 1904 movups %xmm7,(%ebp) 1905 .L070cbc_abort: 1906 popl %edi 1907 popl %esi 1908 popl %ebx 1909 popl %ebp 1910 ret 1911 .size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 1912 .type _aesni_set_encrypt_key,@function 1913 .align 16 1914 _aesni_set_encrypt_key: 1915 testl %eax,%eax 1916 jz .L086bad_pointer 1917 testl %edx,%edx 1918 jz .L086bad_pointer 1919 movups (%eax),%xmm0 1920 xorps %xmm4,%xmm4 1921 leal 16(%edx),%edx 1922 cmpl $256,%ecx 1923 je .L08714rounds 1924 cmpl $192,%ecx 1925 je .L08812rounds 1926 cmpl $128,%ecx 1927 jne .L089bad_keybits 1928 .align 16 1929 .L09010rounds: 1930 movl $9,%ecx 1931 movups %xmm0,-16(%edx) 1932 .byte 102,15,58,223,200,1 1933 call .L091key_128_cold 1934 .byte 102,15,58,223,200,2 1935 call .L092key_128 1936 .byte 102,15,58,223,200,4 1937 call .L092key_128 1938 .byte 102,15,58,223,200,8 1939 call .L092key_128 1940 .byte 102,15,58,223,200,16 1941 call .L092key_128 1942 .byte 102,15,58,223,200,32 1943 call .L092key_128 1944 .byte 102,15,58,223,200,64 1945 call .L092key_128 1946 .byte 102,15,58,223,200,128 1947 call .L092key_128 1948 .byte 102,15,58,223,200,27 1949 call .L092key_128 1950 .byte 102,15,58,223,200,54 1951 call .L092key_128 1952 movups %xmm0,(%edx) 1953 movl %ecx,80(%edx) 1954 xorl %eax,%eax 1955 ret 1956 .align 16 1957 .L092key_128: 1958 movups %xmm0,(%edx) 1959 leal 16(%edx),%edx 1960 .L091key_128_cold: 1961 shufps $16,%xmm0,%xmm4 1962 xorps %xmm4,%xmm0 1963 shufps $140,%xmm0,%xmm4 1964 xorps %xmm4,%xmm0 1965 shufps $255,%xmm1,%xmm1 1966 xorps %xmm1,%xmm0 1967 ret 1968 .align 16 1969 .L08812rounds: 1970 movq 16(%eax),%xmm2 1971 movl $11,%ecx 1972 movups %xmm0,-16(%edx) 1973 .byte 102,15,58,223,202,1 1974 call .L093key_192a_cold 1975 .byte 102,15,58,223,202,2 1976 call .L094key_192b 1977 .byte 102,15,58,223,202,4 1978 call .L095key_192a 1979 .byte 102,15,58,223,202,8 1980 call .L094key_192b 1981 .byte 102,15,58,223,202,16 1982 call .L095key_192a 1983 .byte 102,15,58,223,202,32 1984 call .L094key_192b 1985 .byte 102,15,58,223,202,64 1986 call .L095key_192a 1987 .byte 102,15,58,223,202,128 1988 call .L094key_192b 1989 movups %xmm0,(%edx) 1990 movl %ecx,48(%edx) 1991 xorl %eax,%eax 1992 ret 1993 .align 16 1994 .L095key_192a: 1995 movups %xmm0,(%edx) 1996 leal 16(%edx),%edx 1997 .align 16 1998 .L093key_192a_cold: 1999 movaps %xmm2,%xmm5 2000 .L096key_192b_warm: 2001 shufps $16,%xmm0,%xmm4 2002 movdqa %xmm2,%xmm3 2003 xorps %xmm4,%xmm0 2004 shufps $140,%xmm0,%xmm4 2005 pslldq $4,%xmm3 2006 xorps %xmm4,%xmm0 2007 pshufd $85,%xmm1,%xmm1 2008 pxor %xmm3,%xmm2 2009 pxor %xmm1,%xmm0 2010 pshufd $255,%xmm0,%xmm3 2011 pxor %xmm3,%xmm2 2012 ret 2013 .align 16 2014 .L094key_192b: 2015 movaps %xmm0,%xmm3 2016 shufps $68,%xmm0,%xmm5 2017 movups %xmm5,(%edx) 2018 shufps $78,%xmm2,%xmm3 2019 movups %xmm3,16(%edx) 2020 leal 32(%edx),%edx 2021 jmp .L096key_192b_warm 2022 .align 16 2023 .L08714rounds: 2024 movups 16(%eax),%xmm2 2025 movl $13,%ecx 2026 leal 16(%edx),%edx 2027 movups %xmm0,-32(%edx) 2028 movups %xmm2,-16(%edx) 2029 .byte 102,15,58,223,202,1 2030 call .L097key_256a_cold 2031 .byte 102,15,58,223,200,1 2032 call .L098key_256b 2033 .byte 102,15,58,223,202,2 2034 call .L099key_256a 2035 .byte 102,15,58,223,200,2 2036 call .L098key_256b 2037 .byte 102,15,58,223,202,4 2038 call .L099key_256a 2039 .byte 102,15,58,223,200,4 2040 call .L098key_256b 2041 .byte 102,15,58,223,202,8 2042 call .L099key_256a 2043 .byte 102,15,58,223,200,8 2044 call .L098key_256b 2045 .byte 102,15,58,223,202,16 2046 call .L099key_256a 2047 .byte 102,15,58,223,200,16 2048 call .L098key_256b 2049 .byte 102,15,58,223,202,32 2050 call .L099key_256a 2051 .byte 102,15,58,223,200,32 2052 call .L098key_256b 2053 .byte 102,15,58,223,202,64 2054 call .L099key_256a 2055 movups %xmm0,(%edx) 2056 movl %ecx,16(%edx) 2057 xorl %eax,%eax 2058 ret 2059 .align 16 2060 .L099key_256a: 2061 movups %xmm2,(%edx) 2062 leal 16(%edx),%edx 2063 .L097key_256a_cold: 2064 shufps $16,%xmm0,%xmm4 2065 xorps %xmm4,%xmm0 2066 shufps $140,%xmm0,%xmm4 2067 xorps %xmm4,%xmm0 2068 shufps $255,%xmm1,%xmm1 2069 xorps %xmm1,%xmm0 2070 ret 2071 .align 16 2072 .L098key_256b: 2073 movups %xmm0,(%edx) 2074 leal 16(%edx),%edx 2075 shufps $16,%xmm2,%xmm4 2076 xorps %xmm4,%xmm2 2077 shufps $140,%xmm2,%xmm4 2078 xorps %xmm4,%xmm2 2079 shufps $170,%xmm1,%xmm1 2080 xorps %xmm1,%xmm2 2081 ret 2082 .align 4 2083 .L086bad_pointer: 2084 movl $-1,%eax 2085 ret 2086 .align 4 2087 .L089bad_keybits: 2088 movl $-2,%eax 2089 ret 2090 .size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 2091 .globl aesni_set_encrypt_key 2092 .type aesni_set_encrypt_key,@function 2093 .align 16 2094 aesni_set_encrypt_key: 2095 .L_aesni_set_encrypt_key_begin: 2096 movl 4(%esp),%eax 2097 movl 8(%esp),%ecx 2098 movl 12(%esp),%edx 2099 call _aesni_set_encrypt_key 2100 ret 2101 .size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 2102 .globl aesni_set_decrypt_key 2103 .type aesni_set_decrypt_key,@function 2104 .align 16 2105 aesni_set_decrypt_key: 2106 .L_aesni_set_decrypt_key_begin: 2107 movl 4(%esp),%eax 2108 movl 8(%esp),%ecx 2109 movl 12(%esp),%edx 2110 call _aesni_set_encrypt_key 2111 movl 12(%esp),%edx 2112 shll $4,%ecx 2113 testl %eax,%eax 2114 jnz .L100dec_key_ret 2115 leal 16(%edx,%ecx,1),%eax 2116 movups (%edx),%xmm0 2117 movups (%eax),%xmm1 2118 movups %xmm0,(%eax) 2119 movups %xmm1,(%edx) 2120 leal 16(%edx),%edx 2121 leal -16(%eax),%eax 2122 .L101dec_key_inverse: 2123 movups (%edx),%xmm0 2124 movups (%eax),%xmm1 2125 .byte 102,15,56,219,192 2126 .byte 102,15,56,219,201 2127 leal 16(%edx),%edx 2128 leal -16(%eax),%eax 2129 movups %xmm0,16(%eax) 2130 movups %xmm1,-16(%edx) 2131 cmpl %edx,%eax 2132 ja .L101dec_key_inverse 2133 movups (%edx),%xmm0 2134 .byte 102,15,56,219,192 2135 movups %xmm0,(%edx) 2136 xorl %eax,%eax 2137 .L100dec_key_ret: 2138 ret 2139 .size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 2140 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 2141 .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 2142 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 2143 .byte 115,108,46,111,114,103,62,0 2144