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

  // Initialize all chars to possible.
  for ( i = 0; i < RANGE; i++ )
    graph->impossible[i] = true;

  // Make possible all nodes found.
  for ( i = 0; i < graph->count; i++ )
  {
    c = graph->v[i].c;
    if ( c >= 0 )
    {
      graph->impossible[c] = false;
      if ( graph->options & DRE2_NO_CASE )
      {
        if ( c >= 'a' && c <= 'z' )
          graph->impossible[c - ('a' - 'A')] = false;
        else if ( c >= 'A' && c <= 'Z' )
          graph->impossible[c + ('a' - 'A')] = false;
      }
    } else if ( c >= DRE2_8BIT && c <= DRE2_ALPHA )
    {
      index = c * -1 - 5;
      j = 0;
      while ( dre2_predefined_classes[index][j] != -1 )
      {
        graph->impossible[dre2_predefined_classes[index][j]] = false;
        j++;
      }
    } else if ( c == DRE2_DOT )
    {
      for ( j = 0; j < RANGE; j++ )
        graph->impossible[j] = false;
      break;
    } else if ( c == DRE2_CHAR_CLASS )
    {
      for ( j = 0; j < RANGE; j++ )
      {
        if ( graph->v[i].possible[j] )
        {
          graph->impossible[j] = false;
          if ( graph->options & DRE2_NO_CASE )
          {
            if ( j >= 'a' && j <= 'z' )
              graph->impossible[j - ( 'a' - 'A' )] = false;
            if ( j >= 'A' && j <= 'Z' )
              graph->impossible[j + ( 'a' - 'A' )] = false;
          }
        }
      }
    }
  }
}

// Assembly:
movq %rdi, -0x8(%rsp)
movl $0x0, -0xc(%rsp)
cmpl $0x100, -0xc(%rsp)      # imm = 0x100
jge 0x6549
movq -0x8(%rsp), %rax
movslq -0xc(%rsp), %rcx
movl $0x1, 0x464(%rax,%rcx,4)
movl -0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rsp)
jmp 0x651d
movl $0x0, -0xc(%rsp)
movl -0xc(%rsp), %eax
movq -0x8(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x67b5
movq -0x8(%rsp), %rax
movq (%rax), %rax
movslq -0xc(%rsp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movl (%rax), %eax
movl %eax, -0x14(%rsp)
cmpl $0x0, -0x14(%rsp)
jl 0x660b
movq -0x8(%rsp), %rax
movslq -0x14(%rsp), %rcx
movl $0x0, 0x464(%rax,%rcx,4)
movq -0x8(%rsp), %rax
movl 0x43c(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x6606
cmpl $0x61, -0x14(%rsp)
jl 0x65da
cmpl $0x7a, -0x14(%rsp)
jg 0x65da
movq -0x8(%rsp), %rax
movl -0x14(%rsp), %ecx
subl $0x20, %ecx
movslq %ecx, %rcx
movl $0x0, 0x464(%rax,%rcx,4)
jmp 0x6604
cmpl $0x41, -0x14(%rsp)
jl 0x6602
cmpl $0x5a, -0x14(%rsp)
jg 0x6602
movq -0x8(%rsp), %rax
movl -0x14(%rsp), %ecx
addl $0x20, %ecx
movslq %ecx, %rcx
movl $0x0, 0x464(%rax,%rcx,4)
jmp 0x6604
jmp 0x6606
jmp 0x67a3
cmpl $-0xf, -0x14(%rsp)
jl 0x6689
cmpl $-0x5, -0x14(%rsp)
jg 0x6689
imull $-0x1, -0x14(%rsp), %eax
subl $0x5, %eax
movl %eax, -0x18(%rsp)
movl $0x0, -0x10(%rsp)
movslq -0x18(%rsp), %rcx
movq 0xb99f(%rip), %rax      # 0x11fd8
shlq $0xa, %rcx
addq %rcx, %rax
movslq -0x10(%rsp), %rcx
cmpl $-0x1, (%rax,%rcx,4)
je 0x6684
movq -0x8(%rsp), %rax
movslq -0x18(%rsp), %rdx
movq 0xb97c(%rip), %rcx      # 0x11fd8
shlq $0xa, %rdx
addq %rdx, %rcx
movslq -0x10(%rsp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl $0x0, 0x464(%rax,%rcx,4)
movl -0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rsp)
jmp 0x662d
jmp 0x67a1
cmpl $-0x10, -0x14(%rsp)
jne 0x66c9
movl $0x0, -0x10(%rsp)
cmpl $0x100, -0x10(%rsp)     # imm = 0x100
jge 0x66c4
movq -0x8(%rsp), %rax
movslq -0x10(%rsp), %rcx
movl $0x0, 0x464(%rax,%rcx,4)
movl -0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rsp)
jmp 0x6698
jmp 0x67b5
cmpl $-0x3, -0x14(%rsp)
jne 0x679d
movl $0x0, -0x10(%rsp)
cmpl $0x100, -0x10(%rsp)     # imm = 0x100
jge 0x679b
movq -0x8(%rsp), %rax
movq (%rax), %rax
movslq -0xc(%rsp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x28(%rax), %rax
movslq -0x10(%rsp), %rcx
cmpl $0x0, (%rax,%rcx,4)
je 0x6789
movq -0x8(%rsp), %rax
movslq -0x10(%rsp), %rcx
movl $0x0, 0x464(%rax,%rcx,4)
movq -0x8(%rsp), %rax
movl 0x43c(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x6787
cmpl $0x61, -0x10(%rsp)
jl 0x675d
cmpl $0x7a, -0x10(%rsp)
jg 0x675d
movq -0x8(%rsp), %rax
movl -0x10(%rsp), %ecx
subl $0x20, %ecx
movslq %ecx, %rcx
movl $0x0, 0x464(%rax,%rcx,4)
cmpl $0x41, -0x10(%rsp)
jl 0x6785
cmpl $0x5a, -0x10(%rsp)
jg 0x6785
movq -0x8(%rsp), %rax
movl -0x10(%rsp), %ecx
addl $0x20, %ecx
movslq %ecx, %rcx
movl $0x0, 0x464(%rax,%rcx,4)
jmp 0x6787
jmp 0x6789
jmp 0x678b
movl -0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rsp)
jmp 0x66dc
jmp 0x679d
jmp 0x679f
jmp 0x67a1
jmp 0x67a3
jmp 0x67a5
movl -0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rsp)
jmp 0x6551
retq
nopw %cs:(%rax,%rax)