// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/swalign.c
// Function: swalign_fill_table
static void swalign_fill_table(DPentry **dptable,
                               const GtUchar *u, GtUword ulen,
                               const GtUchar *v, GtUword vlen,
                               const int **scores,
                               int deletion_score, int insertion_score,
                               Coordinate *max_coordinate,
                               unsigned int u_alpha_size,
                               unsigned int v_alpha_size)
{
  GtUword i, j;
  GtWord maxscore, repscore, delscore, insscore, overall_maxscore = LONG_MIN;
  gt_assert(dptable && u && ulen && v && vlen && max_coordinate && u_alpha_size
            && v_alpha_size);
  for (j = 1; j <= vlen; j++) {
    for (i = 1; i <= ulen; i++) {
      int uval, vval;
      uval = (int) ((u[i-1] == GT_WILDCARD) ? u_alpha_size - 1 : u[i-1]);
      vval = (int) ((v[j-1] == GT_WILDCARD) ? v_alpha_size - 1 : v[j-1]);
      repscore = dptable[i-1][j-1].score + scores[uval][vval];
      delscore = dptable[i-1][j].score + deletion_score;
      insscore = dptable[i][j-1].score + insertion_score;
      maxscore = GT_MAX(GT_MAX(GT_MAX(repscore, delscore), insscore), 0);
      dptable[i][j].score = maxscore;
      dptable[i][j].max_replacement = (maxscore == repscore) ? true : false;
      dptable[i][j].max_deletion    = (maxscore == delscore) ? true : false;
      dptable[i][j].max_insertion   = (maxscore == insscore) ? true : false;
      if (maxscore > overall_maxscore) {
        overall_maxscore = maxscore;
        max_coordinate->x = i;
        max_coordinate->y = j;
      }
    }
  }
}

// Assembly:
subq $0xb8, %rsp
movl 0xe0(%rsp), %eax
movl 0xd8(%rsp), %eax
movq 0xd0(%rsp), %rax
movl 0xc8(%rsp), %eax
movl 0xc0(%rsp), %eax
movq %rdi, 0xb0(%rsp)
movq %rsi, 0xa8(%rsp)
movq %rdx, 0xa0(%rsp)
movq %rcx, 0x98(%rsp)
movq %r8, 0x90(%rsp)
movq %r9, 0x88(%rsp)
movabsq $-0x8000000000000000, %rax # imm = 0x8000000000000000
movq %rax, 0x50(%rsp)
cmpq $0x0, 0xb0(%rsp)
je 0x1eb600
cmpq $0x0, 0xa8(%rsp)
je 0x1eb600
cmpq $0x0, 0xa0(%rsp)
je 0x1eb600
cmpq $0x0, 0x98(%rsp)
je 0x1eb600
cmpq $0x0, 0x90(%rsp)
je 0x1eb600
cmpq $0x0, 0xd0(%rsp)
je 0x1eb600
cmpl $0x0, 0xd8(%rsp)
je 0x1eb600
cmpl $0x0, 0xe0(%rsp)
jne 0x1eb638
movq 0x450999(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x32aa02(%rip), %rsi    # 0x516013
leaq 0x37cf1f(%rip), %rdx    # 0x568537
leaq 0x37cf6c(%rip), %rcx    # 0x56858b
leaq 0x37ce4c(%rip), %r8     # 0x568472
movl $0x32, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1eb63a
movq $0x1, 0x78(%rsp)
movq 0x78(%rsp), %rax
cmpq 0x90(%rsp), %rax
ja 0x1eba24
movq $0x1, 0x80(%rsp)
movq 0x80(%rsp), %rax
cmpq 0xa0(%rsp), %rax
ja 0x1eba0f
movq 0xa8(%rsp), %rax
movq 0x80(%rsp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
cmpl $0xfe, %eax
jne 0x1eb6a7
movl 0xd8(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x1eb6c3
movq 0xa8(%rsp), %rax
movq 0x80(%rsp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, 0x44(%rsp)
movl 0x44(%rsp), %eax
movl %eax, 0x4c(%rsp)
movq 0x98(%rsp), %rax
movq 0x78(%rsp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
cmpl $0xfe, %eax
jne 0x1eb6f7
movl 0xe0(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x40(%rsp)
jmp 0x1eb710
movq 0x98(%rsp), %rax
movq 0x78(%rsp), %rcx
subq $0x1, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, 0x40(%rsp)
movl 0x40(%rsp), %eax
movl %eax, 0x48(%rsp)
movq 0xb0(%rsp), %rax
movq 0x80(%rsp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
movq 0x78(%rsp), %rcx
subq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq 0x88(%rsp), %rcx
movslq 0x4c(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x48(%rsp), %rdx
movslq (%rcx,%rdx,4), %rcx
addq %rcx, %rax
movq %rax, 0x68(%rsp)
movq 0xb0(%rsp), %rax
movq 0x80(%rsp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
movq 0x78(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq 0xc0(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x60(%rsp)
movq 0xb0(%rsp), %rax
movq 0x80(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x78(%rsp), %rcx
subq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movslq 0xc8(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x58(%rsp)
movq 0x68(%rsp), %rax
cmpq 0x60(%rsp), %rax
jle 0x1eb7eb
movq 0x68(%rsp), %rax
movq %rax, 0x38(%rsp)
jmp 0x1eb7f5
movq 0x60(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
cmpq 0x58(%rsp), %rax
jle 0x1eb82f
movq 0x68(%rsp), %rax
cmpq 0x60(%rsp), %rax
jle 0x1eb819
movq 0x68(%rsp), %rax
movq %rax, 0x30(%rsp)
jmp 0x1eb823
movq 0x60(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x28(%rsp)
jmp 0x1eb839
movq 0x58(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
cmpq $0x0, %rax
jle 0x1eb8b6
movq 0x68(%rsp), %rax
cmpq 0x60(%rsp), %rax
jle 0x1eb85c
movq 0x68(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0x1eb866
movq 0x60(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
cmpq 0x58(%rsp), %rax
jle 0x1eb8a0
movq 0x68(%rsp), %rax
cmpq 0x60(%rsp), %rax
jle 0x1eb88a
movq 0x68(%rsp), %rax
movq %rax, 0x18(%rsp)
jmp 0x1eb894
movq 0x60(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rsp)
jmp 0x1eb8aa
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
jmp 0x1eb8bf
xorl %eax, %eax
movq %rax, 0x8(%rsp)
jmp 0x1eb8bf
movq 0x8(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rcx
movq 0xb0(%rsp), %rax
movq 0x80(%rsp), %rdx
movq (%rax,%rdx,8), %rax
movq 0x78(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq 0x70(%rsp), %rdx
movq 0x68(%rsp), %rsi
xorl %eax, %eax
movl $0x1, %ecx
cmpq %rsi, %rdx
cmovel %ecx, %eax
cmpl $0x0, %eax
setne %cl
movq 0xb0(%rsp), %rax
movq 0x80(%rsp), %rdx
movq (%rax,%rdx,8), %rax
movq 0x78(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
andb $0x1, %cl
movb %cl, 0x8(%rax)
movq 0x70(%rsp), %rdx
movq 0x60(%rsp), %rsi
xorl %eax, %eax
movl $0x1, %ecx
cmpq %rsi, %rdx
cmovel %ecx, %eax
cmpl $0x0, %eax
setne %cl
movq 0xb0(%rsp), %rax
movq 0x80(%rsp), %rdx
movq (%rax,%rdx,8), %rax
movq 0x78(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
andb $0x1, %cl
movb %cl, 0x9(%rax)
movq 0x70(%rsp), %rdx
movq 0x58(%rsp), %rsi
xorl %eax, %eax
movl $0x1, %ecx
cmpq %rsi, %rdx
cmovel %ecx, %eax
cmpl $0x0, %eax
setne %cl
movq 0xb0(%rsp), %rax
movq 0x80(%rsp), %rdx
movq (%rax,%rdx,8), %rax
movq 0x78(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
andb $0x1, %cl
movb %cl, 0xa(%rax)
movq 0x70(%rsp), %rax
cmpq 0x50(%rsp), %rax
jle 0x1eb9f4
movq 0x70(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x80(%rsp), %rcx
movq 0xd0(%rsp), %rax
movq %rcx, (%rax)
movq 0x78(%rsp), %rcx
movq 0xd0(%rsp), %rax
movq %rcx, 0x8(%rax)
jmp 0x1eb9f6
movq 0x80(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x80(%rsp)
jmp 0x1eb662
jmp 0x1eba11
movq 0x78(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x78(%rsp)
jmp 0x1eb643
addq $0xb8, %rsp
retq
nopl (%rax)