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