// File: marxn[P]pupp/3rdparty/gmp/./mini-gmp/mini-gmp.c
// Function: mpz_abs_sub
static mp_size_t
mpz_abs_sub (mpz_t r, const mpz_t a, const mpz_t b)
{
  mp_size_t an = GMP_ABS (a->_mp_size);
  mp_size_t bn = GMP_ABS (b->_mp_size);
  int cmp;
  mp_ptr rp;

  cmp = mpn_cmp4 (a->_mp_d, an, b->_mp_d, bn);
  if (cmp > 0)
    {
      rp = MPZ_REALLOC (r, an);
      gmp_assert_nocarry (mpn_sub (rp, a->_mp_d, an, b->_mp_d, bn));
      return mpn_normalized_size (rp, an);
    }
  else if (cmp < 0)
    {
      rp = MPZ_REALLOC (r, bn);
      gmp_assert_nocarry (mpn_sub (rp, b->_mp_d, bn, a->_mp_d, an));
      return -mpn_normalized_size (rp, bn);
    }
  else
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jl 0x4a8a
movq -0x18(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x54(%rbp)
jmp 0x4a96
movq -0x18(%rbp), %rcx
xorl %eax, %eax
subl 0x4(%rcx), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cltq
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jl 0x4ab5
movq -0x20(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x58(%rbp)
jmp 0x4ac1
movq -0x20(%rbp), %rcx
xorl %eax, %eax
subl 0x4(%rcx), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cltq
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x30(%rbp), %rcx
callq 0x4390
movl %eax, -0x34(%rbp)
cmpl $0x0, -0x34(%rbp)
jle 0x4b90
movq -0x28(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq (%rcx), %rcx
cmpq %rcx, %rax
jle 0x4b17
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x3440
movq %rax, -0x60(%rbp)
jmp 0x4b23
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x30(%rbp), %r8
callq 0x18f0
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x4b59
jmp 0x4b78
leaq 0x9945(%rip), %rdi      # 0xe4a5
leaq 0x956d(%rip), %rsi      # 0xe0d4
movl $0x788, %edx            # imm = 0x788
leaq 0xaa53(%rip), %rcx      # 0xf5c6
callq 0x1070
jmp 0x4b7a
movq -0x40(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x14d0
movq %rax, -0x8(%rbp)
jmp 0x4c43
cmpl $0x0, -0x34(%rbp)
jge 0x4c3b
movq -0x30(%rbp), %rax
movq -0x10(%rbp), %rcx
movslq (%rcx), %rcx
cmpq %rcx, %rax
jle 0x4bbd
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x3440
movq %rax, -0x68(%rbp)
jmp 0x4bc9
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x30(%rbp), %rdx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x28(%rbp), %r8
callq 0x18f0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x4bff
jmp 0x4c1e
leaq 0x989f(%rip), %rdi      # 0xe4a5
leaq 0x94c7(%rip), %rsi      # 0xe0d4
movl $0x78e, %edx            # imm = 0x78E
leaq 0xa9ad(%rip), %rcx      # 0xf5c6
callq 0x1070
jmp 0x4c20
movq -0x40(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x14d0
movq %rax, %rcx
xorl %eax, %eax
subq %rcx, %rax
movq %rax, -0x8(%rbp)
jmp 0x4c43
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax)