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