// File: /workspace/github_c_makefile_star2_O0/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 %r15
pushq %r14
pushq %rbx
subq $0x4a0, %rsp            # imm = 0x4A0
movq %rdi, 0x490(%rsp)
movq %rsi, 0x488(%rsp)
movq %rdx, 0x480(%rsp)
movq 0x23e7bd(%rip), %rax    # 0x541508
movq %rax, 0x460(%rsp)
movq 0x23e7b6(%rip), %rax    # 0x541510
movq %rax, 0x468(%rsp)
movq 0x23e79f(%rip), %rax    # 0x541508
movq %rax, 0x450(%rsp)
movq 0x23e798(%rip), %rax    # 0x541510
movq %rax, 0x458(%rsp)
movq 0x23e781(%rip), %rax    # 0x541508
movq %rax, 0x440(%rsp)
movq 0x23e77a(%rip), %rax    # 0x541510
movq %rax, 0x448(%rsp)
movq 0x23e763(%rip), %rax    # 0x541508
movq %rax, 0x430(%rsp)
movq 0x23e75c(%rip), %rax    # 0x541510
movq %rax, 0x438(%rsp)
movq $0x0, 0x420(%rsp)
cmpq $0x0, 0x480(%rsp)
je 0x302e1e
movq 0x480(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x302de6
jmp 0x302e1e
movq 0x3391b3(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x21321c(%rip), %rsi    # 0x516013
leaq 0x2133c1(%rip), %rdx    # 0x5161bf
leaq 0x28fcc2(%rip), %rcx    # 0x592ac7
leaq 0x28fcd5(%rip), %r8     # 0x592ae1
movl $0x17a, %r9d            # imm = 0x17A
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x302e20
callq 0x304240
movq %rax, %rdi
movq 0x490(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x478(%rsp)
movq 0x478(%rsp), %rdi
addq $0x68, %rdi
xorl %esi, %esi
movl $0x70, %edx
callq 0x19360
movq 0x478(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x488(%rsp), %rsi
movq 0x480(%rsp), %rdx
callq 0x1b1d90
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x302f5c
movq 0x488(%rsp), %rax
cmpq $0x0, (%rax)
je 0x302f5c
movq 0x488(%rsp), %rax
movq (%rax), %rdi
callq 0x170450
movq %rax, 0x470(%rsp)
cmpq $0x0, %rax
jne 0x302ecb
movl $0x0, 0x49c(%rsp)
jmp 0x304228
movl $0x8, %edi
callq 0x80990
movq %rax, %rcx
movq 0x478(%rsp), %rax
movq %rcx, 0xc8(%rax)
movq 0x470(%rsp), %rdi
callq 0x170b00
movq %rax, 0x418(%rsp)
movq 0x470(%rsp), %rax
movq %rax, 0x410(%rsp)
cmpq $0x0, 0x410(%rsp)
je 0x302f4f
movq 0x410(%rsp), %rdi
movq 0x478(%rsp), %rax
movq 0x58(%rax), %rsi
movq 0x480(%rsp), %rdx
callq 0x171f90
movq 0x418(%rsp), %rdi
callq 0x170e30
movq %rax, 0x410(%rsp)
jmp 0x302f0c
movq 0x418(%rsp), %rdi
callq 0x170f50
cmpl $0x0, 0x42c(%rsp)
jne 0x3041d2
movq 0x478(%rsp), %rax
cmpq $0x0, 0x88(%rax)
je 0x3041d2
movq 0x478(%rsp), %rax
movq 0x88(%rax), %rdi
callq 0x171b70
movq %rax, 0x2f0(%rsp)
callq 0x11d4a0
movq %rax, 0x2f8(%rsp)
movq 0x478(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x2f8(%rsp), %rsi
movq 0x2f0(%rsp), %rdx
movq 0x480(%rsp), %rcx
callq 0x1c95a0
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x303369
movl $0x0, 0x2d4(%rsp)
movq 0x478(%rsp), %rax
movl 0x64(%rax), %eax
movl %eax, %edi
addq $0x1, %rdi
movl $0x1, %esi
leaq 0x28fad2(%rip), %rdx    # 0x592ae1
movl $0x1a6, %ecx            # imm = 0x1A6
callq 0xe83c0
movq %rax, %rcx
movq 0x478(%rsp), %rax
movq %rcx, 0xc0(%rax)
movq 0x478(%rsp), %rax
movq 0xc0(%rax), %rax
movq %rax, 0x208(%rsp)
movq 0x2f8(%rsp), %rdi
callq 0x11dfa0
movq 0x478(%rsp), %rcx
movl 0x64(%rcx), %ecx
cmpq %rcx, %rax
jae 0x303076
movq 0x2f8(%rsp), %rdi
callq 0x11dfa0
movq %rax, 0x200(%rsp)
jmp 0x303089
movq 0x478(%rsp), %rax
movl 0x64(%rax), %eax
movq %rax, 0x200(%rsp)
movq 0x200(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1f8(%rsp)
movq 0x2f8(%rsp), %rdi
callq 0x11dee0
movq 0x208(%rsp), %rdi
movq 0x1f8(%rsp), %rsi
movq %rax, %rcx
leaq 0x298f5d(%rip), %rdx    # 0x59c021
movb $0x0, %al
callq 0x19b90
movq 0x478(%rsp), %rax
movq 0xc0(%rax), %rdi
movl $0x20, %esi
movl $0x5f, %edx
callq 0xa2ef0
movq 0x2f8(%rsp), %rdi
callq 0x11dfa0
movq 0x478(%rsp), %rcx
movl 0x64(%rcx), %ecx
cmpq %rcx, %rax
jbe 0x303124
movq 0x478(%rsp), %rax
movq 0xc0(%rax), %rax
movq 0x478(%rsp), %rcx
movl 0x64(%rcx), %ecx
movb $0x0, (%rax,%rcx)
movq 0x478(%rsp), %rdi
addq $0x68, %rdi
movq 0x478(%rsp), %rax
movl 0x64(%rax), %esi
leaq 0x310(%rsp), %rdx
movl $0xff, %ecx
callq 0x304280
movl %eax, 0x2d4(%rsp)
cmpl $0x0, 0x2d4(%rsp)
jge 0x303174
leaq 0x310(%rsp), %rsi
leaq 0x28f998(%rip), %rdi    # 0x592b05
movb $0x0, %al
callq 0x1267d0
movq 0x2f8(%rsp), %rdi
callq 0x11f560
movq 0x478(%rsp), %rax
movq 0x90(%rax), %rdi
callq 0x171cc0
movq %rax, 0x2c0(%rsp)
movq %rdx, 0x2c8(%rsp)
movq 0x2c0(%rsp), %rax
movq %rax, 0x460(%rsp)
movq 0x2c8(%rsp), %rax
movq %rax, 0x468(%rsp)
movq 0x478(%rsp), %rax
movq 0x98(%rax), %rdi
callq 0x171cc0
movq %rax, 0x2b0(%rsp)
movq %rdx, 0x2b8(%rsp)
movq 0x2b0(%rsp), %rax
movq %rax, 0x450(%rsp)
movq 0x2b8(%rsp), %rax
movq %rax, 0x458(%rsp)
movq 0x478(%rsp), %rax
movq 0x88(%rax), %rdi
callq 0x171cc0
movq %rax, 0x2a0(%rsp)
movq %rdx, 0x2a8(%rsp)
movq 0x2a0(%rsp), %rax
movq %rax, 0x2d8(%rsp)
movq 0x2a8(%rsp), %rax
movq %rax, 0x2e0(%rsp)
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x1c0(%rsp)
movq 0x2d8(%rsp), %rax
movq %rax, 0x1c8(%rsp)
movq 0x2e0(%rsp), %rax
movq %rax, 0x1d0(%rsp)
movq 0x478(%rsp), %rdi
addq $0x68, %rdi
callq 0x3043e0
movq %rax, 0x1d8(%rsp)
movq 0x478(%rsp), %rax
movq 0xc0(%rax), %rax
movq %rax, 0x1e0(%rsp)
movq 0x460(%rsp), %r15
movq 0x468(%rsp), %r14
movq 0x478(%rsp), %rdi
addq $0x68, %rdi
callq 0x304450
movq %rax, %rbx
movq 0x450(%rsp), %rax
movq %rax, 0x1e8(%rsp)
movq 0x458(%rsp), %rax
movq %rax, 0x1f0(%rsp)
movq 0x478(%rsp), %rdi
addq $0x68, %rdi
callq 0x3044c0
movq 0x1c0(%rsp), %rdi
movq 0x1c8(%rsp), %rdx
movq 0x1d0(%rsp), %rcx
movq 0x1d8(%rsp), %r8
movq 0x1e0(%rsp), %r9
movq 0x1e8(%rsp), %r11
movq 0x1f0(%rsp), %r10
leaq 0x28f7db(%rip), %rsi    # 0x592b20
movq %r15, (%rsp)
movq %r14, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq %r11, 0x18(%rsp)
movq %r10, 0x20(%rsp)
movq %rax, 0x28(%rsp)
movb $0x0, %al
callq 0xddca0
callq 0x11d4a0
movq %rax, 0x2e8(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x3034db
movq 0x478(%rsp), %rax
cmpq $0x0, 0xa0(%rax)
je 0x3034db
movq 0x478(%rsp), %rax
movq 0xa0(%rax), %rdi
callq 0x171cc0
movq %rax, 0x280(%rsp)
movq %rdx, 0x288(%rsp)
movq 0x280(%rsp), %rax
movq %rax, 0x290(%rsp)
movq 0x288(%rsp), %rax
movq %rax, 0x298(%rsp)
movq 0x2e8(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movq 0x478(%rsp), %rax
movq 0xa0(%rax), %rax
movq %rax, 0x1b8(%rsp)
leaq 0x265f0c(%rip), %rdi    # 0x569318
callq 0x120930
movq 0x1b0(%rsp), %rdi
movq 0x1b8(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x18(%rax), %r10
movq 0x480(%rsp), %rax
xorl %ecx, %ecx
xorl %r8d, %r8d
movl %r8d, %r9d
movq %r9, %r8
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x48f4f0
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x3034cc
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x198(%rsp)
movq 0x290(%rsp), %rax
movq %rax, 0x1a0(%rsp)
movq 0x298(%rsp), %rax
movq %rax, 0x1a8(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq 0x198(%rsp), %rdi
movq 0x1a0(%rsp), %rdx
movq 0x1a8(%rsp), %rcx
movq %rax, %r8
leaq 0x28f683(%rip), %rsi    # 0x592b48
movb $0x0, %al
callq 0xddca0
movq 0x2e8(%rsp), %rdi
callq 0x11e110
jmp 0x3034f5
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rdi
leaq 0x28f6b5(%rip), %rsi    # 0x592ba3
movb $0x0, %al
callq 0xddca0
cmpl $0x0, 0x42c(%rsp)
jne 0x30365a
movq 0x478(%rsp), %rax
cmpq $0x0, 0xa8(%rax)
je 0x30365a
movq 0x478(%rsp), %rax
movq 0xa8(%rax), %rdi
callq 0x171cc0
movq %rax, 0x260(%rsp)
movq %rdx, 0x268(%rsp)
movq 0x260(%rsp), %rax
movq %rax, 0x270(%rsp)
movq 0x268(%rsp), %rax
movq %rax, 0x278(%rsp)
movq 0x2e8(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x478(%rsp), %rax
movq 0xa8(%rax), %rax
movq %rax, 0x190(%rsp)
leaq 0x265d8d(%rip), %rdi    # 0x569318
callq 0x120930
movq 0x188(%rsp), %rdi
movq 0x190(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x18(%rax), %r10
movq 0x480(%rsp), %rax
xorl %ecx, %ecx
xorl %r8d, %r8d
movl %r8d, %r9d
movq %r9, %r8
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x48f4f0
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x30364b
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x170(%rsp)
movq 0x270(%rsp), %rax
movq %rax, 0x178(%rsp)
movq 0x278(%rsp), %rax
movq %rax, 0x180(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq 0x170(%rsp), %rdi
movq 0x178(%rsp), %rdx
movq 0x180(%rsp), %rcx
movq %rax, %r8
leaq 0x28f504(%rip), %rsi    # 0x592b48
movb $0x0, %al
callq 0xddca0
movq 0x2e8(%rsp), %rdi
callq 0x11e110
jmp 0x303674
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rdi
leaq 0x28f536(%rip), %rsi    # 0x592ba3
movb $0x0, %al
callq 0xddca0
cmpl $0x0, 0x42c(%rsp)
jne 0x3038d5
movq 0x478(%rsp), %rax
cmpq $0x0, 0xb0(%rax)
je 0x3038d5
movq 0x478(%rsp), %rax
movq 0xb0(%rax), %rdi
callq 0x16cc70
movl %eax, 0x25c(%rsp)
movq 0x478(%rsp), %rax
movq 0xb0(%rax), %rdi
callq 0x171cc0
movq %rax, 0x248(%rsp)
movq %rdx, 0x250(%rsp)
movq 0x248(%rsp), %rax
movq %rax, 0x440(%rsp)
movq 0x250(%rsp), %rax
movq %rax, 0x448(%rsp)
movq 0x2e8(%rsp), %rax
movq %rax, 0x160(%rsp)
movq 0x478(%rsp), %rax
movq 0xb0(%rax), %rax
movq %rax, 0x168(%rsp)
leaq 0x28f42f(%rip), %rdi    # 0x592b54
callq 0x120930
movq 0x160(%rsp), %rdi
movq 0x168(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x18(%rax), %r10
movq 0x480(%rsp), %rax
xorl %ecx, %ecx
xorl %r8d, %r8d
movl %r8d, %r9d
movq %r9, %r8
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x48f4f0
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x3038c6
leaq 0x310(%rsp), %rax
movq %rax, 0x128(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq %rax, 0x130(%rsp)
leaq 0x440(%rsp), %rdi
callq 0x107320
movq 0x128(%rsp), %rdi
movq 0x130(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x38(%rax), %r8
movl $0x3c, %ecx
callq 0xdbd10
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x138(%rsp)
movq 0x440(%rsp), %rax
movq %rax, 0x140(%rsp)
movq 0x448(%rsp), %rax
movq %rax, 0x148(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq %rax, 0x150(%rsp)
movl 0x25c(%rsp), %eax
movl %eax, %ecx
leaq 0x23bf09(%rip), %rax    # 0x53f73c
movsbl (%rax,%rcx), %eax
movl %eax, 0x15c(%rsp)
cmpl $0x0, 0x25c(%rsp)
jne 0x303868
movq 0x450(%rsp), %rax
subq 0x448(%rsp), %rax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
movl %eax, 0x124(%rsp)
jmp 0x303886
movq 0x468(%rsp), %rax
subq 0x440(%rsp), %rax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
movl %eax, 0x124(%rsp)
movl 0x15c(%rsp), %r9d
movq 0x150(%rsp), %r8
movq 0x148(%rsp), %rcx
movq 0x140(%rsp), %rdx
movq 0x138(%rsp), %rdi
movl 0x124(%rsp), %eax
leaq 0x28f2a1(%rip), %rsi    # 0x592b5d
movl %eax, (%rsp)
movb $0x0, %al
callq 0xddca0
movq 0x2e8(%rsp), %rdi
callq 0x11e110
jmp 0x3038ef
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rdi
leaq 0x28f2b9(%rip), %rsi    # 0x592ba1
movb $0x0, %al
callq 0xddca0
cmpl $0x0, 0x42c(%rsp)
jne 0x303ba0
movq 0x478(%rsp), %rax
cmpq $0x0, 0xb8(%rax)
je 0x303ba0
movq 0x478(%rsp), %rax
movq 0xb8(%rax), %rdi
callq 0x16cc70
movl %eax, 0x244(%rsp)
movq 0x478(%rsp), %rax
movq 0xb8(%rax), %rdi
callq 0x171cc0
movq %rax, 0x230(%rsp)
movq %rdx, 0x238(%rsp)
movq 0x230(%rsp), %rax
movq %rax, 0x430(%rsp)
movq 0x238(%rsp), %rax
movq %rax, 0x438(%rsp)
movq 0x2e8(%rsp), %rax
movq %rax, 0x110(%rsp)
movq 0x478(%rsp), %rax
movq 0xb8(%rax), %rax
movq %rax, 0x118(%rsp)
leaq 0x28f1cf(%rip), %rdi    # 0x592b6f
callq 0x120930
movq 0x110(%rsp), %rdi
movq 0x118(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x18(%rax), %r10
movq 0x480(%rsp), %rax
xorl %ecx, %ecx
xorl %r8d, %r8d
movl %r8d, %r9d
movq %r9, %r8
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x48f4f0
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x303b91
leaq 0x310(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq %rax, 0xd0(%rsp)
leaq 0x430(%rsp), %rdi
callq 0x107320
movq 0xc8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x30(%rax), %r8
movl $0x3c, %ecx
callq 0xdbd10
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0xd8(%rsp)
movq 0x430(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0x438(%rsp), %rax
movq %rax, 0xe8(%rsp)
movl 0x244(%rsp), %eax
movl %eax, %ecx
leaq 0x23bca3(%rip), %rax    # 0x53f73c
movsbl (%rax,%rcx), %eax
movl %eax, 0xf4(%rsp)
movq 0x478(%rsp), %rax
movq 0xb8(%rax), %rdi
leaq 0x28f9b7(%rip), %rsi    # 0x593471
callq 0x16c040
movq %rax, 0xf8(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq %rax, %rbx
movq 0x478(%rsp), %rax
movq 0xb8(%rax), %rdi
leaq 0x28df5a(%rip), %rsi    # 0x591a47
callq 0x16c040
movq %rax, 0x100(%rsp)
movq 0x478(%rsp), %rax
movq 0xb8(%rax), %rdi
leaq 0x28df6f(%rip), %rsi    # 0x591a7f
callq 0x16c040
movq %rax, 0x108(%rsp)
movq 0x478(%rsp), %rax
movq 0xb8(%rax), %rdi
leaq 0x28f545(%rip), %rsi    # 0x593078
callq 0x16c040
movq 0xd8(%rsp), %rdi
movq 0xe0(%rsp), %rdx
movq 0xe8(%rsp), %rcx
movl 0xf4(%rsp), %r8d
movq 0xf8(%rsp), %r9
movq 0x100(%rsp), %r11
movq 0x108(%rsp), %r10
leaq 0x28f00c(%rip), %rsi    # 0x592b83
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movb $0x0, %al
callq 0xddca0
movq 0x2e8(%rsp), %rdi
callq 0x11e110
jmp 0x303bba
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rdi
leaq 0x28efeb(%rip), %rsi    # 0x592b9e
movb $0x0, %al
callq 0xddca0
cmpl $0x0, 0x42c(%rsp)
jne 0x303e82
movq 0x478(%rsp), %rax
cmpq $0x0, 0xd0(%rax)
je 0x303e82
callq 0x11d4a0
movq %rax, 0x228(%rsp)
movq $0x0, 0x420(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x42c(%rsp)
movb %al, 0xc7(%rsp)
jne 0x303c46
movq 0x420(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0x478(%rsp), %rax
movq 0xc8(%rax), %rdi
callq 0x81370
movq %rax, %rcx
movq 0xb8(%rsp), %rax
cmpq %rcx, %rax
setb %al
movb %al, 0xc7(%rsp)
movb 0xc7(%rsp), %al
testb $0x1, %al
jne 0x303c56
jmp 0x303cfa
movq 0x478(%rsp), %rax
movq 0xc8(%rax), %rdi
movq 0x420(%rsp), %rsi
callq 0x80b60
movq (%rax), %rax
movq %rax, 0x220(%rsp)
movq 0x478(%rsp), %rax
movq 0xd0(%rax), %rdi
movq 0x220(%rsp), %rsi
callq 0xe0f20
movq %rax, 0x218(%rsp)
movq 0x478(%rsp), %rdi
movq 0x218(%rsp), %rsi
movq 0x220(%rsp), %rdx
movq 0x478(%rsp), %rax
movq 0x18(%rax), %rcx
leaq 0x310(%rsp), %r8
movq 0x480(%rsp), %r9
callq 0x304530
movl %eax, 0x42c(%rsp)
movq 0x420(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x420(%rsp)
jmp 0x303bf7
movq 0x478(%rsp), %rax
movq 0x88(%rax), %rdi
callq 0x16cc70
movl %eax, %ecx
movl $0x1, %eax
cmpl %ecx, %eax
jne 0x303d2d
movq 0x478(%rsp), %rax
movq 0xc8(%rax), %rdi
callq 0x80f40
movq $0x0, 0x420(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x42c(%rsp)
movb %al, 0xb7(%rsp)
jne 0x303d88
movq 0x420(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x478(%rsp), %rax
movq 0xc8(%rax), %rdi
callq 0x81370
movq %rax, %rcx
movq 0xa8(%rsp), %rax
cmpq %rcx, %rax
setb %al
movb %al, 0xb7(%rsp)
movb 0xb7(%rsp), %al
testb $0x1, %al
jne 0x303d98
jmp 0x303e3b
movq 0x478(%rsp), %rax
movq 0xc8(%rax), %rdi
movq 0x420(%rsp), %rsi
callq 0x80b60
movq (%rax), %rax
movq %rax, 0x210(%rsp)
movq 0x228(%rsp), %rdi
movq 0x210(%rsp), %rsi
callq 0x11d550
movq 0x420(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x478(%rsp), %rax
movq 0xc8(%rax), %rdi
callq 0x81370
movq %rax, %rcx
movq 0xa0(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
je 0x303e20
movq 0x228(%rsp), %rdi
leaq 0x2282cb(%rip), %rsi    # 0x52c0e6
callq 0x11d550
jmp 0x303e22
movq 0x420(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x420(%rsp)
jmp 0x303d39
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x98(%rsp)
movq 0x228(%rsp), %rdi
callq 0x11dee0
movq 0x98(%rsp), %rdi
movq %rax, %rdx
leaq 0x2981b3(%rip), %rsi    # 0x59c021
movb $0x0, %al
callq 0xddca0
movq 0x228(%rsp), %rdi
callq 0x11f560
movq 0x478(%rsp), %rax
movq 0x88(%rax), %rdi
callq 0x16cc70
movl %eax, %ecx
movl %ecx, 0x94(%rsp)
testl %eax, %eax
je 0x303ee3
jmp 0x303ea5
movl 0x94(%rsp), %eax
subl $0x1, %eax
jne 0x303ee5
jmp 0x303eb3
movq 0x478(%rsp), %rax
movq 0x98(%rax), %rax
movq %rax, 0x300(%rsp)
movq 0x478(%rsp), %rax
movq 0x90(%rax), %rax
movq %rax, 0x308(%rsp)
jmp 0x303f13
jmp 0x303ee5
movq 0x478(%rsp), %rax
movq 0x90(%rax), %rax
movq %rax, 0x300(%rsp)
movq 0x478(%rsp), %rax
movq 0x98(%rax), %rax
movq %rax, 0x308(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x303f90
movq 0x2e8(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x300(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq 0x265f72(%rip), %rdi    # 0x569eb6
callq 0x120930
movq 0x80(%rsp), %rdi
movq 0x88(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x18(%rax), %r10
movq 0x480(%rsp), %rax
xorl %ecx, %ecx
xorl %r8d, %r8d
movl %r8d, %r9d
movq %r9, %r8
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x48f4f0
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x303ff6
leaq 0x310(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq %rax, 0x78(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dfa0
movq 0x70(%rsp), %rdi
movq 0x78(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x40(%rax), %r8
movl $0x3c, %ecx
callq 0xdbd10
movq 0x2e8(%rsp), %rdi
callq 0x11e110
cmpl $0x0, 0x42c(%rsp)
jne 0x304067
movq 0x2e8(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x308(%rsp), %rax
movq %rax, 0x68(%rsp)
leaq 0x265e95(%rip), %rdi    # 0x569eb6
callq 0x120930
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x18(%rax), %r10
movq 0x480(%rsp), %rax
xorl %ecx, %ecx
xorl %r8d, %r8d
movl %r8d, %r9d
movq %r9, %r8
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x48f4f0
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x3040cd
leaq 0x310(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq %rax, 0x58(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dfa0
movq 0x50(%rsp), %rdi
movq 0x58(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x48(%rax), %r8
movl $0x3c, %ecx
callq 0xdbd10
movq 0x2e8(%rsp), %rdi
callq 0x11e110
cmpl $0x0, 0x42c(%rsp)
jne 0x304145
movq 0x2e8(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x478(%rsp), %rax
movq 0x88(%rax), %rax
movq %rax, 0x48(%rsp)
leaq 0x26343d(%rip), %rdi    # 0x56753c
callq 0x120930
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x18(%rax), %r10
movq 0x480(%rsp), %rax
xorl %ecx, %ecx
xorl %r8d, %r8d
movl %r8d, %r9d
movq %r9, %r8
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x48f4f0
movl %eax, 0x42c(%rsp)
cmpl $0x0, 0x42c(%rsp)
jne 0x3041ab
leaq 0x310(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dee0
movq %rax, 0x38(%rsp)
movq 0x2e8(%rsp), %rdi
callq 0x11dfa0
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq %rax, %rdx
movq 0x478(%rsp), %rax
movq 0x50(%rax), %r8
movl $0x3c, %ecx
callq 0xdbd10
movq 0x2e8(%rsp), %rdi
callq 0x11e110
movq 0x478(%rsp), %rax
movq 0x28(%rax), %rdi
leaq 0x28f0b5(%rip), %rsi    # 0x593273
movb $0x0, %al
callq 0xddca0
movq 0x2e8(%rsp), %rdi
callq 0x11f560
movq 0x478(%rsp), %rax
movq 0xd0(%rax), %rdi
callq 0xe1770
movq 0x478(%rsp), %rax
movq 0xc8(%rax), %rdi
callq 0x81f80
movq 0x478(%rsp), %rax
movq 0xc0(%rax), %rdi
leaq 0x28e8d1(%rip), %rsi    # 0x592ae1
movl $0x279, %edx            # imm = 0x279
callq 0xe88c0
movl 0x42c(%rsp), %eax
movl %eax, 0x49c(%rsp)
movl 0x49c(%rsp), %eax
addq $0x4a0, %rsp            # imm = 0x4A0
popq %rbx
popq %r14
popq %r15
retq
nopl (%rax)