// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/condenseq_creator.c
// Function: gt_condenseq_creator_create
int gt_condenseq_creator_create(GtCondenseqCreator *condenseq_creator,
                                GtStr *basename,
                                GtEncseq *encseq,
                                GtLogger *logger,
                                GtLogger *kdb_logger,
                                GtError *err)
{
  int had_err = 0;
  GtCondenseq *ces;
  FILE *fp = NULL;
  GtUword buffersize;
  GtTimer *timer = NULL;
  gt_assert(condenseq_creator != NULL);
  gt_assert(encseq != NULL);

  gt_logger_log(logger, "number of kmer-pos cutoff setting:");
  if (condenseq_creator->cutoff_value == GT_UNDEF_UWORD)
    gt_logger_log(logger, "mean/" GT_WU, condenseq_creator->mean_fraction);
  else if (condenseq_creator->cutoff_value == 0)
    gt_logger_log(logger, "disabled");
  else
    gt_logger_log(logger, GT_WU, condenseq_creator->cutoff_value);

  gt_logger_log(logger, "xdrop extension settings:");
  if (condenseq_creator->use_diagonals) {
    if (condenseq_creator->use_full_diags)
      gt_logger_log(logger, "use full diagonals");
    else
      gt_logger_log(logger, "use sparse diagonals");
  }
  else if (condenseq_creator->extend_all_kmers)
    gt_logger_log(logger, "brute force xdrop extension");
  else
    gt_logger_log(logger, "filtered xdrop extension");

  if (gt_showtime_enabled()) {
    timer = gt_timer_new_with_progress_description("create condenseq");
    gt_timer_start(timer);
  }
  condenseq_creator->input_es = encseq;
  ces = gt_condenseq_new(encseq, logger);
  /* TODO DW: check if these values make sense. and if after init the buffer is
     always flushed! -> should be -> init_kmer_db*/
  buffersize = condenseq_creator->initsize * 100;
  if (buffersize > (GtUword) 100000)
    buffersize = (GtUword) 100000;
  gt_log_log("buffersize for kmer-db: " GT_WU, buffersize);
  if (gt_showtime_enabled())
    gt_timer_show_progress(timer, "create kmer db", stderr);
  condenseq_creator->kmer_db =
    gt_kmer_database_new(gt_alphabet_num_of_chars(ces->alphabet),
                         condenseq_creator->kmersize,
                         buffersize,
                         encseq);
  if (condenseq_creator->use_cutoff) {
    if (condenseq_creator->mean_cutoff)
      gt_kmer_database_use_mean_cutoff(condenseq_creator->kmer_db,
                                       condenseq_creator->mean_fraction,
                                       GT_CES_C_MIN_POS_NUM_CUTOFF);
    else
      gt_kmer_database_set_cutoff(condenseq_creator->kmer_db,
                                  condenseq_creator->cutoff_value);
    if (condenseq_creator->prune_kmer_db)
      gt_kmer_database_set_prune(condenseq_creator->kmer_db);
  }
  condenseq_creator->ces = ces;
  if (condenseq_creator->use_diagonals || condenseq_creator->use_full_diags) {
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, "create diagonals", stderr);
    condenseq_creator->diagonals =
      gt_malloc(sizeof (*condenseq_creator->diagonals));
    if (condenseq_creator->use_full_diags) {
      condenseq_creator->diagonals->full =
        ces_c_diagonals_full_new((size_t) gt_encseq_total_length(encseq));
    }
    else
      condenseq_creator->diagonals->full = NULL;
    if (condenseq_creator->use_diagonals) {
      condenseq_creator->diagonals->sparse =
        ces_c_sparse_diags_new((size_t) condenseq_creator->initsize);
    }
    else
      condenseq_creator->diagonals->sparse = NULL;
  }
  else
    condenseq_creator->diagonals = NULL;

  ces_c_xdrops = 0;
  had_err = ces_c_analyse(condenseq_creator, timer, err);

  if (!had_err) {
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, "write data, alphabet", stderr);
    gt_log_log(GT_WU " kmer positions in final kmer_db",
               gt_kmer_database_get_kmer_count(condenseq_creator->kmer_db));
    gt_log_log(GT_WU " xdrop calls.", ces_c_xdrops);
    gt_log_log(GT_WU " uniques", condenseq_creator->ces->uds_nelems);
    gt_log_log(GT_WU " links", condenseq_creator->ces->lds_nelems);
    gt_log_log(GT_WU " bytes in final kmer_db",
               gt_kmer_database_get_used_size(condenseq_creator->kmer_db));
    gt_log_log(GT_WU " bytes allocated for kmer_db",
               gt_kmer_database_get_byte_size(condenseq_creator->kmer_db));

    if (gt_log_enabled() &&
        (condenseq_creator->use_diagonals ||
         condenseq_creator->use_full_diags)) {
#ifdef GT_CONDENSEQ_CREATOR_DIST_DEBUG
      GtFile *out = gt_file_new_from_fileptr(gt_log_fp());
      gt_log_log("dist of number added:");
      gt_disc_distri_show(condenseq_creator->add, out);
      gt_log_log("dist of number replaced:");
      gt_disc_distri_show(condenseq_creator->replace, out);
      gt_log_log("dist of number deleted:");
      gt_disc_distri_show(condenseq_creator->delete, out);
      gt_file_delete_without_handle(out);
#endif
      gt_log_log("min_d: " GT_WU ", max_d: " GT_WU " (# diagonals: " GT_WU ") ",
                 condenseq_creator->min_d,
                 condenseq_creator->max_d,
                 condenseq_creator->max_d - condenseq_creator->min_d + 1);
      if (condenseq_creator->diagonals != NULL) {
        if (condenseq_creator->diagonals->sparse != NULL)
          gt_log_log("Sparse diagonals allocated: " GT_WU ", max used: " GT_WU,
                     condenseq_creator->diagonals->sparse->allocated,
                     condenseq_creator->diagonals->sparse->max);
        if (condenseq_creator->diagonals->full != NULL)
          gt_log_log("Full diagonals allocated: " GT_WU,
                     condenseq_creator->diagonals->full->allocated);
      }
    }
    had_err = gt_alphabet_to_file(ces->alphabet,
                                  gt_str_get(basename), err);
  }
  if (!had_err) {
    fp = gt_fa_fopen_with_suffix(gt_str_get(basename),
                                 GT_CONDENSEQ_FILE_SUFFIX,
                                 "w", err);
    if (fp == NULL)
      had_err = -1;
  }
  if (!had_err) {
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, "write data, condenseq", stderr);
    had_err = gt_condenseq_write(condenseq_creator->ces, fp, err);
    gt_fa_xfclose(fp);
    fp = NULL;
  }
  if (!had_err) {
    fp = gt_fa_fopen_with_suffix(gt_str_get(basename), ".fas", "w", err);
    if (fp == NULL)
      had_err = -1;
  }
  if (!had_err) {
    GtEncseqEncoder *es_enc;
    GtStrArray *toencode;
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, "write data, unique fasta", stderr);
    ces_c_write_unique_fasta(condenseq_creator, fp);
    gt_fa_xfclose(fp);
    /*encoding of unique_es*/
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, "write data, unique encseq", stderr);
    es_enc = gt_encseq_encoder_new();
    gt_encseq_encoder_disable_description_support(es_enc);
    gt_encseq_encoder_do_not_create_md5_tab(es_enc);
    toencode = gt_str_array_new();
    gt_str_array_add(toencode, basename);
    gt_str_append_cstr(gt_str_array_get_str(toencode, 0), ".fas");
    had_err = gt_encseq_encoder_encode(es_enc,
                                       toencode,
                                       gt_str_get(basename),
                                       err);
    gt_encseq_encoder_delete(es_enc);
    gt_str_array_delete(toencode);
  }
  condenseq_creator->input_es = NULL;
  gt_condenseq_delete(ces);
  condenseq_creator->ces = NULL;
  ces_c_diags_delete(condenseq_creator->diagonals);
  condenseq_creator->diagonals = NULL;
  gt_kmer_database_print(condenseq_creator->kmer_db,
                         kdb_logger,
                         gt_logger_enabled(logger));
  gt_kmer_database_delete(condenseq_creator->kmer_db);
  condenseq_creator->kmer_db = NULL;
  if (gt_showtime_enabled())
    gt_timer_show_progress_final(timer, stderr);
  gt_timer_delete(timer);
  return had_err;
}

// Assembly:
subq $0x98, %rsp
movq %rdi, 0x90(%rsp)
movq %rsi, 0x88(%rsp)
movq %rdx, 0x80(%rsp)
movq %rcx, 0x78(%rsp)
movq %r8, 0x70(%rsp)
movq %r9, 0x68(%rsp)
movl $0x0, 0x64(%rsp)
movq $0x0, 0x50(%rsp)
movq $0x0, 0x40(%rsp)
cmpq $0x0, 0x90(%rsp)
jne 0x1451eb
movq 0x4f6de6(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3d0e4f(%rip), %rsi    # 0x516013
leaq 0x40698b(%rip), %rdx    # 0x54bb56
leaq 0x406a5e(%rip), %rcx    # 0x54bc30
leaq 0x406815(%rip), %r8     # 0x54b9ee
movl $0x675, %r9d            # imm = 0x675
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1451ed
jmp 0x1451ef
cmpq $0x0, 0x80(%rsp)
jne 0x145232
movq 0x4f6d9f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3d0e08(%rip), %rsi    # 0x516013
leaq 0x42d1d0(%rip), %rdx    # 0x5723e2
leaq 0x406a17(%rip), %rcx    # 0x54bc30
leaq 0x4067ce(%rip), %r8     # 0x54b9ee
movl $0x676, %r9d            # imm = 0x676
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x145234
movq 0x78(%rsp), %rdi
leaq 0x406a0c(%rip), %rsi    # 0x54bc4c
movb $0x0, %al
callq 0xe7cd0
movq 0x90(%rsp), %rax
cmpq $-0x1, 0x108(%rax)
jne 0x14527d
movq 0x78(%rsp), %rdi
movq 0x90(%rsp), %rax
movq 0x118(%rax), %rdx
leaq 0x4069fb(%rip), %rsi    # 0x54bc6f
movb $0x0, %al
callq 0xe7cd0
jmp 0x1452c8
movq 0x90(%rsp), %rax
cmpq $0x0, 0x108(%rax)
jne 0x1452a4
movq 0x78(%rsp), %rdi
leaq 0x3e4010(%rip), %rsi    # 0x5292ab
movb $0x0, %al
callq 0xe7cd0
jmp 0x1452c6
movq 0x78(%rsp), %rdi
movq 0x90(%rsp), %rax
movq 0x108(%rax), %rdx
leaq 0x449d4a(%rip), %rsi    # 0x58f009
movb $0x0, %al
callq 0xe7cd0
jmp 0x1452c8
movq 0x78(%rsp), %rdi
leaq 0x4069a4(%rip), %rsi    # 0x54bc78
movb $0x0, %al
callq 0xe7cd0
movq 0x90(%rsp), %rax
testb $0x1, 0x144(%rax)
je 0x145327
movq 0x90(%rsp), %rax
testb $0x1, 0x145(%rax)
je 0x145312
movq 0x78(%rsp), %rdi
leaq 0x406989(%rip), %rsi    # 0x54bc92
movb $0x0, %al
callq 0xe7cd0
jmp 0x145325
movq 0x78(%rsp), %rdi
leaq 0x406987(%rip), %rsi    # 0x54bca5
movb $0x0, %al
callq 0xe7cd0
jmp 0x145362
movq 0x90(%rsp), %rax
testb $0x1, 0x146(%rax)
je 0x14534d
movq 0x78(%rsp), %rdi
leaq 0x406976(%rip), %rsi    # 0x54bcba
movb $0x0, %al
callq 0xe7cd0
jmp 0x145360
movq 0x78(%rsp), %rdi
leaq 0x40697d(%rip), %rsi    # 0x54bcd6
movb $0x0, %al
callq 0xe7cd0
jmp 0x145362
callq 0x11aa90
testb $0x1, %al
jne 0x14536d
jmp 0x145388
leaq 0x40697b(%rip), %rdi    # 0x54bcef
callq 0x1213a0
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rdi
callq 0x1213f0
movq 0x80(%rsp), %rcx
movq 0x90(%rsp), %rax
movq %rcx, (%rax)
movq 0x80(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0x13e780
movq %rax, 0x58(%rsp)
movq 0x90(%rsp), %rax
imulq $0x64, 0xe8(%rax), %rax
movq %rax, 0x48(%rsp)
cmpq $0x186a0, 0x48(%rsp)    # imm = 0x186A0
jbe 0x1453db
movq $0x186a0, 0x48(%rsp)    # imm = 0x186A0
movq 0x48(%rsp), %rsi
leaq 0x406919(%rip), %rdi    # 0x54bd00
movb $0x0, %al
callq 0xe7740
callq 0x11aa90
testb $0x1, %al
jne 0x1453f9
jmp 0x145414
movq 0x40(%rsp), %rdi
movq 0x4f6b9b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
leaq 0x40690d(%rip), %rsi    # 0x54bd1c
callq 0x121930
movq 0x58(%rsp), %rax
movq (%rax), %rdi
callq 0x7e8c0
movl %eax, %edi
movq 0x90(%rsp), %rax
movl 0x138(%rax), %esi
movq 0x48(%rsp), %rdx
movq 0x80(%rsp), %rcx
callq 0x1979a0
movq %rax, %rcx
movq 0x90(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x90(%rsp), %rax
testb $0x1, 0x147(%rax)
je 0x1454df
movq 0x90(%rsp), %rax
testb $0x1, 0x148(%rax)
je 0x14549b
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x90(%rsp), %rax
movq 0x118(%rax), %rsi
movl $0x1e, %edx
callq 0x199870
jmp 0x1454bb
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x90(%rsp), %rax
movq 0x108(%rax), %rsi
callq 0x199770
movq 0x90(%rsp), %rax
testb $0x1, 0x149(%rax)
je 0x1454dd
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x199980
jmp 0x1454df
movq 0x58(%rsp), %rcx
movq 0x90(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x90(%rsp), %rax
testb $0x1, 0x144(%rax)
jne 0x145516
movq 0x90(%rsp), %rax
testb $0x1, 0x145(%rax)
je 0x1455fe
callq 0x11aa90
testb $0x1, %al
jne 0x145521
jmp 0x14553c
movq 0x40(%rsp), %rdi
movq 0x4f6a73(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
leaq 0x4067f4(%rip), %rsi    # 0x54bd2b
callq 0x121930
movl $0x10, %edi
leaq 0x4064a6(%rip), %rsi    # 0x54b9ee
movl $0x6af, %edx            # imm = 0x6AF
callq 0xe80f0
movq %rax, %rcx
movq 0x90(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x90(%rsp), %rax
testb $0x1, 0x145(%rax)
je 0x14559b
movq 0x80(%rsp), %rdi
callq 0xa9d00
movq %rax, %rdi
callq 0x145b60
movq %rax, %rcx
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
movq %rcx, (%rax)
jmp 0x1455ae
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
movq $0x0, (%rax)
movq 0x90(%rsp), %rax
testb $0x1, 0x144(%rax)
je 0x1455e8
movq 0x90(%rsp), %rax
movq 0xe8(%rax), %rdi
callq 0x145c10
movq %rax, %rcx
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
movq %rcx, 0x8(%rax)
jmp 0x1455fc
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
movq $0x0, 0x8(%rax)
jmp 0x14560e
movq 0x90(%rsp), %rax
movq $0x0, 0x30(%rax)
movq $0x0, 0x4fd72f(%rip) # 0x642d48
movq 0x90(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq 0x68(%rsp), %rdx
callq 0x145d10
movl %eax, 0x64(%rsp)
cmpl $0x0, 0x64(%rsp)
jne 0x145860
callq 0x11aa90
testb $0x1, %al
jne 0x14564a
jmp 0x145665
movq 0x40(%rsp), %rdi
movq 0x4f694a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
leaq 0x4066dc(%rip), %rsi    # 0x54bd3c
callq 0x121930
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x199a70
movq %rax, %rsi
leaq 0x4066d1(%rip), %rdi    # 0x54bd51
movb $0x0, %al
callq 0xe7740
movq 0x4fd6ba(%rip), %rsi    # 0x642d48
leaq 0x4066e0(%rip), %rdi    # 0x54bd75
movb $0x0, %al
callq 0xe7740
movq 0x90(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x98(%rax), %rsi
leaq 0x4066d0(%rip), %rdi    # 0x54bd86
movb $0x0, %al
callq 0xe7740
movq 0x90(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x70(%rax), %rsi
leaq 0x4066be(%rip), %rdi    # 0x54bd92
movb $0x0, %al
callq 0xe7740
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x19a2b0
movq %rax, %rsi
leaq 0x4066a6(%rip), %rdi    # 0x54bd9c
movb $0x0, %al
callq 0xe7740
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x19a230
movq %rax, %rsi
leaq 0x40669f(%rip), %rdi    # 0x54bdb7
movb $0x0, %al
callq 0xe7740
callq 0xe7720
testb $0x1, %al
jne 0x14572d
jmp 0x145830
movq 0x90(%rsp), %rax
testb $0x1, 0x144(%rax)
jne 0x145753
movq 0x90(%rsp), %rax
testb $0x1, 0x145(%rax)
je 0x145830
movq 0x90(%rsp), %rax
movq 0x120(%rax), %rsi
movq 0x90(%rsp), %rax
movq 0x128(%rax), %rdx
movq 0x90(%rsp), %rax
movq 0x128(%rax), %rcx
movq 0x90(%rsp), %rax
subq 0x120(%rax), %rcx
addq $0x1, %rcx
leaq 0x40663d(%rip), %rdi    # 0x54bdd7
movb $0x0, %al
callq 0xe7740
movq 0x90(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0x14582e
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
cmpq $0x0, 0x8(%rax)
je 0x1457f9
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x30(%rax), %rsi
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x40(%rax), %rdx
leaq 0x406610(%rip), %rdi    # 0x54be02
movb $0x0, %al
callq 0xe7740
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
cmpq $0x0, (%rax)
je 0x14582c
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rsi
leaq 0x40660c(%rip), %rdi    # 0x54be31
movb $0x0, %al
callq 0xe7740
jmp 0x14582e
jmp 0x145830
movq 0x58(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x88(%rsp), %rdi
callq 0x11dee0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
movq 0x68(%rsp), %rdx
callq 0x80540
movl %eax, 0x64(%rsp)
cmpl $0x0, 0x64(%rsp)
jne 0x1458b3
movq 0x88(%rsp), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x68(%rsp), %r9
leaq 0x405a1b(%rip), %rsi    # 0x54b29e
leaq 0x42063b(%rip), %rdx    # 0x565ec5
leaq 0x40615d(%rip), %rcx    # 0x54b9ee
movl $0x6f1, %r8d            # imm = 0x6F1
callq 0xd92c0
movq %rax, 0x50(%rsp)
cmpq $0x0, 0x50(%rsp)
jne 0x1458b1
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x1458b3
cmpl $0x0, 0x64(%rsp)
jne 0x145912
callq 0x11aa90
testb $0x1, %al
jne 0x1458c5
jmp 0x1458e0
movq 0x40(%rsp), %rdi
movq 0x4f66cf(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
leaq 0x406574(%rip), %rsi    # 0x54be4f
callq 0x121930
movq 0x90(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x50(%rsp), %rsi
movq 0x68(%rsp), %rdx
callq 0x13f850
movl %eax, 0x64(%rsp)
movq 0x50(%rsp), %rdi
callq 0xd9570
movq $0x0, 0x50(%rsp)
cmpl $0x0, 0x64(%rsp)
jne 0x145965
movq 0x88(%rsp), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x68(%rsp), %r9
leaq 0x44d861(%rip), %rsi    # 0x593196
leaq 0x420589(%rip), %rdx    # 0x565ec5
leaq 0x4060ab(%rip), %rcx    # 0x54b9ee
movl $0x6fd, %r8d            # imm = 0x6FD
callq 0xd92c0
movq %rax, 0x50(%rsp)
cmpq $0x0, 0x50(%rsp)
jne 0x145963
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x145965
cmpl $0x0, 0x64(%rsp)
jne 0x145a7f
callq 0x11aa90
testb $0x1, %al
jne 0x14597b
jmp 0x145996
movq 0x40(%rsp), %rdi
movq 0x4f6619(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
leaq 0x4064d4(%rip), %rsi    # 0x54be65
callq 0x121930
movq 0x90(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x146110
movq 0x50(%rsp), %rdi
callq 0xd9570
callq 0x11aa90
testb $0x1, %al
jne 0x1459bd
jmp 0x1459d8
movq 0x40(%rsp), %rdi
movq 0x4f65d7(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
leaq 0x4064ab(%rip), %rsi    # 0x54be7e
callq 0x121930
callq 0xb8090
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0xb8550
movq 0x38(%rsp), %rdi
callq 0xb8f80
callq 0x11f5c0
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0x11f840
movq 0x30(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x11f960
movq %rax, %rdi
leaq 0x44d76c(%rip), %rsi    # 0x593196
callq 0x11d550
movq 0x38(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x88(%rsp), %rdi
callq 0x11dee0
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rax, %rdx
movq 0x68(%rsp), %rcx
callq 0xb9320
movl %eax, 0x64(%rsp)
movq 0x38(%rsp), %rdi
callq 0xb8b70
movq 0x30(%rsp), %rdi
callq 0x11fd20
movq 0x90(%rsp), %rax
movq $0x0, (%rax)
movq 0x58(%rsp), %rdi
callq 0x13f640
movq 0x90(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x90(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x146340
movq 0x90(%rsp), %rax
movq $0x0, 0x30(%rax)
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x78(%rsp), %rdi
callq 0xe7980
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movzbl %al, %edx
andl $0x1, %edx
callq 0x19a340
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x197d90
movq 0x90(%rsp), %rax
movq $0x0, 0x8(%rax)
callq 0x11aa90
testb $0x1, %al
jne 0x145b2f
jmp 0x145b43
movq 0x40(%rsp), %rdi
movq 0x4f6465(%rip), %rax    # 0x63bfa0
movq (%rax), %rsi
callq 0x121d70
movq 0x40(%rsp), %rdi
callq 0x121f00
movl 0x64(%rsp), %eax
addq $0x98, %rsp
retq
nopl (%rax)