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 <ring-core/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.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 42.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 43.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 44.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 45.byte 118,101,114,115,105,116,121,41,0 46.align 64 47.hidden _vpaes_preheat 48.type _vpaes_preheat,@function 49.align 16 50_vpaes_preheat: 51 addl (%esp),%ebp 52 movdqa -48(%ebp),%xmm7 53 movdqa -16(%ebp),%xmm6 54 ret 55.size _vpaes_preheat,.-_vpaes_preheat 56.hidden _vpaes_encrypt_core 57.type _vpaes_encrypt_core,@function 58.align 16 59_vpaes_encrypt_core: 60 movl $16,%ecx 61 movl 240(%edx),%eax 62 movdqa %xmm6,%xmm1 63 movdqa (%ebp),%xmm2 64 pandn %xmm0,%xmm1 65 pand %xmm6,%xmm0 66 movdqu (%edx),%xmm5 67.byte 102,15,56,0,208 68 movdqa 16(%ebp),%xmm0 69 pxor %xmm5,%xmm2 70 psrld $4,%xmm1 71 addl $16,%edx 72.byte 102,15,56,0,193 73 leal 192(%ebp),%ebx 74 pxor %xmm2,%xmm0 75 jmp .L000enc_entry 76.align 16 77.L001enc_loop: 78 movdqa 32(%ebp),%xmm4 79 movdqa 48(%ebp),%xmm0 80.byte 102,15,56,0,226 81.byte 102,15,56,0,195 82 pxor %xmm5,%xmm4 83 movdqa 64(%ebp),%xmm5 84 pxor %xmm4,%xmm0 85 movdqa -64(%ebx,%ecx,1),%xmm1 86.byte 102,15,56,0,234 87 movdqa 80(%ebp),%xmm2 88 movdqa (%ebx,%ecx,1),%xmm4 89.byte 102,15,56,0,211 90 movdqa %xmm0,%xmm3 91 pxor %xmm5,%xmm2 92.byte 102,15,56,0,193 93 addl $16,%edx 94 pxor %xmm2,%xmm0 95.byte 102,15,56,0,220 96 addl $16,%ecx 97 pxor %xmm0,%xmm3 98.byte 102,15,56,0,193 99 andl $48,%ecx 100 subl $1,%eax 101 pxor %xmm3,%xmm0 102.L000enc_entry: 103 movdqa %xmm6,%xmm1 104 movdqa -32(%ebp),%xmm5 105 pandn %xmm0,%xmm1 106 psrld $4,%xmm1 107 pand %xmm6,%xmm0 108.byte 102,15,56,0,232 109 movdqa %xmm7,%xmm3 110 pxor %xmm1,%xmm0 111.byte 102,15,56,0,217 112 movdqa %xmm7,%xmm4 113 pxor %xmm5,%xmm3 114.byte 102,15,56,0,224 115 movdqa %xmm7,%xmm2 116 pxor %xmm5,%xmm4 117.byte 102,15,56,0,211 118 movdqa %xmm7,%xmm3 119 pxor %xmm0,%xmm2 120.byte 102,15,56,0,220 121 movdqu (%edx),%xmm5 122 pxor %xmm1,%xmm3 123 jnz .L001enc_loop 124 movdqa 96(%ebp),%xmm4 125 movdqa 112(%ebp),%xmm0 126.byte 102,15,56,0,226 127 pxor %xmm5,%xmm4 128.byte 102,15,56,0,195 129 movdqa 64(%ebx,%ecx,1),%xmm1 130 pxor %xmm4,%xmm0 131.byte 102,15,56,0,193 132 ret 133.size _vpaes_encrypt_core,.-_vpaes_encrypt_core 134.hidden _vpaes_schedule_core 135.type _vpaes_schedule_core,@function 136.align 16 137_vpaes_schedule_core: 138 addl (%esp),%ebp 139 movdqu (%esi),%xmm0 140 movdqa 320(%ebp),%xmm2 141 movdqa %xmm0,%xmm3 142 leal (%ebp),%ebx 143 movdqa %xmm2,4(%esp) 144 call _vpaes_schedule_transform 145 movdqa %xmm0,%xmm7 146 testl %edi,%edi 147 jnz .L002schedule_am_decrypting 148 movdqu %xmm0,(%edx) 149 jmp .L003schedule_go 150.L002schedule_am_decrypting: 151 movdqa 256(%ebp,%ecx,1),%xmm1 152.byte 102,15,56,0,217 153 movdqu %xmm3,(%edx) 154 xorl $48,%ecx 155.L003schedule_go: 156 cmpl $192,%eax 157 ja .L004schedule_256 158.L005schedule_128: 159 movl $10,%eax 160.L006loop_schedule_128: 161 call _vpaes_schedule_round 162 decl %eax 163 jz .L007schedule_mangle_last 164 call _vpaes_schedule_mangle 165 jmp .L006loop_schedule_128 166.align 16 167.L004schedule_256: 168 movdqu 16(%esi),%xmm0 169 call _vpaes_schedule_transform 170 movl $7,%eax 171.L008loop_schedule_256: 172 call _vpaes_schedule_mangle 173 movdqa %xmm0,%xmm6 174 call _vpaes_schedule_round 175 decl %eax 176 jz .L007schedule_mangle_last 177 call _vpaes_schedule_mangle 178 pshufd $255,%xmm0,%xmm0 179 movdqa %xmm7,20(%esp) 180 movdqa %xmm6,%xmm7 181 call .L_vpaes_schedule_low_round 182 movdqa 20(%esp),%xmm7 183 jmp .L008loop_schedule_256 184.align 16 185.L007schedule_mangle_last: 186 leal 384(%ebp),%ebx 187 testl %edi,%edi 188 jnz .L009schedule_mangle_last_dec 189 movdqa 256(%ebp,%ecx,1),%xmm1 190.byte 102,15,56,0,193 191 leal 352(%ebp),%ebx 192 addl $32,%edx 193.L009schedule_mangle_last_dec: 194 addl $-16,%edx 195 pxor 336(%ebp),%xmm0 196 call _vpaes_schedule_transform 197 movdqu %xmm0,(%edx) 198 pxor %xmm0,%xmm0 199 pxor %xmm1,%xmm1 200 pxor %xmm2,%xmm2 201 pxor %xmm3,%xmm3 202 pxor %xmm4,%xmm4 203 pxor %xmm5,%xmm5 204 pxor %xmm6,%xmm6 205 pxor %xmm7,%xmm7 206 ret 207.size _vpaes_schedule_core,.-_vpaes_schedule_core 208.hidden _vpaes_schedule_round 209.type _vpaes_schedule_round,@function 210.align 16 211_vpaes_schedule_round: 212 movdqa 8(%esp),%xmm2 213 pxor %xmm1,%xmm1 214.byte 102,15,58,15,202,15 215.byte 102,15,58,15,210,15 216 pxor %xmm1,%xmm7 217 pshufd $255,%xmm0,%xmm0 218.byte 102,15,58,15,192,1 219 movdqa %xmm2,8(%esp) 220.L_vpaes_schedule_low_round: 221 movdqa %xmm7,%xmm1 222 pslldq $4,%xmm7 223 pxor %xmm1,%xmm7 224 movdqa %xmm7,%xmm1 225 pslldq $8,%xmm7 226 pxor %xmm1,%xmm7 227 pxor 336(%ebp),%xmm7 228 movdqa -16(%ebp),%xmm4 229 movdqa -48(%ebp),%xmm5 230 movdqa %xmm4,%xmm1 231 pandn %xmm0,%xmm1 232 psrld $4,%xmm1 233 pand %xmm4,%xmm0 234 movdqa -32(%ebp),%xmm2 235.byte 102,15,56,0,208 236 pxor %xmm1,%xmm0 237 movdqa %xmm5,%xmm3 238.byte 102,15,56,0,217 239 pxor %xmm2,%xmm3 240 movdqa %xmm5,%xmm4 241.byte 102,15,56,0,224 242 pxor %xmm2,%xmm4 243 movdqa %xmm5,%xmm2 244.byte 102,15,56,0,211 245 pxor %xmm0,%xmm2 246 movdqa %xmm5,%xmm3 247.byte 102,15,56,0,220 248 pxor %xmm1,%xmm3 249 movdqa 32(%ebp),%xmm4 250.byte 102,15,56,0,226 251 movdqa 48(%ebp),%xmm0 252.byte 102,15,56,0,195 253 pxor %xmm4,%xmm0 254 pxor %xmm7,%xmm0 255 movdqa %xmm0,%xmm7 256 ret 257.size _vpaes_schedule_round,.-_vpaes_schedule_round 258.hidden _vpaes_schedule_transform 259.type _vpaes_schedule_transform,@function 260.align 16 261_vpaes_schedule_transform: 262 movdqa -16(%ebp),%xmm2 263 movdqa %xmm2,%xmm1 264 pandn %xmm0,%xmm1 265 psrld $4,%xmm1 266 pand %xmm2,%xmm0 267 movdqa (%ebx),%xmm2 268.byte 102,15,56,0,208 269 movdqa 16(%ebx),%xmm0 270.byte 102,15,56,0,193 271 pxor %xmm2,%xmm0 272 ret 273.size _vpaes_schedule_transform,.-_vpaes_schedule_transform 274.hidden _vpaes_schedule_mangle 275.type _vpaes_schedule_mangle,@function 276.align 16 277_vpaes_schedule_mangle: 278 movdqa %xmm0,%xmm4 279 movdqa 128(%ebp),%xmm5 280 testl %edi,%edi 281 jnz .L010schedule_mangle_dec 282 addl $16,%edx 283 pxor 336(%ebp),%xmm4 284.byte 102,15,56,0,229 285 movdqa %xmm4,%xmm3 286.byte 102,15,56,0,229 287 pxor %xmm4,%xmm3 288.byte 102,15,56,0,229 289 pxor %xmm4,%xmm3 290 jmp .L011schedule_mangle_both 291.align 16 292.L010schedule_mangle_dec: 293 movdqa -16(%ebp),%xmm2 294 leal (%ebp),%esi 295 movdqa %xmm2,%xmm1 296 pandn %xmm4,%xmm1 297 psrld $4,%xmm1 298 pand %xmm2,%xmm4 299 movdqa (%esi),%xmm2 300.byte 102,15,56,0,212 301 movdqa 16(%esi),%xmm3 302.byte 102,15,56,0,217 303 pxor %xmm2,%xmm3 304.byte 102,15,56,0,221 305 movdqa 32(%esi),%xmm2 306.byte 102,15,56,0,212 307 pxor %xmm3,%xmm2 308 movdqa 48(%esi),%xmm3 309.byte 102,15,56,0,217 310 pxor %xmm2,%xmm3 311.byte 102,15,56,0,221 312 movdqa 64(%esi),%xmm2 313.byte 102,15,56,0,212 314 pxor %xmm3,%xmm2 315 movdqa 80(%esi),%xmm3 316.byte 102,15,56,0,217 317 pxor %xmm2,%xmm3 318.byte 102,15,56,0,221 319 movdqa 96(%esi),%xmm2 320.byte 102,15,56,0,212 321 pxor %xmm3,%xmm2 322 movdqa 112(%esi),%xmm3 323.byte 102,15,56,0,217 324 pxor %xmm2,%xmm3 325 addl $-16,%edx 326.L011schedule_mangle_both: 327 movdqa 256(%ebp,%ecx,1),%xmm1 328.byte 102,15,56,0,217 329 addl $-16,%ecx 330 andl $48,%ecx 331 movdqu %xmm3,(%edx) 332 ret 333.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle 334.globl vpaes_set_encrypt_key 335.hidden vpaes_set_encrypt_key 336.type vpaes_set_encrypt_key,@function 337.align 16 338vpaes_set_encrypt_key: 339.L_vpaes_set_encrypt_key_begin: 340 pushl %ebp 341 pushl %ebx 342 pushl %esi 343 pushl %edi 344#ifdef BORINGSSL_DISPATCH_TEST 345 pushl %ebx 346 pushl %edx 347 call .L012pic 348.L012pic: 349 popl %ebx 350 leal BORINGSSL_function_hit+5-.L012pic(%ebx),%ebx 351 movl $1,%edx 352 movb %dl,(%ebx) 353 popl %edx 354 popl %ebx 355#endif 356 movl 20(%esp),%esi 357 leal -56(%esp),%ebx 358 movl 24(%esp),%eax 359 andl $-16,%ebx 360 movl 28(%esp),%edx 361 xchgl %esp,%ebx 362 movl %ebx,48(%esp) 363 movl %eax,%ebx 364 shrl $5,%ebx 365 addl $5,%ebx 366 movl %ebx,240(%edx) 367 movl $48,%ecx 368 movl $0,%edi 369 leal .L_vpaes_consts+0x30-.L013pic_point,%ebp 370 call _vpaes_schedule_core 371.L013pic_point: 372 movl 48(%esp),%esp 373 xorl %eax,%eax 374 popl %edi 375 popl %esi 376 popl %ebx 377 popl %ebp 378 ret 379.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin 380.globl vpaes_encrypt 381.hidden vpaes_encrypt 382.type vpaes_encrypt,@function 383.align 16 384vpaes_encrypt: 385.L_vpaes_encrypt_begin: 386 pushl %ebp 387 pushl %ebx 388 pushl %esi 389 pushl %edi 390#ifdef BORINGSSL_DISPATCH_TEST 391 pushl %ebx 392 pushl %edx 393 call .L014pic 394.L014pic: 395 popl %ebx 396 leal BORINGSSL_function_hit+4-.L014pic(%ebx),%ebx 397 movl $1,%edx 398 movb %dl,(%ebx) 399 popl %edx 400 popl %ebx 401#endif 402 leal .L_vpaes_consts+0x30-.L015pic_point,%ebp 403 call _vpaes_preheat 404.L015pic_point: 405 movl 20(%esp),%esi 406 leal -56(%esp),%ebx 407 movl 24(%esp),%edi 408 andl $-16,%ebx 409 movl 28(%esp),%edx 410 xchgl %esp,%ebx 411 movl %ebx,48(%esp) 412 movdqu (%esi),%xmm0 413 call _vpaes_encrypt_core 414 movdqu %xmm0,(%edi) 415 movl 48(%esp),%esp 416 popl %edi 417 popl %esi 418 popl %ebx 419 popl %ebp 420 ret 421.size vpaes_encrypt,.-.L_vpaes_encrypt_begin 422#endif // !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86) && defined(__ELF__) 423