1/* $FreeBSD$ */ 2/* Do not modify. This file is auto-generated from vpaes-x86.pl. */ 3#ifdef PIC 4.text 5.align 64 6.L_vpaes_consts: 7.long 218628480,235210255,168496130,67568393 8.long 252381056,17041926,33884169,51187212 9.long 252645135,252645135,252645135,252645135 10.long 1512730624,3266504856,1377990664,3401244816 11.long 830229760,1275146365,2969422977,3447763452 12.long 3411033600,2979783055,338359620,2782886510 13.long 4209124096,907596821,221174255,1006095553 14.long 191964160,3799684038,3164090317,1589111125 15.long 182528256,1777043520,2877432650,3265356744 16.long 1874708224,3503451415,3305285752,363511674 17.long 1606117888,3487855781,1093350906,2384367825 18.long 197121,67569157,134941193,202313229 19.long 67569157,134941193,202313229,197121 20.long 134941193,202313229,197121,67569157 21.long 202313229,197121,67569157,134941193 22.long 33619971,100992007,168364043,235736079 23.long 235736079,33619971,100992007,168364043 24.long 168364043,235736079,33619971,100992007 25.long 100992007,168364043,235736079,33619971 26.long 50462976,117835012,185207048,252579084 27.long 252314880,51251460,117574920,184942860 28.long 184682752,252054788,50987272,118359308 29.long 118099200,185467140,251790600,50727180 30.long 2946363062,528716217,1300004225,1881839624 31.long 1532713819,1532713819,1532713819,1532713819 32.long 3602276352,4288629033,3737020424,4153884961 33.long 1354558464,32357713,2958822624,3775749553 34.long 1201988352,132424512,1572796698,503232858 35.long 2213177600,1597421020,4103937655,675398315 36.long 2749646592,4273543773,1511898873,121693092 37.long 3040248576,1103263732,2871565598,1608280554 38.long 2236667136,2588920351,482954393,64377734 39.long 3069987328,291237287,2117370568,3650299247 40.long 533321216,3573750986,2572112006,1401264716 41.long 1339849704,2721158661,548607111,3445553514 42.long 2128193280,3054596040,2183486460,1257083700 43.long 655635200,1165381986,3923443150,2344132524 44.long 190078720,256924420,290342170,357187870 45.long 1610966272,2263057382,4103205268,309794674 46.long 2592527872,2233205587,1335446729,3402964816 47.long 3973531904,3225098121,3002836325,1918774430 48.long 3870401024,2102906079,2284471353,4117666579 49.long 617007872,1021508343,366931923,691083277 50.long 2528395776,3491914898,2968704004,1613121270 51.long 3445188352,3247741094,844474987,4093578302 52.long 651481088,1190302358,1689581232,574775300 53.long 4289380608,206939853,2555985458,2489840491 54.long 2130264064,327674451,3566485037,3349835193 55.long 2470714624,316102159,3636825756,3393945945 56.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 57.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 58.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 59.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 60.byte 118,101,114,115,105,116,121,41,0 61.align 64 62.type _vpaes_preheat,@function 63.align 16 64_vpaes_preheat: 65 addl (%esp),%ebp 66 movdqa -48(%ebp),%xmm7 67 movdqa -16(%ebp),%xmm6 68 ret 69.size _vpaes_preheat,.-_vpaes_preheat 70.type _vpaes_encrypt_core,@function 71.align 16 72_vpaes_encrypt_core: 73 movl $16,%ecx 74 movl 240(%edx),%eax 75 movdqa %xmm6,%xmm1 76 movdqa (%ebp),%xmm2 77 pandn %xmm0,%xmm1 78 pand %xmm6,%xmm0 79 movdqu (%edx),%xmm5 80.byte 102,15,56,0,208 81 movdqa 16(%ebp),%xmm0 82 pxor %xmm5,%xmm2 83 psrld $4,%xmm1 84 addl $16,%edx 85.byte 102,15,56,0,193 86 leal 192(%ebp),%ebx 87 pxor %xmm2,%xmm0 88 jmp .L000enc_entry 89.align 16 90.L001enc_loop: 91 movdqa 32(%ebp),%xmm4 92 movdqa 48(%ebp),%xmm0 93.byte 102,15,56,0,226 94.byte 102,15,56,0,195 95 pxor %xmm5,%xmm4 96 movdqa 64(%ebp),%xmm5 97 pxor %xmm4,%xmm0 98 movdqa -64(%ebx,%ecx,1),%xmm1 99.byte 102,15,56,0,234 100 movdqa 80(%ebp),%xmm2 101 movdqa (%ebx,%ecx,1),%xmm4 102.byte 102,15,56,0,211 103 movdqa %xmm0,%xmm3 104 pxor %xmm5,%xmm2 105.byte 102,15,56,0,193 106 addl $16,%edx 107 pxor %xmm2,%xmm0 108.byte 102,15,56,0,220 109 addl $16,%ecx 110 pxor %xmm0,%xmm3 111.byte 102,15,56,0,193 112 andl $48,%ecx 113 subl $1,%eax 114 pxor %xmm3,%xmm0 115.L000enc_entry: 116 movdqa %xmm6,%xmm1 117 movdqa -32(%ebp),%xmm5 118 pandn %xmm0,%xmm1 119 psrld $4,%xmm1 120 pand %xmm6,%xmm0 121.byte 102,15,56,0,232 122 movdqa %xmm7,%xmm3 123 pxor %xmm1,%xmm0 124.byte 102,15,56,0,217 125 movdqa %xmm7,%xmm4 126 pxor %xmm5,%xmm3 127.byte 102,15,56,0,224 128 movdqa %xmm7,%xmm2 129 pxor %xmm5,%xmm4 130.byte 102,15,56,0,211 131 movdqa %xmm7,%xmm3 132 pxor %xmm0,%xmm2 133.byte 102,15,56,0,220 134 movdqu (%edx),%xmm5 135 pxor %xmm1,%xmm3 136 jnz .L001enc_loop 137 movdqa 96(%ebp),%xmm4 138 movdqa 112(%ebp),%xmm0 139.byte 102,15,56,0,226 140 pxor %xmm5,%xmm4 141.byte 102,15,56,0,195 142 movdqa 64(%ebx,%ecx,1),%xmm1 143 pxor %xmm4,%xmm0 144.byte 102,15,56,0,193 145 ret 146.size _vpaes_encrypt_core,.-_vpaes_encrypt_core 147.type _vpaes_decrypt_core,@function 148.align 16 149_vpaes_decrypt_core: 150 leal 608(%ebp),%ebx 151 movl 240(%edx),%eax 152 movdqa %xmm6,%xmm1 153 movdqa -64(%ebx),%xmm2 154 pandn %xmm0,%xmm1 155 movl %eax,%ecx 156 psrld $4,%xmm1 157 movdqu (%edx),%xmm5 158 shll $4,%ecx 159 pand %xmm6,%xmm0 160.byte 102,15,56,0,208 161 movdqa -48(%ebx),%xmm0 162 xorl $48,%ecx 163.byte 102,15,56,0,193 164 andl $48,%ecx 165 pxor %xmm5,%xmm2 166 movdqa 176(%ebp),%xmm5 167 pxor %xmm2,%xmm0 168 addl $16,%edx 169 leal -352(%ebx,%ecx,1),%ecx 170 jmp .L002dec_entry 171.align 16 172.L003dec_loop: 173 movdqa -32(%ebx),%xmm4 174 movdqa -16(%ebx),%xmm1 175.byte 102,15,56,0,226 176.byte 102,15,56,0,203 177 pxor %xmm4,%xmm0 178 movdqa (%ebx),%xmm4 179 pxor %xmm1,%xmm0 180 movdqa 16(%ebx),%xmm1 181.byte 102,15,56,0,226 182.byte 102,15,56,0,197 183.byte 102,15,56,0,203 184 pxor %xmm4,%xmm0 185 movdqa 32(%ebx),%xmm4 186 pxor %xmm1,%xmm0 187 movdqa 48(%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 64(%ebx),%xmm4 193 pxor %xmm1,%xmm0 194 movdqa 80(%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 addl $16,%edx 200.byte 102,15,58,15,237,12 201 pxor %xmm1,%xmm0 202 subl $1,%eax 203.L002dec_entry: 204 movdqa %xmm6,%xmm1 205 movdqa -32(%ebp),%xmm2 206 pandn %xmm0,%xmm1 207 pand %xmm6,%xmm0 208 psrld $4,%xmm1 209.byte 102,15,56,0,208 210 movdqa %xmm7,%xmm3 211 pxor %xmm1,%xmm0 212.byte 102,15,56,0,217 213 movdqa %xmm7,%xmm4 214 pxor %xmm2,%xmm3 215.byte 102,15,56,0,224 216 pxor %xmm2,%xmm4 217 movdqa %xmm7,%xmm2 218.byte 102,15,56,0,211 219 movdqa %xmm7,%xmm3 220 pxor %xmm0,%xmm2 221.byte 102,15,56,0,220 222 movdqu (%edx),%xmm0 223 pxor %xmm1,%xmm3 224 jnz .L003dec_loop 225 movdqa 96(%ebx),%xmm4 226.byte 102,15,56,0,226 227 pxor %xmm0,%xmm4 228 movdqa 112(%ebx),%xmm0 229 movdqa (%ecx),%xmm2 230.byte 102,15,56,0,195 231 pxor %xmm4,%xmm0 232.byte 102,15,56,0,194 233 ret 234.size _vpaes_decrypt_core,.-_vpaes_decrypt_core 235.type _vpaes_schedule_core,@function 236.align 16 237_vpaes_schedule_core: 238 addl (%esp),%ebp 239 movdqu (%esi),%xmm0 240 movdqa 320(%ebp),%xmm2 241 movdqa %xmm0,%xmm3 242 leal (%ebp),%ebx 243 movdqa %xmm2,4(%esp) 244 call _vpaes_schedule_transform 245 movdqa %xmm0,%xmm7 246 testl %edi,%edi 247 jnz .L004schedule_am_decrypting 248 movdqu %xmm0,(%edx) 249 jmp .L005schedule_go 250.L004schedule_am_decrypting: 251 movdqa 256(%ebp,%ecx,1),%xmm1 252.byte 102,15,56,0,217 253 movdqu %xmm3,(%edx) 254 xorl $48,%ecx 255.L005schedule_go: 256 cmpl $192,%eax 257 ja .L006schedule_256 258 je .L007schedule_192 259.L008schedule_128: 260 movl $10,%eax 261.L009loop_schedule_128: 262 call _vpaes_schedule_round 263 decl %eax 264 jz .L010schedule_mangle_last 265 call _vpaes_schedule_mangle 266 jmp .L009loop_schedule_128 267.align 16 268.L007schedule_192: 269 movdqu 8(%esi),%xmm0 270 call _vpaes_schedule_transform 271 movdqa %xmm0,%xmm6 272 pxor %xmm4,%xmm4 273 movhlps %xmm4,%xmm6 274 movl $4,%eax 275.L011loop_schedule_192: 276 call _vpaes_schedule_round 277.byte 102,15,58,15,198,8 278 call _vpaes_schedule_mangle 279 call _vpaes_schedule_192_smear 280 call _vpaes_schedule_mangle 281 call _vpaes_schedule_round 282 decl %eax 283 jz .L010schedule_mangle_last 284 call _vpaes_schedule_mangle 285 call _vpaes_schedule_192_smear 286 jmp .L011loop_schedule_192 287.align 16 288.L006schedule_256: 289 movdqu 16(%esi),%xmm0 290 call _vpaes_schedule_transform 291 movl $7,%eax 292.L012loop_schedule_256: 293 call _vpaes_schedule_mangle 294 movdqa %xmm0,%xmm6 295 call _vpaes_schedule_round 296 decl %eax 297 jz .L010schedule_mangle_last 298 call _vpaes_schedule_mangle 299 pshufd $255,%xmm0,%xmm0 300 movdqa %xmm7,20(%esp) 301 movdqa %xmm6,%xmm7 302 call .L_vpaes_schedule_low_round 303 movdqa 20(%esp),%xmm7 304 jmp .L012loop_schedule_256 305.align 16 306.L010schedule_mangle_last: 307 leal 384(%ebp),%ebx 308 testl %edi,%edi 309 jnz .L013schedule_mangle_last_dec 310 movdqa 256(%ebp,%ecx,1),%xmm1 311.byte 102,15,56,0,193 312 leal 352(%ebp),%ebx 313 addl $32,%edx 314.L013schedule_mangle_last_dec: 315 addl $-16,%edx 316 pxor 336(%ebp),%xmm0 317 call _vpaes_schedule_transform 318 movdqu %xmm0,(%edx) 319 pxor %xmm0,%xmm0 320 pxor %xmm1,%xmm1 321 pxor %xmm2,%xmm2 322 pxor %xmm3,%xmm3 323 pxor %xmm4,%xmm4 324 pxor %xmm5,%xmm5 325 pxor %xmm6,%xmm6 326 pxor %xmm7,%xmm7 327 ret 328.size _vpaes_schedule_core,.-_vpaes_schedule_core 329.type _vpaes_schedule_192_smear,@function 330.align 16 331_vpaes_schedule_192_smear: 332 pshufd $128,%xmm6,%xmm1 333 pshufd $254,%xmm7,%xmm0 334 pxor %xmm1,%xmm6 335 pxor %xmm1,%xmm1 336 pxor %xmm0,%xmm6 337 movdqa %xmm6,%xmm0 338 movhlps %xmm1,%xmm6 339 ret 340.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear 341.type _vpaes_schedule_round,@function 342.align 16 343_vpaes_schedule_round: 344 movdqa 8(%esp),%xmm2 345 pxor %xmm1,%xmm1 346.byte 102,15,58,15,202,15 347.byte 102,15,58,15,210,15 348 pxor %xmm1,%xmm7 349 pshufd $255,%xmm0,%xmm0 350.byte 102,15,58,15,192,1 351 movdqa %xmm2,8(%esp) 352.L_vpaes_schedule_low_round: 353 movdqa %xmm7,%xmm1 354 pslldq $4,%xmm7 355 pxor %xmm1,%xmm7 356 movdqa %xmm7,%xmm1 357 pslldq $8,%xmm7 358 pxor %xmm1,%xmm7 359 pxor 336(%ebp),%xmm7 360 movdqa -16(%ebp),%xmm4 361 movdqa -48(%ebp),%xmm5 362 movdqa %xmm4,%xmm1 363 pandn %xmm0,%xmm1 364 psrld $4,%xmm1 365 pand %xmm4,%xmm0 366 movdqa -32(%ebp),%xmm2 367.byte 102,15,56,0,208 368 pxor %xmm1,%xmm0 369 movdqa %xmm5,%xmm3 370.byte 102,15,56,0,217 371 pxor %xmm2,%xmm3 372 movdqa %xmm5,%xmm4 373.byte 102,15,56,0,224 374 pxor %xmm2,%xmm4 375 movdqa %xmm5,%xmm2 376.byte 102,15,56,0,211 377 pxor %xmm0,%xmm2 378 movdqa %xmm5,%xmm3 379.byte 102,15,56,0,220 380 pxor %xmm1,%xmm3 381 movdqa 32(%ebp),%xmm4 382.byte 102,15,56,0,226 383 movdqa 48(%ebp),%xmm0 384.byte 102,15,56,0,195 385 pxor %xmm4,%xmm0 386 pxor %xmm7,%xmm0 387 movdqa %xmm0,%xmm7 388 ret 389.size _vpaes_schedule_round,.-_vpaes_schedule_round 390.type _vpaes_schedule_transform,@function 391.align 16 392_vpaes_schedule_transform: 393 movdqa -16(%ebp),%xmm2 394 movdqa %xmm2,%xmm1 395 pandn %xmm0,%xmm1 396 psrld $4,%xmm1 397 pand %xmm2,%xmm0 398 movdqa (%ebx),%xmm2 399.byte 102,15,56,0,208 400 movdqa 16(%ebx),%xmm0 401.byte 102,15,56,0,193 402 pxor %xmm2,%xmm0 403 ret 404.size _vpaes_schedule_transform,.-_vpaes_schedule_transform 405.type _vpaes_schedule_mangle,@function 406.align 16 407_vpaes_schedule_mangle: 408 movdqa %xmm0,%xmm4 409 movdqa 128(%ebp),%xmm5 410 testl %edi,%edi 411 jnz .L014schedule_mangle_dec 412 addl $16,%edx 413 pxor 336(%ebp),%xmm4 414.byte 102,15,56,0,229 415 movdqa %xmm4,%xmm3 416.byte 102,15,56,0,229 417 pxor %xmm4,%xmm3 418.byte 102,15,56,0,229 419 pxor %xmm4,%xmm3 420 jmp .L015schedule_mangle_both 421.align 16 422.L014schedule_mangle_dec: 423 movdqa -16(%ebp),%xmm2 424 leal 416(%ebp),%esi 425 movdqa %xmm2,%xmm1 426 pandn %xmm4,%xmm1 427 psrld $4,%xmm1 428 pand %xmm2,%xmm4 429 movdqa (%esi),%xmm2 430.byte 102,15,56,0,212 431 movdqa 16(%esi),%xmm3 432.byte 102,15,56,0,217 433 pxor %xmm2,%xmm3 434.byte 102,15,56,0,221 435 movdqa 32(%esi),%xmm2 436.byte 102,15,56,0,212 437 pxor %xmm3,%xmm2 438 movdqa 48(%esi),%xmm3 439.byte 102,15,56,0,217 440 pxor %xmm2,%xmm3 441.byte 102,15,56,0,221 442 movdqa 64(%esi),%xmm2 443.byte 102,15,56,0,212 444 pxor %xmm3,%xmm2 445 movdqa 80(%esi),%xmm3 446.byte 102,15,56,0,217 447 pxor %xmm2,%xmm3 448.byte 102,15,56,0,221 449 movdqa 96(%esi),%xmm2 450.byte 102,15,56,0,212 451 pxor %xmm3,%xmm2 452 movdqa 112(%esi),%xmm3 453.byte 102,15,56,0,217 454 pxor %xmm2,%xmm3 455 addl $-16,%edx 456.L015schedule_mangle_both: 457 movdqa 256(%ebp,%ecx,1),%xmm1 458.byte 102,15,56,0,217 459 addl $-16,%ecx 460 andl $48,%ecx 461 movdqu %xmm3,(%edx) 462 ret 463.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle 464.globl vpaes_set_encrypt_key 465.type vpaes_set_encrypt_key,@function 466.align 16 467vpaes_set_encrypt_key: 468.L_vpaes_set_encrypt_key_begin: 469 pushl %ebp 470 pushl %ebx 471 pushl %esi 472 pushl %edi 473 movl 20(%esp),%esi 474 leal -56(%esp),%ebx 475 movl 24(%esp),%eax 476 andl $-16,%ebx 477 movl 28(%esp),%edx 478 xchgl %esp,%ebx 479 movl %ebx,48(%esp) 480 movl %eax,%ebx 481 shrl $5,%ebx 482 addl $5,%ebx 483 movl %ebx,240(%edx) 484 movl $48,%ecx 485 movl $0,%edi 486 leal .L_vpaes_consts+0x30-.L016pic_point,%ebp 487 call _vpaes_schedule_core 488.L016pic_point: 489 movl 48(%esp),%esp 490 xorl %eax,%eax 491 popl %edi 492 popl %esi 493 popl %ebx 494 popl %ebp 495 ret 496.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin 497.globl vpaes_set_decrypt_key 498.type vpaes_set_decrypt_key,@function 499.align 16 500vpaes_set_decrypt_key: 501.L_vpaes_set_decrypt_key_begin: 502 pushl %ebp 503 pushl %ebx 504 pushl %esi 505 pushl %edi 506 movl 20(%esp),%esi 507 leal -56(%esp),%ebx 508 movl 24(%esp),%eax 509 andl $-16,%ebx 510 movl 28(%esp),%edx 511 xchgl %esp,%ebx 512 movl %ebx,48(%esp) 513 movl %eax,%ebx 514 shrl $5,%ebx 515 addl $5,%ebx 516 movl %ebx,240(%edx) 517 shll $4,%ebx 518 leal 16(%edx,%ebx,1),%edx 519 movl $1,%edi 520 movl %eax,%ecx 521 shrl $1,%ecx 522 andl $32,%ecx 523 xorl $32,%ecx 524 leal .L_vpaes_consts+0x30-.L017pic_point,%ebp 525 call _vpaes_schedule_core 526.L017pic_point: 527 movl 48(%esp),%esp 528 xorl %eax,%eax 529 popl %edi 530 popl %esi 531 popl %ebx 532 popl %ebp 533 ret 534.size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin 535.globl vpaes_encrypt 536.type vpaes_encrypt,@function 537.align 16 538vpaes_encrypt: 539.L_vpaes_encrypt_begin: 540 pushl %ebp 541 pushl %ebx 542 pushl %esi 543 pushl %edi 544 leal .L_vpaes_consts+0x30-.L018pic_point,%ebp 545 call _vpaes_preheat 546.L018pic_point: 547 movl 20(%esp),%esi 548 leal -56(%esp),%ebx 549 movl 24(%esp),%edi 550 andl $-16,%ebx 551 movl 28(%esp),%edx 552 xchgl %esp,%ebx 553 movl %ebx,48(%esp) 554 movdqu (%esi),%xmm0 555 call _vpaes_encrypt_core 556 movdqu %xmm0,(%edi) 557 movl 48(%esp),%esp 558 popl %edi 559 popl %esi 560 popl %ebx 561 popl %ebp 562 ret 563.size vpaes_encrypt,.-.L_vpaes_encrypt_begin 564.globl vpaes_decrypt 565.type vpaes_decrypt,@function 566.align 16 567vpaes_decrypt: 568.L_vpaes_decrypt_begin: 569 pushl %ebp 570 pushl %ebx 571 pushl %esi 572 pushl %edi 573 leal .L_vpaes_consts+0x30-.L019pic_point,%ebp 574 call _vpaes_preheat 575.L019pic_point: 576 movl 20(%esp),%esi 577 leal -56(%esp),%ebx 578 movl 24(%esp),%edi 579 andl $-16,%ebx 580 movl 28(%esp),%edx 581 xchgl %esp,%ebx 582 movl %ebx,48(%esp) 583 movdqu (%esi),%xmm0 584 call _vpaes_decrypt_core 585 movdqu %xmm0,(%edi) 586 movl 48(%esp),%esp 587 popl %edi 588 popl %esi 589 popl %ebx 590 popl %ebp 591 ret 592.size vpaes_decrypt,.-.L_vpaes_decrypt_begin 593.globl vpaes_cbc_encrypt 594.type vpaes_cbc_encrypt,@function 595.align 16 596vpaes_cbc_encrypt: 597.L_vpaes_cbc_encrypt_begin: 598 pushl %ebp 599 pushl %ebx 600 pushl %esi 601 pushl %edi 602 movl 20(%esp),%esi 603 movl 24(%esp),%edi 604 movl 28(%esp),%eax 605 movl 32(%esp),%edx 606 subl $16,%eax 607 jc .L020cbc_abort 608 leal -56(%esp),%ebx 609 movl 36(%esp),%ebp 610 andl $-16,%ebx 611 movl 40(%esp),%ecx 612 xchgl %esp,%ebx 613 movdqu (%ebp),%xmm1 614 subl %esi,%edi 615 movl %ebx,48(%esp) 616 movl %edi,(%esp) 617 movl %edx,4(%esp) 618 movl %ebp,8(%esp) 619 movl %eax,%edi 620 leal .L_vpaes_consts+0x30-.L021pic_point,%ebp 621 call _vpaes_preheat 622.L021pic_point: 623 cmpl $0,%ecx 624 je .L022cbc_dec_loop 625 jmp .L023cbc_enc_loop 626.align 16 627.L023cbc_enc_loop: 628 movdqu (%esi),%xmm0 629 pxor %xmm1,%xmm0 630 call _vpaes_encrypt_core 631 movl (%esp),%ebx 632 movl 4(%esp),%edx 633 movdqa %xmm0,%xmm1 634 movdqu %xmm0,(%ebx,%esi,1) 635 leal 16(%esi),%esi 636 subl $16,%edi 637 jnc .L023cbc_enc_loop 638 jmp .L024cbc_done 639.align 16 640.L022cbc_dec_loop: 641 movdqu (%esi),%xmm0 642 movdqa %xmm1,16(%esp) 643 movdqa %xmm0,32(%esp) 644 call _vpaes_decrypt_core 645 movl (%esp),%ebx 646 movl 4(%esp),%edx 647 pxor 16(%esp),%xmm0 648 movdqa 32(%esp),%xmm1 649 movdqu %xmm0,(%ebx,%esi,1) 650 leal 16(%esi),%esi 651 subl $16,%edi 652 jnc .L022cbc_dec_loop 653.L024cbc_done: 654 movl 8(%esp),%ebx 655 movl 48(%esp),%esp 656 movdqu %xmm1,(%ebx) 657.L020cbc_abort: 658 popl %edi 659 popl %esi 660 popl %ebx 661 popl %ebp 662 ret 663.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin 664#else 665.text 666.align 64 667.L_vpaes_consts: 668.long 218628480,235210255,168496130,67568393 669.long 252381056,17041926,33884169,51187212 670.long 252645135,252645135,252645135,252645135 671.long 1512730624,3266504856,1377990664,3401244816 672.long 830229760,1275146365,2969422977,3447763452 673.long 3411033600,2979783055,338359620,2782886510 674.long 4209124096,907596821,221174255,1006095553 675.long 191964160,3799684038,3164090317,1589111125 676.long 182528256,1777043520,2877432650,3265356744 677.long 1874708224,3503451415,3305285752,363511674 678.long 1606117888,3487855781,1093350906,2384367825 679.long 197121,67569157,134941193,202313229 680.long 67569157,134941193,202313229,197121 681.long 134941193,202313229,197121,67569157 682.long 202313229,197121,67569157,134941193 683.long 33619971,100992007,168364043,235736079 684.long 235736079,33619971,100992007,168364043 685.long 168364043,235736079,33619971,100992007 686.long 100992007,168364043,235736079,33619971 687.long 50462976,117835012,185207048,252579084 688.long 252314880,51251460,117574920,184942860 689.long 184682752,252054788,50987272,118359308 690.long 118099200,185467140,251790600,50727180 691.long 2946363062,528716217,1300004225,1881839624 692.long 1532713819,1532713819,1532713819,1532713819 693.long 3602276352,4288629033,3737020424,4153884961 694.long 1354558464,32357713,2958822624,3775749553 695.long 1201988352,132424512,1572796698,503232858 696.long 2213177600,1597421020,4103937655,675398315 697.long 2749646592,4273543773,1511898873,121693092 698.long 3040248576,1103263732,2871565598,1608280554 699.long 2236667136,2588920351,482954393,64377734 700.long 3069987328,291237287,2117370568,3650299247 701.long 533321216,3573750986,2572112006,1401264716 702.long 1339849704,2721158661,548607111,3445553514 703.long 2128193280,3054596040,2183486460,1257083700 704.long 655635200,1165381986,3923443150,2344132524 705.long 190078720,256924420,290342170,357187870 706.long 1610966272,2263057382,4103205268,309794674 707.long 2592527872,2233205587,1335446729,3402964816 708.long 3973531904,3225098121,3002836325,1918774430 709.long 3870401024,2102906079,2284471353,4117666579 710.long 617007872,1021508343,366931923,691083277 711.long 2528395776,3491914898,2968704004,1613121270 712.long 3445188352,3247741094,844474987,4093578302 713.long 651481088,1190302358,1689581232,574775300 714.long 4289380608,206939853,2555985458,2489840491 715.long 2130264064,327674451,3566485037,3349835193 716.long 2470714624,316102159,3636825756,3393945945 717.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 718.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 719.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 720.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 721.byte 118,101,114,115,105,116,121,41,0 722.align 64 723.type _vpaes_preheat,@function 724.align 16 725_vpaes_preheat: 726 addl (%esp),%ebp 727 movdqa -48(%ebp),%xmm7 728 movdqa -16(%ebp),%xmm6 729 ret 730.size _vpaes_preheat,.-_vpaes_preheat 731.type _vpaes_encrypt_core,@function 732.align 16 733_vpaes_encrypt_core: 734 movl $16,%ecx 735 movl 240(%edx),%eax 736 movdqa %xmm6,%xmm1 737 movdqa (%ebp),%xmm2 738 pandn %xmm0,%xmm1 739 pand %xmm6,%xmm0 740 movdqu (%edx),%xmm5 741.byte 102,15,56,0,208 742 movdqa 16(%ebp),%xmm0 743 pxor %xmm5,%xmm2 744 psrld $4,%xmm1 745 addl $16,%edx 746.byte 102,15,56,0,193 747 leal 192(%ebp),%ebx 748 pxor %xmm2,%xmm0 749 jmp .L000enc_entry 750.align 16 751.L001enc_loop: 752 movdqa 32(%ebp),%xmm4 753 movdqa 48(%ebp),%xmm0 754.byte 102,15,56,0,226 755.byte 102,15,56,0,195 756 pxor %xmm5,%xmm4 757 movdqa 64(%ebp),%xmm5 758 pxor %xmm4,%xmm0 759 movdqa -64(%ebx,%ecx,1),%xmm1 760.byte 102,15,56,0,234 761 movdqa 80(%ebp),%xmm2 762 movdqa (%ebx,%ecx,1),%xmm4 763.byte 102,15,56,0,211 764 movdqa %xmm0,%xmm3 765 pxor %xmm5,%xmm2 766.byte 102,15,56,0,193 767 addl $16,%edx 768 pxor %xmm2,%xmm0 769.byte 102,15,56,0,220 770 addl $16,%ecx 771 pxor %xmm0,%xmm3 772.byte 102,15,56,0,193 773 andl $48,%ecx 774 subl $1,%eax 775 pxor %xmm3,%xmm0 776.L000enc_entry: 777 movdqa %xmm6,%xmm1 778 movdqa -32(%ebp),%xmm5 779 pandn %xmm0,%xmm1 780 psrld $4,%xmm1 781 pand %xmm6,%xmm0 782.byte 102,15,56,0,232 783 movdqa %xmm7,%xmm3 784 pxor %xmm1,%xmm0 785.byte 102,15,56,0,217 786 movdqa %xmm7,%xmm4 787 pxor %xmm5,%xmm3 788.byte 102,15,56,0,224 789 movdqa %xmm7,%xmm2 790 pxor %xmm5,%xmm4 791.byte 102,15,56,0,211 792 movdqa %xmm7,%xmm3 793 pxor %xmm0,%xmm2 794.byte 102,15,56,0,220 795 movdqu (%edx),%xmm5 796 pxor %xmm1,%xmm3 797 jnz .L001enc_loop 798 movdqa 96(%ebp),%xmm4 799 movdqa 112(%ebp),%xmm0 800.byte 102,15,56,0,226 801 pxor %xmm5,%xmm4 802.byte 102,15,56,0,195 803 movdqa 64(%ebx,%ecx,1),%xmm1 804 pxor %xmm4,%xmm0 805.byte 102,15,56,0,193 806 ret 807.size _vpaes_encrypt_core,.-_vpaes_encrypt_core 808.type _vpaes_decrypt_core,@function 809.align 16 810_vpaes_decrypt_core: 811 leal 608(%ebp),%ebx 812 movl 240(%edx),%eax 813 movdqa %xmm6,%xmm1 814 movdqa -64(%ebx),%xmm2 815 pandn %xmm0,%xmm1 816 movl %eax,%ecx 817 psrld $4,%xmm1 818 movdqu (%edx),%xmm5 819 shll $4,%ecx 820 pand %xmm6,%xmm0 821.byte 102,15,56,0,208 822 movdqa -48(%ebx),%xmm0 823 xorl $48,%ecx 824.byte 102,15,56,0,193 825 andl $48,%ecx 826 pxor %xmm5,%xmm2 827 movdqa 176(%ebp),%xmm5 828 pxor %xmm2,%xmm0 829 addl $16,%edx 830 leal -352(%ebx,%ecx,1),%ecx 831 jmp .L002dec_entry 832.align 16 833.L003dec_loop: 834 movdqa -32(%ebx),%xmm4 835 movdqa -16(%ebx),%xmm1 836.byte 102,15,56,0,226 837.byte 102,15,56,0,203 838 pxor %xmm4,%xmm0 839 movdqa (%ebx),%xmm4 840 pxor %xmm1,%xmm0 841 movdqa 16(%ebx),%xmm1 842.byte 102,15,56,0,226 843.byte 102,15,56,0,197 844.byte 102,15,56,0,203 845 pxor %xmm4,%xmm0 846 movdqa 32(%ebx),%xmm4 847 pxor %xmm1,%xmm0 848 movdqa 48(%ebx),%xmm1 849.byte 102,15,56,0,226 850.byte 102,15,56,0,197 851.byte 102,15,56,0,203 852 pxor %xmm4,%xmm0 853 movdqa 64(%ebx),%xmm4 854 pxor %xmm1,%xmm0 855 movdqa 80(%ebx),%xmm1 856.byte 102,15,56,0,226 857.byte 102,15,56,0,197 858.byte 102,15,56,0,203 859 pxor %xmm4,%xmm0 860 addl $16,%edx 861.byte 102,15,58,15,237,12 862 pxor %xmm1,%xmm0 863 subl $1,%eax 864.L002dec_entry: 865 movdqa %xmm6,%xmm1 866 movdqa -32(%ebp),%xmm2 867 pandn %xmm0,%xmm1 868 pand %xmm6,%xmm0 869 psrld $4,%xmm1 870.byte 102,15,56,0,208 871 movdqa %xmm7,%xmm3 872 pxor %xmm1,%xmm0 873.byte 102,15,56,0,217 874 movdqa %xmm7,%xmm4 875 pxor %xmm2,%xmm3 876.byte 102,15,56,0,224 877 pxor %xmm2,%xmm4 878 movdqa %xmm7,%xmm2 879.byte 102,15,56,0,211 880 movdqa %xmm7,%xmm3 881 pxor %xmm0,%xmm2 882.byte 102,15,56,0,220 883 movdqu (%edx),%xmm0 884 pxor %xmm1,%xmm3 885 jnz .L003dec_loop 886 movdqa 96(%ebx),%xmm4 887.byte 102,15,56,0,226 888 pxor %xmm0,%xmm4 889 movdqa 112(%ebx),%xmm0 890 movdqa (%ecx),%xmm2 891.byte 102,15,56,0,195 892 pxor %xmm4,%xmm0 893.byte 102,15,56,0,194 894 ret 895.size _vpaes_decrypt_core,.-_vpaes_decrypt_core 896.type _vpaes_schedule_core,@function 897.align 16 898_vpaes_schedule_core: 899 addl (%esp),%ebp 900 movdqu (%esi),%xmm0 901 movdqa 320(%ebp),%xmm2 902 movdqa %xmm0,%xmm3 903 leal (%ebp),%ebx 904 movdqa %xmm2,4(%esp) 905 call _vpaes_schedule_transform 906 movdqa %xmm0,%xmm7 907 testl %edi,%edi 908 jnz .L004schedule_am_decrypting 909 movdqu %xmm0,(%edx) 910 jmp .L005schedule_go 911.L004schedule_am_decrypting: 912 movdqa 256(%ebp,%ecx,1),%xmm1 913.byte 102,15,56,0,217 914 movdqu %xmm3,(%edx) 915 xorl $48,%ecx 916.L005schedule_go: 917 cmpl $192,%eax 918 ja .L006schedule_256 919 je .L007schedule_192 920.L008schedule_128: 921 movl $10,%eax 922.L009loop_schedule_128: 923 call _vpaes_schedule_round 924 decl %eax 925 jz .L010schedule_mangle_last 926 call _vpaes_schedule_mangle 927 jmp .L009loop_schedule_128 928.align 16 929.L007schedule_192: 930 movdqu 8(%esi),%xmm0 931 call _vpaes_schedule_transform 932 movdqa %xmm0,%xmm6 933 pxor %xmm4,%xmm4 934 movhlps %xmm4,%xmm6 935 movl $4,%eax 936.L011loop_schedule_192: 937 call _vpaes_schedule_round 938.byte 102,15,58,15,198,8 939 call _vpaes_schedule_mangle 940 call _vpaes_schedule_192_smear 941 call _vpaes_schedule_mangle 942 call _vpaes_schedule_round 943 decl %eax 944 jz .L010schedule_mangle_last 945 call _vpaes_schedule_mangle 946 call _vpaes_schedule_192_smear 947 jmp .L011loop_schedule_192 948.align 16 949.L006schedule_256: 950 movdqu 16(%esi),%xmm0 951 call _vpaes_schedule_transform 952 movl $7,%eax 953.L012loop_schedule_256: 954 call _vpaes_schedule_mangle 955 movdqa %xmm0,%xmm6 956 call _vpaes_schedule_round 957 decl %eax 958 jz .L010schedule_mangle_last 959 call _vpaes_schedule_mangle 960 pshufd $255,%xmm0,%xmm0 961 movdqa %xmm7,20(%esp) 962 movdqa %xmm6,%xmm7 963 call .L_vpaes_schedule_low_round 964 movdqa 20(%esp),%xmm7 965 jmp .L012loop_schedule_256 966.align 16 967.L010schedule_mangle_last: 968 leal 384(%ebp),%ebx 969 testl %edi,%edi 970 jnz .L013schedule_mangle_last_dec 971 movdqa 256(%ebp,%ecx,1),%xmm1 972.byte 102,15,56,0,193 973 leal 352(%ebp),%ebx 974 addl $32,%edx 975.L013schedule_mangle_last_dec: 976 addl $-16,%edx 977 pxor 336(%ebp),%xmm0 978 call _vpaes_schedule_transform 979 movdqu %xmm0,(%edx) 980 pxor %xmm0,%xmm0 981 pxor %xmm1,%xmm1 982 pxor %xmm2,%xmm2 983 pxor %xmm3,%xmm3 984 pxor %xmm4,%xmm4 985 pxor %xmm5,%xmm5 986 pxor %xmm6,%xmm6 987 pxor %xmm7,%xmm7 988 ret 989.size _vpaes_schedule_core,.-_vpaes_schedule_core 990.type _vpaes_schedule_192_smear,@function 991.align 16 992_vpaes_schedule_192_smear: 993 pshufd $128,%xmm6,%xmm1 994 pshufd $254,%xmm7,%xmm0 995 pxor %xmm1,%xmm6 996 pxor %xmm1,%xmm1 997 pxor %xmm0,%xmm6 998 movdqa %xmm6,%xmm0 999 movhlps %xmm1,%xmm6 1000 ret 1001.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear 1002.type _vpaes_schedule_round,@function 1003.align 16 1004_vpaes_schedule_round: 1005 movdqa 8(%esp),%xmm2 1006 pxor %xmm1,%xmm1 1007.byte 102,15,58,15,202,15 1008.byte 102,15,58,15,210,15 1009 pxor %xmm1,%xmm7 1010 pshufd $255,%xmm0,%xmm0 1011.byte 102,15,58,15,192,1 1012 movdqa %xmm2,8(%esp) 1013.L_vpaes_schedule_low_round: 1014 movdqa %xmm7,%xmm1 1015 pslldq $4,%xmm7 1016 pxor %xmm1,%xmm7 1017 movdqa %xmm7,%xmm1 1018 pslldq $8,%xmm7 1019 pxor %xmm1,%xmm7 1020 pxor 336(%ebp),%xmm7 1021 movdqa -16(%ebp),%xmm4 1022 movdqa -48(%ebp),%xmm5 1023 movdqa %xmm4,%xmm1 1024 pandn %xmm0,%xmm1 1025 psrld $4,%xmm1 1026 pand %xmm4,%xmm0 1027 movdqa -32(%ebp),%xmm2 1028.byte 102,15,56,0,208 1029 pxor %xmm1,%xmm0 1030 movdqa %xmm5,%xmm3 1031.byte 102,15,56,0,217 1032 pxor %xmm2,%xmm3 1033 movdqa %xmm5,%xmm4 1034.byte 102,15,56,0,224 1035 pxor %xmm2,%xmm4 1036 movdqa %xmm5,%xmm2 1037.byte 102,15,56,0,211 1038 pxor %xmm0,%xmm2 1039 movdqa %xmm5,%xmm3 1040.byte 102,15,56,0,220 1041 pxor %xmm1,%xmm3 1042 movdqa 32(%ebp),%xmm4 1043.byte 102,15,56,0,226 1044 movdqa 48(%ebp),%xmm0 1045.byte 102,15,56,0,195 1046 pxor %xmm4,%xmm0 1047 pxor %xmm7,%xmm0 1048 movdqa %xmm0,%xmm7 1049 ret 1050.size _vpaes_schedule_round,.-_vpaes_schedule_round 1051.type _vpaes_schedule_transform,@function 1052.align 16 1053_vpaes_schedule_transform: 1054 movdqa -16(%ebp),%xmm2 1055 movdqa %xmm2,%xmm1 1056 pandn %xmm0,%xmm1 1057 psrld $4,%xmm1 1058 pand %xmm2,%xmm0 1059 movdqa (%ebx),%xmm2 1060.byte 102,15,56,0,208 1061 movdqa 16(%ebx),%xmm0 1062.byte 102,15,56,0,193 1063 pxor %xmm2,%xmm0 1064 ret 1065.size _vpaes_schedule_transform,.-_vpaes_schedule_transform 1066.type _vpaes_schedule_mangle,@function 1067.align 16 1068_vpaes_schedule_mangle: 1069 movdqa %xmm0,%xmm4 1070 movdqa 128(%ebp),%xmm5 1071 testl %edi,%edi 1072 jnz .L014schedule_mangle_dec 1073 addl $16,%edx 1074 pxor 336(%ebp),%xmm4 1075.byte 102,15,56,0,229 1076 movdqa %xmm4,%xmm3 1077.byte 102,15,56,0,229 1078 pxor %xmm4,%xmm3 1079.byte 102,15,56,0,229 1080 pxor %xmm4,%xmm3 1081 jmp .L015schedule_mangle_both 1082.align 16 1083.L014schedule_mangle_dec: 1084 movdqa -16(%ebp),%xmm2 1085 leal 416(%ebp),%esi 1086 movdqa %xmm2,%xmm1 1087 pandn %xmm4,%xmm1 1088 psrld $4,%xmm1 1089 pand %xmm2,%xmm4 1090 movdqa (%esi),%xmm2 1091.byte 102,15,56,0,212 1092 movdqa 16(%esi),%xmm3 1093.byte 102,15,56,0,217 1094 pxor %xmm2,%xmm3 1095.byte 102,15,56,0,221 1096 movdqa 32(%esi),%xmm2 1097.byte 102,15,56,0,212 1098 pxor %xmm3,%xmm2 1099 movdqa 48(%esi),%xmm3 1100.byte 102,15,56,0,217 1101 pxor %xmm2,%xmm3 1102.byte 102,15,56,0,221 1103 movdqa 64(%esi),%xmm2 1104.byte 102,15,56,0,212 1105 pxor %xmm3,%xmm2 1106 movdqa 80(%esi),%xmm3 1107.byte 102,15,56,0,217 1108 pxor %xmm2,%xmm3 1109.byte 102,15,56,0,221 1110 movdqa 96(%esi),%xmm2 1111.byte 102,15,56,0,212 1112 pxor %xmm3,%xmm2 1113 movdqa 112(%esi),%xmm3 1114.byte 102,15,56,0,217 1115 pxor %xmm2,%xmm3 1116 addl $-16,%edx 1117.L015schedule_mangle_both: 1118 movdqa 256(%ebp,%ecx,1),%xmm1 1119.byte 102,15,56,0,217 1120 addl $-16,%ecx 1121 andl $48,%ecx 1122 movdqu %xmm3,(%edx) 1123 ret 1124.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle 1125.globl vpaes_set_encrypt_key 1126.type vpaes_set_encrypt_key,@function 1127.align 16 1128vpaes_set_encrypt_key: 1129.L_vpaes_set_encrypt_key_begin: 1130 pushl %ebp 1131 pushl %ebx 1132 pushl %esi 1133 pushl %edi 1134 movl 20(%esp),%esi 1135 leal -56(%esp),%ebx 1136 movl 24(%esp),%eax 1137 andl $-16,%ebx 1138 movl 28(%esp),%edx 1139 xchgl %esp,%ebx 1140 movl %ebx,48(%esp) 1141 movl %eax,%ebx 1142 shrl $5,%ebx 1143 addl $5,%ebx 1144 movl %ebx,240(%edx) 1145 movl $48,%ecx 1146 movl $0,%edi 1147 leal .L_vpaes_consts+0x30-.L016pic_point,%ebp 1148 call _vpaes_schedule_core 1149.L016pic_point: 1150 movl 48(%esp),%esp 1151 xorl %eax,%eax 1152 popl %edi 1153 popl %esi 1154 popl %ebx 1155 popl %ebp 1156 ret 1157.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin 1158.globl vpaes_set_decrypt_key 1159.type vpaes_set_decrypt_key,@function 1160.align 16 1161vpaes_set_decrypt_key: 1162.L_vpaes_set_decrypt_key_begin: 1163 pushl %ebp 1164 pushl %ebx 1165 pushl %esi 1166 pushl %edi 1167 movl 20(%esp),%esi 1168 leal -56(%esp),%ebx 1169 movl 24(%esp),%eax 1170 andl $-16,%ebx 1171 movl 28(%esp),%edx 1172 xchgl %esp,%ebx 1173 movl %ebx,48(%esp) 1174 movl %eax,%ebx 1175 shrl $5,%ebx 1176 addl $5,%ebx 1177 movl %ebx,240(%edx) 1178 shll $4,%ebx 1179 leal 16(%edx,%ebx,1),%edx 1180 movl $1,%edi 1181 movl %eax,%ecx 1182 shrl $1,%ecx 1183 andl $32,%ecx 1184 xorl $32,%ecx 1185 leal .L_vpaes_consts+0x30-.L017pic_point,%ebp 1186 call _vpaes_schedule_core 1187.L017pic_point: 1188 movl 48(%esp),%esp 1189 xorl %eax,%eax 1190 popl %edi 1191 popl %esi 1192 popl %ebx 1193 popl %ebp 1194 ret 1195.size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin 1196.globl vpaes_encrypt 1197.type vpaes_encrypt,@function 1198.align 16 1199vpaes_encrypt: 1200.L_vpaes_encrypt_begin: 1201 pushl %ebp 1202 pushl %ebx 1203 pushl %esi 1204 pushl %edi 1205 leal .L_vpaes_consts+0x30-.L018pic_point,%ebp 1206 call _vpaes_preheat 1207.L018pic_point: 1208 movl 20(%esp),%esi 1209 leal -56(%esp),%ebx 1210 movl 24(%esp),%edi 1211 andl $-16,%ebx 1212 movl 28(%esp),%edx 1213 xchgl %esp,%ebx 1214 movl %ebx,48(%esp) 1215 movdqu (%esi),%xmm0 1216 call _vpaes_encrypt_core 1217 movdqu %xmm0,(%edi) 1218 movl 48(%esp),%esp 1219 popl %edi 1220 popl %esi 1221 popl %ebx 1222 popl %ebp 1223 ret 1224.size vpaes_encrypt,.-.L_vpaes_encrypt_begin 1225.globl vpaes_decrypt 1226.type vpaes_decrypt,@function 1227.align 16 1228vpaes_decrypt: 1229.L_vpaes_decrypt_begin: 1230 pushl %ebp 1231 pushl %ebx 1232 pushl %esi 1233 pushl %edi 1234 leal .L_vpaes_consts+0x30-.L019pic_point,%ebp 1235 call _vpaes_preheat 1236.L019pic_point: 1237 movl 20(%esp),%esi 1238 leal -56(%esp),%ebx 1239 movl 24(%esp),%edi 1240 andl $-16,%ebx 1241 movl 28(%esp),%edx 1242 xchgl %esp,%ebx 1243 movl %ebx,48(%esp) 1244 movdqu (%esi),%xmm0 1245 call _vpaes_decrypt_core 1246 movdqu %xmm0,(%edi) 1247 movl 48(%esp),%esp 1248 popl %edi 1249 popl %esi 1250 popl %ebx 1251 popl %ebp 1252 ret 1253.size vpaes_decrypt,.-.L_vpaes_decrypt_begin 1254.globl vpaes_cbc_encrypt 1255.type vpaes_cbc_encrypt,@function 1256.align 16 1257vpaes_cbc_encrypt: 1258.L_vpaes_cbc_encrypt_begin: 1259 pushl %ebp 1260 pushl %ebx 1261 pushl %esi 1262 pushl %edi 1263 movl 20(%esp),%esi 1264 movl 24(%esp),%edi 1265 movl 28(%esp),%eax 1266 movl 32(%esp),%edx 1267 subl $16,%eax 1268 jc .L020cbc_abort 1269 leal -56(%esp),%ebx 1270 movl 36(%esp),%ebp 1271 andl $-16,%ebx 1272 movl 40(%esp),%ecx 1273 xchgl %esp,%ebx 1274 movdqu (%ebp),%xmm1 1275 subl %esi,%edi 1276 movl %ebx,48(%esp) 1277 movl %edi,(%esp) 1278 movl %edx,4(%esp) 1279 movl %ebp,8(%esp) 1280 movl %eax,%edi 1281 leal .L_vpaes_consts+0x30-.L021pic_point,%ebp 1282 call _vpaes_preheat 1283.L021pic_point: 1284 cmpl $0,%ecx 1285 je .L022cbc_dec_loop 1286 jmp .L023cbc_enc_loop 1287.align 16 1288.L023cbc_enc_loop: 1289 movdqu (%esi),%xmm0 1290 pxor %xmm1,%xmm0 1291 call _vpaes_encrypt_core 1292 movl (%esp),%ebx 1293 movl 4(%esp),%edx 1294 movdqa %xmm0,%xmm1 1295 movdqu %xmm0,(%ebx,%esi,1) 1296 leal 16(%esi),%esi 1297 subl $16,%edi 1298 jnc .L023cbc_enc_loop 1299 jmp .L024cbc_done 1300.align 16 1301.L022cbc_dec_loop: 1302 movdqu (%esi),%xmm0 1303 movdqa %xmm1,16(%esp) 1304 movdqa %xmm0,32(%esp) 1305 call _vpaes_decrypt_core 1306 movl (%esp),%ebx 1307 movl 4(%esp),%edx 1308 pxor 16(%esp),%xmm0 1309 movdqa 32(%esp),%xmm1 1310 movdqu %xmm0,(%ebx,%esi,1) 1311 leal 16(%esi),%esi 1312 subl $16,%edi 1313 jnc .L022cbc_dec_loop 1314.L024cbc_done: 1315 movl 8(%esp),%ebx 1316 movl 48(%esp),%esp 1317 movdqu %xmm1,(%ebx) 1318.L020cbc_abort: 1319 popl %edi 1320 popl %esi 1321 popl %ebx 1322 popl %ebp 1323 ret 1324.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin 1325#endif 1326