// File: /workspace/github_cpp_makefile_star2_O3/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 $0x108, %rsp            # imm = 0x108
movq %rsi, %r14
movq %rdi, -0x90(%rbp)
leaq -0xc0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x3e38(%rip), %rdx      # 0xfbd9
leaq -0xd0(%rbp), %r15
movq %r15, %rdi
movq %rdx, %rsi
callq 0x750c
movl 0x8467(%rip), %ebx      # 0x14220
movq 0x8580(%rip), %rdx      # 0x14340
movl 0x85b9(%rip), %r12d     # 0x14380
addl %edx, %r12d
movq 0x8567(%rip), %rsi      # 0x14338
movq %r15, %rdi
callq 0x30d0
subl %r12d, %ebx
testl %ebx, %ebx
jle 0xbdfa
movq 0x8571(%rip), %rsi      # 0x14358
movq 0x8572(%rip), %rdx      # 0x14360
movq %r15, %rdi
callq 0x30d0
decl %ebx
jne 0xbde0
movq 0x8577(%rip), %rsi      # 0x14378
movq 0x8578(%rip), %rdx      # 0x14380
leaq -0xd0(%rbp), %rdi
callq 0x30d0
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x3db6(%rip), %rdx      # 0xfbd9
leaq -0x88(%rbp), %rdi
movq %rdx, %rsi
callq 0x750c
movq 0x8567(%rip), %rdx      # 0x143a0
movl 0x8(%r14), %ebx
addl %edx, %ebx
addl 0x85fb(%rip), %ebx      # 0x14440
addl 0x8595(%rip), %ebx      # 0x143e0
movl 0x83ce(%rip), %r15d     # 0x14220
addl 0x85a8(%rip), %ebx      # 0x14400
movq 0x8539(%rip), %rsi      # 0x14398
leaq -0x88(%rbp), %rdi
callq 0x30d0
movl %r15d, %eax
subl %ebx, %eax
negl %ebx
leal (%r15,%rbx), %r13d
addl $-0x2, %r13d
movl %r13d, %ecx
shrl $0x1f, %ecx
leal (%rcx,%rax), %ebx
addl $-0x2, %ebx
sarl %ebx
cmpl $0x2, %r13d
jl 0xbeb3
leaq -0x88(%rbp), %r15
movl %ebx, %r12d
movq 0x8519(%rip), %rsi      # 0x143b8
movq 0x851a(%rip), %rdx      # 0x143c0
movq %r15, %rdi
callq 0x30d0
decl %r12d
jne 0xbe98
movq 0x851e(%rip), %rsi      # 0x143d8
movq 0x851f(%rip), %rdx      # 0x143e0
leaq -0x88(%rbp), %rdi
callq 0x30d0
leaq 0x3148(%rip), %rsi      # 0xf01c
leaq -0x48(%rbp), %rdi
movq %r14, %rdx
callq 0xd2c3
leaq 0x3135(%rip), %rsi      # 0xf01c
leaq -0x48(%rbp), %rdi
callq 0x33e0
leaq -0x58(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xbf14
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0xbf1b
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
leaq -0x88(%rbp), %rdi
callq 0x30d0
movq -0x68(%rbp), %rdi
cmpq %r15, %rdi
je 0xbf54
callq 0x3260
leaq -0x38(%rbp), %r12
movq -0x10(%r12), %rdi
cmpq %r12, %rdi
je 0xbf67
callq 0x3260
movq 0x848a(%rip), %rsi      # 0x143f8
movq 0x848b(%rip), %rdx      # 0x14400
leaq -0x88(%rbp), %rdi
callq 0x30d0
subl %ebx, %r13d
jle 0xbfac
xorl %ebx, %ebx
leaq -0x88(%rbp), %r14
movq 0x8482(%rip), %rsi      # 0x14418
movq 0x8483(%rip), %rdx      # 0x14420
movq %r14, %rdi
callq 0x30d0
incl %ebx
cmpl %r13d, %ebx
jl 0xbf8f
movq 0x8485(%rip), %rsi      # 0x14438
movq 0x8486(%rip), %rdx      # 0x14440
leaq -0x88(%rbp), %rdi
callq 0x30d0
leaq -0x68(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3c05(%rip), %rdx      # 0xfbd9
movq %rdx, %rsi
callq 0x750c
movl 0x823e(%rip), %ebx      # 0x14220
movq 0x8477(%rip), %rdx      # 0x14460
movl 0x84b0(%rip), %r14d     # 0x144a0
addl %edx, %r14d
movq 0x845e(%rip), %rsi      # 0x14458
leaq -0x68(%rbp), %rdi
callq 0x30d0
subl %r14d, %ebx
testl %ebx, %ebx
jle 0xc028
leaq -0x68(%rbp), %r14
movq 0x8463(%rip), %rsi      # 0x14478
movq 0x8464(%rip), %rdx      # 0x14480
movq %r14, %rdi
callq 0x30d0
decl %ebx
jne 0xc00e
movq 0x8469(%rip), %rsi      # 0x14498
movq 0x846a(%rip), %rdx      # 0x144a0
leaq -0x68(%rbp), %rdi
callq 0x30d0
movq -0x90(%rbp), %rbx
leaq 0x10(%rbx), %r14
movq %r14, (%rbx)
leaq 0x3b85(%rip), %rdx      # 0xfbd9
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x750c
leaq -0x120(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x130(%rbp), %rdi
callq 0x7faa
leaq -0xb0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x97bb
leaq 0x3b37(%rip), %rsi      # 0xfbd8
leaq -0xb0(%rbp), %rdi
callq 0x33e0
movq %r12, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc0cd
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xc0d5
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x30d0
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xc10a
callq 0x3260
leaq -0xa0(%rbp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0xc11f
callq 0x3260
movq -0x130(%rbp), %rdi
cmpq %r15, %rdi
je 0xc130
callq 0x3260
leaq -0x100(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x110(%rbp), %rdi
callq 0x7faa
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x97bb
leaq 0x3a69(%rip), %rsi      # 0xfbd8
leaq -0xb0(%rbp), %rdi
callq 0x33e0
movq %r12, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc19b
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xc1a3
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x30d0
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xc1d8
callq 0x3260
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0xc1e9
callq 0x3260
movq -0x110(%rbp), %rdi
cmpq %r15, %rdi
je 0xc1fa
callq 0x3260
leaq -0xe0(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0xf0(%rbp), %rdi
callq 0x7faa
leaq -0xb0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x97bb
leaq 0x39a2(%rip), %rsi      # 0xfbd8
leaq -0xb0(%rbp), %rdi
callq 0x33e0
movq %r12, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc262
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xc26a
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x30d0
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xc29f
callq 0x3260
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0xc2b0
callq 0x3260
movq -0xf0(%rbp), %rdi
cmpq %r15, %rdi
je 0xc2c1
callq 0x3260
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xc2d3
callq 0x3260
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xc2e8
callq 0x3260
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0xc300
callq 0x3260
movq %rbx, %rax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xc32b
callq 0x3260
jmp 0xc32b
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0xc341
callq 0x3260
jmp 0xc341
movq %rax, %rbx
movq -0xf0(%rbp), %rdi
jmp 0xc3ba
jmp 0xc3c6
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xc362
callq 0x3260
jmp 0xc362
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0xc378
callq 0x3260
jmp 0xc378
movq %rax, %rbx
movq -0x110(%rbp), %rdi
jmp 0xc3ba
jmp 0xc3c6
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xc399
callq 0x3260
jmp 0xc399
movq %rax, %rbx
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc3b3
callq 0x3260
jmp 0xc3b3
movq %rax, %rbx
movq -0x130(%rbp), %rdi
cmpq %r15, %rdi
je 0xc3c9
callq 0x3260
jmp 0xc3c9
movq %rax, %rbx
movq -0x90(%rbp), %rax
movq (%rax), %rdi
cmpq %r14, %rdi
je 0xc412
callq 0x3260
jmp 0xc412
jmp 0xc40f
jmp 0xc426
movq %rax, %rbx
movq -0x68(%rbp), %rdi
cmpq %r15, %rdi
je 0xc3f9
callq 0x3260
jmp 0xc3f9
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0xc41a
jmp 0xc426
jmp 0xc440
jmp 0xc40f
jmp 0xc440
jmp 0xc426
jmp 0xc426
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xc429
callq 0x3260
jmp 0xc429
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xc443
callq 0x3260
jmp 0xc443
movq %rax, %rbx
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0xc45b
callq 0x3260
movq %rbx, %rdi
callq 0x3390