// File: /workspace/github_cpp_makefile_star2_O1/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 0xcd41
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq 0x3012f(%rip), %rdi     # 0x3cf80
callq 0xb540
movq %rax, %rbx
leaq 0x1c450(%rip), %rsi     # 0x292b0
movl $0x2c, %edx
movq %rax, %rdi
callq 0xb540
leaq 0x1c469(%rip), %rsi     # 0x292dd
movl $0x8, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c424(%rip), %rsi     # 0x292ac
movl $0x3, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c44a(%rip), %rsi     # 0x292e6
movl $0x40, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c477(%rip), %rsi     # 0x29327
movl $0x7, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c46b(%rip), %rsi     # 0x2932f
movl $0x36, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c48e(%rip), %rsi     # 0x29366
movl $0x37, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c4b2(%rip), %rsi     # 0x2939e
movl $0x43, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c4e2(%rip), %rsi     # 0x293e2
movl $0x45, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c514(%rip), %rsi     # 0x29428
movl $0x42, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c543(%rip), %rsi     # 0x2946b
movl $0x33, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c563(%rip), %rsi     # 0x2949f
movl $0x16, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c566(%rip), %rsi     # 0x294b6
movl $0x25, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c578(%rip), %rsi     # 0x294dc
movl $0x37, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c59c(%rip), %rsi     # 0x29514
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 0x1c561(%rip), %rsi     # 0x29541
movl $0x17, %edx
movq %rax, %rdi
callq 0xb540
leaq 0x1c565(%rip), %rsi     # 0x29559
movl $0x5a, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c5ac(%rip), %rsi     # 0x295b4
movl $0xb, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c5a4(%rip), %rsi     # 0x295c0
movl $0x51, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c5e2(%rip), %rsi     # 0x29612
movl $0x57, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c626(%rip), %rsi     # 0x2966a
movl $0x17, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c62a(%rip), %rsi     # 0x29682
movl $0xf, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c626(%rip), %rsi     # 0x29692
movl $0x51, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c664(%rip), %rsi     # 0x296e4
movl $0x38, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c689(%rip), %rsi     # 0x2971d
movl $0x15, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c68b(%rip), %rsi     # 0x29733
movl $0x54, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c6cc(%rip), %rsi     # 0x29788
movl $0x14, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c6cd(%rip), %rsi     # 0x2979d
movl $0x66, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c720(%rip), %rsi     # 0x29804
movl $0x17, %edx
movq %rbx, %rdi
callq 0xb540
leaq 0x1c724(%rip), %rsi     # 0x2981c
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 0xd147
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 0xd16b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0xb480
movq %rbx, %rdi
callq 0xb7d0