// File: /workspace/github_c_makefile_star2_O2/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 0x4f84f
movq %rdi, %rbx
leaq 0x2a8760(%rip), %rdi    # 0x2f7e72
leaq 0x2ab995(%rip), %rsi    # 0x2fb0ae
callq 0x97df5
movq %rax, %r14
movq (%rbx), %rdx
movq 0x3e9215(%rip), %rcx    # 0x438940
leaq 0x3e920e(%rip), %r8     # 0x438940
leaq 0x2ab99b(%rip), %rdi    # 0x2fb0d4
leaq 0x2ab999(%rip), %rsi    # 0x2fb0d9
callq 0x9ad83
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x8(%rbx), %rdx
leaq 0x2b4092(%rip), %rdi    # 0x3037ed
leaq 0x2ab9f6(%rip), %rsi    # 0x2fb158
movl $0xf4240, %ecx          # imm = 0xF4240
callq 0x9a9e6
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x18(%rbx), %rdx
leaq 0x2ab9f1(%rip), %rdi    # 0x2fb173
leaq 0x2ab9f1(%rip), %rsi    # 0x2fb17a
pushq $-0x2
popq %rcx
callq 0x9a9e6
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x10(%rbx), %rdx
leaq 0x2ab9eb(%rip), %rdi    # 0x2fb192
leaq 0x2ab9e9(%rip), %rsi    # 0x2fb197
pushq $0x1
popq %rcx
callq 0x9a9e6
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x20(%rbx), %rdx
leaq 0x2ac08d(%rip), %rdi    # 0x2fb859
leaq 0x2ab9f6(%rip), %rsi    # 0x2fb1c9
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x21(%rbx), %rdx
leaq 0x2aba1d(%rip), %rdi    # 0x2fb20d
leaq 0x2aba1e(%rip), %rsi    # 0x2fb215
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x22(%rbx), %rdx
leaq 0x2f1996(%rip), %rdi    # 0x3411aa
leaq 0x2aba31(%rip), %rsi    # 0x2fb24c
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
addq $0x23, %rbx
movq %rbx, %rdi
callq 0x9a9b6
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq 0x3e8712(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2957b3(%rip), %rsi    # 0x2e5013
leaq 0x2f8dec(%rip), %rdx    # 0x348653
leaq 0x2ab821(%rip), %rcx    # 0x2fb08f
leaq 0x2ab801(%rip), %r8     # 0x2fb076
pushq $0x4a
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390