// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/randomcodes-hpcorrect.c
// Function: gt_randomcodes_hpcorrect_data_new
GtRandomcodesHpcorrectData *gt_randomcodes_hpcorrect_data_new(
    GtEncseq *encseq, GtHplstore *hplstore, unsigned int k,
    bool firstpass, unsigned int r, unsigned int mintrustp,
    unsigned int maxuntrustp, bool greedy_clustering,
    bool skip_read_ends, bool skip_hmer_ends, bool skip_rc,
    bool non_redundant, bool best_score_clustering, bool manhattan,
    GtWord clustering_param, GtUword maxwidth, int rext_cl_minscore,
    int rext_I_minscore, int rext_J_minscore, int rext_R_minscore,
    int rext_D_minscore, int rext_J_lminscore, GtUword rext_J_lwidth,
    GtStr *indexname, unsigned int threadnum, GtError *err)
{
  GtRandomcodesHpcorrectData *sdata = gt_malloc(sizeof *sdata);
  GtStr *path = gt_str_clone(indexname);
  gt_str_append_char(path, '.');
  gt_str_append_uint(path, threadnum);
  if (firstpass)
    gt_str_append_cstr(path, GT_RANDOMCODES_HPCORRECT_FIRSTPASS_FILESFX);
  else
    gt_str_append_cstr(path, GT_RANDOMCODES_HPCORRECT_FILESFX);
  sdata->k = (GtUword)k;
  sdata->firstpass = firstpass;
  sdata->mintrustp = mintrustp;
  sdata->maxuntrustp = maxuntrustp;
  sdata->maxwidth = maxwidth;
  sdata->manhattan = manhattan;
  sdata->skip_read_ends = skip_read_ends;
  sdata->rext_cl_minscore = (gt_rchc_score_t)rext_cl_minscore;
  sdata->rext_I_minscore = (gt_rchc_score_t)rext_I_minscore;
  sdata->rext_J_minscore = (gt_rchc_score_t)rext_J_minscore;
  sdata->rext_R_minscore = (gt_rchc_score_t)rext_R_minscore;
  sdata->rext_D_minscore = (gt_rchc_score_t)rext_D_minscore;
  sdata->rext_J_lminscore = (gt_rchc_score_t)rext_J_lminscore;
  sdata->rext_J_lwidth = rext_J_lwidth;
  if (skip_hmer_ends)
  {
    sdata->frompos = 1UL;
    gt_assert(sdata->k > 2UL);
    sdata->topos = sdata->k - 2UL;
  }
  else
  {
    sdata->frompos = 0;
    sdata->topos = sdata->k - 1UL;
  }
  if (non_redundant)
    sdata->frompos = sdata->topos;
  sdata->skip_rc = skip_rc;
  sdata->outfile = gt_file_new(gt_str_get(path), "w", err);
  gt_str_delete(path);
  sdata->encseq = encseq;
  sdata->hplstore = hplstore;
  sdata->mirror_nofseqs = gt_encseq_num_of_sequences(encseq);
  sdata->nofreads = sdata->mirror_nofseqs;
  if (gt_encseq_is_mirrored(sdata->encseq))
    sdata->nofreads >>= 1;
  sdata->hdistri = gt_malloc(sizeof (sdata->hdistri) * GT_HPLSTORE_RANGE *
      sdata->k);
  sdata->hmers_alloc = GT_RANDOMCODES_HPCORRECT_HMERS_INIT;
  if (best_score_clustering)
  {
    gt_assert(clustering_param >= 0 && clustering_param <= 100L);
    sdata->quantile = (unsigned int)clustering_param;
    sdata->pw_scores = gt_malloc(sizeof (sdata->pw_scores) *
            GT_STRICT_TRIANGULAR_SIZE(sdata->hmers_alloc));
    sdata->pw_scores_copy = gt_malloc(sizeof (sdata->pw_scores_copy) *
            GT_STRICT_TRIANGULAR_SIZE(sdata->hmers_alloc));
  }
  else
  {
    sdata->clustering_minscore = clustering_param;
    sdata->pw_scores = NULL;
    sdata->pw_scores_copy = NULL;
  }
  sdata->cluster_size = gt_malloc(sizeof (sdata->cluster_size) *\
      sdata->hmers_alloc);
  sdata->consensus_hmer = gt_malloc(sizeof (sdata->consensus_hmer) * sdata->k);
  if (greedy_clustering)
  {
    sdata->hmer_cluster = gt_malloc(sizeof (sdata->hmer_cluster) *
        sdata->hmers_alloc);
    sdata->union_find = NULL;
    sdata->skip = NULL;
  }
  else
  {
    sdata->union_find =
      gt_union_find_new(GT_RANDOMCODES_HPCORRECT_UNION_FIND_INIT);
    sdata->hmer_cluster = NULL;
    sdata->skip = gt_malloc(sizeof (sdata->skip) * sdata->hmers_alloc);
  }
  if (sdata->firstpass)
  {
    sdata->r = r;
    sdata->rextset = gt_malloc(sizeof (sdata->rextset) * sdata->hmers_alloc);
    sdata->rextset_size = gt_malloc(sizeof (sdata->rextset_size) *
        sdata->hmers_alloc);
    sdata->esr1 = gt_encseq_create_reader_with_readmode(sdata->encseq,
        GT_READMODE_FORWARD, 0);
    sdata->esr2 = gt_encseq_create_reader_with_readmode(sdata->encseq,
        GT_READMODE_FORWARD, 0);
    sdata->hmers_width = sdata->k + sdata->r + 1UL;
  }
  else
  {
    sdata->rextset = NULL;
    sdata->rextset_size = NULL;
    sdata->esr1 = NULL;
    sdata->esr2 = NULL;
    sdata->hmers_width = sdata->k;
  }
  sdata->hmers = gt_malloc(sizeof (sdata->hmers) * sdata->hmers_alloc *
      sdata->hmers_width);
  return sdata;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x40, %rsp
movl %r9d, %r10d
movl %r8d, %r11d
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %r15
movb %cl, %bl
movq 0x108(%rsp), %rax
movl 0x100(%rsp), %eax
movq 0xf8(%rsp), %rax
movq 0xf0(%rsp), %rax
movl 0xe8(%rsp), %eax
movl 0xe0(%rsp), %eax
movl 0xd8(%rsp), %eax
movl 0xd0(%rsp), %eax
movl 0xc8(%rsp), %eax
movl 0xc0(%rsp), %eax
movq 0xb8(%rsp), %rax
movq 0xb0(%rsp), %rax
movb 0xa8(%rsp), %al
movb 0xa0(%rsp), %cl
movb 0x98(%rsp), %dl
movb 0x90(%rsp), %sil
movb 0x88(%rsp), %dil
movb 0x80(%rsp), %r8b
movb 0x78(%rsp), %r9b
movl 0x70(%rsp), %r12d
movq %r15, 0x38(%rsp)
movq %r14, 0x30(%rsp)
movl %ebp, 0x2c(%rsp)
andb $0x1, %bl
movb %bl, 0x2b(%rsp)
movl %r11d, 0x24(%rsp)
movl %r10d, 0x20(%rsp)
andb $0x1, %r9b
movb %r9b, 0x1f(%rsp)
andb $0x1, %r8b
movb %r8b, 0x1e(%rsp)
andb $0x1, %dil
movb %dil, 0x1d(%rsp)
andb $0x1, %sil
movb %sil, 0x1c(%rsp)
andb $0x1, %dl
movb %dl, 0x1b(%rsp)
andb $0x1, %cl
movb %cl, 0x1a(%rsp)
andb $0x1, %al
movb %al, 0x19(%rsp)
movl $0x128, %edi            # imm = 0x128
leaq 0x2152ed(%rip), %rsi    # 0x5573dc
movl $0x42a, %edx            # imm = 0x42A
callq 0x2f600
movq %rax, 0x10(%rsp)
movq 0xf8(%rsp), %rdi
callq 0x31110
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movl $0x2e, %esi
callq 0x333e0
movq 0x8(%rsp), %rdi
movl 0x100(%rsp), %esi
callq 0x31a70
testb $0x1, 0x2b(%rsp)
je 0x34214a
movq 0x8(%rsp), %rdi
leaq 0x2152bb(%rip), %rsi    # 0x5573fe
callq 0x32a20
jmp 0x34215b
movq 0x8(%rsp), %rdi
leaq 0x2152ad(%rip), %rsi    # 0x557403
callq 0x32a20
movl 0x2c(%rsp), %eax
movl %eax, %ecx
movq 0x10(%rsp), %rax
movq %rcx, 0x20(%rax)
movb 0x2b(%rsp), %cl
movq 0x10(%rsp), %rax
andb $0x1, %cl
movb %cl, 0xc9(%rax)
movl 0x20(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x2c(%rax)
movl 0x70(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x28(%rax)
movq 0xb8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xc0(%rax)
movb 0x19(%rsp), %cl
movq 0x10(%rsp), %rax
andb $0x1, %cl
movb %cl, 0xc8(%rax)
movb 0x1e(%rsp), %cl
movq 0x10(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x60(%rax)
movslq 0xc0(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xe0(%rax)
movslq 0xc8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xe8(%rax)
movslq 0xd0(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xf0(%rax)
movslq 0xd8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xf8(%rax)
movslq 0xe0(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x100(%rax)
movslq 0xe8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x108(%rax)
movq 0xf0(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x110(%rax)
testb $0x1, 0x1d(%rsp)
je 0x3422c7
movq 0x10(%rsp), %rax
movq $0x1, 0x68(%rax)
movq 0x10(%rsp), %rax
cmpq $0x2, 0x20(%rax)
ja 0x3422ad
movq 0x2b9d4c(%rip), %rax    # 0x5fbfc8
movq (%rax), %rdi
leaq 0x1b9317(%rip), %rsi    # 0x4fb59d
leaq 0x21517b(%rip), %rdx    # 0x557408
leaq 0x215183(%rip), %rcx    # 0x557417
leaq 0x215141(%rip), %r8     # 0x5573dc
movl $0x443, %r9d            # imm = 0x443
movb $0x0, %al
callq 0x33960
callq 0x2f830
jmp 0x3422af
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rcx
subq $0x2, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x70(%rax)
jmp 0x3422ea
movq 0x10(%rsp), %rax
movq $0x0, 0x68(%rax)
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rcx
subq $0x1, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x70(%rax)
testb $0x1, 0x1b(%rsp)
je 0x342303
movq 0x10(%rsp), %rax
movq 0x70(%rax), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x68(%rax)
movb 0x1c(%rsp), %cl
movq 0x10(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x78(%rax)
movq 0x8(%rsp), %rdi
callq 0x33b70
movq %rax, %rdi
movq 0x108(%rsp), %rdx
leaq 0x1f5e44(%rip), %rsi    # 0x538172
callq 0x30130
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xa0(%rax)
movq 0x8(%rsp), %rdi
callq 0x34040
movq 0x38(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, (%rax)
movq 0x30(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x38(%rsp), %rdi
callq 0x2f880
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rdi
callq 0x33260
testb $0x1, %al
jne 0x3423a2
jmp 0x3423b2
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rcx
shrq %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rax
imulq $0x7f8, 0x20(%rax), %rdi # imm = 0x7F8
leaq 0x215016(%rip), %rsi    # 0x5573dc
movl $0x457, %edx            # imm = 0x457
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x58(%rax)
movq 0x10(%rsp), %rax
movq $0x80, 0x40(%rax)
testb $0x1, 0x1a(%rsp)
je 0x3424df
jmp 0x3423f6
cmpq $0x0, 0xb0(%rsp)
jl 0x34240c
cmpq $0x64, 0xb0(%rsp)
jle 0x342444
movq 0x2b9bb5(%rip), %rax    # 0x5fbfc8
movq (%rax), %rdi
leaq 0x1b9180(%rip), %rsi    # 0x4fb59d
leaq 0x215015(%rip), %rdx    # 0x557439
leaq 0x214fec(%rip), %rcx    # 0x557417
leaq 0x214faa(%rip), %r8     # 0x5573dc
movl $0x45b, %r9d            # imm = 0x45B
movb $0x0, %al
callq 0x33960
callq 0x2f830
jmp 0x342446
movq 0xb0(%rsp), %rax
movl %eax, %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0xb8(%rax)
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rax
subq $0x1, %rax
imulq %rax, %rdi
shrq %rdi
shlq $0x3, %rdi
leaq 0x214f59(%rip), %rsi    # 0x5573dc
movl $0x45e, %edx            # imm = 0x45E
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xa8(%rax)
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rax
subq $0x1, %rax
imulq %rax, %rdi
shrq %rdi
shlq $0x3, %rdi
leaq 0x214f18(%rip), %rsi    # 0x5573dc
movl $0x460, %edx            # imm = 0x460
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xb0(%rax)
jmp 0x342513
movq 0xb0(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x80(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0xa8(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0xb0(%rax)
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
shlq $0x3, %rdi
leaq 0x214eb5(%rip), %rsi    # 0x5573dc
movl $0x469, %edx            # imm = 0x469
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rdi
shlq $0x3, %rdi
leaq 0x214e8b(%rip), %rsi    # 0x5573dc
movl $0x46a, %edx            # imm = 0x46A
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x50(%rax)
testb $0x1, 0x1f(%rsp)
je 0x3425bd
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
shlq $0x3, %rdi
leaq 0x214e5a(%rip), %rsi    # 0x5573dc
movl $0x46e, %edx            # imm = 0x46E
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x88(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0x98(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0x90(%rax)
jmp 0x342613
movl $0x400, %edi            # imm = 0x400
callq 0x28e330
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x98(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0x88(%rax)
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
shlq $0x3, %rdi
leaq 0x214de2(%rip), %rsi    # 0x5573dc
movl $0x477, %edx            # imm = 0x477
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x90(%rax)
movq 0x10(%rsp), %rax
testb $0x1, 0xc9(%rax)
je 0x3426f8
movl 0x24(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0xcc(%rax)
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
shlq $0x3, %rdi
leaq 0x214d94(%rip), %rsi    # 0x5573dc
movl $0x47c, %edx            # imm = 0x47C
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xd0(%rax)
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
shlq $0x3, %rdi
leaq 0x214d67(%rip), %rsi    # 0x5573dc
movl $0x47e, %edx            # imm = 0x47E
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0xd8(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x30b20
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x118(%rax)
movq 0x10(%rsp), %rax
movq (%rax), %rdi
xorl %esi, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x30b20
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x120(%rax)
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x10(%rsp), %rax
movl 0xcc(%rax), %eax
addq %rax, %rcx
addq $0x1, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x48(%rax)
jmp 0x34274a
movq 0x10(%rsp), %rax
movq $0x0, 0xd0(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0xd8(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0x118(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0x120(%rax)
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
shlq $0x3, %rdi
movq 0x10(%rsp), %rax
imulq 0x48(%rax), %rdi
leaq 0x214c74(%rip), %rsi    # 0x5573dc
movl $0x48e, %edx            # imm = 0x48E
callq 0x2f600
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x10(%rsp), %rax
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq