// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x58, %rsp
movb %dil, %al
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rdi
movq 0x60(%rsp), %rdi
andb $0x1, %al
movb %al, 0x56(%rsp)
movq %rsi, 0x48(%rsp)
movq %rdx, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
movq %r9, 0x28(%rsp)
cmpq $0x0, 0x38(%rsp)
jne 0x21dca7
movq 0x60(%rsp), %rax
cmpq 0x68(%rsp), %rax
jb 0x21dca2
movq 0x70(%rsp), %rdi
movq 0x60(%rsp), %rdx
movq 0x48(%rsp), %rcx
movq 0x28(%rsp), %rax
movl (%rax), %eax
addl $0x2, %eax
movl %eax, %eax
movl %eax, %r8d
subq 0x60(%rsp), %r8
movb 0x56(%rsp), %sil
movl $0x50, %r9d
movl $0x46, %eax
testb $0x1, %sil
cmovnel %eax, %r9d
movq 0x40(%rsp), %r10
movq 0x28(%rsp), %rax
movl 0x4(%rax), %eax
movq 0x28(%rsp), %rsi
movl (%rsi), %esi
addq %rsi, %rax
subq 0x30(%rsp), %rax
addq $0x2, %rax
subq 0x60(%rsp), %rax
leaq 0x3560d2(%rip), %rsi    # 0x573d5a
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0x199f0
movb $0x1, 0x57(%rsp)
jmp 0x21de6d
jmp 0x21de68
jmp 0x21dca9
jmp 0x21dcab
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
addq $0x0, %rax
movq 0x38(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jb 0x21ddb9
movq 0x38(%rsp), %rax
movq 0x8(%rax), %xmm0
movaps 0x2fac58(%rip), %xmm1   # 0x518930
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x2fac5c(%rip), %xmm1   # 0x518940
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x354205(%rip), %xmm1   # 0x571f00
mulsd %xmm1, %xmm0
movsd 0x3541e9(%rip), %xmm1   # 0x571ef0
addsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x2fb04e(%rip), %xmm1   # 0x518d70
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, 0x18(%rsp)
xorl %eax, %eax
cmpq 0x18(%rsp), %rax
jbe 0x21dd77
movq 0x41e25a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2f82c3(%rip), %rsi    # 0x516013
leaq 0x2fb450(%rip), %rdx    # 0x5191a7
leaq 0x35601e(%rip), %rcx    # 0x573d7c
leaq 0x35422f(%rip), %r8     # 0x571f94
movl $0xb86, %r9d            # imm = 0xB86
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x21dd79
movq 0x18(%rsp), %rcx
movq 0x38(%rsp), %rax
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq 0x38(%rsp), %rax
imulq $0xc, 0x8(%rax), %rsi
leaq 0x3541f0(%rip), %rdx    # 0x571f94
movl $0xb86, %ecx            # imm = 0xB86
callq 0xe8540
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, (%rax)
jmp 0x21ddbb
movq 0x38(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x21ddfe
movq 0x41e1d3(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2f823c(%rip), %rsi    # 0x516013
leaq 0x355fba(%rip), %rdx    # 0x573d98
leaq 0x355f97(%rip), %rcx    # 0x573d7c
leaq 0x3541a8(%rip), %r8     # 0x571f94
movl $0xb86, %r9d            # imm = 0xB86
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x21de00
jmp 0x21de02
movq 0x38(%rsp), %rax
movq (%rax), %rax
movq 0x38(%rsp), %rdx
movq 0x10(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x10(%rdx)
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rax
movl (%rax), %ecx
movq 0x20(%rsp), %rax
movl %ecx, (%rax)
movq 0x28(%rsp), %rax
movl 0x4(%rax), %eax
movq 0x28(%rsp), %rcx
movl (%rcx), %ecx
addq %rcx, %rax
subq 0x30(%rsp), %rax
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x4(%rax)
movq 0x60(%rsp), %rax
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x8(%rax)
movb $0x0, 0x57(%rsp)
movb 0x57(%rsp), %al
andb $0x1, %al
addq $0x58, %rsp
retq
nopl (%rax,%rax)