// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/sfx-suffixer.c
// Function: updatekmercount
static void updatekmercount(void *processinfo,
                            GtUword position,
                            const GtKmercode *kmercode)
{
  Sfxiterator *sfi = (Sfxiterator *) processinfo;

  gt_assert(sfi->sfxstrategy.spmopt_minlength == 0);
  if (kmercode->definedspecialposition)
  {
    if (sfi->storespecials)
    {
      if (kmercode->specialposition > 0)
      {
        if (sfi->sfxstrategy.storespecialcodes)
        {
          Codeatposition *cp;

          cp = sfi->spaceCodeatposition + sfi->nextfreeCodeatposition++;
          gt_assert(kmercode->code <= (GtCodetype) GT_MAXCODEVALUE);
          cp->code = (unsigned int) kmercode->code;
          gt_assert(kmercode->specialposition
                    <= (unsigned int) GT_MAXPREFIXLENGTH);
          cp->maxprefixindex = kmercode->specialposition;
          cp->position = position + kmercode->specialposition;
          /*
          printf("store(code=%u,maxprefixindex=%u,pos="GT_WU")\n",
                  cp->code,cp->maxprefixindex,cp->position);
          */
        }
        sfi->storespecials = false;
        gt_assert(kmercode->code > 0);
        gt_bcktab_leftborder_addcode(sfi->leftborder,kmercode->code);
      }
    } else
    {
      if (kmercode->specialposition > 0)
      {
        gt_assert(kmercode->code > 0);
        gt_bcktab_leftborder_addcode(sfi->leftborder,kmercode->code);
      } else
      {
        sfi->storespecials = true;
      }
    }
  } else
  {
#ifdef SKDEBUG
    if (kmercode->code == 0)
    {
      GtCodetype code2 = getencseqcode(sfi->encseq,
                                       sfi->readmode,
                                       gt_encseq_total_length(sfi->encseq),
                                       gt_bcktab_multimappower(sfi->bcktab),
                                       sfi->prefixlength,
                                       position);
      if (code2 != 0)
      {
        fprintf(stderr,"%s: ### position "GT_WU", code2 = "GT_WU" != 0\n",
                __func__, position,code2);
        fprintf(stderr,"previouscode = " FormatGtCodetype "\n",previouscode);
        if (previouskmercodedefined)
        {
          fprintf(stderr,"previouskmercodedefined = true\n");
          fprintf(stderr,"previousstorespecials = %s\n",
                  previousstorespecials ? "true" : "false");
          fprintf(stderr,"previousspecialpos = %u\n",previousspecialpos);
        }
        exit(GT_EXIT_PROGRAMMING_ERROR);
      }
    }
#endif
    gt_bcktab_leftborder_addcode(sfi->leftborder,kmercode->code);
  }
#ifdef SKDEBUG
  previouscode = kmercode->code;
  previouskmercodedefined = kmercode->defined;
  previousstorespecials = sfi->storespecials;
  previousspecialpos = kmercode->specialposition;
#endif
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x0, 0x50(%rax)
je 0x2e17b0
movq 0x35a821(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x23488a(%rip), %rsi    # 0x516013
leaq 0x2ac338(%rip), %rdx    # 0x58dac8
leaq 0x2ac47d(%rip), %rcx    # 0x58dc14
leaq 0x2aba96(%rip), %r8     # 0x58d234
movl $0x108, %r9d            # imm = 0x108
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2e17b2
movq 0x10(%rsp), %rax
testb $0x1, (%rax)
je 0x2e19ed
movq 0x8(%rsp), %rax
testb $0x1, 0xf8(%rax)
je 0x2e196e
movq 0x10(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jbe 0x2e196c
movq 0x8(%rsp), %rax
testb $0x1, 0x55(%rax)
je 0x2e1900
movq 0x8(%rsp), %rax
movq 0x108(%rax), %rax
movq 0x8(%rsp), %rdx
movq 0x100(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x100(%rdx)
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, (%rsp)
movq 0x10(%rsp), %rax
cmpq $0xfffffff, 0x8(%rax)   # imm = 0xFFFFFFF
jbe 0x2e1868
movq 0x35a769(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2347d2(%rip), %rsi    # 0x516013
leaq 0x2ac3dc(%rip), %rdx    # 0x58dc24
leaq 0x2ac3c5(%rip), %rcx    # 0x58dc14
leaq 0x2ab9de(%rip), %r8     # 0x58d234
movl $0x114, %r9d            # imm = 0x114
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2e186a
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movl %eax, %edx
movq (%rsp), %rax
movl (%rax), %ecx
andl $0xfffffff, %edx        # imm = 0xFFFFFFF
shll $0x4, %edx
andl $0xf, %ecx
orl %edx, %ecx
movl %ecx, (%rax)
movq 0x10(%rsp), %rax
cmpl $0xe, 0x4(%rax)
jbe 0x2e18ce
movq 0x35a703(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x23476c(%rip), %rsi    # 0x516013
leaq 0x2ac3a5(%rip), %rdx    # 0x58dc53
leaq 0x2ac35f(%rip), %rcx    # 0x58dc14
leaq 0x2ab978(%rip), %r8     # 0x58d234
movl $0x117, %r9d            # imm = 0x117
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2e18d0
movq 0x10(%rsp), %rax
movl 0x4(%rax), %edx
movq (%rsp), %rax
movl (%rax), %ecx
andl $0xf, %edx
andl $-0x10, %ecx
orl %edx, %ecx
movl %ecx, (%rax)
movq 0x18(%rsp), %rcx
movq 0x10(%rsp), %rax
movl 0x4(%rax), %eax
addq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0xf8(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x8(%rax)
ja 0x2e1950
movq 0x35a681(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2346ea(%rip), %rsi    # 0x516013
leaq 0x2ac362(%rip), %rdx    # 0x58dc92
leaq 0x2ac2dd(%rip), %rcx    # 0x58dc14
leaq 0x2ab8f6(%rip), %r8     # 0x58d234
movl $0x120, %r9d            # imm = 0x120
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2e1952
movq 0x8(%rsp), %rax
movq 0x80(%rax), %rdi
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x2e69e0
jmp 0x2e19eb
movq 0x10(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jbe 0x2e19dd
jmp 0x2e197b
movq 0x10(%rsp), %rax
cmpq $0x0, 0x8(%rax)
ja 0x2e19bf
movq 0x35a612(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x23467b(%rip), %rsi    # 0x516013
leaq 0x2ac2f3(%rip), %rdx    # 0x58dc92
leaq 0x2ac26e(%rip), %rcx    # 0x58dc14
leaq 0x2ab887(%rip), %r8     # 0x58d234
movl $0x127, %r9d            # imm = 0x127
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2e19c1
movq 0x8(%rsp), %rax
movq 0x80(%rax), %rdi
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x2e69e0
jmp 0x2e19e9
movq 0x8(%rsp), %rax
movb $0x1, 0xf8(%rax)
jmp 0x2e19eb
jmp 0x2e1a07
movq 0x8(%rsp), %rax
movq 0x80(%rax), %rdi
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x2e69e0
addq $0x28, %rsp
retq
nopl (%rax)