// File: /workspace/github_cpp_makefile_star2_O1/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 0x3d91(%rip), %rdx      # 0xfbd9
leaq -0xd0(%rbp), %r15
movq %r15, %rdi
movq %rdx, %rsi
callq 0x7590
movl 0x83c0(%rip), %ebx      # 0x14220
movq 0x84d9(%rip), %rdx      # 0x14340
movl 0x8512(%rip), %r12d     # 0x14380
addl %edx, %r12d
movq 0x84c0(%rip), %rsi      # 0x14338
movq %r15, %rdi
callq 0x30d0
subl %r12d, %ebx
testl %ebx, %ebx
jle 0xbea1
movq 0x84ca(%rip), %rsi      # 0x14358
movq 0x84cb(%rip), %rdx      # 0x14360
movq %r15, %rdi
callq 0x30d0
decl %ebx
jne 0xbe87
movq 0x84d0(%rip), %rsi      # 0x14378
movq 0x84d1(%rip), %rdx      # 0x14380
leaq -0xd0(%rbp), %rdi
callq 0x30d0
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x3d0f(%rip), %rdx      # 0xfbd9
leaq -0x88(%rbp), %rdi
movq %rdx, %rsi
callq 0x7590
movq 0x84c0(%rip), %rdx      # 0x143a0
movl 0x8(%r14), %ebx
addl %edx, %ebx
addl 0x8554(%rip), %ebx      # 0x14440
addl 0x84ee(%rip), %ebx      # 0x143e0
movl 0x8327(%rip), %r15d     # 0x14220
addl 0x8501(%rip), %ebx      # 0x14400
movq 0x8492(%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 0xbf5a
leaq -0x88(%rbp), %r15
movl %ebx, %r12d
movq 0x8472(%rip), %rsi      # 0x143b8
movq 0x8473(%rip), %rdx      # 0x143c0
movq %r15, %rdi
callq 0x30d0
decl %r12d
jne 0xbf3f
movq 0x8477(%rip), %rsi      # 0x143d8
movq 0x8478(%rip), %rdx      # 0x143e0
leaq -0x88(%rbp), %rdi
callq 0x30d0
leaq 0x30a1(%rip), %rsi      # 0xf01c
leaq -0x48(%rbp), %rdi
movq %r14, %rdx
callq 0xd337
leaq 0x308e(%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 0xbfbb
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0xbfc2
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 0xbffb
callq 0x3260
leaq -0x38(%rbp), %r12
movq -0x10(%r12), %rdi
cmpq %r12, %rdi
je 0xc00e
callq 0x3260
movq 0x83e3(%rip), %rsi      # 0x143f8
movq 0x83e4(%rip), %rdx      # 0x14400
leaq -0x88(%rbp), %rdi
callq 0x30d0
subl %ebx, %r13d
jle 0xc053
xorl %ebx, %ebx
leaq -0x88(%rbp), %r14
movq 0x83db(%rip), %rsi      # 0x14418
movq 0x83dc(%rip), %rdx      # 0x14420
movq %r14, %rdi
callq 0x30d0
incl %ebx
cmpl %r13d, %ebx
jl 0xc036
movq 0x83de(%rip), %rsi      # 0x14438
movq 0x83df(%rip), %rdx      # 0x14440
leaq -0x88(%rbp), %rdi
callq 0x30d0
leaq -0x68(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x3b5e(%rip), %rdx      # 0xfbd9
movq %rdx, %rsi
callq 0x7590
movl 0x8197(%rip), %ebx      # 0x14220
movq 0x83d0(%rip), %rdx      # 0x14460
movl 0x8409(%rip), %r14d     # 0x144a0
addl %edx, %r14d
movq 0x83b7(%rip), %rsi      # 0x14458
leaq -0x68(%rbp), %rdi
callq 0x30d0
subl %r14d, %ebx
testl %ebx, %ebx
jle 0xc0cf
leaq -0x68(%rbp), %r14
movq 0x83bc(%rip), %rsi      # 0x14478
movq 0x83bd(%rip), %rdx      # 0x14480
movq %r14, %rdi
callq 0x30d0
decl %ebx
jne 0xc0b5
movq 0x83c2(%rip), %rsi      # 0x14498
movq 0x83c3(%rip), %rdx      # 0x144a0
leaq -0x68(%rbp), %rdi
callq 0x30d0
movq -0x90(%rbp), %rbx
leaq 0x10(%rbx), %r14
movq %r14, (%rbx)
leaq 0x3ade(%rip), %rdx      # 0xfbd9
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x7590
leaq -0x120(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x130(%rbp), %rdi
callq 0x802a
leaq -0xb0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x9853
leaq 0x3a90(%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 0xc174
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xc17c
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 0xc1b1
callq 0x3260
leaq -0xa0(%rbp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0xc1c6
callq 0x3260
movq -0x130(%rbp), %rdi
cmpq %r15, %rdi
je 0xc1d7
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 0x802a
leaq -0xb0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x9853
leaq 0x39c2(%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 0xc242
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xc24a
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 0xc27f
callq 0x3260
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0xc290
callq 0x3260
movq -0x110(%rbp), %rdi
cmpq %r15, %rdi
je 0xc2a1
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 0x802a
leaq -0xb0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x9853
leaq 0x38fb(%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 0xc309
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xc311
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 0xc346
callq 0x3260
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0xc357
callq 0x3260
movq -0xf0(%rbp), %rdi
cmpq %r15, %rdi
je 0xc368
callq 0x3260
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xc37a
callq 0x3260
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xc38f
callq 0x3260
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0xc3a7
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 0xc3d2
callq 0x3260
jmp 0xc3d2
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0xc3e8
callq 0x3260
jmp 0xc3e8
movq %rax, %rbx
movq -0xf0(%rbp), %rdi
jmp 0xc461
jmp 0xc46d
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xc409
callq 0x3260
jmp 0xc409
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0xc41f
callq 0x3260
jmp 0xc41f
movq %rax, %rbx
movq -0x110(%rbp), %rdi
jmp 0xc461
jmp 0xc46d
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0xc440
callq 0x3260
jmp 0xc440
movq %rax, %rbx
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc45a
callq 0x3260
jmp 0xc45a
movq %rax, %rbx
movq -0x130(%rbp), %rdi
cmpq %r15, %rdi
je 0xc470
callq 0x3260
jmp 0xc470
movq %rax, %rbx
movq -0x90(%rbp), %rax
movq (%rax), %rdi
cmpq %r14, %rdi
je 0xc4b9
callq 0x3260
jmp 0xc4b9
jmp 0xc4b6
jmp 0xc4cd
movq %rax, %rbx
movq -0x68(%rbp), %rdi
cmpq %r15, %rdi
je 0xc4a0
callq 0x3260
jmp 0xc4a0
movq %rax, %rbx
leaq -0x38(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0xc4c1
jmp 0xc4cd
jmp 0xc4e7
jmp 0xc4b6
jmp 0xc4e7
jmp 0xc4cd
jmp 0xc4cd
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xc4d0
callq 0x3260
jmp 0xc4d0
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0xc4ea
callq 0x3260
jmp 0xc4ea
movq %rax, %rbx
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0xc502
callq 0x3260
movq %rbx, %rdi
callq 0x3390