// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/randomcodes-hpcorrect.c
// Function: gt_randomcodes_hpcorrect_firstpass_process_cluster
static inline void gt_randomcodes_hpcorrect_firstpass_process_cluster(
    const GtSeqnumrelpos *snrp, const GtUword *suffixes,
    GtUword nofsuffixes, GtRandomcodesHpcorrectData *sdata,
    GtUword clusternum)
{
  GtUword nofrextsets, u_rextsetnum, t_rextsetnum, untrusted, trusted;
  nofrextsets = gt_randomcodes_hpcorrect_firstpass_cluster_right_extensions(
      snrp, suffixes, nofsuffixes, sdata, clusternum);
#ifdef GT_RANDOMCODES_HPCORRECT_VERBOSE
  gt_file_xprintf(sdata->outfile, "# nofrextsets:"GT_WU"\n", nofrextsets);
#endif
#ifdef GT_RANDOMCODES_HPCORRECT_DEBUG
  gt_randomcodes_hpcorrect_show_kplus1(snrp, suffixes, nofsuffixes, sdata,
      clusternum);
#endif
  if (nofrextsets == 1UL)
    return;
  untrusted = sdata->cluster_size[clusternum] * sdata->maxuntrustp / 100 + 1UL;
  trusted = sdata->cluster_size[clusternum] * sdata->mintrustp / 100;
  if (trusted <= untrusted)
    trusted = untrusted + 1UL;
#ifdef GT_RANDOMCODES_HPCORRECT_VERBOSE
  gt_file_xprintf(sdata->outfile, "# untrusted: "GT_WU", trusted: "GT_WU"\n",
      untrusted, trusted);
#endif
  for (u_rextsetnum = 0; u_rextsetnum < nofrextsets; u_rextsetnum++)
  {
    if (sdata->rextset_size[u_rextsetnum] <= (unsigned int)untrusted)
    {
#ifdef GT_RANDOMCODES_HPCORRECT_DEBUG
      gt_file_xprintf(sdata->outfile, "# rextset "GT_WU" is untrusted\n",
          u_rextsetnum);
#endif
      for (t_rextsetnum = 0; t_rextsetnum < nofrextsets; t_rextsetnum++)
      {
        if (u_rextsetnum != t_rextsetnum &&
            sdata->rextset_size[t_rextsetnum] >= (unsigned int)trusted)
        {
#ifdef GT_RANDOMCODES_HPCORRECT_DEBUG
          gt_file_xprintf(sdata->outfile, "# ... and rextset " GT_WU
                          " is trusted\n", t_rextsetnum);
#endif
          gt_randomcodes_hpcorrect_firstpass_correct(snrp, suffixes,
              nofsuffixes, sdata, u_rextsetnum, t_rextsetnum);
          /* corrected instances are removed from the rextset */
          if (sdata->rextset_size[u_rextsetnum] == 0)
            break;
        }
      }
    }
  }
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movq %rdx, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
movq 0x50(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rcx
movq 0x30(%rsp), %r8
callq 0x344200
movq %rax, 0x28(%rsp)
cmpq $0x1, 0x28(%rsp)
jne 0x3430ad
jmp 0x343207
movq 0x38(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x30(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x38(%rsp), %rcx
movl 0x28(%rcx), %ecx
imulq %rcx, %rax
movl $0x64, %ecx
xorl %edx, %edx
divq %rcx
addq $0x1, %rax
movq %rax, 0x10(%rsp)
movq 0x38(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x30(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x38(%rsp), %rcx
movl 0x2c(%rcx), %ecx
imulq %rcx, %rax
movl $0x64, %ecx
xorl %edx, %edx
divq %rcx
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpq 0x10(%rsp), %rax
ja 0x343125
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
cmpq 0x28(%rsp), %rax
jae 0x343207
movq 0x38(%rsp), %rax
movq 0xd8(%rax), %rax
movq 0x20(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movq 0x10(%rsp), %rcx
cmpl %ecx, %eax
ja 0x3431f2
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
cmpq 0x28(%rsp), %rax
jae 0x3431f0
movq 0x20(%rsp), %rax
cmpq 0x18(%rsp), %rax
je 0x3431db
movq 0x38(%rsp), %rax
movq 0xd8(%rax), %rax
movq 0x18(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movq 0x8(%rsp), %rcx
cmpl %ecx, %eax
jb 0x3431db
movq 0x50(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rcx
movq 0x20(%rsp), %r8
movq 0x18(%rsp), %r9
callq 0x344600
movq 0x38(%rsp), %rax
movq 0xd8(%rax), %rax
movq 0x20(%rsp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x3431d9
jmp 0x3431f0
jmp 0x3431db
jmp 0x3431dd
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x343168
jmp 0x3431f2
jmp 0x3431f4
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x34312e
addq $0x58, %rsp
retq
nopl (%rax)