// File: /workspace/github_c_makefile_star2_O3/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 0x21be25
movq %rdi, %r14
leaq 0x1a93f2(%rip), %rdi    # 0x3c4f54
leaq 0x1a9413(%rip), %rsi    # 0x3c4f7c
callq 0x107bfe
movq %rax, %rbx
leaq 0x1ad680(%rip), %rdi    # 0x3c91f8
leaq 0x1a9437(%rip), %rsi    # 0x3c4fb6
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x4(%r14), %rdx
leaq 0x1a944e(%rip), %rdi    # 0x3c4fed
leaq 0x1a9454(%rip), %rsi    # 0x3c4ffa
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x8(%r14), %rdx
leaq 0x143ed4(%rip), %rdi    # 0x35fa97
leaq 0x1a9485(%rip), %rsi    # 0x3c504f
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10ac1f
leaq 0x28(%r14), %rdx
leaq 0x18659f(%rip), %rdi    # 0x3a2191
leaq 0x1a948c(%rip), %rsi    # 0x3c5085
movl $0x1, %r8d
movq $-0x1, %rcx
callq 0x10a5d1
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10ac1f
leaq 0x30(%r14), %rdx
leaq 0x153364(%rip), %rdi    # 0x36ef90
leaq 0x1a947d(%rip), %rsi    # 0x3c50b0
movq $-0x1, %rcx
callq 0x10a2ab
movq %rax, %r12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %r12, %rdi
movq %r15, %rsi
callq 0x10a9e4
movq %r12, %rdi
callq 0x10ac1f
leaq 0x38(%r14), %rdx
leaq 0x19b670(%rip), %rdi    # 0x3b72e6
leaq 0x1a9459(%rip), %rsi    # 0x3c50d6
movl $0x320, %ecx            # imm = 0x320
movl $0x1, %r8d
callq 0x10a51f
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x18(%r14), %r15
movq %r15, %rdi
callq 0x11b0a1
leaq 0x1aa137(%rip), %rdi    # 0x3c5de2
leaq 0x1a9442(%rip), %rsi    # 0x3c50f4
movq %r15, %rdx
movq %rax, %rcx
callq 0x10a770
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x10(%r14), %rdx
movq 0x29f01d(%rip), %rcx    # 0x4bacf0
leaq 0x29f016(%rip), %r8     # 0x4bacf0
leaq 0x13fed3(%rip), %rdi    # 0x35bbb4
leaq 0x1a941e(%rip), %rsi    # 0x3c5106
callq 0x10a7ed
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x20(%r14), %rdx
movq 0x29f01d(%rip), %rcx    # 0x4bad20
leaq 0x29f016(%rip), %r8     # 0x4bad20
leaq 0x16acd4(%rip), %rdi    # 0x3869e5
leaq 0x13536e(%rip), %rsi    # 0x351086
callq 0x10a7ed
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x2(%r14), %rdx
leaq 0x13215e(%rip), %rdi    # 0x34de91
leaq 0x1a93fe(%rip), %rsi    # 0x3c5138
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x5(%r14), %rdx
leaq 0x1aa385(%rip), %rdi    # 0x3c60dc
leaq 0x1a941e(%rip), %rsi    # 0x3c517c
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x3(%r14), %rdx
leaq 0x1a9423(%rip), %rdi    # 0x3c519e
leaq 0x1a9428(%rip), %rsi    # 0x3c51aa
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x7(%r14), %rdx
leaq 0x1a9422(%rip), %rdi    # 0x3c51cc
leaq 0x1a9423(%rip), %rsi    # 0x3c51d4
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x1(%r14), %rdi
callq 0x10a257
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
addq $0x6, %r14
leaq 0x14f8ae(%rip), %rdi    # 0x36b69b
leaq 0x135275(%rip), %rsi    # 0x351069
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %rbx, %rdi
movl $0x1, %esi
callq 0x10872d
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
callq 0x84445