// File: /workspace/github_c_makefile_star2_O3/jondurbin[P]dre2/src/dre2_parse.c
// Function: print_dre2
void print_dre2( struct dre2 *graph )
{
  int i, j, k;
  int index, found;

  printf( "=======================\n" );
  printf( "|| Node || Neighbors ||\n" );
  printf( "=======================\n" );
  for ( i = 0; i < graph->count; i++ )
  {
    printf( "Node %d (%c): ", i, graph->v[i].c );
    for ( j = 0; j < graph->v[i].n_count; j++ )
      printf( "%d, ", graph->v[i].n[j] );
    printf( "\n" );

    if ( graph->v[i].c == DRE2_CHAR_CLASS )
    {
      for ( j = 0; j < RANGE; j++ )
      {
        if ( graph->v[i].possible[j] )
          printf( "x" );
        else
          printf( "." );
      }
      printf( "\n" );
    } else if ( graph->v[i].c < 0 )
    {
      if ( graph->v[i].c == DRE2_DOT )
      {
        for ( j = 0; j < RANGE; j++ )
          printf( "x" );
      } else
      {
        index = graph->v[i].c * -1 - 5;
        if ( index >= 0 && index <= 10 )
        {
          j = 0;
          for ( j = 0; j < RANGE; j++ )
          {
            k = 0;
            found = false;
            while ( dre2_predefined_classes[index][k] != -1 )
            {
              if ( dre2_predefined_classes[index][k] == j )
              {
                found = true;
                break;
              }
              k++;
            }
            if ( found )
              printf( "x" );
            else
              printf( "." );
          }
        }
      }
      printf ( "\n" );
    }
  }
  printf( "\n" );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x564e(%rip), %r14      # 0xb26a
movq %r14, %rdi
callq 0x20d0
leaq 0x560f(%rip), %rdi      # 0xb23a
callq 0x20d0
movq %r14, %rdi
callq 0x20d0
cmpl $0x0, 0x8(%rbx)
jle 0x5d8c
leaq 0x551e(%rip), %r15      # 0xb167
xorl %ebp, %ebp
movq (%rbx), %rax
movq %rbp, %r12
shlq $0x6, %r12
movl (%rax,%r12), %edx
leaq 0x54f8(%rip), %rdi      # 0xb158
movl %ebp, %esi
xorl %eax, %eax
callq 0x2150
movq (%rbx), %rax
cmpl $0x0, 0x10(%rax,%r12)
jle 0x5c9a
xorl %r14d, %r14d
movq 0x8(%rax,%r12), %rax
movl (%rax,%r14,4), %esi
movq %r15, %rdi
xorl %eax, %eax
callq 0x2150
incq %r14
movq (%rbx), %rax
movslq 0x10(%rax,%r12), %rcx
cmpq %rcx, %r14
jl 0x5c77
movl $0xa, %edi
callq 0x20a0
movq (%rbx), %rax
movl (%rax,%r12), %eax
movl $0xfffffffd, %ecx       # imm = 0xFFFFFFFD
cmpq %rcx, %rax
jne 0x5cee
xorl %r14d, %r14d
movq (%rbx), %rax
movq 0x28(%rax,%r12), %rax
cmpl $0x0, (%rax,%r14,4)
movl $0x2e, %edi
je 0x5cd1
movl $0x78, %edi
callq 0x20a0
incq %r14
cmpq $0x100, %r14            # imm = 0x100
jne 0x5cb8
movl $0xa, %edi
callq 0x20a0
jmp 0x5cf2
testl %eax, %eax
js 0x5d07
incq %rbp
movslq 0x8(%rbx), %rax
cmpq %rax, %rbp
jl 0x5c4b
jmp 0x5d8c
cmpl $-0x10, %eax
jne 0x5d23
movl $0x100, %r14d           # imm = 0x100
movl $0x78, %edi
callq 0x20a0
decl %r14d
jne 0x5d12
jmp 0x5ce2
leal 0xf(%rax), %ecx
cmpl $0xa, %ecx
ja 0x5ce2
movl $0xfffffffb, %ecx       # imm = 0xFFFFFFFB
subq %rax, %rcx
shlq $0xa, %rcx
movq 0x829a(%rip), %rax      # 0xdfd8
leaq (%rax,%rcx), %r12
addq $0x4, %r12
movl -0x4(%r12), %r14d
xorl %r13d, %r13d
movl $0x2e, %edi
movq %r12, %rax
movl %r14d, %ecx
cmpl $-0x1, %r14d
je 0x5d76
cmpl %r13d, %ecx
je 0x5d71
movl (%rax), %ecx
addq $0x4, %rax
cmpl $-0x1, %ecx
jne 0x5d5f
jmp 0x5d76
movl $0x78, %edi
callq 0x20a0
incl %r13d
cmpl $0x100, %r13d           # imm = 0x100
jne 0x5d4e
jmp 0x5ce2
movl $0xa, %edi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x20a0