// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_tagerator.c
// Function: gt_tagerator_arguments_check
static int gt_tagerator_arguments_check(GT_UNUSED int rest_argc,
                                        void *tool_arguments,
                                        GtError *err)
{
  TageratorOptions *arguments = tool_arguments;
  GtUword idx;

  if (!arguments->nowildcards && arguments->userdefinedmaxdistance <= 0)
  {
    arguments->nowildcards = true;
  }
  if (gt_option_is_set(arguments->refoptionesaindex))
  {
    arguments->withesa = true;
  } else
  {
    gt_assert(gt_option_is_set(arguments->refoptionpckindex));
    arguments->withesa = false;
  }
  if (arguments->userdefinedmaxdistance < 0)
  {
    if (arguments->doonline)
    {
      gt_error_set(err,"option -online requires option -e");
      return -1;
    }
    if (arguments->maxintervalwidth == 0)
    {
      gt_error_set(err,
                   "if option -e is not used then option -maxocc is required");
      return -1;
    }
    if (arguments->best)
    {
      gt_error_set(err,"option -best requires option -e");
      return -1;
    }
  } else
  {
    if (arguments->skpp &&
        (arguments->userdefinedmaxdistance == 0 ||
         arguments->maxintervalwidth == 0))
    {
      gt_error_set(err,"option -skpp only works in pdiff mode");
      return -1;
    }
  }
  for (idx=0; idx<gt_str_array_size(arguments->outputspec); idx++)
  {
    if (gt_optionargaddbitmask(outputmodedesctable,
                            sizeof (outputmodedesctable)/
                            sizeof (outputmodedesctable[0]),
                            &arguments->outputmode,
                            "-output",
                            gt_str_array_get(arguments->outputspec,idx),
                            err) != 0)
    {
      return -1;
    }
  }
  if (arguments->outputmode == 0)
  {
    arguments->outputmode = TAGOUT_TAGNUM | TAGOUT_TAGSEQ |
                            TAGOUT_DBLENGTH | TAGOUT_DBSTARTPOS |
                            TAGOUT_STRAND;
    if (arguments->maxintervalwidth > 0)
    {
      arguments->outputmode |= TAGOUT_TAGLENGTH;
    }
  }
  return 0;
}

// Assembly:
subq $0x38, %rsp
movl %edi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
testb $0x1, 0x3f(%rax)
jne 0x789ec
movq 0x18(%rsp), %rax
cmpq $0x0, 0x48(%rax)
jg 0x789ec
movq 0x18(%rsp), %rax
movb $0x1, 0x3f(%rax)
movq 0x18(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xf74a0
testb $0x1, %al
jne 0x78a00
jmp 0x78a0b
movq 0x18(%rsp), %rax
movb $0x1, 0x39(%rax)
jmp 0x78a62
jmp 0x78a0d
movq 0x18(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0xf74a0
testb $0x1, %al
jne 0x78a57
movq 0x5c357a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x49d5e3(%rip), %rsi    # 0x516013
leaq 0x4a23cb(%rip), %rdx    # 0x51ae02
leaq 0x4b4d28(%rip), %rcx    # 0x52d766
leaq 0x4b48a3(%rip), %r8     # 0x52d2e8
movl $0xcb, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x78a59
movq 0x18(%rsp), %rax
movb $0x0, 0x39(%rax)
movq 0x18(%rsp), %rax
cmpq $0x0, 0x48(%rax)
jge 0x78af6
movq 0x18(%rsp), %rax
testb $0x1, 0x3a(%rax)
je 0x78a9d
movq 0x20(%rsp), %rdi
leaq 0x4b4cfa(%rip), %rsi    # 0x52d783
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x34(%rsp) # imm = 0xFFFFFFFF
jmp 0x78c0f
movq 0x18(%rsp), %rax
cmpq $0x0, 0x58(%rax)
jne 0x78ac9
movq 0x20(%rsp), %rdi
leaq 0x4b4cf0(%rip), %rsi    # 0x52d7a5
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x34(%rsp) # imm = 0xFFFFFFFF
jmp 0x78c0f
movq 0x18(%rsp), %rax
testb $0x1, 0x41(%rax)
je 0x78af4
movq 0x20(%rsp), %rdi
leaq 0x4b4cfe(%rip), %rsi    # 0x52d7de
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x34(%rsp) # imm = 0xFFFFFFFF
jmp 0x78c0f
jmp 0x78b3b
movq 0x18(%rsp), %rax
testb $0x1, 0x40(%rax)
je 0x78b39
movq 0x18(%rsp), %rax
cmpq $0x0, 0x48(%rax)
je 0x78b19
movq 0x18(%rsp), %rax
cmpq $0x0, 0x58(%rax)
jne 0x78b39
movq 0x20(%rsp), %rdi
leaq 0x4b4cd9(%rip), %rsi    # 0x52d7fe
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x34(%rsp) # imm = 0xFFFFFFFF
jmp 0x78c0f
jmp 0x78b3b
movq $0x0, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11fcc0
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x78bd1
movq 0x18(%rsp), %rax
addq $0x54, %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0x11f8c0
movq (%rsp), %rdx
movq %rax, %r8
movq 0x20(%rsp), %r9
leaq 0x5bd654(%rip), %rdi    # 0x6361f0
movl $0xb, %esi
leaq 0x4a91ca(%rip), %rcx    # 0x521d72
callq 0x261300
cmpl $0x0, %eax
je 0x78bbc
movl $0xffffffff, 0x34(%rsp) # imm = 0xFFFFFFFF
jmp 0x78c0f
jmp 0x78bbe
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0x78b44
movq 0x18(%rsp), %rax
cmpl $0x0, 0x54(%rax)
jne 0x78c07
movq 0x18(%rsp), %rax
movl $0x4f, 0x54(%rax)
movq 0x18(%rsp), %rax
cmpq $0x0, 0x58(%rax)
jbe 0x78c05
movq 0x18(%rsp), %rax
movl 0x54(%rax), %ecx
orl $0x200, %ecx            # imm = 0x200
movl %ecx, 0x54(%rax)
jmp 0x78c07
movl $0x0, 0x34(%rsp)
movl 0x34(%rsp), %eax
addq $0x38, %rsp
retq
nopl (%rax,%rax)