// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/tre/lib/tre-compile.c
// Function: tre_compute_nfl
static reg_errcode_t
tre_compute_nfl(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *tree)
{
  int bottom = tre_stack_num_objects(stack);

  STACK_PUSHR(stack, voidptr, tree);
  STACK_PUSHR(stack, int, NFL_RECURSE);

  while (tre_stack_num_objects(stack) > bottom)
    {
      tre_nfl_stack_symbol_t symbol;
      tre_ast_node_t *node;

      symbol = (tre_nfl_stack_symbol_t)tre_stack_pop_int(stack);
      node = tre_stack_pop_voidptr(stack);
      switch (symbol)
	{
	case NFL_RECURSE:
	  switch (node->type)
	    {
	    case LITERAL:
	      {
		tre_literal_t *lit = (tre_literal_t *)node->obj;
		if (IS_BACKREF(lit))
		  {
		    /* Back references: nullable = false, firstpos = {i},
		       lastpos = {i}. */
		    node->nullable = 0;
		    node->firstpos = tre_set_one(mem, lit->position, 0,
					     TRE_CHAR_MAX, 0, NULL, -1);
		    if (!node->firstpos)
		      return REG_ESPACE;
		    node->lastpos = tre_set_one(mem, lit->position, 0,
						TRE_CHAR_MAX, 0, NULL,
						(int)lit->code_max);
		    if (!node->lastpos)
		      return REG_ESPACE;
		  }
		else if (lit->code_min < 0)
		  {
		    /* Tags, empty strings, params, and zero width assertions:
		       nullable = true, firstpos = {}, and lastpos = {}. */
		    node->nullable = 1;
		    node->firstpos = tre_set_empty(mem);
		    if (!node->firstpos)
		      return REG_ESPACE;
		    node->lastpos = tre_set_empty(mem);
		    if (!node->lastpos)
		      return REG_ESPACE;
		  }
		else
		  {
		    /* Literal at position i: nullable = false, firstpos = {i},
		       lastpos = {i}. */
		    node->nullable = 0;
		    node->firstpos =
		      tre_set_one(mem, lit->position, (int)lit->code_min,
				  (int)lit->code_max, 0, NULL, -1);
		    if (!node->firstpos)
		      return REG_ESPACE;
		    node->lastpos = tre_set_one(mem, lit->position,
						(int)lit->code_min,
						(int)lit->code_max,
						lit->u.class, lit->neg_classes,
						-1);
		    if (!node->lastpos)
		      return REG_ESPACE;
		  }
		break;
	      }

	    case UNION:
	      /* Compute the attributes for the two subtrees, and after that
		 for this node. */
	      STACK_PUSHR(stack, voidptr, node);
	      STACK_PUSHR(stack, int, NFL_POST_UNION);
	      STACK_PUSHR(stack, voidptr, ((tre_union_t *)node->obj)->right);
	      STACK_PUSHR(stack, int, NFL_RECURSE);
	      STACK_PUSHR(stack, voidptr, ((tre_union_t *)node->obj)->left);
	      STACK_PUSHR(stack, int, NFL_RECURSE);
	      break;

	    case CATENATION:
	      /* Compute the attributes for the two subtrees, and after that
		 for this node. */
	      STACK_PUSHR(stack, voidptr, node);
	      STACK_PUSHR(stack, int, NFL_POST_CATENATION);
	      STACK_PUSHR(stack, voidptr, ((tre_catenation_t *)node->obj)->right);
	      STACK_PUSHR(stack, int, NFL_RECURSE);
	      STACK_PUSHR(stack, voidptr, ((tre_catenation_t *)node->obj)->left);
	      STACK_PUSHR(stack, int, NFL_RECURSE);
	      break;

	    case ITERATION:
	      /* Compute the attributes for the subtree, and after that for
		 this node. */
	      STACK_PUSHR(stack, voidptr, node);
	      STACK_PUSHR(stack, int, NFL_POST_ITERATION);
	      STACK_PUSHR(stack, voidptr, ((tre_iteration_t *)node->obj)->arg);
	      STACK_PUSHR(stack, int, NFL_RECURSE);
	      break;
	    }
	  break; /* end case: NFL_RECURSE */

	case NFL_POST_UNION:
	  {
	    tre_union_t *uni = (tre_union_t *)node->obj;
	    node->nullable = uni->left->nullable || uni->right->nullable;
	    node->firstpos = tre_set_union(mem, uni->left->firstpos,
					   uni->right->firstpos, NULL, 0, NULL);
	    if (!node->firstpos)
	      return REG_ESPACE;
	    node->lastpos = tre_set_union(mem, uni->left->lastpos,
					  uni->right->lastpos, NULL, 0, NULL);
	    if (!node->lastpos)
	      return REG_ESPACE;
	    break;
	  }

	case NFL_POST_ITERATION:
	  {
	    tre_iteration_t *iter = (tre_iteration_t *)node->obj;

	    if (iter->min == 0 || iter->arg->nullable)
	      node->nullable = 1;
	    else
	      node->nullable = 0;
	    node->firstpos = iter->arg->firstpos;
	    node->lastpos = iter->arg->lastpos;
	    break;
	  }

	case NFL_POST_CATENATION:
	  {
	    int num_tags, *tags, assertions, params_seen;
	    int *params;
	    reg_errcode_t status;
	    tre_catenation_t *cat = node->obj;
	    node->nullable = cat->left->nullable && cat->right->nullable;

	    /* Compute firstpos. */
	    if (cat->left->nullable)
	      {
		/* The left side matches the empty string.  Make a first pass
		   with tre_match_empty() to get the number of tags and
		   parameters. */
		status = tre_match_empty(stack, cat->left,
					 NULL, NULL, NULL, &num_tags,
					 &params_seen);
		if (status != REG_OK)
		  return status;
		/* Allocate arrays for the tags and parameters. */
		tags = xmalloc(sizeof(*tags) * (num_tags + 1));
		if (!tags)
		  return REG_ESPACE;
		tags[0] = -1;
		assertions = 0;
		params = NULL;
		if (params_seen)
		  {
		    params = tre_mem_alloc(mem, sizeof(*params)
					   * TRE_PARAM_LAST);
		    if (!params)
		      {
			xfree(tags);
			return REG_ESPACE;
		      }
		  }
		/* Second pass with tre_mach_empty() to get the list of
		   tags and parameters. */
		status = tre_match_empty(stack, cat->left, tags,
					 &assertions, params, NULL, NULL);
		if (status != REG_OK)
		  {
		    xfree(tags);
		    return status;
		  }
		node->firstpos =
		  tre_set_union(mem, cat->right->firstpos, cat->left->firstpos,
				tags, assertions, params);
		xfree(tags);
		if (!node->firstpos)
		  return REG_ESPACE;
	      }
	    else
	      {
		node->firstpos = cat->left->firstpos;
	      }

	    /* Compute lastpos. */
	    if (cat->right->nullable)
	      {
		/* The right side matches the empty string.  Make a first pass
		   with tre_match_empty() to get the number of tags and
		   parameters. */
		status = tre_match_empty(stack, cat->right,
					 NULL, NULL, NULL, &num_tags,
					 &params_seen);
		if (status != REG_OK)
		  return status;
		/* Allocate arrays for the tags and parameters. */
		tags = xmalloc(sizeof(int) * (num_tags + 1));
		if (!tags)
		  return REG_ESPACE;
		tags[0] = -1;
		assertions = 0;
		params = NULL;
		if (params_seen)
		  {
		    params = tre_mem_alloc(mem, sizeof(*params)
					   * TRE_PARAM_LAST);
		    if (!params)
		      {
			xfree(tags);
			return REG_ESPACE;
		      }
		  }
		/* Second pass with tre_mach_empty() to get the list of
		   tags and parameters. */
		status = tre_match_empty(stack, cat->right, tags,
					 &assertions, params, NULL, NULL);
		if (status != REG_OK)
		  {
		    xfree(tags);
		    return status;
		  }
		node->lastpos =
		  tre_set_union(mem, cat->left->lastpos, cat->right->lastpos,
				tags, assertions, params);
		xfree(tags);
		if (!node->lastpos)
		  return REG_ESPACE;
	      }
	    else
	      {
		node->lastpos = cat->right->lastpos;
	      }
	    break;
	  }

	default:
	  assert(0);
	  break;
	}
    }

  return REG_OK;
}

// Assembly:
subq $0xe8, %rsp
movq %rdi, 0xd8(%rsp)
movq %rsi, 0xd0(%rsp)
movq %rdx, 0xc8(%rsp)
movq 0xd0(%rsp), %rdi
callq 0xc7920
movl %eax, 0xc4(%rsp)
movq 0xd0(%rsp), %rdi
movq 0xc8(%rsp), %rsi
callq 0xc7aa0
movl %eax, 0xc0(%rsp)
cmpl $0x0, 0xc0(%rsp)
je 0xbc7ac
movl 0xc0(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
xorl %esi, %esi
callq 0xc7930
movl %eax, 0xbc(%rsp)
cmpl $0x0, 0xbc(%rsp)
je 0xbc7df
movl 0xbc(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbc7e1
movq 0xd0(%rsp), %rdi
callq 0xc7920
cmpl 0xc4(%rsp), %eax
jle 0xbd426
movq 0xd0(%rsp), %rdi
callq 0xc7ad0
movl %eax, 0xb8(%rsp)
movq 0xd0(%rsp), %rdi
callq 0xc7b00
movq %rax, 0xb0(%rsp)
movl 0xb8(%rsp), %eax
movq %rax, 0x20(%rsp)
subq $0x3, %rax
ja 0xbd402
movq 0x20(%rsp), %rax
leaq 0xb8912(%rip), %rcx     # 0x175158
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xb0(%rsp), %rax
movl (%rax), %eax
movq %rax, 0x18(%rsp)
subq $0x3, %rax
ja 0xbce80
movq 0x18(%rsp), %rax
leaq 0xb88f4(%rip), %rcx     # 0x175168
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0xa8(%rsp)
movq 0xa8(%rsp), %rax
cmpq $-0x4, (%rax)
jne 0xbc978
movq 0xb0(%rsp), %rax
movl $0x0, 0x10(%rax)
movq 0xd8(%rsp), %rdi
movq 0xa8(%rsp), %rax
movl 0x10(%rax), %esi
xorl %edx, %edx
movl $0xff, %ecx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
callq 0xbe3f0
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0xbc90e
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
movq 0xd8(%rsp), %rdi
movq 0xa8(%rsp), %rax
movl 0x10(%rax), %esi
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
xorl %edx, %edx
movl $0xff, %ecx
xorl %r8d, %r8d
movl %r8d, %r9d
movq %r9, %r8
movl %eax, (%rsp)
callq 0xbe3f0
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0xbc973
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbcb17
movq 0xa8(%rsp), %rax
cmpq $0x0, (%rax)
jge 0xbca14
movq 0xb0(%rsp), %rax
movl $0x1, 0x10(%rax)
movq 0xd8(%rsp), %rdi
callq 0xbe4c0
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0xbc9d4
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
movq 0xd8(%rsp), %rdi
callq 0xbe4c0
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0xbca0f
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbcb15
movq 0xb0(%rsp), %rax
movl $0x0, 0x10(%rax)
movq 0xd8(%rsp), %rdi
movq 0xa8(%rsp), %rax
movl 0x10(%rax), %esi
movq 0xa8(%rsp), %rax
movq (%rax), %rax
movl %eax, %edx
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movl %eax, %ecx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
callq 0xbe3f0
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0xbca93
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
movq 0xd8(%rsp), %rdi
movq 0xa8(%rsp), %rax
movl 0x10(%rax), %esi
movq 0xa8(%rsp), %rax
movq (%rax), %rax
movl %eax, %edx
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movl %eax, %ecx
movq 0xa8(%rsp), %rax
movq 0x18(%rax), %r8
movq 0xa8(%rsp), %rax
movq 0x20(%rax), %r9
movl $0xffffffff, (%rsp)     # imm = 0xFFFFFFFF
callq 0xbe3f0
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0xbcb13
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbcb15
jmp 0xbcb17
jmp 0xbce80
movq 0xd0(%rsp), %rdi
movq 0xb0(%rsp), %rsi
callq 0xc7aa0
movl %eax, 0xa4(%rsp)
cmpl $0x0, 0xa4(%rsp)
je 0xbcb55
movl 0xa4(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
movl $0x1, %esi
callq 0xc7930
movl %eax, 0xa0(%rsp)
cmpl $0x0, 0xa0(%rsp)
je 0xbcb8b
movl 0xa0(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rsi
callq 0xc7aa0
movl %eax, 0x9c(%rsp)
cmpl $0x0, 0x9c(%rsp)
je 0xbcbcc
movl 0x9c(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
xorl %esi, %esi
callq 0xc7930
movl %eax, 0x98(%rsp)
cmpl $0x0, 0x98(%rsp)
je 0xbcbff
movl 0x98(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
callq 0xc7aa0
movl %eax, 0x94(%rsp)
cmpl $0x0, 0x94(%rsp)
je 0xbcc3f
movl 0x94(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
xorl %esi, %esi
callq 0xc7930
movl %eax, 0x90(%rsp)
cmpl $0x0, 0x90(%rsp)
je 0xbcc72
movl 0x90(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbce80
movq 0xd0(%rsp), %rdi
movq 0xb0(%rsp), %rsi
callq 0xc7aa0
movl %eax, 0x8c(%rsp)
cmpl $0x0, 0x8c(%rsp)
je 0xbccb0
movl 0x8c(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
movl $0x2, %esi
callq 0xc7930
movl %eax, 0x88(%rsp)
cmpl $0x0, 0x88(%rsp)
je 0xbcce6
movl 0x88(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rsi
callq 0xc7aa0
movl %eax, 0x84(%rsp)
cmpl $0x0, 0x84(%rsp)
je 0xbcd27
movl 0x84(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
xorl %esi, %esi
callq 0xc7930
movl %eax, 0x80(%rsp)
cmpl $0x0, 0x80(%rsp)
je 0xbcd5a
movl 0x80(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
callq 0xc7aa0
movl %eax, 0x7c(%rsp)
cmpl $0x0, 0x7c(%rsp)
je 0xbcd91
movl 0x7c(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
xorl %esi, %esi
callq 0xc7930
movl %eax, 0x78(%rsp)
cmpl $0x0, 0x78(%rsp)
je 0xbcdbb
movl 0x78(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbce80
movq 0xd0(%rsp), %rdi
movq 0xb0(%rsp), %rsi
callq 0xc7aa0
movl %eax, 0x74(%rsp)
cmpl $0x0, 0x74(%rsp)
je 0xbcdf0
movl 0x74(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
movl $0x3, %esi
callq 0xc7930
movl %eax, 0x70(%rsp)
cmpl $0x0, 0x70(%rsp)
je 0xbce1d
movl 0x70(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
callq 0xc7aa0
movl %eax, 0x6c(%rsp)
cmpl $0x0, 0x6c(%rsp)
je 0xbce54
movl 0x6c(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd0(%rsp), %rdi
xorl %esi, %esi
callq 0xc7930
movl %eax, 0x68(%rsp)
cmpl $0x0, 0x68(%rsp)
je 0xbce7e
movl 0x68(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbce80
jmp 0xbd421
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rax
movq (%rax), %rcx
movb $0x1, %al
cmpl $0x0, 0x10(%rcx)
movb %al, 0x17(%rsp)
jne 0xbcebe
movq 0x60(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
setne %al
movb %al, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
movq 0xb0(%rsp), %rax
movl %ecx, 0x10(%rax)
movq 0xd8(%rsp), %rdi
movq 0x60(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rax), %rsi
movq 0x60(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rax), %rdx
xorl %eax, %eax
movl %eax, %r9d
xorl %r8d, %r8d
movq %r9, %rcx
callq 0xbe530
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0xbcf31
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
movq 0xd8(%rsp), %rdi
movq 0x60(%rsp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rsi
movq 0x60(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rdx
xorl %eax, %eax
movl %eax, %r9d
xorl %r8d, %r8d
movq %r9, %rcx
callq 0xbe530
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0xbcf90
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbd421
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rax
cmpl $0x0, 0x8(%rax)
je 0xbcfbf
movq 0x58(%rsp), %rax
movq (%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0xbcfd0
movq 0xb0(%rsp), %rax
movl $0x1, 0x10(%rax)
jmp 0xbcfdf
movq 0xb0(%rsp), %rax
movl $0x0, 0x10(%rax)
movq 0x58(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rax), %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x58(%rsp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0xbd421
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq (%rax), %rcx
xorl %eax, %eax
cmpl $0x0, 0x10(%rcx)
movb %al, 0x16(%rsp)
je 0xbd04d
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
setne %al
movb %al, 0x16(%rsp)
movb 0x16(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
movq 0xb0(%rsp), %rax
movl %ecx, 0x10(%rax)
movq 0x28(%rsp), %rax
movq (%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0xbd218
movq 0xd0(%rsp), %rdi
movq 0x28(%rsp), %rax
movq (%rax), %rsi
xorl %eax, %eax
movl %eax, %r8d
leaq 0x54(%rsp), %r9
leaq 0x40(%rsp), %rax
movq %r8, %rdx
movq %r8, %rcx
movq %rax, (%rsp)
callq 0xbee90
movl %eax, 0x34(%rsp)
cmpl $0x0, 0x34(%rsp)
je 0xbd0bc
movl 0x34(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movl 0x54(%rsp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq $0x2, %rdi
callq 0xbcb8
movq %rax, 0x48(%rsp)
cmpq $0x0, 0x48(%rsp)
jne 0xbd0ec
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
movq 0x48(%rsp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movl $0x0, 0x44(%rsp)
movq $0x0, 0x38(%rsp)
cmpl $0x0, 0x40(%rsp)
je 0xbd153
movq 0xd8(%rsp), %rdi
xorl %ecx, %ecx
xorl %eax, %eax
movl %eax, %edx
movl $0x24, %r8d
movl %ecx, %esi
callq 0xc3270
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x38(%rsp)
jne 0xbd151
movq 0x48(%rsp), %rdi
callq 0xb760
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbd153
movq 0xd0(%rsp), %rdi
movq 0x28(%rsp), %rax
movq (%rax), %rsi
movq 0x48(%rsp), %rdx
movq 0x38(%rsp), %r8
leaq 0x44(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r9d
movq $0x0, (%rsp)
callq 0xbee90
movl %eax, 0x34(%rsp)
cmpl $0x0, 0x34(%rsp)
je 0xbd1a9
movq 0x48(%rsp), %rdi
callq 0xb760
movl 0x34(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd8(%rsp), %rdi
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rax), %rsi
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rax), %rdx
movq 0x48(%rsp), %rcx
movl 0x44(%rsp), %r8d
movq 0x38(%rsp), %r9
callq 0xbe530
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x48(%rsp), %rdi
callq 0xb760
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0xbd216
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbd230
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rax), %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x10(%rax)
je 0xbd3e7
movq 0xd0(%rsp), %rdi
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rsi
xorl %eax, %eax
movl %eax, %r8d
leaq 0x54(%rsp), %r9
leaq 0x40(%rsp), %rax
movq %r8, %rdx
movq %r8, %rcx
movq %rax, (%rsp)
callq 0xbee90
movl %eax, 0x34(%rsp)
cmpl $0x0, 0x34(%rsp)
je 0xbd28d
movl 0x34(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movl 0x54(%rsp), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq $0x2, %rdi
callq 0xbcb8
movq %rax, 0x48(%rsp)
cmpq $0x0, 0x48(%rsp)
jne 0xbd2bd
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
movq 0x48(%rsp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movl $0x0, 0x44(%rsp)
movq $0x0, 0x38(%rsp)
cmpl $0x0, 0x40(%rsp)
je 0xbd324
movq 0xd8(%rsp), %rdi
xorl %ecx, %ecx
xorl %eax, %eax
movl %eax, %edx
movl $0x24, %r8d
movl %ecx, %esi
callq 0xc3270
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x38(%rsp)
jne 0xbd322
movq 0x48(%rsp), %rdi
callq 0xb760
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbd324
movq 0xd0(%rsp), %rdi
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x48(%rsp), %rdx
movq 0x38(%rsp), %r8
leaq 0x44(%rsp), %rcx
xorl %eax, %eax
movl %eax, %r9d
movq $0x0, (%rsp)
callq 0xbee90
movl %eax, 0x34(%rsp)
cmpl $0x0, 0x34(%rsp)
je 0xbd37b
movq 0x48(%rsp), %rdi
callq 0xb760
movl 0x34(%rsp), %eax
movl %eax, 0xe4(%rsp)
jmp 0xbd431
movq 0xd8(%rsp), %rdi
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rsi
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rdx
movq 0x48(%rsp), %rcx
movl 0x44(%rsp), %r8d
movq 0x38(%rsp), %r9
callq 0xbe530
movq %rax, %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x48(%rsp), %rdi
callq 0xb760
movq 0xb0(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0xbd3e5
movl $0xc, 0xe4(%rsp)
jmp 0xbd431
jmp 0xbd400
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rcx
movq 0xb0(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0xbd421
leaq 0xb2ab2(%rip), %rdi     # 0x16febb
leaq 0xb7dfb(%rip), %rsi     # 0x17520b
movl $0x617, %edx            # imm = 0x617
leaq 0xb7f83(%rip), %rcx     # 0x17539f
callq 0xb3e0
jmp 0xbc7e1
movl $0x0, 0xe4(%rsp)
movl 0xe4(%rsp), %eax
addq $0xe8, %rsp
retq