// File: /workspace/github_cpp_makefile_star2_O3/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 0x5755(%rip), %rdx      # 0xfbd9
leaq -0x70(%rbp), %rdi
movq %rdx, %rsi
callq 0x750c
movq 0xa039(%rip), %rbx      # 0x144d0
leaq 0xa022(%rip), %r15      # 0x144c0
cmpq %r15, %rbx
je 0xa4c3
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 0xa4a7
leaq 0x511c(%rip), %rsi      # 0xf5e6
leaq -0x90(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xd2c3
leaq 0x5115(%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 0xa511
movq %rdx, -0x50(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x40(%rbp)
jmp 0xa518
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 0x9a7a(%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 0xa57b
callq 0x3260
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa58d
callq 0x3260
movq 0x9a24(%rip), %rbx      # 0x13fb8
leaq 0x507f(%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 0x99f2(%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 0x99c4(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x99b0(%rip), %rbx      # 0x13fb8
leaq 0x503b(%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 0x997e(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x996a(%rip), %rbx      # 0x13fb8
leaq 0x500b(%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 0x9938(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9924(%rip), %rbx      # 0x13fb8
leaq 0x500d(%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 0x98f2(%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 0x98c4(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x98b0(%rip), %rbx      # 0x13fb8
leaq 0x4fea(%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 0x987e(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x986a(%rip), %rbx      # 0x13fb8
leaq 0x4fb3(%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 0x9838(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9824(%rip), %rbx      # 0x13fb8
leaq 0x4f99(%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 0x97f2(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x97de(%rip), %rbx      # 0x13fb8
leaq 0x4f9e(%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 0x97ac(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9798(%rip), %rbx      # 0x13fb8
leaq 0x4fa9(%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 0x9766(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9752(%rip), %rbx      # 0x13fb8
leaq 0x4f93(%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 0x9720(%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 0x96f2(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x96de(%rip), %rbx      # 0x13fb8
leaq 0x4f62(%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 0x96ac(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9698(%rip), %rbx      # 0x13fb8
leaq 0x4f31(%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 0x9666(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9652(%rip), %rbx      # 0x13fb8
leaq 0x4f3e(%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 0x9620(%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 0x95f2(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x95de(%rip), %rbx      # 0x13fb8
leaq 0x4f23(%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 0x95ac(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9598(%rip), %rbx      # 0x13fb8
leaq 0x4ef1(%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 0x9566(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9552(%rip), %rbx      # 0x13fb8
leaq 0x4ee1(%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 0x9520(%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 0x94f2(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x94de(%rip), %rbx      # 0x13fb8
leaq 0x4eb5(%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 0x94ac(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9498(%rip), %rbx      # 0x13fb8
leaq 0x4e7d(%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 0x9466(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9452(%rip), %rbx      # 0x13fb8
leaq 0x4e7e(%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 0x9420(%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 0x93f2(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x93de(%rip), %rbx      # 0x13fb8
leaq 0x4e4f(%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 0x93ac(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9398(%rip), %rbx      # 0x13fb8
leaq 0x4e1b(%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 0x9366(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9352(%rip), %rbx      # 0x13fb8
leaq 0x4e05(%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 0x9320(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x930c(%rip), %rbx      # 0x13fb8
leaq 0x4df1(%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 0x92da(%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 0x92ac(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x9298(%rip), %rbx      # 0x13fb8
leaq 0x4daf(%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 0x9266(%rip), %rdi      # 0x13fb8
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq 0x976a(%rip), %rax      # 0x144d0
movq %rax, -0x30(%rbp)
cmpq %r15, %rax
je 0xae88
movq 0x923e(%rip), %r14      # 0x13fb8
leaq 0x9797(%rip), %r15      # 0x14518
leaq 0x4294(%rip), %r12      # 0xf01c
movl $0x2, %edx
movq %r14, %rdi
leaq 0x4d49(%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 0x4d1a(%rip), %rsi      # 0xfae3
callq 0x32c0
movq -0x30(%rbp), %rax
leaq 0x20(%rax), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0xd3ac
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x32c0
xorl %ebx, %ebx
movq %r15, %rdi
movq %r13, %rsi
callq 0xd3ac
movl $0xe, %ecx
subq 0x8(%rax), %rcx
cmpq %rbx, %rcx
jbe 0xae20
movl $0x1, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0x32c0
incq %rbx
jmp 0xadf2
leaq 0x9721(%rip), %rdi      # 0x14548
movq %r13, %rsi
callq 0xd3ac
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 0x9645(%rip), %rax      # 0x144c0
movq %rcx, -0x30(%rbp)
cmpq %rax, %rcx
jne 0xad88
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0xae9a
callq 0x3260
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0xaec1
jmp 0xaedb
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0xaec1
callq 0x3260
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xaede
callq 0x3260
jmp 0xaede
jmp 0xaedb
jmp 0xaedb
jmp 0xaedb
movq %rax, %rbx
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0xaef0
callq 0x3260
movq %rbx, %rdi
callq 0x3390