1*4724848cSchristos#include <machine/asm.h> 2*4724848cSchristos.text 3*4724848cSchristos.align 64 4*4724848cSchristos.globl poly1305_init 5*4724848cSchristos.type poly1305_init,@function 6*4724848cSchristos.align 16 7*4724848cSchristospoly1305_init: 8*4724848cSchristos.L_poly1305_init_begin: 9*4724848cSchristos pushl %ebp 10*4724848cSchristos pushl %ebx 11*4724848cSchristos pushl %esi 12*4724848cSchristos pushl %edi 13*4724848cSchristos movl 20(%esp),%edi 14*4724848cSchristos movl 24(%esp),%esi 15*4724848cSchristos movl 28(%esp),%ebp 16*4724848cSchristos xorl %eax,%eax 17*4724848cSchristos movl %eax,(%edi) 18*4724848cSchristos movl %eax,4(%edi) 19*4724848cSchristos movl %eax,8(%edi) 20*4724848cSchristos movl %eax,12(%edi) 21*4724848cSchristos movl %eax,16(%edi) 22*4724848cSchristos movl %eax,20(%edi) 23*4724848cSchristos cmpl $0,%esi 24*4724848cSchristos je .L000nokey 25*4724848cSchristos call .L001pic_point 26*4724848cSchristos.L001pic_point: 27*4724848cSchristos popl %ebx 28*4724848cSchristos leal poly1305_blocks-.L001pic_point(%ebx),%eax 29*4724848cSchristos leal poly1305_emit-.L001pic_point(%ebx),%edx 30*4724848cSchristos leal OPENSSL_ia32cap_P-.L001pic_point(%ebx),%edi 31*4724848cSchristos movl (%edi),%ecx 32*4724848cSchristos andl $83886080,%ecx 33*4724848cSchristos cmpl $83886080,%ecx 34*4724848cSchristos jne .L002no_sse2 35*4724848cSchristos leal _poly1305_blocks_sse2-.L001pic_point(%ebx),%eax 36*4724848cSchristos leal _poly1305_emit_sse2-.L001pic_point(%ebx),%edx 37*4724848cSchristos.L002no_sse2: 38*4724848cSchristos movl 20(%esp),%edi 39*4724848cSchristos movl %eax,(%ebp) 40*4724848cSchristos movl %edx,4(%ebp) 41*4724848cSchristos movl (%esi),%eax 42*4724848cSchristos movl 4(%esi),%ebx 43*4724848cSchristos movl 8(%esi),%ecx 44*4724848cSchristos movl 12(%esi),%edx 45*4724848cSchristos andl $268435455,%eax 46*4724848cSchristos andl $268435452,%ebx 47*4724848cSchristos andl $268435452,%ecx 48*4724848cSchristos andl $268435452,%edx 49*4724848cSchristos movl %eax,24(%edi) 50*4724848cSchristos movl %ebx,28(%edi) 51*4724848cSchristos movl %ecx,32(%edi) 52*4724848cSchristos movl %edx,36(%edi) 53*4724848cSchristos movl $1,%eax 54*4724848cSchristos.L000nokey: 55*4724848cSchristos popl %edi 56*4724848cSchristos popl %esi 57*4724848cSchristos popl %ebx 58*4724848cSchristos popl %ebp 59*4724848cSchristos ret 60*4724848cSchristos.size poly1305_init,.-.L_poly1305_init_begin 61*4724848cSchristos.globl poly1305_blocks 62*4724848cSchristos.type poly1305_blocks,@function 63*4724848cSchristos.align 16 64*4724848cSchristospoly1305_blocks: 65*4724848cSchristos.L_poly1305_blocks_begin: 66*4724848cSchristos pushl %ebp 67*4724848cSchristos pushl %ebx 68*4724848cSchristos pushl %esi 69*4724848cSchristos pushl %edi 70*4724848cSchristos movl 20(%esp),%edi 71*4724848cSchristos movl 24(%esp),%esi 72*4724848cSchristos movl 28(%esp),%ecx 73*4724848cSchristos.Lenter_blocks: 74*4724848cSchristos andl $-15,%ecx 75*4724848cSchristos jz .L003nodata 76*4724848cSchristos subl $64,%esp 77*4724848cSchristos movl 24(%edi),%eax 78*4724848cSchristos movl 28(%edi),%ebx 79*4724848cSchristos leal (%esi,%ecx,1),%ebp 80*4724848cSchristos movl 32(%edi),%ecx 81*4724848cSchristos movl 36(%edi),%edx 82*4724848cSchristos movl %ebp,92(%esp) 83*4724848cSchristos movl %esi,%ebp 84*4724848cSchristos movl %eax,36(%esp) 85*4724848cSchristos movl %ebx,%eax 86*4724848cSchristos shrl $2,%eax 87*4724848cSchristos movl %ebx,40(%esp) 88*4724848cSchristos addl %ebx,%eax 89*4724848cSchristos movl %ecx,%ebx 90*4724848cSchristos shrl $2,%ebx 91*4724848cSchristos movl %ecx,44(%esp) 92*4724848cSchristos addl %ecx,%ebx 93*4724848cSchristos movl %edx,%ecx 94*4724848cSchristos shrl $2,%ecx 95*4724848cSchristos movl %edx,48(%esp) 96*4724848cSchristos addl %edx,%ecx 97*4724848cSchristos movl %eax,52(%esp) 98*4724848cSchristos movl %ebx,56(%esp) 99*4724848cSchristos movl %ecx,60(%esp) 100*4724848cSchristos movl (%edi),%eax 101*4724848cSchristos movl 4(%edi),%ebx 102*4724848cSchristos movl 8(%edi),%ecx 103*4724848cSchristos movl 12(%edi),%esi 104*4724848cSchristos movl 16(%edi),%edi 105*4724848cSchristos jmp .L004loop 106*4724848cSchristos.align 32 107*4724848cSchristos.L004loop: 108*4724848cSchristos addl (%ebp),%eax 109*4724848cSchristos adcl 4(%ebp),%ebx 110*4724848cSchristos adcl 8(%ebp),%ecx 111*4724848cSchristos adcl 12(%ebp),%esi 112*4724848cSchristos leal 16(%ebp),%ebp 113*4724848cSchristos adcl 96(%esp),%edi 114*4724848cSchristos movl %eax,(%esp) 115*4724848cSchristos movl %esi,12(%esp) 116*4724848cSchristos mull 36(%esp) 117*4724848cSchristos movl %edi,16(%esp) 118*4724848cSchristos movl %eax,%edi 119*4724848cSchristos movl %ebx,%eax 120*4724848cSchristos movl %edx,%esi 121*4724848cSchristos mull 60(%esp) 122*4724848cSchristos addl %eax,%edi 123*4724848cSchristos movl %ecx,%eax 124*4724848cSchristos adcl %edx,%esi 125*4724848cSchristos mull 56(%esp) 126*4724848cSchristos addl %eax,%edi 127*4724848cSchristos movl 12(%esp),%eax 128*4724848cSchristos adcl %edx,%esi 129*4724848cSchristos mull 52(%esp) 130*4724848cSchristos addl %eax,%edi 131*4724848cSchristos movl (%esp),%eax 132*4724848cSchristos adcl %edx,%esi 133*4724848cSchristos mull 40(%esp) 134*4724848cSchristos movl %edi,20(%esp) 135*4724848cSchristos xorl %edi,%edi 136*4724848cSchristos addl %eax,%esi 137*4724848cSchristos movl %ebx,%eax 138*4724848cSchristos adcl %edx,%edi 139*4724848cSchristos mull 36(%esp) 140*4724848cSchristos addl %eax,%esi 141*4724848cSchristos movl %ecx,%eax 142*4724848cSchristos adcl %edx,%edi 143*4724848cSchristos mull 60(%esp) 144*4724848cSchristos addl %eax,%esi 145*4724848cSchristos movl 12(%esp),%eax 146*4724848cSchristos adcl %edx,%edi 147*4724848cSchristos mull 56(%esp) 148*4724848cSchristos addl %eax,%esi 149*4724848cSchristos movl 16(%esp),%eax 150*4724848cSchristos adcl %edx,%edi 151*4724848cSchristos imull 52(%esp),%eax 152*4724848cSchristos addl %eax,%esi 153*4724848cSchristos movl (%esp),%eax 154*4724848cSchristos adcl $0,%edi 155*4724848cSchristos mull 44(%esp) 156*4724848cSchristos movl %esi,24(%esp) 157*4724848cSchristos xorl %esi,%esi 158*4724848cSchristos addl %eax,%edi 159*4724848cSchristos movl %ebx,%eax 160*4724848cSchristos adcl %edx,%esi 161*4724848cSchristos mull 40(%esp) 162*4724848cSchristos addl %eax,%edi 163*4724848cSchristos movl %ecx,%eax 164*4724848cSchristos adcl %edx,%esi 165*4724848cSchristos mull 36(%esp) 166*4724848cSchristos addl %eax,%edi 167*4724848cSchristos movl 12(%esp),%eax 168*4724848cSchristos adcl %edx,%esi 169*4724848cSchristos mull 60(%esp) 170*4724848cSchristos addl %eax,%edi 171*4724848cSchristos movl 16(%esp),%eax 172*4724848cSchristos adcl %edx,%esi 173*4724848cSchristos imull 56(%esp),%eax 174*4724848cSchristos addl %eax,%edi 175*4724848cSchristos movl (%esp),%eax 176*4724848cSchristos adcl $0,%esi 177*4724848cSchristos mull 48(%esp) 178*4724848cSchristos movl %edi,28(%esp) 179*4724848cSchristos xorl %edi,%edi 180*4724848cSchristos addl %eax,%esi 181*4724848cSchristos movl %ebx,%eax 182*4724848cSchristos adcl %edx,%edi 183*4724848cSchristos mull 44(%esp) 184*4724848cSchristos addl %eax,%esi 185*4724848cSchristos movl %ecx,%eax 186*4724848cSchristos adcl %edx,%edi 187*4724848cSchristos mull 40(%esp) 188*4724848cSchristos addl %eax,%esi 189*4724848cSchristos movl 12(%esp),%eax 190*4724848cSchristos adcl %edx,%edi 191*4724848cSchristos mull 36(%esp) 192*4724848cSchristos addl %eax,%esi 193*4724848cSchristos movl 16(%esp),%ecx 194*4724848cSchristos adcl %edx,%edi 195*4724848cSchristos movl %ecx,%edx 196*4724848cSchristos imull 60(%esp),%ecx 197*4724848cSchristos addl %ecx,%esi 198*4724848cSchristos movl 20(%esp),%eax 199*4724848cSchristos adcl $0,%edi 200*4724848cSchristos imull 36(%esp),%edx 201*4724848cSchristos addl %edi,%edx 202*4724848cSchristos movl 24(%esp),%ebx 203*4724848cSchristos movl 28(%esp),%ecx 204*4724848cSchristos movl %edx,%edi 205*4724848cSchristos shrl $2,%edx 206*4724848cSchristos andl $3,%edi 207*4724848cSchristos leal (%edx,%edx,4),%edx 208*4724848cSchristos addl %edx,%eax 209*4724848cSchristos adcl $0,%ebx 210*4724848cSchristos adcl $0,%ecx 211*4724848cSchristos adcl $0,%esi 212*4724848cSchristos adcl $0,%edi 213*4724848cSchristos cmpl 92(%esp),%ebp 214*4724848cSchristos jne .L004loop 215*4724848cSchristos movl 84(%esp),%edx 216*4724848cSchristos addl $64,%esp 217*4724848cSchristos movl %eax,(%edx) 218*4724848cSchristos movl %ebx,4(%edx) 219*4724848cSchristos movl %ecx,8(%edx) 220*4724848cSchristos movl %esi,12(%edx) 221*4724848cSchristos movl %edi,16(%edx) 222*4724848cSchristos.L003nodata: 223*4724848cSchristos popl %edi 224*4724848cSchristos popl %esi 225*4724848cSchristos popl %ebx 226*4724848cSchristos popl %ebp 227*4724848cSchristos ret 228*4724848cSchristos.size poly1305_blocks,.-.L_poly1305_blocks_begin 229*4724848cSchristos.globl poly1305_emit 230*4724848cSchristos.type poly1305_emit,@function 231*4724848cSchristos.align 16 232*4724848cSchristospoly1305_emit: 233*4724848cSchristos.L_poly1305_emit_begin: 234*4724848cSchristos pushl %ebp 235*4724848cSchristos pushl %ebx 236*4724848cSchristos pushl %esi 237*4724848cSchristos pushl %edi 238*4724848cSchristos movl 20(%esp),%ebp 239*4724848cSchristos.Lenter_emit: 240*4724848cSchristos movl 24(%esp),%edi 241*4724848cSchristos movl (%ebp),%eax 242*4724848cSchristos movl 4(%ebp),%ebx 243*4724848cSchristos movl 8(%ebp),%ecx 244*4724848cSchristos movl 12(%ebp),%edx 245*4724848cSchristos movl 16(%ebp),%esi 246*4724848cSchristos addl $5,%eax 247*4724848cSchristos adcl $0,%ebx 248*4724848cSchristos adcl $0,%ecx 249*4724848cSchristos adcl $0,%edx 250*4724848cSchristos adcl $0,%esi 251*4724848cSchristos shrl $2,%esi 252*4724848cSchristos negl %esi 253*4724848cSchristos andl %esi,%eax 254*4724848cSchristos andl %esi,%ebx 255*4724848cSchristos andl %esi,%ecx 256*4724848cSchristos andl %esi,%edx 257*4724848cSchristos movl %eax,(%edi) 258*4724848cSchristos movl %ebx,4(%edi) 259*4724848cSchristos movl %ecx,8(%edi) 260*4724848cSchristos movl %edx,12(%edi) 261*4724848cSchristos notl %esi 262*4724848cSchristos movl (%ebp),%eax 263*4724848cSchristos movl 4(%ebp),%ebx 264*4724848cSchristos movl 8(%ebp),%ecx 265*4724848cSchristos movl 12(%ebp),%edx 266*4724848cSchristos movl 28(%esp),%ebp 267*4724848cSchristos andl %esi,%eax 268*4724848cSchristos andl %esi,%ebx 269*4724848cSchristos andl %esi,%ecx 270*4724848cSchristos andl %esi,%edx 271*4724848cSchristos orl (%edi),%eax 272*4724848cSchristos orl 4(%edi),%ebx 273*4724848cSchristos orl 8(%edi),%ecx 274*4724848cSchristos orl 12(%edi),%edx 275*4724848cSchristos addl (%ebp),%eax 276*4724848cSchristos adcl 4(%ebp),%ebx 277*4724848cSchristos adcl 8(%ebp),%ecx 278*4724848cSchristos adcl 12(%ebp),%edx 279*4724848cSchristos movl %eax,(%edi) 280*4724848cSchristos movl %ebx,4(%edi) 281*4724848cSchristos movl %ecx,8(%edi) 282*4724848cSchristos movl %edx,12(%edi) 283*4724848cSchristos popl %edi 284*4724848cSchristos popl %esi 285*4724848cSchristos popl %ebx 286*4724848cSchristos popl %ebp 287*4724848cSchristos ret 288*4724848cSchristos.size poly1305_emit,.-.L_poly1305_emit_begin 289*4724848cSchristos.align 32 290*4724848cSchristos.type _poly1305_init_sse2,@function 291*4724848cSchristos.align 16 292*4724848cSchristos_poly1305_init_sse2: 293*4724848cSchristos movdqu 24(%edi),%xmm4 294*4724848cSchristos leal 48(%edi),%edi 295*4724848cSchristos movl %esp,%ebp 296*4724848cSchristos subl $224,%esp 297*4724848cSchristos andl $-16,%esp 298*4724848cSchristos movq 64(%ebx),%xmm7 299*4724848cSchristos movdqa %xmm4,%xmm0 300*4724848cSchristos movdqa %xmm4,%xmm1 301*4724848cSchristos movdqa %xmm4,%xmm2 302*4724848cSchristos pand %xmm7,%xmm0 303*4724848cSchristos psrlq $26,%xmm1 304*4724848cSchristos psrldq $6,%xmm2 305*4724848cSchristos pand %xmm7,%xmm1 306*4724848cSchristos movdqa %xmm2,%xmm3 307*4724848cSchristos psrlq $4,%xmm2 308*4724848cSchristos psrlq $30,%xmm3 309*4724848cSchristos pand %xmm7,%xmm2 310*4724848cSchristos pand %xmm7,%xmm3 311*4724848cSchristos psrldq $13,%xmm4 312*4724848cSchristos leal 144(%esp),%edx 313*4724848cSchristos movl $2,%ecx 314*4724848cSchristos.L005square: 315*4724848cSchristos movdqa %xmm0,(%esp) 316*4724848cSchristos movdqa %xmm1,16(%esp) 317*4724848cSchristos movdqa %xmm2,32(%esp) 318*4724848cSchristos movdqa %xmm3,48(%esp) 319*4724848cSchristos movdqa %xmm4,64(%esp) 320*4724848cSchristos movdqa %xmm1,%xmm6 321*4724848cSchristos movdqa %xmm2,%xmm5 322*4724848cSchristos pslld $2,%xmm6 323*4724848cSchristos pslld $2,%xmm5 324*4724848cSchristos paddd %xmm1,%xmm6 325*4724848cSchristos paddd %xmm2,%xmm5 326*4724848cSchristos movdqa %xmm6,80(%esp) 327*4724848cSchristos movdqa %xmm5,96(%esp) 328*4724848cSchristos movdqa %xmm3,%xmm6 329*4724848cSchristos movdqa %xmm4,%xmm5 330*4724848cSchristos pslld $2,%xmm6 331*4724848cSchristos pslld $2,%xmm5 332*4724848cSchristos paddd %xmm3,%xmm6 333*4724848cSchristos paddd %xmm4,%xmm5 334*4724848cSchristos movdqa %xmm6,112(%esp) 335*4724848cSchristos movdqa %xmm5,128(%esp) 336*4724848cSchristos pshufd $68,%xmm0,%xmm6 337*4724848cSchristos movdqa %xmm1,%xmm5 338*4724848cSchristos pshufd $68,%xmm1,%xmm1 339*4724848cSchristos pshufd $68,%xmm2,%xmm2 340*4724848cSchristos pshufd $68,%xmm3,%xmm3 341*4724848cSchristos pshufd $68,%xmm4,%xmm4 342*4724848cSchristos movdqa %xmm6,(%edx) 343*4724848cSchristos movdqa %xmm1,16(%edx) 344*4724848cSchristos movdqa %xmm2,32(%edx) 345*4724848cSchristos movdqa %xmm3,48(%edx) 346*4724848cSchristos movdqa %xmm4,64(%edx) 347*4724848cSchristos pmuludq %xmm0,%xmm4 348*4724848cSchristos pmuludq %xmm0,%xmm3 349*4724848cSchristos pmuludq %xmm0,%xmm2 350*4724848cSchristos pmuludq %xmm0,%xmm1 351*4724848cSchristos pmuludq %xmm6,%xmm0 352*4724848cSchristos movdqa %xmm5,%xmm6 353*4724848cSchristos pmuludq 48(%edx),%xmm5 354*4724848cSchristos movdqa %xmm6,%xmm7 355*4724848cSchristos pmuludq 32(%edx),%xmm6 356*4724848cSchristos paddq %xmm5,%xmm4 357*4724848cSchristos movdqa %xmm7,%xmm5 358*4724848cSchristos pmuludq 16(%edx),%xmm7 359*4724848cSchristos paddq %xmm6,%xmm3 360*4724848cSchristos movdqa 80(%esp),%xmm6 361*4724848cSchristos pmuludq (%edx),%xmm5 362*4724848cSchristos paddq %xmm7,%xmm2 363*4724848cSchristos pmuludq 64(%edx),%xmm6 364*4724848cSchristos movdqa 32(%esp),%xmm7 365*4724848cSchristos paddq %xmm5,%xmm1 366*4724848cSchristos movdqa %xmm7,%xmm5 367*4724848cSchristos pmuludq 32(%edx),%xmm7 368*4724848cSchristos paddq %xmm6,%xmm0 369*4724848cSchristos movdqa %xmm5,%xmm6 370*4724848cSchristos pmuludq 16(%edx),%xmm5 371*4724848cSchristos paddq %xmm7,%xmm4 372*4724848cSchristos movdqa 96(%esp),%xmm7 373*4724848cSchristos pmuludq (%edx),%xmm6 374*4724848cSchristos paddq %xmm5,%xmm3 375*4724848cSchristos movdqa %xmm7,%xmm5 376*4724848cSchristos pmuludq 64(%edx),%xmm7 377*4724848cSchristos paddq %xmm6,%xmm2 378*4724848cSchristos pmuludq 48(%edx),%xmm5 379*4724848cSchristos movdqa 48(%esp),%xmm6 380*4724848cSchristos paddq %xmm7,%xmm1 381*4724848cSchristos movdqa %xmm6,%xmm7 382*4724848cSchristos pmuludq 16(%edx),%xmm6 383*4724848cSchristos paddq %xmm5,%xmm0 384*4724848cSchristos movdqa 112(%esp),%xmm5 385*4724848cSchristos pmuludq (%edx),%xmm7 386*4724848cSchristos paddq %xmm6,%xmm4 387*4724848cSchristos movdqa %xmm5,%xmm6 388*4724848cSchristos pmuludq 64(%edx),%xmm5 389*4724848cSchristos paddq %xmm7,%xmm3 390*4724848cSchristos movdqa %xmm6,%xmm7 391*4724848cSchristos pmuludq 48(%edx),%xmm6 392*4724848cSchristos paddq %xmm5,%xmm2 393*4724848cSchristos pmuludq 32(%edx),%xmm7 394*4724848cSchristos movdqa 64(%esp),%xmm5 395*4724848cSchristos paddq %xmm6,%xmm1 396*4724848cSchristos movdqa 128(%esp),%xmm6 397*4724848cSchristos pmuludq (%edx),%xmm5 398*4724848cSchristos paddq %xmm7,%xmm0 399*4724848cSchristos movdqa %xmm6,%xmm7 400*4724848cSchristos pmuludq 64(%edx),%xmm6 401*4724848cSchristos paddq %xmm5,%xmm4 402*4724848cSchristos movdqa %xmm7,%xmm5 403*4724848cSchristos pmuludq 16(%edx),%xmm7 404*4724848cSchristos paddq %xmm6,%xmm3 405*4724848cSchristos movdqa %xmm5,%xmm6 406*4724848cSchristos pmuludq 32(%edx),%xmm5 407*4724848cSchristos paddq %xmm7,%xmm0 408*4724848cSchristos pmuludq 48(%edx),%xmm6 409*4724848cSchristos movdqa 64(%ebx),%xmm7 410*4724848cSchristos paddq %xmm5,%xmm1 411*4724848cSchristos paddq %xmm6,%xmm2 412*4724848cSchristos movdqa %xmm3,%xmm5 413*4724848cSchristos pand %xmm7,%xmm3 414*4724848cSchristos psrlq $26,%xmm5 415*4724848cSchristos paddq %xmm4,%xmm5 416*4724848cSchristos movdqa %xmm0,%xmm6 417*4724848cSchristos pand %xmm7,%xmm0 418*4724848cSchristos psrlq $26,%xmm6 419*4724848cSchristos movdqa %xmm5,%xmm4 420*4724848cSchristos paddq %xmm1,%xmm6 421*4724848cSchristos psrlq $26,%xmm5 422*4724848cSchristos pand %xmm7,%xmm4 423*4724848cSchristos movdqa %xmm6,%xmm1 424*4724848cSchristos psrlq $26,%xmm6 425*4724848cSchristos paddd %xmm5,%xmm0 426*4724848cSchristos psllq $2,%xmm5 427*4724848cSchristos paddq %xmm2,%xmm6 428*4724848cSchristos paddq %xmm0,%xmm5 429*4724848cSchristos pand %xmm7,%xmm1 430*4724848cSchristos movdqa %xmm6,%xmm2 431*4724848cSchristos psrlq $26,%xmm6 432*4724848cSchristos pand %xmm7,%xmm2 433*4724848cSchristos paddd %xmm3,%xmm6 434*4724848cSchristos movdqa %xmm5,%xmm0 435*4724848cSchristos psrlq $26,%xmm5 436*4724848cSchristos movdqa %xmm6,%xmm3 437*4724848cSchristos psrlq $26,%xmm6 438*4724848cSchristos pand %xmm7,%xmm0 439*4724848cSchristos paddd %xmm5,%xmm1 440*4724848cSchristos pand %xmm7,%xmm3 441*4724848cSchristos paddd %xmm6,%xmm4 442*4724848cSchristos decl %ecx 443*4724848cSchristos jz .L006square_break 444*4724848cSchristos punpcklqdq (%esp),%xmm0 445*4724848cSchristos punpcklqdq 16(%esp),%xmm1 446*4724848cSchristos punpcklqdq 32(%esp),%xmm2 447*4724848cSchristos punpcklqdq 48(%esp),%xmm3 448*4724848cSchristos punpcklqdq 64(%esp),%xmm4 449*4724848cSchristos jmp .L005square 450*4724848cSchristos.L006square_break: 451*4724848cSchristos psllq $32,%xmm0 452*4724848cSchristos psllq $32,%xmm1 453*4724848cSchristos psllq $32,%xmm2 454*4724848cSchristos psllq $32,%xmm3 455*4724848cSchristos psllq $32,%xmm4 456*4724848cSchristos por (%esp),%xmm0 457*4724848cSchristos por 16(%esp),%xmm1 458*4724848cSchristos por 32(%esp),%xmm2 459*4724848cSchristos por 48(%esp),%xmm3 460*4724848cSchristos por 64(%esp),%xmm4 461*4724848cSchristos pshufd $141,%xmm0,%xmm0 462*4724848cSchristos pshufd $141,%xmm1,%xmm1 463*4724848cSchristos pshufd $141,%xmm2,%xmm2 464*4724848cSchristos pshufd $141,%xmm3,%xmm3 465*4724848cSchristos pshufd $141,%xmm4,%xmm4 466*4724848cSchristos movdqu %xmm0,(%edi) 467*4724848cSchristos movdqu %xmm1,16(%edi) 468*4724848cSchristos movdqu %xmm2,32(%edi) 469*4724848cSchristos movdqu %xmm3,48(%edi) 470*4724848cSchristos movdqu %xmm4,64(%edi) 471*4724848cSchristos movdqa %xmm1,%xmm6 472*4724848cSchristos movdqa %xmm2,%xmm5 473*4724848cSchristos pslld $2,%xmm6 474*4724848cSchristos pslld $2,%xmm5 475*4724848cSchristos paddd %xmm1,%xmm6 476*4724848cSchristos paddd %xmm2,%xmm5 477*4724848cSchristos movdqu %xmm6,80(%edi) 478*4724848cSchristos movdqu %xmm5,96(%edi) 479*4724848cSchristos movdqa %xmm3,%xmm6 480*4724848cSchristos movdqa %xmm4,%xmm5 481*4724848cSchristos pslld $2,%xmm6 482*4724848cSchristos pslld $2,%xmm5 483*4724848cSchristos paddd %xmm3,%xmm6 484*4724848cSchristos paddd %xmm4,%xmm5 485*4724848cSchristos movdqu %xmm6,112(%edi) 486*4724848cSchristos movdqu %xmm5,128(%edi) 487*4724848cSchristos movl %ebp,%esp 488*4724848cSchristos leal -48(%edi),%edi 489*4724848cSchristos ret 490*4724848cSchristos.size _poly1305_init_sse2,.-_poly1305_init_sse2 491*4724848cSchristos.align 32 492*4724848cSchristos.type _poly1305_blocks_sse2,@function 493*4724848cSchristos.align 16 494*4724848cSchristos_poly1305_blocks_sse2: 495*4724848cSchristos pushl %ebp 496*4724848cSchristos pushl %ebx 497*4724848cSchristos pushl %esi 498*4724848cSchristos pushl %edi 499*4724848cSchristos movl 20(%esp),%edi 500*4724848cSchristos movl 24(%esp),%esi 501*4724848cSchristos movl 28(%esp),%ecx 502*4724848cSchristos movl 20(%edi),%eax 503*4724848cSchristos andl $-16,%ecx 504*4724848cSchristos jz .L007nodata 505*4724848cSchristos cmpl $64,%ecx 506*4724848cSchristos jae .L008enter_sse2 507*4724848cSchristos testl %eax,%eax 508*4724848cSchristos jz .Lenter_blocks 509*4724848cSchristos.align 16 510*4724848cSchristos.L008enter_sse2: 511*4724848cSchristos call .L009pic_point 512*4724848cSchristos.L009pic_point: 513*4724848cSchristos popl %ebx 514*4724848cSchristos leal .Lconst_sse2-.L009pic_point(%ebx),%ebx 515*4724848cSchristos testl %eax,%eax 516*4724848cSchristos jnz .L010base2_26 517*4724848cSchristos call _poly1305_init_sse2 518*4724848cSchristos movl (%edi),%eax 519*4724848cSchristos movl 3(%edi),%ecx 520*4724848cSchristos movl 6(%edi),%edx 521*4724848cSchristos movl 9(%edi),%esi 522*4724848cSchristos movl 13(%edi),%ebp 523*4724848cSchristos movl $1,20(%edi) 524*4724848cSchristos shrl $2,%ecx 525*4724848cSchristos andl $67108863,%eax 526*4724848cSchristos shrl $4,%edx 527*4724848cSchristos andl $67108863,%ecx 528*4724848cSchristos shrl $6,%esi 529*4724848cSchristos andl $67108863,%edx 530*4724848cSchristos movd %eax,%xmm0 531*4724848cSchristos movd %ecx,%xmm1 532*4724848cSchristos movd %edx,%xmm2 533*4724848cSchristos movd %esi,%xmm3 534*4724848cSchristos movd %ebp,%xmm4 535*4724848cSchristos movl 24(%esp),%esi 536*4724848cSchristos movl 28(%esp),%ecx 537*4724848cSchristos jmp .L011base2_32 538*4724848cSchristos.align 16 539*4724848cSchristos.L010base2_26: 540*4724848cSchristos movd (%edi),%xmm0 541*4724848cSchristos movd 4(%edi),%xmm1 542*4724848cSchristos movd 8(%edi),%xmm2 543*4724848cSchristos movd 12(%edi),%xmm3 544*4724848cSchristos movd 16(%edi),%xmm4 545*4724848cSchristos movdqa 64(%ebx),%xmm7 546*4724848cSchristos.L011base2_32: 547*4724848cSchristos movl 32(%esp),%eax 548*4724848cSchristos movl %esp,%ebp 549*4724848cSchristos subl $528,%esp 550*4724848cSchristos andl $-16,%esp 551*4724848cSchristos leal 48(%edi),%edi 552*4724848cSchristos shll $24,%eax 553*4724848cSchristos testl $31,%ecx 554*4724848cSchristos jz .L012even 555*4724848cSchristos movdqu (%esi),%xmm6 556*4724848cSchristos leal 16(%esi),%esi 557*4724848cSchristos movdqa %xmm6,%xmm5 558*4724848cSchristos pand %xmm7,%xmm6 559*4724848cSchristos paddd %xmm6,%xmm0 560*4724848cSchristos movdqa %xmm5,%xmm6 561*4724848cSchristos psrlq $26,%xmm5 562*4724848cSchristos psrldq $6,%xmm6 563*4724848cSchristos pand %xmm7,%xmm5 564*4724848cSchristos paddd %xmm5,%xmm1 565*4724848cSchristos movdqa %xmm6,%xmm5 566*4724848cSchristos psrlq $4,%xmm6 567*4724848cSchristos pand %xmm7,%xmm6 568*4724848cSchristos paddd %xmm6,%xmm2 569*4724848cSchristos movdqa %xmm5,%xmm6 570*4724848cSchristos psrlq $30,%xmm5 571*4724848cSchristos pand %xmm7,%xmm5 572*4724848cSchristos psrldq $7,%xmm6 573*4724848cSchristos paddd %xmm5,%xmm3 574*4724848cSchristos movd %eax,%xmm5 575*4724848cSchristos paddd %xmm6,%xmm4 576*4724848cSchristos movd 12(%edi),%xmm6 577*4724848cSchristos paddd %xmm5,%xmm4 578*4724848cSchristos movdqa %xmm0,(%esp) 579*4724848cSchristos movdqa %xmm1,16(%esp) 580*4724848cSchristos movdqa %xmm2,32(%esp) 581*4724848cSchristos movdqa %xmm3,48(%esp) 582*4724848cSchristos movdqa %xmm4,64(%esp) 583*4724848cSchristos pmuludq %xmm6,%xmm0 584*4724848cSchristos pmuludq %xmm6,%xmm1 585*4724848cSchristos pmuludq %xmm6,%xmm2 586*4724848cSchristos movd 28(%edi),%xmm5 587*4724848cSchristos pmuludq %xmm6,%xmm3 588*4724848cSchristos pmuludq %xmm6,%xmm4 589*4724848cSchristos movdqa %xmm5,%xmm6 590*4724848cSchristos pmuludq 48(%esp),%xmm5 591*4724848cSchristos movdqa %xmm6,%xmm7 592*4724848cSchristos pmuludq 32(%esp),%xmm6 593*4724848cSchristos paddq %xmm5,%xmm4 594*4724848cSchristos movdqa %xmm7,%xmm5 595*4724848cSchristos pmuludq 16(%esp),%xmm7 596*4724848cSchristos paddq %xmm6,%xmm3 597*4724848cSchristos movd 92(%edi),%xmm6 598*4724848cSchristos pmuludq (%esp),%xmm5 599*4724848cSchristos paddq %xmm7,%xmm2 600*4724848cSchristos pmuludq 64(%esp),%xmm6 601*4724848cSchristos movd 44(%edi),%xmm7 602*4724848cSchristos paddq %xmm5,%xmm1 603*4724848cSchristos movdqa %xmm7,%xmm5 604*4724848cSchristos pmuludq 32(%esp),%xmm7 605*4724848cSchristos paddq %xmm6,%xmm0 606*4724848cSchristos movdqa %xmm5,%xmm6 607*4724848cSchristos pmuludq 16(%esp),%xmm5 608*4724848cSchristos paddq %xmm7,%xmm4 609*4724848cSchristos movd 108(%edi),%xmm7 610*4724848cSchristos pmuludq (%esp),%xmm6 611*4724848cSchristos paddq %xmm5,%xmm3 612*4724848cSchristos movdqa %xmm7,%xmm5 613*4724848cSchristos pmuludq 64(%esp),%xmm7 614*4724848cSchristos paddq %xmm6,%xmm2 615*4724848cSchristos pmuludq 48(%esp),%xmm5 616*4724848cSchristos movd 60(%edi),%xmm6 617*4724848cSchristos paddq %xmm7,%xmm1 618*4724848cSchristos movdqa %xmm6,%xmm7 619*4724848cSchristos pmuludq 16(%esp),%xmm6 620*4724848cSchristos paddq %xmm5,%xmm0 621*4724848cSchristos movd 124(%edi),%xmm5 622*4724848cSchristos pmuludq (%esp),%xmm7 623*4724848cSchristos paddq %xmm6,%xmm4 624*4724848cSchristos movdqa %xmm5,%xmm6 625*4724848cSchristos pmuludq 64(%esp),%xmm5 626*4724848cSchristos paddq %xmm7,%xmm3 627*4724848cSchristos movdqa %xmm6,%xmm7 628*4724848cSchristos pmuludq 48(%esp),%xmm6 629*4724848cSchristos paddq %xmm5,%xmm2 630*4724848cSchristos pmuludq 32(%esp),%xmm7 631*4724848cSchristos movd 76(%edi),%xmm5 632*4724848cSchristos paddq %xmm6,%xmm1 633*4724848cSchristos movd 140(%edi),%xmm6 634*4724848cSchristos pmuludq (%esp),%xmm5 635*4724848cSchristos paddq %xmm7,%xmm0 636*4724848cSchristos movdqa %xmm6,%xmm7 637*4724848cSchristos pmuludq 64(%esp),%xmm6 638*4724848cSchristos paddq %xmm5,%xmm4 639*4724848cSchristos movdqa %xmm7,%xmm5 640*4724848cSchristos pmuludq 16(%esp),%xmm7 641*4724848cSchristos paddq %xmm6,%xmm3 642*4724848cSchristos movdqa %xmm5,%xmm6 643*4724848cSchristos pmuludq 32(%esp),%xmm5 644*4724848cSchristos paddq %xmm7,%xmm0 645*4724848cSchristos pmuludq 48(%esp),%xmm6 646*4724848cSchristos movdqa 64(%ebx),%xmm7 647*4724848cSchristos paddq %xmm5,%xmm1 648*4724848cSchristos paddq %xmm6,%xmm2 649*4724848cSchristos movdqa %xmm3,%xmm5 650*4724848cSchristos pand %xmm7,%xmm3 651*4724848cSchristos psrlq $26,%xmm5 652*4724848cSchristos paddq %xmm4,%xmm5 653*4724848cSchristos movdqa %xmm0,%xmm6 654*4724848cSchristos pand %xmm7,%xmm0 655*4724848cSchristos psrlq $26,%xmm6 656*4724848cSchristos movdqa %xmm5,%xmm4 657*4724848cSchristos paddq %xmm1,%xmm6 658*4724848cSchristos psrlq $26,%xmm5 659*4724848cSchristos pand %xmm7,%xmm4 660*4724848cSchristos movdqa %xmm6,%xmm1 661*4724848cSchristos psrlq $26,%xmm6 662*4724848cSchristos paddd %xmm5,%xmm0 663*4724848cSchristos psllq $2,%xmm5 664*4724848cSchristos paddq %xmm2,%xmm6 665*4724848cSchristos paddq %xmm0,%xmm5 666*4724848cSchristos pand %xmm7,%xmm1 667*4724848cSchristos movdqa %xmm6,%xmm2 668*4724848cSchristos psrlq $26,%xmm6 669*4724848cSchristos pand %xmm7,%xmm2 670*4724848cSchristos paddd %xmm3,%xmm6 671*4724848cSchristos movdqa %xmm5,%xmm0 672*4724848cSchristos psrlq $26,%xmm5 673*4724848cSchristos movdqa %xmm6,%xmm3 674*4724848cSchristos psrlq $26,%xmm6 675*4724848cSchristos pand %xmm7,%xmm0 676*4724848cSchristos paddd %xmm5,%xmm1 677*4724848cSchristos pand %xmm7,%xmm3 678*4724848cSchristos paddd %xmm6,%xmm4 679*4724848cSchristos subl $16,%ecx 680*4724848cSchristos jz .L013done 681*4724848cSchristos.L012even: 682*4724848cSchristos leal 384(%esp),%edx 683*4724848cSchristos leal -32(%esi),%eax 684*4724848cSchristos subl $64,%ecx 685*4724848cSchristos movdqu (%edi),%xmm5 686*4724848cSchristos pshufd $68,%xmm5,%xmm6 687*4724848cSchristos cmovbl %eax,%esi 688*4724848cSchristos pshufd $238,%xmm5,%xmm5 689*4724848cSchristos movdqa %xmm6,(%edx) 690*4724848cSchristos leal 160(%esp),%eax 691*4724848cSchristos movdqu 16(%edi),%xmm6 692*4724848cSchristos movdqa %xmm5,-144(%edx) 693*4724848cSchristos pshufd $68,%xmm6,%xmm5 694*4724848cSchristos pshufd $238,%xmm6,%xmm6 695*4724848cSchristos movdqa %xmm5,16(%edx) 696*4724848cSchristos movdqu 32(%edi),%xmm5 697*4724848cSchristos movdqa %xmm6,-128(%edx) 698*4724848cSchristos pshufd $68,%xmm5,%xmm6 699*4724848cSchristos pshufd $238,%xmm5,%xmm5 700*4724848cSchristos movdqa %xmm6,32(%edx) 701*4724848cSchristos movdqu 48(%edi),%xmm6 702*4724848cSchristos movdqa %xmm5,-112(%edx) 703*4724848cSchristos pshufd $68,%xmm6,%xmm5 704*4724848cSchristos pshufd $238,%xmm6,%xmm6 705*4724848cSchristos movdqa %xmm5,48(%edx) 706*4724848cSchristos movdqu 64(%edi),%xmm5 707*4724848cSchristos movdqa %xmm6,-96(%edx) 708*4724848cSchristos pshufd $68,%xmm5,%xmm6 709*4724848cSchristos pshufd $238,%xmm5,%xmm5 710*4724848cSchristos movdqa %xmm6,64(%edx) 711*4724848cSchristos movdqu 80(%edi),%xmm6 712*4724848cSchristos movdqa %xmm5,-80(%edx) 713*4724848cSchristos pshufd $68,%xmm6,%xmm5 714*4724848cSchristos pshufd $238,%xmm6,%xmm6 715*4724848cSchristos movdqa %xmm5,80(%edx) 716*4724848cSchristos movdqu 96(%edi),%xmm5 717*4724848cSchristos movdqa %xmm6,-64(%edx) 718*4724848cSchristos pshufd $68,%xmm5,%xmm6 719*4724848cSchristos pshufd $238,%xmm5,%xmm5 720*4724848cSchristos movdqa %xmm6,96(%edx) 721*4724848cSchristos movdqu 112(%edi),%xmm6 722*4724848cSchristos movdqa %xmm5,-48(%edx) 723*4724848cSchristos pshufd $68,%xmm6,%xmm5 724*4724848cSchristos pshufd $238,%xmm6,%xmm6 725*4724848cSchristos movdqa %xmm5,112(%edx) 726*4724848cSchristos movdqu 128(%edi),%xmm5 727*4724848cSchristos movdqa %xmm6,-32(%edx) 728*4724848cSchristos pshufd $68,%xmm5,%xmm6 729*4724848cSchristos pshufd $238,%xmm5,%xmm5 730*4724848cSchristos movdqa %xmm6,128(%edx) 731*4724848cSchristos movdqa %xmm5,-16(%edx) 732*4724848cSchristos movdqu 32(%esi),%xmm5 733*4724848cSchristos movdqu 48(%esi),%xmm6 734*4724848cSchristos leal 32(%esi),%esi 735*4724848cSchristos movdqa %xmm2,112(%esp) 736*4724848cSchristos movdqa %xmm3,128(%esp) 737*4724848cSchristos movdqa %xmm4,144(%esp) 738*4724848cSchristos movdqa %xmm5,%xmm2 739*4724848cSchristos movdqa %xmm6,%xmm3 740*4724848cSchristos psrldq $6,%xmm2 741*4724848cSchristos psrldq $6,%xmm3 742*4724848cSchristos movdqa %xmm5,%xmm4 743*4724848cSchristos punpcklqdq %xmm3,%xmm2 744*4724848cSchristos punpckhqdq %xmm6,%xmm4 745*4724848cSchristos punpcklqdq %xmm6,%xmm5 746*4724848cSchristos movdqa %xmm2,%xmm3 747*4724848cSchristos psrlq $4,%xmm2 748*4724848cSchristos psrlq $30,%xmm3 749*4724848cSchristos movdqa %xmm5,%xmm6 750*4724848cSchristos psrlq $40,%xmm4 751*4724848cSchristos psrlq $26,%xmm6 752*4724848cSchristos pand %xmm7,%xmm5 753*4724848cSchristos pand %xmm7,%xmm6 754*4724848cSchristos pand %xmm7,%xmm2 755*4724848cSchristos pand %xmm7,%xmm3 756*4724848cSchristos por (%ebx),%xmm4 757*4724848cSchristos movdqa %xmm0,80(%esp) 758*4724848cSchristos movdqa %xmm1,96(%esp) 759*4724848cSchristos jbe .L014skip_loop 760*4724848cSchristos jmp .L015loop 761*4724848cSchristos.align 32 762*4724848cSchristos.L015loop: 763*4724848cSchristos movdqa -144(%edx),%xmm7 764*4724848cSchristos movdqa %xmm6,16(%eax) 765*4724848cSchristos movdqa %xmm2,32(%eax) 766*4724848cSchristos movdqa %xmm3,48(%eax) 767*4724848cSchristos movdqa %xmm4,64(%eax) 768*4724848cSchristos movdqa %xmm5,%xmm1 769*4724848cSchristos pmuludq %xmm7,%xmm5 770*4724848cSchristos movdqa %xmm6,%xmm0 771*4724848cSchristos pmuludq %xmm7,%xmm6 772*4724848cSchristos pmuludq %xmm7,%xmm2 773*4724848cSchristos pmuludq %xmm7,%xmm3 774*4724848cSchristos pmuludq %xmm7,%xmm4 775*4724848cSchristos pmuludq -16(%edx),%xmm0 776*4724848cSchristos movdqa %xmm1,%xmm7 777*4724848cSchristos pmuludq -128(%edx),%xmm1 778*4724848cSchristos paddq %xmm5,%xmm0 779*4724848cSchristos movdqa %xmm7,%xmm5 780*4724848cSchristos pmuludq -112(%edx),%xmm7 781*4724848cSchristos paddq %xmm6,%xmm1 782*4724848cSchristos movdqa %xmm5,%xmm6 783*4724848cSchristos pmuludq -96(%edx),%xmm5 784*4724848cSchristos paddq %xmm7,%xmm2 785*4724848cSchristos movdqa 16(%eax),%xmm7 786*4724848cSchristos pmuludq -80(%edx),%xmm6 787*4724848cSchristos paddq %xmm5,%xmm3 788*4724848cSchristos movdqa %xmm7,%xmm5 789*4724848cSchristos pmuludq -128(%edx),%xmm7 790*4724848cSchristos paddq %xmm6,%xmm4 791*4724848cSchristos movdqa %xmm5,%xmm6 792*4724848cSchristos pmuludq -112(%edx),%xmm5 793*4724848cSchristos paddq %xmm7,%xmm2 794*4724848cSchristos movdqa 32(%eax),%xmm7 795*4724848cSchristos pmuludq -96(%edx),%xmm6 796*4724848cSchristos paddq %xmm5,%xmm3 797*4724848cSchristos movdqa %xmm7,%xmm5 798*4724848cSchristos pmuludq -32(%edx),%xmm7 799*4724848cSchristos paddq %xmm6,%xmm4 800*4724848cSchristos movdqa %xmm5,%xmm6 801*4724848cSchristos pmuludq -16(%edx),%xmm5 802*4724848cSchristos paddq %xmm7,%xmm0 803*4724848cSchristos movdqa %xmm6,%xmm7 804*4724848cSchristos pmuludq -128(%edx),%xmm6 805*4724848cSchristos paddq %xmm5,%xmm1 806*4724848cSchristos movdqa 48(%eax),%xmm5 807*4724848cSchristos pmuludq -112(%edx),%xmm7 808*4724848cSchristos paddq %xmm6,%xmm3 809*4724848cSchristos movdqa %xmm5,%xmm6 810*4724848cSchristos pmuludq -48(%edx),%xmm5 811*4724848cSchristos paddq %xmm7,%xmm4 812*4724848cSchristos movdqa %xmm6,%xmm7 813*4724848cSchristos pmuludq -32(%edx),%xmm6 814*4724848cSchristos paddq %xmm5,%xmm0 815*4724848cSchristos movdqa %xmm7,%xmm5 816*4724848cSchristos pmuludq -16(%edx),%xmm7 817*4724848cSchristos paddq %xmm6,%xmm1 818*4724848cSchristos movdqa 64(%eax),%xmm6 819*4724848cSchristos pmuludq -128(%edx),%xmm5 820*4724848cSchristos paddq %xmm7,%xmm2 821*4724848cSchristos movdqa %xmm6,%xmm7 822*4724848cSchristos pmuludq -16(%edx),%xmm6 823*4724848cSchristos paddq %xmm5,%xmm4 824*4724848cSchristos movdqa %xmm7,%xmm5 825*4724848cSchristos pmuludq -64(%edx),%xmm7 826*4724848cSchristos paddq %xmm6,%xmm3 827*4724848cSchristos movdqa %xmm5,%xmm6 828*4724848cSchristos pmuludq -48(%edx),%xmm5 829*4724848cSchristos paddq %xmm7,%xmm0 830*4724848cSchristos movdqa 64(%ebx),%xmm7 831*4724848cSchristos pmuludq -32(%edx),%xmm6 832*4724848cSchristos paddq %xmm5,%xmm1 833*4724848cSchristos paddq %xmm6,%xmm2 834*4724848cSchristos movdqu -32(%esi),%xmm5 835*4724848cSchristos movdqu -16(%esi),%xmm6 836*4724848cSchristos leal 32(%esi),%esi 837*4724848cSchristos movdqa %xmm2,32(%esp) 838*4724848cSchristos movdqa %xmm3,48(%esp) 839*4724848cSchristos movdqa %xmm4,64(%esp) 840*4724848cSchristos movdqa %xmm5,%xmm2 841*4724848cSchristos movdqa %xmm6,%xmm3 842*4724848cSchristos psrldq $6,%xmm2 843*4724848cSchristos psrldq $6,%xmm3 844*4724848cSchristos movdqa %xmm5,%xmm4 845*4724848cSchristos punpcklqdq %xmm3,%xmm2 846*4724848cSchristos punpckhqdq %xmm6,%xmm4 847*4724848cSchristos punpcklqdq %xmm6,%xmm5 848*4724848cSchristos movdqa %xmm2,%xmm3 849*4724848cSchristos psrlq $4,%xmm2 850*4724848cSchristos psrlq $30,%xmm3 851*4724848cSchristos movdqa %xmm5,%xmm6 852*4724848cSchristos psrlq $40,%xmm4 853*4724848cSchristos psrlq $26,%xmm6 854*4724848cSchristos pand %xmm7,%xmm5 855*4724848cSchristos pand %xmm7,%xmm6 856*4724848cSchristos pand %xmm7,%xmm2 857*4724848cSchristos pand %xmm7,%xmm3 858*4724848cSchristos por (%ebx),%xmm4 859*4724848cSchristos leal -32(%esi),%eax 860*4724848cSchristos subl $64,%ecx 861*4724848cSchristos paddd 80(%esp),%xmm5 862*4724848cSchristos paddd 96(%esp),%xmm6 863*4724848cSchristos paddd 112(%esp),%xmm2 864*4724848cSchristos paddd 128(%esp),%xmm3 865*4724848cSchristos paddd 144(%esp),%xmm4 866*4724848cSchristos cmovbl %eax,%esi 867*4724848cSchristos leal 160(%esp),%eax 868*4724848cSchristos movdqa (%edx),%xmm7 869*4724848cSchristos movdqa %xmm1,16(%esp) 870*4724848cSchristos movdqa %xmm6,16(%eax) 871*4724848cSchristos movdqa %xmm2,32(%eax) 872*4724848cSchristos movdqa %xmm3,48(%eax) 873*4724848cSchristos movdqa %xmm4,64(%eax) 874*4724848cSchristos movdqa %xmm5,%xmm1 875*4724848cSchristos pmuludq %xmm7,%xmm5 876*4724848cSchristos paddq %xmm0,%xmm5 877*4724848cSchristos movdqa %xmm6,%xmm0 878*4724848cSchristos pmuludq %xmm7,%xmm6 879*4724848cSchristos pmuludq %xmm7,%xmm2 880*4724848cSchristos pmuludq %xmm7,%xmm3 881*4724848cSchristos pmuludq %xmm7,%xmm4 882*4724848cSchristos paddq 16(%esp),%xmm6 883*4724848cSchristos paddq 32(%esp),%xmm2 884*4724848cSchristos paddq 48(%esp),%xmm3 885*4724848cSchristos paddq 64(%esp),%xmm4 886*4724848cSchristos pmuludq 128(%edx),%xmm0 887*4724848cSchristos movdqa %xmm1,%xmm7 888*4724848cSchristos pmuludq 16(%edx),%xmm1 889*4724848cSchristos paddq %xmm5,%xmm0 890*4724848cSchristos movdqa %xmm7,%xmm5 891*4724848cSchristos pmuludq 32(%edx),%xmm7 892*4724848cSchristos paddq %xmm6,%xmm1 893*4724848cSchristos movdqa %xmm5,%xmm6 894*4724848cSchristos pmuludq 48(%edx),%xmm5 895*4724848cSchristos paddq %xmm7,%xmm2 896*4724848cSchristos movdqa 16(%eax),%xmm7 897*4724848cSchristos pmuludq 64(%edx),%xmm6 898*4724848cSchristos paddq %xmm5,%xmm3 899*4724848cSchristos movdqa %xmm7,%xmm5 900*4724848cSchristos pmuludq 16(%edx),%xmm7 901*4724848cSchristos paddq %xmm6,%xmm4 902*4724848cSchristos movdqa %xmm5,%xmm6 903*4724848cSchristos pmuludq 32(%edx),%xmm5 904*4724848cSchristos paddq %xmm7,%xmm2 905*4724848cSchristos movdqa 32(%eax),%xmm7 906*4724848cSchristos pmuludq 48(%edx),%xmm6 907*4724848cSchristos paddq %xmm5,%xmm3 908*4724848cSchristos movdqa %xmm7,%xmm5 909*4724848cSchristos pmuludq 112(%edx),%xmm7 910*4724848cSchristos paddq %xmm6,%xmm4 911*4724848cSchristos movdqa %xmm5,%xmm6 912*4724848cSchristos pmuludq 128(%edx),%xmm5 913*4724848cSchristos paddq %xmm7,%xmm0 914*4724848cSchristos movdqa %xmm6,%xmm7 915*4724848cSchristos pmuludq 16(%edx),%xmm6 916*4724848cSchristos paddq %xmm5,%xmm1 917*4724848cSchristos movdqa 48(%eax),%xmm5 918*4724848cSchristos pmuludq 32(%edx),%xmm7 919*4724848cSchristos paddq %xmm6,%xmm3 920*4724848cSchristos movdqa %xmm5,%xmm6 921*4724848cSchristos pmuludq 96(%edx),%xmm5 922*4724848cSchristos paddq %xmm7,%xmm4 923*4724848cSchristos movdqa %xmm6,%xmm7 924*4724848cSchristos pmuludq 112(%edx),%xmm6 925*4724848cSchristos paddq %xmm5,%xmm0 926*4724848cSchristos movdqa %xmm7,%xmm5 927*4724848cSchristos pmuludq 128(%edx),%xmm7 928*4724848cSchristos paddq %xmm6,%xmm1 929*4724848cSchristos movdqa 64(%eax),%xmm6 930*4724848cSchristos pmuludq 16(%edx),%xmm5 931*4724848cSchristos paddq %xmm7,%xmm2 932*4724848cSchristos movdqa %xmm6,%xmm7 933*4724848cSchristos pmuludq 128(%edx),%xmm6 934*4724848cSchristos paddq %xmm5,%xmm4 935*4724848cSchristos movdqa %xmm7,%xmm5 936*4724848cSchristos pmuludq 80(%edx),%xmm7 937*4724848cSchristos paddq %xmm6,%xmm3 938*4724848cSchristos movdqa %xmm5,%xmm6 939*4724848cSchristos pmuludq 96(%edx),%xmm5 940*4724848cSchristos paddq %xmm7,%xmm0 941*4724848cSchristos movdqa 64(%ebx),%xmm7 942*4724848cSchristos pmuludq 112(%edx),%xmm6 943*4724848cSchristos paddq %xmm5,%xmm1 944*4724848cSchristos paddq %xmm6,%xmm2 945*4724848cSchristos movdqa %xmm3,%xmm5 946*4724848cSchristos pand %xmm7,%xmm3 947*4724848cSchristos psrlq $26,%xmm5 948*4724848cSchristos paddq %xmm4,%xmm5 949*4724848cSchristos movdqa %xmm0,%xmm6 950*4724848cSchristos pand %xmm7,%xmm0 951*4724848cSchristos psrlq $26,%xmm6 952*4724848cSchristos movdqa %xmm5,%xmm4 953*4724848cSchristos paddq %xmm1,%xmm6 954*4724848cSchristos psrlq $26,%xmm5 955*4724848cSchristos pand %xmm7,%xmm4 956*4724848cSchristos movdqa %xmm6,%xmm1 957*4724848cSchristos psrlq $26,%xmm6 958*4724848cSchristos paddd %xmm5,%xmm0 959*4724848cSchristos psllq $2,%xmm5 960*4724848cSchristos paddq %xmm2,%xmm6 961*4724848cSchristos paddq %xmm0,%xmm5 962*4724848cSchristos pand %xmm7,%xmm1 963*4724848cSchristos movdqa %xmm6,%xmm2 964*4724848cSchristos psrlq $26,%xmm6 965*4724848cSchristos pand %xmm7,%xmm2 966*4724848cSchristos paddd %xmm3,%xmm6 967*4724848cSchristos movdqa %xmm5,%xmm0 968*4724848cSchristos psrlq $26,%xmm5 969*4724848cSchristos movdqa %xmm6,%xmm3 970*4724848cSchristos psrlq $26,%xmm6 971*4724848cSchristos pand %xmm7,%xmm0 972*4724848cSchristos paddd %xmm5,%xmm1 973*4724848cSchristos pand %xmm7,%xmm3 974*4724848cSchristos paddd %xmm6,%xmm4 975*4724848cSchristos movdqu 32(%esi),%xmm5 976*4724848cSchristos movdqu 48(%esi),%xmm6 977*4724848cSchristos leal 32(%esi),%esi 978*4724848cSchristos movdqa %xmm2,112(%esp) 979*4724848cSchristos movdqa %xmm3,128(%esp) 980*4724848cSchristos movdqa %xmm4,144(%esp) 981*4724848cSchristos movdqa %xmm5,%xmm2 982*4724848cSchristos movdqa %xmm6,%xmm3 983*4724848cSchristos psrldq $6,%xmm2 984*4724848cSchristos psrldq $6,%xmm3 985*4724848cSchristos movdqa %xmm5,%xmm4 986*4724848cSchristos punpcklqdq %xmm3,%xmm2 987*4724848cSchristos punpckhqdq %xmm6,%xmm4 988*4724848cSchristos punpcklqdq %xmm6,%xmm5 989*4724848cSchristos movdqa %xmm2,%xmm3 990*4724848cSchristos psrlq $4,%xmm2 991*4724848cSchristos psrlq $30,%xmm3 992*4724848cSchristos movdqa %xmm5,%xmm6 993*4724848cSchristos psrlq $40,%xmm4 994*4724848cSchristos psrlq $26,%xmm6 995*4724848cSchristos pand %xmm7,%xmm5 996*4724848cSchristos pand %xmm7,%xmm6 997*4724848cSchristos pand %xmm7,%xmm2 998*4724848cSchristos pand %xmm7,%xmm3 999*4724848cSchristos por (%ebx),%xmm4 1000*4724848cSchristos movdqa %xmm0,80(%esp) 1001*4724848cSchristos movdqa %xmm1,96(%esp) 1002*4724848cSchristos ja .L015loop 1003*4724848cSchristos.L014skip_loop: 1004*4724848cSchristos pshufd $16,-144(%edx),%xmm7 1005*4724848cSchristos addl $32,%ecx 1006*4724848cSchristos jnz .L016long_tail 1007*4724848cSchristos paddd %xmm0,%xmm5 1008*4724848cSchristos paddd %xmm1,%xmm6 1009*4724848cSchristos paddd 112(%esp),%xmm2 1010*4724848cSchristos paddd 128(%esp),%xmm3 1011*4724848cSchristos paddd 144(%esp),%xmm4 1012*4724848cSchristos.L016long_tail: 1013*4724848cSchristos movdqa %xmm5,(%eax) 1014*4724848cSchristos movdqa %xmm6,16(%eax) 1015*4724848cSchristos movdqa %xmm2,32(%eax) 1016*4724848cSchristos movdqa %xmm3,48(%eax) 1017*4724848cSchristos movdqa %xmm4,64(%eax) 1018*4724848cSchristos pmuludq %xmm7,%xmm5 1019*4724848cSchristos pmuludq %xmm7,%xmm6 1020*4724848cSchristos pmuludq %xmm7,%xmm2 1021*4724848cSchristos movdqa %xmm5,%xmm0 1022*4724848cSchristos pshufd $16,-128(%edx),%xmm5 1023*4724848cSchristos pmuludq %xmm7,%xmm3 1024*4724848cSchristos movdqa %xmm6,%xmm1 1025*4724848cSchristos pmuludq %xmm7,%xmm4 1026*4724848cSchristos movdqa %xmm5,%xmm6 1027*4724848cSchristos pmuludq 48(%eax),%xmm5 1028*4724848cSchristos movdqa %xmm6,%xmm7 1029*4724848cSchristos pmuludq 32(%eax),%xmm6 1030*4724848cSchristos paddq %xmm5,%xmm4 1031*4724848cSchristos movdqa %xmm7,%xmm5 1032*4724848cSchristos pmuludq 16(%eax),%xmm7 1033*4724848cSchristos paddq %xmm6,%xmm3 1034*4724848cSchristos pshufd $16,-64(%edx),%xmm6 1035*4724848cSchristos pmuludq (%eax),%xmm5 1036*4724848cSchristos paddq %xmm7,%xmm2 1037*4724848cSchristos pmuludq 64(%eax),%xmm6 1038*4724848cSchristos pshufd $16,-112(%edx),%xmm7 1039*4724848cSchristos paddq %xmm5,%xmm1 1040*4724848cSchristos movdqa %xmm7,%xmm5 1041*4724848cSchristos pmuludq 32(%eax),%xmm7 1042*4724848cSchristos paddq %xmm6,%xmm0 1043*4724848cSchristos movdqa %xmm5,%xmm6 1044*4724848cSchristos pmuludq 16(%eax),%xmm5 1045*4724848cSchristos paddq %xmm7,%xmm4 1046*4724848cSchristos pshufd $16,-48(%edx),%xmm7 1047*4724848cSchristos pmuludq (%eax),%xmm6 1048*4724848cSchristos paddq %xmm5,%xmm3 1049*4724848cSchristos movdqa %xmm7,%xmm5 1050*4724848cSchristos pmuludq 64(%eax),%xmm7 1051*4724848cSchristos paddq %xmm6,%xmm2 1052*4724848cSchristos pmuludq 48(%eax),%xmm5 1053*4724848cSchristos pshufd $16,-96(%edx),%xmm6 1054*4724848cSchristos paddq %xmm7,%xmm1 1055*4724848cSchristos movdqa %xmm6,%xmm7 1056*4724848cSchristos pmuludq 16(%eax),%xmm6 1057*4724848cSchristos paddq %xmm5,%xmm0 1058*4724848cSchristos pshufd $16,-32(%edx),%xmm5 1059*4724848cSchristos pmuludq (%eax),%xmm7 1060*4724848cSchristos paddq %xmm6,%xmm4 1061*4724848cSchristos movdqa %xmm5,%xmm6 1062*4724848cSchristos pmuludq 64(%eax),%xmm5 1063*4724848cSchristos paddq %xmm7,%xmm3 1064*4724848cSchristos movdqa %xmm6,%xmm7 1065*4724848cSchristos pmuludq 48(%eax),%xmm6 1066*4724848cSchristos paddq %xmm5,%xmm2 1067*4724848cSchristos pmuludq 32(%eax),%xmm7 1068*4724848cSchristos pshufd $16,-80(%edx),%xmm5 1069*4724848cSchristos paddq %xmm6,%xmm1 1070*4724848cSchristos pshufd $16,-16(%edx),%xmm6 1071*4724848cSchristos pmuludq (%eax),%xmm5 1072*4724848cSchristos paddq %xmm7,%xmm0 1073*4724848cSchristos movdqa %xmm6,%xmm7 1074*4724848cSchristos pmuludq 64(%eax),%xmm6 1075*4724848cSchristos paddq %xmm5,%xmm4 1076*4724848cSchristos movdqa %xmm7,%xmm5 1077*4724848cSchristos pmuludq 16(%eax),%xmm7 1078*4724848cSchristos paddq %xmm6,%xmm3 1079*4724848cSchristos movdqa %xmm5,%xmm6 1080*4724848cSchristos pmuludq 32(%eax),%xmm5 1081*4724848cSchristos paddq %xmm7,%xmm0 1082*4724848cSchristos pmuludq 48(%eax),%xmm6 1083*4724848cSchristos movdqa 64(%ebx),%xmm7 1084*4724848cSchristos paddq %xmm5,%xmm1 1085*4724848cSchristos paddq %xmm6,%xmm2 1086*4724848cSchristos jz .L017short_tail 1087*4724848cSchristos movdqu -32(%esi),%xmm5 1088*4724848cSchristos movdqu -16(%esi),%xmm6 1089*4724848cSchristos leal 32(%esi),%esi 1090*4724848cSchristos movdqa %xmm2,32(%esp) 1091*4724848cSchristos movdqa %xmm3,48(%esp) 1092*4724848cSchristos movdqa %xmm4,64(%esp) 1093*4724848cSchristos movdqa %xmm5,%xmm2 1094*4724848cSchristos movdqa %xmm6,%xmm3 1095*4724848cSchristos psrldq $6,%xmm2 1096*4724848cSchristos psrldq $6,%xmm3 1097*4724848cSchristos movdqa %xmm5,%xmm4 1098*4724848cSchristos punpcklqdq %xmm3,%xmm2 1099*4724848cSchristos punpckhqdq %xmm6,%xmm4 1100*4724848cSchristos punpcklqdq %xmm6,%xmm5 1101*4724848cSchristos movdqa %xmm2,%xmm3 1102*4724848cSchristos psrlq $4,%xmm2 1103*4724848cSchristos psrlq $30,%xmm3 1104*4724848cSchristos movdqa %xmm5,%xmm6 1105*4724848cSchristos psrlq $40,%xmm4 1106*4724848cSchristos psrlq $26,%xmm6 1107*4724848cSchristos pand %xmm7,%xmm5 1108*4724848cSchristos pand %xmm7,%xmm6 1109*4724848cSchristos pand %xmm7,%xmm2 1110*4724848cSchristos pand %xmm7,%xmm3 1111*4724848cSchristos por (%ebx),%xmm4 1112*4724848cSchristos pshufd $16,(%edx),%xmm7 1113*4724848cSchristos paddd 80(%esp),%xmm5 1114*4724848cSchristos paddd 96(%esp),%xmm6 1115*4724848cSchristos paddd 112(%esp),%xmm2 1116*4724848cSchristos paddd 128(%esp),%xmm3 1117*4724848cSchristos paddd 144(%esp),%xmm4 1118*4724848cSchristos movdqa %xmm5,(%esp) 1119*4724848cSchristos pmuludq %xmm7,%xmm5 1120*4724848cSchristos movdqa %xmm6,16(%esp) 1121*4724848cSchristos pmuludq %xmm7,%xmm6 1122*4724848cSchristos paddq %xmm5,%xmm0 1123*4724848cSchristos movdqa %xmm2,%xmm5 1124*4724848cSchristos pmuludq %xmm7,%xmm2 1125*4724848cSchristos paddq %xmm6,%xmm1 1126*4724848cSchristos movdqa %xmm3,%xmm6 1127*4724848cSchristos pmuludq %xmm7,%xmm3 1128*4724848cSchristos paddq 32(%esp),%xmm2 1129*4724848cSchristos movdqa %xmm5,32(%esp) 1130*4724848cSchristos pshufd $16,16(%edx),%xmm5 1131*4724848cSchristos paddq 48(%esp),%xmm3 1132*4724848cSchristos movdqa %xmm6,48(%esp) 1133*4724848cSchristos movdqa %xmm4,%xmm6 1134*4724848cSchristos pmuludq %xmm7,%xmm4 1135*4724848cSchristos paddq 64(%esp),%xmm4 1136*4724848cSchristos movdqa %xmm6,64(%esp) 1137*4724848cSchristos movdqa %xmm5,%xmm6 1138*4724848cSchristos pmuludq 48(%esp),%xmm5 1139*4724848cSchristos movdqa %xmm6,%xmm7 1140*4724848cSchristos pmuludq 32(%esp),%xmm6 1141*4724848cSchristos paddq %xmm5,%xmm4 1142*4724848cSchristos movdqa %xmm7,%xmm5 1143*4724848cSchristos pmuludq 16(%esp),%xmm7 1144*4724848cSchristos paddq %xmm6,%xmm3 1145*4724848cSchristos pshufd $16,80(%edx),%xmm6 1146*4724848cSchristos pmuludq (%esp),%xmm5 1147*4724848cSchristos paddq %xmm7,%xmm2 1148*4724848cSchristos pmuludq 64(%esp),%xmm6 1149*4724848cSchristos pshufd $16,32(%edx),%xmm7 1150*4724848cSchristos paddq %xmm5,%xmm1 1151*4724848cSchristos movdqa %xmm7,%xmm5 1152*4724848cSchristos pmuludq 32(%esp),%xmm7 1153*4724848cSchristos paddq %xmm6,%xmm0 1154*4724848cSchristos movdqa %xmm5,%xmm6 1155*4724848cSchristos pmuludq 16(%esp),%xmm5 1156*4724848cSchristos paddq %xmm7,%xmm4 1157*4724848cSchristos pshufd $16,96(%edx),%xmm7 1158*4724848cSchristos pmuludq (%esp),%xmm6 1159*4724848cSchristos paddq %xmm5,%xmm3 1160*4724848cSchristos movdqa %xmm7,%xmm5 1161*4724848cSchristos pmuludq 64(%esp),%xmm7 1162*4724848cSchristos paddq %xmm6,%xmm2 1163*4724848cSchristos pmuludq 48(%esp),%xmm5 1164*4724848cSchristos pshufd $16,48(%edx),%xmm6 1165*4724848cSchristos paddq %xmm7,%xmm1 1166*4724848cSchristos movdqa %xmm6,%xmm7 1167*4724848cSchristos pmuludq 16(%esp),%xmm6 1168*4724848cSchristos paddq %xmm5,%xmm0 1169*4724848cSchristos pshufd $16,112(%edx),%xmm5 1170*4724848cSchristos pmuludq (%esp),%xmm7 1171*4724848cSchristos paddq %xmm6,%xmm4 1172*4724848cSchristos movdqa %xmm5,%xmm6 1173*4724848cSchristos pmuludq 64(%esp),%xmm5 1174*4724848cSchristos paddq %xmm7,%xmm3 1175*4724848cSchristos movdqa %xmm6,%xmm7 1176*4724848cSchristos pmuludq 48(%esp),%xmm6 1177*4724848cSchristos paddq %xmm5,%xmm2 1178*4724848cSchristos pmuludq 32(%esp),%xmm7 1179*4724848cSchristos pshufd $16,64(%edx),%xmm5 1180*4724848cSchristos paddq %xmm6,%xmm1 1181*4724848cSchristos pshufd $16,128(%edx),%xmm6 1182*4724848cSchristos pmuludq (%esp),%xmm5 1183*4724848cSchristos paddq %xmm7,%xmm0 1184*4724848cSchristos movdqa %xmm6,%xmm7 1185*4724848cSchristos pmuludq 64(%esp),%xmm6 1186*4724848cSchristos paddq %xmm5,%xmm4 1187*4724848cSchristos movdqa %xmm7,%xmm5 1188*4724848cSchristos pmuludq 16(%esp),%xmm7 1189*4724848cSchristos paddq %xmm6,%xmm3 1190*4724848cSchristos movdqa %xmm5,%xmm6 1191*4724848cSchristos pmuludq 32(%esp),%xmm5 1192*4724848cSchristos paddq %xmm7,%xmm0 1193*4724848cSchristos pmuludq 48(%esp),%xmm6 1194*4724848cSchristos movdqa 64(%ebx),%xmm7 1195*4724848cSchristos paddq %xmm5,%xmm1 1196*4724848cSchristos paddq %xmm6,%xmm2 1197*4724848cSchristos.L017short_tail: 1198*4724848cSchristos pshufd $78,%xmm4,%xmm6 1199*4724848cSchristos pshufd $78,%xmm3,%xmm5 1200*4724848cSchristos paddq %xmm6,%xmm4 1201*4724848cSchristos paddq %xmm5,%xmm3 1202*4724848cSchristos pshufd $78,%xmm0,%xmm6 1203*4724848cSchristos pshufd $78,%xmm1,%xmm5 1204*4724848cSchristos paddq %xmm6,%xmm0 1205*4724848cSchristos paddq %xmm5,%xmm1 1206*4724848cSchristos pshufd $78,%xmm2,%xmm6 1207*4724848cSchristos movdqa %xmm3,%xmm5 1208*4724848cSchristos pand %xmm7,%xmm3 1209*4724848cSchristos psrlq $26,%xmm5 1210*4724848cSchristos paddq %xmm6,%xmm2 1211*4724848cSchristos paddq %xmm4,%xmm5 1212*4724848cSchristos movdqa %xmm0,%xmm6 1213*4724848cSchristos pand %xmm7,%xmm0 1214*4724848cSchristos psrlq $26,%xmm6 1215*4724848cSchristos movdqa %xmm5,%xmm4 1216*4724848cSchristos paddq %xmm1,%xmm6 1217*4724848cSchristos psrlq $26,%xmm5 1218*4724848cSchristos pand %xmm7,%xmm4 1219*4724848cSchristos movdqa %xmm6,%xmm1 1220*4724848cSchristos psrlq $26,%xmm6 1221*4724848cSchristos paddd %xmm5,%xmm0 1222*4724848cSchristos psllq $2,%xmm5 1223*4724848cSchristos paddq %xmm2,%xmm6 1224*4724848cSchristos paddq %xmm0,%xmm5 1225*4724848cSchristos pand %xmm7,%xmm1 1226*4724848cSchristos movdqa %xmm6,%xmm2 1227*4724848cSchristos psrlq $26,%xmm6 1228*4724848cSchristos pand %xmm7,%xmm2 1229*4724848cSchristos paddd %xmm3,%xmm6 1230*4724848cSchristos movdqa %xmm5,%xmm0 1231*4724848cSchristos psrlq $26,%xmm5 1232*4724848cSchristos movdqa %xmm6,%xmm3 1233*4724848cSchristos psrlq $26,%xmm6 1234*4724848cSchristos pand %xmm7,%xmm0 1235*4724848cSchristos paddd %xmm5,%xmm1 1236*4724848cSchristos pand %xmm7,%xmm3 1237*4724848cSchristos paddd %xmm6,%xmm4 1238*4724848cSchristos.L013done: 1239*4724848cSchristos movd %xmm0,-48(%edi) 1240*4724848cSchristos movd %xmm1,-44(%edi) 1241*4724848cSchristos movd %xmm2,-40(%edi) 1242*4724848cSchristos movd %xmm3,-36(%edi) 1243*4724848cSchristos movd %xmm4,-32(%edi) 1244*4724848cSchristos movl %ebp,%esp 1245*4724848cSchristos.L007nodata: 1246*4724848cSchristos popl %edi 1247*4724848cSchristos popl %esi 1248*4724848cSchristos popl %ebx 1249*4724848cSchristos popl %ebp 1250*4724848cSchristos ret 1251*4724848cSchristos.size _poly1305_blocks_sse2,.-_poly1305_blocks_sse2 1252*4724848cSchristos.align 32 1253*4724848cSchristos.type _poly1305_emit_sse2,@function 1254*4724848cSchristos.align 16 1255*4724848cSchristos_poly1305_emit_sse2: 1256*4724848cSchristos pushl %ebp 1257*4724848cSchristos pushl %ebx 1258*4724848cSchristos pushl %esi 1259*4724848cSchristos pushl %edi 1260*4724848cSchristos movl 20(%esp),%ebp 1261*4724848cSchristos cmpl $0,20(%ebp) 1262*4724848cSchristos je .Lenter_emit 1263*4724848cSchristos movl (%ebp),%eax 1264*4724848cSchristos movl 4(%ebp),%edi 1265*4724848cSchristos movl 8(%ebp),%ecx 1266*4724848cSchristos movl 12(%ebp),%edx 1267*4724848cSchristos movl 16(%ebp),%esi 1268*4724848cSchristos movl %edi,%ebx 1269*4724848cSchristos shll $26,%edi 1270*4724848cSchristos shrl $6,%ebx 1271*4724848cSchristos addl %edi,%eax 1272*4724848cSchristos movl %ecx,%edi 1273*4724848cSchristos adcl $0,%ebx 1274*4724848cSchristos shll $20,%edi 1275*4724848cSchristos shrl $12,%ecx 1276*4724848cSchristos addl %edi,%ebx 1277*4724848cSchristos movl %edx,%edi 1278*4724848cSchristos adcl $0,%ecx 1279*4724848cSchristos shll $14,%edi 1280*4724848cSchristos shrl $18,%edx 1281*4724848cSchristos addl %edi,%ecx 1282*4724848cSchristos movl %esi,%edi 1283*4724848cSchristos adcl $0,%edx 1284*4724848cSchristos shll $8,%edi 1285*4724848cSchristos shrl $24,%esi 1286*4724848cSchristos addl %edi,%edx 1287*4724848cSchristos adcl $0,%esi 1288*4724848cSchristos movl %esi,%edi 1289*4724848cSchristos andl $3,%esi 1290*4724848cSchristos shrl $2,%edi 1291*4724848cSchristos leal (%edi,%edi,4),%ebp 1292*4724848cSchristos movl 24(%esp),%edi 1293*4724848cSchristos addl %ebp,%eax 1294*4724848cSchristos movl 28(%esp),%ebp 1295*4724848cSchristos adcl $0,%ebx 1296*4724848cSchristos adcl $0,%ecx 1297*4724848cSchristos adcl $0,%edx 1298*4724848cSchristos adcl $0,%esi 1299*4724848cSchristos movd %eax,%xmm0 1300*4724848cSchristos addl $5,%eax 1301*4724848cSchristos movd %ebx,%xmm1 1302*4724848cSchristos adcl $0,%ebx 1303*4724848cSchristos movd %ecx,%xmm2 1304*4724848cSchristos adcl $0,%ecx 1305*4724848cSchristos movd %edx,%xmm3 1306*4724848cSchristos adcl $0,%edx 1307*4724848cSchristos adcl $0,%esi 1308*4724848cSchristos shrl $2,%esi 1309*4724848cSchristos negl %esi 1310*4724848cSchristos andl %esi,%eax 1311*4724848cSchristos andl %esi,%ebx 1312*4724848cSchristos andl %esi,%ecx 1313*4724848cSchristos andl %esi,%edx 1314*4724848cSchristos movl %eax,(%edi) 1315*4724848cSchristos movd %xmm0,%eax 1316*4724848cSchristos movl %ebx,4(%edi) 1317*4724848cSchristos movd %xmm1,%ebx 1318*4724848cSchristos movl %ecx,8(%edi) 1319*4724848cSchristos movd %xmm2,%ecx 1320*4724848cSchristos movl %edx,12(%edi) 1321*4724848cSchristos movd %xmm3,%edx 1322*4724848cSchristos notl %esi 1323*4724848cSchristos andl %esi,%eax 1324*4724848cSchristos andl %esi,%ebx 1325*4724848cSchristos orl (%edi),%eax 1326*4724848cSchristos andl %esi,%ecx 1327*4724848cSchristos orl 4(%edi),%ebx 1328*4724848cSchristos andl %esi,%edx 1329*4724848cSchristos orl 8(%edi),%ecx 1330*4724848cSchristos orl 12(%edi),%edx 1331*4724848cSchristos addl (%ebp),%eax 1332*4724848cSchristos adcl 4(%ebp),%ebx 1333*4724848cSchristos movl %eax,(%edi) 1334*4724848cSchristos adcl 8(%ebp),%ecx 1335*4724848cSchristos movl %ebx,4(%edi) 1336*4724848cSchristos adcl 12(%ebp),%edx 1337*4724848cSchristos movl %ecx,8(%edi) 1338*4724848cSchristos movl %edx,12(%edi) 1339*4724848cSchristos popl %edi 1340*4724848cSchristos popl %esi 1341*4724848cSchristos popl %ebx 1342*4724848cSchristos popl %ebp 1343*4724848cSchristos ret 1344*4724848cSchristos.size _poly1305_emit_sse2,.-_poly1305_emit_sse2 1345*4724848cSchristos.align 64 1346*4724848cSchristos.Lconst_sse2: 1347*4724848cSchristos.long 16777216,0,16777216,0,16777216,0,16777216,0 1348*4724848cSchristos.long 0,0,0,0,0,0,0,0 1349*4724848cSchristos.long 67108863,0,67108863,0,67108863,0,67108863,0 1350*4724848cSchristos.long 268435455,268435452,268435452,268435452 1351*4724848cSchristos.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,120,56,54 1352*4724848cSchristos.byte 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 1353*4724848cSchristos.byte 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 1354*4724848cSchristos.byte 114,103,62,0 1355*4724848cSchristos.align 4 1356*4724848cSchristos.comm OPENSSL_ia32cap_P,16,4 1357