1 .file "vpaes-x86.s" 2 .text 3 .align 64 4 .L_vpaes_consts: 5 .long 218628480,235210255,168496130,67568393 6 .long 252381056,17041926,33884169,51187212 7 .long 252645135,252645135,252645135,252645135 8 .long 1512730624,3266504856,1377990664,3401244816 9 .long 830229760,1275146365,2969422977,3447763452 10 .long 3411033600,2979783055,338359620,2782886510 11 .long 4209124096,907596821,221174255,1006095553 12 .long 191964160,3799684038,3164090317,1589111125 13 .long 182528256,1777043520,2877432650,3265356744 14 .long 1874708224,3503451415,3305285752,363511674 15 .long 1606117888,3487855781,1093350906,2384367825 16 .long 197121,67569157,134941193,202313229 17 .long 67569157,134941193,202313229,197121 18 .long 134941193,202313229,197121,67569157 19 .long 202313229,197121,67569157,134941193 20 .long 33619971,100992007,168364043,235736079 21 .long 235736079,33619971,100992007,168364043 22 .long 168364043,235736079,33619971,100992007 23 .long 100992007,168364043,235736079,33619971 24 .long 50462976,117835012,185207048,252579084 25 .long 252314880,51251460,117574920,184942860 26 .long 184682752,252054788,50987272,118359308 27 .long 118099200,185467140,251790600,50727180 28 .long 2946363062,528716217,1300004225,1881839624 29 .long 1532713819,1532713819,1532713819,1532713819 30 .long 3602276352,4288629033,3737020424,4153884961 31 .long 1354558464,32357713,2958822624,3775749553 32 .long 1201988352,132424512,1572796698,503232858 33 .long 2213177600,1597421020,4103937655,675398315 34 .long 2749646592,4273543773,1511898873,121693092 35 .long 3040248576,1103263732,2871565598,1608280554 36 .long 2236667136,2588920351,482954393,64377734 37 .long 3069987328,291237287,2117370568,3650299247 38 .long 533321216,3573750986,2572112006,1401264716 39 .long 1339849704,2721158661,548607111,3445553514 40 .long 2128193280,3054596040,2183486460,1257083700 41 .long 655635200,1165381986,3923443150,2344132524 42 .long 190078720,256924420,290342170,357187870 43 .long 1610966272,2263057382,4103205268,309794674 44 .long 2592527872,2233205587,1335446729,3402964816 45 .long 3973531904,3225098121,3002836325,1918774430 46 .long 3870401024,2102906079,2284471353,4117666579 47 .long 617007872,1021508343,366931923,691083277 48 .long 2528395776,3491914898,2968704004,1613121270 49 .long 3445188352,3247741094,844474987,4093578302 50 .long 651481088,1190302358,1689581232,574775300 51 .long 4289380608,206939853,2555985458,2489840491 52 .long 2130264064,327674451,3566485037,3349835193 53 .long 2470714624,316102159,3636825756,3393945945 54 .byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 55 .byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 56 .byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 57 .byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 58 .byte 118,101,114,115,105,116,121,41,0 59 .align 64 60 .type _vpaes_preheat,@function 61 .align 16 62 _vpaes_preheat: 63 addl (%esp),%ebp 64 movdqa -48(%ebp),%xmm7 65 movdqa -16(%ebp),%xmm6 66 ret 67 .size _vpaes_preheat,.-_vpaes_preheat 68 .type _vpaes_encrypt_core,@function 69 .align 16 70 _vpaes_encrypt_core: 71 movl $16,%ecx 72 movl 240(%edx),%eax 73 movdqa %xmm6,%xmm1 74 movdqa (%ebp),%xmm2 75 pandn %xmm0,%xmm1 76 movdqu (%edx),%xmm5 77 psrld $4,%xmm1 78 pand %xmm6,%xmm0 79 .byte 102,15,56,0,208 80 movdqa 16(%ebp),%xmm0 81 .byte 102,15,56,0,193 82 pxor %xmm5,%xmm2 83 pxor %xmm2,%xmm0 84 addl $16,%edx 85 leal 192(%ebp),%ebx 86 jmp .L000enc_entry 87 .align 16 88 .L001enc_loop: 89 movdqa 32(%ebp),%xmm4 90 .byte 102,15,56,0,226 91 pxor %xmm5,%xmm4 92 movdqa 48(%ebp),%xmm0 93 .byte 102,15,56,0,195 94 pxor %xmm4,%xmm0 95 movdqa 64(%ebp),%xmm5 96 .byte 102,15,56,0,234 97 movdqa -64(%ebx,%ecx,1),%xmm1 98 movdqa 80(%ebp),%xmm2 99 .byte 102,15,56,0,211 100 pxor %xmm5,%xmm2 101 movdqa (%ebx,%ecx,1),%xmm4 102 movdqa %xmm0,%xmm3 103 .byte 102,15,56,0,193 104 addl $16,%edx 105 pxor %xmm2,%xmm0 106 .byte 102,15,56,0,220 107 addl $16,%ecx 108 pxor %xmm0,%xmm3 109 .byte 102,15,56,0,193 110 andl $48,%ecx 111 pxor %xmm3,%xmm0 112 subl $1,%eax 113 .L000enc_entry: 114 movdqa %xmm6,%xmm1 115 pandn %xmm0,%xmm1 116 psrld $4,%xmm1 117 pand %xmm6,%xmm0 118 movdqa -32(%ebp),%xmm5 119 .byte 102,15,56,0,232 120 pxor %xmm1,%xmm0 121 movdqa %xmm7,%xmm3 122 .byte 102,15,56,0,217 123 pxor %xmm5,%xmm3 124 movdqa %xmm7,%xmm4 125 .byte 102,15,56,0,224 126 pxor %xmm5,%xmm4 127 movdqa %xmm7,%xmm2 128 .byte 102,15,56,0,211 129 pxor %xmm0,%xmm2 130 movdqa %xmm7,%xmm3 131 movdqu (%edx),%xmm5 132 .byte 102,15,56,0,220 133 pxor %xmm1,%xmm3 134 jnz .L001enc_loop 135 movdqa 96(%ebp),%xmm4 136 movdqa 112(%ebp),%xmm0 137 .byte 102,15,56,0,226 138 pxor %xmm5,%xmm4 139 .byte 102,15,56,0,195 140 movdqa 64(%ebx,%ecx,1),%xmm1 141 pxor %xmm4,%xmm0 142 .byte 102,15,56,0,193 143 ret 144 .size _vpaes_encrypt_core,.-_vpaes_encrypt_core 145 .type _vpaes_decrypt_core,@function 146 .align 16 147 _vpaes_decrypt_core: 148 movl 240(%edx),%eax 149 leal 608(%ebp),%ebx 150 movdqa %xmm6,%xmm1 151 movdqa -64(%ebx),%xmm2 152 pandn %xmm0,%xmm1 153 movl %eax,%ecx 154 psrld $4,%xmm1 155 movdqu (%edx),%xmm5 156 shll $4,%ecx 157 pand %xmm6,%xmm0 158 .byte 102,15,56,0,208 159 movdqa -48(%ebx),%xmm0 160 xorl $48,%ecx 161 .byte 102,15,56,0,193 162 andl $48,%ecx 163 pxor %xmm5,%xmm2 164 movdqa 176(%ebp),%xmm5 165 pxor %xmm2,%xmm0 166 addl $16,%edx 167 leal -352(%ebx,%ecx,1),%ecx 168 jmp .L002dec_entry 169 .align 16 170 .L003dec_loop: 171 movdqa -32(%ebx),%xmm4 172 .byte 102,15,56,0,226 173 pxor %xmm0,%xmm4 174 movdqa -16(%ebx),%xmm0 175 .byte 102,15,56,0,195 176 pxor %xmm4,%xmm0 177 addl $16,%edx 178 .byte 102,15,56,0,197 179 movdqa (%ebx),%xmm4 180 .byte 102,15,56,0,226 181 pxor %xmm0,%xmm4 182 movdqa 16(%ebx),%xmm0 183 .byte 102,15,56,0,195 184 pxor %xmm4,%xmm0 185 subl $1,%eax 186 .byte 102,15,56,0,197 187 movdqa 32(%ebx),%xmm4 188 .byte 102,15,56,0,226 189 pxor %xmm0,%xmm4 190 movdqa 48(%ebx),%xmm0 191 .byte 102,15,56,0,195 192 pxor %xmm4,%xmm0 193 .byte 102,15,56,0,197 194 movdqa 64(%ebx),%xmm4 195 .byte 102,15,56,0,226 196 pxor %xmm0,%xmm4 197 movdqa 80(%ebx),%xmm0 198 .byte 102,15,56,0,195 199 pxor %xmm4,%xmm0 200 .byte 102,15,58,15,237,12 201 .L002dec_entry: 202 movdqa %xmm6,%xmm1 203 pandn %xmm0,%xmm1 204 psrld $4,%xmm1 205 pand %xmm6,%xmm0 206 movdqa -32(%ebp),%xmm2 207 .byte 102,15,56,0,208 208 pxor %xmm1,%xmm0 209 movdqa %xmm7,%xmm3 210 .byte 102,15,56,0,217 211 pxor %xmm2,%xmm3 212 movdqa %xmm7,%xmm4 213 .byte 102,15,56,0,224 214 pxor %xmm2,%xmm4 215 movdqa %xmm7,%xmm2 216 .byte 102,15,56,0,211 217 pxor %xmm0,%xmm2 218 movdqa %xmm7,%xmm3 219 .byte 102,15,56,0,220 220 pxor %xmm1,%xmm3 221 movdqu (%edx),%xmm0 222 jnz .L003dec_loop 223 movdqa 96(%ebx),%xmm4 224 .byte 102,15,56,0,226 225 pxor %xmm0,%xmm4 226 movdqa 112(%ebx),%xmm0 227 movdqa (%ecx),%xmm2 228 .byte 102,15,56,0,195 229 pxor %xmm4,%xmm0 230 .byte 102,15,56,0,194 231 ret 232 .size _vpaes_decrypt_core,.-_vpaes_decrypt_core 233 .type _vpaes_schedule_core,@function 234 .align 16 235 _vpaes_schedule_core: 236 addl (%esp),%ebp 237 movdqu (%esi),%xmm0 238 movdqa 320(%ebp),%xmm2 239 movdqa %xmm0,%xmm3 240 leal (%ebp),%ebx 241 movdqa %xmm2,4(%esp) 242 call _vpaes_schedule_transform 243 movdqa %xmm0,%xmm7 244 testl %edi,%edi 245 jnz .L004schedule_am_decrypting 246 movdqu %xmm0,(%edx) 247 jmp .L005schedule_go 248 .L004schedule_am_decrypting: 249 movdqa 256(%ebp,%ecx,1),%xmm1 250 .byte 102,15,56,0,217 251 movdqu %xmm3,(%edx) 252 xorl $48,%ecx 253 .L005schedule_go: 254 cmpl $192,%eax 255 ja .L006schedule_256 256 je .L007schedule_192 257 .L008schedule_128: 258 movl $10,%eax 259 .L009loop_schedule_128: 260 call _vpaes_schedule_round 261 decl %eax 262 jz .L010schedule_mangle_last 263 call _vpaes_schedule_mangle 264 jmp .L009loop_schedule_128 265 .align 16 266 .L007schedule_192: 267 movdqu 8(%esi),%xmm0 268 call _vpaes_schedule_transform 269 movdqa %xmm0,%xmm6 270 pxor %xmm4,%xmm4 271 movhlps %xmm4,%xmm6 272 movl $4,%eax 273 .L011loop_schedule_192: 274 call _vpaes_schedule_round 275 .byte 102,15,58,15,198,8 276 call _vpaes_schedule_mangle 277 call _vpaes_schedule_192_smear 278 call _vpaes_schedule_mangle 279 call _vpaes_schedule_round 280 decl %eax 281 jz .L010schedule_mangle_last 282 call _vpaes_schedule_mangle 283 call _vpaes_schedule_192_smear 284 jmp .L011loop_schedule_192 285 .align 16 286 .L006schedule_256: 287 movdqu 16(%esi),%xmm0 288 call _vpaes_schedule_transform 289 movl $7,%eax 290 .L012loop_schedule_256: 291 call _vpaes_schedule_mangle 292 movdqa %xmm0,%xmm6 293 call _vpaes_schedule_round 294 decl %eax 295 jz .L010schedule_mangle_last 296 call _vpaes_schedule_mangle 297 pshufd $255,%xmm0,%xmm0 298 movdqa %xmm7,20(%esp) 299 movdqa %xmm6,%xmm7 300 call .L_vpaes_schedule_low_round 301 movdqa 20(%esp),%xmm7 302 jmp .L012loop_schedule_256 303 .align 16 304 .L010schedule_mangle_last: 305 leal 384(%ebp),%ebx 306 testl %edi,%edi 307 jnz .L013schedule_mangle_last_dec 308 movdqa 256(%ebp,%ecx,1),%xmm1 309 .byte 102,15,56,0,193 310 leal 352(%ebp),%ebx 311 addl $32,%edx 312 .L013schedule_mangle_last_dec: 313 addl $-16,%edx 314 pxor 336(%ebp),%xmm0 315 call _vpaes_schedule_transform 316 movdqu %xmm0,(%edx) 317 pxor %xmm0,%xmm0 318 pxor %xmm1,%xmm1 319 pxor %xmm2,%xmm2 320 pxor %xmm3,%xmm3 321 pxor %xmm4,%xmm4 322 pxor %xmm5,%xmm5 323 pxor %xmm6,%xmm6 324 pxor %xmm7,%xmm7 325 ret 326 .size _vpaes_schedule_core,.-_vpaes_schedule_core 327 .type _vpaes_schedule_192_smear,@function 328 .align 16 329 _vpaes_schedule_192_smear: 330 pshufd $128,%xmm6,%xmm0 331 pxor %xmm0,%xmm6 332 pshufd $254,%xmm7,%xmm0 333 pxor %xmm0,%xmm6 334 movdqa %xmm6,%xmm0 335 pxor %xmm1,%xmm1 336 movhlps %xmm1,%xmm6 337 ret 338 .size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear 339 .type _vpaes_schedule_round,@function 340 .align 16 341 _vpaes_schedule_round: 342 movdqa 8(%esp),%xmm2 343 pxor %xmm1,%xmm1 344 .byte 102,15,58,15,202,15 345 .byte 102,15,58,15,210,15 346 pxor %xmm1,%xmm7 347 pshufd $255,%xmm0,%xmm0 348 .byte 102,15,58,15,192,1 349 movdqa %xmm2,8(%esp) 350 .L_vpaes_schedule_low_round: 351 movdqa %xmm7,%xmm1 352 pslldq $4,%xmm7 353 pxor %xmm1,%xmm7 354 movdqa %xmm7,%xmm1 355 pslldq $8,%xmm7 356 pxor %xmm1,%xmm7 357 pxor 336(%ebp),%xmm7 358 movdqa -16(%ebp),%xmm4 359 movdqa -48(%ebp),%xmm5 360 movdqa %xmm4,%xmm1 361 pandn %xmm0,%xmm1 362 psrld $4,%xmm1 363 pand %xmm4,%xmm0 364 movdqa -32(%ebp),%xmm2 365 .byte 102,15,56,0,208 366 pxor %xmm1,%xmm0 367 movdqa %xmm5,%xmm3 368 .byte 102,15,56,0,217 369 pxor %xmm2,%xmm3 370 movdqa %xmm5,%xmm4 371 .byte 102,15,56,0,224 372 pxor %xmm2,%xmm4 373 movdqa %xmm5,%xmm2 374 .byte 102,15,56,0,211 375 pxor %xmm0,%xmm2 376 movdqa %xmm5,%xmm3 377 .byte 102,15,56,0,220 378 pxor %xmm1,%xmm3 379 movdqa 32(%ebp),%xmm4 380 .byte 102,15,56,0,226 381 movdqa 48(%ebp),%xmm0 382 .byte 102,15,56,0,195 383 pxor %xmm4,%xmm0 384 pxor %xmm7,%xmm0 385 movdqa %xmm0,%xmm7 386 ret 387 .size _vpaes_schedule_round,.-_vpaes_schedule_round 388 .type _vpaes_schedule_transform,@function 389 .align 16 390 _vpaes_schedule_transform: 391 movdqa -16(%ebp),%xmm2 392 movdqa %xmm2,%xmm1 393 pandn %xmm0,%xmm1 394 psrld $4,%xmm1 395 pand %xmm2,%xmm0 396 movdqa (%ebx),%xmm2 397 .byte 102,15,56,0,208 398 movdqa 16(%ebx),%xmm0 399 .byte 102,15,56,0,193 400 pxor %xmm2,%xmm0 401 ret 402 .size _vpaes_schedule_transform,.-_vpaes_schedule_transform 403 .type _vpaes_schedule_mangle,@function 404 .align 16 405 _vpaes_schedule_mangle: 406 movdqa %xmm0,%xmm4 407 movdqa 128(%ebp),%xmm5 408 testl %edi,%edi 409 jnz .L014schedule_mangle_dec 410 addl $16,%edx 411 pxor 336(%ebp),%xmm4 412 .byte 102,15,56,0,229 413 movdqa %xmm4,%xmm3 414 .byte 102,15,56,0,229 415 pxor %xmm4,%xmm3 416 .byte 102,15,56,0,229 417 pxor %xmm4,%xmm3 418 jmp .L015schedule_mangle_both 419 .align 16 420 .L014schedule_mangle_dec: 421 movdqa -16(%ebp),%xmm2 422 leal 416(%ebp),%esi 423 movdqa %xmm2,%xmm1 424 pandn %xmm4,%xmm1 425 psrld $4,%xmm1 426 pand %xmm2,%xmm4 427 movdqa (%esi),%xmm2 428 .byte 102,15,56,0,212 429 movdqa 16(%esi),%xmm3 430 .byte 102,15,56,0,217 431 pxor %xmm2,%xmm3 432 .byte 102,15,56,0,221 433 movdqa 32(%esi),%xmm2 434 .byte 102,15,56,0,212 435 pxor %xmm3,%xmm2 436 movdqa 48(%esi),%xmm3 437 .byte 102,15,56,0,217 438 pxor %xmm2,%xmm3 439 .byte 102,15,56,0,221 440 movdqa 64(%esi),%xmm2 441 .byte 102,15,56,0,212 442 pxor %xmm3,%xmm2 443 movdqa 80(%esi),%xmm3 444 .byte 102,15,56,0,217 445 pxor %xmm2,%xmm3 446 .byte 102,15,56,0,221 447 movdqa 96(%esi),%xmm2 448 .byte 102,15,56,0,212 449 pxor %xmm3,%xmm2 450 movdqa 112(%esi),%xmm3 451 .byte 102,15,56,0,217 452 pxor %xmm2,%xmm3 453 addl $-16,%edx 454 .L015schedule_mangle_both: 455 movdqa 256(%ebp,%ecx,1),%xmm1 456 .byte 102,15,56,0,217 457 addl $-16,%ecx 458 andl $48,%ecx 459 movdqu %xmm3,(%edx) 460 ret 461 .size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle 462 .globl vpaes_set_encrypt_key 463 .type vpaes_set_encrypt_key,@function 464 .align 16 465 vpaes_set_encrypt_key: 466 .L_vpaes_set_encrypt_key_begin: 467 pushl %ebp 468 pushl %ebx 469 pushl %esi 470 pushl %edi 471 movl 20(%esp),%esi 472 leal -56(%esp),%ebx 473 movl 24(%esp),%eax 474 andl $-16,%ebx 475 movl 28(%esp),%edx 476 xchgl %esp,%ebx 477 movl %ebx,48(%esp) 478 movl %eax,%ebx 479 shrl $5,%ebx 480 addl $5,%ebx 481 movl %ebx,240(%edx) 482 movl $48,%ecx 483 movl $0,%edi 484 leal .L_vpaes_consts+0x30-.L016pic_point,%ebp 485 call _vpaes_schedule_core 486 .L016pic_point: 487 movl 48(%esp),%esp 488 xorl %eax,%eax 489 popl %edi 490 popl %esi 491 popl %ebx 492 popl %ebp 493 ret 494 .size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin 495 .globl vpaes_set_decrypt_key 496 .type vpaes_set_decrypt_key,@function 497 .align 16 498 vpaes_set_decrypt_key: 499 .L_vpaes_set_decrypt_key_begin: 500 pushl %ebp 501 pushl %ebx 502 pushl %esi 503 pushl %edi 504 movl 20(%esp),%esi 505 leal -56(%esp),%ebx 506 movl 24(%esp),%eax 507 andl $-16,%ebx 508 movl 28(%esp),%edx 509 xchgl %esp,%ebx 510 movl %ebx,48(%esp) 511 movl %eax,%ebx 512 shrl $5,%ebx 513 addl $5,%ebx 514 movl %ebx,240(%edx) 515 shll $4,%ebx 516 leal 16(%edx,%ebx,1),%edx 517 movl $1,%edi 518 movl %eax,%ecx 519 shrl $1,%ecx 520 andl $32,%ecx 521 xorl $32,%ecx 522 leal .L_vpaes_consts+0x30-.L017pic_point,%ebp 523 call _vpaes_schedule_core 524 .L017pic_point: 525 movl 48(%esp),%esp 526 xorl %eax,%eax 527 popl %edi 528 popl %esi 529 popl %ebx 530 popl %ebp 531 ret 532 .size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin 533 .globl vpaes_encrypt 534 .type vpaes_encrypt,@function 535 .align 16 536 vpaes_encrypt: 537 .L_vpaes_encrypt_begin: 538 pushl %ebp 539 pushl %ebx 540 pushl %esi 541 pushl %edi 542 leal .L_vpaes_consts+0x30-.L018pic_point,%ebp 543 call _vpaes_preheat 544 .L018pic_point: 545 movl 20(%esp),%esi 546 leal -56(%esp),%ebx 547 movl 24(%esp),%edi 548 andl $-16,%ebx 549 movl 28(%esp),%edx 550 xchgl %esp,%ebx 551 movl %ebx,48(%esp) 552 movdqu (%esi),%xmm0 553 call _vpaes_encrypt_core 554 movdqu %xmm0,(%edi) 555 movl 48(%esp),%esp 556 popl %edi 557 popl %esi 558 popl %ebx 559 popl %ebp 560 ret 561 .size vpaes_encrypt,.-.L_vpaes_encrypt_begin 562 .globl vpaes_decrypt 563 .type vpaes_decrypt,@function 564 .align 16 565 vpaes_decrypt: 566 .L_vpaes_decrypt_begin: 567 pushl %ebp 568 pushl %ebx 569 pushl %esi 570 pushl %edi 571 leal .L_vpaes_consts+0x30-.L019pic_point,%ebp 572 call _vpaes_preheat 573 .L019pic_point: 574 movl 20(%esp),%esi 575 leal -56(%esp),%ebx 576 movl 24(%esp),%edi 577 andl $-16,%ebx 578 movl 28(%esp),%edx 579 xchgl %esp,%ebx 580 movl %ebx,48(%esp) 581 movdqu (%esi),%xmm0 582 call _vpaes_decrypt_core 583 movdqu %xmm0,(%edi) 584 movl 48(%esp),%esp 585 popl %edi 586 popl %esi 587 popl %ebx 588 popl %ebp 589 ret 590 .size vpaes_decrypt,.-.L_vpaes_decrypt_begin 591 .globl vpaes_cbc_encrypt 592 .type vpaes_cbc_encrypt,@function 593 .align 16 594 vpaes_cbc_encrypt: 595 .L_vpaes_cbc_encrypt_begin: 596 pushl %ebp 597 pushl %ebx 598 pushl %esi 599 pushl %edi 600 movl 20(%esp),%esi 601 movl 24(%esp),%edi 602 movl 28(%esp),%eax 603 movl 32(%esp),%edx 604 subl $16,%eax 605 jc .L020cbc_abort 606 leal -56(%esp),%ebx 607 movl 36(%esp),%ebp 608 andl $-16,%ebx 609 movl 40(%esp),%ecx 610 xchgl %esp,%ebx 611 movdqu (%ebp),%xmm1 612 subl %esi,%edi 613 movl %ebx,48(%esp) 614 movl %edi,(%esp) 615 movl %edx,4(%esp) 616 movl %ebp,8(%esp) 617 movl %eax,%edi 618 leal .L_vpaes_consts+0x30-.L021pic_point,%ebp 619 call _vpaes_preheat 620 .L021pic_point: 621 cmpl $0,%ecx 622 je .L022cbc_dec_loop 623 jmp .L023cbc_enc_loop 624 .align 16 625 .L023cbc_enc_loop: 626 movdqu (%esi),%xmm0 627 pxor %xmm1,%xmm0 628 call _vpaes_encrypt_core 629 movl (%esp),%ebx 630 movl 4(%esp),%edx 631 movdqa %xmm0,%xmm1 632 movdqu %xmm0,(%ebx,%esi,1) 633 leal 16(%esi),%esi 634 subl $16,%edi 635 jnc .L023cbc_enc_loop 636 jmp .L024cbc_done 637 .align 16 638 .L022cbc_dec_loop: 639 movdqu (%esi),%xmm0 640 movdqa %xmm1,16(%esp) 641 movdqa %xmm0,32(%esp) 642 call _vpaes_decrypt_core 643 movl (%esp),%ebx 644 movl 4(%esp),%edx 645 pxor 16(%esp),%xmm0 646 movdqa 32(%esp),%xmm1 647 movdqu %xmm0,(%ebx,%esi,1) 648 leal 16(%esi),%esi 649 subl $16,%edi 650 jnc .L022cbc_dec_loop 651 .L024cbc_done: 652 movl 8(%esp),%ebx 653 movl 48(%esp),%esp 654 movdqu %xmm1,(%ebx) 655 .L020cbc_abort: 656 popl %edi 657 popl %esi 658 popl %ebx 659 popl %ebp 660 ret 661 .size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin 662