// File: /workspace/github_c_makefile_star2_O1/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 0x5611(%rip), %r14      # 0xb26a
movq %r14, %rdi
callq 0x20d0
leaq 0x55d2(%rip), %rdi      # 0xb23a
callq 0x20d0
movq %r14, %rdi
callq 0x20d0
cmpl $0x0, 0x8(%rbx)
jle 0x5dbf
leaq 0x54e1(%rip), %r15      # 0xb167
xorl %r12d, %r12d
movq (%rbx), %rax
movq %r12, %rbp
shlq $0x6, %rbp
movl (%rax,%rbp), %edx
leaq 0x54bb(%rip), %rdi      # 0xb158
movl %r12d, %esi
xorl %eax, %eax
callq 0x2150
movq (%rbx), %rax
cmpl $0x0, 0x10(%rax,%rbp)
jle 0x5cd7
xorl %r14d, %r14d
movq 0x8(%rax,%rbp), %rax
movl (%rax,%r14,4), %esi
movq %r15, %rdi
xorl %eax, %eax
callq 0x2150
incq %r14
movq (%rbx), %rax
movslq 0x10(%rax,%rbp), %rcx
cmpq %rcx, %r14
jl 0x5cb4
movl $0xa, %edi
callq 0x20a0
movq (%rbx), %rax
movl (%rax,%rbp), %eax
cmpl $-0x3, %eax
jne 0x5d25
xorl %r14d, %r14d
movq (%rbx), %rax
movq 0x28(%rax,%rbp), %rax
cmpl $0x0, (%rax,%r14,4)
movl $0x2e, %edi
je 0x5d08
movl $0x78, %edi
callq 0x20a0
incq %r14
cmpq $0x100, %r14            # imm = 0x100
jne 0x5cef
movl $0xa, %edi
callq 0x20a0
jmp 0x5d29
testl %eax, %eax
js 0x5d3e
incq %r12
movslq 0x8(%rbx), %rax
cmpq %rax, %r12
jl 0x5c89
jmp 0x5dbf
cmpl $-0x10, %eax
jne 0x5d58
movl $0x100, %ebp            # imm = 0x100
movl $0x78, %edi
callq 0x20a0
decl %ebp
jne 0x5d48
jmp 0x5d19
leal 0xf(%rax), %ecx
cmpl $0xa, %ecx
ja 0x5d19
movl $0xfffffffb, %ecx       # imm = 0xFFFFFFFB
subl %eax, %ecx
shlq $0xa, %rcx
movq 0x8266(%rip), %rax      # 0xdfd8
leaq (%rax,%rcx), %rbp
addq $0x4, %rbp
movl -0x4(%rbp), %r13d
xorl %r14d, %r14d
movl $0x2e, %edi
movq %rbp, %rax
movl %r13d, %ecx
cmpl $-0x1, %r13d
je 0x5da9
cmpl %r14d, %ecx
je 0x5da4
movl (%rax), %ecx
addq $0x4, %rax
cmpl $-0x1, %ecx
jne 0x5d92
jmp 0x5da9
movl $0x78, %edi
callq 0x20a0
incl %r14d
cmpl $0x100, %r14d           # imm = 0x100
jne 0x5d81
jmp 0x5d19
movl $0xa, %edi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x20a0