// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/randomcodes-hpcorrect.c
// Function: gt_randomcodes_hpcorrect_cluster_greedy
static inline GtUword gt_randomcodes_hpcorrect_cluster_greedy(
    bool *allidentical, GtUword nofsuffixes, GtWord clustering_minscore,
    GtRandomcodesHpcorrectData *sdata)
{
  gt_rchc_score_t hscore;
  GtUword i, j, nofclusters = 0;
  bool identical = false;
  gt_assert(allidentical != NULL);
  *allidentical = true;
  gt_assert(sdata->hmer_cluster != NULL);
  for (i = 0; i < nofsuffixes; i++)
    sdata->hmer_cluster[i] = GT_UNDEF_UWORD;
  (void)memset(sdata->cluster_size, 0, sizeof (sdata->cluster_size) *
      nofsuffixes);
  for (i = 0; i < nofsuffixes; i++)
  {
    if (sdata->hmer_cluster[i] == GT_UNDEF_UWORD)
      sdata->hmer_cluster[i] = (++nofclusters);
    for (j = i+1; j < nofsuffixes; j++)
    {
      hscore = (sdata->pw_scores == NULL) ?
        gt_randomcodes_hpcorrect_compute_hscore(
            &identical, GT_RANDOMCODES_HPCORRECT_HMER(sdata,i),
            GT_RANDOMCODES_HPCORRECT_HMER(sdata,j), sdata->k
            /*, sdata->manhattan, clustering_minscore*/)
        : GT_RANDOMCODES_HPCORRECT_PW_SCORE(sdata,i,j);
      if (!identical)
        *allidentical = false;
      if (hscore >= clustering_minscore)
      {
        gt_assert(sdata->hmer_cluster[i] != GT_UNDEF_UWORD);
        sdata->hmer_cluster[j] = sdata->hmer_cluster[i];
      }
    }
    sdata->cluster_size[sdata->hmer_cluster[i]]++;
  }
  return nofclusters;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq %rdx, 0x50(%rsp)
movq %rcx, 0x48(%rsp)
movq $0x0, 0x28(%rsp)
movb $0x0, 0x27(%rsp)
cmpq $0x0, 0x60(%rsp)
jne 0x343816
movq 0x2b87e3(%rip), %rax    # 0x5fbfc8
movq (%rax), %rdi
leaq 0x1b7dae(%rip), %rsi    # 0x4fb59d
leaq 0x213d4b(%rip), %rdx    # 0x557541
leaq 0x213e14(%rip), %rcx    # 0x557611
leaq 0x213bd8(%rip), %r8     # 0x5573dc
movl $0x184, %r9d            # imm = 0x184
movb $0x0, %al
callq 0x33960
callq 0x2f830
jmp 0x343818
movq 0x60(%rsp), %rax
movb $0x1, (%rax)
movq 0x48(%rsp), %rax
cmpq $0x0, 0x88(%rax)
jne 0x343867
movq 0x2b8792(%rip), %rax    # 0x5fbfc8
movq (%rax), %rdi
leaq 0x1b7d5d(%rip), %rsi    # 0x4fb59d
leaq 0x213df2(%rip), %rdx    # 0x557639
leaq 0x213dc3(%rip), %rcx    # 0x557611
leaq 0x213b87(%rip), %r8     # 0x5573dc
movl $0x186, %r9d            # imm = 0x186
movb $0x0, %al
callq 0x33960
callq 0x2f830
jmp 0x343869
movq $0x0, 0x38(%rsp)
movq 0x38(%rsp), %rax
cmpq 0x58(%rsp), %rax
jae 0x3438a7
movq 0x48(%rsp), %rax
movq 0x88(%rax), %rax
movq 0x38(%rsp), %rcx
movq $-0x1, (%rax,%rcx,8)
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
jmp 0x343872
movq 0x48(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0x58(%rsp), %rdx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x2f4c0
movq $0x0, 0x38(%rsp)
movq 0x38(%rsp), %rax
cmpq 0x58(%rsp), %rax
jae 0x343b19
movq 0x48(%rsp), %rax
movq 0x88(%rax), %rax
movq 0x38(%rsp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x343914
movq 0x28(%rsp), %rdx
addq $0x1, %rdx
movq %rdx, 0x28(%rsp)
movq 0x48(%rsp), %rax
movq 0x88(%rax), %rax
movq 0x38(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
cmpq 0x58(%rsp), %rax
jae 0x343adc
movq 0x48(%rsp), %rax
cmpq $0x0, 0xa8(%rax)
jne 0x343994
movq 0x48(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0x38(%rsp), %rax
movq 0x48(%rsp), %rcx
imulq 0x48(%rcx), %rax
addq %rax, %rsi
movq 0x48(%rsp), %rax
movq 0x30(%rax), %rdx
movq 0x30(%rsp), %rax
movq 0x48(%rsp), %rcx
imulq 0x48(%rcx), %rax
addq %rax, %rdx
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rcx
leaq 0x27(%rsp), %rdi
callq 0x343b30
movq %rax, 0x18(%rsp)
jmp 0x343a24
movq 0x48(%rsp), %rax
movq 0xa8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jb 0x3439e2
movq 0x38(%rsp), %rax
movq 0x48(%rsp), %rcx
movq 0x40(%rcx), %rcx
shlq %rcx
subq $0x3, %rcx
subq 0x38(%rsp), %rcx
imulq %rcx, %rax
shrq %rax
addq 0x30(%rsp), %rax
subq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x343a11
movq 0x30(%rsp), %rax
movq 0x48(%rsp), %rcx
movq 0x40(%rcx), %rcx
shlq %rcx
subq $0x3, %rcx
subq 0x30(%rsp), %rcx
imulq %rcx, %rax
shrq %rax
addq 0x38(%rsp), %rax
subq $0x1, %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x40(%rsp)
testb $0x1, 0x27(%rsp)
jne 0x343a3d
movq 0x60(%rsp), %rax
movb $0x0, (%rax)
movq 0x40(%rsp), %rax
cmpq 0x50(%rsp), %rax
jl 0x343ac7
jmp 0x343a4b
movq 0x48(%rsp), %rax
movq 0x88(%rax), %rax
movq 0x38(%rsp), %rcx
cmpq $-0x1, (%rax,%rcx,8)
jne 0x343a9b
movq 0x2b855e(%rip), %rax    # 0x5fbfc8
movq (%rax), %rdi
leaq 0x1b7b29(%rip), %rsi    # 0x4fb59d
leaq 0x213bda(%rip), %rdx    # 0x557655
leaq 0x213b8f(%rip), %rcx    # 0x557611
leaq 0x213953(%rip), %r8     # 0x5573dc
movl $0x19b, %r9d            # imm = 0x19B
movb $0x0, %al
callq 0x33960
callq 0x2f830
jmp 0x343a9d
movq 0x48(%rsp), %rax
movq 0x88(%rax), %rax
movq 0x38(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x48(%rsp), %rax
movq 0x88(%rax), %rax
movq 0x30(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x343ac9
movq 0x30(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
jmp 0x343922
movq 0x48(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x48(%rsp), %rcx
movq 0x88(%rcx), %rcx
movq 0x38(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
jmp 0x3438c9
movq 0x28(%rsp), %rax
addq $0x68, %rsp
retq
nopw %cs:(%rax,%rax)