// File: /workspace/github_c_makefile_star2_O2/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 $0x58, %rsp
movq %r8, %r13
movq %rcx, %r12
movq %rdx, %r15
movq %rsi, %r10
movq %rdi, %rbx
movq 0xa8(%rsp), %r14
movb 0xa0(%rsp), %bpl
movb 0x98(%rsp), %al
movb %al, 0x1f(%rsp)
movb 0x90(%rsp), %dil
testb %bpl, %bpl
je 0x13ea86
movb %dil, 0x1e(%rsp)
movq %r9, 0x20(%rsp)
movq %r10, 0x28(%rsp)
callq 0xaf478
movq %rax, 0x30(%rsp)
testq %r13, %r13
je 0x13ea91
movl 0x18(%rbx), %eax
testl %eax, %eax
je 0x13eaa8
cmpl $0x1, %eax
jne 0x13eaad
pushq $0x8
jmp 0x13eaaa
movq $0x0, 0x30(%rsp)
jmp 0x13eb0e
leaq 0x202523(%rip), %rdi    # 0x340fbb
pushq $0x1d
popq %rsi
pushq $0x1
popq %rdx
movq %r14, %rcx
callq 0x17f00
jmp 0x13eaf5
pushq $0x10
popq %rax
jmp 0x13eab4
movq 0x90(%rbx), %rax
imulq %r13, %rax
movq %rax, %xmm1
punpckldq 0x1a8e1b(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1a8e23(%rip), %xmm1   # 0x2e78f0
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x1a8e1f(%rip), %xmm0   # 0x2e7900
leaq 0x2024a6(%rip), %rsi    # 0x340f8e
movq %r14, %rdi
movq %r13, %rdx
movb $0x1, %al
callq 0x17a50
movq 0x30(%rsp), %rdi
callq 0xaf4d6
movq 0x28(%rsp), %r10
movq 0x20(%rsp), %r9
movb 0x1e(%rsp), %dil
testq %r13, %r13
je 0x13ed03
testq %rbx, %rbx
je 0x13ef38
movl 0x18(%rbx), %eax
cmpl $0x1, %eax
je 0x13eb50
testl %eax, %eax
jne 0x13eb79
movq (%rbx), %rax
testq %rax, %rax
je 0x13ef66
movq 0x10(%rax), %rcx
addq %r13, %rcx
movq 0x8(%rax), %rsi
cmpq %rsi, %rcx
jae 0x13ebad
movq (%rax), %rax
jmp 0x13ebf6
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x13ef94
movq 0x10(%rax), %rcx
addq %r13, %rcx
movq 0x8(%rax), %rsi
cmpq %rsi, %rcx
jae 0x13ec30
movq (%rax), %rax
jmp 0x13ec7a
movq 0x10(%rbx), %rax
testq %rax, %rax
je 0x13efc5
movq 0x90(%rbx), %rcx
imulq %r13, %rcx
movq 0x10(%rax), %rdx
addq %rcx, %rdx
movq 0x8(%rax), %rsi
cmpq %rsi, %rdx
jae 0x13ecb4
movq (%rax), %rax
jmp 0x13ecfa
addq %r13, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0x1e(%rsp)
movq (%rax), %rdi
shlq $0x4, %rsi
leaq 0x2012f5(%rip), %rdx    # 0x33febc
movl $0x5f4, %ecx            # imm = 0x5F4
movq %r12, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %r9, %r12
callq 0x93472
movb 0x1e(%rsp), %dil
movq %r12, %r9
movq 0x28(%rsp), %r10
movq 0x20(%rsp), %r12
movq (%rbx), %rcx
movq %rax, (%rcx)
testq %rax, %rax
jne 0x13ed03
movq 0x2f9362(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a6403(%rip), %rsi    # 0x2e5013
leaq 0x20207f(%rip), %rdx    # 0x340c96
leaq 0x2023ee(%rip), %rcx    # 0x34100c
leaq 0x201297(%rip), %r8     # 0x33febc
movl $0x5f4, %r9d            # imm = 0x5F4
jmp 0x13ef2c
addq %r13, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0x1e(%rsp)
movq (%rax), %rdi
shlq $0x3, %rsi
leaq 0x201272(%rip), %rdx    # 0x33febc
movl $0x5fa, %ecx            # imm = 0x5FA
movq %r12, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %r9, %r12
callq 0x93472
movb 0x1e(%rsp), %dil
movq %r12, %r9
movq 0x28(%rsp), %r10
movq 0x20(%rsp), %r12
movq 0x8(%rbx), %rcx
movq %rax, (%rcx)
testq %rax, %rax
jne 0x13ed03
movq 0x2f92de(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a637f(%rip), %rsi    # 0x2e5013
leaq 0x202096(%rip), %rdx    # 0x340d31
leaq 0x20236a(%rip), %rcx    # 0x34100c
leaq 0x201213(%rip), %r8     # 0x33febc
movl $0x5fa, %r9d            # imm = 0x5FA
jmp 0x13ef2c
addq %rcx, %rsi
movq %rsi, 0x8(%rax)
movb %dil, 0x1e(%rsp)
movq (%rax), %rdi
leaq 0x2011f2(%rip), %rdx    # 0x33febc
movl $0x5ff, %ecx            # imm = 0x5FF
movq %r12, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %r9, %r12
callq 0x93472
movb 0x1e(%rsp), %dil
movq %r12, %r9
movq 0x28(%rsp), %r10
movq 0x20(%rsp), %r12
movq 0x10(%rbx), %rcx
movq %rax, (%rcx)
testq %rax, %rax
je 0x13eff6
xorl %edx, %edx
testq %r13, %r13
setne %dl
movzbl %dil, %eax
orq $-0x1, (%rsp)
movl %eax, 0x10(%rsp)
movq %r9, 0x8(%rsp)
movq %rbx, %rdi
xorl %esi, %esi
movq %r10, %rcx
movq %r15, %r8
movq %r12, %r9
callq 0x140c11
movq %rbx, %rdi
callq 0x13f027
movq %rax, %r15
testb %bpl, %bpl
je 0x13edae
leaq 0x202292(%rip), %rsi    # 0x340fd9
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x17a50
leaq 0x201bb7(%rip), %rsi    # 0x340912
movq 0x30(%rsp), %rdi
movq %r14, %rdx
callq 0xaf5b6
testq %r15, %r15
je 0x13eed8
movq 0x30(%rsp), %r12
movq %r12, %rdi
callq 0xaf4d6
movq %rbx, %rdi
callq 0x1417fd
leaq 0x202267(%rip), %rsi    # 0x340ff4
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x17a50
leaq 0x201b71(%rip), %rsi    # 0x340912
movq %r12, %rdi
movq %r14, %rdx
callq 0xaf5b6
jmp 0x13edbf
testq %r15, %r15
je 0x13eed8
movq %rbx, %rdi
callq 0x1417fd
cmpb $0x0, 0x1f(%rsp)
je 0x13eed8
movq %rbx, %rdi
callq 0x13f027
movq %rax, %r12
leaq 0x38(%rsp), %r13
pushq $0xa
popq %r15
xorl %ebp, %ebp
cmpq %rbp, %r12
je 0x13eed8
testq %rbp, %rbp
je 0x13ee6c
leaq -0x1(%rbp), %rdx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x14191c
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x14191c
movl 0x4c(%rsp), %eax
cmpl %eax, 0x3c(%rsp)
jb 0x13ee6c
ja 0x13ef00
movl 0x48(%rsp), %eax
cmpl %eax, 0x38(%rsp)
jb 0x13ee6c
ja 0x13ef00
movl 0x40(%rsp), %eax
movl 0x44(%rsp), %edx
movl 0x50(%rsp), %ecx
cmpb $0x1, 0xb0(%rbx)
jne 0x13ee56
addl %eax, %edx
movl 0xb8(%rbx), %edi
subl %edi, %edx
movl %ecx, %esi
subl %edi, %esi
addl 0x54(%rsp), %esi
jmp 0x13ee5a
movl 0x54(%rsp), %esi
cmpl %esi, %edx
jb 0x13ee6c
ja 0x13ef00
cmpl %ecx, %eax
jae 0x13ef00
leaq 0x202235(%rip), %rdi    # 0x3410a8
pushq $0xb
popq %rsi
pushq $0x1
popq %rdx
movq %r14, %rcx
callq 0x17f00
movq %r13, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x14191c
movl 0x40(%rsp), %r8d
movl 0x44(%rsp), %r9d
cmpb $0x1, 0xb0(%rbx)
jne 0x13eeac
addq %r8, %r9
subq 0xb8(%rbx), %r9
movl 0x38(%rsp), %ecx
movl 0x3c(%rsp), %edx
movq %r14, %rdi
leaq 0x2021f6(%rip), %rsi    # 0x3410b4
xorl %eax, %eax
callq 0x17a50
movl %r15d, %edi
movq %r14, %rsi
callq 0x17930
incq %rbp
jmp 0x13ede0
movq 0x30(%rsp), %rdi
addq $0x58, %rsp
testq %rdi, %rdi
je 0x13eef5
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xafc5b
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x2f9061(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a6102(%rip), %rsi    # 0x2e5013
leaq 0x20212b(%rip), %rdx    # 0x341043
leaq 0x202168(%rip), %rcx    # 0x341087
leaq 0x200f96(%rip), %r8     # 0x33febc
movl $0x7a1, %r9d            # imm = 0x7A1
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x2f9029(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a60ca(%rip), %rsi    # 0x2e5013
leaq 0x2016f9(%rip), %rdx    # 0x340649
leaq 0x2020b5(%rip), %rcx    # 0x34100c
leaq 0x200f5e(%rip), %r8     # 0x33febc
movl $0x5ef, %r9d            # imm = 0x5EF
jmp 0x13ef2c
movq 0x2f8ffb(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a609c(%rip), %rsi    # 0x2e5013
leaq 0x202836(%rip), %rdx    # 0x3417b4
leaq 0x202087(%rip), %rcx    # 0x34100c
leaq 0x200f30(%rip), %r8     # 0x33febc
movl $0x5f2, %r9d            # imm = 0x5F2
jmp 0x13ef2c
movq 0x2f8fcd(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a606e(%rip), %rsi    # 0x2e5013
leaq 0x202c87(%rip), %rdx    # 0x341c33
leaq 0x202059(%rip), %rcx    # 0x34100c
leaq 0x200f02(%rip), %r8     # 0x33febc
movl $0x5f9, %r9d            # imm = 0x5F9
jmp 0x13ef2c
movq 0x2f8f9c(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a603d(%rip), %rsi    # 0x2e5013
leaq 0x200ff6(%rip), %rdx    # 0x33ffd3
leaq 0x202028(%rip), %rcx    # 0x34100c
leaq 0x200ed1(%rip), %r8     # 0x33febc
movl $0x5fd, %r9d            # imm = 0x5FD
jmp 0x13ef2c
movq 0x2f8f6b(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1a600c(%rip), %rsi    # 0x2e5013
leaq 0x201e04(%rip), %rdx    # 0x340e12
leaq 0x201ff7(%rip), %rcx    # 0x34100c
leaq 0x200ea0(%rip), %r8     # 0x33febc
movl $0x5ff, %r9d            # imm = 0x5FF
jmp 0x13ef2c