// File: /workspace/github_cpp_makefile_star2_O1/AsherGlick[P]CommentHeader/source/main.cpp
// Function: help()
void help() {
  string languageflags = "";
  map<char, headerStyle>::iterator it = headerStyles.begin();
  while (it != headerStyles.end()) {
    languageflags += it->first;
    it++;
  }
  cout << "usage: chead [-" + languageflags + "] [-hsbtf] [-ge] [-ov] [-ic] [-nmr]" << endl;
  cout << "             [-l #] [-w #] <Input> [Input ...] " << endl;
  cout << endl;

  cout << "Output Size and Shape" << endl;
  cout << " -l --lines         Change how many rows are formatted within the title" << endl;
  cout << " -w --width         Change how many columns the text box takes up defaults to 80" << endl;
  cout << endl;

  cout << "Output Formats" << endl;
  cout << " -h --help          Bring up this help menu" << endl;
  cout << " -s --signature     Output your signature form sigfile correctly formatted" << endl;
  cout << " -b --bsd-license   Output a BSD license using the input as the copyright holder" << endl;
  cout << " -t --title         Output a title style header" << endl;
  cout << " -f --function      Output a function style header, default option" << endl;
  cout << endl;

  cout << "Bounding Box Options" << endl;
  cout << " -g --hanging       Function Output: Leave right hand side hanging with no padding" << endl;
  cout << " -e --enclosed      Function Output: Pad right hand side with whitespace and decorations" << endl;
  cout << endl;

  cout << "Output Destinations" << endl;
  cout << " -o --stdout         Write the output to the terminal" << endl;
  cout << " -v --clipboard-out  Copy the output to the clipboard instead of stdout" << endl;
  cout << endl;

  cout << "Input Formats" << endl;
  cout << " -i --stdin         Parse title from args and content input from stdin" << endl;
  // cout << " -a --argument-only Parse title from first arg and content from remainder" << endl;
  cout << " -c --clipboard-in  Parse title from args and content from clipboard" << endl;
  cout << endl;

  cout << "Content Alignment" << endl;
  cout << " -n --left-align    Content aligned to the left" << endl;
  cout << " -m --middle-align  Content aligned to the middle" << endl;
  cout << " -r --right-align   Content alligned to the right" << endl;
  cout << endl;

  // Dynamically create the language section based on the languages initialized
  cout << "Languages" << endl;
  it = headerStyles.begin();
  while (it != headerStyles.end()) {
    cout << " -" << it->first  << " --" << languageNames[it->first];
    for (int i = 0; i < (14 - languageNames[it->first].length()); i++) {
      cout << " ";
    }
    cout << languageDescription[it->first] << endl;
    it++;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x56ae(%rip), %rdx      # 0xfbd9
leaq -0x70(%rbp), %rdi
movq %rdx, %rsi
callq 0x7590
movq 0x9f92(%rip), %rbx      # 0x144d0
leaq 0x9f7b(%rip), %r15      # 0x144c0
cmpq %r15, %rbx
je 0xa56a
leaq -0x70(%rbp), %r14
movsbl 0x20(%rbx), %esi
movq %r14, %rdi
callq 0x3210
movq %rbx, %rdi
callq 0x31b0
movq %rax, %rbx
cmpq %r15, %rax
jne 0xa54e
leaq 0x5075(%rip), %rsi      # 0xf5e6
leaq -0x90(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xd337
leaq 0x506e(%rip), %rsi      # 0xf5f6
leaq -0x90(%rbp), %rdi
callq 0x33e0
leaq -0x40(%rbp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa5b8
movq %rdx, -0x50(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x40(%rbp)
jmp 0xa5bf
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, -0x48(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0x99d3(%rip), %rdi      # 0x13fb8
callq 0x32c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0xa622
callq 0x3260
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa634
callq 0x3260
movq 0x997d(%rip), %rbx      # 0x13fb8
leaq 0x4fd8(%rip), %rsi      # 0xf61a
movl $0x2f, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x994b(%rip), %rbx      # 0x13fb8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x991d(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9909(%rip), %rbx      # 0x13fb8
leaq 0x4f94(%rip), %rsi      # 0xf64a
movl $0x15, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x98d7(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x98c3(%rip), %rbx      # 0x13fb8
leaq 0x4f64(%rip), %rsi      # 0xf660
movl $0x47, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9891(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x987d(%rip), %rbx      # 0x13fb8
leaq 0x4f66(%rip), %rsi      # 0xf6a8
movl $0x50, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x984b(%rip), %rbx      # 0x13fb8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x981d(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9809(%rip), %rbx      # 0x13fb8
leaq 0x4f43(%rip), %rsi      # 0xf6f9
movl $0xe, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x97d7(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x97c3(%rip), %rbx      # 0x13fb8
leaq 0x4f0c(%rip), %rsi      # 0xf708
movl $0x2b, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9791(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x977d(%rip), %rbx      # 0x13fb8
leaq 0x4ef2(%rip), %rsi      # 0xf734
movl $0x4a, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x974b(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9737(%rip), %rbx      # 0x13fb8
leaq 0x4ef7(%rip), %rsi      # 0xf77f
movl $0x50, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9705(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x96f1(%rip), %rbx      # 0x13fb8
leaq 0x4f02(%rip), %rsi      # 0xf7d0
movl $0x2f, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x96bf(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x96ab(%rip), %rbx      # 0x13fb8
leaq 0x4eec(%rip), %rsi      # 0xf800
movl $0x42, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9679(%rip), %rbx      # 0x13fb8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x964b(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9637(%rip), %rbx      # 0x13fb8
leaq 0x4ebb(%rip), %rsi      # 0xf843
movl $0x14, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9605(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x95f1(%rip), %rbx      # 0x13fb8
leaq 0x4e8a(%rip), %rsi      # 0xf858
movl $0x52, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x95bf(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x95ab(%rip), %rbx      # 0x13fb8
leaq 0x4e97(%rip), %rsi      # 0xf8ab
movl $0x58, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9579(%rip), %rbx      # 0x13fb8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x954b(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9537(%rip), %rbx      # 0x13fb8
leaq 0x4e7c(%rip), %rsi      # 0xf904
movl $0x13, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9505(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x94f1(%rip), %rbx      # 0x13fb8
leaq 0x4e4a(%rip), %rsi      # 0xf918
movl $0x35, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x94bf(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x94ab(%rip), %rbx      # 0x13fb8
leaq 0x4e3a(%rip), %rsi      # 0xf94e
movl $0x47, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9479(%rip), %rbx      # 0x13fb8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x944b(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9437(%rip), %rbx      # 0x13fb8
leaq 0x4e0e(%rip), %rsi      # 0xf996
movl $0xd, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9405(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x93f1(%rip), %rbx      # 0x13fb8
leaq 0x4dd6(%rip), %rsi      # 0xf9a4
movl $0x46, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x93bf(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x93ab(%rip), %rbx      # 0x13fb8
leaq 0x4dd7(%rip), %rsi      # 0xf9eb
movl $0x44, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9379(%rip), %rbx      # 0x13fb8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x934b(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9337(%rip), %rbx      # 0x13fb8
leaq 0x4da8(%rip), %rsi      # 0xfa30
movl $0x11, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9305(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x92f1(%rip), %rbx      # 0x13fb8
leaq 0x4d74(%rip), %rsi      # 0xfa42
movl $0x2f, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x92bf(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x92ab(%rip), %rbx      # 0x13fb8
leaq 0x4d5e(%rip), %rsi      # 0xfa72
movl $0x31, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9279(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9265(%rip), %rbx      # 0x13fb8
leaq 0x4d4a(%rip), %rsi      # 0xfaa4
movl $0x31, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9233(%rip), %rbx      # 0x13fb8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x9205(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x91f1(%rip), %rbx      # 0x13fb8
leaq 0x4d08(%rip), %rsi      # 0xfad6
movl $0x9, %edx
movq %rbx, %rdi
callq 0x32c0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq 0x91bf(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x96c3(%rip), %rax      # 0x144d0
movq %rax, -0x30(%rbp)
cmpq %r15, %rax
je 0xaf2f
movq 0x9197(%rip), %r14      # 0x13fb8
leaq 0x96f0(%rip), %r15      # 0x14518
leaq 0x41ed(%rip), %r12      # 0xf01c
movl $0x2, %edx
movq %r14, %rdi
leaq 0x4ca2(%rip), %rsi      # 0xfae0
callq 0x32c0
movq -0x30(%rbp), %rax
movb 0x20(%rax), %al
movb %al, -0x50(%rbp)
movl $0x1, %edx
movq %r14, %rdi
leaq -0x50(%rbp), %rsi
callq 0x32c0
movq %rax, %rbx
movl $0x3, %edx
movq %rax, %rdi
leaq 0x4c73(%rip), %rsi      # 0xfae3
callq 0x32c0
movq -0x30(%rbp), %rax
leaq 0x20(%rax), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0xd420
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x32c0
xorl %ebx, %ebx
movq %r15, %rdi
movq %r13, %rsi
callq 0xd420
movl $0xe, %ecx
subq 0x8(%rax), %rcx
cmpq %rbx, %rcx
jbe 0xaec7
movl $0x1, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0x32c0
incq %rbx
jmp 0xae99
leaq 0x967a(%rip), %rdi      # 0x14548
movq %r13, %rsi
callq 0xd420
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r14, %rdi
callq 0x32c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq -0x30(%rbp), %rdi
callq 0x31b0
movq %rax, %rcx
leaq 0x959e(%rip), %rax      # 0x144c0
movq %rcx, -0x30(%rbp)
cmpq %rax, %rcx
jne 0xae2f
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0xaf41
callq 0x3260
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0xaf68
jmp 0xaf82
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0xaf68
callq 0x3260
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xaf85
callq 0x3260
jmp 0xaf85
jmp 0xaf82
jmp 0xaf82
jmp 0xaf82
movq %rax, %rbx
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0xaf97
callq 0x3260
movq %rbx, %rdi
callq 0x3390