// File: /workspace/github_cpp_makefile_star2_O1/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, %r14
movq %rdi, 0x10(%rsp)
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
callq 0x190ab
movl %eax, %r15d
movb (%r14), %al
movb %al, (%rbx)
leaq 0x40(%rsp), %rbx
addq $0x8, %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x18aae
movq 0x8(%rbx), %rax
cmpq (%rbx), %rax
jne 0x9e52
movb $0x0, 0x38(%rsp)
testb %r15b, %r15b
je 0x9e91
leaq 0x18(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x18b2e
leaq 0x20(%rsp), %rsi
movb -0x8(%rsi), %al
movb %al, 0x38(%rsp)
movq %rbx, %rdi
callq 0x18980
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x9e91
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
leaq 0x28(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x12b48(%rip), %rdx     # 0x1c9e9
leaq 0x18(%rsp), %rdi
movq %rdx, %rsi
callq 0xefd2
xorl %ebp, %ebp
cmpb $0x0, 0x38(%rsp)
jne 0xa082
movq 0x40(%rsp), %rax
cmpq %rax, 0x48(%rsp)
je 0xa082
xorb $0x1, %r15b
movb %r15b, 0xd(%rsp)
xorl %ebp, %ebp
leaq 0x58(%rsp), %r14
leaq 0x78(%rsp), %r15
leaq 0x38(%rsp), %r12
leaq 0xe(%rsp), %r13
leaq 0x18(%rsp), %rbx
movl $0xa, %esi
movq %r14, %rdi
callq 0x9be4
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x18b58
movq 0x80(%rsp), %rdi
movq 0x88(%rsp), %rax
subq %rdi, %rax
je 0x9f43
sarq $0x2, %rax
xorl %ecx, %ecx
xorl %esi, %esi
xorl %edx, %edx
movl (%rdi,%rsi,4), %r8d
shlq %cl, %r8
orq %r8, %rdx
incq %rsi
movl %esi, %r8d
addl $0x20, %ecx
cmpq %r8, %rax
ja 0x9f29
jmp 0x9f45
xorl %edx, %edx
leaq 0x133ed(%rip), %rax     # 0x1d339
movb (%rdx,%rax), %al
movb %al, 0xe(%rsp)
movb $0x0, 0xf(%rsp)
testq %rdi, %rdi
je 0x9f6d
movq 0x90(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x9f84
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
leaq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movq %r13, %rdi
callq 0x4100
leaq (%rsp,%rax), %rdx
addq $0xe, %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0xefd2
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x18d7d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4300
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x9fe1
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x4260
movl $0xa, %esi
movq %r14, %rdi
callq 0x9be4
movq %r12, %rdi
movq %r14, %rsi
callq 0x18dd8
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa010
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movb 0xd(%rsp), %al
orb %bpl, %al
movzbl %bpl, %ebp
testb $0x1, %bpl
movl $0x1, %ecx
cmovel %ecx, %ebp
testb $0x1, %al
jne 0xa044
movb $0x1, %bpl
movl $0x1, %edx
movq 0x10(%rsp), %rdi
leaq 0x13294(%rip), %rsi     # 0x1d2d3
callq 0x42c0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0xa066
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x4260
cmpb $0x0, 0x38(%rsp)
jne 0xa07d
movq 0x40(%rsp), %rax
cmpq %rax, 0x48(%rsp)
jne 0x9eef
leaq 0x28(%rsp), %rbx
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq 0x10(%rsp), %rdi
callq 0x42c0
testb $0x1, %bpl
jne 0xa0b2
leaq 0x132d8(%rip), %rsi     # 0x1d37b
movl $0x1, %edx
movq 0x10(%rsp), %rdi
callq 0x42c0
movq 0x18(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa0c9
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x4260
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0xa0e0
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movq 0x10(%rsp), %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0xa17a
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
jmp 0xa175
jmp 0xa110
movq %rax, %rbx
jmp 0xa17a
jmp 0xa132
jmp 0xa139
jmp 0xa132
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa15e
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
jmp 0xa159
movq %rax, %rbx
jmp 0xa15e
jmp 0xa139
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0xa15e
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x4260
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0xa17a
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x4260
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0xa191
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movq %rbx, %rdi
callq 0x43f0
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa13c
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
jmp 0xa13c
nop