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