// File: /workspace/github_cpp_makefile_star2_O3/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 %rsi, %r9
movq %rdi, %r13
movl 0x4(%rsi), %r10d
movl %r10d, %ebx
negl %ebx
cmovsl %r10d, %ebx
movl 0x4(%rdx), %r12d
movl %r12d, %r14d
negl %r14d
cmovsl %r12d, %r14d
cmpl %r14d, %ebx
jne 0x3295
movq 0x8(%r9), %rax
movq 0x8(%rdx), %rcx
movq %rbx, %r8
testq %r8, %r8
jle 0x337d
movq -0x8(%rcx,%r8,8), %rsi
leaq -0x1(%r8), %rdi
cmpq %rsi, -0x8(%rax,%r8,8)
movq %rdi, %r8
je 0x320f
ja 0x329a
cmpl (%r13), %r14d
jle 0x32ff
movq %r9, -0x30(%rbp)
movq %rdx, -0x38(%rbp)
cmpq $0x2, %r14
movl $0x1, %eax
cmovgeq %r14, %rax
movq %rax, -0x40(%rbp)
movq 0x8(%r13), %rdi
leaq (,%rax,8), %rdx
xorl %esi, %esi
callq *0xce44(%rip)           # 0x100a8
movq %rax, %r15
movq %rax, 0x8(%r13)
movq -0x40(%rbp), %rdx
movl %edx, (%r13)
movl 0x4(%r13), %eax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
cmpq %rcx, %rdx
jae 0x328b
movl $0x0, 0x4(%r13)
movq -0x38(%rbp), %rdx
movq -0x30(%rbp), %r9
jmp 0x3303
cmpl %r14d, %ebx
jb 0x322d
movl %r10d, -0x40(%rbp)
cmpl (%r13), %ebx
jle 0x3343
movq %r9, -0x30(%rbp)
movq %rdx, -0x38(%rbp)
cmpq $0x2, %rbx
movl $0x1, %r12d
cmovgeq %rbx, %r12
movq 0x8(%r13), %rdi
leaq (,%r12,8), %rdx
xorl %esi, %esi
callq *0xcdd6(%rip)           # 0x100a8
movq %rax, %r15
movq %rax, 0x8(%r13)
movl %r12d, (%r13)
movl 0x4(%r13), %eax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
cmpq %rcx, %r12
jae 0x32f5
movl $0x0, 0x4(%r13)
movq -0x38(%rbp), %rdx
movq -0x30(%rbp), %r9
jmp 0x3347
movq 0x8(%r13), %r15
movq 0x8(%rdx), %rsi
movq 0x8(%r9), %rcx
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %r8
callq 0x16e4
testq %rax, %rax
jne 0x3391
testl %r12d, %r12d
je 0x333b
cmpq $0x0, -0x8(%r15,%r14,8)
jne 0x333b
leaq -0x1(%r14), %rax
cmpq $0x1, %r14
movq %rax, %r14
jg 0x3323
xorl %r14d, %r14d
negq %r14
movq %r14, %rbx
jmp 0x337f
movq 0x8(%r13), %r15
movq 0x8(%r9), %rsi
movq 0x8(%rdx), %rcx
movq %r15, %rdi
movq %rbx, %rdx
movq %r14, %r8
callq 0x16e4
testq %rax, %rax
jne 0x33b0
cmpl $0x0, -0x40(%rbp)
je 0x337f
cmpq $0x0, -0x8(%r15,%rbx,8)
jne 0x337f
leaq -0x1(%rbx), %rax
cmpq $0x1, %rbx
movq %rax, %rbx
jg 0x3368
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x709d(%rip), %rdi      # 0xa435
leaq 0x6cc5(%rip), %rsi      # 0xa064
leaq 0x7dab(%rip), %rcx      # 0xb151
movl $0x78e, %edx            # imm = 0x78E
callq 0x1090
leaq 0x707e(%rip), %rdi      # 0xa435
leaq 0x6ca6(%rip), %rsi      # 0xa064
leaq 0x7d8c(%rip), %rcx      # 0xb151
movl $0x788, %edx            # imm = 0x788
callq 0x1090