// File: /workspace/github_c_makefile_star2_O3/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:
pushq %rbx
movq %rdi, %rax
addq $0x464, %rdi            # imm = 0x464
movl $0x119, %ecx            # imm = 0x119
movaps 0x6a8f(%rip), %xmm0     # 0xb140
movups %xmm0, (%rax,%rcx,4)
addq $0x4, %rcx
cmpq $0x219, %rcx            # imm = 0x219
jne 0x46b1
cmpl $0x0, 0x8(%rax)
jle 0x47f7
movq (%rax), %rcx
xorl %edx, %edx
movq 0x9900(%rip), %rsi      # 0xdfd8
movl $0xfffffffd, %r8d       # imm = 0xFFFFFFFD
movq %rdx, %r10
shlq $0x6, %r10
movl (%rcx,%r10), %r9d
testl %r9d, %r9d
js 0x4717
movl $0x0, 0x464(%rax,%r9,4)
testb $0x4, 0x43c(%rax)
je 0x47e7
leal -0x61(%r9), %r10d
cmpl $0x19, %r10d
ja 0x4770
addl $-0x20, %r9d
jmp 0x477e
leal 0xf(%r9), %r11d
cmpl $0xa, %r11d
ja 0x4760
movl $0xfffffffb, %r10d      # imm = 0xFFFFFFFB
subq %r9, %r10
shlq $0xa, %r10
movl (%rsi,%r10), %r9d
cmpl $-0x1, %r9d
je 0x47e7
addq %rsi, %r10
addq $0x4, %r10
movslq %r9d, %r9
movl $0x0, (%rdi,%r9,4)
movl (%r10), %r9d
addq $0x4, %r10
cmpl $-0x1, %r9d
jne 0x4743
jmp 0x47e7
cmpq %r8, %r9
je 0x478b
cmpl $-0x10, %r9d
jne 0x47e7
jmp 0x47f9
leal -0x41(%r9), %r10d
cmpl $0x19, %r10d
ja 0x47e7
orl $0x20, %r9d
movl %r9d, %r9d
movl $0x0, (%rdi,%r9,4)
jmp 0x47e7
movq 0x28(%rcx,%r10), %r9
movl $0xffffff9f, %r10d      # imm = 0xFFFFFF9F
xorl %r11d, %r11d
cmpl $0x0, (%r9,%r11,4)
je 0x47d8
movl $0x0, 0x464(%rax,%r11,4)
testb $0x4, 0x43c(%rax)
je 0x47d8
cmpl $0x19, %r10d
ja 0x47c1
leaq -0x20(%r11), %rbx
jmp 0x47d1
leal 0x20(%r10), %ebx
cmpl $0x19, %ebx
ja 0x47d8
movq %r11, %rbx
orq $0x20, %rbx
movl $0x0, (%rdi,%rbx,4)
incq %r11
incl %r10d
cmpq $0x100, %r11            # imm = 0x100
jne 0x4799
incq %rdx
movslq 0x8(%rax), %r9
cmpq %r9, %rdx
jl 0x46de
popq %rbx
retq
movl $0x400, %edx            # imm = 0x400
xorl %esi, %esi
popq %rbx
jmp 0x2180