// File: /workspace/github_cpp_makefile_star2_O2/ef-gy[P]libefgy/include/ef.gy/big-integers.h
// Function: std::basic_ostream<char, std::char_traits<char>>& efgy::math::numeric::operator<<<char, long long, unsigned long long, unsigned int, 32u>(std::basic_ostream<char, std::char_traits<char>>&, efgy::math::numeric::bigIntegers<long long, unsigned long long, unsigned int, 32u> const&)
std::basic_ostream<C> &operator<<(
    std::basic_ostream<C> &out,
    const bigIntegers<Ts, Tu, cellType, cellBitCount> &pNumber) {
  const unsigned int pBase = 10;
  bool negative = pNumber < zero();
  bool didOutput = false;
  bigIntegers<Ts, Tu, cellType, cellBitCount> b = pNumber;

  if (negative) {
    b = -b;
  }

  std::string s = "";

  while (b > zero()) {
    const char t[2] = {
        "0123456789abcdefghijklmnopqrstuvwxyz"
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ#,."[(b % bigIntegers<Ts, Tu, cellType,
                                                         cellBitCount>(pBase))
                                            .toInteger()],
        0};
    std::string tq(t);

    s = tq + s;
    b /= pBase;
    if (!didOutput) {
      if (negative) {
        out << "-";
      }
      didOutput = true;
    }
  }

  out << s;

  if (!didOutput) {
    out << "0";
  }

  return out;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rsi, %rbx
movq %rdi, 0x10(%rsp)
leaq 0x18(%rsp), %rdi
callq 0x15c32
movl %eax, %ebp
leaq 0x18(%rsp), %rdi
movq %rbx, %rsi
callq 0x157d4
movb %bpl, 0xd(%rsp)
testb %bpl, %bpl
je 0x8755
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x158b6
leaq 0x18(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x154e0
leaq 0x40(%rsp), %rdi
callq 0x127b2
leaq 0x1128d(%rip), %rsi     # 0x199e9
leaq 0x38(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x831e
xorb $0x1, 0xd(%rsp)
xorl %ebp, %ebp
leaq 0x58(%rsp), %r14
pushq $0xa
popq %rbx
leaq 0x78(%rsp), %r15
leaq 0x18(%rsp), %r12
leaq 0x38(%rsp), %r13
cmpb $0x0, 0x18(%rsp)
jne 0x887a
movq 0x20(%rsp), %rax
cmpq %rax, 0x28(%rsp)
je 0x887a
movq %r14, %rdi
movq %rbx, %rsi
callq 0x8542
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x158c8
movq %r15, %rdi
callq 0x15408
leaq 0x11b6d(%rip), %rcx     # 0x1a339
movb (%rax,%rcx), %al
movb %al, 0xe(%rsp)
movb $0x0, 0xf(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x127b2
leaq 0x60(%rsp), %rdi
callq 0x127b2
movq %r15, %rdi
leaq 0xe(%rsp), %rsi
movq %r14, %rdx
callq 0x831e
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x15a3e
movq %r13, %rdi
movq %r14, %rsi
callq 0x4320
movq %r14, %rdi
callq 0x4120
movq %r14, %rdi
movq %rbx, %rsi
callq 0x8542
movq %r12, %rdi
movq %r14, %rsi
callq 0x15a76
leaq 0x60(%rsp), %rdi
callq 0x127b2
movb 0xd(%rsp), %al
orb %bpl, %al
movzbl %bpl, %ebp
testb $0x1, %bpl
pushq $0x1
popq %rcx
cmovel %ecx, %ebp
testb $0x1, %al
jne 0x886d
movb $0x1, %bpl
movq 0x10(%rsp), %rdi
leaq 0x11a6b(%rip), %rsi     # 0x1a2d3
callq 0x4270
movq %r15, %rdi
callq 0x4120
jmp 0x8789
leaq 0x38(%rsp), %rsi
movq 0x10(%rsp), %rdi
callq 0x4250
testb $0x1, %bpl
jne 0x88a0
leaq 0x11ae5(%rip), %rsi     # 0x1a37b
movq 0x10(%rsp), %rdi
callq 0x4270
leaq 0x38(%rsp), %rdi
callq 0x4120
leaq 0x20(%rsp), %rdi
callq 0x127b2
movq 0x10(%rsp), %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x127b2
jmp 0x8923
jmp 0x88dc
movq %rax, %rbx
jmp 0x8923
jmp 0x8916
jmp 0x88e7
jmp 0x88e7
movq %rax, %rbx
jmp 0x88f9
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x127b2
leaq 0x78(%rsp), %rdi
callq 0x4120
jmp 0x8919
jmp 0x8916
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x127b2
jmp 0x8919
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x4120
leaq 0x20(%rsp), %rdi
callq 0x127b2
movq %rbx, %rdi
callq 0x4430