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