1.text 2.align 6,0x90 3L_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 6,0x90 59.align 4 60__vpaes_preheat: 61 %ifdef __CET__ 62 63.byte 243,15,30,251 64 %endif 65 66 addl (%esp),%ebp 67 movdqa -48(%ebp),%xmm7 68 movdqa -16(%ebp),%xmm6 69 ret 70.align 4 71__vpaes_encrypt_core: 72 %ifdef __CET__ 73 74.byte 243,15,30,251 75 %endif 76 77 movl $16,%ecx 78 movl 240(%edx),%eax 79 movdqa %xmm6,%xmm1 80 movdqa (%ebp),%xmm2 81 pandn %xmm0,%xmm1 82 pand %xmm6,%xmm0 83 movdqu (%edx),%xmm5 84.byte 102,15,56,0,208 85 movdqa 16(%ebp),%xmm0 86 pxor %xmm5,%xmm2 87 psrld $4,%xmm1 88 addl $16,%edx 89.byte 102,15,56,0,193 90 leal 192(%ebp),%ebx 91 pxor %xmm2,%xmm0 92 jmp L000enc_entry 93.align 4,0x90 94L001enc_loop: 95 movdqa 32(%ebp),%xmm4 96 movdqa 48(%ebp),%xmm0 97.byte 102,15,56,0,226 98.byte 102,15,56,0,195 99 pxor %xmm5,%xmm4 100 movdqa 64(%ebp),%xmm5 101 pxor %xmm4,%xmm0 102 movdqa -64(%ebx,%ecx,1),%xmm1 103.byte 102,15,56,0,234 104 movdqa 80(%ebp),%xmm2 105 movdqa (%ebx,%ecx,1),%xmm4 106.byte 102,15,56,0,211 107 movdqa %xmm0,%xmm3 108 pxor %xmm5,%xmm2 109.byte 102,15,56,0,193 110 addl $16,%edx 111 pxor %xmm2,%xmm0 112.byte 102,15,56,0,220 113 addl $16,%ecx 114 pxor %xmm0,%xmm3 115.byte 102,15,56,0,193 116 andl $48,%ecx 117 subl $1,%eax 118 pxor %xmm3,%xmm0 119L000enc_entry: 120 movdqa %xmm6,%xmm1 121 movdqa -32(%ebp),%xmm5 122 pandn %xmm0,%xmm1 123 psrld $4,%xmm1 124 pand %xmm6,%xmm0 125.byte 102,15,56,0,232 126 movdqa %xmm7,%xmm3 127 pxor %xmm1,%xmm0 128.byte 102,15,56,0,217 129 movdqa %xmm7,%xmm4 130 pxor %xmm5,%xmm3 131.byte 102,15,56,0,224 132 movdqa %xmm7,%xmm2 133 pxor %xmm5,%xmm4 134.byte 102,15,56,0,211 135 movdqa %xmm7,%xmm3 136 pxor %xmm0,%xmm2 137.byte 102,15,56,0,220 138 movdqu (%edx),%xmm5 139 pxor %xmm1,%xmm3 140 jnz L001enc_loop 141 movdqa 96(%ebp),%xmm4 142 movdqa 112(%ebp),%xmm0 143.byte 102,15,56,0,226 144 pxor %xmm5,%xmm4 145.byte 102,15,56,0,195 146 movdqa 64(%ebx,%ecx,1),%xmm1 147 pxor %xmm4,%xmm0 148.byte 102,15,56,0,193 149 ret 150.align 4 151__vpaes_decrypt_core: 152 %ifdef __CET__ 153 154.byte 243,15,30,251 155 %endif 156 157 leal 608(%ebp),%ebx 158 movl 240(%edx),%eax 159 movdqa %xmm6,%xmm1 160 movdqa -64(%ebx),%xmm2 161 pandn %xmm0,%xmm1 162 movl %eax,%ecx 163 psrld $4,%xmm1 164 movdqu (%edx),%xmm5 165 shll $4,%ecx 166 pand %xmm6,%xmm0 167.byte 102,15,56,0,208 168 movdqa -48(%ebx),%xmm0 169 xorl $48,%ecx 170.byte 102,15,56,0,193 171 andl $48,%ecx 172 pxor %xmm5,%xmm2 173 movdqa 176(%ebp),%xmm5 174 pxor %xmm2,%xmm0 175 addl $16,%edx 176 leal -352(%ebx,%ecx,1),%ecx 177 jmp L002dec_entry 178.align 4,0x90 179L003dec_loop: 180 movdqa -32(%ebx),%xmm4 181 movdqa -16(%ebx),%xmm1 182.byte 102,15,56,0,226 183.byte 102,15,56,0,203 184 pxor %xmm4,%xmm0 185 movdqa (%ebx),%xmm4 186 pxor %xmm1,%xmm0 187 movdqa 16(%ebx),%xmm1 188.byte 102,15,56,0,226 189.byte 102,15,56,0,197 190.byte 102,15,56,0,203 191 pxor %xmm4,%xmm0 192 movdqa 32(%ebx),%xmm4 193 pxor %xmm1,%xmm0 194 movdqa 48(%ebx),%xmm1 195.byte 102,15,56,0,226 196.byte 102,15,56,0,197 197.byte 102,15,56,0,203 198 pxor %xmm4,%xmm0 199 movdqa 64(%ebx),%xmm4 200 pxor %xmm1,%xmm0 201 movdqa 80(%ebx),%xmm1 202.byte 102,15,56,0,226 203.byte 102,15,56,0,197 204.byte 102,15,56,0,203 205 pxor %xmm4,%xmm0 206 addl $16,%edx 207.byte 102,15,58,15,237,12 208 pxor %xmm1,%xmm0 209 subl $1,%eax 210L002dec_entry: 211 movdqa %xmm6,%xmm1 212 movdqa -32(%ebp),%xmm2 213 pandn %xmm0,%xmm1 214 pand %xmm6,%xmm0 215 psrld $4,%xmm1 216.byte 102,15,56,0,208 217 movdqa %xmm7,%xmm3 218 pxor %xmm1,%xmm0 219.byte 102,15,56,0,217 220 movdqa %xmm7,%xmm4 221 pxor %xmm2,%xmm3 222.byte 102,15,56,0,224 223 pxor %xmm2,%xmm4 224 movdqa %xmm7,%xmm2 225.byte 102,15,56,0,211 226 movdqa %xmm7,%xmm3 227 pxor %xmm0,%xmm2 228.byte 102,15,56,0,220 229 movdqu (%edx),%xmm0 230 pxor %xmm1,%xmm3 231 jnz L003dec_loop 232 movdqa 96(%ebx),%xmm4 233.byte 102,15,56,0,226 234 pxor %xmm0,%xmm4 235 movdqa 112(%ebx),%xmm0 236 movdqa (%ecx),%xmm2 237.byte 102,15,56,0,195 238 pxor %xmm4,%xmm0 239.byte 102,15,56,0,194 240 ret 241.align 4 242__vpaes_schedule_core: 243 %ifdef __CET__ 244 245.byte 243,15,30,251 246 %endif 247 248 addl (%esp),%ebp 249 movdqu (%esi),%xmm0 250 movdqa 320(%ebp),%xmm2 251 movdqa %xmm0,%xmm3 252 leal (%ebp),%ebx 253 movdqa %xmm2,4(%esp) 254 call __vpaes_schedule_transform 255 movdqa %xmm0,%xmm7 256 testl %edi,%edi 257 jnz L004schedule_am_decrypting 258 movdqu %xmm0,(%edx) 259 jmp L005schedule_go 260L004schedule_am_decrypting: 261 movdqa 256(%ebp,%ecx,1),%xmm1 262.byte 102,15,56,0,217 263 movdqu %xmm3,(%edx) 264 xorl $48,%ecx 265L005schedule_go: 266 cmpl $192,%eax 267 ja L006schedule_256 268 je L007schedule_192 269L008schedule_128: 270 movl $10,%eax 271L009loop_schedule_128: 272 call __vpaes_schedule_round 273 decl %eax 274 jz L010schedule_mangle_last 275 call __vpaes_schedule_mangle 276 jmp L009loop_schedule_128 277.align 4,0x90 278L007schedule_192: 279 movdqu 8(%esi),%xmm0 280 call __vpaes_schedule_transform 281 movdqa %xmm0,%xmm6 282 pxor %xmm4,%xmm4 283 movhlps %xmm4,%xmm6 284 movl $4,%eax 285L011loop_schedule_192: 286 call __vpaes_schedule_round 287.byte 102,15,58,15,198,8 288 call __vpaes_schedule_mangle 289 call __vpaes_schedule_192_smear 290 call __vpaes_schedule_mangle 291 call __vpaes_schedule_round 292 decl %eax 293 jz L010schedule_mangle_last 294 call __vpaes_schedule_mangle 295 call __vpaes_schedule_192_smear 296 jmp L011loop_schedule_192 297.align 4,0x90 298L006schedule_256: 299 movdqu 16(%esi),%xmm0 300 call __vpaes_schedule_transform 301 movl $7,%eax 302L012loop_schedule_256: 303 call __vpaes_schedule_mangle 304 movdqa %xmm0,%xmm6 305 call __vpaes_schedule_round 306 decl %eax 307 jz L010schedule_mangle_last 308 call __vpaes_schedule_mangle 309 pshufd $255,%xmm0,%xmm0 310 movdqa %xmm7,20(%esp) 311 movdqa %xmm6,%xmm7 312 call L_vpaes_schedule_low_round 313 movdqa 20(%esp),%xmm7 314 jmp L012loop_schedule_256 315.align 4,0x90 316L010schedule_mangle_last: 317 leal 384(%ebp),%ebx 318 testl %edi,%edi 319 jnz L013schedule_mangle_last_dec 320 movdqa 256(%ebp,%ecx,1),%xmm1 321.byte 102,15,56,0,193 322 leal 352(%ebp),%ebx 323 addl $32,%edx 324L013schedule_mangle_last_dec: 325 addl $-16,%edx 326 pxor 336(%ebp),%xmm0 327 call __vpaes_schedule_transform 328 movdqu %xmm0,(%edx) 329 pxor %xmm0,%xmm0 330 pxor %xmm1,%xmm1 331 pxor %xmm2,%xmm2 332 pxor %xmm3,%xmm3 333 pxor %xmm4,%xmm4 334 pxor %xmm5,%xmm5 335 pxor %xmm6,%xmm6 336 pxor %xmm7,%xmm7 337 ret 338.align 4 339__vpaes_schedule_192_smear: 340 %ifdef __CET__ 341 342.byte 243,15,30,251 343 %endif 344 345 pshufd $128,%xmm6,%xmm1 346 pshufd $254,%xmm7,%xmm0 347 pxor %xmm1,%xmm6 348 pxor %xmm1,%xmm1 349 pxor %xmm0,%xmm6 350 movdqa %xmm6,%xmm0 351 movhlps %xmm1,%xmm6 352 ret 353.align 4 354__vpaes_schedule_round: 355 %ifdef __CET__ 356 357.byte 243,15,30,251 358 %endif 359 360 movdqa 8(%esp),%xmm2 361 pxor %xmm1,%xmm1 362.byte 102,15,58,15,202,15 363.byte 102,15,58,15,210,15 364 pxor %xmm1,%xmm7 365 pshufd $255,%xmm0,%xmm0 366.byte 102,15,58,15,192,1 367 movdqa %xmm2,8(%esp) 368L_vpaes_schedule_low_round: 369 movdqa %xmm7,%xmm1 370 pslldq $4,%xmm7 371 pxor %xmm1,%xmm7 372 movdqa %xmm7,%xmm1 373 pslldq $8,%xmm7 374 pxor %xmm1,%xmm7 375 pxor 336(%ebp),%xmm7 376 movdqa -16(%ebp),%xmm4 377 movdqa -48(%ebp),%xmm5 378 movdqa %xmm4,%xmm1 379 pandn %xmm0,%xmm1 380 psrld $4,%xmm1 381 pand %xmm4,%xmm0 382 movdqa -32(%ebp),%xmm2 383.byte 102,15,56,0,208 384 pxor %xmm1,%xmm0 385 movdqa %xmm5,%xmm3 386.byte 102,15,56,0,217 387 pxor %xmm2,%xmm3 388 movdqa %xmm5,%xmm4 389.byte 102,15,56,0,224 390 pxor %xmm2,%xmm4 391 movdqa %xmm5,%xmm2 392.byte 102,15,56,0,211 393 pxor %xmm0,%xmm2 394 movdqa %xmm5,%xmm3 395.byte 102,15,56,0,220 396 pxor %xmm1,%xmm3 397 movdqa 32(%ebp),%xmm4 398.byte 102,15,56,0,226 399 movdqa 48(%ebp),%xmm0 400.byte 102,15,56,0,195 401 pxor %xmm4,%xmm0 402 pxor %xmm7,%xmm0 403 movdqa %xmm0,%xmm7 404 ret 405.align 4 406__vpaes_schedule_transform: 407 %ifdef __CET__ 408 409.byte 243,15,30,251 410 %endif 411 412 movdqa -16(%ebp),%xmm2 413 movdqa %xmm2,%xmm1 414 pandn %xmm0,%xmm1 415 psrld $4,%xmm1 416 pand %xmm2,%xmm0 417 movdqa (%ebx),%xmm2 418.byte 102,15,56,0,208 419 movdqa 16(%ebx),%xmm0 420.byte 102,15,56,0,193 421 pxor %xmm2,%xmm0 422 ret 423.align 4 424__vpaes_schedule_mangle: 425 %ifdef __CET__ 426 427.byte 243,15,30,251 428 %endif 429 430 movdqa %xmm0,%xmm4 431 movdqa 128(%ebp),%xmm5 432 testl %edi,%edi 433 jnz L014schedule_mangle_dec 434 addl $16,%edx 435 pxor 336(%ebp),%xmm4 436.byte 102,15,56,0,229 437 movdqa %xmm4,%xmm3 438.byte 102,15,56,0,229 439 pxor %xmm4,%xmm3 440.byte 102,15,56,0,229 441 pxor %xmm4,%xmm3 442 jmp L015schedule_mangle_both 443.align 4,0x90 444L014schedule_mangle_dec: 445 movdqa -16(%ebp),%xmm2 446 leal 416(%ebp),%esi 447 movdqa %xmm2,%xmm1 448 pandn %xmm4,%xmm1 449 psrld $4,%xmm1 450 pand %xmm2,%xmm4 451 movdqa (%esi),%xmm2 452.byte 102,15,56,0,212 453 movdqa 16(%esi),%xmm3 454.byte 102,15,56,0,217 455 pxor %xmm2,%xmm3 456.byte 102,15,56,0,221 457 movdqa 32(%esi),%xmm2 458.byte 102,15,56,0,212 459 pxor %xmm3,%xmm2 460 movdqa 48(%esi),%xmm3 461.byte 102,15,56,0,217 462 pxor %xmm2,%xmm3 463.byte 102,15,56,0,221 464 movdqa 64(%esi),%xmm2 465.byte 102,15,56,0,212 466 pxor %xmm3,%xmm2 467 movdqa 80(%esi),%xmm3 468.byte 102,15,56,0,217 469 pxor %xmm2,%xmm3 470.byte 102,15,56,0,221 471 movdqa 96(%esi),%xmm2 472.byte 102,15,56,0,212 473 pxor %xmm3,%xmm2 474 movdqa 112(%esi),%xmm3 475.byte 102,15,56,0,217 476 pxor %xmm2,%xmm3 477 addl $-16,%edx 478L015schedule_mangle_both: 479 movdqa 256(%ebp,%ecx,1),%xmm1 480.byte 102,15,56,0,217 481 addl $-16,%ecx 482 andl $48,%ecx 483 movdqu %xmm3,(%edx) 484 ret 485.globl _vpaes_set_encrypt_key 486.align 4 487_vpaes_set_encrypt_key: 488L_vpaes_set_encrypt_key_begin: 489 %ifdef __CET__ 490 491.byte 243,15,30,251 492 %endif 493 494 pushl %ebp 495 pushl %ebx 496 pushl %esi 497 pushl %edi 498 movl 20(%esp),%esi 499 leal -56(%esp),%ebx 500 movl 24(%esp),%eax 501 andl $-16,%ebx 502 movl 28(%esp),%edx 503 xchgl %esp,%ebx 504 movl %ebx,48(%esp) 505 movl %eax,%ebx 506 shrl $5,%ebx 507 addl $5,%ebx 508 movl %ebx,240(%edx) 509 movl $48,%ecx 510 movl $0,%edi 511 leal L_vpaes_consts+0x30-L016pic_point,%ebp 512 call __vpaes_schedule_core 513L016pic_point: 514 movl 48(%esp),%esp 515 xorl %eax,%eax 516 popl %edi 517 popl %esi 518 popl %ebx 519 popl %ebp 520 ret 521.globl _vpaes_set_decrypt_key 522.align 4 523_vpaes_set_decrypt_key: 524L_vpaes_set_decrypt_key_begin: 525 %ifdef __CET__ 526 527.byte 243,15,30,251 528 %endif 529 530 pushl %ebp 531 pushl %ebx 532 pushl %esi 533 pushl %edi 534 movl 20(%esp),%esi 535 leal -56(%esp),%ebx 536 movl 24(%esp),%eax 537 andl $-16,%ebx 538 movl 28(%esp),%edx 539 xchgl %esp,%ebx 540 movl %ebx,48(%esp) 541 movl %eax,%ebx 542 shrl $5,%ebx 543 addl $5,%ebx 544 movl %ebx,240(%edx) 545 shll $4,%ebx 546 leal 16(%edx,%ebx,1),%edx 547 movl $1,%edi 548 movl %eax,%ecx 549 shrl $1,%ecx 550 andl $32,%ecx 551 xorl $32,%ecx 552 leal L_vpaes_consts+0x30-L017pic_point,%ebp 553 call __vpaes_schedule_core 554L017pic_point: 555 movl 48(%esp),%esp 556 xorl %eax,%eax 557 popl %edi 558 popl %esi 559 popl %ebx 560 popl %ebp 561 ret 562.globl _vpaes_encrypt 563.align 4 564_vpaes_encrypt: 565L_vpaes_encrypt_begin: 566 %ifdef __CET__ 567 568.byte 243,15,30,251 569 %endif 570 571 pushl %ebp 572 pushl %ebx 573 pushl %esi 574 pushl %edi 575 leal L_vpaes_consts+0x30-L018pic_point,%ebp 576 call __vpaes_preheat 577L018pic_point: 578 movl 20(%esp),%esi 579 leal -56(%esp),%ebx 580 movl 24(%esp),%edi 581 andl $-16,%ebx 582 movl 28(%esp),%edx 583 xchgl %esp,%ebx 584 movl %ebx,48(%esp) 585 movdqu (%esi),%xmm0 586 call __vpaes_encrypt_core 587 movdqu %xmm0,(%edi) 588 movl 48(%esp),%esp 589 popl %edi 590 popl %esi 591 popl %ebx 592 popl %ebp 593 ret 594.globl _vpaes_decrypt 595.align 4 596_vpaes_decrypt: 597L_vpaes_decrypt_begin: 598 %ifdef __CET__ 599 600.byte 243,15,30,251 601 %endif 602 603 pushl %ebp 604 pushl %ebx 605 pushl %esi 606 pushl %edi 607 leal L_vpaes_consts+0x30-L019pic_point,%ebp 608 call __vpaes_preheat 609L019pic_point: 610 movl 20(%esp),%esi 611 leal -56(%esp),%ebx 612 movl 24(%esp),%edi 613 andl $-16,%ebx 614 movl 28(%esp),%edx 615 xchgl %esp,%ebx 616 movl %ebx,48(%esp) 617 movdqu (%esi),%xmm0 618 call __vpaes_decrypt_core 619 movdqu %xmm0,(%edi) 620 movl 48(%esp),%esp 621 popl %edi 622 popl %esi 623 popl %ebx 624 popl %ebp 625 ret 626.globl _vpaes_cbc_encrypt 627.align 4 628_vpaes_cbc_encrypt: 629L_vpaes_cbc_encrypt_begin: 630 %ifdef __CET__ 631 632.byte 243,15,30,251 633 %endif 634 635 pushl %ebp 636 pushl %ebx 637 pushl %esi 638 pushl %edi 639 movl 20(%esp),%esi 640 movl 24(%esp),%edi 641 movl 28(%esp),%eax 642 movl 32(%esp),%edx 643 subl $16,%eax 644 jc L020cbc_abort 645 leal -56(%esp),%ebx 646 movl 36(%esp),%ebp 647 andl $-16,%ebx 648 movl 40(%esp),%ecx 649 xchgl %esp,%ebx 650 movdqu (%ebp),%xmm1 651 subl %esi,%edi 652 movl %ebx,48(%esp) 653 movl %edi,(%esp) 654 movl %edx,4(%esp) 655 movl %ebp,8(%esp) 656 movl %eax,%edi 657 leal L_vpaes_consts+0x30-L021pic_point,%ebp 658 call __vpaes_preheat 659L021pic_point: 660 cmpl $0,%ecx 661 je L022cbc_dec_loop 662 jmp L023cbc_enc_loop 663.align 4,0x90 664L023cbc_enc_loop: 665 movdqu (%esi),%xmm0 666 pxor %xmm1,%xmm0 667 call __vpaes_encrypt_core 668 movl (%esp),%ebx 669 movl 4(%esp),%edx 670 movdqa %xmm0,%xmm1 671 movdqu %xmm0,(%ebx,%esi,1) 672 leal 16(%esi),%esi 673 subl $16,%edi 674 jnc L023cbc_enc_loop 675 jmp L024cbc_done 676.align 4,0x90 677L022cbc_dec_loop: 678 movdqu (%esi),%xmm0 679 movdqa %xmm1,16(%esp) 680 movdqa %xmm0,32(%esp) 681 call __vpaes_decrypt_core 682 movl (%esp),%ebx 683 movl 4(%esp),%edx 684 pxor 16(%esp),%xmm0 685 movdqa 32(%esp),%xmm1 686 movdqu %xmm0,(%ebx,%esi,1) 687 leal 16(%esi),%esi 688 subl $16,%edi 689 jnc L022cbc_dec_loop 690L024cbc_done: 691 movl 8(%esp),%ebx 692 movl 48(%esp),%esp 693 movdqu %xmm1,(%ebx) 694L020cbc_abort: 695 popl %edi 696 popl %esi 697 popl %ebx 698 popl %ebp 699 ret 700