// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tir_stream.c
// Function: gt_tir_stream_next
static int gt_tir_stream_next(GtNodeStream *ns, GT_UNUSED GtGenomeNode **gn,
                              GtError *err)
{
  GtTIRStream *tir_stream;
  int had_err = 0;
  gt_error_check(err);
  tir_stream = gt_node_stream_cast(gt_tir_stream_class(), ns);

  /* generate and check seeds */
   if (tir_stream->state == GT_TIR_STREAM_STATE_START) {
    if (!had_err && gt_enumeratemaxpairs(tir_stream->ssar,
                      (unsigned int) tir_stream->min_seed_length,
                      gt_tir_store_seeds,
                      &tir_stream->seedinfo,
                      err) != 0) {
      had_err = -1;
    }

    /* extend seeds to TIRs and check TIRs */
    if (!had_err && gt_tir_searchforTIRs(tir_stream,
                                         tir_stream->encseq, err) != 0) {
      had_err = -1;
    }

    GT_FREEARRAY(&tir_stream->seedinfo.seed, Seed);
    tir_stream->state = GT_TIR_STREAM_STATE_REGIONS;
  }

  /* stream out the region nodes */
  if (!had_err && tir_stream->state == GT_TIR_STREAM_STATE_REGIONS) {
    bool skip = false;

    /* check whether index is valid */
    if (tir_stream->cur_elem_index < tir_stream->num_of_tirs) {
      GtUword seqnum, seqlength;
      GtGenomeNode *rn;
      GtStr *seqid;
      seqnum = tir_stream->tir_pairs[tir_stream->cur_elem_index]->contignumber;

      /* if first time we do this */
      if (tir_stream->prev_seqnum == GT_UNDEF_UWORD) {
        /* use current seqnum */
        tir_stream->prev_seqnum = seqnum;
      } else {
        /* else get seqnum of next contig */
        while (tir_stream->prev_seqnum == seqnum) {
          tir_stream->cur_elem_index++;

          /* do not go on if index is out of bounds */
          if (tir_stream->cur_elem_index >= tir_stream->num_of_tirs) {
            skip = true;
            break;
          }
          seqnum =
                tir_stream->tir_pairs[tir_stream->cur_elem_index]->contignumber;
        }
      }

      /* create node */
      if (!skip) {
        tir_stream->prev_seqnum = seqnum;
        seqlength = gt_encseq_seqlength(tir_stream->encseq, seqnum);
        seqid = gt_str_new();

        if (gt_encseq_has_md5_support(tir_stream->encseq)
              && tir_stream->output_md5) {
          GtMD5Tab *md5_tab = NULL;
          md5_tab = gt_encseq_get_md5_tab(tir_stream->encseq, err);
          if (!md5_tab) {
            had_err = -1;
            gt_str_delete(seqid);
          }
          if (!had_err) {
            gt_str_append_cstr(seqid, GT_MD5_SEQID_PREFIX);
            gt_str_append_cstr(seqid, gt_md5_tab_get(md5_tab, seqnum));
            gt_str_append_char(seqid, GT_MD5_SEQID_SEPARATOR);
          }
          gt_md5_tab_delete(md5_tab);
        }

        if (!had_err) {
          if (gt_encseq_has_description_support(tir_stream->encseq)
                && tir_stream->output_seqids) {
            GtUword desclength = 0UL, i = 0UL;
            const char *desc;
            desc = gt_encseq_description(tir_stream->encseq,
                                         &desclength, seqnum);
            while (*(desc+i) != ' ' && i != desclength)
              i++;
            gt_str_append_cstr_nt(seqid, desc, i);
          } else {
            gt_str_append_cstr(seqid, "seq");
            gt_str_append_uword(seqid, seqnum);
          }
          rn = gt_region_node_new(seqid, 1, seqlength);
          gt_str_delete(seqid);
          *gn = rn;
          tir_stream->cur_elem_index++;
        }
      } else {
        /* skipping */
        tir_stream->cur_elem_index = 0;
        tir_stream->state = GT_TIR_STREAM_STATE_COMMENTS;
        *gn = NULL;
      }
    } else {
      /* no valid index */
      tir_stream->cur_elem_index = 0;
      tir_stream->state = GT_TIR_STREAM_STATE_COMMENTS;
      *gn = NULL;
    }
  }

  /* then stream out the comment nodes */
  if (!had_err && tir_stream->state == GT_TIR_STREAM_STATE_COMMENTS)
  {
    bool skip = false;
    if (tir_stream->cur_elem_index < tir_stream->num_of_tirs) {
      const char *description;
      GtUword description_len, seqnum;
      GtGenomeNode *cn;

      seqnum = tir_stream->tir_pairs[tir_stream->cur_elem_index]->contignumber;

      /* for the first time */
      if (tir_stream->prev_seqnum == GT_UNDEF_WORD) {
        /* use current seqnum */
        tir_stream->prev_seqnum = seqnum;
      } else {
        /* else get seqnum of next contig */
        while (tir_stream->prev_seqnum == seqnum) {
          tir_stream->cur_elem_index++;

          if (tir_stream->cur_elem_index >= tir_stream->num_of_tirs) {
            skip = true;
            break;
          }
          seqnum =
                tir_stream->tir_pairs[tir_stream->cur_elem_index]->contignumber;
        }
      }

      /* create a new comment node */
      if (!skip) {
        char description_string[BUFSIZ];
        tir_stream->prev_seqnum = seqnum;

        /* get description and descriptionlength of current contig */
        description = gt_encseq_description(tir_stream->encseq,
                                            &description_len, seqnum);

       (void) strncpy(description_string, description,
                      (size_t) (description_len * sizeof (char)));
        description_string[description_len] = '\0';

        /* make a new comment node */
        cn = gt_comment_node_new(description_string);

        *gn = cn;
        tir_stream->cur_elem_index++;
      } else {
        /* skipping */
        tir_stream->cur_elem_index = 0;
        tir_stream->state = GT_TIR_STREAM_STATE_FEATURES;
        *gn = NULL;
      }
    } else {
      /* no valid index */
      tir_stream->cur_elem_index = 0;
      tir_stream->state = GT_TIR_STREAM_STATE_FEATURES;
      *gn = NULL;
    }
  }

  /* finally stream out the features */
  if (!had_err && tir_stream->state == GT_TIR_STREAM_STATE_FEATURES) {
    if (tir_stream->cur_elem_index < tir_stream->num_of_tirs) {
      GtStr *seqid, *source;
      GtGenomeNode *node, GT_UNUSED *parent;
      const TIRPair *pair =
                tir_stream->tir_pairs[tir_stream->cur_elem_index];
      GtUword seqstartpos;
      char buf[BUFSIZ];

      gt_assert(!pair->skip);
      gt_assert(pair->tsd_length > 0);

      seqstartpos = gt_encseq_seqstartpos(tir_stream->encseq,
                                          pair->contignumber);
      seqid = gt_str_new();
      source = gt_str_new_cstr("TIRvish");

      if (gt_encseq_has_md5_support(tir_stream->encseq)
            && tir_stream->output_md5) {
        GtMD5Tab *md5_tab = NULL;
        md5_tab = gt_encseq_get_md5_tab(tir_stream->encseq, err);
        if (!md5_tab) {
          had_err = -1;
          gt_str_delete(seqid);
        }
        if (!had_err) {
          gt_str_append_cstr(seqid, GT_MD5_SEQID_PREFIX);
          gt_str_append_cstr(seqid, gt_md5_tab_get(md5_tab,
                                                   pair->contignumber));
          gt_str_append_char(seqid, GT_MD5_SEQID_SEPARATOR);
        }
        gt_md5_tab_delete(md5_tab);
      }

      if (!had_err && gt_encseq_has_description_support(tir_stream->encseq)
            && tir_stream->output_seqids) {
        GtUword desclength = 0UL, i = 0UL;
        const char *desc;
        desc = gt_encseq_description(tir_stream->encseq,
                                     &desclength, pair->contignumber);
        while (*(desc+i) != ' ' && i != desclength)
          i++;
        gt_str_append_cstr_nt(seqid, desc, i);
      } else {
        gt_str_append_cstr(seqid, "seq");
        gt_str_append_uword(seqid, pair->contignumber);
      }

      /* repeat region */
      node = gt_feature_node_new(seqid, gt_ft_repeat_region,
                                 pair->left_tir_start - seqstartpos -
                                   pair->tsd_length + 1,
                                 pair->right_transformed_end - seqstartpos
                                   + pair->tsd_length + 1,
                                 GT_STRAND_UNKNOWN);
      gt_feature_node_set_source((GtFeatureNode*) node, source);
      *gn = node;
      parent = node;

      /* target site duplication */

      if (tir_stream->min_TSD_length > 1U) {
        node = gt_feature_node_new(seqid,
                       gt_ft_target_site_duplication,
                       pair->left_tir_start - seqstartpos + 1
                         - pair->tsd_length,
                       pair->left_tir_start - seqstartpos,
                       GT_STRAND_UNKNOWN);
        gt_feature_node_set_source((GtFeatureNode*) node, source);
        gt_feature_node_add_child((GtFeatureNode*) parent,
                      (GtFeatureNode*) node);

        node = gt_feature_node_new(seqid,
                       gt_ft_target_site_duplication,
                       pair->right_transformed_end - seqstartpos + 2,
                       pair->right_transformed_end - seqstartpos + 1
                       + pair->tsd_length,
                       GT_STRAND_UNKNOWN);
        gt_feature_node_set_source((GtFeatureNode*) node, source);
        gt_feature_node_add_child((GtFeatureNode*) parent,
                      (GtFeatureNode*) node);
      }

      /* terminal inverted repeat element */

      node = gt_feature_node_new(seqid, gt_ft_terminal_inverted_repeat_element,
                                 pair->left_tir_start - seqstartpos + 1,
                                 pair->right_transformed_end - seqstartpos +1,
                                 GT_STRAND_UNKNOWN);
      gt_feature_node_set_source((GtFeatureNode*) node, source);
      gt_feature_node_add_child((GtFeatureNode*) parent, (GtFeatureNode*)node);
      (void) snprintf(buf, BUFSIZ-1, "%.2f", pair->similarity);
      gt_feature_node_set_attribute((GtFeatureNode*) node,
                                    "tir_similarity",
                                    buf);
      parent = node;

      /* left terminal inverted repeat */

      node = gt_feature_node_new(seqid, gt_ft_terminal_inverted_repeat,
                                 pair->left_tir_start - seqstartpos + 1,
                                 pair->left_tir_end - seqstartpos + 1,
                                 GT_STRAND_UNKNOWN);
      gt_feature_node_set_source((GtFeatureNode*)node, source);
      gt_feature_node_add_child((GtFeatureNode*)parent, (GtFeatureNode*)node);

      /* right terminal inverted repeat */

      node = gt_feature_node_new(seqid, gt_ft_terminal_inverted_repeat,
                                pair->right_transformed_start - seqstartpos + 1,
                                pair->right_transformed_end - seqstartpos + 1,
                                GT_STRAND_UNKNOWN);
      gt_feature_node_set_source((GtFeatureNode*)node, source);
      gt_feature_node_add_child((GtFeatureNode*)parent, (GtFeatureNode*)node);

      /* clean up and get next pair */
      gt_str_delete(seqid);
      gt_str_delete(source);
      tir_stream->cur_elem_index++;
    } else {
      *gn = NULL;
    }
  }
  return had_err;
}

// Assembly:
subq $0x4108, %rsp           # imm = 0x4108
movq %rdi, 0x4100(%rsp)
movq %rsi, 0x40f8(%rsp)
movq %rdx, 0x40f0(%rsp)
movl $0x0, 0x40e4(%rsp)
cmpq $0x0, 0x40f0(%rsp)
je 0x1ef580
movq 0x40f0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1ef548
jmp 0x1ef580
movq 0x44ca51(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x326aba(%rip), %rsi    # 0x516013
leaq 0x326c5f(%rip), %rdx    # 0x5161bf
leaq 0x379d6f(%rip), %rcx    # 0x5692d6
leaq 0x379cc1(%rip), %r8     # 0x56922f
movl $0x293, %r9d            # imm = 0x293
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1ef582
callq 0x1ef3f0
movq %rax, %rdi
movq 0x4100(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x40e8(%rsp)
movq 0x40e8(%rsp), %rax
cmpl $0x0, 0x90(%rax)
jne 0x1ef6b8
cmpl $0x0, 0x40e4(%rsp)
jne 0x1ef60b
movq 0x40e8(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x40e8(%rsp), %rax
movq 0xb8(%rax), %rax
movl %eax, %esi
movq 0x40e8(%rsp), %rcx
addq $0x20, %rcx
movq 0x40f0(%rsp), %r8
leaq 0x14aa(%rip), %rdx      # 0x1f0aa0
callq 0x235ee0
cmpl $0x0, %eax
je 0x1ef60b
movl $0xffffffff, 0x40e4(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x40e4(%rsp)
jne 0x1ef646
movq 0x40e8(%rsp), %rdi
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rsi
movq 0x40f0(%rsp), %rdx
callq 0x1f0e20
cmpl $0x0, %eax
je 0x1ef646
movl $0xffffffff, 0x40e4(%rsp) # imm = 0xFFFFFFFF
jmp 0x1ef648
movq 0x40e8(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x1ef6a4
movq 0x40e8(%rsp), %rax
movq 0x20(%rax), %rdi
leaq 0x379bc5(%rip), %rsi    # 0x56922f
movl $0x2a6, %edx            # imm = 0x2A6
callq 0xe88c0
movq 0x40e8(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x40e8(%rsp), %rax
movq $0x0, 0x30(%rax)
movq 0x40e8(%rsp), %rax
movq $0x0, 0x20(%rax)
jmp 0x1ef6a6
movq 0x40e8(%rsp), %rax
movl $0x1, 0x90(%rax)
cmpl $0x0, 0x40e4(%rsp)
jne 0x1efb13
movq 0x40e8(%rsp), %rax
cmpl $0x1, 0x90(%rax)
jne 0x1efb13
movb $0x0, 0x40e3(%rsp)
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rax
movq 0x40e8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
jae 0x1efadd
movq 0x40e8(%rsp), %rax
movq 0x70(%rax), %rax
movq 0x40e8(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rax
movq %rax, 0x40d8(%rsp)
movq 0x40e8(%rsp), %rax
cmpq $-0x1, 0xa8(%rax)
jne 0x1ef75f
movq 0x40d8(%rsp), %rcx
movq 0x40e8(%rsp), %rax
movq %rcx, 0xa8(%rax)
jmp 0x1ef7ef
jmp 0x1ef761
movq 0x40e8(%rsp), %rax
movq 0xa8(%rax), %rax
cmpq 0x40d8(%rsp), %rax
jne 0x1ef7ed
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xa0(%rax)
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rax
movq 0x40e8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
jb 0x1ef7be
movb $0x1, 0x40e3(%rsp)
jmp 0x1ef7ed
movq 0x40e8(%rsp), %rax
movq 0x70(%rax), %rax
movq 0x40e8(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rax
movq %rax, 0x40d8(%rsp)
jmp 0x1ef761
jmp 0x1ef7ef
testb $0x1, 0x40e3(%rsp)
jne 0x1efaa7
movq 0x40d8(%rsp), %rcx
movq 0x40e8(%rsp), %rax
movq %rcx, 0xa8(%rax)
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x40d8(%rsp), %rsi
callq 0xb09f0
movq %rax, 0x40d0(%rsp)
callq 0x11d4a0
movq %rax, 0x40c0(%rsp)
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xb3120
testb $0x1, %al
jne 0x1ef85c
jmp 0x1ef92d
movq 0x40e8(%rsp), %rax
testb $0x1, 0x104(%rax)
je 0x1ef92d
movq $0x0, 0x40b8(%rsp)
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x40f0(%rsp), %rsi
callq 0xb3060
movq %rax, 0x40b8(%rsp)
cmpq $0x0, 0x40b8(%rsp)
jne 0x1ef8c1
movl $0xffffffff, 0x40e4(%rsp) # imm = 0xFFFFFFFF
movq 0x40c0(%rsp), %rdi
callq 0x11f560
cmpl $0x0, 0x40e4(%rsp)
jne 0x1ef920
movq 0x40c0(%rsp), %rdi
leaq 0x34e56f(%rip), %rsi    # 0x53de49
callq 0x11d550
movq 0x40c0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x40b8(%rsp), %rdi
movq 0x40d8(%rsp), %rsi
callq 0xefd30
movq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x11d550
movq 0x40c0(%rsp), %rdi
movl $0x3a, %esi
callq 0x11da70
movq 0x40b8(%rsp), %rdi
callq 0xefc30
cmpl $0x0, 0x40e4(%rsp)
jne 0x1efaa5
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xb24d0
testb $0x1, %al
jne 0x1ef955
jmp 0x1efa20
movq 0x40e8(%rsp), %rax
testb $0x1, 0x103(%rax)
je 0x1efa20
movq $0x0, 0x40b0(%rsp)
movq $0x0, 0x40a8(%rsp)
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x40d8(%rsp), %rdx
leaq 0x40b0(%rsp), %rsi
callq 0xb1b40
movq %rax, 0x40a0(%rsp)
movq 0x40a0(%rsp), %rax
movq 0x40a8(%rsp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x20, %ecx
movb %al, 0x17(%rsp)
je 0x1ef9e1
movq 0x40a8(%rsp), %rax
cmpq 0x40b0(%rsp), %rax
setne %al
movb %al, 0x17(%rsp)
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x1ef9eb
jmp 0x1efa01
movq 0x40a8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x40a8(%rsp)
jmp 0x1ef9ab
movq 0x40c0(%rsp), %rdi
movq 0x40a0(%rsp), %rsi
movq 0x40a8(%rsp), %rdx
callq 0x11d830
jmp 0x1efa49
movq 0x40c0(%rsp), %rdi
leaq 0x334749(%rip), %rsi    # 0x524178
callq 0x11d550
movq 0x40c0(%rsp), %rdi
movq 0x40d8(%rsp), %rsi
callq 0x11d930
movq 0x40c0(%rsp), %rdi
movq 0x40d0(%rsp), %rdx
movl $0x1, %esi
callq 0x1ca610
movq %rax, 0x40c8(%rsp)
movq 0x40c0(%rsp), %rdi
callq 0x11f560
movq 0x40c8(%rsp), %rcx
movq 0x40f8(%rsp), %rax
movq %rcx, (%rax)
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xa0(%rax)
jmp 0x1efadb
movq 0x40e8(%rsp), %rax
movq $0x0, 0xa0(%rax)
movq 0x40e8(%rsp), %rax
movl $0x2, 0x90(%rax)
movq 0x40f8(%rsp), %rax
movq $0x0, (%rax)
jmp 0x1efb11
movq 0x40e8(%rsp), %rax
movq $0x0, 0xa0(%rax)
movq 0x40e8(%rsp), %rax
movl $0x2, 0x90(%rax)
movq 0x40f8(%rsp), %rax
movq $0x0, (%rax)
jmp 0x1efb13
cmpl $0x0, 0x40e4(%rsp)
jne 0x1efd82
movq 0x40e8(%rsp), %rax
cmpl $0x2, 0x90(%rax)
jne 0x1efd82
movb $0x0, 0x409f(%rsp)
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rax
movq 0x40e8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
jae 0x1efd4c
movq 0x40e8(%rsp), %rax
movq 0x70(%rax), %rax
movq 0x40e8(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rax
movq %rax, 0x4080(%rsp)
movq 0x40e8(%rsp), %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
cmpq %rcx, 0xa8(%rax)
jne 0x1efbc3
movq 0x4080(%rsp), %rcx
movq 0x40e8(%rsp), %rax
movq %rcx, 0xa8(%rax)
jmp 0x1efc53
jmp 0x1efbc5
movq 0x40e8(%rsp), %rax
movq 0xa8(%rax), %rax
cmpq 0x4080(%rsp), %rax
jne 0x1efc51
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xa0(%rax)
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rax
movq 0x40e8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
jb 0x1efc22
movb $0x1, 0x409f(%rsp)
jmp 0x1efc51
movq 0x40e8(%rsp), %rax
movq 0x70(%rax), %rax
movq 0x40e8(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rax
movq %rax, 0x4080(%rsp)
jmp 0x1efbc5
jmp 0x1efc53
testb $0x1, 0x409f(%rsp)
jne 0x1efd16
movq 0x4080(%rsp), %rcx
movq 0x40e8(%rsp), %rax
movq %rcx, 0xa8(%rax)
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x4080(%rsp), %rdx
leaq 0x4088(%rsp), %rsi
callq 0xb1b40
movq %rax, 0x4090(%rsp)
leaq 0x2070(%rsp), %rdi
movq 0x4090(%rsp), %rsi
movq 0x4088(%rsp), %rdx
shlq $0x0, %rdx
callq 0x19330
movq 0x4088(%rsp), %rax
movb $0x0, 0x2070(%rsp,%rax)
leaq 0x2070(%rsp), %rdi
callq 0x48d7e0
movq %rax, 0x4078(%rsp)
movq 0x4078(%rsp), %rcx
movq 0x40f8(%rsp), %rax
movq %rcx, (%rax)
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xa0(%rax)
jmp 0x1efd4a
movq 0x40e8(%rsp), %rax
movq $0x0, 0xa0(%rax)
movq 0x40e8(%rsp), %rax
movl $0x3, 0x90(%rax)
movq 0x40f8(%rsp), %rax
movq $0x0, (%rax)
jmp 0x1efd80
movq 0x40e8(%rsp), %rax
movq $0x0, 0xa0(%rax)
movq 0x40e8(%rsp), %rax
movl $0x3, 0x90(%rax)
movq 0x40f8(%rsp), %rax
movq $0x0, (%rax)
jmp 0x1efd82
cmpl $0x0, 0x40e4(%rsp)
jne 0x1f0472
movq 0x40e8(%rsp), %rax
cmpl $0x3, 0x90(%rax)
jne 0x1f0472
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rax
movq 0x40e8(%rsp), %rcx
cmpq 0x98(%rcx), %rax
jae 0x1f0461
movq 0x40e8(%rsp), %rax
movq 0x70(%rax), %rax
movq 0x40e8(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x2048(%rsp)
movq 0x2048(%rsp), %rax
testb $0x1, 0x30(%rax)
je 0x1efe36
movq 0x44c19b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x326204(%rip), %rsi    # 0x516013
leaq 0x3794d3(%rip), %rdx    # 0x5692e9
leaq 0x3794b9(%rip), %rcx    # 0x5692d6
leaq 0x37940b(%rip), %r8     # 0x56922f
movl $0x346, %r9d            # imm = 0x346
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1efe38
jmp 0x1efe3a
movq 0x2048(%rsp), %rax
cmpq $0x0, 0x38(%rax)
ja 0x1efe81
movq 0x44c150(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3261b9(%rip), %rsi    # 0x516013
leaq 0x379494(%rip), %rdx    # 0x5692f5
leaq 0x37946e(%rip), %rcx    # 0x5692d6
leaq 0x3793c0(%rip), %r8     # 0x56922f
movl $0x347, %r9d            # imm = 0x347
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1efe83
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x2048(%rsp), %rax
movq (%rax), %rsi
callq 0xb0530
movq %rax, 0x2040(%rsp)
callq 0x11d4a0
movq %rax, 0x2068(%rsp)
leaq 0x33ef0e(%rip), %rdi    # 0x52edc9
callq 0x11d510
movq %rax, 0x2060(%rsp)
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xb3120
testb $0x1, %al
jne 0x1efee2
jmp 0x1effa7
movq 0x40e8(%rsp), %rax
testb $0x1, 0x104(%rax)
je 0x1effa7
movq $0x0, 0x38(%rsp)
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x40f0(%rsp), %rsi
callq 0xb3060
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x38(%rsp)
jne 0x1eff3e
movl $0xffffffff, 0x40e4(%rsp) # imm = 0xFFFFFFFF
movq 0x2068(%rsp), %rdi
callq 0x11f560
cmpl $0x0, 0x40e4(%rsp)
jne 0x1eff9d
movq 0x2068(%rsp), %rdi
leaq 0x34def2(%rip), %rsi    # 0x53de49
callq 0x11d550
movq 0x2068(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rdi
movq 0x2048(%rsp), %rax
movq (%rax), %rsi
callq 0xefd30
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x11d550
movq 0x2068(%rsp), %rdi
movl $0x3a, %esi
callq 0x11da70
movq 0x38(%rsp), %rdi
callq 0xefc30
cmpl $0x0, 0x40e4(%rsp)
jne 0x1f0079
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xb24d0
testb $0x1, %al
jne 0x1effcf
jmp 0x1f0079
movq 0x40e8(%rsp), %rax
testb $0x1, 0x103(%rax)
je 0x1f0079
movq $0x0, 0x30(%rsp)
movq $0x0, 0x28(%rsp)
movq 0x40e8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x2048(%rsp), %rax
movq (%rax), %rdx
leaq 0x30(%rsp), %rsi
callq 0xb1b40
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x20, %ecx
movb %al, 0x7(%rsp)
je 0x1f0046
movq 0x28(%rsp), %rax
cmpq 0x30(%rsp), %rax
setne %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x1f0050
jmp 0x1f0060
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
jmp 0x1f001c
movq 0x2068(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x11d830
jmp 0x1f00a5
movq 0x2068(%rsp), %rdi
leaq 0x3340f0(%rip), %rsi    # 0x524178
callq 0x11d550
movq 0x2068(%rsp), %rdi
movq 0x2048(%rsp), %rax
movq (%rax), %rsi
callq 0x11d930
movq 0x2068(%rsp), %rdi
movq 0x2048(%rsp), %rax
movq 0x8(%rax), %rdx
subq 0x2040(%rsp), %rdx
movq 0x2048(%rsp), %rax
subq 0x38(%rax), %rdx
addq $0x1, %rdx
movq 0x2048(%rsp), %rax
movq 0x48(%rax), %rcx
subq 0x2040(%rsp), %rcx
movq 0x2048(%rsp), %rax
addq 0x38(%rax), %rcx
addq $0x1, %rcx
leaq 0x37920e(%rip), %rsi    # 0x56930a
movl $0x3, %r8d
callq 0x16c7e0
movq %rax, 0x2058(%rsp)
movq 0x2058(%rsp), %rdi
movq 0x2060(%rsp), %rsi
callq 0x16c170
movq 0x2058(%rsp), %rcx
movq 0x40f8(%rsp), %rax
movq %rcx, (%rax)
movq 0x2058(%rsp), %rax
movq %rax, 0x2050(%rsp)
movq 0x40e8(%rsp), %rax
cmpq $0x1, 0x108(%rax)
jbe 0x1f0269
movq 0x2068(%rsp), %rdi
movq 0x2048(%rsp), %rax
movq 0x8(%rax), %rdx
subq 0x2040(%rsp), %rdx
addq $0x1, %rdx
movq 0x2048(%rsp), %rax
subq 0x38(%rax), %rdx
movq 0x2048(%rsp), %rax
movq 0x8(%rax), %rcx
subq 0x2040(%rsp), %rcx
leaq 0x379174(%rip), %rsi    # 0x569318
movl $0x3, %r8d
callq 0x16c7e0
movq %rax, 0x2058(%rsp)
movq 0x2058(%rsp), %rdi
movq 0x2060(%rsp), %rsi
callq 0x16c170
movq 0x2050(%rsp), %rdi
movq 0x2058(%rsp), %rsi
callq 0x16d010
movq 0x2068(%rsp), %rdi
movq 0x2048(%rsp), %rax
movq 0x48(%rax), %rdx
subq 0x2040(%rsp), %rdx
addq $0x2, %rdx
movq 0x2048(%rsp), %rax
movq 0x48(%rax), %rcx
subq 0x2040(%rsp), %rcx
addq $0x1, %rcx
movq 0x2048(%rsp), %rax
addq 0x38(%rax), %rcx
leaq 0x3790ec(%rip), %rsi    # 0x569318
movl $0x3, %r8d
callq 0x16c7e0
movq %rax, 0x2058(%rsp)
movq 0x2058(%rsp), %rdi
movq 0x2060(%rsp), %rsi
callq 0x16c170
movq 0x2050(%rsp), %rdi
movq 0x2058(%rsp), %rsi
callq 0x16d010
movq 0x2068(%rsp), %rdi
movq 0x2048(%rsp), %rax
movq 0x8(%rax), %rdx
subq 0x2040(%rsp), %rdx
addq $0x1, %rdx
movq 0x2048(%rsp), %rax
movq 0x48(%rax), %rcx
subq 0x2040(%rsp), %rcx
addq $0x1, %rcx
leaq 0x33eb00(%rip), %rsi    # 0x52eda8
movl $0x3, %r8d
callq 0x16c7e0
movq %rax, 0x2058(%rsp)
movq 0x2058(%rsp), %rdi
movq 0x2060(%rsp), %rsi
callq 0x16c170
movq 0x2050(%rsp), %rdi
movq 0x2058(%rsp), %rsi
callq 0x16d010
leaq 0x40(%rsp), %rdi
movq 0x2048(%rsp), %rax
movsd 0x28(%rax), %xmm0
movl $0x1fff, %esi           # imm = 0x1FFF
leaq 0x35930a(%rip), %rdx    # 0x54960d
movb $0x1, %al
callq 0x19b90
movq 0x2058(%rsp), %rdi
leaq 0x40(%rsp), %rdx
leaq 0x379012(%rip), %rsi    # 0x569330
callq 0x16d660
movq 0x2058(%rsp), %rax
movq %rax, 0x2050(%rsp)
movq 0x2068(%rsp), %rdi
movq 0x2048(%rsp), %rax
movq 0x8(%rax), %rdx
subq 0x2040(%rsp), %rdx
addq $0x1, %rdx
movq 0x2048(%rsp), %rax
movq 0x10(%rax), %rcx
subq 0x2040(%rsp), %rcx
addq $0x1, %rcx
leaq 0x378fcd(%rip), %rsi    # 0x56933f
movl $0x3, %r8d
callq 0x16c7e0
movq %rax, 0x2058(%rsp)
movq 0x2058(%rsp), %rdi
movq 0x2060(%rsp), %rsi
callq 0x16c170
movq 0x2050(%rsp), %rdi
movq 0x2058(%rsp), %rsi
callq 0x16d010
movq 0x2068(%rsp), %rdi
movq 0x2048(%rsp), %rax
movq 0x40(%rax), %rdx
subq 0x2040(%rsp), %rdx
addq $0x1, %rdx
movq 0x2048(%rsp), %rax
movq 0x48(%rax), %rcx
subq 0x2040(%rsp), %rcx
addq $0x1, %rcx
leaq 0x378f51(%rip), %rsi    # 0x56933f
movl $0x3, %r8d
callq 0x16c7e0
movq %rax, 0x2058(%rsp)
movq 0x2058(%rsp), %rdi
movq 0x2060(%rsp), %rsi
callq 0x16c170
movq 0x2050(%rsp), %rdi
movq 0x2058(%rsp), %rsi
callq 0x16d010
movq 0x2068(%rsp), %rdi
callq 0x11f560
movq 0x2060(%rsp), %rdi
callq 0x11f560
movq 0x40e8(%rsp), %rax
movq 0xa0(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xa0(%rax)
jmp 0x1f0470
movq 0x40f8(%rsp), %rax
movq $0x0, (%rax)
jmp 0x1f0472
movl 0x40e4(%rsp), %eax
addq $0x4108, %rsp           # imm = 0x4108
retq
nopw %cs:(%rax,%rax)