// File: /workspace/github_cpp_makefile_star2_O3/ParkerLab[P]cta/src/cta.cpp
// Function: print_usage()
void print_usage() {
    std::cout << version_string() << ": Trim adapters from paired-end HTS reads.\n\n"

              << "Usage:\n\n" << PROGRAM_NAME << " [options] input_file1 input_file2 [output_file1 output_file2]\n\n"
              << "where:\n"
              << "    input_file1 contains the first reads of all pairs\n"
              << "    input_file2 contains the second reads of all pairs\n"
              << "    output_file1 will contain the trimmed first reads of all pairs\n"
              << "    output_file2 will contain the trimmed second reads of all pairs\n\n"

              << "You must supply both of the output file names, or neither. If not\n"
              << "specified, they will be inferred from the inputs.\n\n"

              << "Options may include:\n\n"

              << "-h|--help: show this usage message.\n\n"
              << "-v|--verbose: show more details and progress updates.\n\n"
              << "--version: print the version of the program." << std::endl << std::endl

              << "-m|--max-edit-distance\n"
              << "    The maximum edit distance permitted when aligning the paired reads. The default is 1.\n"

              << "-f|--fudge\n"
              << "    An arbitrary number of extra bases to trim, to make sure the reads and mates\n"
              << "    don't overlap exactly. Some aligners (e.g. bowtie) apparently don't like perfectly\n"
              << "    overlapping reads.\n"

              << "-r|--rc-length\n"
              << "    Use the reverse complement of this number of bases from the beginning of the\n"
              << "    reverse read to align the reads. The default is 20.\n"

              << "-t|--trim-from-start\n"
              << "    Trim this number of bases from the start of each sequence. The default is zero.\n"

              << "-a|--append-barcode\n"
              << "    Append barcodes from this fastq file to the end of read names (useful for e.g. single-cell data).\n"

			  << "-x|--selected-barcodes\n"
              << "    Select and output reads corresponding to these barcodes from this unzipped text file\n"

              << std::endl;
}

// Assembly:
pushq %rbx
subq $0x20, %rsp
movq %rsp, %rbx
movq %rbx, %rdi
callq 0xcda1
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq 0x300cf(%rip), %rdi     # 0x3cf80
callq 0xb540
movq %rax, %rbx
leaq 0x1c420(%rip), %rsi     # 0x292e0
movl $0x2c, %edx
movq %rax, %rdi
callq 0xb540
leaq 0x1c439(%rip), %rsi     # 0x2930d
movl $0x8, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c3f4(%rip), %rsi     # 0x292dc
movl $0x3, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c41a(%rip), %rsi     # 0x29316
movl $0x40, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c447(%rip), %rsi     # 0x29357
movl $0x7, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c43b(%rip), %rsi     # 0x2935f
movl $0x36, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c45e(%rip), %rsi     # 0x29396
movl $0x37, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c482(%rip), %rsi     # 0x293ce
movl $0x43, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c4b2(%rip), %rsi     # 0x29412
movl $0x45, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c4e4(%rip), %rsi     # 0x29458
movl $0x42, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c513(%rip), %rsi     # 0x2949b
movl $0x33, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c533(%rip), %rsi     # 0x294cf
movl $0x16, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c536(%rip), %rsi     # 0x294e6
movl $0x25, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c548(%rip), %rsi     # 0x2950c
movl $0x37, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c56c(%rip), %rsi     # 0x29544
movl $0x2c, %edx
movq %rbx, %rdi
callq 0xb540
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xb440
movsbl %al, %esi
movq %rbx, %rdi
callq 0xb040
movq %rax, %rdi
callq 0xb330
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xb440
movsbl %al, %esi
movq %rbx, %rdi
callq 0xb040
movq %rax, %rdi
callq 0xb330
movq %rax, %rbx
leaq 0x1c531(%rip), %rsi     # 0x29571
movl $0x17, %edx
movq %rax, %rdi
callq 0xb540
leaq 0x1c535(%rip), %rsi     # 0x29589
movl $0x5a, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c57c(%rip), %rsi     # 0x295e4
movl $0xb, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c574(%rip), %rsi     # 0x295f0
movl $0x51, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c5b2(%rip), %rsi     # 0x29642
movl $0x57, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c5f6(%rip), %rsi     # 0x2969a
movl $0x17, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c5fa(%rip), %rsi     # 0x296b2
movl $0xf, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c5f6(%rip), %rsi     # 0x296c2
movl $0x51, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c634(%rip), %rsi     # 0x29714
movl $0x38, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c659(%rip), %rsi     # 0x2974d
movl $0x15, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c65b(%rip), %rsi     # 0x29763
movl $0x54, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c69c(%rip), %rsi     # 0x297b8
movl $0x14, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c69d(%rip), %rsi     # 0x297cd
movl $0x66, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c6f0(%rip), %rsi     # 0x29834
movl $0x17, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c6f4(%rip), %rsi     # 0x2984c
movl $0x59, %edx
movq %rbx, %rdi
callq 0xb540
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xb440
movsbl %al, %esi
movq %rbx, %rdi
callq 0xb040
movq %rax, %rdi
callq 0xb330
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd1a7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0xb480
addq $0x20, %rsp
popq %rbx
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd1cb
movq 0x10(%rsp), %rsi
incq %rsi
callq 0xb480
movq %rbx, %rdi
callq 0xb7d0