// File: /workspace/github_cpp_makefile_star2_O2/lvandeve[P]base256/base256.cpp
// Function: Printer::encodeChar[abi:cxx11](unsigned char, unsigned char, unsigned char, unsigned long*)
std::string encodeChar(unsigned char c, unsigned char prev, unsigned char next, size_t* width) {
    std::string temp = n->encodeChar(c, prev, next);
    *width = temp.size();
    if(printspace && c == 32 && (mix || n->printable())) {
      std::string result;
      for(size_t i = 0; i < n->width(); i++) {
        result += " ";
      }
      return result;
    }
    if(temp == "\n") return temp;
    if(c == 10 && printnewline && (mix || n->printable())) return "\n";
    std::string result;
    if(mix && c > 32 && c < 127 && !n->printable()) {
      size_t size = n->width() - 1;
      for(size_t i = 0; i < size; i++) {
        result += " ";
      }
      result += c;
      return result;
    }
    bool usecolor = colored && !(temp.size() == 1 && (unsigned char)temp[0] == c);
    if(usecolor) {
      // the gray values (7, 8, 15) are unused in case standard color for printable ASCII is used
      static const int colors[16] = {1,  2,  3, 7, 15, 8, 15,  4,
                                     9, 10, 11, 5, 13, 6, 14, 12};
      int color = colors[c >> 4];
      result += std::string() + "\x1b" + "[" + valtostr((color < 8 ? 30 : 82) + color) + "m";
      // dark blue is quite unreadable against black background, so give it a background. Also
      // give background to the one duplicate color to distinguish it.
      // This assumes terminal with white-ish text on black background
      if(color == 4 || (c >> 4) == 6) result += std::string() + "\x1b" + "[" + valtostr(100) + "m";
      if((c >> 4) == 6) result += std::string() + "\x1b" + "[" + valtostr(100) + "m";
      result += temp;
      result += "\x1b[0m";
      if(color == 4 || (c >> 4) == 6) result += "\x1b[0m";
    } else {
      result += temp;
    }
    return result;
  }

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xf0, %rsp
movq %r9, %r12
movl %edx, %r14d
movq %rsi, %r15
movq %rdi, %rbx
movq (%rsi), %rsi
movq (%rsi), %rax
leaq 0x10(%rsp), %r13
movq %r13, %rdi
callq *0x10(%rax)
movq 0x8(%r13), %rax
movq %rax, (%r12)
cmpl $0x20, %r14d
jne 0xbe98
cmpb $0x0, 0x1c(%r15)
je 0xbe98
cmpb $0x0, 0x1a(%r15)
jne 0xbe5a
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
testb %al, %al
je 0xbe98
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
andq $0x0, 0x8(%rbx)
movb $0x0, 0x10(%rbx)
xorl %r12d, %r12d
leaq 0x2837(%rip), %r14      # 0xe6ab
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
cltq
cmpq %rax, %r12
jae 0xbf85
movq %rbx, %rdi
movq %r14, %rsi
callq 0x43d0
incq %r12
jmp 0xbe74
leaq 0x184c(%rip), %rsi      # 0xd6eb
leaq 0x10(%rsp), %rdi
callq 0x833b
testb %al, %al
je 0xbed7
leaq 0x10(%rbx), %rcx
movq %rcx, (%rbx)
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
je 0xbf66
movq %rdx, (%rbx)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rbx)
jmp 0xbf6c
cmpb $0xa, %r14b
jne 0xbf0e
cmpb $0x1, 0x1b(%r15)
jne 0xbf0e
cmpb $0x0, 0x1a(%r15)
jne 0xbef8
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
testb %al, %al
je 0xbf0e
leaq 0x17ec(%rip), %rsi      # 0xd6eb
leaq 0x30(%rsp), %rdx
movq %rbx, %rdi
callq 0x40c0
jmp 0xbf85
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
andq $0x0, 0x8(%rbx)
movb $0x0, 0x10(%rbx)
leal -0x21(%r14), %eax
cmpb $0x5d, %al
ja 0xbf3e
cmpb $0x0, 0x1a(%r15)
je 0xbf3e
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
testb %al, %al
je 0xc2b3
cmpb $0x1, 0x18(%r15)
jne 0xbf57
cmpq $0x1, 0x18(%rsp)
jne 0xbfa3
movq 0x10(%rsp), %rax
cmpb %r14b, (%rax)
jne 0xbfa3
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x43f0
jmp 0xbf85
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq 0x18(%rsp), %rcx
movq %rcx, 0x8(%rbx)
movq %rax, 0x10(%rsp)
andq $0x0, 0x18(%rsp)
movb $0x0, 0x20(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x4408
movq %rbx, %rax
addq $0xf0, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movl %r14d, %eax
shrb $0x4, %al
movzbl %al, %r12d
leaq 0x27ac(%rip), %rax      # 0xe760
movl (%rax,%r12,4), %r13d
leaq 0xe0(%rsp), %r15
movq %r15, -0x10(%r15)
andq $0x0, -0x8(%r15)
movb $0x0, (%r15)
leaq 0x2672(%rip), %rdx      # 0xe646
leaq 0x70(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x8d60
leaq 0x26c2(%rip), %rdx      # 0xe6af
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x8d60
leal 0x1e(%r13), %eax
addl $0x52, %r13d
movl $0x288f, %ecx           # imm = 0x288F
btl %r12d, %ecx
cmovbl %eax, %r13d
leaq 0xc(%rsp), %rsi
movl %r13d, (%rsi)
leaq 0x50(%rsp), %rdi
xorl %edx, %edx
callq 0xaef3
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xae8c
leaq 0x2609(%rip), %rdx      # 0xe652
leaq 0x30(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x8d60
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x43f0
leaq 0x30(%rsp), %rdi
callq 0x4408
leaq 0xb0(%rsp), %rdi
callq 0x4408
leaq 0x50(%rsp), %rdi
callq 0x4408
leaq 0x90(%rsp), %rdi
callq 0x4408
leaq 0x70(%rsp), %rdi
callq 0x4408
leaq 0xd0(%rsp), %rdi
callq 0x4408
andb $-0x20, %r14b
cmpb $0x60, %r14b
jne 0xc195
leaq 0xd0(%rsp), %rsi
movq %r15, (%rsi)
andq $0x0, 0x8(%rsi)
movb $0x0, 0x10(%rsi)
leaq 0x2570(%rip), %rdx      # 0xe646
leaq 0x70(%rsp), %rdi
callq 0x8d60
leaq 0x25c8(%rip), %rdx      # 0xe6af
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x8d60
leaq 0xc(%rsp), %rsi
movl $0x64, (%rsi)
leaq 0x50(%rsp), %rdi
xorl %edx, %edx
callq 0xaef3
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xae8c
leaq 0x2521(%rip), %rdx      # 0xe652
leaq 0x30(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x8d60
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x43f0
leaq 0x30(%rsp), %rdi
callq 0x4408
leaq 0xb0(%rsp), %rdi
callq 0x4408
leaq 0x50(%rsp), %rdi
callq 0x4408
leaq 0x90(%rsp), %rdi
callq 0x4408
leaq 0x70(%rsp), %rdi
callq 0x4408
leaq 0xd0(%rsp), %rdi
callq 0x4408
cmpl $0x6, %r12d
jne 0xc279
leaq 0xd0(%rsp), %rsi
movq %r15, (%rsi)
andq $0x0, 0x8(%rsi)
movb $0x0, 0x10(%rsi)
leaq 0x248c(%rip), %rdx      # 0xe646
leaq 0x70(%rsp), %rdi
callq 0x8d60
leaq 0x24e4(%rip), %rdx      # 0xe6af
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x8d60
leaq 0xc(%rsp), %rsi
movl $0x64, (%rsi)
leaq 0x50(%rsp), %rdi
xorl %edx, %edx
callq 0xaef3
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xae8c
leaq 0x243d(%rip), %rdx      # 0xe652
leaq 0x30(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x8d60
leaq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x43f0
leaq 0x30(%rsp), %rdi
callq 0x4408
leaq 0xb0(%rsp), %rdi
callq 0x4408
leaq 0x50(%rsp), %rdi
callq 0x4408
leaq 0x90(%rsp), %rdi
callq 0x4408
leaq 0x70(%rsp), %rdi
callq 0x4408
leaq 0xd0(%rsp), %rdi
callq 0x4408
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x43f0
leaq 0x23c2(%rip), %rsi      # 0xe64f
movq %rbx, %rdi
callq 0x43d0
cmpb $0x60, %r14b
jne 0xbf85
leaq 0x23a9(%rip), %rsi      # 0xe64f
movq %rbx, %rdi
callq 0x43d0
jmp 0xbf85
movq (%r15), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
decl %eax
movslq %eax, %r12
leaq 0x23e3(%rip), %r15      # 0xe6ab
subq $0x1, %r12
jb 0xc2db
movq %rbx, %rdi
movq %r15, %rsi
callq 0x43d0
jmp 0xc2c8
movsbl %r14b, %esi
movq %rbx, %rdi
callq 0x41a0
jmp 0xbf85
jmp 0xc306
jmp 0xc315
jmp 0xc327
jmp 0xc336
jmp 0xc306
jmp 0xc348
jmp 0xc315
jmp 0xc364
jmp 0xc327
jmp 0xc336
jmp 0xc348
jmp 0xc364
jmp 0xc371
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0x4408
jmp 0xc318
movq %rax, %r14
leaq 0xb0(%rsp), %rdi
callq 0x4408
jmp 0xc32a
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x4408
jmp 0xc339
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x4408
jmp 0xc34b
movq %rax, %r14
leaq 0x70(%rsp), %rdi
callq 0x4408
leaq 0xd0(%rsp), %rdi
callq 0x4408
jmp 0xc37b
movq %rax, %r14
jmp 0xc355
jmp 0xc378
jmp 0xc378
jmp 0xc378
jmp 0xc378
movq %rax, %r14
jmp 0xc383
jmp 0xc378
movq %rax, %r14
movq %rbx, %rdi
callq 0x4408
leaq 0x10(%rsp), %rdi
callq 0x4408
movq %r14, %rdi
callq 0x43a0