// File: /workspace/github_c_makefile_star2_O0/jondurbin[P]dre2/src/dre2_parse.c
// Function: dre2_predefined_class
void dre2_predefined_class( struct dre2_node *node, unsigned char *c, int action, int part_of_class )
{
  int i, index;
  if ( !part_of_class )
  {
    free( node->possible );
    node->possible = NULL;
    switch ( *c )
    {
      case 'a':
        node->c = DRE2_ALPHA;
        break;
      case 'b':
        node->c = DRE2_BORDER;
        break;
      case 'd':
        node->c = DRE2_DIGIT;
        break;
      case 'e':
        node->c = DRE2_SIM_DIGIT;
        break;
      case 'f':
        node->c = DRE2_OBF_DIGIT;
        break;
      case 'h':
        node->c = DRE2_HEX;
        break;
      case 'u':
        node->c = DRE2_URL;
        break;
      case 'v':
        node->c = DRE2_DOMAIN;
        break;
      case 'w':
        node->c = DRE2_WORD;
        break;
      case 's': 
        node->c = DRE2_WHITE_SPACE;
        break;
      case '8':
        node->c = DRE2_8BIT;
        break;
      case 'n':
        node->c = '\n';
        break;
      case 'r':
        node->c = '\r';
        break;
      case 't':
        node->c = '\t';
        break;
      case 'z':
        node->c = DRE2_EOF;
        break;
      default:
        node->c = *c;
        break;
    }
  } else
  {
    switch ( *c )
    {
      case 'a':
        index = 0;
      case 'b':
        index = 1;
      case 'd':
        index = 2;
      case 'e':
        index = 3;
      case 'f':
        index = 4;
      case 'h':
        index = 5;
      case 'u':
        index = 6;
      case 'v':
        index = 7;
      case 'w':
        index = 8;
      case 's':
        index = 9;
      case '8':
        index = 10;
        // Go through the array.
        i = 0;
        while ( dre2_predefined_classes[index][i] != -1 )
        {
          node->possible[dre2_predefined_classes[index][i]] = action;
          i++;
        }
        break;
      case 'n':
        node->possible['\n'] = action;
        break;
      case 'r':
        node->possible['\r'] = action;
        break;
      case 't':
        node->possible['\t'] = action;
        break;
      default:
        node->possible[*c] = action;
        break;
    }
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movl %edx, 0x24(%rsp)
movl %ecx, 0x20(%rsp)
cmpl $0x0, 0x20(%rsp)
jne 0x2925
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x2070
movq 0x30(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x28(%rsp), %rax
movzbl (%rax), %eax
addl $-0x38, %eax
movl %eax, %ecx
movq %rcx, 0x10(%rsp)
subl $0x42, %eax
ja 0x2911
movq 0x10(%rsp), %rax
leaq 0xa935(%rip), %rcx      # 0xd168
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x30(%rsp), %rax
movl $0xfffffffb, (%rax)     # imm = 0xFFFFFFFB
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffffa, (%rax)     # imm = 0xFFFFFFFA
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff9, (%rax)     # imm = 0xFFFFFFF9
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff8, (%rax)     # imm = 0xFFFFFFF8
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff7, (%rax)     # imm = 0xFFFFFFF7
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff6, (%rax)     # imm = 0xFFFFFFF6
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff5, (%rax)     # imm = 0xFFFFFFF5
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff4, (%rax)     # imm = 0xFFFFFFF4
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff3, (%rax)     # imm = 0xFFFFFFF3
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff2, (%rax)     # imm = 0xFFFFFFF2
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffff1, (%rax)     # imm = 0xFFFFFFF1
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xa, (%rax)
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xd, (%rax)
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0x9, (%rax)
jmp 0x2920
movq 0x30(%rsp), %rax
movl $0xfffffffc, (%rax)     # imm = 0xFFFFFFFC
jmp 0x2920
movq 0x28(%rsp), %rax
movzbl (%rax), %ecx
movq 0x30(%rsp), %rax
movl %ecx, (%rax)
jmp 0x2a5e
movq 0x28(%rsp), %rax
movzbl (%rax), %eax
addl $-0x38, %eax
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x3f, %eax
ja 0x2a44
movq 0x8(%rsp), %rax
leaq 0xa928(%rip), %rcx      # 0xd274
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x0, 0x18(%rsp)
movl $0x1, 0x18(%rsp)
movl $0x2, 0x18(%rsp)
movl $0x3, 0x18(%rsp)
movl $0x4, 0x18(%rsp)
movl $0x5, 0x18(%rsp)
movl $0x6, 0x18(%rsp)
movl $0x7, 0x18(%rsp)
movl $0x8, 0x18(%rsp)
movl $0x9, 0x18(%rsp)
movl $0xa, 0x18(%rsp)
movl $0x0, 0x1c(%rsp)
movslq 0x18(%rsp), %rcx
movq 0xf617(%rip), %rax      # 0x11fd8
shlq $0xa, %rcx
addq %rcx, %rax
movslq 0x1c(%rsp), %rcx
cmpl $-0x1, (%rax,%rcx,4)
je 0x2a0c
movl 0x24(%rsp), %edx
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rax
movslq 0x18(%rsp), %rsi
movq 0xf5ec(%rip), %rcx      # 0x11fd8
shlq $0xa, %rsi
addq %rsi, %rcx
movslq 0x1c(%rsp), %rsi
movslq (%rcx,%rsi,4), %rcx
movl %edx, (%rax,%rcx,4)
movl 0x1c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1c(%rsp)
jmp 0x29b5
jmp 0x2a5c
movl 0x24(%rsp), %ecx
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rax
movl %ecx, 0x28(%rax)
jmp 0x2a5c
movl 0x24(%rsp), %ecx
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rax
movl %ecx, 0x34(%rax)
jmp 0x2a5c
movl 0x24(%rsp), %ecx
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rax
movl %ecx, 0x24(%rax)
jmp 0x2a5c
movl 0x24(%rsp), %edx
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x28(%rsp), %rcx
movzbl (%rcx), %ecx
movl %edx, (%rax,%rcx,4)
jmp 0x2a5e
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)