10Sstevel@tonic-gate # $FreeBSD: releng/10.3/secure/lib/libcrypto/i386/vpaes-x86.s 238405 2012-07-12 19:30:53Z jkim $ 20Sstevel@tonic-gate.file "vpaes-x86.s" 30Sstevel@tonic-gate.text 40Sstevel@tonic-gate.align 64 53914Spm145316.L_vpaes_consts: 63914Spm145316.long 218628480,235210255,168496130,67568393 70Sstevel@tonic-gate.long 252381056,17041926,33884169,51187212 80Sstevel@tonic-gate.long 252645135,252645135,252645135,252645135 90Sstevel@tonic-gate.long 1512730624,3266504856,1377990664,3401244816 100Sstevel@tonic-gate.long 830229760,1275146365,2969422977,3447763452 110Sstevel@tonic-gate.long 3411033600,2979783055,338359620,2782886510 120Sstevel@tonic-gate.long 4209124096,907596821,221174255,1006095553 130Sstevel@tonic-gate.long 191964160,3799684038,3164090317,1589111125 140Sstevel@tonic-gate.long 182528256,1777043520,2877432650,3265356744 150Sstevel@tonic-gate.long 1874708224,3503451415,3305285752,363511674 160Sstevel@tonic-gate.long 1606117888,3487855781,1093350906,2384367825 170Sstevel@tonic-gate.long 197121,67569157,134941193,202313229 180Sstevel@tonic-gate.long 67569157,134941193,202313229,197121 190Sstevel@tonic-gate.long 134941193,202313229,197121,67569157 200Sstevel@tonic-gate.long 202313229,197121,67569157,134941193 210Sstevel@tonic-gate.long 33619971,100992007,168364043,235736079 2212230SFrank.Rival@oracle.com.long 235736079,33619971,100992007,168364043 230Sstevel@tonic-gate.long 168364043,235736079,33619971,100992007 240Sstevel@tonic-gate.long 100992007,168364043,235736079,33619971 250Sstevel@tonic-gate.long 50462976,117835012,185207048,252579084 260Sstevel@tonic-gate.long 252314880,51251460,117574920,184942860 270Sstevel@tonic-gate.long 184682752,252054788,50987272,118359308 280Sstevel@tonic-gate.long 118099200,185467140,251790600,50727180 290Sstevel@tonic-gate.long 2946363062,528716217,1300004225,1881839624 300Sstevel@tonic-gate.long 1532713819,1532713819,1532713819,1532713819 310Sstevel@tonic-gate.long 3602276352,4288629033,3737020424,4153884961 320Sstevel@tonic-gate.long 1354558464,32357713,2958822624,3775749553 330Sstevel@tonic-gate.long 1201988352,132424512,1572796698,503232858 340Sstevel@tonic-gate.long 2213177600,1597421020,4103937655,675398315 350Sstevel@tonic-gate.long 2749646592,4273543773,1511898873,121693092 360Sstevel@tonic-gate.long 3040248576,1103263732,2871565598,1608280554 370Sstevel@tonic-gate.long 2236667136,2588920351,482954393,64377734 380Sstevel@tonic-gate.long 3069987328,291237287,2117370568,3650299247 390Sstevel@tonic-gate.long 533321216,3573750986,2572112006,1401264716 400Sstevel@tonic-gate.long 1339849704,2721158661,548607111,3445553514 410Sstevel@tonic-gate.long 2128193280,3054596040,2183486460,1257083700 420Sstevel@tonic-gate.long 655635200,1165381986,3923443150,2344132524 430Sstevel@tonic-gate.long 190078720,256924420,290342170,357187870 440Sstevel@tonic-gate.long 1610966272,2263057382,4103205268,309794674 450Sstevel@tonic-gate.long 2592527872,2233205587,1335446729,3402964816 460Sstevel@tonic-gate.long 3973531904,3225098121,3002836325,1918774430 470Sstevel@tonic-gate.long 3870401024,2102906079,2284471353,4117666579 480Sstevel@tonic-gate.long 617007872,1021508343,366931923,691083277 490Sstevel@tonic-gate.long 2528395776,3491914898,2968704004,1613121270 500Sstevel@tonic-gate.long 3445188352,3247741094,844474987,4093578302 510Sstevel@tonic-gate.long 651481088,1190302358,1689581232,574775300 520Sstevel@tonic-gate.long 4289380608,206939853,2555985458,2489840491 530Sstevel@tonic-gate.long 2130264064,327674451,3566485037,3349835193 540Sstevel@tonic-gate.long 2470714624,316102159,3636825756,3393945945 550Sstevel@tonic-gate.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 560Sstevel@tonic-gate.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 570Sstevel@tonic-gate.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 580Sstevel@tonic-gate.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 590Sstevel@tonic-gate.byte 118,101,114,115,105,116,121,41,0 600Sstevel@tonic-gate.align 64 610Sstevel@tonic-gate.type _vpaes_preheat,@function 620Sstevel@tonic-gate.align 16 630Sstevel@tonic-gate_vpaes_preheat: 640Sstevel@tonic-gate addl (%esp),%ebp 650Sstevel@tonic-gate movdqa -48(%ebp),%xmm7 660Sstevel@tonic-gate movdqa -16(%ebp),%xmm6 670Sstevel@tonic-gate ret 680Sstevel@tonic-gate.size _vpaes_preheat,.-_vpaes_preheat 690Sstevel@tonic-gate.type _vpaes_encrypt_core,@function 700Sstevel@tonic-gate.align 16 710Sstevel@tonic-gate_vpaes_encrypt_core: 720Sstevel@tonic-gate movl $16,%ecx 7312230SFrank.Rival@oracle.com movl 240(%edx),%eax 7412230SFrank.Rival@oracle.com movdqa %xmm6,%xmm1 7512230SFrank.Rival@oracle.com movdqa (%ebp),%xmm2 7612230SFrank.Rival@oracle.com pandn %xmm0,%xmm1 7712230SFrank.Rival@oracle.com movdqu (%edx),%xmm5 7812230SFrank.Rival@oracle.com psrld $4,%xmm1 7912230SFrank.Rival@oracle.com pand %xmm6,%xmm0 8012230SFrank.Rival@oracle.com.byte 102,15,56,0,208 8112230SFrank.Rival@oracle.com movdqa 16(%ebp),%xmm0 8212230SFrank.Rival@oracle.com.byte 102,15,56,0,193 8312230SFrank.Rival@oracle.com pxor %xmm5,%xmm2 8412230SFrank.Rival@oracle.com pxor %xmm2,%xmm0 850Sstevel@tonic-gate addl $16,%edx 869160SSherry.Moore@Sun.COM leal 192(%ebp),%ebx 870Sstevel@tonic-gate jmp .L000enc_entry 880Sstevel@tonic-gate.align 16 890Sstevel@tonic-gate.L001enc_loop: 900Sstevel@tonic-gate movdqa 32(%ebp),%xmm4 910Sstevel@tonic-gate.byte 102,15,56,0,226 920Sstevel@tonic-gate pxor %xmm5,%xmm4 936712Stomee movdqa 48(%ebp),%xmm0 946712Stomee.byte 102,15,56,0,195 955834Spt157919 pxor %xmm4,%xmm0 965834Spt157919 movdqa 64(%ebp),%xmm5 975834Spt157919.byte 102,15,56,0,234 985834Spt157919 movdqa -64(%ebx,%ecx,1),%xmm1 995834Spt157919 movdqa 80(%ebp),%xmm2 1005834Spt157919.byte 102,15,56,0,211 1015834Spt157919 pxor %xmm5,%xmm2 1025834Spt157919 movdqa (%ebx,%ecx,1),%xmm4 1035834Spt157919 movdqa %xmm0,%xmm3 1045834Spt157919.byte 102,15,56,0,193 1050Sstevel@tonic-gate addl $16,%edx 1066138Ssvemuri pxor %xmm2,%xmm0 1076138Ssvemuri.byte 102,15,56,0,220 1086138Ssvemuri addl $16,%ecx 1090Sstevel@tonic-gate pxor %xmm0,%xmm3 1100Sstevel@tonic-gate.byte 102,15,56,0,193 1110Sstevel@tonic-gate andl $48,%ecx 1120Sstevel@tonic-gate pxor %xmm3,%xmm0 1130Sstevel@tonic-gate subl $1,%eax 1140Sstevel@tonic-gate.L000enc_entry: 1150Sstevel@tonic-gate movdqa %xmm6,%xmm1 1160Sstevel@tonic-gate pandn %xmm0,%xmm1 1170Sstevel@tonic-gate psrld $4,%xmm1 118 pand %xmm6,%xmm0 119 movdqa -32(%ebp),%xmm5 120.byte 102,15,56,0,232 121 pxor %xmm1,%xmm0 122 movdqa %xmm7,%xmm3 123.byte 102,15,56,0,217 124 pxor %xmm5,%xmm3 125 movdqa %xmm7,%xmm4 126.byte 102,15,56,0,224 127 pxor %xmm5,%xmm4 128 movdqa %xmm7,%xmm2 129.byte 102,15,56,0,211 130 pxor %xmm0,%xmm2 131 movdqa %xmm7,%xmm3 132 movdqu (%edx),%xmm5 133.byte 102,15,56,0,220 134 pxor %xmm1,%xmm3 135 jnz .L001enc_loop 136 movdqa 96(%ebp),%xmm4 137 movdqa 112(%ebp),%xmm0 138.byte 102,15,56,0,226 139 pxor %xmm5,%xmm4 140.byte 102,15,56,0,195 141 movdqa 64(%ebx,%ecx,1),%xmm1 142 pxor %xmm4,%xmm0 143.byte 102,15,56,0,193 144 ret 145.size _vpaes_encrypt_core,.-_vpaes_encrypt_core 146.type _vpaes_decrypt_core,@function 147.align 16 148_vpaes_decrypt_core: 149 movl 240(%edx),%eax 150 leal 608(%ebp),%ebx 151 movdqa %xmm6,%xmm1 152 movdqa -64(%ebx),%xmm2 153 pandn %xmm0,%xmm1 154 movl %eax,%ecx 155 psrld $4,%xmm1 156 movdqu (%edx),%xmm5 157 shll $4,%ecx 158 pand %xmm6,%xmm0 159.byte 102,15,56,0,208 160 movdqa -48(%ebx),%xmm0 161 xorl $48,%ecx 162.byte 102,15,56,0,193 163 andl $48,%ecx 164 pxor %xmm5,%xmm2 165 movdqa 176(%ebp),%xmm5 166 pxor %xmm2,%xmm0 167 addl $16,%edx 168 leal -352(%ebx,%ecx,1),%ecx 169 jmp .L002dec_entry 170.align 16 171.L003dec_loop: 172 movdqa -32(%ebx),%xmm4 173.byte 102,15,56,0,226 174 pxor %xmm0,%xmm4 175 movdqa -16(%ebx),%xmm0 176.byte 102,15,56,0,195 177 pxor %xmm4,%xmm0 178 addl $16,%edx 179.byte 102,15,56,0,197 180 movdqa (%ebx),%xmm4 181.byte 102,15,56,0,226 182 pxor %xmm0,%xmm4 183 movdqa 16(%ebx),%xmm0 184.byte 102,15,56,0,195 185 pxor %xmm4,%xmm0 186 subl $1,%eax 187.byte 102,15,56,0,197 188 movdqa 32(%ebx),%xmm4 189.byte 102,15,56,0,226 190 pxor %xmm0,%xmm4 191 movdqa 48(%ebx),%xmm0 192.byte 102,15,56,0,195 193 pxor %xmm4,%xmm0 194.byte 102,15,56,0,197 195 movdqa 64(%ebx),%xmm4 196.byte 102,15,56,0,226 197 pxor %xmm0,%xmm4 198 movdqa 80(%ebx),%xmm0 199.byte 102,15,56,0,195 200 pxor %xmm4,%xmm0 201.byte 102,15,58,15,237,12 202.L002dec_entry: 203 movdqa %xmm6,%xmm1 204 pandn %xmm0,%xmm1 205 psrld $4,%xmm1 206 pand %xmm6,%xmm0 207 movdqa -32(%ebp),%xmm2 208.byte 102,15,56,0,208 209 pxor %xmm1,%xmm0 210 movdqa %xmm7,%xmm3 211.byte 102,15,56,0,217 212 pxor %xmm2,%xmm3 213 movdqa %xmm7,%xmm4 214.byte 102,15,56,0,224 215 pxor %xmm2,%xmm4 216 movdqa %xmm7,%xmm2 217.byte 102,15,56,0,211 218 pxor %xmm0,%xmm2 219 movdqa %xmm7,%xmm3 220.byte 102,15,56,0,220 221 pxor %xmm1,%xmm3 222 movdqu (%edx),%xmm0 223 jnz .L003dec_loop 224 movdqa 96(%ebx),%xmm4 225.byte 102,15,56,0,226 226 pxor %xmm0,%xmm4 227 movdqa 112(%ebx),%xmm0 228 movdqa (%ecx),%xmm2 229.byte 102,15,56,0,195 230 pxor %xmm4,%xmm0 231.byte 102,15,56,0,194 232 ret 233.size _vpaes_decrypt_core,.-_vpaes_decrypt_core 234.type _vpaes_schedule_core,@function 235.align 16 236_vpaes_schedule_core: 237 addl (%esp),%ebp 238 movdqu (%esi),%xmm0 239 movdqa 320(%ebp),%xmm2 240 movdqa %xmm0,%xmm3 241 leal (%ebp),%ebx 242 movdqa %xmm2,4(%esp) 243 call _vpaes_schedule_transform 244 movdqa %xmm0,%xmm7 245 testl %edi,%edi 246 jnz .L004schedule_am_decrypting 247 movdqu %xmm0,(%edx) 248 jmp .L005schedule_go 249.L004schedule_am_decrypting: 250 movdqa 256(%ebp,%ecx,1),%xmm1 251.byte 102,15,56,0,217 252 movdqu %xmm3,(%edx) 253 xorl $48,%ecx 254.L005schedule_go: 255 cmpl $192,%eax 256 ja .L006schedule_256 257 je .L007schedule_192 258.L008schedule_128: 259 movl $10,%eax 260.L009loop_schedule_128: 261 call _vpaes_schedule_round 262 decl %eax 263 jz .L010schedule_mangle_last 264 call _vpaes_schedule_mangle 265 jmp .L009loop_schedule_128 266.align 16 267.L007schedule_192: 268 movdqu 8(%esi),%xmm0 269 call _vpaes_schedule_transform 270 movdqa %xmm0,%xmm6 271 pxor %xmm4,%xmm4 272 movhlps %xmm4,%xmm6 273 movl $4,%eax 274.L011loop_schedule_192: 275 call _vpaes_schedule_round 276.byte 102,15,58,15,198,8 277 call _vpaes_schedule_mangle 278 call _vpaes_schedule_192_smear 279 call _vpaes_schedule_mangle 280 call _vpaes_schedule_round 281 decl %eax 282 jz .L010schedule_mangle_last 283 call _vpaes_schedule_mangle 284 call _vpaes_schedule_192_smear 285 jmp .L011loop_schedule_192 286.align 16 287.L006schedule_256: 288 movdqu 16(%esi),%xmm0 289 call _vpaes_schedule_transform 290 movl $7,%eax 291.L012loop_schedule_256: 292 call _vpaes_schedule_mangle 293 movdqa %xmm0,%xmm6 294 call _vpaes_schedule_round 295 decl %eax 296 jz .L010schedule_mangle_last 297 call _vpaes_schedule_mangle 298 pshufd $255,%xmm0,%xmm0 299 movdqa %xmm7,20(%esp) 300 movdqa %xmm6,%xmm7 301 call .L_vpaes_schedule_low_round 302 movdqa 20(%esp),%xmm7 303 jmp .L012loop_schedule_256 304.align 16 305.L010schedule_mangle_last: 306 leal 384(%ebp),%ebx 307 testl %edi,%edi 308 jnz .L013schedule_mangle_last_dec 309 movdqa 256(%ebp,%ecx,1),%xmm1 310.byte 102,15,56,0,193 311 leal 352(%ebp),%ebx 312 addl $32,%edx 313.L013schedule_mangle_last_dec: 314 addl $-16,%edx 315 pxor 336(%ebp),%xmm0 316 call _vpaes_schedule_transform 317 movdqu %xmm0,(%edx) 318 pxor %xmm0,%xmm0 319 pxor %xmm1,%xmm1 320 pxor %xmm2,%xmm2 321 pxor %xmm3,%xmm3 322 pxor %xmm4,%xmm4 323 pxor %xmm5,%xmm5 324 pxor %xmm6,%xmm6 325 pxor %xmm7,%xmm7 326 ret 327.size _vpaes_schedule_core,.-_vpaes_schedule_core 328.type _vpaes_schedule_192_smear,@function 329.align 16 330_vpaes_schedule_192_smear: 331 pshufd $128,%xmm6,%xmm0 332 pxor %xmm0,%xmm6 333 pshufd $254,%xmm7,%xmm0 334 pxor %xmm0,%xmm6 335 movdqa %xmm6,%xmm0 336 pxor %xmm1,%xmm1 337 movhlps %xmm1,%xmm6 338 ret 339.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear 340.type _vpaes_schedule_round,@function 341.align 16 342_vpaes_schedule_round: 343 movdqa 8(%esp),%xmm2 344 pxor %xmm1,%xmm1 345.byte 102,15,58,15,202,15 346.byte 102,15,58,15,210,15 347 pxor %xmm1,%xmm7 348 pshufd $255,%xmm0,%xmm0 349.byte 102,15,58,15,192,1 350 movdqa %xmm2,8(%esp) 351.L_vpaes_schedule_low_round: 352 movdqa %xmm7,%xmm1 353 pslldq $4,%xmm7 354 pxor %xmm1,%xmm7 355 movdqa %xmm7,%xmm1 356 pslldq $8,%xmm7 357 pxor %xmm1,%xmm7 358 pxor 336(%ebp),%xmm7 359 movdqa -16(%ebp),%xmm4 360 movdqa -48(%ebp),%xmm5 361 movdqa %xmm4,%xmm1 362 pandn %xmm0,%xmm1 363 psrld $4,%xmm1 364 pand %xmm4,%xmm0 365 movdqa -32(%ebp),%xmm2 366.byte 102,15,56,0,208 367 pxor %xmm1,%xmm0 368 movdqa %xmm5,%xmm3 369.byte 102,15,56,0,217 370 pxor %xmm2,%xmm3 371 movdqa %xmm5,%xmm4 372.byte 102,15,56,0,224 373 pxor %xmm2,%xmm4 374 movdqa %xmm5,%xmm2 375.byte 102,15,56,0,211 376 pxor %xmm0,%xmm2 377 movdqa %xmm5,%xmm3 378.byte 102,15,56,0,220 379 pxor %xmm1,%xmm3 380 movdqa 32(%ebp),%xmm4 381.byte 102,15,56,0,226 382 movdqa 48(%ebp),%xmm0 383.byte 102,15,56,0,195 384 pxor %xmm4,%xmm0 385 pxor %xmm7,%xmm0 386 movdqa %xmm0,%xmm7 387 ret 388.size _vpaes_schedule_round,.-_vpaes_schedule_round 389.type _vpaes_schedule_transform,@function 390.align 16 391_vpaes_schedule_transform: 392 movdqa -16(%ebp),%xmm2 393 movdqa %xmm2,%xmm1 394 pandn %xmm0,%xmm1 395 psrld $4,%xmm1 396 pand %xmm2,%xmm0 397 movdqa (%ebx),%xmm2 398.byte 102,15,56,0,208 399 movdqa 16(%ebx),%xmm0 400.byte 102,15,56,0,193 401 pxor %xmm2,%xmm0 402 ret 403.size _vpaes_schedule_transform,.-_vpaes_schedule_transform 404.type _vpaes_schedule_mangle,@function 405.align 16 406_vpaes_schedule_mangle: 407 movdqa %xmm0,%xmm4 408 movdqa 128(%ebp),%xmm5 409 testl %edi,%edi 410 jnz .L014schedule_mangle_dec 411 addl $16,%edx 412 pxor 336(%ebp),%xmm4 413.byte 102,15,56,0,229 414 movdqa %xmm4,%xmm3 415.byte 102,15,56,0,229 416 pxor %xmm4,%xmm3 417.byte 102,15,56,0,229 418 pxor %xmm4,%xmm3 419 jmp .L015schedule_mangle_both 420.align 16 421.L014schedule_mangle_dec: 422 movdqa -16(%ebp),%xmm2 423 leal 416(%ebp),%esi 424 movdqa %xmm2,%xmm1 425 pandn %xmm4,%xmm1 426 psrld $4,%xmm1 427 pand %xmm2,%xmm4 428 movdqa (%esi),%xmm2 429.byte 102,15,56,0,212 430 movdqa 16(%esi),%xmm3 431.byte 102,15,56,0,217 432 pxor %xmm2,%xmm3 433.byte 102,15,56,0,221 434 movdqa 32(%esi),%xmm2 435.byte 102,15,56,0,212 436 pxor %xmm3,%xmm2 437 movdqa 48(%esi),%xmm3 438.byte 102,15,56,0,217 439 pxor %xmm2,%xmm3 440.byte 102,15,56,0,221 441 movdqa 64(%esi),%xmm2 442.byte 102,15,56,0,212 443 pxor %xmm3,%xmm2 444 movdqa 80(%esi),%xmm3 445.byte 102,15,56,0,217 446 pxor %xmm2,%xmm3 447.byte 102,15,56,0,221 448 movdqa 96(%esi),%xmm2 449.byte 102,15,56,0,212 450 pxor %xmm3,%xmm2 451 movdqa 112(%esi),%xmm3 452.byte 102,15,56,0,217 453 pxor %xmm2,%xmm3 454 addl $-16,%edx 455.L015schedule_mangle_both: 456 movdqa 256(%ebp,%ecx,1),%xmm1 457.byte 102,15,56,0,217 458 addl $-16,%ecx 459 andl $48,%ecx 460 movdqu %xmm3,(%edx) 461 ret 462.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle 463.globl vpaes_set_encrypt_key 464.type vpaes_set_encrypt_key,@function 465.align 16 466vpaes_set_encrypt_key: 467.L_vpaes_set_encrypt_key_begin: 468 pushl %ebp 469 pushl %ebx 470 pushl %esi 471 pushl %edi 472 movl 20(%esp),%esi 473 leal -56(%esp),%ebx 474 movl 24(%esp),%eax 475 andl $-16,%ebx 476 movl 28(%esp),%edx 477 xchgl %esp,%ebx 478 movl %ebx,48(%esp) 479 movl %eax,%ebx 480 shrl $5,%ebx 481 addl $5,%ebx 482 movl %ebx,240(%edx) 483 movl $48,%ecx 484 movl $0,%edi 485 leal .L_vpaes_consts+0x30-.L016pic_point,%ebp 486 call _vpaes_schedule_core 487.L016pic_point: 488 movl 48(%esp),%esp 489 xorl %eax,%eax 490 popl %edi 491 popl %esi 492 popl %ebx 493 popl %ebp 494 ret 495.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin 496.globl vpaes_set_decrypt_key 497.type vpaes_set_decrypt_key,@function 498.align 16 499vpaes_set_decrypt_key: 500.L_vpaes_set_decrypt_key_begin: 501 pushl %ebp 502 pushl %ebx 503 pushl %esi 504 pushl %edi 505 movl 20(%esp),%esi 506 leal -56(%esp),%ebx 507 movl 24(%esp),%eax 508 andl $-16,%ebx 509 movl 28(%esp),%edx 510 xchgl %esp,%ebx 511 movl %ebx,48(%esp) 512 movl %eax,%ebx 513 shrl $5,%ebx 514 addl $5,%ebx 515 movl %ebx,240(%edx) 516 shll $4,%ebx 517 leal 16(%edx,%ebx,1),%edx 518 movl $1,%edi 519 movl %eax,%ecx 520 shrl $1,%ecx 521 andl $32,%ecx 522 xorl $32,%ecx 523 leal .L_vpaes_consts+0x30-.L017pic_point,%ebp 524 call _vpaes_schedule_core 525.L017pic_point: 526 movl 48(%esp),%esp 527 xorl %eax,%eax 528 popl %edi 529 popl %esi 530 popl %ebx 531 popl %ebp 532 ret 533.size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin 534.globl vpaes_encrypt 535.type vpaes_encrypt,@function 536.align 16 537vpaes_encrypt: 538.L_vpaes_encrypt_begin: 539 pushl %ebp 540 pushl %ebx 541 pushl %esi 542 pushl %edi 543 leal .L_vpaes_consts+0x30-.L018pic_point,%ebp 544 call _vpaes_preheat 545.L018pic_point: 546 movl 20(%esp),%esi 547 leal -56(%esp),%ebx 548 movl 24(%esp),%edi 549 andl $-16,%ebx 550 movl 28(%esp),%edx 551 xchgl %esp,%ebx 552 movl %ebx,48(%esp) 553 movdqu (%esi),%xmm0 554 call _vpaes_encrypt_core 555 movdqu %xmm0,(%edi) 556 movl 48(%esp),%esp 557 popl %edi 558 popl %esi 559 popl %ebx 560 popl %ebp 561 ret 562.size vpaes_encrypt,.-.L_vpaes_encrypt_begin 563.globl vpaes_decrypt 564.type vpaes_decrypt,@function 565.align 16 566vpaes_decrypt: 567.L_vpaes_decrypt_begin: 568 pushl %ebp 569 pushl %ebx 570 pushl %esi 571 pushl %edi 572 leal .L_vpaes_consts+0x30-.L019pic_point,%ebp 573 call _vpaes_preheat 574.L019pic_point: 575 movl 20(%esp),%esi 576 leal -56(%esp),%ebx 577 movl 24(%esp),%edi 578 andl $-16,%ebx 579 movl 28(%esp),%edx 580 xchgl %esp,%ebx 581 movl %ebx,48(%esp) 582 movdqu (%esi),%xmm0 583 call _vpaes_decrypt_core 584 movdqu %xmm0,(%edi) 585 movl 48(%esp),%esp 586 popl %edi 587 popl %esi 588 popl %ebx 589 popl %ebp 590 ret 591.size vpaes_decrypt,.-.L_vpaes_decrypt_begin 592.globl vpaes_cbc_encrypt 593.type vpaes_cbc_encrypt,@function 594.align 16 595vpaes_cbc_encrypt: 596.L_vpaes_cbc_encrypt_begin: 597 pushl %ebp 598 pushl %ebx 599 pushl %esi 600 pushl %edi 601 movl 20(%esp),%esi 602 movl 24(%esp),%edi 603 movl 28(%esp),%eax 604 movl 32(%esp),%edx 605 subl $16,%eax 606 jc .L020cbc_abort 607 leal -56(%esp),%ebx 608 movl 36(%esp),%ebp 609 andl $-16,%ebx 610 movl 40(%esp),%ecx 611 xchgl %esp,%ebx 612 movdqu (%ebp),%xmm1 613 subl %esi,%edi 614 movl %ebx,48(%esp) 615 movl %edi,(%esp) 616 movl %edx,4(%esp) 617 movl %ebp,8(%esp) 618 movl %eax,%edi 619 leal .L_vpaes_consts+0x30-.L021pic_point,%ebp 620 call _vpaes_preheat 621.L021pic_point: 622 cmpl $0,%ecx 623 je .L022cbc_dec_loop 624 jmp .L023cbc_enc_loop 625.align 16 626.L023cbc_enc_loop: 627 movdqu (%esi),%xmm0 628 pxor %xmm1,%xmm0 629 call _vpaes_encrypt_core 630 movl (%esp),%ebx 631 movl 4(%esp),%edx 632 movdqa %xmm0,%xmm1 633 movdqu %xmm0,(%ebx,%esi,1) 634 leal 16(%esi),%esi 635 subl $16,%edi 636 jnc .L023cbc_enc_loop 637 jmp .L024cbc_done 638.align 16 639.L022cbc_dec_loop: 640 movdqu (%esi),%xmm0 641 movdqa %xmm1,16(%esp) 642 movdqa %xmm0,32(%esp) 643 call _vpaes_decrypt_core 644 movl (%esp),%ebx 645 movl 4(%esp),%edx 646 pxor 16(%esp),%xmm0 647 movdqa 32(%esp),%xmm1 648 movdqu %xmm0,(%ebx,%esi,1) 649 leal 16(%esi),%esi 650 subl $16,%edi 651 jnc .L022cbc_dec_loop 652.L024cbc_done: 653 movl 8(%esp),%ebx 654 movl 48(%esp),%esp 655 movdqu %xmm1,(%ebx) 656.L020cbc_abort: 657 popl %edi 658 popl %esi 659 popl %ebx 660 popl %ebp 661 ret 662.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin 663