// File: /workspace/github_c_makefile_star2_O0/jondurbin[P]dre2/src/dre2_parse.c
// Function: dre2_add_node
void dre2_add_node( struct dre2_node **v, int *node_count, int c, int **minimal, int no_realloc )
{
  // Initialize the node count and vertex array if necessary.
  if ( ! *node_count )
  {
    *node_count = 1;
    if ( !no_realloc )
      *v = ( struct dre2_node * )malloc( sizeof( struct dre2_node ) );
  } else
  {
    // Increment node count and allocate additional memory.
    *node_count = *node_count + 1;
    if ( !no_realloc )
      *v = ( struct dre2_node * )realloc( *v, sizeof( struct dre2_node ) * *node_count );
  }

  // Set this node's data.
  ( *v )[*node_count - 1].c = c;

  // Initialize neighbor array and count.
  ( *v )[*node_count - 1].n = ( int * )malloc( sizeof( int ) );
  ( *v )[*node_count - 1].n_count = 0;

  // Initalize the parent array and count.
  ( *v )[*node_count - 1].p = ( int * )malloc( sizeof( int ) );
  ( *v )[*node_count - 1].p_count = 0;

  // Allocate some memory for character class possible lookup list.
  if ( c == DRE2_CHAR_CLASS )
    ( *v )[*node_count - 1].possible = ( int * )calloc( RANGE, sizeof( int ) );

  // Initialize min_n to NULL.
  ( *v )[*node_count - 1].min_n = NULL;

  dre2_add_minimal( minimal, node_count );
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movl %edx, 0x14(%rsp)
movq %rcx, 0x8(%rsp)
movl %r8d, 0x4(%rsp)
movq 0x18(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x5cbf
movq 0x18(%rsp), %rax
movl $0x1, (%rax)
cmpl $0x0, 0x4(%rsp)
jne 0x5cbd
movl $0x40, %edi
callq 0x2280
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq %rcx, (%rax)
jmp 0x5cfd
movq 0x18(%rsp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movq 0x18(%rsp), %rax
movl %ecx, (%rax)
cmpl $0x0, 0x4(%rsp)
jne 0x5cfb
movq 0x20(%rsp), %rax
movq (%rax), %rdi
movq 0x18(%rsp), %rax
movslq (%rax), %rsi
shlq $0x6, %rsi
callq 0x22b0
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq %rcx, (%rax)
jmp 0x5cfd
movl 0x14(%rsp), %ecx
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdx
movl (%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x6, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movl $0x4, %edi
callq 0x2280
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdx
movl (%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x6, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rcx
movl (%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movl $0x0, 0x10(%rax)
movl $0x4, %edi
callq 0x2280
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdx
movl (%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x6, %rdx
addq %rdx, %rax
movq %rcx, 0x18(%rax)
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rcx
movl (%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movl $0x0, 0x20(%rax)
cmpl $-0x3, 0x14(%rsp)
jne 0x5df8
movl $0x100, %edi            # imm = 0x100
movl $0x4, %esi
callq 0x21d0
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdx
movl (%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x6, %rdx
addq %rdx, %rax
movq %rcx, 0x28(%rax)
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rcx
movl (%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq $0x0, 0x30(%rax)
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x2370
addq $0x28, %rsp
retq