.section .rdata,"dr" .align 64, 0x90 ctz_table: .byte 7 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 3 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 4 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 3 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 5 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 3 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 4 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 3 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 6 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 3 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 4 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 3 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 5 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 3 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 4 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .byte 3 .byte 0 .byte 1 .byte 0 .byte 2 .byte 0 .byte 1 .byte 0 .text .align 64, 0x90 .globl __gmpn_gcd_11 .def __gmpn_gcd_11 .scl 2 .type 32 .endef __gmpn_gcd_11: push %rdi push %rsi mov %rcx, %rdi mov %rdx, %rsi lea ctz_table(%rip), %r8 jmp Lent .align 16, 0x90 Ltop: cmovc %rdx, %rdi cmovc %rax, %rsi Lmid: and $127, %edx movzbl (%r8,%rdx), %ecx jz Lshift_alot shr %cl, %rdi Lent: mov %rdi, %rax mov %rsi, %rdx sub %rdi, %rdx sub %rsi, %rdi jnz Ltop Lend: pop %rsi pop %rdi ret Lshift_alot: shr $7, %rdi mov %rdi, %rdx jmp Lmid