// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/match/firstcodes-accum.c
// Function: gt_firstcodes_accum_runkmerscan
void gt_firstcodes_accum_runkmerscan(const GtEncseq *encseq,
                                     unsigned int kmersize,
                                     unsigned int minmatchlength,
                                     GtCodeposbuffer *buf)
{
  const GtTwobitencoding *twobitencoding
    = gt_encseq_twobitencoding_export(encseq);
  GtUword totallength, maxunitindex;

  if (gt_encseq_is_mirrored(encseq))
  {
    totallength = (gt_encseq_total_length(encseq)-1)/2;
  } else
  {
    totallength = gt_encseq_total_length(encseq);
  }
  maxunitindex = gt_unitsoftwobitencoding(totallength) - 1;
  if (gt_encseq_accesstype_get(encseq) == GT_ACCESS_TYPE_EQUALLENGTH)
  {
    GtUword equallength = gt_encseq_equallength(encseq);

    gt_assert(equallength >= (GtUword) kmersize);
    gt_firstcodes_accum_kmerscan_eqlen(twobitencoding,
                                       equallength,
                                       totallength,
                                       maxunitindex,
                                       kmersize,
                                       minmatchlength,
                                       buf);
  } else
  {
    gt_firstcodes_accum_kmerscan(encseq,
                                 twobitencoding,
                                 totallength,
                                 maxunitindex,
                                 kmersize,
                                 minmatchlength,
                                 buf);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rcx, 0x20(%rsp)
movl %edx, 0x14(%rsp)
movl %esi, %ebp
movq %rdi, %r14
callq 0x776db
movq %rax, 0x18(%rsp)
movq %r14, %rdi
callq 0x81dea
movl %eax, %ebx
movq %r14, %rdi
callq 0x7055e
leaq -0x1(%rax), %r12
shrq %r12
testb %bl, %bl
cmoveq %rax, %r12
leaq -0x1(%r12), %rax
shrq $0x5, %rax
incq %rax
cmpq $0x20, %r12
pushq $0x1
popq %r13
cmovaeq %rax, %r13
movq %r14, %rdi
callq 0x81d17
cmpl $0x2, %eax
jne 0x2b1237
movq %r14, %rdi
callq 0x81d1a
movl %ebp, %ecx
movq %rax, %rbp
movl %ecx, %eax
cmpq %rax, %rbp
jb 0x2b1327
movl %ecx, %r15d
movq %rbp, %rbx
incq %rbx
xorl %r14d, %r14d
cmpq %r12, %r14
jae 0x2b12e0
movq 0x20(%rsp), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rdi
movl %r15d, %esi
movl 0x14(%rsp), %edx
movq %r14, %rcx
movq %rbp, %r8
movq %r13, %r9
callq 0x2b1355
addq %rbx, %r14
jmp 0x2b1206
movq %r14, %rdi
callq 0x740a6
testb %al, %al
je 0x2b12a4
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0x741f0
movq %rax, %rbx
movl 0x14(%rsp), %r15d
xorl %r14d, %r14d
movq %rbx, %rdi
leaq 0x28(%rsp), %rsi
callq 0x7428b
testb %al, %al
je 0x2b12ae
movq 0x28(%rsp), %r8
cmpq %r12, %r8
jae 0x2b12ae
subq %r14, %r8
jb 0x2b12ef
cmpq %r15, %r8
jb 0x2b129d
movq 0x20(%rsp), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rdi
movl %ebp, %esi
movl 0x14(%rsp), %edx
movq %r14, %rcx
movq %r13, %r9
callq 0x2b1355
movq 0x30(%rsp), %r14
jmp 0x2b1259
movl 0x14(%rsp), %r15d
xorl %r14d, %r14d
jmp 0x2b12b6
movq %rbx, %rdi
callq 0x74a09
subq %r14, %r12
cmpq %r15, %r12
jb 0x2b12e0
movq 0x20(%rsp), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rdi
movl %ebp, %esi
movl 0x14(%rsp), %edx
movq %r14, %rcx
movq %r12, %r8
movq %r13, %r9
callq 0x2b1355
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x186c72(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x33d13(%rip), %rsi     # 0x2e5013
leaq 0x94961(%rip), %rdx     # 0x345c68
leaq 0xd1204(%rip), %rcx     # 0x382512
leaq 0xd1165(%rip), %r8      # 0x38247a
movl $0x94, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x186c3a(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x33cdb(%rip), %rsi     # 0x2e5013
leaq 0xd10f9(%rip), %rdx     # 0x382438
leaq 0xd1114(%rip), %rcx     # 0x38245a
leaq 0xd112d(%rip), %r8      # 0x38247a
movl $0xc4, %r9d
jmp 0x2b131b