// File: /workspace/github_c_makefile_star2_O0/jondurbin[P]dre2/src/dre2_parse.c
// Function: dre2_set_chars
void dre2_set_chars( struct dre2 *graph, int id )
{
  int i, iter;
  int index;
  struct dre2_node *node;

  node = &graph->v[id];
  if ( node->c >= 0 )
  {
    graph->starting_chars[node->c] = true;
    if ( graph->options & DRE2_NO_CASE )
    {
      if ( node->c >= 'a' && node->c <= 'z' )
        graph->starting_chars[node->c - ( 'a' - 'A' )] = true;
      else if ( node->c >= 'A' && node->c <= 'Z' )
        graph->starting_chars[node->c + ( 'a' - 'A' )] = true;
    }
  } else if ( node->c == DRE2_CHAR_CLASS )
  {
    for ( i = 0; i < RANGE; i++ )
    {
      if ( node->possible[i] )
      {
        graph->starting_chars[i] = true;
        if ( graph->options & DRE2_NO_CASE )
        {
          if ( i >= 'a' && i <= 'z' )
            graph->starting_chars[i - ( 'a' - 'A' )] = true;
          else if ( i >= 'A' && i <= 'Z' )
            graph->starting_chars[i + ( 'a' - 'A' )] = true;
        }
      }
    }
  } else if ( node->c == DRE2_DOT )
  {
    for ( i = 0; i < RANGE; i++ )
      graph->starting_chars[i] = true;
  } else if ( node->c >= DRE2_8BIT && node->c <= DRE2_ALPHA )
  {
    index = node->c * -1 - 5;
    i = 0;
    while ( dre2_predefined_classes[index][i] != -1 )
    {
      graph->starting_chars[dre2_predefined_classes[index][i]] = true;
      if ( graph->options & DRE2_NO_CASE )
      {
        if ( dre2_predefined_classes[index][i] >= 'a' && dre2_predefined_classes[index][i] <= 'z' )
          graph->starting_chars[dre2_predefined_classes[index][i] - ( 'a' - 'A' )] = true;
        else if ( dre2_predefined_classes[index][i] >= 'A' && dre2_predefined_classes[index][i] <= 'Z' )
          graph->starting_chars[dre2_predefined_classes[index][i] + ( 'a' - 'A' )] = true;
      }
      i++;
    }
  }
}

// Assembly:
movq %rdi, -0x8(%rsp)
movl %esi, -0xc(%rsp)
movq -0x8(%rsp), %rax
movq (%rax), %rax
movslq -0xc(%rsp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rsp)
movq -0x20(%rsp), %rax
cmpl $0x0, (%rax)
jl 0x3c31
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movq -0x20(%rsp), %rcx
movslq (%rcx), %rcx
movl $0x1, (%rax,%rcx,4)
movq -0x8(%rsp), %rax
movl 0x43c(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3c2c
movq -0x20(%rsp), %rax
cmpl $0x61, (%rax)
jl 0x3bf4
movq -0x20(%rsp), %rax
cmpl $0x7a, (%rax)
jg 0x3bf4
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movq -0x20(%rsp), %rcx
movl (%rcx), %ecx
subl $0x20, %ecx
movslq %ecx, %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x3c2a
movq -0x20(%rsp), %rax
cmpl $0x41, (%rax)
jl 0x3c28
movq -0x20(%rsp), %rax
cmpl $0x5a, (%rax)
jg 0x3c28
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movq -0x20(%rsp), %rcx
movl (%rcx), %ecx
addl $0x20, %ecx
movslq %ecx, %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x3c2a
jmp 0x3c2c
jmp 0x3eec
movq -0x20(%rsp), %rax
cmpl $-0x3, (%rax)
jne 0x3d0d
movl $0x0, -0x10(%rsp)
cmpl $0x100, -0x10(%rsp)     # imm = 0x100
jge 0x3d08
movq -0x20(%rsp), %rax
movq 0x28(%rax), %rax
movslq -0x10(%rsp), %rcx
cmpl $0x0, (%rax,%rcx,4)
je 0x3cf6
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movslq -0x10(%rsp), %rcx
movl $0x1, (%rax,%rcx,4)
movq -0x8(%rsp), %rax
movl 0x43c(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3cf4
cmpl $0x61, -0x10(%rsp)
jl 0x3cc5
cmpl $0x7a, -0x10(%rsp)
jg 0x3cc5
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movl -0x10(%rsp), %ecx
subl $0x20, %ecx
movslq %ecx, %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x3cf2
cmpl $0x41, -0x10(%rsp)
jl 0x3cf0
cmpl $0x5a, -0x10(%rsp)
jg 0x3cf0
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movl -0x10(%rsp), %ecx
addl $0x20, %ecx
movslq %ecx, %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x3cf2
jmp 0x3cf4
jmp 0x3cf6
jmp 0x3cf8
movl -0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rsp)
jmp 0x3c47
jmp 0x3eea
movq -0x20(%rsp), %rax
cmpl $-0x10, (%rax)
jne 0x3d53
movl $0x0, -0x10(%rsp)
cmpl $0x100, -0x10(%rsp)     # imm = 0x100
jge 0x3d4e
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movslq -0x10(%rsp), %rcx
movl $0x1, (%rax,%rcx,4)
movl -0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rsp)
jmp 0x3d1f
jmp 0x3ee8
movq -0x20(%rsp), %rax
cmpl $-0xf, (%rax)
jl 0x3ee6
movq -0x20(%rsp), %rax
cmpl $-0x5, (%rax)
jg 0x3ee6
movq -0x20(%rsp), %rax
imull $-0x1, (%rax), %eax
subl $0x5, %eax
movl %eax, -0x18(%rsp)
movl $0x0, -0x10(%rsp)
movslq -0x18(%rsp), %rcx
movq 0xe246(%rip), %rax      # 0x11fd8
shlq $0xa, %rcx
addq %rcx, %rax
movslq -0x10(%rsp), %rcx
cmpl $-0x1, (%rax,%rcx,4)
je 0x3ee4
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movslq -0x18(%rsp), %rdx
movq 0xe218(%rip), %rcx      # 0x11fd8
shlq $0xa, %rdx
addq %rdx, %rcx
movslq -0x10(%rsp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl $0x1, (%rax,%rcx,4)
movq -0x8(%rsp), %rax
movl 0x43c(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3ed4
movslq -0x18(%rsp), %rcx
movq 0xe1de(%rip), %rax      # 0x11fd8
shlq $0xa, %rcx
addq %rcx, %rax
movslq -0x10(%rsp), %rcx
cmpl $0x61, (%rax,%rcx,4)
jl 0x3e60
movslq -0x18(%rsp), %rcx
movq 0xe1c0(%rip), %rax      # 0x11fd8
shlq $0xa, %rcx
addq %rcx, %rax
movslq -0x10(%rsp), %rcx
cmpl $0x7a, (%rax,%rcx,4)
jg 0x3e60
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movslq -0x18(%rsp), %rdx
movq 0xe196(%rip), %rcx      # 0x11fd8
shlq $0xa, %rdx
addq %rdx, %rcx
movslq -0x10(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
subl $0x20, %ecx
movslq %ecx, %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x3ed2
movslq -0x18(%rsp), %rcx
movq 0xe16c(%rip), %rax      # 0x11fd8
shlq $0xa, %rcx
addq %rcx, %rax
movslq -0x10(%rsp), %rcx
cmpl $0x41, (%rax,%rcx,4)
jl 0x3ed0
movslq -0x18(%rsp), %rcx
movq 0xe14e(%rip), %rax      # 0x11fd8
shlq $0xa, %rcx
addq %rcx, %rax
movslq -0x10(%rsp), %rcx
cmpl $0x5a, (%rax,%rcx,4)
jg 0x3ed0
movq -0x8(%rsp), %rax
movq 0x418(%rax), %rax
movslq -0x18(%rsp), %rdx
movq 0xe124(%rip), %rcx      # 0x11fd8
shlq $0xa, %rdx
addq %rdx, %rcx
movslq -0x10(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x20, %ecx
movslq %ecx, %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x3ed2
jmp 0x3ed4
movl -0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rsp)
jmp 0x3d86
jmp 0x3ee6
jmp 0x3ee8
jmp 0x3eea
jmp 0x3eec
retq
nopl (%rax)