// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/tools/gt_linspace_align.c
// Function: gt_linspace_align_arguments_check
static int gt_linspace_align_arguments_check(int rest_argc,
                                             void *tool_arguments,
                                             GtError *err)
{
  GtLinspaceArguments *arguments = tool_arguments;
  int had_err = 0;

  gt_error_check(err);
  gt_assert(arguments != NULL);
  if (rest_argc != 0)
  {
    gt_error_set(err,"superfluous arguments");
    return 1;
  }
  if ((gt_str_array_size(arguments->strings) > 0) &&
     (gt_str_array_size(arguments->strings) != 2UL))
  {
    gt_error_set(err, "option -ss requires two string arguments");
    had_err = 1;
  }
  if ((gt_str_array_size(arguments->files) > 0) &&
     (gt_str_array_size(arguments->files) != 2UL))
  {
    gt_error_set(err, "option -ff requires two file arguments");
    had_err = 1;
  }
  if (gt_str_array_size(arguments->linearcosts) > 0)
  {
    if (arguments->dna && gt_str_array_size(arguments->linearcosts) != 3UL)
    {
      gt_error_set(err, "option -l requires "
                        "match, mismatch, gap costs/scores when usign dna");
      had_err = 1;
    }
    if (arguments->protein && gt_str_array_size(arguments->linearcosts) != 2UL)
    {
      gt_error_set(err, "option -l requires  path of scorematrix "
                        "and gap costs/scores when usign protein");
      had_err = 1;
    }
  }
  if (gt_str_array_size(arguments->affinecosts) > 0)
  {
    if (arguments->dna && gt_str_array_size(arguments->affinecosts) != 4UL)
    {
      gt_error_set(err, "option -a requires match, mismatch, gap_opening, "
                        "gap_extending costs/scores when usign dna");
      had_err = 1;
    }
    if (arguments->protein && gt_str_array_size(arguments->affinecosts) != 3UL)
    {
      gt_error_set(err, "option -a requires path of scorematrix and "
                        "gap_opening, gap_extending costs/scores "
                        "when usign protein");
      had_err = 1;
    }
  }
  if ((gt_str_array_size(arguments->diagonalbonds) > 0) &&
     (gt_str_array_size(arguments->diagonalbonds) != 2UL))
  {
    gt_error_set(err, "option -lr requires left and right shift of diagonal");
    had_err = 1;
  }
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r14
movl %edi, %ebp
testq %rdx, %rdx
je 0x30fd3
movq %rbx, %rdi
callq 0x89eb7
testb %al, %al
jne 0x31182
testq %r14, %r14
je 0x31154
testl %ebp, %ebp
je 0x30ffb
leaq 0x2befb2(%rip), %rsi    # 0x2eff99
pushq $0x1
popq %rbp
movq %rbx, %rdi
xorl %eax, %eax
callq 0x89dbb
movl %ebp, %eax
popq %rbx
popq %r14
popq %rbp
retq
movq 0x8(%r14), %rdi
callq 0xae61c
xorl %ebp, %ebp
testq %rax, %rax
je 0x3102e
movq 0x8(%r14), %rdi
callq 0xae61c
cmpq $0x2, %rax
je 0x3102e
leaq 0x2bef8e(%rip), %rsi    # 0x2effaf
movq %rbx, %rdi
xorl %eax, %eax
callq 0x89dbb
pushq $0x1
popq %rbp
movq 0x10(%r14), %rdi
callq 0xae61c
testq %rax, %rax
je 0x3105f
movq 0x10(%r14), %rdi
callq 0xae61c
cmpq $0x2, %rax
je 0x3105f
leaq 0x2bef86(%rip), %rsi    # 0x2effd8
movq %rbx, %rdi
xorl %eax, %eax
callq 0x89dbb
pushq $0x1
popq %rbp
movq 0x18(%r14), %rdi
callq 0xae61c
testq %rax, %rax
je 0x310c1
cmpb $0x1, 0x3b(%r14)
jne 0x31097
movq 0x18(%r14), %rdi
callq 0xae61c
cmpq $0x3, %rax
je 0x31097
leaq 0x2bef75(%rip), %rsi    # 0x2effff
movq %rbx, %rdi
xorl %eax, %eax
callq 0x89dbb
pushq $0x1
popq %rbp
cmpb $0x1, 0x3c(%r14)
jne 0x310c1
movq 0x18(%r14), %rdi
callq 0xae61c
cmpq $0x2, %rax
je 0x310c1
leaq 0x2bef8f(%rip), %rsi    # 0x2f0043
movq %rbx, %rdi
xorl %eax, %eax
callq 0x89dbb
pushq $0x1
popq %rbp
movq 0x20(%r14), %rdi
callq 0xae61c
testq %rax, %rax
je 0x31123
cmpb $0x1, 0x3b(%r14)
jne 0x310f9
movq 0x20(%r14), %rdi
callq 0xae61c
cmpq $0x4, %rax
je 0x310f9
leaq 0x2befa7(%rip), %rsi    # 0x2f0093
movq %rbx, %rdi
xorl %eax, %eax
callq 0x89dbb
pushq $0x1
popq %rbp
cmpb $0x1, 0x3c(%r14)
jne 0x31123
movq 0x20(%r14), %rdi
callq 0xae61c
cmpq $0x3, %rax
je 0x31123
leaq 0x2befd8(%rip), %rsi    # 0x2f00ee
movq %rbx, %rdi
xorl %eax, %eax
callq 0x89dbb
pushq $0x1
popq %rbp
movq 0x28(%r14), %rdi
callq 0xae61c
testq %rax, %rax
je 0x30ff4
movq 0x28(%r14), %rdi
callq 0xae61c
cmpq $0x2, %rax
je 0x30ff4
leaq 0x2bf005(%rip), %rsi    # 0x2f0154
jmp 0x30fe7
movq 0x406e0d(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2b3eae(%rip), %rsi    # 0x2e5013
leaq 0x2b5100(%rip), %rdx    # 0x2e626c
leaq 0x2bee04(%rip), %rcx    # 0x2eff77
leaq 0x2be8ee(%rip), %r8     # 0x2efa68
movl $0x12e, %r9d            # imm = 0x12E
jmp 0x311ae
movq 0x406ddf(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2b3e80(%rip), %rsi    # 0x2e5013
leaq 0x2b4025(%rip), %rdx    # 0x2e51bf
leaq 0x2bedd6(%rip), %rcx    # 0x2eff77
leaq 0x2be8c0(%rip), %r8     # 0x2efa68
movl $0x12d, %r9d            # imm = 0x12D
xorl %eax, %eax
callq 0x17a50
callq 0x17390