1299966Sjkim# $FreeBSD$ 2299966Sjkim# Do not modify. This file is auto-generated from x86_64-mont5.pl. 3238405Sjkim.text 4238405Sjkim 5238405Sjkim.globl bn_mul_mont_gather5 6238405Sjkim.type bn_mul_mont_gather5,@function 7238405Sjkim.align 64 8238405Sjkimbn_mul_mont_gather5: 9238405Sjkim testl $3,%r9d 10238405Sjkim jnz .Lmul_enter 11238405Sjkim cmpl $8,%r9d 12238405Sjkim jb .Lmul_enter 13238405Sjkim jmp .Lmul4x_enter 14238405Sjkim 15238405Sjkim.align 16 16238405Sjkim.Lmul_enter: 17238405Sjkim movl %r9d,%r9d 18296317Sdelphij movd 8(%rsp),%xmm5 19296317Sdelphij leaq .Linc(%rip),%r10 20238405Sjkim pushq %rbx 21238405Sjkim pushq %rbp 22238405Sjkim pushq %r12 23238405Sjkim pushq %r13 24238405Sjkim pushq %r14 25238405Sjkim pushq %r15 26296317Sdelphij 27296317Sdelphij.Lmul_alloca: 28238405Sjkim movq %rsp,%rax 29238405Sjkim leaq 2(%r9),%r11 30238405Sjkim negq %r11 31296317Sdelphij leaq -264(%rsp,%r11,8),%rsp 32238405Sjkim andq $-1024,%rsp 33238405Sjkim 34238405Sjkim movq %rax,8(%rsp,%r9,8) 35238405Sjkim.Lmul_body: 36298999Sjkim 37298999Sjkim 38298999Sjkim 39298999Sjkim 40298999Sjkim 41298999Sjkim 42298999Sjkim subq %rsp,%rax 43298999Sjkim andq $-4096,%rax 44298999Sjkim.Lmul_page_walk: 45298999Sjkim movq (%rsp,%rax,1),%r11 46298999Sjkim subq $4096,%rax 47298999Sjkim.byte 0x2e 48298999Sjkim jnc .Lmul_page_walk 49298999Sjkim 50296317Sdelphij leaq 128(%rdx),%r12 51296317Sdelphij movdqa 0(%r10),%xmm0 52296317Sdelphij movdqa 16(%r10),%xmm1 53296317Sdelphij leaq 24-112(%rsp,%r9,8),%r10 54296317Sdelphij andq $-16,%r10 55238405Sjkim 56296317Sdelphij pshufd $0,%xmm5,%xmm5 57296317Sdelphij movdqa %xmm1,%xmm4 58296317Sdelphij movdqa %xmm1,%xmm2 59296317Sdelphij paddd %xmm0,%xmm1 60296317Sdelphij pcmpeqd %xmm5,%xmm0 61296317Sdelphij.byte 0x67 62296317Sdelphij movdqa %xmm4,%xmm3 63296317Sdelphij paddd %xmm1,%xmm2 64296317Sdelphij pcmpeqd %xmm5,%xmm1 65296317Sdelphij movdqa %xmm0,112(%r10) 66296317Sdelphij movdqa %xmm4,%xmm0 67296317Sdelphij 68296317Sdelphij paddd %xmm2,%xmm3 69296317Sdelphij pcmpeqd %xmm5,%xmm2 70296317Sdelphij movdqa %xmm1,128(%r10) 71296317Sdelphij movdqa %xmm4,%xmm1 72296317Sdelphij 73296317Sdelphij paddd %xmm3,%xmm0 74296317Sdelphij pcmpeqd %xmm5,%xmm3 75296317Sdelphij movdqa %xmm2,144(%r10) 76296317Sdelphij movdqa %xmm4,%xmm2 77296317Sdelphij 78296317Sdelphij paddd %xmm0,%xmm1 79296317Sdelphij pcmpeqd %xmm5,%xmm0 80296317Sdelphij movdqa %xmm3,160(%r10) 81296317Sdelphij movdqa %xmm4,%xmm3 82296317Sdelphij paddd %xmm1,%xmm2 83296317Sdelphij pcmpeqd %xmm5,%xmm1 84296317Sdelphij movdqa %xmm0,176(%r10) 85296317Sdelphij movdqa %xmm4,%xmm0 86296317Sdelphij 87296317Sdelphij paddd %xmm2,%xmm3 88296317Sdelphij pcmpeqd %xmm5,%xmm2 89296317Sdelphij movdqa %xmm1,192(%r10) 90296317Sdelphij movdqa %xmm4,%xmm1 91296317Sdelphij 92296317Sdelphij paddd %xmm3,%xmm0 93296317Sdelphij pcmpeqd %xmm5,%xmm3 94296317Sdelphij movdqa %xmm2,208(%r10) 95296317Sdelphij movdqa %xmm4,%xmm2 96296317Sdelphij 97296317Sdelphij paddd %xmm0,%xmm1 98296317Sdelphij pcmpeqd %xmm5,%xmm0 99296317Sdelphij movdqa %xmm3,224(%r10) 100296317Sdelphij movdqa %xmm4,%xmm3 101296317Sdelphij paddd %xmm1,%xmm2 102296317Sdelphij pcmpeqd %xmm5,%xmm1 103296317Sdelphij movdqa %xmm0,240(%r10) 104296317Sdelphij movdqa %xmm4,%xmm0 105296317Sdelphij 106296317Sdelphij paddd %xmm2,%xmm3 107296317Sdelphij pcmpeqd %xmm5,%xmm2 108296317Sdelphij movdqa %xmm1,256(%r10) 109296317Sdelphij movdqa %xmm4,%xmm1 110296317Sdelphij 111296317Sdelphij paddd %xmm3,%xmm0 112296317Sdelphij pcmpeqd %xmm5,%xmm3 113296317Sdelphij movdqa %xmm2,272(%r10) 114296317Sdelphij movdqa %xmm4,%xmm2 115296317Sdelphij 116296317Sdelphij paddd %xmm0,%xmm1 117296317Sdelphij pcmpeqd %xmm5,%xmm0 118296317Sdelphij movdqa %xmm3,288(%r10) 119296317Sdelphij movdqa %xmm4,%xmm3 120296317Sdelphij paddd %xmm1,%xmm2 121296317Sdelphij pcmpeqd %xmm5,%xmm1 122296317Sdelphij movdqa %xmm0,304(%r10) 123296317Sdelphij 124296317Sdelphij paddd %xmm2,%xmm3 125296317Sdelphij.byte 0x67 126296317Sdelphij pcmpeqd %xmm5,%xmm2 127296317Sdelphij movdqa %xmm1,320(%r10) 128296317Sdelphij 129296317Sdelphij pcmpeqd %xmm5,%xmm3 130296317Sdelphij movdqa %xmm2,336(%r10) 131296317Sdelphij pand 64(%r12),%xmm0 132296317Sdelphij 133296317Sdelphij pand 80(%r12),%xmm1 134296317Sdelphij pand 96(%r12),%xmm2 135296317Sdelphij movdqa %xmm3,352(%r10) 136296317Sdelphij pand 112(%r12),%xmm3 137296317Sdelphij por %xmm2,%xmm0 138296317Sdelphij por %xmm3,%xmm1 139296317Sdelphij movdqa -128(%r12),%xmm4 140296317Sdelphij movdqa -112(%r12),%xmm5 141296317Sdelphij movdqa -96(%r12),%xmm2 142296317Sdelphij pand 112(%r10),%xmm4 143296317Sdelphij movdqa -80(%r12),%xmm3 144296317Sdelphij pand 128(%r10),%xmm5 145296317Sdelphij por %xmm4,%xmm0 146296317Sdelphij pand 144(%r10),%xmm2 147296317Sdelphij por %xmm5,%xmm1 148296317Sdelphij pand 160(%r10),%xmm3 149296317Sdelphij por %xmm2,%xmm0 150296317Sdelphij por %xmm3,%xmm1 151296317Sdelphij movdqa -64(%r12),%xmm4 152296317Sdelphij movdqa -48(%r12),%xmm5 153296317Sdelphij movdqa -32(%r12),%xmm2 154296317Sdelphij pand 176(%r10),%xmm4 155296317Sdelphij movdqa -16(%r12),%xmm3 156296317Sdelphij pand 192(%r10),%xmm5 157296317Sdelphij por %xmm4,%xmm0 158296317Sdelphij pand 208(%r10),%xmm2 159296317Sdelphij por %xmm5,%xmm1 160296317Sdelphij pand 224(%r10),%xmm3 161296317Sdelphij por %xmm2,%xmm0 162296317Sdelphij por %xmm3,%xmm1 163296317Sdelphij movdqa 0(%r12),%xmm4 164296317Sdelphij movdqa 16(%r12),%xmm5 165296317Sdelphij movdqa 32(%r12),%xmm2 166296317Sdelphij pand 240(%r10),%xmm4 167296317Sdelphij movdqa 48(%r12),%xmm3 168296317Sdelphij pand 256(%r10),%xmm5 169296317Sdelphij por %xmm4,%xmm0 170296317Sdelphij pand 272(%r10),%xmm2 171296317Sdelphij por %xmm5,%xmm1 172296317Sdelphij pand 288(%r10),%xmm3 173296317Sdelphij por %xmm2,%xmm0 174296317Sdelphij por %xmm3,%xmm1 175238405Sjkim por %xmm1,%xmm0 176296317Sdelphij pshufd $78,%xmm0,%xmm1 177296317Sdelphij por %xmm1,%xmm0 178238405Sjkim leaq 256(%r12),%r12 179238405Sjkim.byte 102,72,15,126,195 180238405Sjkim 181238405Sjkim movq (%r8),%r8 182238405Sjkim movq (%rsi),%rax 183238405Sjkim 184238405Sjkim xorq %r14,%r14 185238405Sjkim xorq %r15,%r15 186238405Sjkim 187238405Sjkim movq %r8,%rbp 188238405Sjkim mulq %rbx 189238405Sjkim movq %rax,%r10 190238405Sjkim movq (%rcx),%rax 191238405Sjkim 192238405Sjkim imulq %r10,%rbp 193238405Sjkim movq %rdx,%r11 194238405Sjkim 195238405Sjkim mulq %rbp 196238405Sjkim addq %rax,%r10 197238405Sjkim movq 8(%rsi),%rax 198238405Sjkim adcq $0,%rdx 199238405Sjkim movq %rdx,%r13 200238405Sjkim 201238405Sjkim leaq 1(%r15),%r15 202238405Sjkim jmp .L1st_enter 203238405Sjkim 204238405Sjkim.align 16 205238405Sjkim.L1st: 206238405Sjkim addq %rax,%r13 207238405Sjkim movq (%rsi,%r15,8),%rax 208238405Sjkim adcq $0,%rdx 209238405Sjkim addq %r11,%r13 210238405Sjkim movq %r10,%r11 211238405Sjkim adcq $0,%rdx 212238405Sjkim movq %r13,-16(%rsp,%r15,8) 213238405Sjkim movq %rdx,%r13 214238405Sjkim 215238405Sjkim.L1st_enter: 216238405Sjkim mulq %rbx 217238405Sjkim addq %rax,%r11 218238405Sjkim movq (%rcx,%r15,8),%rax 219238405Sjkim adcq $0,%rdx 220238405Sjkim leaq 1(%r15),%r15 221238405Sjkim movq %rdx,%r10 222238405Sjkim 223238405Sjkim mulq %rbp 224238405Sjkim cmpq %r9,%r15 225238405Sjkim jne .L1st 226238405Sjkim 227238405Sjkim addq %rax,%r13 228238405Sjkim movq (%rsi),%rax 229238405Sjkim adcq $0,%rdx 230238405Sjkim addq %r11,%r13 231238405Sjkim adcq $0,%rdx 232238405Sjkim movq %r13,-16(%rsp,%r15,8) 233238405Sjkim movq %rdx,%r13 234238405Sjkim movq %r10,%r11 235238405Sjkim 236238405Sjkim xorq %rdx,%rdx 237238405Sjkim addq %r11,%r13 238238405Sjkim adcq $0,%rdx 239238405Sjkim movq %r13,-8(%rsp,%r9,8) 240238405Sjkim movq %rdx,(%rsp,%r9,8) 241238405Sjkim 242238405Sjkim leaq 1(%r14),%r14 243238405Sjkim jmp .Louter 244238405Sjkim.align 16 245238405Sjkim.Louter: 246296317Sdelphij leaq 24+128(%rsp,%r9,8),%rdx 247296317Sdelphij andq $-16,%rdx 248296317Sdelphij pxor %xmm4,%xmm4 249296317Sdelphij pxor %xmm5,%xmm5 250296317Sdelphij movdqa -128(%r12),%xmm0 251296317Sdelphij movdqa -112(%r12),%xmm1 252296317Sdelphij movdqa -96(%r12),%xmm2 253296317Sdelphij movdqa -80(%r12),%xmm3 254296317Sdelphij pand -128(%rdx),%xmm0 255296317Sdelphij pand -112(%rdx),%xmm1 256296317Sdelphij por %xmm0,%xmm4 257296317Sdelphij pand -96(%rdx),%xmm2 258296317Sdelphij por %xmm1,%xmm5 259296317Sdelphij pand -80(%rdx),%xmm3 260296317Sdelphij por %xmm2,%xmm4 261296317Sdelphij por %xmm3,%xmm5 262296317Sdelphij movdqa -64(%r12),%xmm0 263296317Sdelphij movdqa -48(%r12),%xmm1 264296317Sdelphij movdqa -32(%r12),%xmm2 265296317Sdelphij movdqa -16(%r12),%xmm3 266296317Sdelphij pand -64(%rdx),%xmm0 267296317Sdelphij pand -48(%rdx),%xmm1 268296317Sdelphij por %xmm0,%xmm4 269296317Sdelphij pand -32(%rdx),%xmm2 270296317Sdelphij por %xmm1,%xmm5 271296317Sdelphij pand -16(%rdx),%xmm3 272296317Sdelphij por %xmm2,%xmm4 273296317Sdelphij por %xmm3,%xmm5 274296317Sdelphij movdqa 0(%r12),%xmm0 275296317Sdelphij movdqa 16(%r12),%xmm1 276296317Sdelphij movdqa 32(%r12),%xmm2 277296317Sdelphij movdqa 48(%r12),%xmm3 278296317Sdelphij pand 0(%rdx),%xmm0 279296317Sdelphij pand 16(%rdx),%xmm1 280296317Sdelphij por %xmm0,%xmm4 281296317Sdelphij pand 32(%rdx),%xmm2 282296317Sdelphij por %xmm1,%xmm5 283296317Sdelphij pand 48(%rdx),%xmm3 284296317Sdelphij por %xmm2,%xmm4 285296317Sdelphij por %xmm3,%xmm5 286296317Sdelphij movdqa 64(%r12),%xmm0 287296317Sdelphij movdqa 80(%r12),%xmm1 288296317Sdelphij movdqa 96(%r12),%xmm2 289296317Sdelphij movdqa 112(%r12),%xmm3 290296317Sdelphij pand 64(%rdx),%xmm0 291296317Sdelphij pand 80(%rdx),%xmm1 292296317Sdelphij por %xmm0,%xmm4 293296317Sdelphij pand 96(%rdx),%xmm2 294296317Sdelphij por %xmm1,%xmm5 295296317Sdelphij pand 112(%rdx),%xmm3 296296317Sdelphij por %xmm2,%xmm4 297296317Sdelphij por %xmm3,%xmm5 298296317Sdelphij por %xmm5,%xmm4 299296317Sdelphij pshufd $78,%xmm4,%xmm0 300296317Sdelphij por %xmm4,%xmm0 301296317Sdelphij leaq 256(%r12),%r12 302296317Sdelphij.byte 102,72,15,126,195 303296317Sdelphij 304238405Sjkim xorq %r15,%r15 305238405Sjkim movq %r8,%rbp 306238405Sjkim movq (%rsp),%r10 307238405Sjkim 308238405Sjkim mulq %rbx 309238405Sjkim addq %rax,%r10 310238405Sjkim movq (%rcx),%rax 311238405Sjkim adcq $0,%rdx 312238405Sjkim 313238405Sjkim imulq %r10,%rbp 314238405Sjkim movq %rdx,%r11 315238405Sjkim 316238405Sjkim mulq %rbp 317238405Sjkim addq %rax,%r10 318238405Sjkim movq 8(%rsi),%rax 319238405Sjkim adcq $0,%rdx 320238405Sjkim movq 8(%rsp),%r10 321238405Sjkim movq %rdx,%r13 322238405Sjkim 323238405Sjkim leaq 1(%r15),%r15 324238405Sjkim jmp .Linner_enter 325238405Sjkim 326238405Sjkim.align 16 327238405Sjkim.Linner: 328238405Sjkim addq %rax,%r13 329238405Sjkim movq (%rsi,%r15,8),%rax 330238405Sjkim adcq $0,%rdx 331238405Sjkim addq %r10,%r13 332238405Sjkim movq (%rsp,%r15,8),%r10 333238405Sjkim adcq $0,%rdx 334238405Sjkim movq %r13,-16(%rsp,%r15,8) 335238405Sjkim movq %rdx,%r13 336238405Sjkim 337238405Sjkim.Linner_enter: 338238405Sjkim mulq %rbx 339238405Sjkim addq %rax,%r11 340238405Sjkim movq (%rcx,%r15,8),%rax 341238405Sjkim adcq $0,%rdx 342238405Sjkim addq %r11,%r10 343238405Sjkim movq %rdx,%r11 344238405Sjkim adcq $0,%r11 345238405Sjkim leaq 1(%r15),%r15 346238405Sjkim 347238405Sjkim mulq %rbp 348238405Sjkim cmpq %r9,%r15 349238405Sjkim jne .Linner 350238405Sjkim 351238405Sjkim addq %rax,%r13 352238405Sjkim movq (%rsi),%rax 353238405Sjkim adcq $0,%rdx 354238405Sjkim addq %r10,%r13 355238405Sjkim movq (%rsp,%r15,8),%r10 356238405Sjkim adcq $0,%rdx 357238405Sjkim movq %r13,-16(%rsp,%r15,8) 358238405Sjkim movq %rdx,%r13 359238405Sjkim 360238405Sjkim xorq %rdx,%rdx 361238405Sjkim addq %r11,%r13 362238405Sjkim adcq $0,%rdx 363238405Sjkim addq %r10,%r13 364238405Sjkim adcq $0,%rdx 365238405Sjkim movq %r13,-8(%rsp,%r9,8) 366238405Sjkim movq %rdx,(%rsp,%r9,8) 367238405Sjkim 368238405Sjkim leaq 1(%r14),%r14 369238405Sjkim cmpq %r9,%r14 370238405Sjkim jl .Louter 371238405Sjkim 372238405Sjkim xorq %r14,%r14 373238405Sjkim movq (%rsp),%rax 374238405Sjkim leaq (%rsp),%rsi 375238405Sjkim movq %r9,%r15 376238405Sjkim jmp .Lsub 377238405Sjkim.align 16 378238405Sjkim.Lsub: sbbq (%rcx,%r14,8),%rax 379238405Sjkim movq %rax,(%rdi,%r14,8) 380238405Sjkim movq 8(%rsi,%r14,8),%rax 381238405Sjkim leaq 1(%r14),%r14 382238405Sjkim decq %r15 383238405Sjkim jnz .Lsub 384238405Sjkim 385238405Sjkim sbbq $0,%rax 386238405Sjkim xorq %r14,%r14 387238405Sjkim andq %rax,%rsi 388238405Sjkim notq %rax 389238405Sjkim movq %rdi,%rcx 390238405Sjkim andq %rax,%rcx 391238405Sjkim movq %r9,%r15 392238405Sjkim orq %rcx,%rsi 393238405Sjkim.align 16 394238405Sjkim.Lcopy: 395238405Sjkim movq (%rsi,%r14,8),%rax 396238405Sjkim movq %r14,(%rsp,%r14,8) 397238405Sjkim movq %rax,(%rdi,%r14,8) 398238405Sjkim leaq 1(%r14),%r14 399238405Sjkim subq $1,%r15 400238405Sjkim jnz .Lcopy 401238405Sjkim 402238405Sjkim movq 8(%rsp,%r9,8),%rsi 403238405Sjkim movq $1,%rax 404296317Sdelphij 405238405Sjkim movq (%rsi),%r15 406238405Sjkim movq 8(%rsi),%r14 407238405Sjkim movq 16(%rsi),%r13 408238405Sjkim movq 24(%rsi),%r12 409238405Sjkim movq 32(%rsi),%rbp 410238405Sjkim movq 40(%rsi),%rbx 411238405Sjkim leaq 48(%rsi),%rsp 412238405Sjkim.Lmul_epilogue: 413238405Sjkim .byte 0xf3,0xc3 414238405Sjkim.size bn_mul_mont_gather5,.-bn_mul_mont_gather5 415238405Sjkim.type bn_mul4x_mont_gather5,@function 416238405Sjkim.align 16 417238405Sjkimbn_mul4x_mont_gather5: 418238405Sjkim.Lmul4x_enter: 419238405Sjkim movl %r9d,%r9d 420296317Sdelphij movd 8(%rsp),%xmm5 421296317Sdelphij leaq .Linc(%rip),%r10 422238405Sjkim pushq %rbx 423238405Sjkim pushq %rbp 424238405Sjkim pushq %r12 425238405Sjkim pushq %r13 426238405Sjkim pushq %r14 427238405Sjkim pushq %r15 428296317Sdelphij 429296317Sdelphij.Lmul4x_alloca: 430238405Sjkim movq %rsp,%rax 431238405Sjkim leaq 4(%r9),%r11 432238405Sjkim negq %r11 433296317Sdelphij leaq -256(%rsp,%r11,8),%rsp 434238405Sjkim andq $-1024,%rsp 435238405Sjkim 436238405Sjkim movq %rax,8(%rsp,%r9,8) 437238405Sjkim.Lmul4x_body: 438298999Sjkim subq %rsp,%rax 439298999Sjkim andq $-4096,%rax 440298999Sjkim.Lmul4x_page_walk: 441298999Sjkim movq (%rsp,%rax,1),%r11 442298999Sjkim subq $4096,%rax 443298999Sjkim.byte 0x2e 444298999Sjkim jnc .Lmul4x_page_walk 445298999Sjkim 446238405Sjkim movq %rdi,16(%rsp,%r9,8) 447296317Sdelphij leaq 128(%rdx),%r12 448296317Sdelphij movdqa 0(%r10),%xmm0 449296317Sdelphij movdqa 16(%r10),%xmm1 450296317Sdelphij leaq 32-112(%rsp,%r9,8),%r10 451238405Sjkim 452296317Sdelphij pshufd $0,%xmm5,%xmm5 453296317Sdelphij movdqa %xmm1,%xmm4 454296317Sdelphij.byte 0x67,0x67 455296317Sdelphij movdqa %xmm1,%xmm2 456296317Sdelphij paddd %xmm0,%xmm1 457296317Sdelphij pcmpeqd %xmm5,%xmm0 458296317Sdelphij.byte 0x67 459296317Sdelphij movdqa %xmm4,%xmm3 460296317Sdelphij paddd %xmm1,%xmm2 461296317Sdelphij pcmpeqd %xmm5,%xmm1 462296317Sdelphij movdqa %xmm0,112(%r10) 463296317Sdelphij movdqa %xmm4,%xmm0 464296317Sdelphij 465296317Sdelphij paddd %xmm2,%xmm3 466296317Sdelphij pcmpeqd %xmm5,%xmm2 467296317Sdelphij movdqa %xmm1,128(%r10) 468296317Sdelphij movdqa %xmm4,%xmm1 469296317Sdelphij 470296317Sdelphij paddd %xmm3,%xmm0 471296317Sdelphij pcmpeqd %xmm5,%xmm3 472296317Sdelphij movdqa %xmm2,144(%r10) 473296317Sdelphij movdqa %xmm4,%xmm2 474296317Sdelphij 475296317Sdelphij paddd %xmm0,%xmm1 476296317Sdelphij pcmpeqd %xmm5,%xmm0 477296317Sdelphij movdqa %xmm3,160(%r10) 478296317Sdelphij movdqa %xmm4,%xmm3 479296317Sdelphij paddd %xmm1,%xmm2 480296317Sdelphij pcmpeqd %xmm5,%xmm1 481296317Sdelphij movdqa %xmm0,176(%r10) 482296317Sdelphij movdqa %xmm4,%xmm0 483296317Sdelphij 484296317Sdelphij paddd %xmm2,%xmm3 485296317Sdelphij pcmpeqd %xmm5,%xmm2 486296317Sdelphij movdqa %xmm1,192(%r10) 487296317Sdelphij movdqa %xmm4,%xmm1 488296317Sdelphij 489296317Sdelphij paddd %xmm3,%xmm0 490296317Sdelphij pcmpeqd %xmm5,%xmm3 491296317Sdelphij movdqa %xmm2,208(%r10) 492296317Sdelphij movdqa %xmm4,%xmm2 493296317Sdelphij 494296317Sdelphij paddd %xmm0,%xmm1 495296317Sdelphij pcmpeqd %xmm5,%xmm0 496296317Sdelphij movdqa %xmm3,224(%r10) 497296317Sdelphij movdqa %xmm4,%xmm3 498296317Sdelphij paddd %xmm1,%xmm2 499296317Sdelphij pcmpeqd %xmm5,%xmm1 500296317Sdelphij movdqa %xmm0,240(%r10) 501296317Sdelphij movdqa %xmm4,%xmm0 502296317Sdelphij 503296317Sdelphij paddd %xmm2,%xmm3 504296317Sdelphij pcmpeqd %xmm5,%xmm2 505296317Sdelphij movdqa %xmm1,256(%r10) 506296317Sdelphij movdqa %xmm4,%xmm1 507296317Sdelphij 508296317Sdelphij paddd %xmm3,%xmm0 509296317Sdelphij pcmpeqd %xmm5,%xmm3 510296317Sdelphij movdqa %xmm2,272(%r10) 511296317Sdelphij movdqa %xmm4,%xmm2 512296317Sdelphij 513296317Sdelphij paddd %xmm0,%xmm1 514296317Sdelphij pcmpeqd %xmm5,%xmm0 515296317Sdelphij movdqa %xmm3,288(%r10) 516296317Sdelphij movdqa %xmm4,%xmm3 517296317Sdelphij paddd %xmm1,%xmm2 518296317Sdelphij pcmpeqd %xmm5,%xmm1 519296317Sdelphij movdqa %xmm0,304(%r10) 520296317Sdelphij 521296317Sdelphij paddd %xmm2,%xmm3 522296317Sdelphij.byte 0x67 523296317Sdelphij pcmpeqd %xmm5,%xmm2 524296317Sdelphij movdqa %xmm1,320(%r10) 525296317Sdelphij 526296317Sdelphij pcmpeqd %xmm5,%xmm3 527296317Sdelphij movdqa %xmm2,336(%r10) 528296317Sdelphij pand 64(%r12),%xmm0 529296317Sdelphij 530296317Sdelphij pand 80(%r12),%xmm1 531296317Sdelphij pand 96(%r12),%xmm2 532296317Sdelphij movdqa %xmm3,352(%r10) 533296317Sdelphij pand 112(%r12),%xmm3 534296317Sdelphij por %xmm2,%xmm0 535296317Sdelphij por %xmm3,%xmm1 536296317Sdelphij movdqa -128(%r12),%xmm4 537296317Sdelphij movdqa -112(%r12),%xmm5 538296317Sdelphij movdqa -96(%r12),%xmm2 539296317Sdelphij pand 112(%r10),%xmm4 540296317Sdelphij movdqa -80(%r12),%xmm3 541296317Sdelphij pand 128(%r10),%xmm5 542296317Sdelphij por %xmm4,%xmm0 543296317Sdelphij pand 144(%r10),%xmm2 544296317Sdelphij por %xmm5,%xmm1 545296317Sdelphij pand 160(%r10),%xmm3 546296317Sdelphij por %xmm2,%xmm0 547296317Sdelphij por %xmm3,%xmm1 548296317Sdelphij movdqa -64(%r12),%xmm4 549296317Sdelphij movdqa -48(%r12),%xmm5 550296317Sdelphij movdqa -32(%r12),%xmm2 551296317Sdelphij pand 176(%r10),%xmm4 552296317Sdelphij movdqa -16(%r12),%xmm3 553296317Sdelphij pand 192(%r10),%xmm5 554296317Sdelphij por %xmm4,%xmm0 555296317Sdelphij pand 208(%r10),%xmm2 556296317Sdelphij por %xmm5,%xmm1 557296317Sdelphij pand 224(%r10),%xmm3 558296317Sdelphij por %xmm2,%xmm0 559296317Sdelphij por %xmm3,%xmm1 560296317Sdelphij movdqa 0(%r12),%xmm4 561296317Sdelphij movdqa 16(%r12),%xmm5 562296317Sdelphij movdqa 32(%r12),%xmm2 563296317Sdelphij pand 240(%r10),%xmm4 564296317Sdelphij movdqa 48(%r12),%xmm3 565296317Sdelphij pand 256(%r10),%xmm5 566296317Sdelphij por %xmm4,%xmm0 567296317Sdelphij pand 272(%r10),%xmm2 568296317Sdelphij por %xmm5,%xmm1 569296317Sdelphij pand 288(%r10),%xmm3 570296317Sdelphij por %xmm2,%xmm0 571296317Sdelphij por %xmm3,%xmm1 572238405Sjkim por %xmm1,%xmm0 573296317Sdelphij pshufd $78,%xmm0,%xmm1 574296317Sdelphij por %xmm1,%xmm0 575238405Sjkim leaq 256(%r12),%r12 576296317Sdelphij.byte 102,72,15,126,195 577238405Sjkim 578238405Sjkim movq (%r8),%r8 579238405Sjkim movq (%rsi),%rax 580238405Sjkim 581238405Sjkim xorq %r14,%r14 582238405Sjkim xorq %r15,%r15 583238405Sjkim 584238405Sjkim movq %r8,%rbp 585238405Sjkim mulq %rbx 586238405Sjkim movq %rax,%r10 587238405Sjkim movq (%rcx),%rax 588238405Sjkim 589238405Sjkim imulq %r10,%rbp 590238405Sjkim movq %rdx,%r11 591238405Sjkim 592238405Sjkim mulq %rbp 593238405Sjkim addq %rax,%r10 594238405Sjkim movq 8(%rsi),%rax 595238405Sjkim adcq $0,%rdx 596238405Sjkim movq %rdx,%rdi 597238405Sjkim 598238405Sjkim mulq %rbx 599238405Sjkim addq %rax,%r11 600238405Sjkim movq 8(%rcx),%rax 601238405Sjkim adcq $0,%rdx 602238405Sjkim movq %rdx,%r10 603238405Sjkim 604238405Sjkim mulq %rbp 605238405Sjkim addq %rax,%rdi 606238405Sjkim movq 16(%rsi),%rax 607238405Sjkim adcq $0,%rdx 608238405Sjkim addq %r11,%rdi 609238405Sjkim leaq 4(%r15),%r15 610238405Sjkim adcq $0,%rdx 611238405Sjkim movq %rdi,(%rsp) 612238405Sjkim movq %rdx,%r13 613238405Sjkim jmp .L1st4x 614238405Sjkim.align 16 615238405Sjkim.L1st4x: 616238405Sjkim mulq %rbx 617238405Sjkim addq %rax,%r10 618238405Sjkim movq -16(%rcx,%r15,8),%rax 619238405Sjkim adcq $0,%rdx 620238405Sjkim movq %rdx,%r11 621238405Sjkim 622238405Sjkim mulq %rbp 623238405Sjkim addq %rax,%r13 624238405Sjkim movq -8(%rsi,%r15,8),%rax 625238405Sjkim adcq $0,%rdx 626238405Sjkim addq %r10,%r13 627238405Sjkim adcq $0,%rdx 628238405Sjkim movq %r13,-24(%rsp,%r15,8) 629238405Sjkim movq %rdx,%rdi 630238405Sjkim 631238405Sjkim mulq %rbx 632238405Sjkim addq %rax,%r11 633238405Sjkim movq -8(%rcx,%r15,8),%rax 634238405Sjkim adcq $0,%rdx 635238405Sjkim movq %rdx,%r10 636238405Sjkim 637238405Sjkim mulq %rbp 638238405Sjkim addq %rax,%rdi 639238405Sjkim movq (%rsi,%r15,8),%rax 640238405Sjkim adcq $0,%rdx 641238405Sjkim addq %r11,%rdi 642238405Sjkim adcq $0,%rdx 643238405Sjkim movq %rdi,-16(%rsp,%r15,8) 644238405Sjkim movq %rdx,%r13 645238405Sjkim 646238405Sjkim mulq %rbx 647238405Sjkim addq %rax,%r10 648238405Sjkim movq (%rcx,%r15,8),%rax 649238405Sjkim adcq $0,%rdx 650238405Sjkim movq %rdx,%r11 651238405Sjkim 652238405Sjkim mulq %rbp 653238405Sjkim addq %rax,%r13 654238405Sjkim movq 8(%rsi,%r15,8),%rax 655238405Sjkim adcq $0,%rdx 656238405Sjkim addq %r10,%r13 657238405Sjkim adcq $0,%rdx 658238405Sjkim movq %r13,-8(%rsp,%r15,8) 659238405Sjkim movq %rdx,%rdi 660238405Sjkim 661238405Sjkim mulq %rbx 662238405Sjkim addq %rax,%r11 663238405Sjkim movq 8(%rcx,%r15,8),%rax 664238405Sjkim adcq $0,%rdx 665238405Sjkim leaq 4(%r15),%r15 666238405Sjkim movq %rdx,%r10 667238405Sjkim 668238405Sjkim mulq %rbp 669238405Sjkim addq %rax,%rdi 670238405Sjkim movq -16(%rsi,%r15,8),%rax 671238405Sjkim adcq $0,%rdx 672238405Sjkim addq %r11,%rdi 673238405Sjkim adcq $0,%rdx 674238405Sjkim movq %rdi,-32(%rsp,%r15,8) 675238405Sjkim movq %rdx,%r13 676238405Sjkim cmpq %r9,%r15 677238405Sjkim jl .L1st4x 678238405Sjkim 679238405Sjkim mulq %rbx 680238405Sjkim addq %rax,%r10 681238405Sjkim movq -16(%rcx,%r15,8),%rax 682238405Sjkim adcq $0,%rdx 683238405Sjkim movq %rdx,%r11 684238405Sjkim 685238405Sjkim mulq %rbp 686238405Sjkim addq %rax,%r13 687238405Sjkim movq -8(%rsi,%r15,8),%rax 688238405Sjkim adcq $0,%rdx 689238405Sjkim addq %r10,%r13 690238405Sjkim adcq $0,%rdx 691238405Sjkim movq %r13,-24(%rsp,%r15,8) 692238405Sjkim movq %rdx,%rdi 693238405Sjkim 694238405Sjkim mulq %rbx 695238405Sjkim addq %rax,%r11 696238405Sjkim movq -8(%rcx,%r15,8),%rax 697238405Sjkim adcq $0,%rdx 698238405Sjkim movq %rdx,%r10 699238405Sjkim 700238405Sjkim mulq %rbp 701238405Sjkim addq %rax,%rdi 702238405Sjkim movq (%rsi),%rax 703238405Sjkim adcq $0,%rdx 704238405Sjkim addq %r11,%rdi 705238405Sjkim adcq $0,%rdx 706238405Sjkim movq %rdi,-16(%rsp,%r15,8) 707238405Sjkim movq %rdx,%r13 708238405Sjkim 709238405Sjkim xorq %rdi,%rdi 710238405Sjkim addq %r10,%r13 711238405Sjkim adcq $0,%rdi 712238405Sjkim movq %r13,-8(%rsp,%r15,8) 713238405Sjkim movq %rdi,(%rsp,%r15,8) 714238405Sjkim 715238405Sjkim leaq 1(%r14),%r14 716238405Sjkim.align 4 717238405Sjkim.Louter4x: 718296317Sdelphij leaq 32+128(%rsp,%r9,8),%rdx 719296317Sdelphij pxor %xmm4,%xmm4 720296317Sdelphij pxor %xmm5,%xmm5 721296317Sdelphij movdqa -128(%r12),%xmm0 722296317Sdelphij movdqa -112(%r12),%xmm1 723296317Sdelphij movdqa -96(%r12),%xmm2 724296317Sdelphij movdqa -80(%r12),%xmm3 725296317Sdelphij pand -128(%rdx),%xmm0 726296317Sdelphij pand -112(%rdx),%xmm1 727296317Sdelphij por %xmm0,%xmm4 728296317Sdelphij pand -96(%rdx),%xmm2 729296317Sdelphij por %xmm1,%xmm5 730296317Sdelphij pand -80(%rdx),%xmm3 731296317Sdelphij por %xmm2,%xmm4 732296317Sdelphij por %xmm3,%xmm5 733296317Sdelphij movdqa -64(%r12),%xmm0 734296317Sdelphij movdqa -48(%r12),%xmm1 735296317Sdelphij movdqa -32(%r12),%xmm2 736296317Sdelphij movdqa -16(%r12),%xmm3 737296317Sdelphij pand -64(%rdx),%xmm0 738296317Sdelphij pand -48(%rdx),%xmm1 739296317Sdelphij por %xmm0,%xmm4 740296317Sdelphij pand -32(%rdx),%xmm2 741296317Sdelphij por %xmm1,%xmm5 742296317Sdelphij pand -16(%rdx),%xmm3 743296317Sdelphij por %xmm2,%xmm4 744296317Sdelphij por %xmm3,%xmm5 745296317Sdelphij movdqa 0(%r12),%xmm0 746296317Sdelphij movdqa 16(%r12),%xmm1 747296317Sdelphij movdqa 32(%r12),%xmm2 748296317Sdelphij movdqa 48(%r12),%xmm3 749296317Sdelphij pand 0(%rdx),%xmm0 750296317Sdelphij pand 16(%rdx),%xmm1 751296317Sdelphij por %xmm0,%xmm4 752296317Sdelphij pand 32(%rdx),%xmm2 753296317Sdelphij por %xmm1,%xmm5 754296317Sdelphij pand 48(%rdx),%xmm3 755296317Sdelphij por %xmm2,%xmm4 756296317Sdelphij por %xmm3,%xmm5 757296317Sdelphij movdqa 64(%r12),%xmm0 758296317Sdelphij movdqa 80(%r12),%xmm1 759296317Sdelphij movdqa 96(%r12),%xmm2 760296317Sdelphij movdqa 112(%r12),%xmm3 761296317Sdelphij pand 64(%rdx),%xmm0 762296317Sdelphij pand 80(%rdx),%xmm1 763296317Sdelphij por %xmm0,%xmm4 764296317Sdelphij pand 96(%rdx),%xmm2 765296317Sdelphij por %xmm1,%xmm5 766296317Sdelphij pand 112(%rdx),%xmm3 767296317Sdelphij por %xmm2,%xmm4 768296317Sdelphij por %xmm3,%xmm5 769296317Sdelphij por %xmm5,%xmm4 770296317Sdelphij pshufd $78,%xmm4,%xmm0 771296317Sdelphij por %xmm4,%xmm0 772296317Sdelphij leaq 256(%r12),%r12 773296317Sdelphij.byte 102,72,15,126,195 774296317Sdelphij 775238405Sjkim xorq %r15,%r15 776238405Sjkim 777238405Sjkim movq (%rsp),%r10 778238405Sjkim movq %r8,%rbp 779238405Sjkim mulq %rbx 780238405Sjkim addq %rax,%r10 781238405Sjkim movq (%rcx),%rax 782238405Sjkim adcq $0,%rdx 783238405Sjkim 784238405Sjkim imulq %r10,%rbp 785238405Sjkim movq %rdx,%r11 786238405Sjkim 787238405Sjkim mulq %rbp 788238405Sjkim addq %rax,%r10 789238405Sjkim movq 8(%rsi),%rax 790238405Sjkim adcq $0,%rdx 791238405Sjkim movq %rdx,%rdi 792238405Sjkim 793238405Sjkim mulq %rbx 794238405Sjkim addq %rax,%r11 795238405Sjkim movq 8(%rcx),%rax 796238405Sjkim adcq $0,%rdx 797238405Sjkim addq 8(%rsp),%r11 798238405Sjkim adcq $0,%rdx 799238405Sjkim movq %rdx,%r10 800238405Sjkim 801238405Sjkim mulq %rbp 802238405Sjkim addq %rax,%rdi 803238405Sjkim movq 16(%rsi),%rax 804238405Sjkim adcq $0,%rdx 805238405Sjkim addq %r11,%rdi 806238405Sjkim leaq 4(%r15),%r15 807238405Sjkim adcq $0,%rdx 808238405Sjkim movq %rdx,%r13 809238405Sjkim jmp .Linner4x 810238405Sjkim.align 16 811238405Sjkim.Linner4x: 812238405Sjkim mulq %rbx 813238405Sjkim addq %rax,%r10 814238405Sjkim movq -16(%rcx,%r15,8),%rax 815238405Sjkim adcq $0,%rdx 816238405Sjkim addq -16(%rsp,%r15,8),%r10 817238405Sjkim adcq $0,%rdx 818238405Sjkim movq %rdx,%r11 819238405Sjkim 820238405Sjkim mulq %rbp 821238405Sjkim addq %rax,%r13 822238405Sjkim movq -8(%rsi,%r15,8),%rax 823238405Sjkim adcq $0,%rdx 824238405Sjkim addq %r10,%r13 825238405Sjkim adcq $0,%rdx 826238405Sjkim movq %rdi,-32(%rsp,%r15,8) 827238405Sjkim movq %rdx,%rdi 828238405Sjkim 829238405Sjkim mulq %rbx 830238405Sjkim addq %rax,%r11 831238405Sjkim movq -8(%rcx,%r15,8),%rax 832238405Sjkim adcq $0,%rdx 833238405Sjkim addq -8(%rsp,%r15,8),%r11 834238405Sjkim adcq $0,%rdx 835238405Sjkim movq %rdx,%r10 836238405Sjkim 837238405Sjkim mulq %rbp 838238405Sjkim addq %rax,%rdi 839238405Sjkim movq (%rsi,%r15,8),%rax 840238405Sjkim adcq $0,%rdx 841238405Sjkim addq %r11,%rdi 842238405Sjkim adcq $0,%rdx 843238405Sjkim movq %r13,-24(%rsp,%r15,8) 844238405Sjkim movq %rdx,%r13 845238405Sjkim 846238405Sjkim mulq %rbx 847238405Sjkim addq %rax,%r10 848238405Sjkim movq (%rcx,%r15,8),%rax 849238405Sjkim adcq $0,%rdx 850238405Sjkim addq (%rsp,%r15,8),%r10 851238405Sjkim adcq $0,%rdx 852238405Sjkim movq %rdx,%r11 853238405Sjkim 854238405Sjkim mulq %rbp 855238405Sjkim addq %rax,%r13 856238405Sjkim movq 8(%rsi,%r15,8),%rax 857238405Sjkim adcq $0,%rdx 858238405Sjkim addq %r10,%r13 859238405Sjkim adcq $0,%rdx 860238405Sjkim movq %rdi,-16(%rsp,%r15,8) 861238405Sjkim movq %rdx,%rdi 862238405Sjkim 863238405Sjkim mulq %rbx 864238405Sjkim addq %rax,%r11 865238405Sjkim movq 8(%rcx,%r15,8),%rax 866238405Sjkim adcq $0,%rdx 867238405Sjkim addq 8(%rsp,%r15,8),%r11 868238405Sjkim adcq $0,%rdx 869238405Sjkim leaq 4(%r15),%r15 870238405Sjkim movq %rdx,%r10 871238405Sjkim 872238405Sjkim mulq %rbp 873238405Sjkim addq %rax,%rdi 874238405Sjkim movq -16(%rsi,%r15,8),%rax 875238405Sjkim adcq $0,%rdx 876238405Sjkim addq %r11,%rdi 877238405Sjkim adcq $0,%rdx 878238405Sjkim movq %r13,-40(%rsp,%r15,8) 879238405Sjkim movq %rdx,%r13 880238405Sjkim cmpq %r9,%r15 881238405Sjkim jl .Linner4x 882238405Sjkim 883238405Sjkim mulq %rbx 884238405Sjkim addq %rax,%r10 885238405Sjkim movq -16(%rcx,%r15,8),%rax 886238405Sjkim adcq $0,%rdx 887238405Sjkim addq -16(%rsp,%r15,8),%r10 888238405Sjkim adcq $0,%rdx 889238405Sjkim movq %rdx,%r11 890238405Sjkim 891238405Sjkim mulq %rbp 892238405Sjkim addq %rax,%r13 893238405Sjkim movq -8(%rsi,%r15,8),%rax 894238405Sjkim adcq $0,%rdx 895238405Sjkim addq %r10,%r13 896238405Sjkim adcq $0,%rdx 897238405Sjkim movq %rdi,-32(%rsp,%r15,8) 898238405Sjkim movq %rdx,%rdi 899238405Sjkim 900238405Sjkim mulq %rbx 901238405Sjkim addq %rax,%r11 902238405Sjkim movq -8(%rcx,%r15,8),%rax 903238405Sjkim adcq $0,%rdx 904238405Sjkim addq -8(%rsp,%r15,8),%r11 905238405Sjkim adcq $0,%rdx 906238405Sjkim leaq 1(%r14),%r14 907238405Sjkim movq %rdx,%r10 908238405Sjkim 909238405Sjkim mulq %rbp 910238405Sjkim addq %rax,%rdi 911238405Sjkim movq (%rsi),%rax 912238405Sjkim adcq $0,%rdx 913238405Sjkim addq %r11,%rdi 914238405Sjkim adcq $0,%rdx 915238405Sjkim movq %r13,-24(%rsp,%r15,8) 916238405Sjkim movq %rdx,%r13 917238405Sjkim 918238405Sjkim movq %rdi,-16(%rsp,%r15,8) 919238405Sjkim 920238405Sjkim xorq %rdi,%rdi 921238405Sjkim addq %r10,%r13 922238405Sjkim adcq $0,%rdi 923238405Sjkim addq (%rsp,%r9,8),%r13 924238405Sjkim adcq $0,%rdi 925238405Sjkim movq %r13,-8(%rsp,%r15,8) 926238405Sjkim movq %rdi,(%rsp,%r15,8) 927238405Sjkim 928238405Sjkim cmpq %r9,%r14 929238405Sjkim jl .Louter4x 930238405Sjkim movq 16(%rsp,%r9,8),%rdi 931238405Sjkim movq 0(%rsp),%rax 932238405Sjkim pxor %xmm0,%xmm0 933238405Sjkim movq 8(%rsp),%rdx 934238405Sjkim shrq $2,%r9 935238405Sjkim leaq (%rsp),%rsi 936238405Sjkim xorq %r14,%r14 937238405Sjkim 938238405Sjkim subq 0(%rcx),%rax 939238405Sjkim movq 16(%rsi),%rbx 940238405Sjkim movq 24(%rsi),%rbp 941238405Sjkim sbbq 8(%rcx),%rdx 942238405Sjkim leaq -1(%r9),%r15 943238405Sjkim jmp .Lsub4x 944238405Sjkim.align 16 945238405Sjkim.Lsub4x: 946238405Sjkim movq %rax,0(%rdi,%r14,8) 947238405Sjkim movq %rdx,8(%rdi,%r14,8) 948238405Sjkim sbbq 16(%rcx,%r14,8),%rbx 949238405Sjkim movq 32(%rsi,%r14,8),%rax 950238405Sjkim movq 40(%rsi,%r14,8),%rdx 951238405Sjkim sbbq 24(%rcx,%r14,8),%rbp 952238405Sjkim movq %rbx,16(%rdi,%r14,8) 953238405Sjkim movq %rbp,24(%rdi,%r14,8) 954238405Sjkim sbbq 32(%rcx,%r14,8),%rax 955238405Sjkim movq 48(%rsi,%r14,8),%rbx 956238405Sjkim movq 56(%rsi,%r14,8),%rbp 957238405Sjkim sbbq 40(%rcx,%r14,8),%rdx 958238405Sjkim leaq 4(%r14),%r14 959238405Sjkim decq %r15 960238405Sjkim jnz .Lsub4x 961238405Sjkim 962238405Sjkim movq %rax,0(%rdi,%r14,8) 963238405Sjkim movq 32(%rsi,%r14,8),%rax 964238405Sjkim sbbq 16(%rcx,%r14,8),%rbx 965238405Sjkim movq %rdx,8(%rdi,%r14,8) 966238405Sjkim sbbq 24(%rcx,%r14,8),%rbp 967238405Sjkim movq %rbx,16(%rdi,%r14,8) 968238405Sjkim 969238405Sjkim sbbq $0,%rax 970238405Sjkim movq %rbp,24(%rdi,%r14,8) 971238405Sjkim xorq %r14,%r14 972238405Sjkim andq %rax,%rsi 973238405Sjkim notq %rax 974238405Sjkim movq %rdi,%rcx 975238405Sjkim andq %rax,%rcx 976238405Sjkim leaq -1(%r9),%r15 977238405Sjkim orq %rcx,%rsi 978238405Sjkim 979238405Sjkim movdqu (%rsi),%xmm1 980238405Sjkim movdqa %xmm0,(%rsp) 981238405Sjkim movdqu %xmm1,(%rdi) 982238405Sjkim jmp .Lcopy4x 983238405Sjkim.align 16 984238405Sjkim.Lcopy4x: 985238405Sjkim movdqu 16(%rsi,%r14,1),%xmm2 986238405Sjkim movdqu 32(%rsi,%r14,1),%xmm1 987238405Sjkim movdqa %xmm0,16(%rsp,%r14,1) 988238405Sjkim movdqu %xmm2,16(%rdi,%r14,1) 989238405Sjkim movdqa %xmm0,32(%rsp,%r14,1) 990238405Sjkim movdqu %xmm1,32(%rdi,%r14,1) 991238405Sjkim leaq 32(%r14),%r14 992238405Sjkim decq %r15 993238405Sjkim jnz .Lcopy4x 994238405Sjkim 995238405Sjkim shlq $2,%r9 996238405Sjkim movdqu 16(%rsi,%r14,1),%xmm2 997238405Sjkim movdqa %xmm0,16(%rsp,%r14,1) 998238405Sjkim movdqu %xmm2,16(%rdi,%r14,1) 999238405Sjkim movq 8(%rsp,%r9,8),%rsi 1000238405Sjkim movq $1,%rax 1001296317Sdelphij 1002238405Sjkim movq (%rsi),%r15 1003238405Sjkim movq 8(%rsi),%r14 1004238405Sjkim movq 16(%rsi),%r13 1005238405Sjkim movq 24(%rsi),%r12 1006238405Sjkim movq 32(%rsi),%rbp 1007238405Sjkim movq 40(%rsi),%rbx 1008238405Sjkim leaq 48(%rsi),%rsp 1009238405Sjkim.Lmul4x_epilogue: 1010238405Sjkim .byte 0xf3,0xc3 1011238405Sjkim.size bn_mul4x_mont_gather5,.-bn_mul4x_mont_gather5 1012238405Sjkim.globl bn_scatter5 1013238405Sjkim.type bn_scatter5,@function 1014238405Sjkim.align 16 1015238405Sjkimbn_scatter5: 1016238405Sjkim cmpq $0,%rsi 1017238405Sjkim jz .Lscatter_epilogue 1018238405Sjkim leaq (%rdx,%rcx,8),%rdx 1019238405Sjkim.Lscatter: 1020238405Sjkim movq (%rdi),%rax 1021238405Sjkim leaq 8(%rdi),%rdi 1022238405Sjkim movq %rax,(%rdx) 1023238405Sjkim leaq 256(%rdx),%rdx 1024238405Sjkim subq $1,%rsi 1025238405Sjkim jnz .Lscatter 1026238405Sjkim.Lscatter_epilogue: 1027238405Sjkim .byte 0xf3,0xc3 1028238405Sjkim.size bn_scatter5,.-bn_scatter5 1029238405Sjkim 1030238405Sjkim.globl bn_gather5 1031238405Sjkim.type bn_gather5,@function 1032238405Sjkim.align 16 1033238405Sjkimbn_gather5: 1034296317Sdelphij.LSEH_begin_bn_gather5: 1035296317Sdelphij 1036296317Sdelphij.byte 0x4c,0x8d,0x14,0x24 1037296317Sdelphij.byte 0x48,0x81,0xec,0x08,0x01,0x00,0x00 1038296317Sdelphij leaq .Linc(%rip),%rax 1039296317Sdelphij andq $-16,%rsp 1040296317Sdelphij 1041296317Sdelphij movd %ecx,%xmm5 1042296317Sdelphij movdqa 0(%rax),%xmm0 1043296317Sdelphij movdqa 16(%rax),%xmm1 1044296317Sdelphij leaq 128(%rdx),%r11 1045296317Sdelphij leaq 128(%rsp),%rax 1046296317Sdelphij 1047296317Sdelphij pshufd $0,%xmm5,%xmm5 1048296317Sdelphij movdqa %xmm1,%xmm4 1049296317Sdelphij movdqa %xmm1,%xmm2 1050296317Sdelphij paddd %xmm0,%xmm1 1051296317Sdelphij pcmpeqd %xmm5,%xmm0 1052296317Sdelphij movdqa %xmm4,%xmm3 1053296317Sdelphij 1054296317Sdelphij paddd %xmm1,%xmm2 1055296317Sdelphij pcmpeqd %xmm5,%xmm1 1056296317Sdelphij movdqa %xmm0,-128(%rax) 1057296317Sdelphij movdqa %xmm4,%xmm0 1058296317Sdelphij 1059296317Sdelphij paddd %xmm2,%xmm3 1060296317Sdelphij pcmpeqd %xmm5,%xmm2 1061296317Sdelphij movdqa %xmm1,-112(%rax) 1062296317Sdelphij movdqa %xmm4,%xmm1 1063296317Sdelphij 1064296317Sdelphij paddd %xmm3,%xmm0 1065296317Sdelphij pcmpeqd %xmm5,%xmm3 1066296317Sdelphij movdqa %xmm2,-96(%rax) 1067296317Sdelphij movdqa %xmm4,%xmm2 1068296317Sdelphij paddd %xmm0,%xmm1 1069296317Sdelphij pcmpeqd %xmm5,%xmm0 1070296317Sdelphij movdqa %xmm3,-80(%rax) 1071296317Sdelphij movdqa %xmm4,%xmm3 1072296317Sdelphij 1073296317Sdelphij paddd %xmm1,%xmm2 1074296317Sdelphij pcmpeqd %xmm5,%xmm1 1075296317Sdelphij movdqa %xmm0,-64(%rax) 1076296317Sdelphij movdqa %xmm4,%xmm0 1077296317Sdelphij 1078296317Sdelphij paddd %xmm2,%xmm3 1079296317Sdelphij pcmpeqd %xmm5,%xmm2 1080296317Sdelphij movdqa %xmm1,-48(%rax) 1081296317Sdelphij movdqa %xmm4,%xmm1 1082296317Sdelphij 1083296317Sdelphij paddd %xmm3,%xmm0 1084296317Sdelphij pcmpeqd %xmm5,%xmm3 1085296317Sdelphij movdqa %xmm2,-32(%rax) 1086296317Sdelphij movdqa %xmm4,%xmm2 1087296317Sdelphij paddd %xmm0,%xmm1 1088296317Sdelphij pcmpeqd %xmm5,%xmm0 1089296317Sdelphij movdqa %xmm3,-16(%rax) 1090296317Sdelphij movdqa %xmm4,%xmm3 1091296317Sdelphij 1092296317Sdelphij paddd %xmm1,%xmm2 1093296317Sdelphij pcmpeqd %xmm5,%xmm1 1094296317Sdelphij movdqa %xmm0,0(%rax) 1095296317Sdelphij movdqa %xmm4,%xmm0 1096296317Sdelphij 1097296317Sdelphij paddd %xmm2,%xmm3 1098296317Sdelphij pcmpeqd %xmm5,%xmm2 1099296317Sdelphij movdqa %xmm1,16(%rax) 1100296317Sdelphij movdqa %xmm4,%xmm1 1101296317Sdelphij 1102296317Sdelphij paddd %xmm3,%xmm0 1103296317Sdelphij pcmpeqd %xmm5,%xmm3 1104296317Sdelphij movdqa %xmm2,32(%rax) 1105296317Sdelphij movdqa %xmm4,%xmm2 1106296317Sdelphij paddd %xmm0,%xmm1 1107296317Sdelphij pcmpeqd %xmm5,%xmm0 1108296317Sdelphij movdqa %xmm3,48(%rax) 1109296317Sdelphij movdqa %xmm4,%xmm3 1110296317Sdelphij 1111296317Sdelphij paddd %xmm1,%xmm2 1112296317Sdelphij pcmpeqd %xmm5,%xmm1 1113296317Sdelphij movdqa %xmm0,64(%rax) 1114296317Sdelphij movdqa %xmm4,%xmm0 1115296317Sdelphij 1116296317Sdelphij paddd %xmm2,%xmm3 1117296317Sdelphij pcmpeqd %xmm5,%xmm2 1118296317Sdelphij movdqa %xmm1,80(%rax) 1119296317Sdelphij movdqa %xmm4,%xmm1 1120296317Sdelphij 1121296317Sdelphij paddd %xmm3,%xmm0 1122296317Sdelphij pcmpeqd %xmm5,%xmm3 1123296317Sdelphij movdqa %xmm2,96(%rax) 1124296317Sdelphij movdqa %xmm4,%xmm2 1125296317Sdelphij movdqa %xmm3,112(%rax) 1126238405Sjkim jmp .Lgather 1127296317Sdelphij 1128296317Sdelphij.align 32 1129238405Sjkim.Lgather: 1130296317Sdelphij pxor %xmm4,%xmm4 1131296317Sdelphij pxor %xmm5,%xmm5 1132296317Sdelphij movdqa -128(%r11),%xmm0 1133296317Sdelphij movdqa -112(%r11),%xmm1 1134296317Sdelphij movdqa -96(%r11),%xmm2 1135296317Sdelphij pand -128(%rax),%xmm0 1136296317Sdelphij movdqa -80(%r11),%xmm3 1137296317Sdelphij pand -112(%rax),%xmm1 1138296317Sdelphij por %xmm0,%xmm4 1139296317Sdelphij pand -96(%rax),%xmm2 1140296317Sdelphij por %xmm1,%xmm5 1141296317Sdelphij pand -80(%rax),%xmm3 1142296317Sdelphij por %xmm2,%xmm4 1143296317Sdelphij por %xmm3,%xmm5 1144296317Sdelphij movdqa -64(%r11),%xmm0 1145296317Sdelphij movdqa -48(%r11),%xmm1 1146296317Sdelphij movdqa -32(%r11),%xmm2 1147296317Sdelphij pand -64(%rax),%xmm0 1148296317Sdelphij movdqa -16(%r11),%xmm3 1149296317Sdelphij pand -48(%rax),%xmm1 1150296317Sdelphij por %xmm0,%xmm4 1151296317Sdelphij pand -32(%rax),%xmm2 1152296317Sdelphij por %xmm1,%xmm5 1153296317Sdelphij pand -16(%rax),%xmm3 1154296317Sdelphij por %xmm2,%xmm4 1155296317Sdelphij por %xmm3,%xmm5 1156296317Sdelphij movdqa 0(%r11),%xmm0 1157296317Sdelphij movdqa 16(%r11),%xmm1 1158296317Sdelphij movdqa 32(%r11),%xmm2 1159296317Sdelphij pand 0(%rax),%xmm0 1160296317Sdelphij movdqa 48(%r11),%xmm3 1161296317Sdelphij pand 16(%rax),%xmm1 1162296317Sdelphij por %xmm0,%xmm4 1163296317Sdelphij pand 32(%rax),%xmm2 1164296317Sdelphij por %xmm1,%xmm5 1165296317Sdelphij pand 48(%rax),%xmm3 1166296317Sdelphij por %xmm2,%xmm4 1167296317Sdelphij por %xmm3,%xmm5 1168296317Sdelphij movdqa 64(%r11),%xmm0 1169296317Sdelphij movdqa 80(%r11),%xmm1 1170296317Sdelphij movdqa 96(%r11),%xmm2 1171296317Sdelphij pand 64(%rax),%xmm0 1172296317Sdelphij movdqa 112(%r11),%xmm3 1173296317Sdelphij pand 80(%rax),%xmm1 1174296317Sdelphij por %xmm0,%xmm4 1175296317Sdelphij pand 96(%rax),%xmm2 1176296317Sdelphij por %xmm1,%xmm5 1177296317Sdelphij pand 112(%rax),%xmm3 1178296317Sdelphij por %xmm2,%xmm4 1179296317Sdelphij por %xmm3,%xmm5 1180296317Sdelphij por %xmm5,%xmm4 1181296317Sdelphij leaq 256(%r11),%r11 1182296317Sdelphij pshufd $78,%xmm4,%xmm0 1183296317Sdelphij por %xmm4,%xmm0 1184238405Sjkim movq %xmm0,(%rdi) 1185238405Sjkim leaq 8(%rdi),%rdi 1186238405Sjkim subq $1,%rsi 1187238405Sjkim jnz .Lgather 1188296317Sdelphij 1189296317Sdelphij leaq (%r10),%rsp 1190238405Sjkim .byte 0xf3,0xc3 1191238405Sjkim.LSEH_end_bn_gather5: 1192238405Sjkim.size bn_gather5,.-bn_gather5 1193238405Sjkim.align 64 1194296317Sdelphij.Linc: 1195296317Sdelphij.long 0,0, 1,1 1196296317Sdelphij.long 2,2, 2,2 1197238405Sjkim.byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115,99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 1198