.text .align 32, 0x90 .globl __gmpn_sqr_diag_addlsh1 .type __gmpn_sqr_diag_addlsh1,@function __gmpn_sqr_diag_addlsh1: push %rbx dec %rcx shl %rcx mov (%rdx), %rax lea (%rdi,%rcx,8), %rdi lea (%rsi,%rcx,8), %rsi lea (%rdx,%rcx,4), %r11 neg %rcx mul %rax mov %rax, (%rdi,%rcx,8) xor %ebx, %ebx jmp .Lmid .align 16, 0x90 .Ltop: add %r10, %r8 adc %rax, %r9 mov %r8, -8(%rdi,%rcx,8) mov %r9, (%rdi,%rcx,8) .Lmid: mov 8(%r11,%rcx,4), %rax mov (%rsi,%rcx,8), %r8 mov 8(%rsi,%rcx,8), %r9 adc %r8, %r8 adc %r9, %r9 lea (%rdx,%rbx), %r10 setc %bl mul %rax add $2, %rcx js .Ltop .Lend: add %r10, %r8 adc %rax, %r9 mov %r8, -8(%rdi) mov %r9, (%rdi) adc %rbx, %rdx mov %rdx, 8(%rdi) pop %rbx ret .size __gmpn_sqr_diag_addlsh1,.-__gmpn_sqr_diag_addlsh1