// File: /workspace/github_c_makefile_star2_O3/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 $0x38, %rsp
movq %r9, %r12
movq %r8, %r13
movq %rcx, %r15
movq %rdx, %r8
movq %rsi, %r11
movq %rdi, %rbx
movq 0x88(%rsp), %r14
movb 0x80(%rsp), %bpl
movb 0x78(%rsp), %al
movb %al, 0x7(%rsp)
movb 0x70(%rsp), %dil
testb %bpl, %bpl
je 0x194e3f
movb %dil, 0x5(%rsp)
movq %r11, 0x8(%rsp)
movb %bpl, 0x6(%rsp)
movq %r8, %rbp
callq 0x11c954
movq %rax, 0x10(%rsp)
testq %r13, %r13
je 0x194e4d
movl 0x18(%rbx), %eax
testl %eax, %eax
je 0x194e68
cmpl $0x1, %eax
jne 0x194e6f
movl $0x8, %eax
jmp 0x194e76
movq $0x0, 0x10(%rsp)
jmp 0x194ed3
leaq 0x20be78(%rip), %rdi    # 0x3a0ccc
movl $0x1d, %esi
movl $0x1, %edx
movq %r14, %rcx
callq 0x17fa0
jmp 0x194eb7
movl $0x10, %eax
jmp 0x194e76
movq 0x90(%rbx), %rax
imulq %r13, %rax
movq %rax, %xmm1
punpckldq 0x1b2a59(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1b2a61(%rip), %xmm1   # 0x3478f0
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x1b2a5d(%rip), %xmm0   # 0x347900
leaq 0x20bdf5(%rip), %rsi    # 0x3a0c9f
movq %r14, %rdi
movq %r13, %rdx
movb $0x1, %al
callq 0x17ab0
movq 0x10(%rsp), %rdi
callq 0x11c9e3
movq %rbp, %r8
movb 0x6(%rsp), %bpl
movq 0x8(%rsp), %r11
movb 0x5(%rsp), %dil
testq %r13, %r13
je 0x19507e
testq %rbx, %rbx
je 0x1952b9
movl 0x18(%rbx), %eax
cmpl $0x1, %eax
je 0x194f15
testl %eax, %eax
jne 0x194f3e
movq (%rbx), %rax
testq %rax, %rax
je 0x1952be
movq 0x10(%rax), %rcx
addq %r13, %rcx
movq 0x8(%rax), %rsi
cmpq %rsi, %rcx
jae 0x194f72
movq (%rax), %rax
jmp 0x194fc1
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x1952c3
movq 0x10(%rax), %rcx
addq %r13, %rcx
movq 0x8(%rax), %rsi
cmpq %rsi, %rcx
jae 0x194fcf
movq (%rax), %rax
jmp 0x19501f
movq 0x10(%rbx), %rax
testq %rax, %rax
je 0x1952c8
movq 0x90(%rbx), %rcx
imulq %r13, %rcx
movq 0x10(%rax), %rdx
addq %rcx, %rdx
movq 0x8(%rax), %rsi
cmpq %rsi, %rdx
jae 0x195029
movq (%rax), %rax
jmp 0x195075
addq %r13, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0x5(%rsp)
movq (%rax), %rdi
shlq $0x4, %rsi
leaq 0x20ac50(%rip), %rdx    # 0x39fbdc
movl $0x5f4, %ecx            # imm = 0x5F4
movq %r12, 0x8(%rsp)
movb %bpl, 0x6(%rsp)
movq %r8, %rbp
movq %r11, %r12
callq 0x104461
movb 0x5(%rsp), %dil
movq %r12, %r11
movq %rbp, %r8
movb 0x6(%rsp), %bpl
movq 0x8(%rsp), %r12
movq (%rbx), %rcx
movq %rax, (%rcx)
testq %rax, %rax
jne 0x19507e
callq 0x5d482
addq %r13, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0x5(%rsp)
movq (%rax), %rdi
shlq $0x3, %rsi
leaq 0x20abf3(%rip), %rdx    # 0x39fbdc
movl $0x5fa, %ecx            # imm = 0x5FA
movq %r12, 0x8(%rsp)
movb %bpl, 0x6(%rsp)
movq %r8, %rbp
movq %r11, %r12
callq 0x104461
movb 0x5(%rsp), %dil
movq %r12, %r11
movq %rbp, %r8
movb 0x6(%rsp), %bpl
movq 0x8(%rsp), %r12
movq 0x8(%rbx), %rcx
movq %rax, (%rcx)
testq %rax, %rax
jne 0x19507e
callq 0x5d410
addq %rcx, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0x5(%rsp)
movq (%rax), %rdi
leaq 0x20ab9d(%rip), %rdx    # 0x39fbdc
movl $0x5ff, %ecx            # imm = 0x5FF
movq %r12, 0x8(%rsp)
movb %bpl, 0x6(%rsp)
movq %r8, %rbp
movq %r11, %r12
callq 0x104461
movb 0x5(%rsp), %dil
movq %r12, %r11
movq %rbp, %r8
movb 0x6(%rsp), %bpl
movq 0x8(%rsp), %r12
movq 0x10(%rbx), %rcx
movq %rax, (%rcx)
testq %rax, %rax
je 0x1952cd
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 0x196c8b
addq $0x20, %rsp
movq %rbx, %rdi
callq 0x1952d2
movq %rax, %r15
testb %bpl, %bpl
je 0x195125
leaq 0x20bc2c(%rip), %rsi    # 0x3a0cea
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x17ab0
leaq 0x20b560(%rip), %rsi    # 0x3a0632
movq 0x10(%rsp), %rdi
movq %r14, %rdx
callq 0x11ca64
testq %r15, %r15
je 0x195259
movq 0x10(%rsp), %r12
movq %r12, %rdi
callq 0x11c9e3
movq %rbx, %rdi
callq 0x197996
leaq 0x20bc01(%rip), %rsi    # 0x3a0d05
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x17ab0
leaq 0x20b51a(%rip), %rsi    # 0x3a0632
movq %r12, %rdi
movq %r14, %rdx
callq 0x11ca64
jmp 0x195136
testq %r15, %r15
je 0x195259
movq %rbx, %rdi
callq 0x197996
cmpb $0x0, 0x7(%rsp)
je 0x195259
movq %rbx, %rdi
callq 0x1952d2
testq %rax, %rax
je 0x195259
movq %rax, %r12
leaq 0x18(%rsp), %rbp
leaq 0x20bc64(%rip), %r15    # 0x3a0dc5
xorl %r13d, %r13d
testq %r13, %r13
je 0x1951e7
leaq -0x1(%r13), %rdx
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x197a2c
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x197a2c
movl 0x2c(%rsp), %eax
cmpl %eax, 0x1c(%rsp)
jb 0x1951e7
ja 0x195281
movl 0x28(%rsp), %eax
cmpl %eax, 0x18(%rsp)
jb 0x1951e7
ja 0x195281
movl 0x20(%rsp), %eax
movl 0x24(%rsp), %edx
movl 0x30(%rsp), %ecx
cmpb $0x1, 0xb0(%rbx)
jne 0x1951d1
addl %eax, %edx
movl 0xb8(%rbx), %edi
subl %edi, %edx
movl %ecx, %esi
subl %edi, %esi
addl 0x34(%rsp), %esi
jmp 0x1951d5
movl 0x34(%rsp), %esi
cmpl %esi, %edx
jb 0x1951e7
ja 0x195281
cmpl %ecx, %eax
jae 0x195281
movl $0xb, %esi
movl $0x1, %edx
leaq 0x20bbc1(%rip), %rdi    # 0x3a0db9
movq %r14, %rcx
callq 0x17fa0
movq %rbp, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x197a2c
movl 0x20(%rsp), %r8d
movl 0x24(%rsp), %r9d
cmpb $0x1, 0xb0(%rbx)
jne 0x19522b
addq %r8, %r9
subq 0xb8(%rbx), %r9
movl 0x18(%rsp), %ecx
movl 0x1c(%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 0x195164
movq 0x10(%rsp), %rdi
addq $0x38, %rsp
testq %rdi, %rdi
je 0x195276
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x11d054
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x323cf8(%rip), %rax    # 0x4b8f80
movq (%rax), %rdi
leaq 0x1afd81(%rip), %rsi    # 0x345013
leaq 0x20babb(%rip), %rdx    # 0x3a0d54
leaq 0x20baf8(%rip), %rcx    # 0x3a0d98
leaq 0x20a935(%rip), %r8     # 0x39fbdc
movl $0x7a1, %r9d            # imm = 0x7A1
xorl %eax, %eax
callq 0x17ab0
callq 0x173b0
callq 0x5d566
callq 0x5d4bb
callq 0x5d449
callq 0x5d52d
callq 0x5d4f4