// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/option.c
// Function: check_option_implications
static int check_option_implications(GtOptionParser *op, GtError *err)
{
  GtUword i, j, k, l;
  GtArray *implied_option_array;
  GtOption *o, *implied_option;
  unsigned int option_set;
  GtStr *gt_error_str;
  gt_error_check(err);

  for (i = 0; i < gt_array_size(op->options); i++) {
    o = *(GtOption**) gt_array_get(op->options, i);
    if (o->implications && o->is_set) {
      for (j = 0; j < gt_array_size(o->implications); j++) {
        implied_option_array = *(GtArray**) gt_array_get(o->implications, j);
        gt_assert(gt_array_size(implied_option_array));
        if (gt_array_size(implied_option_array) == 1) {
          /* special case: option implies exactly one option */
          implied_option = *(GtOption**) gt_array_get(implied_option_array, 0);
          if (!implied_option->is_set) {
            gt_error_set(err, "option \"-%s\" requires option \"-%s\"",
                      gt_str_get(o->option_str),
                      gt_str_get(implied_option->option_str));
            return -1;
          }
        }
        else {
          /* ``either'' case: option implied at least one of the options given
             in array */
          option_set = 0;
          for (k = 0; k < gt_array_size(implied_option_array); k++) {
            implied_option = *(GtOption**) gt_array_get(implied_option_array,
                                                        k);
            if (implied_option->is_set) {
              option_set = 1;
              break;
            }
          }
          if (!option_set) {
            gt_error_str = gt_str_new_cstr("option \"-");
            gt_str_append_str(gt_error_str, o->option_str);
            gt_str_append_cstr(gt_error_str, "\" requires option");
            for (l = 0; l < gt_array_size(implied_option_array) - 1; l++) {
              gt_str_append_cstr(gt_error_str, " \"-");
              gt_str_append_str(gt_error_str,
                                (*(GtOption**)
                                 gt_array_get(implied_option_array, l))
                                ->option_str);
              gt_str_append_cstr(gt_error_str, "\"");
              if (gt_array_size(implied_option_array) > 2)
                gt_str_append_char(gt_error_str, ',');
            }
            gt_str_append_cstr(gt_error_str, " or \"-");
            gt_str_append_str(gt_error_str,
                              (*(GtOption**)
                               gt_array_get(implied_option_array,
                                            gt_array_size(implied_option_array)
                                            - 1))
                              ->option_str);
            gt_str_append_cstr(gt_error_str, "\"");
            gt_error_set(err, "%s", gt_str_get(gt_error_str));
            gt_str_delete(gt_error_str);
            return -1;
          }
        }
      }
    }
  }
  return 0;
}

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xa8(%rsp)
movq %rsi, 0xa0(%rsp)
cmpq $0x0, 0xa0(%rsp)
je 0x1284d
movq 0xa0(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x12815
jmp 0x1284d
movq 0x1a17bc(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x14b840(%rip), %rsi    # 0x15e066
leaq 0x14be1b(%rip), %rdx    # 0x15e648
leaq 0x14cf4e(%rip), %rcx    # 0x15f782
leaq 0x14c01f(%rip), %r8     # 0x15e85a
movl $0x31f, %r9d            # imm = 0x31F
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1284f
movq $0x0, 0x98(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0xa8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x50(%rsp), %rax
cmpq %rcx, %rax
jae 0x12c59
movq 0xa8(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x98(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
cmpq $0x0, 0x50(%rax)
je 0x12c3e
movq 0x70(%rsp), %rax
testb $0x1, 0x48(%rax)
je 0x12c3e
movq $0x0, 0x90(%rsp)
movq 0x90(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x70(%rsp), %rax
movq 0x50(%rax), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x48(%rsp), %rax
cmpq %rcx, %rax
jae 0x12c3c
movq 0x70(%rsp), %rax
movq 0x50(%rax), %rdi
movq 0x90(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rdi
callq 0x76490
cmpq $0x0, %rax
jne 0x12968
movq 0x1a16a1(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x14b725(%rip), %rsi    # 0x15e066
leaq 0x14ce54(%rip), %rdx    # 0x15f79c
leaq 0x14ce33(%rip), %rcx    # 0x15f782
leaq 0x14bf04(%rip), %r8     # 0x15e85a
movl $0x326, %r9d            # imm = 0x326
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1296a
movq 0x78(%rsp), %rdi
callq 0x76490
cmpq $0x1, %rax
jne 0x129f9
movq 0x78(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
testb $0x1, 0x48(%rax)
jne 0x129f4
movq 0xa0(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x19940
movq %rax, 0x40(%rsp)
movq 0x68(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x19940
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rdx
movq %rax, %rcx
leaq 0x14cde3(%rip), %rsi    # 0x15f7c0
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xb4(%rsp) # imm = 0xFFFFFFFF
jmp 0x12c64
jmp 0x12c21
movl $0x0, 0x64(%rsp)
movq $0x0, 0x88(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x78(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jae 0x12a78
movq 0x78(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
testb $0x1, 0x48(%rax)
je 0x12a60
movl $0x1, 0x64(%rsp)
jmp 0x12a78
jmp 0x12a62
movq 0x88(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x88(%rsp)
jmp 0x12a0d
cmpl $0x0, 0x64(%rsp)
jne 0x12c1f
leaq 0x14cd59(%rip), %rdi    # 0x15f7e3
callq 0x18f70
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x191b0
movq 0x58(%rsp), %rdi
leaq 0x14cd3a(%rip), %rsi    # 0x15f7ed
callq 0x18fb0
movq $0x0, 0x80(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x78(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x28(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x12b79
movq 0x58(%rsp), %rdi
leaq 0x14cced(%rip), %rsi    # 0x15f7e9
callq 0x18fb0
movq 0x58(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x78(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x75c80
movq 0x20(%rsp), %rdi
movq (%rax), %rax
movq 0x8(%rax), %rsi
callq 0x191b0
movq 0x58(%rsp), %rdi
leaq 0x1585ec(%rip), %rsi    # 0x16b126
callq 0x18fb0
movq 0x78(%rsp), %rdi
callq 0x76490
cmpq $0x2, %rax
jbe 0x12b5e
movq 0x58(%rsp), %rdi
movl $0x2c, %esi
callq 0x194d0
jmp 0x12b60
movq 0x80(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x80(%rsp)
jmp 0x12ac4
movq 0x58(%rsp), %rdi
leaq 0x14cc7a(%rip), %rsi    # 0x15f7ff
callq 0x18fb0
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x78(%rsp), %rdi
callq 0x76490
movq 0x8(%rsp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0x75c80
movq 0x10(%rsp), %rdi
movq (%rax), %rax
movq 0x8(%rax), %rsi
callq 0x191b0
movq 0x58(%rsp), %rdi
leaq 0x158550(%rip), %rsi    # 0x16b126
callq 0x18fb0
movq 0xa0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x58(%rsp), %rdi
callq 0x19940
movq 0x18(%rsp), %rdi
movq %rax, %rdx
leaq 0x1592ac(%rip), %rsi    # 0x16bead
movb $0x0, %al
callq 0xc0d0
movq 0x58(%rsp), %rdi
callq 0x1afc0
movl $0xffffffff, 0xb4(%rsp) # imm = 0xFFFFFFFF
jmp 0x12c64
jmp 0x12c21
jmp 0x12c23
movq 0x90(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x90(%rsp)
jmp 0x128d6
jmp 0x12c3e
jmp 0x12c40
movq 0x98(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x98(%rsp)
jmp 0x1285b
movl $0x0, 0xb4(%rsp)
movl 0xb4(%rsp), %eax
addq $0xb8, %rsp
retq
nopw %cs:(%rax,%rax)