// File: /workspace/github_cpp_makefile_star2_O3/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 0x19201
movl %eax, %r15d
movb (%r14), %al
movb %al, (%rbx)
leaq 0x40(%rsp), %rbx
addq $0x8, %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x18bb6
movq 0x8(%rbx), %rax
cmpq (%rbx), %rax
jne 0x9ebb
movb $0x0, 0x38(%rsp)
testb %r15b, %r15b
je 0x9f1e
movb 0x38(%rsp), %al
leaq 0x20(%rsp), %r14
movb %al, -0x8(%r14)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x18bb6
movq 0x28(%rsp), %rax
movb 0x18(%rsp), %cl
xorb $0x1, %cl
cmpq 0x20(%rsp), %rax
movzbl %cl, %eax
movl $0x1, %ecx
cmovnel %eax, %ecx
movb %cl, 0x18(%rsp)
movb %cl, 0x38(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x18a7a
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x9f1e
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
leaq 0x28(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x13abb(%rip), %rdx     # 0x1d9e9
leaq 0x18(%rsp), %rdi
movq %rdx, %rsi
callq 0xf0a2
xorl %ebp, %ebp
cmpb $0x0, 0x38(%rsp)
jne 0xa117
movq 0x40(%rsp), %rax
cmpq %rax, 0x48(%rsp)
je 0xa117
xorb $0x1, %r15b
movb %r15b, 0xf(%rsp)
xorl %ebp, %ebp
leaq 0x58(%rsp), %r14
leaq 0x78(%rsp), %r15
leaq 0x38(%rsp), %r12
leaq 0xd(%rsp), %r13
leaq 0x18(%rsp), %rbx
movl $0xa, %esi
movq %r14, %rdi
callq 0x9c54
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x18c36
movq 0x80(%rsp), %rdi
movq 0x88(%rsp), %rcx
movq %rcx, %rax
subq %rdi, %rax
je 0x9fe6
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 0x9fb9
leaq 0x14361(%rip), %rax     # 0x1e339
movb (%rdx,%rax), %al
movb %al, 0xd(%rsp)
movb $0x0, 0xe(%rsp)
jmp 0x9ff2
movw $0x30, 0xd(%rsp)
testq %rcx, %rcx
je 0xa002
movq 0x90(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa019
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 $0xd, %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0xf0a2
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x18e98
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4300
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xa076
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x4260
movl $0xa, %esi
movq %r14, %rdi
callq 0x9c54
movq %r12, %rdi
movq %r14, %rsi
callq 0x18ef2
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa0a5
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
movb 0xf(%rsp), %al
orb %bpl, %al
movzbl %bpl, %ebp
testb $0x1, %bpl
movl $0x1, %ecx
cmovel %ecx, %ebp
testb $0x1, %al
jne 0xa0d9
movb $0x1, %bpl
movl $0x1, %edx
movq 0x10(%rsp), %rdi
leaq 0x141ff(%rip), %rsi     # 0x1e2d3
callq 0x42c0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0xa0fb
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x4260
cmpb $0x0, 0x38(%rsp)
jne 0xa112
movq 0x40(%rsp), %rax
cmpq %rax, 0x48(%rsp)
jne 0x9f7c
leaq 0x28(%rsp), %rbx
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq 0x10(%rsp), %rdi
callq 0x42c0
testb $0x1, %bpl
jne 0xa147
leaq 0x14243(%rip), %rsi     # 0x1e37b
movl $0x1, %edx
movq 0x10(%rsp), %rdi
callq 0x42c0
movq 0x18(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa15e
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x4260
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0xa175
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 0xa20f
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
jmp 0xa20a
jmp 0xa1a5
movq %rax, %rbx
jmp 0xa20f
jmp 0xa1c7
jmp 0xa1ce
jmp 0xa1c7
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa1f3
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
jmp 0xa1ee
movq %rax, %rbx
jmp 0xa1f3
jmp 0xa1ce
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0xa1f3
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x4260
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0xa20f
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x4260
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0xa226
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 0xa1d1
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x4260
jmp 0xa1d1