// File: /workspace/github_c_makefile_star2_O1/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, 0x38(%rsp)
movq %rcx, 0x50(%rsp)
movq %rsi, 0x58(%rsp)
testq %rdi, %rdi
je 0x1d4e1d
movq %rdx, %rbx
testq %rdx, %rdx
je 0x1d4e22
cmpq $0x0, 0x50(%rsp)
je 0x1d4e27
movq %rdi, %r14
movq %r9, 0xf0(%rdi)
movq $0x0, 0x90(%rdi)
movq 0x38(%rsp), %rax
decq %rax
movq %rax, 0x60(%rsp)
xorl %r8d, %r8d
movq %rdi, 0x28(%rsp)
movq %rbx, 0x30(%rsp)
movq %r8, 0x80(%r14)
movb $0x0, 0xa8(%r14)
movq %r8, 0x98(%r14)
movq (%r14), %r9
movq 0x8(%r9), %rsi
cmpq %rsi, 0x10(%r9)
movq %r9, 0x10(%rsp)
jb 0x1d4943
jne 0x1d4e13
movq (%r9), %rdi
leaq 0x20(%rsi), %rdx
callq 0x1d5848
movq 0x10(%rsp), %r9
movq %rax, (%r9)
addq $0x20, 0x8(%r9)
xorl %r8d, %r8d
movq (%r9), %rax
testq %rax, %rax
je 0x1d4e04
movq 0x10(%r9), %rcx
movq %rcx, %rdx
shlq $0x5, %rdx
incq %rcx
xorps %xmm0, %xmm0
movups %xmm0, (%rax,%rdx)
movq %rcx, 0x10(%r9)
movq $-0x1, 0x10(%rax,%rdx)
cmpq $0x0, 0x38(%rsp)
je 0x1d4e09
cmpq $0x0, 0x60(%rsp)
je 0x1d4ccb
movb $0x1, %bl
xorl %r12d, %r12d
xorl %r15d, %r15d
movq 0x10(%r9), %r13
testq %r13, %r13
je 0x1d4ddc
movq 0x50(%rsp), %rax
movzwl 0x2(%rax,%r12,2), %ebp
movq 0x58(%rsp), %rax
movq (%rax,%r12,8), %r10
movq (%r9), %rcx
shlq $0x5, %r13
movq -0x20(%rcx,%r13), %rax
cmpq %rbp, %rax
jb 0x1d4ab2
movq %rcx, 0x40(%rsp)
testq %rax, %rax
sete %cl
andb %bl, %cl
movb %cl, 0xf(%rsp)
movzbl %bl, %ebx
cmovnel %r8d, %ebx
movq 0x30(%rsp), %rdi
movq %r10, %rsi
movq %r10, %r14
movq %rax, 0x20(%rsp)
callq 0x1ec4be
movq %rax, 0x48(%rsp)
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rax
movq %r14, 0x18(%rsp)
movq %r14, %rsi
movq %rax, %r14
callq 0x1ec4c8
movq 0x20(%rsp), %r8
cmpq %r8, 0x20(%r14)
jbe 0x1d4a2b
movq $0x0, 0x80(%r14)
jmp 0x1d4aa5
movq 0x40(%rsp), %rcx
addq %r13, %rcx
addq $-0x8, %rcx
cmpb $0x0, 0xf(%rsp)
je 0x1d4a51
testq %rcx, %rcx
je 0x1d4df5
movq 0x80(%r14), %rdx
movq %rdx, (%rcx)
testq %rax, %rax
jne 0x1d4a78
movq 0x48(%rsp), %rdi
movq %rax, 0x40(%rsp)
movq %r14, %rsi
movq %rcx, %r13
callq 0x1d54e9
movq 0x40(%rsp), %rax
movq %r13, %rcx
movq 0x20(%rsp), %r8
movq 0x48(%r14), %rdx
cmpq %r8, %rdx
je 0x1d4de6
addq %r8, %rax
cmpq %rdx, %rax
jne 0x1d4aa5
leaq 0x1(%rdx), %rsi
movq 0x48(%rsp), %rdi
imulq %rdi, %rsi
movq (%rcx), %rcx
movq %r14, %r9
callq 0x1d568f
xorl %r8d, %r8d
movq 0x10(%rsp), %r9
movq 0x18(%rsp), %r10
testq %r15, %r15
jne 0x1d4dd7
movq (%r9), %rdi
movq 0x10(%r9), %rax
movq %rax, %rcx
shlq $0x5, %rcx
movq -0x20(%rdi,%rcx), %rdx
cmpq %rbp, %rdx
jbe 0x1d4b2d
addq %rdi, %rcx
addq $-0x20, %rcx
movq %r12, 0x10(%rcx)
movq -0x20(%rcx), %rdx
cmpq %rbp, %rdx
jae 0x1d4aec
movq %rcx, %r15
jmp 0x1d4b17
movzbl %bl, %esi
testb $0x1, %sil
movl %esi, %ebx
cmovnel %r8d, %ebx
testq %rdx, %rdx
cmovnel %esi, %ebx
movq 0x20(%r14), %rdx
cmpq -0x20(%rcx), %rdx
jbe 0x1d4b14
movq $0x0, 0x80(%r14)
xorl %r15d, %r15d
movq -0x20(%rcx), %rdx
addq $-0x20, %rcx
decq %rax
cmpq %rbp, %rdx
ja 0x1d4ada
movq %rax, 0x10(%r9)
jmp 0x1d4b30
xorl %r15d, %r15d
cmpq %rbp, %rdx
jae 0x1d4cbb
testq %r15, %r15
je 0x1d4bb8
movq 0x8(%r15), %r14
movq 0x8(%r9), %rsi
cmpq %rsi, %rax
jb 0x1d4b6a
jne 0x1d4df0
leaq 0x20(%rsi), %rdx
callq 0x1d5848
movq 0x10(%rsp), %r9
movq %rax, (%r9)
addq $0x20, 0x8(%r9)
xorl %r8d, %r8d
movq (%r9), %rax
testq %rax, %rax
je 0x1d4de1
movq 0x10(%r9), %rcx
movq %rcx, %rdx
shlq $0x5, %rdx
movq %rbp, (%rax,%rdx)
movq %r14, 0x8(%rax,%rdx)
incq %rcx
movq %rcx, 0x10(%r9)
movq $-0x1, 0x10(%rax,%rdx)
movq 0x28(%rsp), %r14
cmpq %rbp, 0x20(%r14)
jbe 0x1d4bb0
movq $0x0, 0x80(%r14)
xorl %r15d, %r15d
jmp 0x1d4cbb
movq 0x8(%r9), %rsi
cmpq %rsi, %rax
jb 0x1d4be3
jne 0x1d4dfa
movq %r10, %r14
leaq 0x20(%rsi), %rdx
callq 0x1d5848
movq 0x10(%rsp), %r9
movq %rax, (%r9)
addq $0x20, 0x8(%r9)
movq %r14, %r10
movq (%r9), %r13
testq %r13, %r13
je 0x1d4deb
movq 0x10(%r9), %rax
movq %rax, %r14
shlq $0x5, %r14
movq %rbp, (%r13,%r14)
movq %r12, 0x8(%r13,%r14)
incq %rax
movq %rax, 0x10(%r9)
movq $-0x1, 0x10(%r13,%r14)
movq 0x30(%rsp), %r15
movq %r15, %rdi
movq %r10, %rsi
movq %r10, 0x18(%rsp)
callq 0x1ec4be
movq %rax, 0x20(%rsp)
movq %r15, %rdi
movq 0x18(%rsp), %rsi
callq 0x1ec4c8
movq 0x28(%rsp), %rcx
cmpq %rbp, 0x20(%rcx)
jbe 0x1d4c59
movq $0x0, 0x80(%rcx)
xorl %r15d, %r15d
movq %rcx, %r14
jmp 0x1d4cb3
movq %rax, %r15
addq %r14, %r13
movq 0x80(%rcx), %rax
movq %rax, 0x18(%r13)
testq %r15, %r15
movq %rcx, %r14
jne 0x1d4c7f
movq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x1d54e9
movq 0x48(%r14), %rdx
cmpq %rbp, %rdx
je 0x1d4dff
addq %rbp, %r15
cmpq %rdx, %r15
jne 0x1d4cb0
leaq 0x1(%rdx), %rsi
movq 0x20(%rsp), %rdi
imulq %rdi, %rsi
movq 0x18(%r13), %rcx
movq %rbp, %r8
movq %r14, %r9
callq 0x1d568f
xorl %r15d, %r15d
xorl %r8d, %r8d
movq 0x10(%rsp), %r9
incq %r12
cmpq 0x60(%rsp), %r12
jne 0x1d4991
jmp 0x1d4cce
xorl %r12d, %r12d
movq 0x10(%r9), %rbx
testq %rbx, %rbx
je 0x1d4e0e
movq (%r9), %r13
shlq $0x5, %rbx
movq -0x20(%r13,%rbx), %rbp
testq %rbp, %rbp
je 0x1d4da2
movq 0x38(%rsp), %rax
movq 0x58(%rsp), %rcx
movq -0x8(%rcx,%rax,8), %r15
movq 0x30(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x1ec4be
movq %rax, 0x18(%rsp)
movq %r14, %rdi
movq 0x28(%rsp), %r14
movq %r15, %rsi
callq 0x1ec4c8
cmpq %rbp, 0x20(%r14)
jbe 0x1d4d37
movq $0x0, 0x80(%r14)
jmp 0x1d4d8a
movq %rax, %r15
testq %rax, %rax
movq 0x10(%rsp), %r9
jne 0x1d4d56
movq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x1d54e9
movq 0x10(%rsp), %r9
movq 0x48(%r14), %rdx
cmpq %rbp, %rdx
je 0x1d4e18
addq %rbp, %r15
cmpq %rdx, %r15
jne 0x1d4d8f
addq %rbx, %r13
leaq 0x1(%rdx), %rsi
movq 0x18(%rsp), %rdi
imulq %rdi, %rsi
movq -0x8(%r13), %rcx
movq %rbp, %r8
movq %r14, %r9
callq 0x1d568f
movq 0x10(%rsp), %r9
movq (%r9), %rax
movq 0x10(%r9), %rcx
shlq $0x5, %rcx
movq %r12, -0x10(%rax,%rcx)
xorl %r8d, %r8d
movq $0x0, 0x10(%r9)
movq 0xa0(%r14), %rax
addq %rax, 0x90(%r14)
cmpb $0x0, 0xa8(%r14)
jne 0x1d48f9
xorl %eax, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x6c9c0
callq 0x6cb16
callq 0x6ca32
callq 0x6c94e
callq 0x6cadd
callq 0x6c9f9
callq 0x6c987
callq 0x6ca6b
callq 0x6caa4
callq 0x6cbfa
callq 0x6cbc1
callq 0x6cb88
callq 0x6c915
callq 0x6cb4f
callq 0x6cca5
callq 0x6cc6c
callq 0x6cc33