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