// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/core/option.c
// Function: show_help
static int show_help(GtOptionParser *op, GtOptionType optiontype, GtError *err)
{
  GtUword i, max_option_length = 0;
  GtOption *option;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(optiontype == OPTION_HELP || optiontype == OPTION_HELPPLUS ||
            optiontype == OPTION_HELPDEV);

  /* determine maximum option length */
  for (i = 0; i < gt_array_size(op->options); i++) {
    option = *(GtOption**) gt_array_get(op->options, i);
    /* skip option if necessary */
    if ((optiontype == OPTION_HELP && option->is_extended_option) ||
        (optiontype == OPTION_HELPDEV && !option->is_development_option) ||
        (!(optiontype == OPTION_HELPDEV) && option->is_development_option)) {
      continue;
    }
    if (gt_str_length(option->option_str) > max_option_length)
      max_option_length = gt_str_length(option->option_str);
  }
  gt_assert(max_option_length);

  printf("Usage: %s %s\n", op->progname, op->synopsis);
  printf("%s\n\n", op->one_liner);
  for (i = 0; i < gt_array_size(op->options); i++) {
    option = *(GtOption**) gt_array_get(op->options, i);
    /* skip option if necessary */
    if ((optiontype == OPTION_HELP && option->is_extended_option) ||
        (optiontype == OPTION_HELPDEV && !option->is_development_option) ||
        (!(optiontype == OPTION_HELPDEV) && option->is_development_option)) {
      continue;
    }
    printf("-%s%*s ", gt_str_get(option->option_str),
           (int) (max_option_length - gt_str_length(option->option_str)), "");
    show_description(max_option_length + 2, gt_str_get(option->description),
                     gt_str_length(option->description));

    /* show default value for some types of options */
    if (!option->hide_default) {
      if (option->option_type == OPTION_BOOL) {
        printf("%*s  default: %s\n", (int) max_option_length, "",
               option->default_value.b ? "yes" : "no");
      }
      else if (option->option_type == OPTION_CHOICE) {
        printf("%*s  default: ", (int) max_option_length, "");
        if (!option->default_value.s || !strlen(option->default_value.s))
          gt_xputs("undefined");
        else
          gt_xputs(option->default_value.s);
      }

      else if (option->option_type == OPTION_DOUBLE) {
        printf("%*s  default: ", (int) max_option_length, "");
        if (option->default_value.d == GT_UNDEF_DOUBLE)
          gt_xputs("undefined");
        else
          printf("%.2f\n", option->default_value.d);
      }
      else if (option->option_type == OPTION_INT) {
        printf("%*s  default: ", (int) max_option_length, "");
        if (option->default_value.i == GT_UNDEF_INT)
          gt_xputs("undefined");
        else
          printf("%d\n", option->default_value.i);
      }
      else if (option->option_type == OPTION_UINT) {
        printf("%*s  default: ", (int) max_option_length, "");
        if (option->default_value.ui == GT_UNDEF_UINT)
          gt_xputs("undefined");
        else
          printf("%u\n", option->default_value.ui);
      }
      else if (option->option_type == OPTION_LONG) {
        printf("%*s  default: ", (int) max_option_length, "");
        if (option->default_value.ul == GT_UNDEF_WORD)
          gt_xputs("undefined");
        else
          printf(""GT_WD"\n", option->default_value.l);
      }
      else if (option->option_type == OPTION_ULONG) {
        printf("%*s  default: ", (int) max_option_length, "");
        if (option->default_value.ul == GT_UNDEF_UWORD)
          gt_xputs("undefined");
        else
          printf(""GT_WU"\n", option->default_value.ul);
      }
      else if (option->option_type == OPTION_RANGE) {
        printf("%*s  default: ", (int) max_option_length, "");
        if (option->default_value.r.start == GT_UNDEF_UWORD)
          gt_xputs("undefined");
        else {
          printf(""GT_WU" "GT_WU"\n", option->default_value.r.start,
                 option->default_value.r.end);
        }
      }
      else if (option->option_type == OPTION_FILENAME ||
               option->option_type == OPTION_STRING) {
        printf("%*s  default: ", (int) max_option_length, "");
        if (!option->default_value.s || !strlen(option->default_value.s))
          gt_xputs("undefined");
        else
          gt_xputs(option->default_value.s);
      }
    }
  }
  if (op->comment_func)
    had_err = op->comment_func(op->progname, op->comment_func_data, err);
  if (!had_err) {
    if (op->refer_to_manual) {
      printf("\nFor detailed information, please refer to the manual of%s.",
             op->progname + gt_cstr_length_up_to_char(op->progname, ' '));
    }
    printf("\nReport bugs to %s.\n",
           op->mail_address ? op->mail_address : GT_MAIL_ADDRESS);
  }
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdx, %r12
movl %esi, %r13d
movq %rdi, %r15
testq %rdx, %rdx
je 0x101dc
movq %r12, %rdi
callq 0xc103
testb %al, %al
jne 0x1076b
leal -0x4(%r13), %eax
cmpl $0x2, %eax
ja 0x1070c
xorl %r14d, %r14d
movq $0x0, 0x8(%rsp)
movq 0x18(%r15), %rdi
callq 0x4b988
cmpq %rax, %r14
jae 0x10257
movq 0x18(%r15), %rdi
movq %r14, %rsi
callq 0x4b48e
movq (%rax), %rbx
cmpl $0x4, %r13d
jne 0x10220
cmpb $0x0, 0x4d(%rbx)
je 0x1022e
jmp 0x10252
cmpl $0x6, %r13d
jne 0x1022e
cmpb $0x0, 0x4e(%rbx)
jne 0x10234
jmp 0x10252
cmpb $0x0, 0x4e(%rbx)
jne 0x10252
movq 0x8(%rbx), %rdi
callq 0x14461
cmpq 0x8(%rsp), %rax
jbe 0x10252
movq 0x8(%rbx), %rdi
callq 0x14461
movq %rax, 0x8(%rsp)
incq %r14
jmp 0x101f5
movq %r13, 0x28(%rsp)
movq %r12, 0x18(%rsp)
movq 0x8(%rsp), %r12
testq %r12, %r12
je 0x1073a
movq (%r15), %rsi
movq 0x8(%r15), %rdx
leaq 0xbb44f(%rip), %rdi     # 0xcb6cc
xorl %eax, %eax
callq 0xb070
movq 0x10(%r15), %rsi
leaq 0xbb44b(%rip), %rdi     # 0xcb6da
xorl %eax, %eax
callq 0xb070
leaq 0x2(%r12), %r13
pushq $0x4e
popq %rbx
subq %r12, %rbx
pushq $0x20
popq %r14
xorl %ebp, %ebp
movq %r15, 0x20(%rsp)
movq 0x18(%r15), %rdi
callq 0x4b988
cmpq %rax, %rbp
jae 0x1062d
movq 0x18(%r15), %rdi
movq %rbp, 0x30(%rsp)
movq %rbp, %rsi
callq 0x4b48e
movq (%rax), %rcx
movq 0x28(%rsp), %rax
cmpl $0x4, %eax
jne 0x102e7
cmpb $0x0, 0x4d(%rcx)
je 0x102f7
jmp 0x10620
cmpl $0x6, %eax
jne 0x102f7
cmpb $0x0, 0x4e(%rcx)
jne 0x10301
jmp 0x10620
cmpb $0x0, 0x4e(%rcx)
jne 0x10620
movq 0x8(%rcx), %rdi
movq %rcx, %rbp
callq 0x143d2
movq %rax, %r15
movq 0x8(%rbp), %rdi
callq 0x14461
movl %r12d, %edx
subl %eax, %edx
leaq 0xbb3ba(%rip), %rdi     # 0xcb6df
movq %r15, %rsi
leaq 0xc77b0(%rip), %rcx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
movq 0x10(%rbp), %rdi
callq 0x143d2
movq %rax, %r12
movq %rbp, 0x10(%rsp)
movq 0x10(%rbp), %rdi
callq 0x14461
cmpq $0x4f, %r13
ja 0x106de
movq %rax, %r15
addq %r12, %r15
cmpq %r15, %r12
jae 0x10417
leaq (%r12,%rbx), %rbp
cmpq %r15, %rbp
jae 0x10417
cmpq %r12, %rbp
jb 0x10391
movzbl (%rbp), %eax
cmpl $0xa, %eax
je 0x10391
cmpl $0x20, %eax
je 0x10391
decq %rbp
jmp 0x10376
incq %r12
movsbl (%r12), %edi
cmpq %rbp, %r12
jae 0x103ba
callq 0x165a7
cmpb $0xa, (%r12)
jne 0x1038e
movq %r13, %rbp
subq $0x1, %rbp
jb 0x103e8
movl %r14d, %edi
callq 0x165a7
jmp 0x103aa
cmpb $0xa, %dil
je 0x103cd
movzbl %dil, %eax
cmpl $0x20, %eax
jne 0x106a6
pushq $0xa
popq %rdi
callq 0x165a7
movq %r13, %rbp
subq $0x1, %rbp
jb 0x103e8
movl %r14d, %edi
callq 0x165a7
jmp 0x103d8
incq %r12
jmp 0x10360
movsbl (%r12), %edi
callq 0x165a7
cmpb $0xa, (%r12)
jne 0x10414
movq %r13, %rbp
subq $0x1, %rbp
jb 0x10414
movl %r14d, %edi
callq 0x165a7
jmp 0x10404
incq %r12
cmpq %r15, %r12
jb 0x103f0
pushq $0xa
popq %rdi
callq 0x165a7
movq 0x10(%rsp), %rdx
cmpb $0x0, 0x4a(%rdx)
movq 0x20(%rsp), %r15
movq 0x8(%rsp), %r12
jne 0x10620
movl (%rdx), %eax
cmpq $0xc, %rax
ja 0x10620
leaq 0xba460(%rip), %rcx     # 0xca8b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xbb299(%rip), %rdi     # 0xcb6f9
movl %r12d, %esi
movq %rdx, %rbp
leaq 0xc7672(%rip), %rdx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
movq 0x20(%rbp), %rdi
testq %rdi, %rdi
je 0x10614
cmpb $0x0, (%rdi)
jne 0x1061b
jmp 0x10614
leaq 0xbb263(%rip), %rdi     # 0xcb6f9
movl %r12d, %esi
movq %rdx, %rbp
leaq 0xc763c(%rip), %rdx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
movl 0x20(%rbp), %esi
movl %esi, %eax
negl %eax
jo 0x10614
leaq 0xd7501(%rip), %rdi     # 0xe79bf
jmp 0x10521
cmpb $0x0, 0x20(%rdx)
leaq 0xe3320(%rip), %rcx     # 0xf37eb
leaq 0xba6fa(%rip), %rax     # 0xcabcc
cmovneq %rax, %rcx
leaq 0xbb20a(%rip), %rdi     # 0xcb6e7
movl %r12d, %esi
leaq 0xc75f8(%rip), %rdx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
jmp 0x10620
leaq 0xbb1ff(%rip), %rdi     # 0xcb6f9
movl %r12d, %esi
movq %rdx, %rbp
leaq 0xc75d8(%rip), %rdx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
movl 0x20(%rbp), %esi
cmpl $-0x1, %esi
je 0x10614
leaq 0xe4dad(%rip), %rdi     # 0xf52ce
xorl %eax, %eax
callq 0xb070
jmp 0x10620
leaq 0xbb1c5(%rip), %rdi     # 0xcb6f9
movl %r12d, %esi
movq %rdx, %rbp
leaq 0xc759e(%rip), %rdx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
movq 0x20(%rbp), %rsi
movq %rsi, %rax
negq %rax
jo 0x10614
leaq 0xbb1a9(%rip), %rdi     # 0xcb708
jmp 0x1060b
leaq 0xbb18e(%rip), %rdi     # 0xcb6f9
movl %r12d, %esi
movq %rdx, %rbp
leaq 0xc7567(%rip), %rdx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
movsd 0x20(%rbp), %xmm0
ucomisd 0xba35c(%rip), %xmm0    # 0xca8e8
jne 0x10594
jnp 0x10614
leaq 0xbbae2(%rip), %rdi     # 0xcc07d
movb $0x1, %al
callq 0xb070
jmp 0x10620
leaq 0xbb14e(%rip), %rdi     # 0xcb6f9
movl %r12d, %esi
leaq 0xc752a(%rip), %rdx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rsi
cmpq $-0x1, %rsi
je 0x10614
movq 0x28(%rax), %rdx
leaq 0xc13d1(%rip), %rdi     # 0xd19a7
xorl %eax, %eax
callq 0xb070
jmp 0x10620
leaq 0xbb113(%rip), %rdi     # 0xcb6f9
movl %r12d, %esi
movq %rdx, %rbp
leaq 0xc74ec(%rip), %rdx     # 0xd7adf
xorl %eax, %eax
callq 0xb070
movq 0x20(%rbp), %rsi
cmpq $-0x1, %rsi
je 0x10614
leaq 0xda5a5(%rip), %rdi     # 0xeabb0
xorl %eax, %eax
callq 0xb070
jmp 0x10620
leaq 0xba5bd(%rip), %rdi     # 0xcabd8
callq 0x165c8
movq 0x30(%rsp), %rbp
incq %rbp
jmp 0x102ac
movq 0x30(%r15), %rax
testq %rax, %rax
je 0x1064a
movq (%r15), %rdi
movq 0x38(%r15), %rsi
movq 0x18(%rsp), %rdx
callq *%rax
movl %eax, %ebp
testl %eax, %eax
jne 0x10695
cmpb $0x1, 0x29(%r15)
jne 0x10673
movq (%r15), %r14
pushq $0x20
popq %rsi
movq %r14, %rdi
callq 0x4fa5d
addq %rax, %r14
leaq 0xbb0a4(%rip), %rdi     # 0xcb70d
movq %r14, %rsi
xorl %eax, %eax
callq 0xb070
movq 0x48(%r15), %rax
testq %rax, %rax
leaq 0xba616(%rip), %rsi     # 0xcac97
cmovneq %rax, %rsi
leaq 0xbb0bd(%rip), %rdi     # 0xcb749
xorl %ebp, %ebp
xorl %eax, %eax
callq 0xb070
movl %ebp, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x11d90b(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xb99af(%rip), %rsi     # 0xca066
leaq 0xbb0e1(%rip), %rdx     # 0xcb79f
leaq 0xbb0c9(%rip), %rcx     # 0xcb78e
leaq 0xba23a(%rip), %r8      # 0xca906
movl $0x151, %r9d            # imm = 0x151
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
movq 0x11d8d3(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xb9977(%rip), %rsi     # 0xca066
leaq 0xbb068(%rip), %rdx     # 0xcb75e
leaq 0xbb091(%rip), %rcx     # 0xcb78e
leaq 0xba202(%rip), %r8      # 0xca906
movl $0x135, %r9d            # imm = 0x135
jmp 0x106d2
movq 0x11d8a5(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xb9949(%rip), %rsi     # 0xca066
leaq 0xbaf3b(%rip), %rdx     # 0xcb65f
leaq 0xbaf2a(%rip), %rcx     # 0xcb655
leaq 0xba1d4(%rip), %r8      # 0xca906
movl $0x16f, %r9d            # imm = 0x16F
jmp 0x106d2
movq 0x11d877(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xb991b(%rip), %rsi     # 0xca066
leaq 0xbaf68(%rip), %rdx     # 0xcb6ba
leaq 0xbaefc(%rip), %rcx     # 0xcb655
leaq 0xba1a6(%rip), %r8      # 0xca906
movl $0x17d, %r9d            # imm = 0x17D
jmp 0x106d2
movq 0x11d846(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xb98ea(%rip), %rsi     # 0xca066
leaq 0xb9ed6(%rip), %rdx     # 0xca659
leaq 0xbaecb(%rip), %rcx     # 0xcb655
leaq 0xba175(%rip), %r8      # 0xca906
movl $0x16d, %r9d            # imm = 0x16D
jmp 0x106d2