// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/output_file.c
// Function: gt_output_file_info_register_options
void gt_output_file_info_register_options(GtOutputFileInfo *ofi,
                                          GtOptionParser *op, GtFile **outfp)
{
  GtOption *opto, *optgzip, *optbzip2, *optforce;
  gt_assert(outfp && ofi);
  ofi->outfp = outfp;
  /* register option -o */
  opto = gt_option_new_filename("o", "redirect output to specified file",
                                ofi->output_filename);
  gt_option_parser_add_option(op, opto);
  /* register option -gzip */
  optgzip = gt_option_new_bool("gzip", "write gzip compressed output file",
                               &ofi->gzip, false);
  gt_option_parser_add_option(op, optgzip);
  /* register option -bzip2 */
  optbzip2 = gt_option_new_bool("bzip2", "write bzip2 compressed output file",
                                &ofi->bzip2, false);
  gt_option_parser_add_option(op, optbzip2);
  /* register option -force */
  optforce = gt_option_new_bool(GT_FORCE_OPT_CSTR,
                                "force writing to output file",
                                &ofi->force, false);
  gt_option_parser_add_option(op, optforce);
  /* options -gzip and -bzip2 exclude each other */
  gt_option_exclude(optgzip, optbzip2);
  /* option implications */
  gt_option_imply(optgzip, opto);
  gt_option_imply(optbzip2, opto);
  gt_option_imply(optforce, opto);
  /* set hook function to determine <outfp> */
  gt_option_parser_register_hook(op, determine_outfp, ofi);
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0xf7d73
cmpq $0x0, 0x30(%rsp)
jne 0xf7dab
movq 0x544226(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x41e28f(%rip), %rsi    # 0x516013
leaq 0x447711(%rip), %rdx    # 0x53f49c
leaq 0x447717(%rip), %rcx    # 0x53f4a9
leaq 0x4476ec(%rip), %r8     # 0x53f485
movl $0x57, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0xf7dad
movq 0x20(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x30(%rsp), %rax
movq (%rax), %rdx
leaq 0x45832a(%rip), %rdi    # 0x5500f4
leaq 0x4476fd(%rip), %rsi    # 0x53f4ce
callq 0xf6aa0
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0x30(%rsp), %rdx
addq $0x8, %rdx
leaq 0x4476f6(%rip), %rdi    # 0x53f4f0
leaq 0x4476f4(%rip), %rsi    # 0x53f4f5
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0x30(%rsp), %rdx
addq $0x9, %rdx
leaq 0x4476eb(%rip), %rdi    # 0x53f517
leaq 0x4476ea(%rip), %rsi    # 0x53f51d
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf1600
movq 0x30(%rsp), %rdx
addq $0xa, %rdx
leaq 0x444e7d(%rip), %rdi    # 0x53ccdb
leaq 0x42a282(%rip), %rsi    # 0x5220e7
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
movq (%rsp), %rsi
callq 0xf1600
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf7320
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf7090
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf7090
movq (%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf7090
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rdx
leaq 0x16(%rip), %rsi        # 0xf7ee0
callq 0xf1860
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)