// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/ltr/ltrdigest_file_out_stream.c
// Function: gt_ltrfileout_stream_next
int gt_ltrfileout_stream_next(GtNodeStream *ns, GtGenomeNode **gn, GtError *err)
{
  GtLTRdigestFileOutStream *ls;
  GtFeatureNode *fn;
  GtRange lltr_rng = {GT_UNDEF_UWORD, GT_UNDEF_UWORD},
          rltr_rng = {GT_UNDEF_UWORD, GT_UNDEF_UWORD},
          ppt_rng = {GT_UNDEF_UWORD, GT_UNDEF_UWORD},
          pbs_rng = {GT_UNDEF_UWORD, GT_UNDEF_UWORD};
  int had_err;
  GtUword i=0;

  gt_error_check(err);
  ls = gt_ltrdigest_file_out_stream_cast(ns);

  /* initialize this element */
  memset(&ls->element, 0, sizeof (GtLTRElement));

  /* get annotations from parser */
  had_err = gt_node_stream_next(ls->in_stream, gn, err);
  if (!had_err && *gn)
  {
    GtFeatureNodeIterator* gni;
    GtFeatureNode *mygn;

    /* only process feature nodes */
    if (!(fn = gt_feature_node_try_cast(*gn)))
      return 0;

    ls->element.pdomorder = gt_array_new(sizeof (const char*));

    /* fill LTRElement structure from GFF3 subgraph */
    gni = gt_feature_node_iterator_new(fn);
    for (mygn = fn; mygn != NULL; mygn = gt_feature_node_iterator_next(gni))
      (void) gt_genome_node_accept((GtGenomeNode*) mygn,
                                   (GtNodeVisitor*) ls->lv,
                                   err);
    gt_feature_node_iterator_delete(gni);
  }

  if (!had_err && ls->element.mainnode != NULL)
  {
    char desc[GT_MAXFASTAHEADER];
    GtFeatureNode *ltr3, *ltr5;
    GtStr *sdesc, *sreg, *seq;

    /* find sequence in GtEncseq */
    sreg = gt_genome_node_get_seqid((GtGenomeNode*) ls->element.mainnode);

    sdesc = gt_str_new();
    had_err = gt_region_mapping_get_description(ls->rmap, sdesc, sreg, err);

    if (!had_err) {
      GtRange rng;
      int ret = 0;

      ls->element.seqid = gt_calloc((size_t) ls->seqnamelen+1, sizeof (char));
      (void) snprintf(ls->element.seqid,
                      GT_MIN((size_t) gt_str_length(sdesc),
                          (size_t) ls->seqnamelen)+1,
                      "%s", gt_str_get(sdesc));
      gt_cstr_rep(ls->element.seqid, ' ', '_');
      if (gt_str_length(sdesc) > (GtUword) ls->seqnamelen)
        ls->element.seqid[ls->seqnamelen] = '\0';

      ret = gt_ltrelement_format_description(&ls->element,
                                             ls->seqnamelen,
                                             desc,
                                             (size_t) (GT_MAXFASTAHEADER-1));
      if (ret < 0) {
        gt_warning("FASTA header truncated: %s", desc);
      }
      gt_str_delete(sdesc);

      /* output basic retrotransposon data */
      lltr_rng = gt_genome_node_get_range((GtGenomeNode*) ls->element.leftLTR);
      rltr_rng = gt_genome_node_get_range((GtGenomeNode*) ls->element.rightLTR);
      rng = gt_genome_node_get_range((GtGenomeNode*) ls->element.mainnode);
      gt_file_xprintf(ls->tabout_file,
                      GT_WU"\t"GT_WU"\t"GT_WU"\t%s\t"GT_WU"\t"GT_WU"\t"GT_WU"\t"
                      GT_WU"\t"GT_WU"\t"GT_WU"\t",
                      rng.start, rng.end, gt_ltrelement_length(&ls->element),
                      ls->element.seqid, lltr_rng.start, lltr_rng.end,
                      gt_ltrelement_leftltrlen(&ls->element), rltr_rng.start,
                      rltr_rng.end, gt_ltrelement_rightltrlen(&ls->element));
    }
    seq = gt_str_new();

    /* output TSDs */
    if (!had_err && ls->element.leftTSD != NULL)
    {
      GtRange tsd_rng;
      tsd_rng = gt_genome_node_get_range((GtGenomeNode*) ls->element.leftTSD);
      had_err = gt_extract_feature_sequence(seq,
                                       (GtGenomeNode*) ls->element.leftTSD,
                                       gt_symbol(gt_ft_target_site_duplication),
                                       false,
                                       NULL, NULL, ls->rmap, err);
      if (!had_err) {
        gt_file_xprintf(ls->tabout_file,
                         ""GT_WU"\t"GT_WU"\t%s\t",
                         tsd_rng.start,
                         tsd_rng.end,
                         gt_str_get(seq));
      }
    gt_str_reset(seq);
    } else gt_file_xprintf(ls->tabout_file, "\t\t\t");

    if (!had_err && ls->element.rightTSD != NULL)
    {
      GtRange tsd_rng;

      tsd_rng = gt_genome_node_get_range((GtGenomeNode*) ls->element.rightTSD);
      had_err = gt_extract_feature_sequence(seq,
                                       (GtGenomeNode*) ls->element.rightTSD,
                                       gt_symbol(gt_ft_target_site_duplication),
                                       false,
                                       NULL, NULL, ls->rmap, err);
      if (!had_err) {
        gt_file_xprintf(ls->tabout_file,
                           ""GT_WU"\t"GT_WU"\t%s\t",
                           tsd_rng.start,
                           tsd_rng.end,
                           gt_str_get(seq));
      }
      gt_str_reset(seq);
    } else gt_file_xprintf(ls->tabout_file, "\t\t\t");

    /* output PPT */
    if (!had_err && ls->element.ppt != NULL)
    {
      GtStrand ppt_strand = gt_feature_node_get_strand(ls->element.ppt);

      ppt_rng = gt_genome_node_get_range((GtGenomeNode*) ls->element.ppt);
      had_err = gt_extract_feature_sequence(seq,
                                            (GtGenomeNode*) ls->element.ppt,
                                            gt_symbol(gt_ft_RR_tract), false,
                                            NULL, NULL, ls->rmap, err);
      if (!had_err) {
        gt_fasta_show_entry(desc, gt_str_get(seq), gt_range_length(&ppt_rng),
                            GT_FSWIDTH, ls->pptout_file);
        gt_file_xprintf(ls->tabout_file,
                           ""GT_WU"\t"GT_WU"\t%s\t%c\t%d\t",
                           ppt_rng.start,
                           ppt_rng.end,
                           gt_str_get(seq),
                           GT_STRAND_CHARS[ppt_strand],
                           (ppt_strand == GT_STRAND_FORWARD ?
                               abs((int) (rltr_rng.start - ppt_rng.end)) :
                               abs((int) (lltr_rng.end - ppt_rng.start))));
      }
      gt_str_reset(seq);
    } else gt_file_xprintf(ls->tabout_file, "\t\t\t\t\t");

    /* output PBS */
    if (!had_err && ls->element.pbs != NULL)
    {
      GtStrand pbs_strand;

      pbs_strand = gt_feature_node_get_strand(ls->element.pbs);
      pbs_rng = gt_genome_node_get_range((GtGenomeNode*) ls->element.pbs);
      had_err = gt_extract_feature_sequence(seq,
                                           (GtGenomeNode*) ls->element.pbs,
                                           gt_symbol(gt_ft_primer_binding_site),
                                           false, NULL, NULL, ls->rmap, err);
      if (!had_err) {
        gt_fasta_show_entry(desc, gt_str_get(seq), gt_range_length(&pbs_rng),
                            GT_FSWIDTH, ls->pbsout_file);
        gt_file_xprintf(ls->tabout_file,
                         ""GT_WU"\t"GT_WU"\t%c\t%s\t%s\t%s\t%s\t%s\t",
                         pbs_rng.start,
                         pbs_rng.end,
                         GT_STRAND_CHARS[pbs_strand],
                         gt_feature_node_get_attribute(ls->element.pbs, "trna"),
                         gt_str_get(seq),
                         gt_feature_node_get_attribute(ls->element.pbs,
                                                       "pbsoffset"),
                         gt_feature_node_get_attribute(ls->element.pbs,
                                                       "trnaoffset"),
                         gt_feature_node_get_attribute(ls->element.pbs,
                                                       "edist"));
      }
      gt_str_reset(seq);
    } else gt_file_xprintf(ls->tabout_file, "\t\t\t\t\t\t\t\t");

    /* output protein domains */
    if (!had_err && ls->element.pdoms != NULL)
    {
      GtStr *pdomorderstr = gt_str_new();
      for (i=0; !had_err && i<gt_array_size(ls->element.pdomorder); i++)
      {
        const char* key = *(const char**) gt_array_get(ls->element.pdomorder,
                                                       i);
        GtArray *entry = (GtArray*) gt_hashmap_get(ls->element.pdoms, key);
        had_err = write_pdom(ls, entry, key, ls->rmap, desc, err);
      }

      if (GT_STRAND_REVERSE == gt_feature_node_get_strand(ls->element.mainnode))
        gt_array_reverse(ls->element.pdomorder);

      for (i=0 ;!had_err && i<gt_array_size(ls->element.pdomorder); i++)
      {
        const char* name = *(const char**) gt_array_get(ls->element.pdomorder,
                                                        i);
        gt_str_append_cstr(pdomorderstr, name);
        if (i != gt_array_size(ls->element.pdomorder)-1)
          gt_str_append_cstr(pdomorderstr, "/");
      }
      gt_file_xprintf(ls->tabout_file, "%s", gt_str_get(pdomorderstr));
      gt_str_delete(pdomorderstr);
    }

    /* output LTRs (we just expect them to exist) */
    switch (gt_feature_node_get_strand(ls->element.mainnode))
    {
      case GT_STRAND_REVERSE:
        ltr5 = ls->element.rightLTR;
        ltr3 = ls->element.leftLTR;
        break;
      case GT_STRAND_FORWARD:
      default:
        ltr5 = ls->element.leftLTR;
        ltr3 = ls->element.rightLTR;
        break;
    }

    if (!had_err) {
      had_err = gt_extract_feature_sequence(seq, (GtGenomeNode*) ltr5,
                                          gt_symbol(gt_ft_long_terminal_repeat),
                                          false,
                                          NULL, NULL, ls->rmap, err);
    }
    if (!had_err) {
      gt_fasta_show_entry(desc, gt_str_get(seq), gt_str_length(seq),
                          GT_FSWIDTH, ls->ltr5out_file);
      gt_str_reset(seq);
    }
    if (!had_err) {
      had_err = gt_extract_feature_sequence(seq, (GtGenomeNode*) ltr3,
                                          gt_symbol(gt_ft_long_terminal_repeat),
                                          false,
                                          NULL, NULL, ls->rmap, err);
    }
    if (!had_err) {
      gt_fasta_show_entry(desc, gt_str_get(seq), gt_str_length(seq),
                          GT_FSWIDTH, ls->ltr3out_file);
      gt_str_reset(seq);
    }

    /* output complete oriented element */
    if (!had_err) {
      had_err = gt_extract_feature_sequence(seq,
                                           (GtGenomeNode*) ls->element.mainnode,
                                           gt_symbol(gt_ft_LTR_retrotransposon),
                                           false,
                                           NULL, NULL, ls->rmap, err);
    }
    if (!had_err) {
      gt_fasta_show_entry(desc,gt_str_get(seq), gt_str_length(seq),
                          GT_FSWIDTH, ls->elemout_file);
      gt_str_reset(seq);
    }
    gt_file_xprintf(ls->tabout_file, "\n");
    gt_str_delete(seq);
  }
  gt_hashmap_delete(ls->element.pdoms);
  gt_array_delete(ls->element.pdomorder);
  gt_free(ls->element.seqid);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x22a8, %rsp           # imm = 0x22A8
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
pcmpeqd %xmm0, %xmm0
movdqa %xmm0, 0x80(%rsp)
movdqa %xmm0, 0x70(%rsp)
testq %rdx, %rdx
je 0x1bdc36
movq %r15, %rdi
callq 0x89eb7
testb %al, %al
jne 0x1beb02
callq 0x1bec19
movq %rax, %rdi
movq %r14, %rsi
callq 0x102c81
movq %rax, %r12
pxor %xmm0, %xmm0
movdqu %xmm0, 0x68(%rax)
movdqu %xmm0, 0x78(%rax)
movdqu %xmm0, 0x88(%rax)
movdqu %xmm0, 0x98(%rax)
movdqu %xmm0, 0xa8(%rax)
movdqu %xmm0, 0xb8(%rax)
movdqu %xmm0, 0xc8(%rax)
movq 0x10(%rax), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x102a22
movl %eax, %ebp
testl %eax, %eax
jne 0x1be9b7
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x1bdcf6
callq 0xdc2f0
testq %rax, %rax
je 0x1bdd46
movq %rax, %rbx
pushq $0x8
popq %rdi
callq 0x5809c
movq %rax, 0xc8(%r12)
movq %rbx, %rdi
callq 0xdc6f0
movq %rax, %r14
testq %rbx, %rbx
je 0x1bdcee
movq 0x58(%r12), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0xdd39c
movq %r14, %rdi
callq 0xdc92e
movq %rax, %rbx
jmp 0x1bdccc
movq %r14, %rdi
callq 0xdc9f1
movq 0x88(%r12), %rdi
testq %rdi, %rdi
je 0x1bdd3f
callq 0xdd14a
movq %rax, %rbx
callq 0xacb84
movq %rax, %r14
movq 0x18(%r12), %rdi
movq %rax, %rsi
movq %rbx, %rdx
movq %r15, %rcx
callq 0x11068b
movl %eax, %ebp
testl %eax, %eax
movq %r15, 0x8(%rsp)
je 0x1bdd4d
pushq $-0x1
popq %r14
movq %r14, 0x10(%rsp)
jmp 0x1bdf1e
xorl %ebp, %ebp
jmp 0x1be9b7
xorl %ebp, %ebp
jmp 0x1be9ea
movl 0x64(%r12), %edi
incq %rdi
leaq 0x1a203f(%rip), %rdx    # 0x35fd9b
pushq $0x1
popq %rsi
movl $0x1a6, %ecx            # imm = 0x1A6
callq 0x9334a
movq %rax, %rbx
movq %rax, 0xc0(%r12)
movq %r14, %rdi
callq 0xad289
movl 0x64(%r12), %r15d
cmpq %r15, %rax
jae 0x1bdd91
movq %r14, %rdi
callq 0xad289
movq %rax, %r15
incq %r15
movq %r14, %rdi
callq 0xad1fa
leaq 0x1ab106(%rip), %rdx    # 0x368ea9
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rcx
xorl %eax, %eax
callq 0x17bf0
movq 0xc0(%r12), %rdi
pushq $0x20
popq %rsi
pushq $0x5f
popq %rdx
callq 0x6c3a8
movq %r14, %rdi
callq 0xad289
movl 0x64(%r12), %r15d
cmpq %r15, %rax
jbe 0x1bddea
movq 0xc0(%r12), %rax
movb $0x0, (%rax,%r15)
movl 0x64(%r12), %r15d
movl $0x1fff, %esi           # imm = 0x1FFF
cmpl %esi, %r15d
cmovbl %r15d, %esi
incl %esi
movq 0xc0(%r12), %rcx
leaq 0x1ab0a2(%rip), %rdx    # 0x368ea9
leaq 0x2a0(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x17bf0
incl %r15d
movb $0x0, 0x2a0(%rsp,%r15)
pushq $0x20
popq %rsi
pushq $0x5f
popq %rdx
movq %rbx, %rdi
callq 0x6c3a8
movq 0x70(%r12), %r8
movq 0x78(%r12), %r9
incq %r8
incq %r9
leaq 0x1a1e24(%rip), %rdx    # 0x35fc6e
leaq 0xa0(%rsp), %rdi
movl $0xff, %esi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x17bf0
testl %eax, %eax
jns 0x1bde7b
leaq 0x1a1f53(%rip), %rdi    # 0x35fdbf
leaq 0xa0(%rsp), %rsi
xorl %eax, %eax
callq 0xb2cd0
movq %r14, %rdi
callq 0xae103
movq 0x90(%r12), %rdi
callq 0xdd1f4
movq %rax, %rbx
movq %rdx, 0x10(%rsp)
movq 0x98(%r12), %rdi
callq 0xdd1f4
movq %rax, %r14
movq %r12, %r13
movq %rdx, %r12
movq 0x88(%r13), %rdi
callq 0xdd1f4
movq %rdx, %rcx
movq 0x68(%r13), %r10
movq 0x70(%r13), %rdx
subq %rdx, %r10
jb 0x1bebc0
movq 0x78(%r13), %r8
movq %r8, %r11
subq 0x80(%r13), %r11
jb 0x1bebea
movq 0x28(%r13), %rdi
incq %r10
movq 0xc0(%r13), %r9
subq %rdx, %r8
incq %r8
incq %r11
leaq 0x1a1eda(%rip), %rsi    # 0x35fdda
movq %rax, %rdx
xorl %eax, %eax
pushq %r11
pushq %r12
pushq %r14
pushq %r10
pushq 0x30(%rsp)
pushq %rbx
callq 0x8d432
addq $0x30, %rsp
movq %r13, %r12
callq 0xacb84
movq %rax, %r15
testl %ebp, %ebp
movq %r12, (%rsp)
je 0x1bdf46
movq 0x28(%r12), %rdi
leaq 0x1a1f28(%rip), %rsi    # 0x35fe62
xorl %eax, %eax
callq 0x8d432
jmp 0x1bdfcf
movq 0xa0(%r12), %rdi
testq %rdi, %rdi
je 0x1bdf2e
callq 0xdd1f4
movq %rax, %rbx
movq %r12, %rbp
movq %rdx, %r12
movq 0xa0(%rbp), %r13
leaq 0x178d5d(%rip), %rdi    # 0x336ccc
callq 0xaed4b
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq 0x8(%rsp)
pushq 0x18(%rbp)
callq 0x29a8d0
popq %rcx
popq %rdx
movl %eax, %ebp
testl %eax, %eax
jne 0x1bdfc3
movq (%rsp), %rax
movq 0x28(%rax), %r13
movq %r15, %rdi
callq 0xad1fa
leaq 0x1a1e52(%rip), %rsi    # 0x35fe02
movq %r13, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x8d432
movq %r15, %rdi
callq 0xad357
movq (%rsp), %r12
movq %r15, 0x20(%rsp)
testl %ebp, %ebp
je 0x1bdff5
movq 0x28(%r12), %rdi
leaq 0x1a1e7e(%rip), %rsi    # 0x35fe62
xorl %eax, %eax
callq 0x8d432
movq 0x8(%rsp), %r15
jmp 0x1be090
movq 0xa8(%r12), %rdi
testq %rdi, %rdi
je 0x1bdfd8
callq 0xdd1f4
movq %rax, %rbx
movq %r12, %rbp
movq %rdx, %r12
movq 0xa8(%rbp), %r13
leaq 0x178cae(%rip), %rdi    # 0x336ccc
callq 0xaed4b
movq 0x20(%rsp), %r15
movq %r15, %rdi
movq %r13, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
movq 0x8(%rsp), %rax
movq %rax, %r13
pushq %rax
pushq 0x18(%rbp)
callq 0x29a8d0
popq %rcx
popq %rdx
movl %eax, %ebp
testl %eax, %eax
jne 0x1be081
movq (%rsp), %rax
movq 0x28(%rax), %r13
movq %r15, %rdi
callq 0xad1fa
leaq 0x1a1d99(%rip), %rsi    # 0x35fe02
movq %r13, %rdi
movq 0x8(%rsp), %r13
movq %rbx, %rdx
movq %r12, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x8d432
movq %r15, %rdi
callq 0xad357
movq (%rsp), %r12
movq %r13, %r15
testl %ebp, %ebp
je 0x1be0ac
movq 0x28(%r12), %rdi
leaq 0x1a1dc0(%rip), %rsi    # 0x35fe60
xorl %eax, %eax
callq 0x8d432
jmp 0x1be1ee
movq 0xb0(%r12), %rdi
testq %rdi, %rdi
je 0x1be094
callq 0xd9d99
movl %eax, %r13d
movq 0xb0(%r12), %rdi
callq 0xdd1f4
movq %rax, 0x80(%rsp)
movq %rdx, 0x88(%rsp)
movq (%rsp), %rax
movq 0xb0(%rax), %r12
leaq 0x1a1d1e(%rip), %rdi    # 0x35fe0e
callq 0xaed4b
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
movq (%rsp), %r12
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r15
pushq 0x18(%r12)
callq 0x29a8d0
popq %rcx
popq %rdx
movl %eax, %ebp
testl %eax, %eax
jne 0x1be1e6
movq %rbx, %rdi
callq 0xad1fa
movl %r13d, %r15d
movq %rax, %r13
leaq 0x80(%rsp), %r12
movq %r12, %rdi
callq 0xa31ee
movq (%rsp), %rcx
movq 0x38(%rcx), %r8
leaq 0xa0(%rsp), %rdi
pushq $0x3c
popq %rcx
movq %r13, %rsi
movq %rax, %rdx
callq 0x8c0bc
movq (%rsp), %rax
movq 0x28(%rax), %r13
movq (%r12), %rax
movq %rax, 0x18(%rsp)
movq %rbp, 0x28(%rsp)
movq 0x8(%r12), %rbp
movq %rbx, %rdi
callq 0xad1fa
movl %r15d, %ecx
leaq 0x14fbc4(%rip), %rdx    # 0x30dd54
movq 0x10(%rsp), %rsi
subl (%r12), %esi
subl 0x8(%r12), %r14d
movq (%rsp), %r12
movsbl (%rcx,%rdx), %r9d
testl %r15d, %r15d
cmovnel %esi, %r14d
movl %r14d, %r10d
negl %r10d
cmovsl %r14d, %r10d
subq $0x8, %rsp
leaq 0x1a1c54(%rip), %rsi    # 0x35fe17
movq %r13, %rdi
movq 0x10(%rsp), %r15
movq 0x20(%rsp), %rdx
movq %rbp, %rcx
movq 0x30(%rsp), %rbp
movq %rax, %r8
xorl %eax, %eax
pushq %r10
callq 0x8d432
popq %rax
popq %rcx
movq %rbx, %rdi
callq 0xad357
testl %ebp, %ebp
je 0x1be20a
movq 0x28(%r12), %rdi
leaq 0x1a1c5f(%rip), %rsi    # 0x35fe5d
xorl %eax, %eax
callq 0x8d432
jmp 0x1be393
movq 0xb8(%r12), %rdi
testq %rdi, %rdi
je 0x1be1f2
callq 0xd9d99
movl %eax, %r13d
movq 0xb8(%r12), %rdi
callq 0xdd1f4
movq %rax, 0x70(%rsp)
movq %rdx, 0x78(%rsp)
movq 0xb8(%r12), %r14
leaq 0x1a1be4(%rip), %rdi    # 0x35fe29
callq 0xaed4b
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r15
pushq 0x18(%r12)
callq 0x29a8d0
popq %rcx
popq %rdx
movl %eax, %ebp
testl %eax, %eax
jne 0x1be38b
movq %rbx, %rdi
callq 0xad1fa
movq %rax, %r14
leaq 0x70(%rsp), %r15
movq %r15, %rdi
callq 0xa31ee
movq 0x30(%r12), %r8
leaq 0xa0(%rsp), %rdi
pushq $0x3c
popq %rcx
movq %r14, %rsi
movq %rax, %rdx
callq 0x8c0bc
movq (%r15), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%r15), %rax
movq %rax, 0x18(%rsp)
movl %r13d, %eax
leaq 0x14fa8e(%rip), %rcx    # 0x30dd54
movsbl (%rax,%rcx), %eax
movl %eax, 0x50(%rsp)
movq (%rsp), %rax
movq 0x28(%rax), %r12
movq (%rsp), %rax
movq 0xb8(%rax), %rdi
leaq 0x1a1b70(%rip), %rsi    # 0x35fe58
callq 0xd9628
movq %rbp, %r13
movq %rax, %rbp
movq %rbx, %rdi
callq 0xad1fa
movq %rax, 0x48(%rsp)
movq (%rsp), %rax
movq 0xb8(%rax), %rdi
leaq 0x1a09f5(%rip), %rsi    # 0x35ed07
callq 0xd9628
movq %rax, %r14
movq (%rsp), %rax
movq 0xb8(%rax), %rdi
leaq 0x1a0a13(%rip), %rsi    # 0x35ed3f
callq 0xd9628
movq %rax, %r15
movq (%rsp), %rax
movq 0xb8(%rax), %rdi
leaq 0x1a1ff1(%rip), %rsi    # 0x360337
callq 0xd9628
movq %rax, %r10
leaq 0x1a1ae8(%rip), %rsi    # 0x35fe3d
movq %r12, %rdi
movq (%rsp), %r12
movq 0x10(%rsp), %rdx
movq 0x18(%rsp), %rcx
movl 0x50(%rsp), %r8d
movq %rbp, %r9
movq %r13, %rbp
xorl %eax, %eax
pushq %r10
pushq %r15
pushq %r14
pushq 0x60(%rsp)
movq 0x28(%rsp), %r15
callq 0x8d432
addq $0x20, %rsp
movq %rbx, %rdi
callq 0xad357
testl %ebp, %ebp
jne 0x1be848
cmpq $0x0, 0xd0(%r12)
je 0x1be7e1
callq 0xacb84
movq %rax, 0x38(%rsp)
pushq $-0x1
popq %rax
movq %rax, 0x28(%rsp)
xorl %r14d, %r14d
xorl %ebp, %ebp
testl %ebp, %ebp
jne 0x1be7ee
movq 0xc8(%r12), %rdi
callq 0x586a4
cmpq %rax, %r14
jae 0x1be7e5
movq 0xc8(%r12), %rdi
movq %r14, 0x58(%rsp)
movq %r14, %rsi
callq 0x581aa
movq (%rax), %rbx
movq 0xd0(%r12), %rdi
movq %rbx, %rsi
callq 0x8f482
movq %rax, %r14
movq 0x18(%r12), %rax
movq %rax, 0x50(%rsp)
testq %r15, %r15
je 0x1be429
movq %r15, %rdi
callq 0x89eb7
testb %al, %al
jne 0x1beb30
callq 0xacb84
movq %rax, 0x18(%rsp)
callq 0xacb84
movq %rax, 0x40(%rsp)
movq 0x20(%r12), %rcx
movl $0xff, %esi
leaq 0x1a0(%rsp), %r15
movq %r15, %rdi
leaq 0x1a1f8b(%rip), %rdx    # 0x3603e4
movq %rbx, %r8
xorl %eax, %eax
callq 0x17bf0
movq %r15, %rdi
leaq 0x1a1f86(%rip), %r13    # 0x3603f3
movq %r13, %rsi
callq 0x8d244
movq %rax, 0x60(%rsp)
cmpb $0x1, 0xd8(%r12)
jne 0x1be4b0
movq 0x20(%r12), %rcx
movl $0xff, %esi
movq %r15, %rdi
leaq 0x1a1f5d(%rip), %rdx    # 0x3603f6
movq %rbx, %r8
xorl %eax, %eax
callq 0x17bf0
movq %r15, %rdi
movq %r13, %rsi
callq 0x8d244
jmp 0x1be4b2
xorl %eax, %eax
movq %rax, 0x68(%rsp)
cmpb $0x1, 0xd9(%r12)
jne 0x1be4f2
movq 0x20(%r12), %rcx
movl $0xff, %esi
movq %r15, %rdi
leaq 0x1a1f2f(%rip), %rdx    # 0x360405
movq %rbx, %r8
xorl %eax, %eax
callq 0x17bf0
movq %r15, %rdi
movq %r13, %rsi
callq 0x8d244
movq %rax, 0x30(%rsp)
jmp 0x1be4fb
movq $0x0, 0x30(%rsp)
movq %r14, %rdi
callq 0x586a4
cmpq $0x2, %rax
jb 0x1be566
pushq $0x1
popq %rbx
movq %r14, %rdi
callq 0x586a4
movq %r14, %rdi
cmpq %rax, %rbx
jae 0x1be54a
movq %rbx, %rsi
callq 0x581aa
movq (%rax), %r15
leaq -0x1(%rbx), %rsi
movq %r14, %rdi
callq 0x581aa
movq (%rax), %rsi
movq %r15, %rdi
callq 0xdcde9
incq %rbx
testl %eax, %eax
jns 0x1be50c
jmp 0x1bea9c
xorl %esi, %esi
callq 0x581aa
movq (%rax), %rdi
callq 0xd9d99
cmpl $0x1, %eax
jne 0x1be566
movq %r14, %rdi
callq 0x583f9
xorl %r13d, %r13d
xorl %ebx, %ebx
movq %r14, %rdi
callq 0x586a4
cmpq %rax, %rbx
jae 0x1be702
movq %r14, %rdi
movq %rbx, 0x10(%rsp)
movq %rbx, %rsi
callq 0x581aa
movq (%rax), %rbx
movq %rbx, %rdi
leaq 0x1a1eea(%rip), %rsi    # 0x360483
callq 0xdd959
movq %rax, %r15
movq %rbx, %rdi
leaq 0x1a1ee7(%rip), %rsi    # 0x360492
callq 0xdd959
movq %rax, %rbp
movq %rbx, %rdi
callq 0xdd1f4
movq %rax, 0x90(%rsp)
movq %rdx, 0x98(%rsp)
leaq 0x162a57(%rip), %rdi    # 0x321029
callq 0xaed4b
movq 0x18(%rsp), %rdi
movq %rbx, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq 0x8(%rsp)
pushq 0x58(%rsp)
callq 0x29a8d0
popq %rcx
popq %rdx
testl %eax, %eax
jne 0x1be795
cmpb $0x1, 0xd8(%r12)
jne 0x1be6aa
testq %r15, %r15
je 0x1be6aa
movq %r13, 0x48(%rsp)
movq %r14, %r13
movq 0x68(%rsp), %r14
testq %r14, %r14
je 0x1beaca
movl $0x1fff, %esi           # imm = 0x1FFF
leaq 0x2a0(%rsp), %r12
movq %r12, %rdi
leaq 0x1a1e5f(%rip), %rdx    # 0x3604a5
leaq 0xa0(%rsp), %rcx
xorl %eax, %eax
callq 0x17bf0
movq %r12, %rdi
callq 0x172d0
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x8d8e3
movq %r15, %rdi
callq 0xad1fa
movq %rax, %r12
movq %r15, %rdi
callq 0xad289
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x8d8e3
movq %r14, %rdi
leaq 0x1a1e55(%rip), %rsi    # 0x3604eb
pushq $0x5
popq %rdx
callq 0x8d8e3
movq (%rsp), %r12
movq %r13, %r14
movq 0x48(%rsp), %r13
cmpb $0x1, 0xd9(%r12)
jne 0x1be6c7
testq %rbp, %rbp
je 0x1be6c7
movq 0x40(%rsp), %rdi
movq %rbp, %rsi
callq 0xacd13
movq %rbx, %rdi
leaq 0x1a1db2(%rip), %rsi    # 0x360483
callq 0xdd9b8
movq %rbx, %rdi
leaq 0x1a1db2(%rip), %rsi    # 0x360492
callq 0xdd9b8
leaq 0x90(%rsp), %rdi
callq 0xa31ee
addq %rax, %r13
movq 0x10(%rsp), %rbx
incq %rbx
jmp 0x1be56b
movq 0x60(%rsp), %rbx
testq %rbx, %rbx
je 0x1beb5e
movq 0x18(%rsp), %rdi
callq 0xad1fa
leaq 0xa0(%rsp), %rdi
movq %rax, %rsi
movq %r13, %rdx
pushq $0x3c
popq %rcx
movq %rbx, %r8
callq 0x8c0bc
xorl %ebp, %ebp
cmpb $0x1, 0xd9(%r12)
movq 0x8(%rsp), %r15
movq 0x58(%rsp), %r14
jne 0x1be7a4
movq 0x30(%rsp), %r13
testq %r13, %r13
je 0x1beb8f
movq %r15, %rbx
movq 0x40(%rsp), %r15
movq %r15, %rdi
callq 0xad1fa
movq %rax, 0x10(%rsp)
movq %r15, %rdi
callq 0xad289
leaq 0xa0(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq %rax, %rdx
pushq $0x3c
popq %rcx
movq %r13, %r8
callq 0x8c0bc
movq %rbx, %r15
jmp 0x1be7a9
pushq $-0x1
popq %rax
movl %eax, %ebp
movq 0x8(%rsp), %r15
movq 0x58(%rsp), %r14
movq 0x30(%rsp), %r13
movq 0x18(%rsp), %rdi
callq 0xae103
movq 0x40(%rsp), %rdi
callq 0xae103
movq %r13, %rdi
callq 0x8da06
movq 0x68(%rsp), %rdi
callq 0x8da06
movq 0x60(%rsp), %rdi
callq 0x8da06
incq %r14
jmp 0x1be3c1
xorl %ebp, %ebp
jmp 0x1be848
movq $0x0, 0x28(%rsp)
movq 0x88(%r12), %rdi
callq 0xd9d99
cmpl $0x1, %eax
jne 0x1be80d
movq 0xc8(%r12), %rdi
callq 0x583f9
testl %ebp, %ebp
movq 0x28(%rsp), %rbp
je 0x1be9fe
movq 0x28(%r12), %rbx
movq 0x38(%rsp), %r14
movq %r14, %rdi
callq 0xad1fa
leaq 0x1aa676(%rip), %rsi    # 0x368ea9
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x8d432
movq %r14, %rdi
callq 0xae103
movq 0x88(%r12), %rdi
callq 0xd9d99
xorl %ecx, %ecx
cmpl $0x1, %eax
setne %dl
testl %ebp, %ebp
jne 0x1be99a
movb %dl, %cl
movq 0x90(%r12,%rcx,8), %rbx
xorl %ecx, %ecx
cmpl $0x1, %eax
sete %cl
movq 0x90(%r12,%rcx,8), %r14
leaq 0x178f8b(%rip), %rdi    # 0x337811
callq 0xaed4b
movq %r15, %r13
movq 0x20(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r13
pushq 0x18(%r12)
callq 0x29a8d0
addq $0x10, %rsp
testl %eax, %eax
jne 0x1be998
movq %r15, %rdi
callq 0xad1fa
movq %rax, %r14
movq %r15, %rdi
callq 0xad289
movq 0x40(%r12), %r8
leaq 0xa0(%rsp), %rdi
pushq $0x3c
popq %rcx
movq %r14, %rsi
movq %rax, %rdx
callq 0x8c0bc
movq %r15, %rdi
callq 0xad357
leaq 0x178f18(%rip), %rdi    # 0x337811
callq 0xaed4b
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r13
pushq 0x18(%r12)
callq 0x29a8d0
addq $0x10, %rsp
testl %eax, %eax
jne 0x1be998
movq %r15, %rdi
callq 0xad1fa
movq %rax, %rbx
movq %r15, %rdi
callq 0xad289
movq 0x48(%r12), %r8
leaq 0xa0(%rsp), %rdi
pushq $0x3c
popq %rcx
movq %rbx, %rsi
movq %rax, %rdx
callq 0x8c0bc
movq %r15, %rdi
callq 0xad357
movq 0x88(%r12), %rbx
leaq 0x1765be(%rip), %rdi    # 0x334f26
callq 0xaed4b
xorl %ebp, %ebp
movq %r15, %rdi
movq %rbx, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r13
pushq 0x18(%r12)
callq 0x29a8d0
addq $0x10, %rsp
testl %eax, %eax
je 0x1bea61
movl %eax, %ebp
movq 0x28(%r12), %rdi
leaq 0x1a1b49(%rip), %rsi    # 0x3604ef
xorl %eax, %eax
callq 0x8d432
movq 0x20(%rsp), %rdi
callq 0xae103
movq 0xd0(%r12), %rdi
callq 0x8f933
movq 0xc8(%r12), %rdi
callq 0x58eb9
movq 0xc0(%r12), %rdi
leaq 0x1a13bb(%rip), %rsi    # 0x35fd9b
movl $0x279, %edx            # imm = 0x279
callq 0x936f9
movl %ebp, %eax
addq $0x22a8, %rsp           # imm = 0x22A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebx, %ebx
leaq 0x140700(%rip), %r14    # 0x2ff107
movq 0xc8(%r12), %rdi
callq 0x586a4
cmpq %rax, %rbx
jae 0x1be81a
movq 0xc8(%r12), %rdi
movq %rbx, %rsi
callq 0x581aa
movq (%rax), %rsi
movq 0x38(%rsp), %rdi
callq 0xacbfb
movq 0xc8(%r12), %rdi
callq 0x586a4
decq %rax
cmpq %rax, %rbx
je 0x1bea5c
movq 0x38(%rsp), %rdi
movq %r14, %rsi
callq 0xacbfb
incq %rbx
jmp 0x1bea07
movq %r15, %rdi
callq 0xad1fa
movq %rax, %rbx
movq %r15, %rdi
callq 0xad289
movq 0x50(%r12), %r8
leaq 0xa0(%rsp), %rdi
pushq $0x3c
popq %rcx
movq %rbx, %rsi
movq %rax, %rdx
callq 0x8c0bc
movq %r15, %rdi
callq 0xad357
jmp 0x1be99a
movq 0x2794c5(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x126566(%rip), %rsi    # 0x2e5013
leaq 0x1a1963(%rip), %rdx    # 0x360417
leaq 0x1a191e(%rip), %rcx    # 0x3603d9
leaq 0x1a12d9(%rip), %r8     # 0x35fd9b
movl $0x11f, %r9d            # imm = 0x11F
jmp 0x1beaf6
movq 0x279497(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x126538(%rip), %rsi    # 0x2e5013
leaq 0x1a19bb(%rip), %rdx    # 0x36049d
leaq 0x1a18f0(%rip), %rcx    # 0x3603d9
leaq 0x1a12ab(%rip), %r8     # 0x35fd9b
movl $0x141, %r9d            # imm = 0x141
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x27945f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x126500(%rip), %rsi    # 0x2e5013
leaq 0x1266a5(%rip), %rdx    # 0x2e51bf
leaq 0x1a1260(%rip), %rcx    # 0x35fd81
leaq 0x1a1273(%rip), %r8     # 0x35fd9b
movl $0x17a, %r9d            # imm = 0x17A
jmp 0x1beaf6
movq 0x279431(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1264d2(%rip), %rsi    # 0x2e5013
leaq 0x126677(%rip), %rdx    # 0x2e51bf
leaq 0x1a188a(%rip), %rcx    # 0x3603d9
leaq 0x1a1245(%rip), %r8     # 0x35fd9b
movl $0xfe, %r9d
jmp 0x1beaf6
movq 0x279403(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1264a4(%rip), %rsi    # 0x2e5013
leaq 0x17f584(%rip), %rdx    # 0x33e0fa
leaq 0x1a185c(%rip), %rcx    # 0x3603d9
leaq 0x1a1217(%rip), %r8     # 0x35fd9b
movl $0x157, %r9d            # imm = 0x157
jmp 0x1beaf6
movq 0x2793d2(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x126473(%rip), %rsi    # 0x2e5013
leaq 0x1a194a(%rip), %rdx    # 0x3604f1
leaq 0x1a182b(%rip), %rcx    # 0x3603d9
leaq 0x1a11e6(%rip), %r8     # 0x35fd9b
movl $0x15f, %r9d            # imm = 0x15F
jmp 0x1beaf6
movq 0x2793a1(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x126442(%rip), %rsi    # 0x2e5013
leaq 0x1a1788(%rip), %rdx    # 0x360360
leaq 0x1a17a5(%rip), %rcx    # 0x360384
leaq 0x1a11b5(%rip), %r8     # 0x35fd9b
pushq $0x5e
jmp 0x1bec12
movq 0x279377(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x126418(%rip), %rsi    # 0x2e5013
leaq 0x1a1797(%rip), %rdx    # 0x360399
leaq 0x1a17b6(%rip), %rcx    # 0x3603bf
leaq 0x1a118b(%rip), %r8     # 0x35fd9b
pushq $0x6a
popq %r9
jmp 0x1beaf6