// File: marxn[P]pupp/3rdparty/gmp/./mini-gmp/mini-gmp.c
// Function: mpn_gcd_11
static mp_limb_t
mpn_gcd_11 (mp_limb_t u, mp_limb_t v)
{
  unsigned shift;

  assert ( (u | v) > 0);

  if (u == 0)
    return v;
  else if (v == 0)
    return u;

  gmp_ctz (shift, u | v);

  u >>= shift;
  v >>= shift;

  if ( (u & 1) == 0)
    MP_LIMB_T_SWAP (u, v);

  while ( (v & 1) == 0)
    v >>= 1;

  while (u != v)
    {
      if (u > v)
	{
	  u -= v;
	  do
	    u >>= 1;
	  while ( (u & 1) == 0);
	}
      else
	{
	  v -= u;
	  do
	    v >>= 1;
	  while ( (v & 1) == 0);
	}
    }
  return u << shift;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
orq -0x18(%rbp), %rax
cmpq $0x0, %rax
jbe 0x6860
jmp 0x687f
leaq 0x8f1e(%rip), %rdi      # 0xf785
leaq 0x7866(%rip), %rsi      # 0xe0d4
movl $0xa5e, %edx            # imm = 0xA5E
leaq 0x8f17(%rip), %rcx      # 0xf791
callq 0x1070
cmpq $0x0, -0x10(%rbp)
jne 0x6893
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x6a24
cmpq $0x0, -0x18(%rbp)
jne 0x68a7
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x6a24
jmp 0x68a9
jmp 0x68ab
movq -0x10(%rbp), %rax
orq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movq -0x28(%rbp), %rax
xorl %ecx, %ecx
subq -0x28(%rbp), %rcx
andq %rcx, %rax
movq %rax, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
movabsq $-0x100000000000000, %rax # imm = 0xFF00000000000000
andq -0x38(%rbp), %rax
cmpq $0x0, %rax
jne 0x6901
movq -0x38(%rbp), %rax
shlq $0x8, %rax
movq %rax, -0x38(%rbp)
movl -0x3c(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x3c(%rbp)
jmp 0x68d6
jmp 0x6903
movabsq $-0x8000000000000000, %rax # imm = 0x8000000000000000
andq -0x38(%rbp), %rax
cmpq $0x0, %rax
jne 0x692d
movq -0x38(%rbp), %rax
shlq %rax
movq %rax, -0x38(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x6903
movl -0x3c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, %ecx
movl $0x3f, %eax
subq %rcx, %rax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, %ecx
shrq %cl, %rax
movq %rax, -0x10(%rbp)
movl -0x1c(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, %ecx
shrq %cl, %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0x698d
jmp 0x6973
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x698d
jmp 0x698f
movq -0x18(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0x69aa
movq -0x18(%rbp), %rax
shrq %rax
movq %rax, -0x18(%rbp)
jmp 0x698f
jmp 0x69ac
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
je 0x6a16
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
jbe 0x69ea
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
shrq %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x69cf
jmp 0x6a14
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
shrq %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x69f9
jmp 0x6a14
jmp 0x69ac
movq -0x10(%rbp), %rax
movl -0x1c(%rbp), %ecx
shlq %cl, %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nop