.text .type MULADD_128x512,@function .align 16 MULADD_128x512: movq 0(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx movq %r8,0(%rcx) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%r8 movq 8(%rdi),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx movq %r9,8(%rcx) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%r9 .byte 0xf3,0xc3 .size MULADD_128x512,.-MULADD_128x512 .type mont_reduce,@function .align 16 mont_reduce: leaq 192(%rsp),%rdi movq 32(%rsp),%rsi addq $576,%rsi leaq 520(%rsp),%rcx movq 96(%rcx),%rbp movq 0(%rsi),%rax mulq %rbp movq (%rcx),%r8 addq %rax,%r8 adcq $0,%rdx movq %r8,0(%rdi) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp movq 8(%rcx),%r9 addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp movq 16(%rcx),%r10 addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp movq 24(%rcx),%r11 addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp movq 32(%rcx),%r12 addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp movq 40(%rcx),%r13 addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp movq 48(%rcx),%r14 addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp movq 56(%rcx),%r15 addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%r8 movq 104(%rcx),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx movq %r9,8(%rdi) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%r9 movq 112(%rcx),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx movq %r10,16(%rdi) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%r10 movq 120(%rcx),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx movq %r11,24(%rdi) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%r11 xorq %rax,%rax addq 64(%rcx),%r8 adcq 72(%rcx),%r9 adcq 80(%rcx),%r10 adcq 88(%rcx),%r11 adcq $0,%rax movq %r8,64(%rdi) movq %r9,72(%rdi) movq %r10,%rbp movq %r11,88(%rdi) movq %rax,384(%rsp) movq 0(%rdi),%r8 movq 8(%rdi),%r9 movq 16(%rdi),%r10 movq 24(%rdi),%r11 addq $80,%rdi addq $64,%rsi leaq 296(%rsp),%rcx call MULADD_128x512 movq 384(%rsp),%rax addq -16(%rdi),%r8 adcq -8(%rdi),%r9 movq %r8,64(%rcx) movq %r9,72(%rcx) adcq %rax,%rax movq %rax,384(%rsp) leaq 192(%rsp),%rdi addq $64,%rsi movq (%rsi),%r8 movq 8(%rsi),%rbx movq (%rcx),%rax mulq %r8 movq %rax,%rbp movq %rdx,%r9 movq 8(%rcx),%rax mulq %r8 addq %rax,%r9 movq (%rcx),%rax mulq %rbx addq %rax,%r9 movq %r9,8(%rdi) subq $192,%rsi movq (%rcx),%r8 movq 8(%rcx),%r9 call MULADD_128x512 movq 0(%rsi),%rax movq 8(%rsi),%rbx movq 16(%rsi),%rdi movq 24(%rsi),%rdx movq 384(%rsp),%rbp addq 64(%rcx),%r8 adcq 72(%rcx),%r9 adcq %rbp,%rbp shlq $3,%rbp movq 32(%rsp),%rcx addq %rcx,%rbp xorq %rsi,%rsi addq 0(%rbp),%r10 adcq 64(%rbp),%r11 adcq 128(%rbp),%r12 adcq 192(%rbp),%r13 adcq 256(%rbp),%r14 adcq 320(%rbp),%r15 adcq 384(%rbp),%r8 adcq 448(%rbp),%r9 sbbq $0,%rsi andq %rsi,%rax andq %rsi,%rbx andq %rsi,%rdi andq %rsi,%rdx movq $1,%rbp subq %rax,%r10 sbbq %rbx,%r11 sbbq %rdi,%r12 sbbq %rdx,%r13 sbbq $0,%rbp addq $512,%rcx movq 32(%rcx),%rax movq 40(%rcx),%rbx movq 48(%rcx),%rdi movq 56(%rcx),%rdx andq %rsi,%rax andq %rsi,%rbx andq %rsi,%rdi andq %rsi,%rdx subq $1,%rbp sbbq %rax,%r14 sbbq %rbx,%r15 sbbq %rdi,%r8 sbbq %rdx,%r9 movq 144(%rsp),%rsi movq %r10,0(%rsi) movq %r11,8(%rsi) movq %r12,16(%rsi) movq %r13,24(%rsi) movq %r14,32(%rsi) movq %r15,40(%rsi) movq %r8,48(%rsi) movq %r9,56(%rsi) .byte 0xf3,0xc3 .size mont_reduce,.-mont_reduce .type mont_mul_a3b,@function .align 16 mont_mul_a3b: movq 0(%rdi),%rbp movq %r10,%rax mulq %rbp movq %rax,520(%rsp) movq %rdx,%r10 movq %r11,%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx movq %rdx,%r11 movq %r12,%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx movq %rdx,%r12 movq %r13,%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx movq %rdx,%r13 movq %r14,%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx movq %rdx,%r14 movq %r15,%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx movq %rdx,%r15 movq %r8,%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx movq %rdx,%r8 movq %r9,%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx movq %rdx,%r9 movq 8(%rdi),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx movq %r10,528(%rsp) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%r10 movq 16(%rdi),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx movq %r11,536(%rsp) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%r11 movq 24(%rdi),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx movq %r12,544(%rsp) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%r12 movq 32(%rdi),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx movq %r13,552(%rsp) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%r13 movq 40(%rdi),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx movq %r14,560(%rsp) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%r14 movq 48(%rdi),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx movq %r15,568(%rsp) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx addq %rbx,%r8 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%r15 movq 56(%rdi),%rbp movq 0(%rsi),%rax mulq %rbp addq %rax,%r8 adcq $0,%rdx movq %r8,576(%rsp) movq %rdx,%rbx movq 8(%rsi),%rax mulq %rbp addq %rax,%r9 adcq $0,%rdx addq %rbx,%r9 adcq $0,%rdx movq %rdx,%rbx movq 16(%rsi),%rax mulq %rbp addq %rax,%r10 adcq $0,%rdx addq %rbx,%r10 adcq $0,%rdx movq %rdx,%rbx movq 24(%rsi),%rax mulq %rbp addq %rax,%r11 adcq $0,%rdx addq %rbx,%r11 adcq $0,%rdx movq %rdx,%rbx movq 32(%rsi),%rax mulq %rbp addq %rax,%r12 adcq $0,%rdx addq %rbx,%r12 adcq $0,%rdx movq %rdx,%rbx movq 40(%rsi),%rax mulq %rbp addq %rax,%r13 adcq $0,%rdx addq %rbx,%r13 adcq $0,%rdx movq %rdx,%rbx movq 48(%rsi),%rax mulq %rbp addq %rax,%r14 adcq $0,%rdx addq %rbx,%r14 adcq $0,%rdx movq %rdx,%rbx movq 56(%rsi),%rax mulq %rbp addq %rax,%r15 adcq $0,%rdx addq %rbx,%r15 adcq $0,%rdx movq %rdx,%r8 movq %r9,584(%rsp) movq %r10,592(%rsp) movq %r11,600(%rsp) movq %r12,608(%rsp) movq %r13,616(%rsp) movq %r14,624(%rsp) movq %r15,632(%rsp) movq %r8,640(%rsp) jmp mont_reduce .size mont_mul_a3b,.-mont_mul_a3b .type sqr_reduce,@function .align 16 sqr_reduce: movq 16(%rsp),%rcx movq %r10,%rbx movq %r11,%rax mulq %rbx movq %rax,528(%rsp) movq %rdx,%r10 movq %r12,%rax mulq %rbx addq %rax,%r10 adcq $0,%rdx movq %rdx,%r11 movq %r13,%rax mulq %rbx addq %rax,%r11 adcq $0,%rdx movq %rdx,%r12 movq %r14,%rax mulq %rbx addq %rax,%r12 adcq $0,%rdx movq %rdx,%r13 movq %r15,%rax mulq %rbx addq %rax,%r13 adcq $0,%rdx movq %rdx,%r14 movq %r8,%rax mulq %rbx addq %rax,%r14 adcq $0,%rdx movq %rdx,%r15 movq %r9,%rax mulq %rbx addq %rax,%r15 adcq $0,%rdx movq %rdx,%rsi movq %r10,536(%rsp) movq 8(%rcx),%rbx movq 16(%rcx),%rax mulq %rbx addq %rax,%r11 adcq $0,%rdx movq %r11,544(%rsp) movq %rdx,%r10 movq 24(%rcx),%rax mulq %rbx addq %rax,%r12 adcq $0,%rdx addq %r10,%r12 adcq $0,%rdx movq %r12,552(%rsp) movq %rdx,%r10 movq 32(%rcx),%rax mulq %rbx addq %rax,%r13 adcq $0,%rdx addq %r10,%r13 adcq $0,%rdx movq %rdx,%r10 movq 40(%rcx),%rax mulq %rbx addq %rax,%r14 adcq $0,%rdx addq %r10,%r14 adcq $0,%rdx movq %rdx,%r10 movq %r8,%rax mulq %rbx addq %rax,%r15 adcq $0,%rdx addq %r10,%r15 adcq $0,%rdx movq %rdx,%r10 movq %r9,%rax mulq %rbx addq %rax,%rsi adcq $0,%rdx addq %r10,%rsi adcq $0,%rdx movq %rdx,%r11 movq 16(%rcx),%rbx movq 24(%rcx),%rax mulq %rbx addq %rax,%r13 adcq $0,%rdx movq %r13,560(%rsp) movq %rdx,%r10 movq 32(%rcx),%rax mulq %rbx addq %rax,%r14 adcq $0,%rdx addq %r10,%r14 adcq $0,%rdx movq %r14,568(%rsp) movq %rdx,%r10 movq 40(%rcx),%rax mulq %rbx addq %rax,%r15 adcq $0,%rdx addq %r10,%r15 adcq $0,%rdx movq %rdx,%r10 movq %r8,%rax mulq %rbx addq %rax,%rsi adcq $0,%rdx addq %r10,%rsi adcq $0,%rdx movq %rdx,%r10 movq %r9,%rax mulq %rbx addq %rax,%r11 adcq $0,%rdx addq %r10,%r11 adcq $0,%rdx movq %rdx,%r12 movq 24(%rcx),%rbx movq 32(%rcx),%rax mulq %rbx addq %rax,%r15 adcq $0,%rdx movq %r15,576(%rsp) movq %rdx,%r10 movq 40(%rcx),%rax mulq %rbx addq %rax,%rsi adcq $0,%rdx addq %r10,%rsi adcq $0,%rdx movq %rsi,584(%rsp) movq %rdx,%r10 movq %r8,%rax mulq %rbx addq %rax,%r11 adcq $0,%rdx addq %r10,%r11 adcq $0,%rdx movq %rdx,%r10 movq %r9,%rax mulq %rbx addq %rax,%r12 adcq $0,%rdx addq %r10,%r12 adcq $0,%rdx movq %rdx,%r15 movq 32(%rcx),%rbx movq 40(%rcx),%rax mulq %rbx addq %rax,%r11 adcq $0,%rdx movq %r11,592(%rsp) movq %rdx,%r10 movq %r8,%rax mulq %rbx addq %rax,%r12 adcq $0,%rdx addq %r10,%r12 adcq $0,%rdx movq %r12,600(%rsp) movq %rdx,%r10 movq %r9,%rax mulq %rbx addq %rax,%r15 adcq $0,%rdx addq %r10,%r15 adcq $0,%rdx movq %rdx,%r11 movq 40(%rcx),%rbx movq %r8,%rax mulq %rbx addq %rax,%r15 adcq $0,%rdx movq %r15,608(%rsp) movq %rdx,%r10 movq %r9,%rax mulq %rbx addq %rax,%r11 adcq $0,%rdx addq %r10,%r11 adcq $0,%rdx movq %r11,616(%rsp) movq %rdx,%r12 movq %r8,%rbx movq %r9,%rax mulq %rbx addq %rax,%r12 adcq $0,%rdx movq %r12,624(%rsp) movq %rdx,632(%rsp) movq 528(%rsp),%r10 movq 536(%rsp),%r11 movq 544(%rsp),%r12 movq 552(%rsp),%r13 movq 560(%rsp),%r14 movq 568(%rsp),%r15 movq 24(%rcx),%rax mulq %rax movq %rax,%rdi movq %rdx,%r8 addq %r10,%r10 adcq %r11,%r11 adcq %r12,%r12 adcq %r13,%r13 adcq %r14,%r14 adcq %r15,%r15 adcq $0,%r8 movq 0(%rcx),%rax mulq %rax movq %rax,520(%rsp) movq %rdx,%rbx movq 8(%rcx),%rax mulq %rax addq %rbx,%r10 adcq %rax,%r11 adcq $0,%rdx movq %rdx,%rbx movq %r10,528(%rsp) movq %r11,536(%rsp) movq 16(%rcx),%rax mulq %rax addq %rbx,%r12 adcq %rax,%r13 adcq $0,%rdx movq %rdx,%rbx movq %r12,544(%rsp) movq %r13,552(%rsp) xorq %rbp,%rbp addq %rbx,%r14 adcq %rdi,%r15 adcq $0,%rbp movq %r14,560(%rsp) movq %r15,568(%rsp) movq 576(%rsp),%r10 movq 584(%rsp),%r11 movq 592(%rsp),%r12 movq 600(%rsp),%r13 movq 608(%rsp),%r14 movq 616(%rsp),%r15 movq 624(%rsp),%rdi movq 632(%rsp),%rsi movq %r9,%rax mulq %rax movq %rax,%r9 movq %rdx,%rbx addq %r10,%r10 adcq %r11,%r11 adcq %r12,%r12 adcq %r13,%r13 adcq %r14,%r14 adcq %r15,%r15 adcq %rdi,%rdi adcq %rsi,%rsi adcq $0,%rbx addq %rbp,%r10 movq 32(%rcx),%rax mulq %rax addq %r8,%r10 adcq %rax,%r11 adcq $0,%rdx movq %rdx,%rbp movq %r10,576(%rsp) movq %r11,584(%rsp) movq 40(%rcx),%rax mulq %rax addq %rbp,%r12 adcq %rax,%r13 adcq $0,%rdx movq %rdx,%rbp movq %r12,592(%rsp) movq %r13,600(%rsp) movq 48(%rcx),%rax mulq %rax addq %rbp,%r14 adcq %rax,%r15 adcq $0,%rdx movq %r14,608(%rsp) movq %r15,616(%rsp) addq %rdx,%rdi adcq %r9,%rsi adcq $0,%rbx movq %rdi,624(%rsp) movq %rsi,632(%rsp) movq %rbx,640(%rsp) jmp mont_reduce .size sqr_reduce,.-sqr_reduce .globl mod_exp_512 .type mod_exp_512,@function mod_exp_512: pushq %rbp pushq %rbx pushq %r12 pushq %r13 pushq %r14 pushq %r15 movq %rsp,%r8 subq $2688,%rsp andq $-64,%rsp movq %r8,0(%rsp) movq %rdi,8(%rsp) movq %rsi,16(%rsp) movq %rcx,24(%rsp) .Lbody: pxor %xmm4,%xmm4 movdqu 0(%rsi),%xmm0 movdqu 16(%rsi),%xmm1 movdqu 32(%rsi),%xmm2 movdqu 48(%rsi),%xmm3 movdqa %xmm4,512(%rsp) movdqa %xmm4,528(%rsp) movdqa %xmm4,608(%rsp) movdqa %xmm4,624(%rsp) movdqa %xmm0,544(%rsp) movdqa %xmm1,560(%rsp) movdqa %xmm2,576(%rsp) movdqa %xmm3,592(%rsp) movdqu 0(%rdx),%xmm0 movdqu 16(%rdx),%xmm1 movdqu 32(%rdx),%xmm2 movdqu 48(%rdx),%xmm3 leaq 384(%rsp),%rbx movq %rbx,136(%rsp) call mont_reduce leaq 448(%rsp),%rcx xorq %rax,%rax movq %rax,0(%rcx) movq %rax,8(%rcx) movq %rax,24(%rcx) movq %rax,32(%rcx) movq %rax,40(%rcx) movq %rax,48(%rcx) movq %rax,56(%rcx) movq %rax,128(%rsp) movq $1,16(%rcx) leaq 640(%rsp),%rbp movq %rcx,%rsi movq %rbp,%rdi movq $8,%rax loop_0: movq (%rcx),%rbx movw %bx,(%rdi) shrq $16,%rbx movw %bx,64(%rdi) shrq $16,%rbx movw %bx,128(%rdi) shrq $16,%rbx movw %bx,192(%rdi) leaq 8(%rcx),%rcx leaq 256(%rdi),%rdi decq %rax jnz loop_0 movq $31,%rax movq %rax,32(%rsp) movq %rbp,40(%rsp) movq %rsi,136(%rsp) movq 0(%rsi),%r10 movq 8(%rsi),%r11 movq 16(%rsi),%r12 movq 24(%rsi),%r13 movq 32(%rsi),%r14 movq 40(%rsi),%r15 movq 48(%rsi),%r8 movq 56(%rsi),%r9 init_loop: leaq 384(%rsp),%rdi call mont_mul_a3b leaq 448(%rsp),%rsi movq 40(%rsp),%rbp addq $2,%rbp movq %rbp,40(%rsp) movq %rsi,%rcx movq $8,%rax loop_1: movq (%rcx),%rbx movw %bx,(%rbp) shrq $16,%rbx movw %bx,64(%rbp) shrq $16,%rbx movw %bx,128(%rbp) shrq $16,%rbx movw %bx,192(%rbp) leaq 8(%rcx),%rcx leaq 256(%rbp),%rbp decq %rax jnz loop_1 movq 32(%rsp),%rax subq $1,%rax movq %rax,32(%rsp) jne init_loop movdqa %xmm0,64(%rsp) movdqa %xmm1,80(%rsp) movdqa %xmm2,96(%rsp) movdqa %xmm3,112(%rsp) movl 126(%rsp),%eax movq %rax,%rdx shrq $11,%rax andl $2047,%edx movl %edx,126(%rsp) leaq 640(%rsp,%rax,2),%rsi movq 8(%rsp),%rdx movq $4,%rbp loop_2: movzwq 192(%rsi),%rbx movzwq 448(%rsi),%rax shlq $16,%rbx shlq $16,%rax movw 128(%rsi),%bx movw 384(%rsi),%ax shlq $16,%rbx shlq $16,%rax movw 64(%rsi),%bx movw 320(%rsi),%ax shlq $16,%rbx shlq $16,%rax movw 0(%rsi),%bx movw 256(%rsi),%ax movq %rbx,0(%rdx) movq %rax,8(%rdx) leaq 512(%rsi),%rsi leaq 16(%rdx),%rdx subq $1,%rbp jnz loop_2 movq $505,48(%rsp) movq 8(%rsp),%rcx movq %rcx,136(%rsp) movq 0(%rcx),%r10 movq 8(%rcx),%r11 movq 16(%rcx),%r12 movq 24(%rcx),%r13 movq 32(%rcx),%r14 movq 40(%rcx),%r15 movq 48(%rcx),%r8 movq 56(%rcx),%r9 jmp sqr_2 main_loop_a3b: call sqr_reduce call sqr_reduce call sqr_reduce sqr_2: call sqr_reduce call sqr_reduce movq 48(%rsp),%rcx movq %rcx,%rax shrq $4,%rax movl 64(%rsp,%rax,2),%edx andq $15,%rcx shrq %cl,%rdx andq $31,%rdx leaq 640(%rsp,%rdx,2),%rsi leaq 448(%rsp),%rdx movq %rdx,%rdi movq $4,%rbp loop_3: movzwq 192(%rsi),%rbx movzwq 448(%rsi),%rax shlq $16,%rbx shlq $16,%rax movw 128(%rsi),%bx movw 384(%rsi),%ax shlq $16,%rbx shlq $16,%rax movw 64(%rsi),%bx movw 320(%rsi),%ax shlq $16,%rbx shlq $16,%rax movw 0(%rsi),%bx movw 256(%rsi),%ax movq %rbx,0(%rdx) movq %rax,8(%rdx) leaq 512(%rsi),%rsi leaq 16(%rdx),%rdx subq $1,%rbp jnz loop_3 movq 8(%rsp),%rsi call mont_mul_a3b movq 48(%rsp),%rcx subq $5,%rcx movq %rcx,48(%rsp) jge main_loop_a3b end_main_loop_a3b: movq 8(%rsp),%rdx pxor %xmm4,%xmm4 movdqu 0(%rdx),%xmm0 movdqu 16(%rdx),%xmm1 movdqu 32(%rdx),%xmm2 movdqu 48(%rdx),%xmm3 movdqa %xmm4,576(%rsp) movdqa %xmm4,592(%rsp) movdqa %xmm4,608(%rsp) movdqa %xmm4,624(%rsp) movdqa %xmm0,512(%rsp) movdqa %xmm1,528(%rsp) movdqa %xmm2,544(%rsp) movdqa %xmm3,560(%rsp) call mont_reduce movq 8(%rsp),%rax movq 0(%rax),%r8 movq 8(%rax),%r9 movq 16(%rax),%r10 movq 24(%rax),%r11 movq 32(%rax),%r12 movq 40(%rax),%r13 movq 48(%rax),%r14 movq 56(%rax),%r15 movq 24(%rsp),%rbx addq $512,%rbx subq 0(%rbx),%r8 sbbq 8(%rbx),%r9 sbbq 16(%rbx),%r10 sbbq 24(%rbx),%r11 sbbq 32(%rbx),%r12 sbbq 40(%rbx),%r13 sbbq 48(%rbx),%r14 sbbq 56(%rbx),%r15 movq 0(%rax),%rsi movq 8(%rax),%rdi movq 16(%rax),%rcx movq 24(%rax),%rdx cmovncq %r8,%rsi cmovncq %r9,%rdi cmovncq %r10,%rcx cmovncq %r11,%rdx movq %rsi,0(%rax) movq %rdi,8(%rax) movq %rcx,16(%rax) movq %rdx,24(%rax) movq 32(%rax),%rsi movq 40(%rax),%rdi movq 48(%rax),%rcx movq 56(%rax),%rdx cmovncq %r12,%rsi cmovncq %r13,%rdi cmovncq %r14,%rcx cmovncq %r15,%rdx movq %rsi,32(%rax) movq %rdi,40(%rax) movq %rcx,48(%rax) movq %rdx,56(%rax) movq 0(%rsp),%rsi movq 0(%rsi),%r15 movq 8(%rsi),%r14 movq 16(%rsi),%r13 movq 24(%rsi),%r12 movq 32(%rsi),%rbx movq 40(%rsi),%rbp leaq 48(%rsi),%rsp .Lepilogue: .byte 0xf3,0xc3 .size mod_exp_512, . - mod_exp_512