// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_sortbench.c
// Function: gt_sortbench_option_parser_new
static GtOptionParser* gt_sortbench_option_parser_new(void *tool_arguments)
{
  QSortBenchArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option;

  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[option ...]",
                            "Benchmarks quicksort implementations.");

  option = gt_option_new_choice(
                 "impl", "implementation\nchoose from "
                 "thomas|system|inlinedptr|inlinedarr|direct|\n"
                 "dual-pivot|radixinplace|radixlsb|radixkeypair|radixflba",
                  arguments->impl,
                  gt_sort_implementation_names[0],
                  gt_sort_implementation_names);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_uword("size", "number of integers to sort",
                               &arguments->num_values, 1000000UL);
  gt_option_parser_add_option(op, option);

  /* default set to ULONG_MAX-1 to facilitate proper testing of the
     radixsort implementations (make sure that higher order bits are set) */
  option = gt_option_new_uword("maxval", "maximal integer to sort",
                               &arguments->maxvalue, ULONG_MAX-1);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_uword("runs",
                           "run sort multiple times as specified by arguments",
                           &arguments->runs, 1UL);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("aqsort", "prepare bad input array using the "
                                        "'aqsort' anti-quicksort algorithm",
                               &arguments->use_aqsort, false);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("permute", "prepare bad input array by "
                                         "permutation of unique items",
                               &arguments->use_permute, false);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("verify", "verify result by checking order of "
                                        "sorted array",
                               &arguments->verify, false);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_verbose(&arguments->verbose);
  gt_option_parser_add_option(op, option);
  return op;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xccb85
movq %rdi, %rbx
leaq 0x294473(%rip), %rdi    # 0x360eb5
leaq 0x2977af(%rip), %rsi    # 0x3641f8
callq 0x10cc4e
movq %rax, %r14
movq (%rbx), %rdx
movq 0x3f7f35(%rip), %rcx    # 0x4c4990
leaq 0x3f7f2e(%rip), %r8     # 0x4c4990
leaq 0x2977b5(%rip), %rdi    # 0x36421e
leaq 0x2977b3(%rip), %rsi    # 0x364223
callq 0x10fa04
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x8(%rbx), %rdx
leaq 0x29ff42(%rip), %rdi    # 0x36c9cd
leaq 0x297810(%rip), %rsi    # 0x3642a2
movl $0xf4240, %ecx          # imm = 0xF4240
callq 0x10f4c7
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x18(%rbx), %rdx
leaq 0x29780b(%rip), %rdi    # 0x3642bd
leaq 0x29780b(%rip), %rsi    # 0x3642c4
movq $-0x2, %rcx
callq 0x10f4c7
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x10(%rbx), %rdx
leaq 0x297801(%rip), %rdi    # 0x3642dc
leaq 0x2977ff(%rip), %rsi    # 0x3642e1
movl $0x1, %ecx
callq 0x10f4c7
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x20(%rbx), %rdx
leaq 0x297ea1(%rip), %rdi    # 0x3649a3
leaq 0x29780a(%rip), %rsi    # 0x364313
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x21(%rbx), %rdx
leaq 0x297831(%rip), %rdi    # 0x364357
leaq 0x297832(%rip), %rsi    # 0x36435f
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x22(%rbx), %rdx
leaq 0x2dd8ce(%rip), %rdi    # 0x3aa418
leaq 0x297845(%rip), %rsi    # 0x364396
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
addq $0x23, %rbx
movq %rbx, %rdi
callq 0x10f473
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x20aca