// File: /workspace/github_cpp_makefile_star2_O2/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 0x46cc(%rip), %rsi      # 0xcbad
leaq -0x90(%rbp), %rbx
leaq -0x50(%rbp), %rdx
movq %rbx, %rdi
callq 0x30f0
movq 0x9fd5(%rip), %r14      # 0x124d0
leaq 0x9fbe(%rip), %r15      # 0x124c0
cmpq %r15, %r14
je 0x8521
movsbl 0x20(%r14), %esi
movq %rbx, %rdi
callq 0x31f0
movq %r14, %rdi
callq 0x3190
movq %rax, %r14
jmp 0x8502
leaq 0x4092(%rip), %rsi      # 0xc5ba
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0xa25b
leaq 0x408b(%rip), %rdx      # 0xc5ca
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0xa314
movq 0x9a75(%rip), %rdi      # 0x11fc8
leaq -0x50(%rbp), %rsi
callq 0x3210
movq %rax, %rdi
callq 0x3130
leaq -0x50(%rbp), %rdi
callq 0x3120
leaq -0x70(%rbp), %rdi
callq 0x3120
movq 0x9a4b(%rip), %rdi      # 0x11fc8
leaq 0x406a(%rip), %rsi      # 0xc5ee
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9a30(%rip), %rdi      # 0x11fc8
callq 0x3130
movq 0x9a24(%rip), %rdi      # 0x11fc8
leaq 0x4073(%rip), %rsi      # 0xc61e
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9a09(%rip), %rdi      # 0x11fc8
leaq 0x406e(%rip), %rsi      # 0xc634
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x99ee(%rip), %rdi      # 0x11fc8
leaq 0x409b(%rip), %rsi      # 0xc67c
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x99d3(%rip), %rdi      # 0x11fc8
callq 0x3130
movq 0x99c7(%rip), %rdi      # 0x11fc8
leaq 0x40c5(%rip), %rsi      # 0xc6cd
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x99ac(%rip), %rdi      # 0x11fc8
leaq 0x40b9(%rip), %rsi      # 0xc6dc
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9991(%rip), %rdi      # 0x11fc8
leaq 0x40ca(%rip), %rsi      # 0xc708
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9976(%rip), %rdi      # 0x11fc8
leaq 0x40fa(%rip), %rsi      # 0xc753
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x995b(%rip), %rdi      # 0x11fc8
leaq 0x4130(%rip), %rsi      # 0xc7a4
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9940(%rip), %rdi      # 0x11fc8
leaq 0x4145(%rip), %rsi      # 0xc7d4
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9925(%rip), %rdi      # 0x11fc8
callq 0x3130
movq 0x9919(%rip), %rdi      # 0x11fc8
leaq 0x4161(%rip), %rsi      # 0xc817
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x98fe(%rip), %rdi      # 0x11fc8
leaq 0x415b(%rip), %rsi      # 0xc82c
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x98e3(%rip), %rdi      # 0x11fc8
leaq 0x4193(%rip), %rsi      # 0xc87f
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x98c8(%rip), %rdi      # 0x11fc8
callq 0x3130
movq 0x98bc(%rip), %rdi      # 0x11fc8
leaq 0x41c5(%rip), %rsi      # 0xc8d8
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x98a1(%rip), %rdi      # 0x11fc8
leaq 0x41be(%rip), %rsi      # 0xc8ec
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9886(%rip), %rdi      # 0x11fc8
leaq 0x41d9(%rip), %rsi      # 0xc922
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x986b(%rip), %rdi      # 0x11fc8
callq 0x3130
movq 0x985f(%rip), %rdi      # 0x11fc8
leaq 0x41fa(%rip), %rsi      # 0xc96a
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9844(%rip), %rdi      # 0x11fc8
leaq 0x41ed(%rip), %rsi      # 0xc978
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9829(%rip), %rdi      # 0x11fc8
leaq 0x4219(%rip), %rsi      # 0xc9bf
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x980e(%rip), %rdi      # 0x11fc8
callq 0x3130
movq 0x9802(%rip), %rdi      # 0x11fc8
leaq 0x4237(%rip), %rsi      # 0xca04
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x97e7(%rip), %rdi      # 0x11fc8
leaq 0x422e(%rip), %rsi      # 0xca16
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x97cc(%rip), %rdi      # 0x11fc8
leaq 0x4243(%rip), %rsi      # 0xca46
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x97b1(%rip), %rdi      # 0x11fc8
leaq 0x425a(%rip), %rsi      # 0xca78
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9796(%rip), %rdi      # 0x11fc8
callq 0x3130
movq 0x978a(%rip), %rdi      # 0x11fc8
leaq 0x4265(%rip), %rsi      # 0xcaaa
callq 0x3260
movq %rax, %rdi
callq 0x3130
movq 0x9c77(%rip), %rcx      # 0x124d0
movq 0x9768(%rip), %rbx      # 0x11fc8
leaq 0x9cb1(%rip), %r13      # 0x12518
pushq $0xe
popq %r12
leaq 0x9c4e(%rip), %rax      # 0x124c0
cmpq %rax, %rcx
je 0x892f
movq %rcx, -0x30(%rbp)
movq %rbx, %rdi
leaq 0x422b(%rip), %rsi      # 0xcab4
callq 0x3260
movq -0x30(%rbp), %rcx
movsbl 0x20(%rcx), %esi
movq %rax, %rdi
callq 0x32c0
movq %rax, %rdi
leaq 0x420f(%rip), %rsi      # 0xcab7
callq 0x3260
movq %rax, %r14
movq -0x30(%rbp), %rax
leaq 0x20(%rax), %r15
movq %r13, %rdi
movq %r15, %rsi
callq 0xa33e
movq %r14, %rdi
movq %rax, %rsi
callq 0x3210
xorl %r14d, %r14d
movq %r13, %rdi
movq %r15, %rsi
callq 0xa33e
movq %r12, %rcx
subq 0x8(%rax), %rcx
cmpq %r14, %rcx
jbe 0x88fc
movq %rbx, %rdi
leaq 0x372a(%rip), %rsi      # 0xc01c
callq 0x3260
incq %r14
jmp 0x88d1
leaq 0x9c45(%rip), %rdi      # 0x12548
movq %r15, %rsi
callq 0xa33e
movq %rbx, %rdi
movq %rax, %rsi
callq 0x3210
movq %rax, %rdi
callq 0x3130
movq -0x30(%rbp), %rdi
callq 0x3190
movq %rax, %rcx
jmp 0x886b
leaq -0x90(%rbp), %rdi
callq 0x3120
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x895d
jmp 0x896e
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x3120
leaq -0x70(%rbp), %rdi
callq 0x3120
jmp 0x8971
jmp 0x896e
jmp 0x896e
jmp 0x896e
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x3120
movq %rbx, %rdi
callq 0x3390