// File: 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
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0xa, -0x14(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x16(%rbp), %rsi
callq 0x3e6a0
andb $0x1, %al
movb %al, -0x15(%rbp)
movb $0x0, -0x17(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x3e3b0
testb $0x1, -0x15(%rbp)
je 0xfe67
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x3e6d0
jmp 0xfe22
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x3d420
jmp 0xfe31
leaq -0x58(%rbp), %rdi
callq 0x10260
jmp 0xfe67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1012b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x10260
jmp 0x1012b
leaq -0x89(%rbp), %rdi
movq %rdi, -0x140(%rbp)
callq 0x55f0
movq -0x140(%rbp), %rdx
leaq 0x33be3(%rip), %rsi     # 0x43a6b
leaq -0x88(%rbp), %rdi
callq 0xf520
jmp 0xfe96
leaq -0x89(%rbp), %rdi
callq 0x53d0
leaq -0x38(%rbp), %rdi
leaq -0x8a(%rbp), %rsi
callq 0x3e730
movb %al, -0x141(%rbp)
jmp 0xfeba
movb -0x141(%rbp), %al
testb $0x1, %al
jne 0xfec9
jmp 0x100c3
leaq -0xd0(%rbp), %rdi
movl $0xa, %esi
callq 0xf930
jmp 0xfedc
leaq -0xb0(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0xd0(%rbp), %rdx
callq 0x3e780
jmp 0xfef5
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x3d1f0
movq -0x158(%rbp), %rdi
leaq 0x344cf(%rip), %rcx     # 0x443e5
movb (%rax,%rcx), %al
movb %al, -0x8c(%rbp)
movb $0x0, -0x8b(%rbp)
callq 0x10260
leaq -0xd0(%rbp), %rdi
callq 0x10260
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x150(%rbp)
callq 0x55f0
movq -0x150(%rbp), %rdx
leaq -0xf0(%rbp), %rdi
leaq -0x8c(%rbp), %rsi
callq 0xf520
jmp 0xff66
leaq -0xf1(%rbp), %rdi
callq 0x53d0
leaq -0x118(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0x3ea40
jmp 0xff8e
leaq -0x88(%rbp), %rdi
leaq -0x118(%rbp), %rsi
movq %rsi, -0x160(%rbp)
callq 0x5460
movq -0x160(%rbp), %rdi
callq 0x5230
leaq -0x138(%rbp), %rdi
movl $0xa, %esi
callq 0xf930
jmp 0xffc7
leaq -0x38(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x3eac0
jmp 0xffd9
leaq -0x138(%rbp), %rdi
callq 0x10260
testb $0x1, -0x17(%rbp)
jne 0x100a4
testb $0x1, -0x15(%rbp)
je 0x100a0
movq -0x8(%rbp), %rdi
leaq 0x3437b(%rip), %rsi     # 0x4437f
callq 0x5360
jmp 0x1000b
jmp 0x100a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x89(%rbp), %rdi
callq 0x53d0
jmp 0x1012b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1011f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x10260
jmp 0x1011f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xf1(%rbp), %rdi
callq 0x53d0
jmp 0x1011f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x100b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x10260
jmp 0x100b5
movb $0x1, -0x17(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x5230
jmp 0xfea2
leaq -0xf0(%rbp), %rdi
callq 0x5230
jmp 0x1011f
movq -0x8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x5330
jmp 0x100d5
testb $0x1, -0x17(%rbp)
jne 0x100ef
movq -0x8(%rbp), %rdi
leaq 0x34341(%rip), %rsi     # 0x44427
callq 0x5360
jmp 0x100ed
jmp 0x100ef
movq -0x8(%rbp), %rax
movq %rax, -0x168(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x5230
leaq -0x38(%rbp), %rdi
callq 0x10260
movq -0x168(%rbp), %rax
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
leaq -0x88(%rbp), %rdi
callq 0x5230
leaq -0x38(%rbp), %rdi
callq 0x10260
movq -0x60(%rbp), %rdi
callq 0x55e0
nopl (%rax)