// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/ltr/gt_ltrdigest.c
// Function: gt_ltrdigest_runner
static int gt_ltrdigest_runner(GT_UNUSED int argc, const char **argv,
                               int parsed_args, void *tool_arguments,
                               GtError *err)
{
  GtLTRdigestOptions *arguments = tool_arguments;
  GtNodeStream *gff3_in_stream  = NULL,
               *check_stream    = NULL,
               *gff3_out_stream = NULL,
               *pdom_stream     = NULL,
               *ppt_stream      = NULL,
               *pbs_stream      = NULL,
               *tab_out_stream  = NULL,
               *sa_stream       = NULL,
               *last_stream     = NULL;
  int had_err      = 0,
      tests_to_run = 0,
      arg = parsed_args;
  GtRegionMapping *rmap = NULL;
  GtPdomModelSet *ms = NULL;
  gt_error_check(err);
  gt_assert(arguments);

  /* determine and open sequence source */
  if (gt_seqid2file_option_used(arguments->s2fi)) {
    /* create region mapping */
    rmap = gt_seqid2file_region_mapping_new(arguments->s2fi, err);
    if (!rmap)
      had_err = -1;
  } else {
    GtEncseqLoader *el;
    GtEncseq *encseq;
    /* no new-style sequence source option given, fall back to legacy syntax */
    if (argc < 3) {
      gt_error_set(err, "missing mandatory argument(s)");
      had_err = -1;
    }
    if (!had_err) {
      el = gt_encseq_loader_new();
      gt_encseq_loader_disable_autosupport(el);
      gt_encseq_loader_require_md5_support(el);
      gt_encseq_loader_require_description_support(el);
      encseq = gt_encseq_loader_load(el, argv[argc-1], err);
      /* XXX: clip off terminal argument */
      gt_free((char*) argv[argc-1]);
      argv[argc-1] = NULL;
      argc--;
      gt_encseq_loader_delete(el);
      if (!encseq)
        had_err = -1;
      else {
        rmap = gt_region_mapping_new_encseq_seqno(encseq);
        gt_encseq_delete(encseq);
      }
    }
  }
  gt_assert(had_err || rmap);

  /* Always search for PPT. */
  tests_to_run |= GT_LTRDIGEST_RUN_PPT;

  /* Open tRNA library if given. */
  if (!had_err && arguments->trna_lib
        && gt_str_length(arguments->trna_lib) > 0)
  {
    tests_to_run |= GT_LTRDIGEST_RUN_PBS;
    arguments->trna_lib_bs = gt_bioseq_new(gt_str_get(arguments->trna_lib),
                                           err);
    if (gt_error_is_set(err))
      had_err = -1;
  }

  /* Set HMMER cutoffs. */
  if (!had_err && gt_str_array_size(arguments->hmm_files) > 0)
  {
    tests_to_run |= GT_LTRDIGEST_RUN_PDOM;
    if (!strcmp(gt_str_get(arguments->cutoffs), "GA")) {
      arguments->cutoff = GT_PHMM_CUTOFF_GA;
    } else if (!strcmp(gt_str_get(arguments->cutoffs), "TC")) {
      arguments->cutoff = GT_PHMM_CUTOFF_TC;
    } else if (!strcmp(gt_str_get(arguments->cutoffs), "NONE")) {
      arguments->cutoff = GT_PHMM_CUTOFF_NONE;
    } else {
      gt_error_set(err, "invalid cutoff setting!");
      had_err = -1;
    }
  }

  if (!had_err) {
    last_stream = gff3_in_stream  = gt_gff3_in_stream_new_sorted(argv[arg]);
  }

  if (!had_err) {
    GtNodeVisitor *check_v;
    check_v = gt_ltr_input_check_visitor_new();
    last_stream = check_stream = gt_visitor_stream_new(last_stream, check_v);
  }

  if (!had_err && gt_str_array_size(arguments->hmm_files) > 0) {
    GtNodeVisitor *pdom_v;
    ms = gt_pdom_model_set_new(arguments->hmm_files, arguments->force_recreate,
                               err);
    if (ms != NULL) {
      pdom_v = gt_ltrdigest_pdom_visitor_new(ms, arguments->evalue_cutoff,
                                             arguments->chain_max_gap_length,
                                             arguments->cutoff, rmap, err);
      if (pdom_v == NULL)
        had_err = -1;
      if (!had_err) {
        gt_ltrdigest_pdom_visitor_set_source_tag((GtLTRdigestPdomVisitor*)
                                                                        pdom_v,
                                                 GT_LTRDIGEST_TAG);
        if (arguments->output_all_chains)
          gt_ltrdigest_pdom_visitor_output_all_chains((GtLTRdigestPdomVisitor*)
                                                                        pdom_v);
        last_stream = pdom_stream = gt_visitor_stream_new(last_stream, pdom_v);
      }
    } else had_err = -1;
  }

  if (!had_err && arguments->trna_lib_bs) {
    GtNodeVisitor *pbs_v;
    pbs_v = gt_ltrdigest_pbs_visitor_new(rmap, arguments->pbs_radius,
                                         arguments->max_edist,
                                         arguments->alilen,
                                         arguments->offsetlen,
                                         arguments->trnaoffsetlen,
                                         arguments->ali_score_match,
                                         arguments->ali_score_mismatch,
                                         arguments->ali_score_insertion,
                                         arguments->ali_score_deletion,
                                         arguments->trna_lib_bs, err);
    if (pbs_v != NULL)
      last_stream = pbs_stream = gt_visitor_stream_new(last_stream, pbs_v);
    else
      had_err = -1;
  }

  if (!had_err) {
    GtNodeVisitor *ppt_v;
    ppt_v = gt_ltrdigest_ppt_visitor_new(rmap, arguments->ppt_len,
                                         arguments->ubox_len,
                                         arguments->ppt_pyrimidine_prob,
                                         arguments->ppt_purine_prob,
                                         arguments->bkg_a_prob,
                                         arguments->bkg_g_prob,
                                         arguments->bkg_t_prob,
                                         arguments->bkg_c_prob,
                                         arguments->ubox_u_prob,
                                         arguments->ppt_radius,
                                         arguments->max_ubox_dist, err);
    if (ppt_v != NULL)
      last_stream = ppt_stream = gt_visitor_stream_new(last_stream, ppt_v);
    else
      had_err = -1;
  }

  if (!had_err) {
    GtNodeVisitor *sa_v;
    sa_v = gt_ltrdigest_strand_assign_visitor_new();
    gt_assert(sa_v);
    last_stream = sa_stream = gt_visitor_stream_new(last_stream, sa_v);
  }

  if (!had_err)
  {
    /* attach tabular output stream, if requested */
    if (gt_str_length(arguments->prefix) > 0)
    {
      last_stream = tab_out_stream = gt_ltrdigest_file_out_stream_new(
                                                  last_stream,
                                                  tests_to_run,
                                                  rmap,
                                                  gt_str_get(arguments->prefix),
                                                  arguments->seqnamelen,
                                                  err);
      if (!tab_out_stream)
        had_err = -1;
      if (!had_err && arguments->print_metadata)
      {
        had_err = gt_ltrdigest_file_out_stream_write_metadata(
                                           (GtLTRdigestFileOutStream*)
                                                                 tab_out_stream,
                                           tests_to_run,
                                           gt_str_get(arguments->trna_lib),
                                           argv[arg],
                                           arguments->ppt_len,
                                           arguments->ubox_len,
                                           arguments->ppt_radius,
                                           arguments->alilen,
                                           arguments->max_edist,
                                           arguments->offsetlen,
                                           arguments->trnaoffsetlen,
                                           arguments->pbs_radius,
                                           arguments->hmm_files,
                                           arguments->chain_max_gap_length,
                                           arguments->evalue_cutoff,
                                           err);
      }
      if (!had_err)
      {
        if (arguments->write_alignments)
          gt_ltrdigest_file_out_stream_enable_pdom_alignment_output(
                                                                tab_out_stream);
        if (arguments->write_aaseqs)
          gt_ltrdigest_file_out_stream_enable_aa_sequence_output(
                                                                tab_out_stream);
      }
    }

    if (!had_err) {
      last_stream = gff3_out_stream = gt_gff3_out_stream_new(last_stream,
                                                             arguments->outfp);
      gt_assert(last_stream);

      /* pull the features through the stream and free them afterwards */
      had_err = gt_node_stream_pull(last_stream, err);
    }
  }

  gt_pdom_model_set_delete(ms);
  gt_node_stream_delete(gff3_out_stream);
  gt_node_stream_delete(ppt_stream);
  gt_node_stream_delete(pbs_stream);
  gt_node_stream_delete(sa_stream);
  gt_node_stream_delete(pdom_stream);
  gt_node_stream_delete(tab_out_stream);
  gt_node_stream_delete(check_stream);
  gt_node_stream_delete(gff3_in_stream);
  gt_bioseq_delete(arguments->trna_lib_bs);
  gt_region_mapping_delete(rmap);

  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x178, %rsp            # imm = 0x178
movl %edi, 0x174(%rsp)
movq %rsi, 0x168(%rsp)
movl %edx, 0x164(%rsp)
movq %rcx, 0x158(%rsp)
movq %r8, 0x150(%rsp)
movq 0x158(%rsp), %rax
movq %rax, 0x148(%rsp)
movq $0x0, 0x140(%rsp)
movq $0x0, 0x138(%rsp)
movq $0x0, 0x130(%rsp)
movq $0x0, 0x128(%rsp)
movq $0x0, 0x120(%rsp)
movq $0x0, 0x118(%rsp)
movq $0x0, 0x110(%rsp)
movq $0x0, 0x108(%rsp)
movq $0x0, 0x100(%rsp)
movl $0x0, 0xfc(%rsp)
movl $0x0, 0xf8(%rsp)
movl 0x164(%rsp), %eax
movl %eax, 0xf4(%rsp)
movq $0x0, 0xe8(%rsp)
movq $0x0, 0xe0(%rsp)
cmpq $0x0, 0x150(%rsp)
je 0x2fb4b5
movq 0x150(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x2fb47d
jmp 0x2fb4b5
movq 0x340b1c(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x21ab85(%rip), %rsi    # 0x516013
leaq 0x21ad2a(%rip), %rdx    # 0x5161bf
leaq 0x2968b6(%rip), %rcx    # 0x591d52
leaq 0x296128(%rip), %r8     # 0x5915cb
movl $0x1c3, %r9d            # imm = 0x1C3
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2fb4b7
jmp 0x2fb4b9
cmpq $0x0, 0x148(%rsp)
jne 0x2fb4fc
movq 0x340ad5(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x21ab3e(%rip), %rsi    # 0x516013
leaq 0x27f683(%rip), %rdx    # 0x57ab5f
leaq 0x29686f(%rip), %rcx    # 0x591d52
leaq 0x2960e1(%rip), %r8     # 0x5915cb
movl $0x1c4, %r9d            # imm = 0x1C4
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2fb4fe
movq 0x148(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x1d48f0
testb $0x1, %al
jne 0x2fb515
jmp 0x2fb551
movq 0x148(%rsp), %rax
movq 0x38(%rax), %rdi
movq 0x150(%rsp), %rsi
callq 0x1d4960
movq %rax, 0xe8(%rsp)
cmpq $0x0, 0xe8(%rsp)
jne 0x2fb54c
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2fb697
cmpl $0x3, 0x174(%rsp)
jge 0x2fb57c
movq 0x150(%rsp), %rdi
leaq 0x2967fc(%rip), %rsi    # 0x591d66
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0xfc(%rsp)
jne 0x2fb695
callq 0xb7a40
movq %rax, 0xd8(%rsp)
movq 0xd8(%rsp), %rdi
callq 0xba760
movq 0xd8(%rsp), %rdi
callq 0xba700
movq 0xd8(%rsp), %rdi
callq 0xbacc0
movq 0xd8(%rsp), %rdi
movq 0x168(%rsp), %rax
movl 0x174(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
movq 0x150(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0xd0(%rsp)
movq 0x168(%rsp), %rax
movl 0x174(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x295fb7(%rip), %rsi    # 0x5915cb
movl $0x1db, %edx            # imm = 0x1DB
callq 0xe88c0
movq 0x168(%rsp), %rax
movl 0x174(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq $0x0, (%rax,%rcx,8)
movl 0x174(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x174(%rsp)
movq 0xd8(%rsp), %rdi
callq 0xb7e50
cmpq $0x0, 0xd0(%rsp)
jne 0x2fb671
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2fb693
movq 0xd0(%rsp), %rdi
callq 0x1c7ea0
movq %rax, 0xe8(%rsp)
movq 0xd0(%rsp), %rdi
callq 0xae070
jmp 0x2fb695
jmp 0x2fb697
jmp 0x2fb699
cmpl $0x0, 0xfc(%rsp)
jne 0x2fb6e6
cmpq $0x0, 0xe8(%rsp)
jne 0x2fb6e6
movq 0x3408eb(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x21a954(%rip), %rsi    # 0x516013
leaq 0x226d9f(%rip), %rdx    # 0x522465
leaq 0x296685(%rip), %rcx    # 0x591d52
leaq 0x295ef7(%rip), %r8     # 0x5915cb
movl $0x1e7, %r9d            # imm = 0x1E7
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2fb6e8
movl 0xf8(%rsp), %eax
orl $0x1, %eax
movl %eax, 0xf8(%rsp)
cmpl $0x0, 0xfc(%rsp)
jne 0x2fb78e
movq 0x148(%rsp), %rax
cmpq $0x0, (%rax)
je 0x2fb78e
movq 0x148(%rsp), %rax
movq (%rax), %rdi
callq 0x11dfa0
cmpq $0x0, %rax
jbe 0x2fb78e
movl 0xf8(%rsp), %eax
orl $0x2, %eax
movl %eax, 0xf8(%rsp)
movq 0x148(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x150(%rsp), %rsi
callq 0x84600
movq %rax, %rcx
movq 0x148(%rsp), %rax
movq %rcx, 0x108(%rax)
movq 0x150(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x2fb781
jmp 0x2fb78c
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2fb78e
cmpl $0x0, 0xfc(%rsp)
jne 0x2fb894
movq 0x148(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x11fcc0
cmpq $0x0, %rax
jbe 0x2fb894
movl 0xf8(%rsp), %eax
orl $0x4, %eax
movl %eax, 0xf8(%rsp)
movq 0x148(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x238094(%rip), %rsi    # 0x533877
callq 0x19980
cmpl $0x0, %eax
jne 0x2fb801
movq 0x148(%rsp), %rax
movl $0x1, 0x40(%rax)
jmp 0x2fb892
movq 0x148(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x232f1c(%rip), %rsi    # 0x52e738
callq 0x19980
cmpl $0x0, %eax
jne 0x2fb837
movq 0x148(%rsp), %rax
movl $0x0, 0x40(%rax)
jmp 0x2fb890
movq 0x148(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
leaq 0x232ee1(%rip), %rsi    # 0x52e733
callq 0x19980
cmpl $0x0, %eax
jne 0x2fb86d
movq 0x148(%rsp), %rax
movl $0x2, 0x40(%rax)
jmp 0x2fb88e
movq 0x150(%rsp), %rdi
leaq 0x233514(%rip), %rsi    # 0x52ed90
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2fb890
jmp 0x2fb892
jmp 0x2fb894
cmpl $0x0, 0xfc(%rsp)
jne 0x2fb8c7
movq 0x168(%rsp), %rax
movslq 0xf4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1747b0
movq %rax, 0x140(%rsp)
movq %rax, 0x100(%rsp)
cmpl $0x0, 0xfc(%rsp)
jne 0x2fb903
callq 0x300d00
movq %rax, 0xc8(%rsp)
movq 0x100(%rsp), %rdi
movq 0xc8(%rsp), %rsi
callq 0x1f6b70
movq %rax, 0x138(%rsp)
movq %rax, 0x100(%rsp)
cmpl $0x0, 0xfc(%rsp)
jne 0x2fba37
movq 0x148(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x11fcc0
cmpq $0x0, %rax
jbe 0x2fba37
movq 0x148(%rsp), %rax
movq 0x30(%rax), %rdi
movq 0x148(%rsp), %rax
movb 0x1d(%rax), %al
movq 0x150(%rsp), %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0x3143c0
movq %rax, 0xe0(%rsp)
cmpq $0x0, 0xe0(%rsp)
je 0x2fba2a
movq 0xe0(%rsp), %rdi
movq 0x148(%rsp), %rax
movsd 0x48(%rax), %xmm0
movq 0x148(%rsp), %rax
movl 0x58(%rax), %esi
movq 0x148(%rsp), %rax
movl 0x40(%rax), %edx
movq 0xe8(%rsp), %rcx
movq 0x150(%rsp), %r8
callq 0x3081d0
movq %rax, 0xc0(%rsp)
cmpq $0x0, 0xc0(%rsp)
jne 0x2fb9ca
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0xfc(%rsp)
jne 0x2fba28
movq 0xc0(%rsp), %rdi
leaq 0x2963a1(%rip), %rsi    # 0x591d84
callq 0x308130
movq 0x148(%rsp), %rax
testb $0x1, 0x1b(%rax)
je 0x2fba03
movq 0xc0(%rsp), %rdi
callq 0x308050
movq 0x100(%rsp), %rdi
movq 0xc0(%rsp), %rsi
callq 0x1f6b70
movq %rax, 0x128(%rsp)
movq %rax, 0x100(%rsp)
jmp 0x2fba35
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2fba37
cmpl $0x0, 0xfc(%rsp)
jne 0x2fbb88
movq 0x148(%rsp), %rax
cmpq $0x0, 0x108(%rax)
je 0x2fbb88
movq 0xe8(%rsp), %rdi
movq 0x148(%rsp), %rax
movl 0xc0(%rax), %esi
movq 0x148(%rsp), %rax
movl 0xc4(%rax), %edx
movq 0x148(%rsp), %r8
movq 0x148(%rsp), %r15
addq $0xd8, %r15
movq 0x148(%rsp), %r14
addq $0xe8, %r14
movq 0x148(%rsp), %rax
movl 0xf8(%rax), %r9d
movq 0x148(%rsp), %rax
movl 0xfc(%rax), %ebp
movq 0x148(%rsp), %rax
movl 0x100(%rax), %ebx
movq 0x148(%rsp), %rax
movl 0x104(%rax), %r11d
movq 0x148(%rsp), %rax
movq 0x108(%rax), %r10
movq 0x150(%rsp), %rax
movq 0xc8(%r8), %rcx
movq 0xd0(%r8), %r8
movq (%r15), %r12
movq %r12, (%rsp)
movq 0x8(%r15), %r15
movq %r15, 0x8(%rsp)
movq (%r14), %r15
movq %r15, 0x10(%rsp)
movq 0x8(%r14), %r14
movq %r14, 0x18(%rsp)
movl %ebp, 0x20(%rsp)
movl %ebx, 0x28(%rsp)
movl %r11d, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
callq 0x306000
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0xb8(%rsp)
je 0x2fbb7b
movq 0x100(%rsp), %rdi
movq 0xb8(%rsp), %rsi
callq 0x1f6b70
movq %rax, 0x118(%rsp)
movq %rax, 0x100(%rsp)
jmp 0x2fbb86
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2fbb88
cmpl $0x0, 0xfc(%rsp)
jne 0x2fbca9
movq 0xe8(%rsp), %rdi
movq 0x148(%rsp), %rcx
movq 0x148(%rsp), %r8
movq 0x148(%rsp), %rax
movsd 0x80(%rax), %xmm0
movq 0x148(%rsp), %rax
movsd 0x88(%rax), %xmm1
movq 0x148(%rsp), %rax
movsd 0x90(%rax), %xmm2
movq 0x148(%rsp), %rax
movsd 0x98(%rax), %xmm3
movq 0x148(%rsp), %rax
movsd 0xa0(%rax), %xmm4
movq 0x148(%rsp), %rax
movsd 0xa8(%rax), %xmm5
movq 0x148(%rsp), %rax
movsd 0xb0(%rax), %xmm6
movq 0x148(%rsp), %rax
movl 0xb8(%rax), %r9d
movq 0x148(%rsp), %rax
movl 0xbc(%rax), %r10d
movq 0x150(%rsp), %rax
movq 0x60(%rcx), %rsi
movq 0x68(%rcx), %rdx
movq 0x70(%r8), %rcx
movq 0x78(%r8), %r8
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x30ba50
movq %rax, 0xb0(%rsp)
cmpq $0x0, 0xb0(%rsp)
je 0x2fbc9c
movq 0x100(%rsp), %rdi
movq 0xb0(%rsp), %rsi
callq 0x1f6b70
movq %rax, 0x120(%rsp)
movq %rax, 0x100(%rsp)
jmp 0x2fbca7
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2fbca9
cmpl $0x0, 0xfc(%rsp)
jne 0x2fbd2a
callq 0x30d760
movq %rax, 0xa8(%rsp)
cmpq $0x0, 0xa8(%rsp)
jne 0x2fbd03
movq 0x3402ce(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x21a337(%rip), %rsi    # 0x516013
leaq 0x2960ab(%rip), %rdx    # 0x591d8e
leaq 0x296068(%rip), %rcx    # 0x591d52
leaq 0x2958da(%rip), %r8     # 0x5915cb
movl $0x24f, %r9d            # imm = 0x24F
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2fbd05
movq 0x100(%rsp), %rdi
movq 0xa8(%rsp), %rsi
callq 0x1f6b70
movq %rax, 0x108(%rsp)
movq %rax, 0x100(%rsp)
cmpl $0x0, 0xfc(%rsp)
jne 0x2fc062
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dfa0
cmpq $0x0, %rax
jbe 0x2fbfc8
movq 0x100(%rsp), %rax
movq %rax, 0x90(%rsp)
movl 0xf8(%rsp), %eax
movl %eax, 0x9c(%rsp)
movq 0xe8(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x148(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dee0
movq 0x90(%rsp), %rdi
movl 0x9c(%rsp), %esi
movq 0xa0(%rsp), %rdx
movq %rax, %rcx
movq 0x148(%rsp), %rax
movl 0x5c(%rax), %r8d
movq 0x150(%rsp), %r9
callq 0x305440
movq %rax, 0x110(%rsp)
movq %rax, 0x100(%rsp)
cmpq $0x0, 0x110(%rsp)
jne 0x2fbdeb
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0xfc(%rsp)
jne 0x2fbf84
movq 0x148(%rsp), %rax
testb $0x1, 0x1c(%rax)
je 0x2fbf84
movq 0x110(%rsp), %rax
movq %rax, 0x70(%rsp)
movl 0xf8(%rsp), %eax
movl %eax, 0x7c(%rsp)
movq 0x148(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq 0x70(%rsp), %rdi
movl 0x7c(%rsp), %esi
movq %rax, %rdx
movq 0x168(%rsp), %rax
movslq 0xf4(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x148(%rsp), %r9
movq 0x148(%rsp), %rax
addq $0x70, %rax
movq %rax, 0x80(%rsp)
movq 0x148(%rsp), %r8
movl 0xb8(%r8), %r13d
movq 0x148(%rsp), %r12
addq $0xc8, %r12
movq 0x148(%rsp), %r8
movl 0xc4(%r8), %ebp
movq 0x148(%rsp), %r15
addq $0xd8, %r15
movq 0x148(%rsp), %r14
addq $0xe8, %r14
movq 0x148(%rsp), %r8
movl 0xc0(%r8), %ebx
movq 0x148(%rsp), %r8
movq 0x30(%r8), %r11
movq 0x148(%rsp), %r8
movl 0x58(%r8), %r10d
movq 0x148(%rsp), %r8
movsd 0x48(%r8), %xmm0
movq 0x150(%rsp), %r8
movq %r8, 0x88(%rsp)
movq 0x60(%r9), %r8
movq 0x68(%r9), %r9
movq (%rax), %rax
movq %rax, (%rsp)
movq 0x80(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x88(%rsp), %rax
movl %r13d, 0x10(%rsp)
movq (%r12), %r13
movq %r13, 0x18(%rsp)
movq 0x8(%r12), %r12
movq %r12, 0x20(%rsp)
movl %ebp, 0x28(%rsp)
movq (%r15), %r12
movq %r12, 0x30(%rsp)
movq 0x8(%r15), %r15
movq %r15, 0x38(%rsp)
movq (%r14), %r15
movq %r15, 0x40(%rsp)
movq 0x8(%r14), %r14
movq %r14, 0x48(%rsp)
movl %ebx, 0x50(%rsp)
movq %r11, 0x58(%rsp)
movl %r10d, 0x60(%rsp)
movq %rax, 0x68(%rsp)
callq 0x304e90
movl %eax, 0xfc(%rsp)
cmpl $0x0, 0xfc(%rsp)
jne 0x2fbfc6
movq 0x148(%rsp), %rax
testb $0x1, 0x19(%rax)
je 0x2fbfa9
movq 0x110(%rsp), %rdi
callq 0x304d90
movq 0x148(%rsp), %rax
testb $0x1, 0x1a(%rax)
je 0x2fbfc4
movq 0x110(%rsp), %rdi
callq 0x304e10
jmp 0x2fbfc6
jmp 0x2fbfc8
cmpl $0x0, 0xfc(%rsp)
jne 0x2fc060
movq 0x100(%rsp), %rdi
movq 0x148(%rsp), %rax
movq 0x28(%rax), %rsi
callq 0x176d50
movq %rax, 0x130(%rsp)
movq %rax, 0x100(%rsp)
cmpq $0x0, 0x100(%rsp)
jne 0x2fc042
movq 0x33ff8f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x219ff8(%rip), %rsi    # 0x516013
leaq 0x223016(%rip), %rdx    # 0x51f038
leaq 0x295d29(%rip), %rcx    # 0x591d52
leaq 0x29559b(%rip), %r8     # 0x5915cb
movl $0x284, %r9d            # imm = 0x284
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2fc044
movq 0x100(%rsp), %rdi
movq 0x150(%rsp), %rsi
callq 0x1b1f90
movl %eax, 0xfc(%rsp)
jmp 0x2fc062
movq 0xe0(%rsp), %rdi
callq 0x314e40
movq 0x130(%rsp), %rdi
callq 0x1b1cb0
movq 0x120(%rsp), %rdi
callq 0x1b1cb0
movq 0x118(%rsp), %rdi
callq 0x1b1cb0
movq 0x108(%rsp), %rdi
callq 0x1b1cb0
movq 0x128(%rsp), %rdi
callq 0x1b1cb0
movq 0x110(%rsp), %rdi
callq 0x1b1cb0
movq 0x138(%rsp), %rdi
callq 0x1b1cb0
movq 0x140(%rsp), %rdi
callq 0x1b1cb0
movq 0x148(%rsp), %rax
movq 0x108(%rax), %rdi
callq 0x84960
movq 0xe8(%rsp), %rdi
callq 0x1c7bd0
movl 0xfc(%rsp), %eax
addq $0x178, %rsp            # imm = 0x178
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)