// File: /workspace/github_c_makefile_star2_O2/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:
pushq %rax
cmpl $0x0, 0x50(%rdi)
jne 0x1ab4bc
cmpb $0x1, (%rdx)
jne 0x1ab48c
movl 0x4(%rdx), %eax
cmpb $0x1, 0xf8(%rdi)
jne 0x1ab499
testl %eax, %eax
je 0x1ab4ba
cmpb $0x1, 0x55(%rdi)
jne 0x1ab44e
movq 0x100(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x100(%rdi)
movq 0x8(%rdx), %rcx
cmpq $0x10000000, %rcx       # imm = 0x10000000
jae 0x1ab522
shlq $0x4, %rax
addq 0x108(%rdi), %rax
movl (%rax), %r8d
shll $0x4, %ecx
andl $0xf, %r8d
orl %ecx, %r8d
movl %r8d, (%rax)
movl 0x4(%rdx), %r8d
cmpl $0xf, %r8d
jae 0x1ab550
orl %ecx, %r8d
movl %r8d, (%rax)
movl 0x4(%rdx), %ecx
addq %rsi, %rcx
movq %rcx, 0x8(%rax)
movb $0x0, 0xf8(%rdi)
movq 0x8(%rdx), %rsi
testq %rsi, %rsi
jne 0x1ab4a6
movq 0x28cb03(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x139ba4(%rip), %rsi    # 0x2e5013
leaq 0x1afc51(%rip), %rdx    # 0x35b0c7
leaq 0x1afbcc(%rip), %rcx    # 0x35b049
leaq 0x1af1f8(%rip), %r8     # 0x35a67c
movl $0x120, %r9d            # imm = 0x120
jmp 0x1ab4e8
movq 0x80(%rdi), %rdi
movq 0x8(%rdx), %rsi
jmp 0x1ab4ad
testl %eax, %eax
je 0x1ab4b3
movq 0x8(%rdx), %rsi
testq %rsi, %rsi
je 0x1ab4f4
movq 0x80(%rdi), %rdi
popq %rax
jmp 0x1ae378
movb $0x1, 0xf8(%rdi)
popq %rax
retq
movq 0x28caa5(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x139b46(%rip), %rsi    # 0x2e5013
leaq 0x1afa29(%rip), %rdx    # 0x35aefd
leaq 0x1afb6e(%rip), %rcx    # 0x35b049
leaq 0x1af19a(%rip), %r8     # 0x35a67c
movl $0x108, %r9d            # imm = 0x108
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x28ca6d(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x139b0e(%rip), %rsi    # 0x2e5013
leaq 0x1afbbb(%rip), %rdx    # 0x35b0c7
leaq 0x1afb36(%rip), %rcx    # 0x35b049
leaq 0x1af162(%rip), %r8     # 0x35a67c
movl $0x127, %r9d            # imm = 0x127
jmp 0x1ab4e8
movq 0x28ca3f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x139ae0(%rip), %rsi    # 0x2e5013
leaq 0x1afb1f(%rip), %rdx    # 0x35b059
leaq 0x1afb08(%rip), %rcx    # 0x35b049
leaq 0x1af134(%rip), %r8     # 0x35a67c
movl $0x114, %r9d            # imm = 0x114
jmp 0x1ab4e8
movq 0x28ca11(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x139ab2(%rip), %rsi    # 0x2e5013
leaq 0x1afb20(%rip), %rdx    # 0x35b088
leaq 0x1afada(%rip), %rcx    # 0x35b049
leaq 0x1af106(%rip), %r8     # 0x35a67c
movl $0x117, %r9d            # imm = 0x117
jmp 0x1ab4e8