// File: /workspace/github_cpp_makefile_star2_O3/ef-gy[P]libefgy/include/ef.gy/big-integers.h
// Function: efgy::math::numeric::bigIntegers<long long, unsigned long long, unsigned int, 32u>::operator/=(efgy::math::numeric::bigIntegers<long long, unsigned long long, unsigned int, 32u> const&)
bigIntegers &operator/=(const bigIntegers &b) {
    if (*this == zero()) {
      return (*this = zero());
    } else if (b == zero()) {
      return (*this = zero());
    } else if (b == one()) {
      return *this;
    } else if (b == negativeOne()) {
      return (*this = -*this);
    }

    if ((cell.size() <= cellsPerLong) && (b.cell.size() <= cellsPerLong)) {
      *this = bigIntegers((*this).toInteger() / (b).toInteger(),
                          (negative != b.negative));
      return *this;
    }

    bool rnegative = (negative != b.negative);
    const bigIntegers &aa = negative ? -*this : *this;
    const bigIntegers &ba = b.negative ? -b : b;
    doDivide(aa, ba);
    negative = rnegative && (cell.size() > 0);
    return *this;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
leaq 0x8(%rdi), %r14
movq 0x8(%rdi), %rdi
movq 0x10(%rbx), %r8
subq %rdi, %r8
je 0x18f9d
movq %rsi, %r15
movq 0x8(%rsi), %rdx
movq 0x10(%rsi), %rsi
subq %rdx, %rsi
je 0x18fd2
movb (%r15), %bpl
testb %bpl, %bpl
je 0x19007
cmpq $0x4, %rsi
jne 0x19016
cmpl $0x1, (%rdx)
jne 0x19016
movb (%rbx), %al
leaq 0x10(%rsp), %r15
movb %al, -0x8(%r15)
movq %r15, %rdi
movq %r14, %rsi
callq 0x18bb6
movq (%r15), %rdi
movb -0x8(%r15), %al
xorb $0x1, %al
cmpq %rdi, 0x8(%r15)
movzbl %al, %ecx
movl $0x1, %eax
cmovnel %ecx, %eax
movb %al, -0x8(%r15)
leaq 0x8(%rsp), %rcx
cmpq %rbx, %rcx
je 0x19197
movb %al, (%rbx)
movq %r14, %rdi
movq %r15, %rsi
callq 0x18a7a
jmp 0x19192
xorps %xmm0, %xmm0
leaq 0x8(%rsp), %rax
movups %xmm0, 0x8(%rax)
movq $0x0, 0x18(%rax)
movb $0x0, (%rax)
cmpq %rbx, %rax
je 0x191a9
leaq 0x10(%rsp), %rsi
movb $0x0, (%rbx)
movq %r14, %rdi
callq 0x18a7a
jmp 0x19192
xorps %xmm0, %xmm0
leaq 0x8(%rsp), %rax
movups %xmm0, 0x8(%rax)
movq $0x0, 0x18(%rax)
movb $0x0, (%rax)
cmpq %rbx, %rax
je 0x191a9
leaq 0x10(%rsp), %rsi
movb $0x0, (%rbx)
movq %r14, %rdi
callq 0x18a7a
jmp 0x19192
cmpq $0x4, %rsi
jne 0x19016
cmpl $0x1, (%rdx)
je 0x191a9
cmpq $0x8, %r8
ja 0x190ad
cmpq $0x8, %rsi
ja 0x190ad
shrq $0x2, %r8
xorl %ecx, %ecx
xorl %r9d, %r9d
xorl %eax, %eax
movl (%rdi,%r9,4), %r10d
shlq %cl, %r10
orq %r10, %rax
incq %r9
movl %r9d, %r10d
addl $0x20, %ecx
cmpq %r10, %r8
ja 0x19035
shrq $0x2, %rsi
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %edi, %edi
movl (%rdx,%r8,4), %r9d
shlq %cl, %r9
orq %r9, %rdi
incq %r8
movl %r8d, %r9d
addl $0x20, %ecx
cmpq %r9, %rsi
ja 0x19058
xorl %edx, %edx
divq %rdi
xorl %edx, %edx
cmpb %bpl, (%rbx)
setne %dl
leaq 0x8(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
callq 0x18782
cmpq %rbx, %r15
je 0x19192
leaq 0x10(%rsp), %rsi
movb -0x8(%rsi), %al
movb %al, (%rbx)
movq %r14, %rdi
callq 0x18a7a
jmp 0x19192
movb (%rbx), %r13b
leaq 0x10(%rsp), %r12
movb %r13b, -0x8(%r12)
movq %r12, %rdi
movq %r14, %rsi
callq 0x18bb6
movq (%r12), %rax
movq 0x8(%r12), %rcx
cmpb $0x1, %r13b
jne 0x190ef
movb 0x8(%rsp), %dl
xorb $0x1, %dl
cmpq %rax, %rcx
movzbl %dl, %eax
movl $0x1, %ecx
cmovnel %eax, %ecx
movb %cl, 0x8(%rsp)
jmp 0x190f9
cmpq %rax, %rcx
jne 0x190f9
movb $0x0, 0x8(%rsp)
movb (%r15), %al
addq $0x8, %r15
leaq 0x30(%rsp), %rdi
movb %al, -0x8(%rdi)
cmpb $0x1, %al
jne 0x19136
movq %r15, %rsi
callq 0x18bb6
movq 0x38(%rsp), %rax
movb 0x28(%rsp), %cl
xorb $0x1, %cl
cmpq 0x30(%rsp), %rax
movzbl %cl, %eax
movl $0x1, %ecx
cmovnel %eax, %ecx
movb %cl, 0x28(%rsp)
jmp 0x1914f
movq %r15, %rsi
callq 0x18bb6
movq 0x38(%rsp), %rax
cmpq 0x30(%rsp), %rax
jne 0x1914f
movb $0x0, 0x28(%rsp)
leaq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
movl $0x1, %ecx
callq 0x19c0c
cmpb %bpl, %r13b
setne %al
movq 0x8(%rbx), %rcx
cmpq %rcx, 0x10(%rbx)
setne %cl
andb %al, %cl
movb %cl, (%rbx)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x19192
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x191a9
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x191df
jmp 0x191df
jmp 0x191df
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x191e2
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
jmp 0x191e2
jmp 0x191df
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x191f9
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movq %rbx, %rdi
callq 0x43f0