// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r13
movq %rsi, %r8
movq %rdi, %r9
movl 0x4(%rsi), %r12d
movl %r12d, %ebx
negl %ebx
cmovsl %r12d, %ebx
movl 0x4(%rdx), %r10d
movl %r10d, %r14d
negl %r14d
cmovsl %r10d, %r14d
cmpl %r14d, %ebx
jne 0x3268
movq 0x8(%r8), %rax
movq 0x8(%r13), %rcx
movq %rbx, %rdx
testq %rdx, %rdx
jle 0x3274
movq -0x8(%rax,%rdx,8), %rsi
movq -0x8(%rcx,%rdx,8), %rdi
decq %rdx
cmpq %rdi, %rsi
je 0x3247
xorl %eax, %eax
cmpq %rsi, %rdi
adcl $-0x1, %eax
jmp 0x326f
xorl %eax, %eax
cmpl %r14d, %ebx
sbbl %eax, %eax
orl $0x1, %eax
jmp 0x3276
xorl %eax, %eax
testl %eax, %eax
jle 0x32dd
cmpl (%r9), %ebx
jle 0x3342
movq %r8, -0x30(%rbp)
movq %r13, -0x38(%rbp)
cmpq $0x2, %rbx
movl $0x1, %r13d
cmovgeq %rbx, %r13
movq 0x8(%r9), %rdi
leaq (,%r13,8), %rdx
xorl %esi, %esi
movq %r9, %r15
callq *0xcdf8(%rip)           # 0x100a8
movq %r15, %rdx
movq %rax, %r15
movq %rax, 0x8(%rdx)
movl %r13d, (%rdx)
movl 0x4(%rdx), %eax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
cmpq %rcx, %r13
jae 0x32d3
movl $0x0, 0x4(%rdx)
movq -0x38(%rbp), %r13
movq -0x30(%rbp), %r8
jmp 0x3346
jns 0x337b
movl %r10d, -0x38(%rbp)
cmpl (%r9), %r14d
jle 0x337f
movq %r8, -0x30(%rbp)
cmpq $0x2, %r14
movl $0x1, %r12d
cmovgeq %r14, %r12
movq 0x8(%r9), %rdi
leaq (,%r12,8), %rdx
xorl %esi, %esi
movq %r9, %r15
callq *0xcd8f(%rip)           # 0x100a8
movq %r15, %rdx
movq %rax, %r15
movq %rax, 0x8(%rdx)
movl %r12d, (%rdx)
movl 0x4(%rdx), %eax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
cmpq %rcx, %r12
jae 0x333c
movl $0x0, 0x4(%rdx)
movq -0x30(%rbp), %r8
jmp 0x3383
movq 0x8(%r9), %r15
movq 0x8(%r8), %rsi
movq 0x8(%r13), %rcx
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %r8
callq 0x16e4
testq %rax, %rax
jne 0x33d4
testl %r12d, %r12d
je 0x33c2
cmpq $0x0, -0x8(%r15,%rbx,8)
jne 0x33c2
leaq -0x1(%rbx), %rax
cmpq $0x1, %rbx
movq %rax, %rbx
jg 0x3366
xorl %ebx, %ebx
jmp 0x33c2
movq 0x8(%r9), %r15
movq 0x8(%r13), %rsi
movq 0x8(%r8), %rcx
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %r8
callq 0x16e4
testq %rax, %rax
jne 0x33f3
cmpl $0x0, -0x38(%rbp)
je 0x33bc
cmpq $0x0, -0x8(%r15,%r14,8)
jne 0x33bc
leaq -0x1(%r14), %rax
cmpq $0x1, %r14
movq %rax, %r14
jg 0x33a4
xorl %r14d, %r14d
negq %r14
movq %r14, %rbx
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x705a(%rip), %rdi      # 0xa435
leaq 0x6c82(%rip), %rsi      # 0xa064
leaq 0x7d68(%rip), %rcx      # 0xb151
movl $0x788, %edx            # imm = 0x788
callq 0x1090
leaq 0x703b(%rip), %rdi      # 0xa435
leaq 0x6c63(%rip), %rsi      # 0xa064
leaq 0x7d49(%rip), %rcx      # 0xb151
movl $0x78e, %edx            # imm = 0x78E
callq 0x1090