// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
testq %rdi, %rdi
je 0x1d2565
movq %rdi, %r14
leaq 0x1930b6(%rip), %rdi    # 0x365364
leaq 0x1930d7(%rip), %rsi    # 0x36538c
callq 0x97df5
movq %rax, %rbx
leaq 0x197334(%rip), %rdi    # 0x3695f8
leaq 0x1930fb(%rip), %rsi    # 0x3653c6
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x4(%r14), %rdx
leaq 0x193112(%rip), %rdi    # 0x3653fd
leaq 0x193118(%rip), %rsi    # 0x36540a
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x8(%r14), %rdx
leaq 0x12d6ed(%rip), %rdi    # 0x2ff9fc
leaq 0x193149(%rip), %rsi    # 0x36545f
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9b445
leaq 0x28(%r14), %rdx
leaq 0x12cfaf(%rip), %rdi    # 0x2ff2ed
leaq 0x193150(%rip), %rsi    # 0x365495
pushq $-0x1
popq %r12
pushq $0x1
popq %r8
movq %r12, %rcx
callq 0x9ac58
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9b445
leaq 0x30(%r14), %rdx
leaq 0x13cf32(%rip), %rdi    # 0x30f2a8
leaq 0x193143(%rip), %rsi    # 0x3654c0
movq %r12, %rcx
callq 0x9a9e6
movq %rax, %r12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %r12, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %r12, %rdi
callq 0x9b445
leaq 0x38(%r14), %rdx
leaq 0x18538a(%rip), %rdi    # 0x357746
leaq 0x193123(%rip), %rsi    # 0x3654e6
pushq $0x1
popq %rbp
movl $0x320, %ecx            # imm = 0x320
movl %ebp, %r8d
callq 0x9abef
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x18(%r14), %r15
movq %r15, %rdi
callq 0xad1fa
leaq 0x193e01(%rip), %rdi    # 0x3661f2
leaq 0x19310c(%rip), %rsi    # 0x365504
movq %r15, %rdx
movq %rax, %rcx
callq 0x9ad12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x10(%r14), %rdx
movq 0x267887(%rip), %rcx    # 0x439ca0
leaq 0x267880(%rip), %r8     # 0x439ca0
leaq 0x1296e3(%rip), %rdi    # 0x2fbb0a
leaq 0x1930e8(%rip), %rsi    # 0x365516
callq 0x9ad83
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x20(%r14), %rdx
movq 0x267887(%rip), %rcx    # 0x439cd0
leaq 0x267880(%rip), %r8     # 0x439cd0
leaq 0x15498e(%rip), %rdi    # 0x326de5
leaq 0x11ec3b(%rip), %rsi    # 0x2f1099
callq 0x9ad83
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x2(%r14), %rdx
leaq 0x11ba18(%rip), %rdi    # 0x2ede91
leaq 0x1930c8(%rip), %rsi    # 0x365548
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x5(%r14), %rdx
leaq 0x19404f(%rip), %rdi    # 0x3664ec
leaq 0x1930e8(%rip), %rsi    # 0x36558c
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x3(%r14), %rdx
leaq 0x1930ed(%rip), %rdi    # 0x3655ae
leaq 0x1930f2(%rip), %rsi    # 0x3655ba
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x7(%r14), %rdx
leaq 0x1930ec(%rip), %rdi    # 0x3655dc
leaq 0x1930ed(%rip), %rsi    # 0x3655e4
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x1(%r14), %rdi
callq 0x9a9b6
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
addq $0x6, %r14
leaq 0x1390c8(%rip), %rdi    # 0x30b5fb
leaq 0x11eb42(%rip), %rsi    # 0x2f107c
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq %rbx, %rdi
movl %ebp, %esi
callq 0x98be7
movq %rbx, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x2659fc(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x112a9d(%rip), %rsi    # 0x2e5013
leaq 0x1760d6(%rip), %rdx    # 0x348653
leaq 0x192dc4(%rip), %rcx    # 0x365348
leaq 0x192d9c(%rip), %r8     # 0x365327
pushq $0x6d
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390