// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/rdj-spmfind.c
// Function: gt_spmfind_eqlen_process
int gt_spmfind_eqlen_process(void *data,
    const GtUword *seqnum_relpos_bucket, const GtSeqnumrelpos *snrp,
    const uint16_t *lcptab_bucket, GtUword nonspecials,
    GtUword spaceforbucketprocessing, GtError *err)
{
  GtBUstate_spmeq *state = data;
#ifdef GT_READJOINER_DEBUG
  unsigned int nof_w_parts = 0;
#endif
  gt_assert(state != NULL);
  gt_assert(snrp != NULL);
  gt_assert(lcptab_bucket != NULL);
  state->spaceforbucketprocessing = spaceforbucketprocessing;
  state->w_offset = 0;
  do
  {
    state->w_nextfree = 0;
    state->w_overflow = false;
    state->w_count = 0;
    if (gt_esa_bottomup_RAM_spmeq(seqnum_relpos_bucket, lcptab_bucket,
          nonspecials, (GtArrayGtBUItvinfo_spmeq *) state->stack, state,
          snrp, err)
        != 0)
    {
      return -1;
    }
#ifdef GT_READJOINER_DEBUG
    if (state->w_overflow)
      nof_w_parts++;
#endif
    state->w_offset += state->w_maxsize;
  } while (state->w_overflow);
#ifdef GT_READJOINER_DEBUG
  gt_log_log("%s: bucket divided in %u parts", __func__, nof_w_parts);
#endif
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %r8, 0x28(%rsp)
movq %rcx, 0x50(%rsp)
movq %rsi, 0x58(%rsp)
testq %rdi, %rdi
je 0x1cbbbf
movq %rdx, %rbx
testq %rdx, %rdx
je 0x1cbbc4
cmpq $0x0, 0x50(%rsp)
je 0x1cbbc9
movq %rdi, %r10
movq %r9, 0xf0(%rdi)
movq $0x0, 0x90(%rdi)
movq 0x28(%rsp), %rax
decq %rax
movq %rax, 0x40(%rsp)
xorl %edi, %edi
movq %r10, 0x18(%rsp)
movq %rbx, 0x30(%rsp)
movq %rdi, 0x80(%r10)
movb $0x0, 0xa8(%r10)
movq %rdi, 0x98(%r10)
movq (%r10), %r8
movq 0x10(%r8), %rsi
cmpq 0x8(%r8), %rsi
movq %r8, 0x10(%rsp)
jae 0x1cb6cb
movq (%r8), %rax
jmp 0x1cb6f1
jne 0x1cbbb5
movq (%r8), %rdi
leaq 0x20(%rsi), %rdx
callq 0x1cc5c1
movq 0x10(%rsp), %r8
movq %rax, (%r8)
addq $0x20, 0x8(%r8)
movq 0x18(%rsp), %r10
xorl %edi, %edi
testq %rax, %rax
je 0x1cbba6
movq 0x10(%r8), %r12
movq %r12, %rcx
shlq $0x5, %rcx
incq %r12
xorps %xmm0, %xmm0
movups %xmm0, (%rax,%rcx)
movq %r12, 0x10(%r8)
movq $-0x1, 0x10(%rax,%rcx)
cmpq $0x0, 0x28(%rsp)
je 0x1cbbab
cmpq $0x0, 0x40(%rsp)
je 0x1cba6c
movb $0x1, %bl
xorl %r12d, %r12d
movq 0x10(%r8), %r13
testq %r13, %r13
je 0x1cbb7e
movq 0x50(%rsp), %rax
movzwl 0x2(%rax,%r12,2), %ebp
movq 0x58(%rsp), %rax
movq (%rax,%r12,8), %r14
movq (%r8), %rcx
shlq $0x5, %r13
movq -0x20(%rcx,%r13), %rax
cmpq %rbp, %rax
movq %r14, 0x60(%rsp)
jb 0x1cb852
movq %rcx, 0x20(%rsp)
testq %rax, %rax
sete %cl
andb %bl, %cl
movb %cl, 0xf(%rsp)
movzbl %bl, %ebx
cmovnel %edi, %ebx
movq %rax, 0x38(%rsp)
movq 0x30(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x1e2c2e
movq %rax, 0x48(%rsp)
movq %r15, %rdi
movq 0x38(%rsp), %r15
movq %r14, %rsi
callq 0x1e2c38
movq 0x18(%rsp), %r10
cmpq %r15, 0x20(%r10)
jbe 0x1cb7cd
movq $0x0, 0x80(%r10)
jmp 0x1cb84b
movq 0x20(%rsp), %rcx
addq %r13, %rcx
addq $-0x8, %rcx
cmpb $0x0, 0xf(%rsp)
je 0x1cb7f3
testq %rcx, %rcx
je 0x1cbb97
movq 0x80(%r10), %rdx
movq %rdx, (%rcx)
testq %rax, %rax
jne 0x1cb816
movq 0x48(%rsp), %rdi
movq %rax, %r13
movq %r10, %rsi
movq %rcx, %r14
callq 0x1cc252
movq %r13, %rax
movq %r14, %rcx
movq 0x18(%rsp), %r10
movq 0x48(%r10), %rdx
cmpq %r15, %rdx
je 0x1cbb83
addq %r15, %rax
cmpq %rdx, %rax
jne 0x1cb84b
leaq 0x1(%rdx), %rsi
movq 0x48(%rsp), %rdi
imulq %rdi, %rsi
movq (%rcx), %rcx
movq %r15, %r8
movq %r10, %r9
callq 0x1cc408
movq 0x18(%rsp), %r10
xorl %edi, %edi
movq 0x10(%rsp), %r8
movq (%r8), %rax
movq 0x10(%r8), %rsi
movq %rsi, %rcx
shlq $0x5, %rcx
cmpq %rbp, -0x20(%rax,%rcx)
jbe 0x1cb8be
addq $0x1f, %rsi
addq %rax, %rcx
addq $-0x20, %rcx
movq %rsi, %rdx
movq %r12, 0x10(%rcx)
movq -0x20(%rcx), %r9
cmpq %rbp, %r9
jb 0x1cb8cd
movzbl %bl, %esi
testb $0x1, %sil
movl %esi, %ebx
cmovnel %edi, %ebx
testq %r9, %r9
cmovnel %esi, %ebx
cmpq %r9, 0x20(%r10)
jbe 0x1cb8a5
movq $0x0, 0x80(%r10)
decq %rdx
addq $-0x20, %rcx
cmpq %rbp, %r9
ja 0x1cb875
addq $-0x1f, %rdx
movq %rdx, 0x10(%r8)
jmp 0x1cba5a
jae 0x1cba5a
movq 0x8(%r8), %r9
jmp 0x1cb95a
leaq -0x20(%rdx), %rsi
movq %rsi, 0x10(%r8)
movq 0x8(%r8), %r9
testq %rcx, %rcx
je 0x1cb95a
movq 0x8(%rcx), %r15
cmpq %r9, %rsi
jb 0x1cb920
movq %rdx, %rcx
subq %r9, %rcx
cmpq $0x20, %rcx
jne 0x1cbb9c
movq %rax, %rdi
callq 0x1cc5c1
movq 0x10(%rsp), %r8
movq %rax, (%r8)
addq $0x20, 0x8(%r8)
testq %rax, %rax
je 0x1cbba1
movq 0x10(%r8), %rsi
movq 0x18(%rsp), %r10
xorl %edi, %edi
movq %rsi, %rcx
shlq $0x5, %rcx
movq %rbp, (%rax,%rcx)
movq %r15, 0x8(%rax,%rcx)
incq %rsi
movq %rsi, 0x10(%r8)
movq $-0x1, 0x10(%rax,%rcx)
cmpq %rbp, 0x20(%r10)
jbe 0x1cba5a
movq $0x0, 0x80(%r10)
jmp 0x1cba5a
cmpq %r9, %rsi
jb 0x1cb98e
jne 0x1cbb92
leaq 0x20(%r9), %rdx
movq %rax, %rdi
movq %r9, %rsi
callq 0x1cc5c1
movq 0x10(%rsp), %r8
movq %rax, (%r8)
addq $0x20, 0x8(%r8)
testq %rax, %rax
je 0x1cbb8d
movq 0x10(%r8), %rsi
movq %rax, 0x38(%rsp)
movq %rsi, %r13
shlq $0x5, %r13
movq %rbp, (%rax,%r13)
movq %r12, 0x8(%rax,%r13)
incq %rsi
movq %rsi, 0x10(%r8)
movq $-0x1, 0x10(%rax,%r13)
movq 0x30(%rsp), %r15
movq %r15, %rdi
movq 0x60(%rsp), %r14
movq %r14, %rsi
callq 0x1e2c2e
movq %rax, 0x20(%rsp)
movq %r15, %rdi
movq %r14, %rsi
callq 0x1e2c38
movq 0x18(%rsp), %r10
cmpq %rbp, 0x20(%r10)
jbe 0x1cb9f0
movq $0x0, 0x80(%r10)
jmp 0x1cba53
movq %rax, %r15
movq 0x38(%rsp), %r14
addq %r13, %r14
movq 0x80(%r10), %rax
movq %rax, 0x18(%r14)
testq %r15, %r15
jne 0x1cba1d
movq 0x20(%rsp), %rdi
movq %r10, %rsi
callq 0x1cc252
movq 0x18(%rsp), %r10
movq 0x48(%r10), %rdx
cmpq %rbp, %rdx
je 0x1cbb88
addq %rbp, %r15
cmpq %rdx, %r15
jne 0x1cba53
leaq 0x1(%rdx), %rsi
movq 0x20(%rsp), %rdi
imulq %rdi, %rsi
movq 0x18(%r14), %rcx
movq %rbp, %r8
movq %r10, %r9
callq 0x1cc408
movq 0x18(%rsp), %r10
xorl %edi, %edi
movq 0x10(%rsp), %r8
incq %r12
cmpq 0x40(%rsp), %r12
jne 0x1cb739
movq 0x10(%r8), %r12
testq %r12, %r12
je 0x1cbbb0
movq (%r8), %rbp
shlq $0x5, %r12
movq -0x20(%rbp,%r12), %rbx
testq %rbx, %rbx
je 0x1cbb49
movq 0x28(%rsp), %rax
movq 0x58(%rsp), %rcx
movq -0x8(%rcx,%rax,8), %r15
movq 0x30(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0x1e2c2e
movq %rax, %r14
movq %r13, %rdi
movq %r15, %rsi
callq 0x1e2c38
movq 0x18(%rsp), %r10
cmpq %rbx, 0x20(%r10)
jbe 0x1cbad4
movq $0x0, 0x80(%r10)
movq 0x10(%rsp), %r8
jmp 0x1cbb32
movq %rax, %r15
testq %rax, %rax
movq 0x10(%rsp), %r8
jne 0x1cbaf6
movq %r14, %rdi
movq %r10, %rsi
callq 0x1cc252
movq 0x10(%rsp), %r8
movq 0x18(%rsp), %r10
movq 0x48(%r10), %rdx
cmpq %rbx, %rdx
je 0x1cbbba
addq %rbx, %r15
cmpq %rdx, %r15
jne 0x1cbb32
addq %r12, %rbp
leaq 0x1(%rdx), %rsi
imulq %r14, %rsi
movq -0x8(%rbp), %rcx
movq %r14, %rdi
movq %rbx, %r8
movq %r10, %r9
callq 0x1cc408
movq 0x10(%rsp), %r8
movq 0x18(%rsp), %r10
movq (%r8), %rax
movq 0x10(%r8), %rcx
shlq $0x5, %rcx
movq 0x40(%rsp), %rdx
movq %rdx, -0x10(%rax,%rcx)
xorl %edi, %edi
movq $0x0, 0x10(%r8)
movq 0xa0(%r10), %rax
addq %rax, 0x90(%r10)
cmpb $0x0, 0xa8(%r10)
jne 0x1cb69e
xorl %eax, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x6b1ca
callq 0x6b03b
callq 0x6b191
callq 0x6b158
callq 0x6b11f
callq 0x6b074
callq 0x6b0ad
callq 0x6b0e6
callq 0x6b2ae
callq 0x6b275
callq 0x6b23c
callq 0x6b002
callq 0x6b203
callq 0x6b359
callq 0x6b320
callq 0x6b2e7