// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/annotationsketch/gt_sketch.c
// Function: gt_sketch_option_parser_new
static GtOptionParser* gt_sketch_option_parser_new(void *tool_arguments)
{
  GtSketchArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option, *option2;
  static const char *formats[] = { "png",
#ifdef CAIRO_HAS_PDF_SURFACE
    "pdf",
#endif
#ifdef CAIRO_HAS_SVG_SURFACE
    "svg",
#endif
#ifdef CAIRO_HAS_PS_SURFACE
    "ps",
#endif
    NULL
  };
  static const char *inputs[] = {
    "gff",
    "bed",
    "gtf",
    NULL
  };
  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[option ...] image_file [GFF3_file ...]",
                            "Create graphical representation of GFF3 "
                            "annotation files.");

  /* -pipe */
  option = gt_option_new_bool("pipe", "use pipe mode (i.e., show all gff3 "
                              "features on stdout)", &arguments->pipe, false);
  gt_option_parser_add_option(op, option);

  /* -flattenfiles */
  option = gt_option_new_bool("flattenfiles", "do not group tracks by source "
                              "file name and remove file names from track "
                              "description", &arguments->flattenfiles, false);
  gt_option_parser_add_option(op, option);

  /* -seqid */
  option = gt_option_new_string("seqid", "sequence region identifier\n"
                                      "default: first one in file",
                            arguments->seqid, NULL);
  gt_option_parser_add_option(op, option);
  gt_option_hide_default(option);

  /* -start */
  option = gt_option_new_uword_min("start", "start position\n"
                                         "default: first region start",
                            &arguments->start, GT_UNDEF_UWORD, 1);
  gt_option_parser_add_option(op, option);
  gt_option_hide_default(option);

  /* -end */
  option2 = gt_option_new_uword("end", "end position\ndefault: last region end",
                            &arguments->end, GT_UNDEF_UWORD);
  gt_option_parser_add_option(op, option2);
  /* -start and -end must be given together */
  gt_option_imply(option, option2);
  gt_option_imply(option2, option);
  gt_option_hide_default(option2);

  /* -width */
  option = gt_option_new_uint_min("width", "target image width (in pixel)",
                                  &arguments->width,
                                  800, 1);
  gt_option_parser_add_option(op, option);

  /* -style */
  option = gt_option_new_string("style", "style file to use",
                                arguments->stylefile,
                                gt_str_get(arguments->stylefile));
  gt_option_parser_add_option(op, option);

  /* -format */
  option = gt_option_new_choice("format", "output graphics format\n"
                                       "choose from png"
#ifdef CAIRO_HAS_PDF_SURFACE
                                       "|pdf"
#endif
#ifdef CAIRO_HAS_SVG_SURFACE
                                       "|svg"
#endif
#ifdef CAIRO_HAS_PS_SURFACE
                                       "|ps"
#endif
                                       "",
                             arguments->format, formats[0], formats);
  gt_option_parser_add_option(op, option);

  /* -input */
  option = gt_option_new_choice("input", "input data format\n"
                                       "choose from gff|bed|gtf",
                             arguments->input, inputs[0], inputs);
  gt_option_parser_add_option(op, option);

  /* -addintrons */
  option = gt_option_new_bool("addintrons", "add intron features between "
                              "existing exon features (before drawing)",
                              &arguments->addintrons, false);
  gt_option_parser_add_option(op, option);

    /* -unsafe */
  option = gt_option_new_bool("unsafe", "enable unsafe mode for style file",
                              &arguments->unsafe, false);
  gt_option_parser_add_option(op, option);

  /* -showrecmaps */
  option = gt_option_new_bool("showrecmaps",
                              "show RecMaps after image creation",
                              &arguments->showrecmaps, false);
  gt_option_is_development_option(option);
  gt_option_parser_add_option(op, option);

  /* -streams */
  option = gt_option_new_bool("streams", "use streams to write data to file",
                              &arguments->use_streams, false);
  gt_option_is_development_option(option);
  gt_option_parser_add_option(op, option);

  /* -v */
  option = gt_option_new_verbose(&arguments->verbose);
  gt_option_parser_add_option(op, option);

  /* -force */
  option = gt_option_new_bool(GT_FORCE_OPT_CSTR, "force writing to output file",
                              &arguments->force, false);
  gt_option_parser_add_option(op, option);

  gt_option_parser_set_min_args(op, 1);

  return op;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x225b7d
movq %rdi, %r14
leaq 0x1a8dc2(%rip), %rdi    # 0x3ce67c
leaq 0x1a8de3(%rip), %rsi    # 0x3ce6a4
callq 0x10cc4e
movq %rax, %rbx
leaq 0x1ad048(%rip), %rdi    # 0x3d2918
leaq 0x1a8e07(%rip), %rsi    # 0x3ce6de
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x4(%r14), %rdx
leaq 0x1a8e1e(%rip), %rdi    # 0x3ce715
leaq 0x1a8e24(%rip), %rsi    # 0x3ce722
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x8(%r14), %rdx
leaq 0x14327c(%rip), %rdi    # 0x368b97
leaq 0x1a8e55(%rip), %rsi    # 0x3ce777
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fe32
leaq 0x28(%r14), %rdx
leaq 0x185da7(%rip), %rdi    # 0x3ab6f1
leaq 0x1a8e5c(%rip), %rsi    # 0x3ce7ad
movl $0x1, %r8d
movq $-0x1, %rcx
callq 0x10f7ed
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fe32
leaq 0x30(%r14), %rdx
leaq 0x15287c(%rip), %rdi    # 0x378200
leaq 0x1a8e4d(%rip), %rsi    # 0x3ce7d8
movq $-0x1, %rcx
callq 0x10f4c7
movq %rax, %r12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %r12, %rdi
movq %r15, %rsi
callq 0x10fbff
movq %r12, %rdi
callq 0x10fe32
leaq 0x38(%r14), %rdx
leaq 0x19af38(%rip), %rdi    # 0x3c0906
leaq 0x1a8e29(%rip), %rsi    # 0x3ce7fe
movl $0x320, %ecx            # imm = 0x320
movl $0x1, %r8d
callq 0x10f73b
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x18(%r14), %r15
movq %r15, %rdi
callq 0x120d23
leaq 0x1a9b07(%rip), %rdi    # 0x3cf50a
leaq 0x1a8e12(%rip), %rsi    # 0x3ce81c
movq %r15, %rdx
movq %rax, %rcx
callq 0x10f987
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x10(%r14), %rdx
movq 0x2a02c5(%rip), %rcx    # 0x4c5cf0
leaq 0x2a02be(%rip), %r8     # 0x4c5cf0
leaq 0x13f21b(%rip), %rdi    # 0x364c54
leaq 0x1a8dee(%rip), %rsi    # 0x3ce82e
callq 0x10fa04
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x20(%r14), %rdx
movq 0x2a02c5(%rip), %rcx    # 0x4c5d20
leaq 0x2a02be(%rip), %r8     # 0x4c5d20
leaq 0x16a35c(%rip), %rdi    # 0x38fdc5
leaq 0x134651(%rip), %rsi    # 0x35a0c1
callq 0x10fa04
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x2(%r14), %rdx
leaq 0x131436(%rip), %rdi    # 0x356ec1
leaq 0x1a8dce(%rip), %rsi    # 0x3ce860
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x5(%r14), %rdx
leaq 0x1a9d5d(%rip), %rdi    # 0x3cf80c
leaq 0x1a8dee(%rip), %rsi    # 0x3ce8a4
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x3(%r14), %rdx
leaq 0x1a8df3(%rip), %rdi    # 0x3ce8c6
leaq 0x1a8df8(%rip), %rsi    # 0x3ce8d2
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x7(%r14), %rdx
leaq 0x1a8df2(%rip), %rdi    # 0x3ce8f4
leaq 0x1a8df3(%rip), %rsi    # 0x3ce8fc
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x1(%r14), %rdi
callq 0x10f473
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
addq $0x6, %r14
leaq 0x14eda6(%rip), %rdi    # 0x3748eb
leaq 0x134558(%rip), %rsi    # 0x35a0a4
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %rbx, %rdi
movl $0x1, %esi
callq 0x10d766
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
callq 0x86532