// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/tre/lib/tre-match-parallel.c
// Function: tre_tnfa_run_parallel
reg_errcode_t
tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, int len,
		      tre_str_type_t type, int *match_tags, int eflags,
		      int *match_end_ofs)
{
  /* State variables required by GET_NEXT_WCHAR. */
  tre_char_t prev_c = 0, next_c = 0;
  const char *str_byte = string;
  int pos = -1;
  unsigned int pos_add_next = 1;
#ifdef TRE_WCHAR
  const wchar_t *str_wide = string;
#ifdef TRE_MBSTATE
  mbstate_t mbstate;
#endif /* TRE_MBSTATE */
#endif /* TRE_WCHAR */
  int reg_notbol = eflags & REG_NOTBOL;
  int reg_noteol = eflags & REG_NOTEOL;
  int reg_newline = tnfa->cflags & REG_NEWLINE;
  int str_user_end = 0;

  char *buf;
  tre_tnfa_transition_t *trans_i;
  tre_tnfa_reach_t *reach, *reach_next, *reach_i, *reach_next_i;
  tre_reach_pos_t *reach_pos;
  int *tag_i;
  int num_tags, i;

  int match_eo = -1;	   /* end offset of match (-1 if no match found yet) */
  int new_match = 0;
  int *tmp_tags = NULL;
  int *tmp_iptr;

#ifdef TRE_MBSTATE
  memset(&mbstate, '\0', sizeof(mbstate));
#endif /* TRE_MBSTATE */

  DPRINT(("tre_tnfa_run_parallel, input type %d\n", type));

  if (!match_tags)
    num_tags = 0;
  else
    num_tags = tnfa->num_tags;

  /* Allocate memory for temporary data required for matching.	This needs to
     be done for every matching operation to be thread safe.  This allocates
     everything in a single large block from the stack frame using alloca()
     or with malloc() if alloca is unavailable. */
  {
    int tbytes, rbytes, pbytes, xbytes, total_bytes;
    char *tmp_buf;
    /* Compute the length of the block we need. */
    tbytes = sizeof(*tmp_tags) * num_tags;
    rbytes = sizeof(*reach_next) * (tnfa->num_states + 1);
    pbytes = sizeof(*reach_pos) * tnfa->num_states;
    xbytes = sizeof(int) * num_tags;
    total_bytes =
      (sizeof(GtWord) - 1) * 4 /* for alignment paddings */
      + (rbytes + xbytes * tnfa->num_states) * 2 + tbytes + pbytes;

    /* Allocate the memory. */
#ifdef TRE_USE_ALLOCA
    buf = alloca(total_bytes);
#else /* !TRE_USE_ALLOCA */
    buf = xmalloc((unsigned)total_bytes);
#endif /* !TRE_USE_ALLOCA */
    if (buf == NULL)
      return REG_ESPACE;
    memset(buf, 0, (size_t)total_bytes);

    /* Get the various pointers within tmp_buf (properly aligned). */
    tmp_tags = (void *)buf;
    tmp_buf = buf + tbytes;
    tmp_buf += ALIGN(tmp_buf, GtWord);
    reach_next = (void *)tmp_buf;
    tmp_buf += rbytes;
    tmp_buf += ALIGN(tmp_buf, GtWord);
    reach = (void *)tmp_buf;
    tmp_buf += rbytes;
    tmp_buf += ALIGN(tmp_buf, GtWord);
    reach_pos = (void *)tmp_buf;
    tmp_buf += pbytes;
    tmp_buf += ALIGN(tmp_buf, GtWord);
    for (i = 0; i < tnfa->num_states; i++)
      {
	reach[i].tags = (void *)tmp_buf;
	tmp_buf += xbytes;
	reach_next[i].tags = (void *)tmp_buf;
	tmp_buf += xbytes;
      }
  }

  for (i = 0; i < tnfa->num_states; i++)
    reach_pos[i].pos = -1;

  /* If only one character can start a match, find it first. */
  if (tnfa->first_char >= 0 && type == STR_BYTE && str_byte)
    {
      const char *orig_str = str_byte;
      int first = tnfa->first_char;

      if (len >= 0)
	str_byte = memchr(orig_str, first, (size_t)len);
      else
	str_byte = strchr(orig_str, first);
      if (str_byte == NULL)
	{
#ifndef TRE_USE_ALLOCA
	  if (buf)
	    xfree(buf);
#endif /* !TRE_USE_ALLOCA */
	  return REG_NOMATCH;
	}
      DPRINT(("skipped %lu chars\n", (GtUword)(str_byte - orig_str)));
      if (str_byte >= orig_str + 1)
	prev_c = (unsigned char)*(str_byte - 1);
      next_c = (unsigned char)*str_byte;
      pos = str_byte - orig_str;
      if (len < 0 || pos < len)
	str_byte++;
    }
  else
    {
      GET_NEXT_WCHAR();
      pos = 0;
    }

#if 0
  /* Skip over characters that cannot possibly be the first character
     of a match. */
  if (tnfa->firstpos_chars != NULL)
    {
      char *chars = tnfa->firstpos_chars;

      if (len < 0)
	{
	  const char *orig_str = str_byte;
	  /* XXX - use strpbrk() and wcspbrk() because they might be
	     optimized for the target architecture.  Try also strcspn()
	     and wcscspn() and compare the speeds. */
	  while (next_c != L'\0' && !chars[next_c])
	    {
	      next_c = *str_byte++;
	    }
	  prev_c = *(str_byte - 2);
	  pos += str_byte - orig_str;
	  DPRINT(("skipped %d chars\n", str_byte - orig_str));
	}
      else
	{
	  while (pos <= len && !chars[next_c])
	    {
	      prev_c = next_c;
	      next_c = (unsigned char)(*str_byte++);
	      pos++;
	    }
	}
    }
#endif

  DPRINT(("length: %d\n", len));
  DPRINT(("pos:chr/code | states and tags\n"));
  DPRINT(("-------------+------------------------------------------------\n"));

  reach_next_i = reach_next;
  while (/*CONSTCOND*/(void)1,1)
    {
      /* If no match found yet, add the initial states to `reach_next'. */
      if (match_eo < 0)
	{
	  DPRINT((" init >"));
	  trans_i = tnfa->initial;
	  while (trans_i->state != NULL)
	    {
	      if (reach_pos[trans_i->state_id].pos < pos)
		{
		  if (trans_i->assertions
		      && CHECK_ASSERTIONS(trans_i->assertions))
		    {
		      DPRINT(("assertion failed\n"));
		      trans_i++;
		      continue;
		    }

		  DPRINT((" %p", (void *)trans_i->state));
		  reach_next_i->state = trans_i->state;
		  for (i = 0; i < num_tags; i++)
		    reach_next_i->tags[i] = -1;
		  tag_i = trans_i->tags;
		  if (tag_i)
		    while (*tag_i >= 0)
		      {
			if (*tag_i < num_tags)
			  reach_next_i->tags[*tag_i] = pos;
			tag_i++;
		      }
		  if (reach_next_i->state == tnfa->final)
		    {
		      DPRINT(("	 found empty match\n"));
		      match_eo = pos;
		      new_match = 1;
		      for (i = 0; i < num_tags; i++)
			match_tags[i] = reach_next_i->tags[i];
		    }
		  reach_pos[trans_i->state_id].pos = pos;
		  reach_pos[trans_i->state_id].tags = &reach_next_i->tags;
		  reach_next_i++;
		}
	      trans_i++;
	    }
	  DPRINT(("\n"));
	  reach_next_i->state = NULL;
	}
      else
	{
	  if (num_tags == 0 || reach_next_i == reach_next)
	    /*�We have found a match. */
	    break;
	}

      /* Check for end of string. */
      if (len < 0)
	{
	  if (type == STR_USER)
	    {
	      if (str_user_end)
		break;
	    }
	  else if (next_c == L'\0')
	    break;
	}
      else
	{
	  if (pos >= len)
	    break;
	}

      GET_NEXT_WCHAR();

#ifdef TRE_DEBUG
      DPRINT(("%3d:%2lc/%05d |", pos - 1, (tre_cint_t)prev_c, (int)prev_c));
      tre_print_reach(tnfa, reach_next, num_tags);
      DPRINT(("%3d:%2lc/%05d |", pos, (tre_cint_t)next_c, (int)next_c));
      tre_print_reach(tnfa, reach_next, num_tags);
#endif /* TRE_DEBUG */

      /* Swap `reach' and `reach_next'. */
      reach_i = reach;
      reach = reach_next;
      reach_next = reach_i;

      /* For each state in `reach', weed out states that don't fulfill the
	 minimal matching conditions. */
      if (tnfa->num_minimals && new_match)
	{
	  new_match = 0;
	  reach_next_i = reach_next;
	  for (reach_i = reach; reach_i->state; reach_i++)
	    {
	      int skip = 0;
	      for (i = 0; tnfa->minimal_tags[i] >= 0; i += 2)
		{
		  int end = tnfa->minimal_tags[i];
		  int start = tnfa->minimal_tags[i + 1];
		  DPRINT(("  Minimal start %d, end %d\n", start, end));
		  if (end >= num_tags)
		    {
		      DPRINT(("	 Throwing %p out.\n", reach_i->state));
		      skip = 1;
		      break;
		    }
		  else if (reach_i->tags[start] == match_tags[start]
			   && reach_i->tags[end] < match_tags[end])
		    {
		      DPRINT(("	 Throwing %p out because t%d < %d\n",
			      reach_i->state, end, match_tags[end]));
		      skip = 1;
		      break;
		    }
		}
	      if (!skip)
		{
		  reach_next_i->state = reach_i->state;
		  tmp_iptr = reach_next_i->tags;
		  reach_next_i->tags = reach_i->tags;
		  reach_i->tags = tmp_iptr;
		  reach_next_i++;
		}
	    }
	  reach_next_i->state = NULL;

	  /* Swap `reach' and `reach_next'. */
	  reach_i = reach;
	  reach = reach_next;
	  reach_next = reach_i;
	}

      /* For each state in `reach' see if there is a transition leaving with
	 the current input symbol to a state not yet in `reach_next', and
	 add the destination states to `reach_next'. */
      reach_next_i = reach_next;
      for (reach_i = reach; reach_i->state; reach_i++)
	{
	  for (trans_i = reach_i->state; trans_i->state; trans_i++)
	    {
	      /* Does this transition match the input symbol? */
	      if (trans_i->code_min <= (tre_cint_t)prev_c &&
		  trans_i->code_max >= (tre_cint_t)prev_c)
		{
		  if (trans_i->assertions
		      && (CHECK_ASSERTIONS(trans_i->assertions)
			  || CHECK_CHAR_CLASSES(trans_i, tnfa, eflags)))
		    {
		      DPRINT(("assertion failed\n"));
		      continue;
		    }

		  /* Compute the tags after this transition. */
		  for (i = 0; i < num_tags; i++)
		    tmp_tags[i] = reach_i->tags[i];
		  tag_i = trans_i->tags;
		  if (tag_i != NULL)
		    while (*tag_i >= 0)
		      {
			if (*tag_i < num_tags)
			  tmp_tags[*tag_i] = pos;
			tag_i++;
		      }

		  if (reach_pos[trans_i->state_id].pos < pos)
		    {
		      /* Found an unvisited node. */
		      reach_next_i->state = trans_i->state;
		      tmp_iptr = reach_next_i->tags;
		      reach_next_i->tags = tmp_tags;
		      tmp_tags = tmp_iptr;
		      reach_pos[trans_i->state_id].pos = pos;
		      reach_pos[trans_i->state_id].tags = &reach_next_i->tags;

		      if (reach_next_i->state == tnfa->final
			  && (match_eo == -1
			      || (num_tags > 0
				  && reach_next_i->tags[0] <= match_tags[0])))
			{
			  DPRINT(("  found match %p\n", trans_i->state));
			  match_eo = pos;
			  new_match = 1;
			  for (i = 0; i < num_tags; i++)
			    match_tags[i] = reach_next_i->tags[i];
			}
		      reach_next_i++;

		    }
		  else
		    {
		      assert(reach_pos[trans_i->state_id].pos == pos);
		      /* Another path has also reached this state.  We choose
			 the winner by examining the tag values for both
			 paths. */
		      if (tre_tag_order(num_tags, tnfa->tag_directions,
					tmp_tags,
					*reach_pos[trans_i->state_id].tags))
			{
			  /* The new path wins. */
			  tmp_iptr = *reach_pos[trans_i->state_id].tags;
			  *reach_pos[trans_i->state_id].tags = tmp_tags;
			  if (trans_i->state == tnfa->final)
			    {
			      DPRINT(("	 found better match\n"));
			      match_eo = pos;
			      new_match = 1;
			      for (i = 0; i < num_tags; i++)
				match_tags[i] = tmp_tags[i];
			    }
			  tmp_tags = tmp_iptr;
			}
		    }
		}
	    }
	}
      reach_next_i->state = NULL;
    }

  DPRINT(("match end offset = %d\n", match_eo));

#ifndef TRE_USE_ALLOCA
  if (buf)
    xfree(buf);
#endif /* !TRE_USE_ALLOCA */

  *match_end_ofs = match_eo;
  return match_eo >= 0 ? REG_OK : REG_NOMATCH;
}

// Assembly:
subq $0x138, %rsp            # imm = 0x138
movq 0x140(%rsp), %rax
movq %rdi, 0x128(%rsp)
movq %rsi, 0x120(%rsp)
movl %edx, 0x11c(%rsp)
movl %ecx, 0x118(%rsp)
movq %r8, 0x110(%rsp)
movl %r9d, 0x10c(%rsp)
movb $0x0, 0x10b(%rsp)
movb $0x0, 0x10a(%rsp)
movq 0x120(%rsp), %rax
movq %rax, 0x100(%rsp)
movl $0xffffffff, 0xfc(%rsp) # imm = 0xFFFFFFFF
movl $0x1, 0xf8(%rsp)
movl 0x10c(%rsp), %eax
andl $0x1, %eax
movl %eax, 0xf4(%rsp)
movl 0x10c(%rsp), %eax
andl $0x2, %eax
movl %eax, 0xf0(%rsp)
movq 0x128(%rsp), %rax
movl 0x58(%rax), %eax
andl $0x4, %eax
movl %eax, 0xec(%rsp)
movl $0x0, 0xe8(%rsp)
movl $0xffffffff, 0x9c(%rsp) # imm = 0xFFFFFFFF
movl $0x0, 0x98(%rsp)
movq $0x0, 0x90(%rsp)
jmp 0xc1799
cmpq $0x0, 0x110(%rsp)
jne 0xc17b1
movl $0x0, 0xa4(%rsp)
jmp 0xc17c3
movq 0x128(%rsp), %rax
movl 0x48(%rax), %eax
movl %eax, 0xa4(%rsp)
movslq 0xa4(%rsp), %rax
shlq $0x2, %rax
movl %eax, 0x84(%rsp)
movq 0x128(%rsp), %rax
movl 0x54(%rax), %eax
addl $0x1, %eax
cltq
shlq $0x4, %rax
movl %eax, 0x80(%rsp)
movq 0x128(%rsp), %rax
movslq 0x54(%rax), %rax
shlq $0x4, %rax
movl %eax, 0x7c(%rsp)
movslq 0xa4(%rsp), %rax
shlq $0x2, %rax
movl %eax, 0x78(%rsp)
movl 0x80(%rsp), %eax
movl 0x78(%rsp), %ecx
movq 0x128(%rsp), %rdx
imull 0x54(%rdx), %ecx
addl %ecx, %eax
shll %eax
cltq
addq $0x1c, %rax
movslq 0x84(%rsp), %rcx
addq %rcx, %rax
movslq 0x7c(%rsp), %rcx
addq %rcx, %rax
movl %eax, 0x74(%rsp)
movl 0x74(%rsp), %eax
movl %eax, %edi
callq 0xbcb8
movq %rax, 0xe0(%rsp)
cmpq $0x0, 0xe0(%rsp)
jne 0xc187b
movl $0xc, 0x134(%rsp)
jmp 0xc2fbd
movq 0xe0(%rsp), %rdi
movslq 0x74(%rsp), %rdx
xorl %esi, %esi
callq 0xb2d0
movq 0xe0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0xe0(%rsp), %rax
movslq 0x84(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
andq $0x7, %rax
cmpq $0x0, %rax
je 0xc18de
movq 0x68(%rsp), %rcx
andq $0x7, %rcx
movl $0x8, %eax
subq %rcx, %rax
movq %rax, 0x48(%rsp)
jmp 0xc18e7
xorl %eax, %eax
movq %rax, 0x48(%rsp)
jmp 0xc18e7
movq 0x48(%rsp), %rax
addq 0x68(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0xc8(%rsp)
movl 0x80(%rsp), %ecx
movq 0x68(%rsp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
andq $0x7, %rax
cmpq $0x0, %rax
je 0xc1941
movq 0x68(%rsp), %rcx
andq $0x7, %rcx
movl $0x8, %eax
subq %rcx, %rax
movq %rax, 0x40(%rsp)
jmp 0xc194a
xorl %eax, %eax
movq %rax, 0x40(%rsp)
jmp 0xc194a
movq 0x40(%rsp), %rax
addq 0x68(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0xd0(%rsp)
movl 0x80(%rsp), %ecx
movq 0x68(%rsp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
andq $0x7, %rax
cmpq $0x0, %rax
je 0xc19a4
movq 0x68(%rsp), %rcx
andq $0x7, %rcx
movl $0x8, %eax
subq %rcx, %rax
movq %rax, 0x38(%rsp)
jmp 0xc19ad
xorl %eax, %eax
movq %rax, 0x38(%rsp)
jmp 0xc19ad
movq 0x38(%rsp), %rax
addq 0x68(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0xb0(%rsp)
movl 0x7c(%rsp), %ecx
movq 0x68(%rsp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
andq $0x7, %rax
cmpq $0x0, %rax
je 0xc1a04
movq 0x68(%rsp), %rcx
andq $0x7, %rcx
movl $0x8, %eax
subq %rcx, %rax
movq %rax, 0x30(%rsp)
jmp 0xc1a0d
xorl %eax, %eax
movq %rax, 0x30(%rsp)
jmp 0xc1a0d
movq 0x30(%rsp), %rax
addq 0x68(%rsp), %rax
movq %rax, 0x68(%rsp)
movl $0x0, 0xa0(%rsp)
movl 0xa0(%rsp), %eax
movq 0x128(%rsp), %rcx
cmpl 0x54(%rcx), %eax
jge 0xc1ab9
movq 0x68(%rsp), %rcx
movq 0xd0(%rsp), %rax
movslq 0xa0(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movl 0x78(%rsp), %ecx
movq 0x68(%rsp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rcx
movq 0xc8(%rsp), %rax
movslq 0xa0(%rsp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movl 0x78(%rsp), %ecx
movq 0x68(%rsp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x68(%rsp)
movl 0xa0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa0(%rsp)
jmp 0xc1a27
movl $0x0, 0xa0(%rsp)
movl 0xa0(%rsp), %eax
movq 0x128(%rsp), %rcx
cmpl 0x54(%rcx), %eax
jge 0xc1b08
movq 0xb0(%rsp), %rax
movslq 0xa0(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movl 0xa0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa0(%rsp)
jmp 0xc1ac4
movq 0x128(%rsp), %rax
cmpl $0x0, 0x30(%rax)
jl 0xc1c4d
cmpl $0x1, 0x118(%rsp)
jne 0xc1c4d
cmpq $0x0, 0x100(%rsp)
je 0xc1c4d
movq 0x100(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x128(%rsp), %rax
movl 0x30(%rax), %eax
movl %eax, 0x5c(%rsp)
cmpl $0x0, 0x11c(%rsp)
jl 0xc1b7d
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
movslq 0x11c(%rsp), %rdx
callq 0xb6e0
movq %rax, 0x100(%rsp)
jmp 0xc1b93
movq 0x60(%rsp), %rdi
movl 0x5c(%rsp), %esi
callq 0xb1f0
movq %rax, 0x100(%rsp)
cmpq $0x0, 0x100(%rsp)
jne 0xc1bc6
cmpq $0x0, 0xe0(%rsp)
je 0xc1bb6
movq 0xe0(%rsp), %rdi
callq 0xb760
movl $0x1, 0x134(%rsp)
jmp 0xc2fbd
jmp 0xc1bc8
jmp 0xc1bca
movq 0x100(%rsp), %rax
movq 0x60(%rsp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jb 0xc1bf2
movq 0x100(%rsp), %rax
movb -0x1(%rax), %al
movb %al, 0x10b(%rsp)
movq 0x100(%rsp), %rax
movb (%rax), %al
movb %al, 0x10a(%rsp)
movq 0x100(%rsp), %rax
movq 0x60(%rsp), %rcx
subq %rcx, %rax
movl %eax, 0xfc(%rsp)
cmpl $0x0, 0x11c(%rsp)
jl 0xc1c34
movl 0xfc(%rsp), %eax
cmpl 0x11c(%rsp), %eax
jge 0xc1c48
movq 0x100(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x100(%rsp)
jmp 0xc1d1c
jmp 0xc1c4f
movb 0x10a(%rsp), %al
movb %al, 0x10b(%rsp)
cmpl $0x1, 0x118(%rsp)
jne 0xc1cbe
movl 0xfc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xfc(%rsp)
cmpl $0x0, 0x11c(%rsp)
jl 0xc1c9c
movl 0xfc(%rsp), %eax
cmpl 0x11c(%rsp), %eax
jl 0xc1c9c
movb $0x0, 0x10a(%rsp)
jmp 0xc1cbc
movq 0x100(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, 0x100(%rsp)
movb (%rax), %al
movb %al, 0x10a(%rsp)
jmp 0xc1d0f
cmpl $0x3, 0x118(%rsp)
jne 0xc1d0d
movl 0xf8(%rsp), %eax
addl 0xfc(%rsp), %eax
movl %eax, 0xfc(%rsp)
movq 0x120(%rsp), %rax
movq (%rax), %rax
movq 0x120(%rsp), %rcx
movq 0x18(%rcx), %rdx
leaq 0x10a(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq *%rax
movl %eax, 0xe8(%rsp)
jmp 0xc1d0f
jmp 0xc1d11
movl $0x0, 0xfc(%rsp)
jmp 0xc1d1e
jmp 0xc1d20
jmp 0xc1d22
jmp 0xc1d24
jmp 0xc1d26
jmp 0xc1d28
movq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
cmpl $0x0, 0x9c(%rsp)
jge 0xc22d2
jmp 0xc1d48
jmp 0xc1d4a
movq 0x128(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0xd8(%rsp)
movq 0xd8(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0xc22bd
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rcx
movslq 0x10(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %eax
cmpl 0xfc(%rsp), %eax
jge 0xc22a4
movq 0xd8(%rsp), %rax
cmpl $0x0, 0x28(%rax)
je 0xc20d3
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xc1df3
cmpl $0x0, 0xfc(%rsp)
jg 0xc1dd4
cmpl $0x0, 0xf4(%rsp)
je 0xc1df3
movzbl 0x10b(%rsp), %eax
cmpl $0xa, %eax
jne 0xc20b6
cmpl $0x0, 0xec(%rsp)
je 0xc20b6
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xc1e3c
movzbl 0x10a(%rsp), %eax
cmpl $0x0, %eax
jne 0xc1e1d
cmpl $0x0, 0xf0(%rsp)
je 0xc1e3c
movzbl 0x10a(%rsp), %eax
cmpl $0xa, %eax
jne 0xc20b6
cmpl $0x0, 0xec(%rsp)
je 0xc20b6
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xc1eb3
movzbl 0x10b(%rsp), %eax
cmpl $0x5f, %eax
je 0xc20b6
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10b(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0xc20b6
movzbl 0x10a(%rsp), %eax
cmpl $0x5f, %eax
je 0xc1eb3
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10a(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xc20b6
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0xc1f2a
movzbl 0x10b(%rsp), %eax
cmpl $0x5f, %eax
je 0xc1ef6
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10b(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xc20b6
movzbl 0x10a(%rsp), %eax
cmpl $0x5f, %eax
je 0xc20b6
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10a(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0xc20b6
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0xc1ff1
cmpl $0x0, 0xfc(%rsp)
je 0xc1ff1
movzbl 0x10a(%rsp), %eax
cmpl $0x0, %eax
je 0xc1ff1
movzbl 0x10b(%rsp), %ecx
movb $0x1, %al
cmpl $0x5f, %ecx
movb %al, 0x2f(%rsp)
je 0xc1f97
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10b(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x2f(%rsp)
movb 0x2f(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x28(%rsp)
movzbl 0x10a(%rsp), %ecx
movb $0x1, %al
cmpl $0x5f, %ecx
movb %al, 0x2e(%rsp)
je 0xc1fdb
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10a(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x2e(%rsp)
movl 0x28(%rsp), %eax
movb 0x2e(%rsp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0xc20b6
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0xc20d3
cmpl $0x0, 0xfc(%rsp)
je 0xc20b6
movzbl 0x10a(%rsp), %eax
cmpl $0x0, %eax
je 0xc20b6
movzbl 0x10b(%rsp), %ecx
movb $0x1, %al
cmpl $0x5f, %ecx
movb %al, 0x27(%rsp)
je 0xc2060
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10b(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x20(%rsp)
movzbl 0x10a(%rsp), %ecx
movb $0x1, %al
cmpl $0x5f, %ecx
movb %al, 0x26(%rsp)
je 0xc20a4
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10a(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x26(%rsp)
movl 0x20(%rsp), %eax
movb 0x26(%rsp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0xc20d3
jmp 0xc20b8
jmp 0xc20ba
movq 0xd8(%rsp), %rax
addq $0x40, %rax
movq %rax, 0xd8(%rsp)
jmp 0xc1d5e
jmp 0xc20d5
jmp 0xc20d7
movq 0xd8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0xb8(%rsp), %rax
movq %rcx, (%rax)
movl $0x0, 0xa0(%rsp)
movl 0xa0(%rsp), %eax
cmpl 0xa4(%rsp), %eax
jge 0xc2137
movq 0xb8(%rsp), %rax
movq 0x8(%rax), %rax
movslq 0xa0(%rsp), %rcx
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
movl 0xa0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa0(%rsp)
jmp 0xc20f9
movq 0xd8(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0xa8(%rsp)
cmpq $0x0, 0xa8(%rsp)
je 0xc21b1
jmp 0xc2158
movq 0xa8(%rsp), %rax
cmpl $0x0, (%rax)
jl 0xc21af
movq 0xa8(%rsp), %rax
movl (%rax), %eax
cmpl 0xa4(%rsp), %eax
jge 0xc2199
movl 0xfc(%rsp), %edx
movq 0xb8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0xa8(%rsp), %rcx
movslq (%rcx), %rcx
movl %edx, (%rax,%rcx,4)
movq 0xa8(%rsp), %rax
addq $0x4, %rax
movq %rax, 0xa8(%rsp)
jmp 0xc2158
jmp 0xc21b1
movq 0xb8(%rsp), %rax
movq (%rax), %rax
movq 0x128(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jne 0xc2241
jmp 0xc21cc
jmp 0xc21ce
movl 0xfc(%rsp), %eax
movl %eax, 0x9c(%rsp)
movl $0x1, 0x98(%rsp)
movl $0x0, 0xa0(%rsp)
movl 0xa0(%rsp), %eax
cmpl 0xa4(%rsp), %eax
jge 0xc223f
movq 0xb8(%rsp), %rax
movq 0x8(%rax), %rax
movslq 0xa0(%rsp), %rcx
movl (%rax,%rcx,4), %edx
movq 0x110(%rsp), %rax
movslq 0xa0(%rsp), %rcx
movl %edx, (%rax,%rcx,4)
movl 0xa0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa0(%rsp)
jmp 0xc21f2
jmp 0xc2241
movl 0xfc(%rsp), %ecx
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rdx
movslq 0x10(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq 0xb8(%rsp), %rcx
addq $0x8, %rcx
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rdx
movslq 0x10(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq 0xb8(%rsp), %rax
addq $0x10, %rax
movq %rax, 0xb8(%rsp)
movq 0xd8(%rsp), %rax
addq $0x40, %rax
movq %rax, 0xd8(%rsp)
jmp 0xc1d5e
jmp 0xc22bf
jmp 0xc22c1
movq 0xb8(%rsp), %rax
movq $0x0, (%rax)
jmp 0xc22f5
cmpl $0x0, 0xa4(%rsp)
je 0xc22ee
movq 0xb8(%rsp), %rax
cmpq 0xc8(%rsp), %rax
jne 0xc22f3
jmp 0xc2f75
jmp 0xc22f5
cmpl $0x0, 0x11c(%rsp)
jge 0xc2330
cmpl $0x3, 0x118(%rsp)
jne 0xc231a
cmpl $0x0, 0xe8(%rsp)
je 0xc2318
jmp 0xc2f75
jmp 0xc232e
movzbl 0x10a(%rsp), %eax
cmpl $0x0, %eax
jne 0xc232c
jmp 0xc2f75
jmp 0xc232e
jmp 0xc2347
movl 0xfc(%rsp), %eax
cmpl 0x11c(%rsp), %eax
jl 0xc2345
jmp 0xc2f75
jmp 0xc2347
jmp 0xc2349
movb 0x10a(%rsp), %al
movb %al, 0x10b(%rsp)
cmpl $0x1, 0x118(%rsp)
jne 0xc23b8
movl 0xfc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xfc(%rsp)
cmpl $0x0, 0x11c(%rsp)
jl 0xc2396
movl 0xfc(%rsp), %eax
cmpl 0x11c(%rsp), %eax
jl 0xc2396
movb $0x0, 0x10a(%rsp)
jmp 0xc23b6
movq 0x100(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, 0x100(%rsp)
movb (%rax), %al
movb %al, 0x10a(%rsp)
jmp 0xc2409
cmpl $0x3, 0x118(%rsp)
jne 0xc2407
movl 0xf8(%rsp), %eax
addl 0xfc(%rsp), %eax
movl %eax, 0xfc(%rsp)
movq 0x120(%rsp), %rax
movq (%rax), %rax
movq 0x120(%rsp), %rcx
movq 0x18(%rcx), %rdx
leaq 0x10a(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq *%rax
movl %eax, 0xe8(%rsp)
jmp 0xc2409
jmp 0xc240b
movq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0xc0(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x128(%rsp), %rax
cmpl $0x0, 0x4c(%rax)
je 0xc2660
cmpl $0x0, 0x98(%rsp)
je 0xc2660
movl $0x0, 0x98(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
cmpq $0x0, (%rax)
je 0xc2621
movl $0x0, 0x58(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x128(%rsp), %rax
movq 0x40(%rax), %rax
movslq 0xa0(%rsp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jl 0xc2595
movq 0x128(%rsp), %rax
movq 0x40(%rax), %rax
movslq 0xa0(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x54(%rsp)
movq 0x128(%rsp), %rax
movq 0x40(%rax), %rax
movl 0xa0(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x50(%rsp)
jmp 0xc2506
movl 0x54(%rsp), %eax
cmpl 0xa4(%rsp), %eax
jl 0xc2521
jmp 0xc2515
jmp 0xc2517
movl $0x1, 0x58(%rsp)
jmp 0xc2595
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %rax
movslq 0x50(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movq 0x110(%rsp), %rcx
movslq 0x50(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jne 0xc257b
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %rax
movslq 0x54(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movq 0x110(%rsp), %rcx
movslq 0x54(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0xc257b
jmp 0xc256f
jmp 0xc2571
movl $0x1, 0x58(%rsp)
jmp 0xc2595
jmp 0xc257d
jmp 0xc257f
movl 0xa0(%rsp), %eax
addl $0x2, %eax
movl %eax, 0xa0(%rsp)
jmp 0xc24ab
cmpl $0x0, 0x58(%rsp)
jne 0xc2606
movq 0xc0(%rsp), %rax
movq (%rax), %rcx
movq 0xb8(%rsp), %rax
movq %rcx, (%rax)
movq 0xb8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x88(%rsp)
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0xb8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x88(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0xb8(%rsp), %rax
addq $0x10, %rax
movq %rax, 0xb8(%rsp)
jmp 0xc2608
movq 0xc0(%rsp), %rax
addq $0x10, %rax
movq %rax, 0xc0(%rsp)
jmp 0xc2486
movq 0xb8(%rsp), %rax
movq $0x0, (%rax)
movq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0xc0(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
cmpq $0x0, (%rax)
je 0xc2f61
movq 0xc0(%rsp), %rax
movq (%rax), %rax
movq %rax, 0xd8(%rsp)
movq 0xd8(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0xc2f46
movq 0xd8(%rsp), %rax
movswl (%rax), %eax
movzbl 0x10b(%rsp), %ecx
movswl %cx, %ecx
cmpl %ecx, %eax
jg 0xc2f2b
movq 0xd8(%rsp), %rax
movswl 0x2(%rax), %eax
movzbl 0x10b(%rsp), %ecx
movswl %cx, %ecx
cmpl %ecx, %eax
jl 0xc2f2b
movq 0xd8(%rsp), %rax
cmpl $0x0, 0x28(%rax)
je 0xc2b2f
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xc274d
cmpl $0x0, 0xfc(%rsp)
jg 0xc272e
cmpl $0x0, 0xf4(%rsp)
je 0xc274d
movzbl 0x10b(%rsp), %eax
cmpl $0xa, %eax
jne 0xc2b26
cmpl $0x0, 0xec(%rsp)
je 0xc2b26
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xc2796
movzbl 0x10a(%rsp), %eax
cmpl $0x0, %eax
jne 0xc2777
cmpl $0x0, 0xf0(%rsp)
je 0xc2796
movzbl 0x10a(%rsp), %eax
cmpl $0xa, %eax
jne 0xc2b26
cmpl $0x0, 0xec(%rsp)
je 0xc2b26
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xc280d
movzbl 0x10b(%rsp), %eax
cmpl $0x5f, %eax
je 0xc2b26
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10b(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0xc2b26
movzbl 0x10a(%rsp), %eax
cmpl $0x5f, %eax
je 0xc280d
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10a(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xc2b26
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0xc2884
movzbl 0x10b(%rsp), %eax
cmpl $0x5f, %eax
je 0xc2850
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10b(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xc2b26
movzbl 0x10a(%rsp), %eax
cmpl $0x5f, %eax
je 0xc2b26
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10a(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0xc2b26
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0xc294b
cmpl $0x0, 0xfc(%rsp)
je 0xc294b
movzbl 0x10a(%rsp), %eax
cmpl $0x0, %eax
je 0xc294b
movzbl 0x10b(%rsp), %ecx
movb $0x1, %al
cmpl $0x5f, %ecx
movb %al, 0x1f(%rsp)
je 0xc28f1
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10b(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x1f(%rsp)
movb 0x1f(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x18(%rsp)
movzbl 0x10a(%rsp), %ecx
movb $0x1, %al
cmpl $0x5f, %ecx
movb %al, 0x1e(%rsp)
je 0xc2935
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10a(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x1e(%rsp)
movl 0x18(%rsp), %eax
movb 0x1e(%rsp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0xc2b26
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0xc2a14
cmpl $0x0, 0xfc(%rsp)
je 0xc2b26
movzbl 0x10a(%rsp), %eax
cmpl $0x0, %eax
je 0xc2b26
movzbl 0x10b(%rsp), %ecx
movb $0x1, %al
cmpl $0x5f, %ecx
movb %al, 0x17(%rsp)
je 0xc29ba
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10b(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x10(%rsp)
movzbl 0x10a(%rsp), %ecx
movb $0x1, %al
cmpl $0x5f, %ecx
movb %al, 0x16(%rsp)
je 0xc29fe
callq 0xb6b0
movq (%rax), %rax
movzbl 0x10a(%rsp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x16(%rsp)
movl 0x10(%rsp), %eax
movb 0x16(%rsp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0xc2b26
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xc2a5c
movq 0x128(%rsp), %rax
movl 0x58(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0xc2a5c
movq 0xd8(%rsp), %rax
movq 0x30(%rax), %rax
movzbl 0x10b(%rsp), %ecx
movswl %cx, %edi
callq *%rax
cmpl $0x0, %eax
je 0xc2b26
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xc2ae4
movq 0x128(%rsp), %rax
movl 0x58(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xc2ae4
movq 0xd8(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x8(%rsp)
movzbl 0x10b(%rsp), %eax
movswl %ax, %edi
callq 0xb8c0
movl %eax, %ecx
movq 0x8(%rsp), %rax
movswl %cx, %edi
callq *%rax
cmpl $0x0, %eax
jne 0xc2ae4
movq 0xd8(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, (%rsp)
movzbl 0x10b(%rsp), %eax
movswl %ax, %edi
callq 0xbbb0
movl %eax, %ecx
movq (%rsp), %rax
movswl %cx, %edi
callq *%rax
cmpl $0x0, %eax
je 0xc2b26
movq 0xd8(%rsp), %rax
movl 0x28(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xc2b2f
movq 0xd8(%rsp), %rax
movq 0x38(%rax), %rdi
movzbl 0x10b(%rsp), %eax
movq 0x128(%rsp), %rcx
movl 0x58(%rcx), %edx
andl $0x2, %edx
movswl %ax, %esi
callq 0xc2fd0
cmpl $0x0, %eax
je 0xc2b2f
jmp 0xc2b28
jmp 0xc2b2a
jmp 0xc2f2d
movl $0x0, 0xa0(%rsp)
movl 0xa0(%rsp), %eax
cmpl 0xa4(%rsp), %eax
jge 0xc2b87
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %rax
movslq 0xa0(%rsp), %rcx
movl (%rax,%rcx,4), %edx
movq 0x90(%rsp), %rax
movslq 0xa0(%rsp), %rcx
movl %edx, (%rax,%rcx,4)
movl 0xa0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa0(%rsp)
jmp 0xc2b3a
movq 0xd8(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0xa8(%rsp)
cmpq $0x0, 0xa8(%rsp)
je 0xc2bfd
jmp 0xc2ba8
movq 0xa8(%rsp), %rax
cmpl $0x0, (%rax)
jl 0xc2bfb
movq 0xa8(%rsp), %rax
movl (%rax), %eax
cmpl 0xa4(%rsp), %eax
jge 0xc2be5
movl 0xfc(%rsp), %edx
movq 0x90(%rsp), %rax
movq 0xa8(%rsp), %rcx
movslq (%rcx), %rcx
movl %edx, (%rax,%rcx,4)
movq 0xa8(%rsp), %rax
addq $0x4, %rax
movq %rax, 0xa8(%rsp)
jmp 0xc2ba8
jmp 0xc2bfd
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rcx
movslq 0x10(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %eax
cmpl 0xfc(%rsp), %eax
jge 0xc2da4
movq 0xd8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0xb8(%rsp), %rax
movq %rcx, (%rax)
movq 0xb8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rcx
movq 0xb8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x88(%rsp), %rax
movq %rax, 0x90(%rsp)
movl 0xfc(%rsp), %ecx
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rdx
movslq 0x10(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq 0xb8(%rsp), %rcx
addq $0x8, %rcx
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rdx
movslq 0x10(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq 0xb8(%rsp), %rax
movq (%rax), %rax
movq 0x128(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jne 0xc2d8b
cmpl $-0x1, 0x9c(%rsp)
je 0xc2d14
cmpl $0x0, 0xa4(%rsp)
jle 0xc2d8b
movq 0xb8(%rsp), %rax
movq 0x8(%rax), %rax
movl (%rax), %eax
movq 0x110(%rsp), %rcx
cmpl (%rcx), %eax
jg 0xc2d8b
jmp 0xc2d16
jmp 0xc2d18
movl 0xfc(%rsp), %eax
movl %eax, 0x9c(%rsp)
movl $0x1, 0x98(%rsp)
movl $0x0, 0xa0(%rsp)
movl 0xa0(%rsp), %eax
cmpl 0xa4(%rsp), %eax
jge 0xc2d89
movq 0xb8(%rsp), %rax
movq 0x8(%rax), %rax
movslq 0xa0(%rsp), %rcx
movl (%rax,%rcx,4), %edx
movq 0x110(%rsp), %rax
movslq 0xa0(%rsp), %rcx
movl %edx, (%rax,%rcx,4)
movl 0xa0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa0(%rsp)
jmp 0xc2d3c
jmp 0xc2d8b
movq 0xb8(%rsp), %rax
addq $0x10, %rax
movq %rax, 0xb8(%rsp)
jmp 0xc2f29
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rcx
movslq 0x10(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %eax
cmpl 0xfc(%rsp), %eax
jne 0xc2dcc
jmp 0xc2deb
leaq 0xb28c1(%rip), %rdi     # 0x175694
leaq 0xb28e2(%rip), %rsi     # 0x1756bc
movl $0x1cf, %edx            # imm = 0x1CF
leaq 0xb2900(%rip), %rcx     # 0x1756e6
callq 0xb3e0
movl 0xa4(%rsp), %edi
movq 0x128(%rsp), %rax
movq 0x38(%rax), %rsi
movq 0x90(%rsp), %rdx
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rcx
movslq 0x10(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq (%rax), %rcx
callq 0xc30a0
cmpl $0x0, %eax
je 0xc2f27
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rcx
movslq 0x10(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq %rax, 0x88(%rsp)
movq 0x90(%rsp), %rcx
movq 0xb0(%rsp), %rax
movq 0xd8(%rsp), %rdx
movslq 0x10(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq 0x8(%rax), %rax
movq %rcx, (%rax)
movq 0xd8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x128(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jne 0xc2f17
jmp 0xc2ea6
jmp 0xc2ea8
movl 0xfc(%rsp), %eax
movl %eax, 0x9c(%rsp)
movl $0x1, 0x98(%rsp)
movl $0x0, 0xa0(%rsp)
movl 0xa0(%rsp), %eax
cmpl 0xa4(%rsp), %eax
jge 0xc2f15
movq 0x90(%rsp), %rax
movslq 0xa0(%rsp), %rcx
movl (%rax,%rcx,4), %edx
movq 0x110(%rsp), %rax
movslq 0xa0(%rsp), %rcx
movl %edx, (%rax,%rcx,4)
movl 0xa0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa0(%rsp)
jmp 0xc2ecc
jmp 0xc2f17
movq 0x88(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0xc2f29
jmp 0xc2f2b
jmp 0xc2f2d
movq 0xd8(%rsp), %rax
addq $0x40, %rax
movq %rax, 0xd8(%rsp)
jmp 0xc26a5
jmp 0xc2f48
movq 0xc0(%rsp), %rax
addq $0x10, %rax
movq %rax, 0xc0(%rsp)
jmp 0xc2680
movq 0xb8(%rsp), %rax
movq $0x0, (%rax)
jmp 0xc1d38
jmp 0xc2f77
jmp 0xc2f79
cmpq $0x0, 0xe0(%rsp)
je 0xc2f91
movq 0xe0(%rsp), %rdi
callq 0xb760
movl 0x9c(%rsp), %ecx
movq 0x140(%rsp), %rax
movl %ecx, (%rax)
movl 0x9c(%rsp), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovgel %ecx, %eax
movl %eax, 0x134(%rsp)
movl 0x134(%rsp), %eax
addq $0x138, %rsp            # imm = 0x138
retq
nopl (%rax)