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