// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/match/diagbandseed.c
// Function: gt_diagbandseed_get_seedpairs
static void gt_diagbandseed_get_seedpairs(GtSeedpairlist *seedpairlist,
                                          GtDiagbandseedKmerIterator *aiter,
                                          GtDiagbandseedKmerIterator *biter,
                                          GtUword maxfreq,
                                          GtUword known_size,
                                          const GtRange *seedpairdistance,
                                          bool selfcomp,
                                          bool debug_seedpair,
                                          bool verbose,
                                          FILE *stream)
{
  GtTimer *timer = NULL;
  GtUword mlistlen;

  if (verbose) {
    timer = gt_timer_new();
    if (known_size > 0) {
      fprintf(stream, "# start collecting " GT_WU " seeds in %.0f MB ...\n",
                      known_size,
                      GT_MEGABYTES(known_size *
                                   gt_seedpairlist_sizeofunit(seedpairlist)));
    } else {
      fprintf(stream, "# start collecting seeds ...\n");
    }
    gt_timer_start(timer);
  }

  /* allocate mlist space according to seed count */
  gt_seedpairlist_init(seedpairlist,known_size);

  /* create mlist */
  (void) gt_diagbandseed_merge(seedpairlist,
                        NULL, /* histogram not needed: save seeds */
                        known_size > 0 ? true : false,
                        aiter,
                        biter,
                        maxfreq,
                        GT_UWORD_MAX, /* maxgram */
                        seedpairdistance,
                        selfcomp);
  mlistlen = gt_seedpairlist_length(seedpairlist);
  if (verbose) {
    fprintf(stream, "# ... collected " GT_WU " seeds ", mlistlen);
    gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
  }

  /* sort mlist */
  if (mlistlen > 0) {
    if (verbose) {
      gt_timer_start(timer);
    }
    gt_diagbandseed_seedpairlist_sort(seedpairlist);
    if (verbose) {
      fprintf(stream, "# ... sorted " GT_WU " seeds ", mlistlen);
      gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
    }
    if (debug_seedpair) {
      gt_diagbandseed_seedpairlist_out(stream,seedpairlist);
    }
  }
  if (timer != NULL)
  {
    gt_timer_delete(timer);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %r9, %r12
movq %r8, %r13
movq %rcx, %r15
movq %rdx, %r8
movq %rsi, %r11
movq %rdi, %rbx
movq 0x98(%rsp), %r14
movb 0x90(%rsp), %bpl
movb 0x88(%rsp), %al
movb %al, 0xf(%rsp)
movb 0x80(%rsp), %dil
testb %bpl, %bpl
je 0x19d3de
movb %dil, 0xe(%rsp)
movq %r11, 0x10(%rsp)
movq %r8, 0x18(%rsp)
callq 0x1226a4
movq %rax, 0x20(%rsp)
testq %r13, %r13
je 0x19d3ec
movl 0x18(%rbx), %eax
testl %eax, %eax
je 0x19d407
cmpl $0x1, %eax
jne 0x19d40e
movl $0x8, %eax
jmp 0x19d415
movq $0x0, 0x20(%rsp)
jmp 0x19d46f
leaq 0x20ce59(%rip), %rdi    # 0x3aa24c
movl $0x1d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x17fa0
jmp 0x19d456
movl $0x10, %eax
jmp 0x19d415
movq 0x90(%rbx), %rax
imulq %r13, %rax
movq %rax, %xmm1
punpckldq 0x1b34ba(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1b34c2(%rip), %xmm1   # 0x3508f0
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x1b34be(%rip), %xmm0   # 0x350900
leaq 0x20cdd6(%rip), %rsi    # 0x3aa21f
movq %r14, %rdi
movq %r13, %rdx
movb $0x1, %al
callq 0x17ab0
movq 0x20(%rsp), %rdi
callq 0x122733
movq 0x18(%rsp), %r8
movq 0x10(%rsp), %r11
movb 0xe(%rsp), %dil
testq %r13, %r13
je 0x19d5fe
testq %rbx, %rbx
je 0x19d80b
movl 0x18(%rbx), %eax
cmpl $0x1, %eax
je 0x19d508
testl %eax, %eax
jne 0x19d582
movq (%rbx), %rax
testq %rax, %rax
je 0x19d810
movq 0x10(%rax), %rcx
addq %r13, %rcx
movq 0x8(%rax), %rsi
cmpq %rsi, %rcx
jb 0x19d4f6
addq %r13, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0xe(%rsp)
movq (%rax), %rdi
shlq $0x4, %rsi
leaq 0x20bc05(%rip), %rdx    # 0x3a90cc
movl $0x5f4, %ecx            # imm = 0x5F4
movq %r12, 0x10(%rsp)
movq %r8, 0x18(%rsp)
movq %r11, %r12
callq 0x1094e6
movb 0xe(%rsp), %dil
movq %r12, %r11
movq 0x18(%rsp), %r8
movq 0x10(%rsp), %r12
movq (%rbx), %rcx
movq %rax, (%rcx)
movq (%rbx), %rax
cmpq $0x0, (%rax)
jne 0x19d5fe
callq 0x5e8bd
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x19d815
movq 0x10(%rax), %rcx
addq %r13, %rcx
movq 0x8(%rax), %rsi
cmpq %rsi, %rcx
jb 0x19d56f
addq %r13, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0xe(%rsp)
movq (%rax), %rdi
shlq $0x3, %rsi
leaq 0x20bb8d(%rip), %rdx    # 0x3a90cc
movl $0x5fa, %ecx            # imm = 0x5FA
movq %r12, 0x10(%rsp)
movq %r8, 0x18(%rsp)
movq %r11, %r12
callq 0x1094e6
movb 0xe(%rsp), %dil
movq %r12, %r11
movq 0x18(%rsp), %r8
movq 0x10(%rsp), %r12
movq 0x8(%rbx), %rcx
movq %rax, (%rcx)
movq 0x8(%rbx), %rax
cmpq $0x0, (%rax)
jne 0x19d5fe
callq 0x5e84b
movq 0x10(%rbx), %rax
testq %rax, %rax
je 0x19d81a
movq 0x90(%rbx), %rcx
imulq %r13, %rcx
movq 0x10(%rax), %rdx
addq %rcx, %rdx
movq 0x8(%rax), %rsi
cmpq %rsi, %rdx
jb 0x19d5f0
addq %rcx, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0xe(%rsp)
movq (%rax), %rdi
leaq 0x20bb0c(%rip), %rdx    # 0x3a90cc
movl $0x5ff, %ecx            # imm = 0x5FF
movq %r12, 0x10(%rsp)
movq %r8, 0x18(%rsp)
movq %r11, %r12
callq 0x1094e6
movb 0xe(%rsp), %dil
movq %r12, %r11
movq 0x18(%rsp), %r8
movq 0x10(%rsp), %r12
movq 0x10(%rbx), %rcx
movq %rax, (%rcx)
movq 0x10(%rbx), %rax
cmpq $0x0, (%rax)
je 0x19d81f
xorl %edx, %edx
testq %r13, %r13
setne %dl
subq $0x8, %rsp
movzbl %dil, %eax
movq %rbx, %rdi
xorl %esi, %esi
movq %r11, %rcx
movq %r15, %r9
pushq %rax
pushq %r12
pushq $-0x1
callq 0x19f0f2
addq $0x20, %rsp
movq %rbx, %rdi
callq 0x19d824
movq %rax, %r15
testb %bpl, %bpl
je 0x19d65f
leaq 0x20cc2c(%rip), %rsi    # 0x3aa26a
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x17ab0
leaq 0x20c560(%rip), %rsi    # 0x3a9bb2
movq 0x20(%rsp), %rdi
movq %r14, %rdx
callq 0x1227b4
testq %r15, %r15
je 0x19d7de
testb %bpl, %bpl
je 0x19d6aa
movq 0x20(%rsp), %r12
movq %r12, %rdi
callq 0x122733
movq %rbx, %rdi
callq 0x19fe59
leaq 0x20cbfc(%rip), %rsi    # 0x3aa285
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x17ab0
leaq 0x20c515(%rip), %rsi    # 0x3a9bb2
movq %r12, %rdi
movq %r14, %rdx
callq 0x1227b4
jmp 0x19d6b2
movq %rbx, %rdi
callq 0x19fe59
cmpb $0x0, 0xf(%rsp)
je 0x19d7de
movq %rbx, %rdi
callq 0x19d824
testq %rax, %rax
je 0x19d7de
movq %rax, %r12
leaq 0x28(%rsp), %rbp
leaq 0x20cc68(%rip), %r15    # 0x3aa345
xorl %r13d, %r13d
testq %r13, %r13
je 0x19d76c
leaq -0x1(%r13), %rdx
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x19feef
leaq 0x38(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x19feef
movl 0x3c(%rsp), %eax
cmpl %eax, 0x2c(%rsp)
jb 0x19d76c
ja 0x19d806
movl 0x38(%rsp), %eax
cmpl %eax, 0x28(%rsp)
jb 0x19d76c
ja 0x19d806
movl 0x30(%rsp), %eax
movl 0x34(%rsp), %ecx
movb 0xb0(%rbx), %sil
cmpb $0x1, %sil
jne 0x19d745
addl %eax, %ecx
subl 0xb8(%rbx), %ecx
movl 0x40(%rsp), %edx
movl 0x44(%rsp), %edi
testb %sil, %sil
je 0x19d75a
addl %edx, %edi
subl 0xb8(%rbx), %edi
cmpl %edi, %ecx
jb 0x19d76c
ja 0x19d806
cmpl %edx, %eax
jae 0x19d806
movl $0xb, %esi
movl $0x1, %edx
leaq 0x20cbbc(%rip), %rdi    # 0x3aa339
movq %r14, %rcx
callq 0x17fa0
movq %rbp, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x19feef
movl 0x30(%rsp), %r8d
movl 0x34(%rsp), %r9d
cmpb $0x1, 0xb0(%rbx)
jne 0x19d7b0
addq %r8, %r9
subq 0xb8(%rbx), %r9
movl 0x28(%rsp), %ecx
movl 0x2c(%rsp), %edx
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x17ab0
movl $0xa, %edi
movq %r14, %rsi
callq 0x17980
incq %r13
cmpq %r13, %r12
jne 0x19d6e0
movq 0x20(%rsp), %rdi
addq $0x48, %rsp
testq %rdi, %rdi
je 0x19d7fb
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x122d79
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x5e9da
callq 0x5e9a1
callq 0x5e8f6
callq 0x5e884
callq 0x5e968
callq 0x5e92f