// File: /workspace/github_cpp_makefile_star2_O2/AsherGlick[P]CommentHeader/source/main.cpp
// Function: title(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string title(string input) {

  // Begin Comment Row
  string topLine = "";
  int headerLength = titleWidth - globalTitleStyle._TOP_LEFT.size() - globalTitleStyle._TOP_RIGHT.size();
  topLine += globalTitleStyle._TOP_LEFT;
  for (int i = 0; i < headerLength; i++) {
    topLine += globalTitleStyle._TOP_FILL;
  }
  topLine += globalTitleStyle._TOP_RIGHT;

  // Middle Row
  string middleLine = "";
  int midLength = titleWidth - input.size() - 2 - globalTitleStyle._MID_LEFT_START.size() - globalTitleStyle._MID_RIGHT_END.size() - globalTitleStyle._MID_LEFT_END.size() - globalTitleStyle._MID_RIGHT_START.size();
  int halfLength = midLength / 2;

  middleLine += globalTitleStyle._MID_LEFT_START;
  for (int i = 0; i < halfLength; i++) {
    middleLine += globalTitleStyle._MID_LEFT_FILL;
  }
  middleLine += globalTitleStyle._MID_LEFT_END;
  middleLine += " " + input + " ";
  middleLine += globalTitleStyle._MID_RIGHT_START;
  for (int i = 0; i < midLength - halfLength; i++) {
    middleLine += globalTitleStyle._MID_RIGHT_FILL;
  }
  middleLine += globalTitleStyle._MID_RIGHT_END;

  // Footer Row
  string bottomLine = "";
  int footerLength = titleWidth - globalTitleStyle._BOTTOM_LEFT.size() - globalTitleStyle._BOTTOM_RIGHT.size();
  bottomLine += globalTitleStyle._BOTTOM_LEFT;
  for (int i = 0; i < footerLength; i++) {
    bottomLine += globalTitleStyle._BOTTOM_FILL;
  }
  bottomLine += globalTitleStyle._BOTTOM_RIGHT;

  string output = "";
  output += stripTrailingSpaces(topLine) + "\n";
  output += stripTrailingSpaces(middleLine) + "\n";
  output += stripTrailingSpaces(bottomLine) + "\n";

  return output;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rsi, -0x58(%rbp)
movq %rdi, -0x30(%rbp)
leaq 0x3952(%rip), %rsi      # 0xcbad
leaq -0xd8(%rbp), %rbx
leaq -0xb8(%rbp), %rdx
movq %rbx, %rdi
callq 0x30f0
movl 0x8fa8(%rip), %r14d     # 0x12220
movq 0x90c1(%rip), %r15      # 0x12340
leaq 0x90b2(%rip), %rsi      # 0x12338
movq 0x90f3(%rip), %r12      # 0x12380
movq %rbx, %rdi
callq 0x33e0
addl %r15d, %r12d
subl %r12d, %r14d
xorl %ebx, %ebx
testl %r14d, %r14d
cmovgl %r14d, %ebx
leaq 0x90ad(%rip), %r15      # 0x12358
leaq -0xd8(%rbp), %r12
subl $0x1, %ebx
jb 0x92c4
movq %r12, %rdi
movq %r15, %rsi
callq 0x33e0
jmp 0x92b2
leaq 0x90ad(%rip), %rsi      # 0x12378
leaq -0xd8(%rbp), %rdi
callq 0x33e0
leaq 0x38cf(%rip), %rsi      # 0xcbad
leaq -0xb8(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x30f0
movq -0x58(%rbp), %rax
movl 0x8(%rax), %eax
addl 0x90a2(%rip), %eax      # 0x123a0
addl 0x913c(%rip), %eax      # 0x12440
addl 0x90d6(%rip), %eax      # 0x123e0
addl 0x90f0(%rip), %eax      # 0x12400
movl 0x8f0a(%rip), %ecx      # 0x12220
negl %eax
leal (%rcx,%rax), %r15d
addl $-0x2, %r15d
pushq $0x2
popq %rcx
movl %r15d, %eax
cltd
idivl %ecx
movl %eax, %r12d
leaq 0x9065(%rip), %rsi      # 0x12398
leaq -0xb8(%rbp), %rdi
callq 0x33e0
xorl %r14d, %r14d
testl %r12d, %r12d
cmovgl %r12d, %r14d
leaq 0x9068(%rip), %r13      # 0x123b8
leaq -0xb8(%rbp), %rbx
subl $0x1, %r14d
jb 0x936a
movq %rbx, %rdi
movq %r13, %rsi
callq 0x33e0
jmp 0x9357
leaq 0x9067(%rip), %rsi      # 0x123d8
leaq -0xb8(%rbp), %rdi
callq 0x33e0
leaq 0x2c98(%rip), %rsi      # 0xc01c
leaq -0x50(%rbp), %rdi
movq -0x58(%rbp), %rdx
callq 0xa25b
leaq 0x2c84(%rip), %rdx      # 0xc01c
leaq -0x98(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xa314
leaq -0xb8(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x33e0
leaq -0x98(%rbp), %rdi
callq 0x3120
leaq -0x50(%rbp), %rdi
callq 0x3120
leaq 0x9021(%rip), %rsi      # 0x123f8
leaq -0xb8(%rbp), %rdi
callq 0x33e0
subl %r12d, %r15d
xorl %r12d, %r12d
testl %r15d, %r15d
cmovgl %r15d, %r12d
leaq 0x9021(%rip), %r14      # 0x12418
leaq -0xb8(%rbp), %rbx
subl $0x1, %r12d
jb 0x9411
movq %rbx, %rdi
movq %r14, %rsi
callq 0x33e0
jmp 0x93fe
leaq 0x9020(%rip), %rsi      # 0x12438
leaq -0xb8(%rbp), %rdi
callq 0x33e0
leaq 0x3782(%rip), %rsi      # 0xcbad
leaq -0x98(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x30f0
movl 0x8ddf(%rip), %ebx      # 0x12220
movq 0x9018(%rip), %r15      # 0x12460
movq 0x9051(%rip), %r14      # 0x124a0
leaq 0x9002(%rip), %rsi      # 0x12458
leaq -0x98(%rbp), %rdi
callq 0x33e0
addl %r15d, %r14d
subl %r14d, %ebx
xorl %r15d, %r15d
testl %ebx, %ebx
cmovgl %ebx, %r15d
leaq 0x9000(%rip), %r14      # 0x12478
leaq -0x98(%rbp), %rbx
subl $0x1, %r15d
jb 0x9492
movq %rbx, %rdi
movq %r14, %rsi
callq 0x33e0
jmp 0x947f
leaq 0x8fff(%rip), %rsi      # 0x12498
leaq -0x98(%rbp), %rdi
callq 0x33e0
leaq 0x3701(%rip), %rsi      # 0xcbad
leaq -0x50(%rbp), %rdx
movq -0x30(%rbp), %rdi
callq 0x30f0
leaq -0x138(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3310
leaq -0x78(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x7c30
leaq 0x36c9(%rip), %rdx      # 0xcbac
leaq -0x50(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xa314
leaq -0x50(%rbp), %rsi
movq -0x30(%rbp), %rdi
callq 0x33e0
leaq -0x50(%rbp), %rdi
callq 0x3120
leaq -0x78(%rbp), %rdi
callq 0x3120
leaq -0x138(%rbp), %rdi
callq 0x3120
leaq -0x118(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x3310
leaq -0x78(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x7c30
leaq 0x3667(%rip), %rdx      # 0xcbac
leaq -0x50(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xa314
leaq -0x50(%rbp), %rsi
movq -0x30(%rbp), %rdi
callq 0x33e0
leaq -0x50(%rbp), %rdi
callq 0x3120
leaq -0x78(%rbp), %rdi
callq 0x3120
leaq -0x118(%rbp), %rdi
callq 0x3120
leaq -0xf8(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x3310
leaq -0x78(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x7c30
leaq 0x3605(%rip), %rdx      # 0xcbac
leaq -0x50(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xa314
leaq -0x50(%rbp), %rsi
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
callq 0x33e0
leaq -0x50(%rbp), %rdi
callq 0x3120
leaq -0x78(%rbp), %rdi
callq 0x3120
leaq -0xf8(%rbp), %rdi
callq 0x3120
leaq -0x98(%rbp), %rdi
callq 0x3120
leaq -0xb8(%rbp), %rdi
callq 0x3120
leaq -0xd8(%rbp), %rdi
callq 0x3120
movq %rbx, %rax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq -0x50(%rbp), %rdi
callq 0x3120
jmp 0x962c
movq %rax, %r14
leaq -0x78(%rbp), %rdi
callq 0x3120
jmp 0x963a
movq %rax, %r14
leaq -0xf8(%rbp), %rdi
jmp 0x9695
jmp 0x969c
movq %rax, %r14
leaq -0x50(%rbp), %rdi
callq 0x3120
jmp 0x9656
movq %rax, %r14
leaq -0x78(%rbp), %rdi
callq 0x3120
jmp 0x9664
movq %rax, %r14
leaq -0x118(%rbp), %rdi
jmp 0x9695
jmp 0x969c
movq %rax, %r14
leaq -0x50(%rbp), %rdi
callq 0x3120
jmp 0x9680
movq %rax, %r14
leaq -0x78(%rbp), %rdi
callq 0x3120
jmp 0x968e
movq %rax, %r14
leaq -0x138(%rbp), %rdi
callq 0x3120
jmp 0x969f
movq %rax, %r14
movq -0x30(%rbp), %rdi
callq 0x3120
jmp 0x96d5
jmp 0x96d2
jmp 0x96e5
movq %rax, %r14
leaq -0x98(%rbp), %rdi
callq 0x3120
jmp 0x96c2
movq %rax, %r14
leaq -0x50(%rbp), %rdi
jmp 0x96dc
jmp 0x96e5
jmp 0x96f6
jmp 0x96d2
jmp 0x96f6
jmp 0x96e5
movq %rax, %r14
leaq -0x98(%rbp), %rdi
callq 0x3120
jmp 0x96e8
jmp 0x96e5
movq %rax, %r14
leaq -0xb8(%rbp), %rdi
callq 0x3120
jmp 0x96f9
movq %rax, %r14
leaq -0xd8(%rbp), %rdi
callq 0x3120
movq %r14, %rdi
callq 0x3390