// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x88, %rsp
movq %rcx, 0x30(%rsp)
movq %rdx, 0x38(%rsp)
movq %rsi, %r10
movq 0x30(%rsp), %rsi
movq %rdi, %r11
movq 0x38(%rsp), %rdi
movq 0xa8(%rsp), %rax
movb 0xa0(%rsp), %al
movb 0x98(%rsp), %cl
movb 0x90(%rsp), %dl
movq %r11, 0x80(%rsp)
movq %r10, 0x78(%rsp)
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
movq %r8, 0x60(%rsp)
movq %r9, 0x58(%rsp)
andb $0x1, %dl
movb %dl, 0x57(%rsp)
andb $0x1, %cl
movb %cl, 0x56(%rsp)
andb $0x1, %al
movb %al, 0x55(%rsp)
movq $0x0, 0x48(%rsp)
testb $0x1, 0x55(%rsp)
je 0x2167e4
callq 0x121340
movq %rax, 0x48(%rsp)
cmpq $0x0, 0x60(%rsp)
jbe 0x2167c4
movq 0xa8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x80(%rsp), %rdi
callq 0x216070
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rdx
movq %rax, %rcx
movq %rdx, %rax
imulq %rcx, %rax
movq %rax, %xmm0
movaps 0x3021a3(%rip), %xmm1   # 0x518930
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x3021a7(%rip), %xmm1   # 0x518940
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x302170(%rip), %xmm1   # 0x518920
divsd %xmm1, %xmm0
leaq 0x35ca4d(%rip), %rsi    # 0x573208
movb $0x1, %al
callq 0x199f0
jmp 0x2167da
movq 0xa8(%rsp), %rdi
leaq 0x35ca62(%rip), %rsi    # 0x573235
movb $0x0, %al
callq 0x199f0
movq 0x48(%rsp), %rdi
callq 0x1213f0
movq 0x80(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x21a9e0
movq 0x80(%rsp), %rdi
movq 0x60(%rsp), %rdx
xorl %eax, %eax
movl $0x1, %ecx
cmpq $0x0, %rdx
cmoval %ecx, %eax
cmpl $0x0, %eax
setne %al
movq 0x78(%rsp), %rcx
movq 0x70(%rsp), %r8
movq 0x68(%rsp), %r9
movq 0x58(%rsp), %r10
movb 0x57(%rsp), %sil
xorl %edx, %edx
movq %rsp, %rdx
movq %r10, 0x8(%rdx)
movzbl %sil, %esi
andl $0x1, %esi
movl %esi, 0x10(%rdx)
movq $-0x1, (%rdx)
movzbl %al, %edx
andl $0x1, %edx
xorl %eax, %eax
movl %eax, %esi
callq 0x219080
movq 0x80(%rsp), %rdi
callq 0x216940
movq %rax, 0x40(%rsp)
testb $0x1, 0x55(%rsp)
je 0x2168a6
movq 0xa8(%rsp), %rdi
movq 0x40(%rsp), %rdx
leaq 0x35c9cd(%rip), %rsi    # 0x573253
movb $0x0, %al
callq 0x199f0
movq 0x48(%rsp), %rdi
movq 0xa8(%rsp), %rdx
leaq 0x35c2eb(%rip), %rsi    # 0x572b8c
callq 0x121520
cmpq $0x0, 0x40(%rsp)
jbe 0x216925
testb $0x1, 0x55(%rsp)
je 0x2168bf
movq 0x48(%rsp), %rdi
callq 0x1213f0
movq 0x80(%rsp), %rdi
callq 0x21aeb0
testb $0x1, 0x55(%rsp)
je 0x216907
movq 0xa8(%rsp), %rdi
movq 0x40(%rsp), %rdx
leaq 0x35c987(%rip), %rsi    # 0x57326e
movb $0x0, %al
callq 0x199f0
movq 0x48(%rsp), %rdi
movq 0xa8(%rsp), %rdx
leaq 0x35c28a(%rip), %rsi    # 0x572b8c
callq 0x121520
testb $0x1, 0x56(%rsp)
je 0x216923
movq 0xa8(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x21b030
jmp 0x216925
cmpq $0x0, 0x48(%rsp)
je 0x216937
movq 0x48(%rsp), %rdi
callq 0x121f00
addq $0x88, %rsp
retq
nop