// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/match/diagbandseed.c
// Function: gt_diagbandseed_process_mem
static bool gt_diagbandseed_process_mem(
                                    bool forward,
                                    GtUword aseqnum,
                                    GtUword bseqnum,
                                    GtArrayGtDiagbandseedMaximalmatch *memstore,
                                    GtUword amaxlen,
                                    const GtSeedpairPositions *previous,
                                    GtUword previous_matchlength,
                                    GtUword userdefinedleastlength,
                                    FILE *fpout)
{
  if (memstore == NULL)
  {
    if (previous_matchlength >= userdefinedleastlength)
    {
      fprintf(fpout,"%8" GT_WUS "  %8" GT_WUS "  %8" GT_WUS "  %c  %8" GT_WUS
                    "  %8" GT_WUS "\n",
                  previous_matchlength,
                  aseqnum,
                  previous->apos + 2 - previous_matchlength,
                  forward ? 'F' : 'P',
                  bseqnum,
                  GT_DIAGBANDSEED_DIAGONAL2BPOS(amaxlen,
                                                previous->apos,
                                                previous->bpos)
                                                + 2 - previous_matchlength);
      return true;
    }
  } else
  {
    GtDiagbandseedMaximalmatch *memstore_ptr;

    GT_GETNEXTFREEINARRAY(memstore_ptr,memstore,
                          GtDiagbandseedMaximalmatch,
                          memstore->allocatedGtDiagbandseedMaximalmatch
                          * 0.2 + 256);
    memstore_ptr->apos = previous->apos;
    memstore_ptr->bpos = GT_DIAGBANDSEED_DIAGONAL2BPOS(amaxlen,
                                                       previous->apos,
                                                       previous->bpos);
    memstore_ptr->len = previous_matchlength;
  }
  return false;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %r9, %r15
movq %r8, %r14
movq %rcx, %r12
movq 0x30(%rsp), %rbx
testq %rcx, %rcx
je 0x1428de
movq 0x8(%r12), %rax
cmpq %rax, 0x10(%r12)
jae 0x14293f
movq (%r12), %rax
jmp 0x1429b4
cmpq 0x38(%rsp), %rbx
jb 0x1429e0
movq %rdx, %r10
movq %rsi, %rcx
movq 0x40(%rsp), %rax
movl (%r15), %edx
leal 0x2(%rdx), %r8d
subq %rbx, %r8
testb %dil, %dil
pushq $0x46
popq %rsi
pushq $0x50
popq %r9
cmovnel %esi, %r9d
movl 0x4(%r15), %esi
addq %rbx, %r14
subq %r14, %rdx
leaq (%rsi,%rdx), %r11
addq $0x2, %r11
leaq 0x1ff0fa(%rip), %rsi    # 0x341a1f
movq %rax, %rdi
movq %rbx, %rdx
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x17a50
popq %rcx
popq %rdx
movb $0x1, %al
jmp 0x1429e2
movq %rax, %xmm0
punpckldq 0x1a4f94(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x1a4f9c(%rip), %xmm0   # 0x2e78f0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulsd 0x1fd4b0(%rip), %xmm1   # 0x33fe18
addsd 0x1fd498(%rip), %xmm1   # 0x33fe08
cvttsd2si %xmm1, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
subsd 0x1a539c(%rip), %xmm1   # 0x2e7d20
cvttsd2si %xmm1, %rsi
andq %rdx, %rsi
orq %rcx, %rsi
addq %rax, %rsi
movq %rsi, 0x8(%r12)
movq (%r12), %rdi
imulq $0xc, %rsi, %rsi
leaq 0x1fd516(%rip), %rdx    # 0x33febc
movl $0xb86, %ecx            # imm = 0xB86
callq 0x93472
movq %rax, (%r12)
testq %rax, %rax
je 0x1429ee
movq 0x10(%r12), %rcx
leaq 0x1(%rcx), %rdx
movq %rdx, 0x10(%r12)
imulq $0xc, %rcx, %rcx
movl (%r15), %edx
movl %edx, (%rax,%rcx)
subl %r14d, %edx
addl 0x4(%r15), %edx
movl %edx, 0x4(%rax,%rcx)
movl %ebx, 0x8(%rax,%rcx)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq 0x2f5573(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a2614(%rip), %rsi    # 0x2e5013
leaq 0x1ff057(%rip), %rdx    # 0x341a5d
leaq 0x1ff034(%rip), %rcx    # 0x341a41
leaq 0x1fd4a8(%rip), %r8     # 0x33febc
movl $0xb86, %r9d            # imm = 0xB86
xorl %eax, %eax
callq 0x17a50
callq 0x17390