// File: /workspace/github_c_makefile_star2_O0/sharmaeklavya2[P]cerplag/lexer.c
// Function: precompute_dfa
void precompute_dfa()
{
    state_t s;
    cclass_t c;

    for(s=0; s < NUM_STATES; ++s)
        for(c=0; c < NUM_CCLASSES; ++c)
        {
            state_table[s][c] = S_START;
            if(is_final[s])
                action_table[s][c] = A_TOKS;
            else
                action_table[s][c] = A_ERR;
        }

    // whitespace and restricted chars

    for(c=0; c < NUM_CCLASSES; ++c)
        add_edge(S_START, c, S_START, A_TOKF);
    add_edge(S_START, C_WS, S_START, A_IGN);
    add_edge(S_START, C_NL, S_START, A_NL);

    // identifiers

    add_edge(S_START, C_ALPHA, S_ID, A_ADD);
    add_edge(S_START, C_E, S_ID, A_ADD);
    add_edge(S_START, C_UNSC, S_ID, A_ADD);
    // undescrore isn't allowed as the first character in an identifier
    // but we'll handle it later
    add_edge(S_ID, C_ALPHA, S_ID, A_ADD);
    add_edge(S_ID, C_E, S_ID, A_ADD);
    add_edge(S_ID, C_DIG, S_ID, A_ADD);
    add_edge(S_ID, C_UNSC, S_ID, A_ADD);

    // numbers

    add_edge(S_START, C_DIG, S_I1, A_ADD);

    add_edge(S_I1, C_DIG, S_I1, A_ADD);
    add_edge(S_I1, C_DOT, S_I2, A_ADD);
    add_edge(S_I1, C_E, S_E, A_ADD);

    add_edge(S_I2, C_DOT, S_DOT2, A_TOKN);
    add_edge(S_I2, C_DIG, S_R1, A_ADD);
    add_edge(S_I2, C_E, S_E, A_ADD);

    add_edge(S_R1, C_DIG, S_R1, A_ADD);
    add_edge(S_R1, C_E, S_E, A_ADD);

    add_edge(S_E, C_PM, S_E2, A_ADD);
    add_edge(S_E, C_DIG, S_R2, A_ADD);
    add_edge(S_E2, C_DIG, S_R2, A_ADD);

    add_edge(S_R2, C_DIG, S_R2, A_ADD);

    // multiplication and comments

    add_edge(S_START, C_STAR, S_STAR, A_ADD);
    add_edge(S_STAR, C_STAR, S_STAR2, A_CLR);
    for(c=0; c < NUM_CCLASSES; ++c)
        add_edge(S_STAR2, c, S_STAR2, A_IGN);
    add_edge(S_STAR2, C_NL, S_STAR2, A_NL);
    add_edge(S_STAR2, C_STAR, S_STAR3, A_IGN);
    for(c=0; c < NUM_CCLASSES; ++c)
        add_edge(S_STAR3, c, S_STAR3, A_IGN);
    add_edge(S_STAR3, C_NL, S_STAR3, A_NL);
    add_edge(S_STAR3, C_STAR, S_START, A_IGN);

    // operators

    add_edge(S_START, C_SCO, S_START, A_TOKF);
    add_edge(S_START, C_PM, S_START, A_TOKF);

    add_edge(S_START, C_EQ, S_EQ, A_ADD);
    add_edge(S_EQ, C_EQ, S_START, A_TOKF);

    add_edge(S_START, C_EXCL, S_EXCL, A_ADD);
    add_edge(S_EXCL, C_EQ, S_START, A_TOKF);

    add_edge(S_START, C_DOT, S_DOT, A_ADD);
    add_edge(S_DOT, C_DOT, S_DOT2, A_ADD);

    add_edge(S_START, C_COLON, S_COLON, A_ADD);
    add_edge(S_COLON, C_EQ, S_START, A_TOKF);

    add_edge(S_START, C_LT, S_LT, A_ADD);
    add_edge(S_LT, C_EQ, S_START, A_TOKF);
    add_edge(S_LT, C_LT, S_LT2, A_ADD);
    add_edge(S_LT2, C_LT, S_LT3, A_ADD);

    add_edge(S_START, C_GT, S_GT, A_ADD);
    add_edge(S_GT, C_EQ, S_START, A_TOKF);
    add_edge(S_GT, C_GT, S_GT2, A_ADD);
    add_edge(S_GT2, C_GT, S_GT3, A_ADD);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x0, -0x4(%rbp)
cmpl $0x16, -0x4(%rbp)
jae 0x479e
movl $0x0, -0x8(%rbp)
cmpl $0x11, -0x8(%rbp)
jae 0x478e
movl -0x4(%rbp), %eax
movl %eax, %ecx
leaq 0x1666e(%rip), %rax     # 0x1ad90
imulq $0x44, %rcx, %rcx
addq %rcx, %rax
movl -0x8(%rbp), %ecx
movl $0x0, (%rax,%rcx,4)
movl -0x4(%rbp), %eax
movl %eax, %ecx
leaq 0x16c31(%rip), %rax     # 0x1b370
testb $0x1, (%rax,%rcx)
je 0x4764
movl -0x4(%rbp), %eax
movl %eax, %ecx
leaq 0x16c3f(%rip), %rax     # 0x1b390
imulq $0x44, %rcx, %rcx
addq %rcx, %rax
movl -0x8(%rbp), %ecx
movl $0x4, (%rax,%rcx,4)
jmp 0x4781
movl -0x4(%rbp), %eax
movl %eax, %ecx
leaq 0x16c20(%rip), %rax     # 0x1b390
imulq $0x44, %rcx, %rcx
addq %rcx, %rax
movl -0x8(%rbp), %ecx
movl $0x7, (%rax,%rcx,4)
jmp 0x4783
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x4710
jmp 0x4790
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x46ff
movl $0x0, -0x8(%rbp)
cmpl $0x11, -0x8(%rbp)
jae 0x47c7
movl -0x8(%rbp), %esi
xorl %edx, %edx
movl $0x5, %ecx
movl %edx, %edi
callq 0x4be0
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x47a5
xorl %edx, %edx
movl $0x5, %esi
movl $0x1, %ecx
movl %edx, %edi
callq 0x4be0
xorl %edx, %edx
movl $0x6, %esi
movl $0x2, %ecx
movl %edx, %edi
callq 0x4be0
xorl %ecx, %ecx
movl $0x1, %esi
movl $0xf, %edx
movl %ecx, %edi
callq 0x4be0
xorl %ecx, %ecx
movl $0x2, %esi
movl $0xf, %edx
movl %ecx, %edi
callq 0x4be0
xorl %ecx, %ecx
movl $0x3, %esi
movl $0xf, %edx
movl %ecx, %edi
callq 0x4be0
movl $0xf, %edx
movl $0x1, %esi
xorl %ecx, %ecx
movl %edx, %edi
callq 0x4be0
movl $0xf, %edx
movl $0x2, %esi
xorl %ecx, %ecx
movl %edx, %edi
callq 0x4be0
movl $0xf, %edx
movl $0x4, %esi
xorl %ecx, %ecx
movl %edx, %edi
callq 0x4be0
movl $0xf, %edx
movl $0x3, %esi
xorl %ecx, %ecx
movl %edx, %edi
callq 0x4be0
xorl %ecx, %ecx
movl $0x4, %esi
movl $0x10, %edx
movl %ecx, %edi
callq 0x4be0
movl $0x10, %edx
movl $0x4, %esi
xorl %ecx, %ecx
movl %edx, %edi
callq 0x4be0
movl $0x10, %edi
movl $0xb, %esi
movl $0x11, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0x10, %edi
movl $0x2, %esi
movl $0x12, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0x11, %edi
movl $0xb, %esi
movl $0x7, %edx
movl $0x6, %ecx
callq 0x4be0
movl $0x11, %edi
movl $0x4, %esi
movl $0x14, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0x11, %edi
movl $0x2, %esi
movl $0x12, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0x14, %edx
movl $0x4, %esi
xorl %ecx, %ecx
movl %edx, %edi
callq 0x4be0
movl $0x14, %edi
movl $0x2, %esi
movl $0x12, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0x12, %edi
movl $0x8, %esi
movl $0x13, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0x12, %edi
movl $0x4, %esi
movl $0x15, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0x13, %edi
movl $0x4, %esi
movl $0x15, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0x15, %edx
movl $0x4, %esi
xorl %ecx, %ecx
movl %edx, %edi
callq 0x4be0
xorl %ecx, %ecx
movl $0xc, %esi
movl $0x1, %edx
movl %ecx, %edi
callq 0x4be0
movl $0x1, %edi
movl $0xc, %esi
movl $0x2, %edx
movl $0x3, %ecx
callq 0x4be0
movl $0x0, -0x8(%rbp)
cmpl $0x11, -0x8(%rbp)
jae 0x49df
movl -0x8(%rbp), %esi
movl $0x2, %edx
movl $0x1, %ecx
movl %edx, %edi
callq 0x4be0
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x49ba
movl $0x2, %ecx
movl $0x6, %esi
movl %ecx, %edi
movl %ecx, %edx
callq 0x4be0
movl $0x2, %edi
movl $0xc, %esi
movl $0x3, %edx
movl $0x1, %ecx
callq 0x4be0
movl $0x0, -0x8(%rbp)
cmpl $0x11, -0x8(%rbp)
jae 0x4a37
movl -0x8(%rbp), %esi
movl $0x3, %edx
movl $0x1, %ecx
movl %edx, %edi
callq 0x4be0
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x4a12
movl $0x3, %edx
movl $0x6, %esi
movl $0x2, %ecx
movl %edx, %edi
callq 0x4be0
movl $0x3, %edi
movl $0xc, %esi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x4be0
xorl %edx, %edx
movl $0x7, %esi
movl $0x5, %ecx
movl %edx, %edi
callq 0x4be0
xorl %edx, %edx
movl $0x8, %esi
movl $0x5, %ecx
movl %edx, %edi
callq 0x4be0
xorl %ecx, %ecx
movl $0x9, %esi
movl $0x4, %edx
movl %ecx, %edi
callq 0x4be0
movl $0x4, %edi
movl $0x9, %esi
xorl %edx, %edx
movl $0x5, %ecx
callq 0x4be0
xorl %ecx, %ecx
movl $0xa, %esi
movl $0x5, %edx
movl %ecx, %edi
callq 0x4be0
movl $0x5, %ecx
movl $0x9, %esi
xorl %edx, %edx
movl %ecx, %edi
callq 0x4be0
xorl %ecx, %ecx
movl $0xb, %esi
movl $0x6, %edx
movl %ecx, %edi
callq 0x4be0
movl $0x6, %edi
movl $0xb, %esi
movl $0x7, %edx
xorl %ecx, %ecx
callq 0x4be0
xorl %ecx, %ecx
movl $0xd, %esi
movl $0x8, %edx
movl %ecx, %edi
callq 0x4be0
movl $0x8, %edi
movl $0x9, %esi
xorl %edx, %edx
movl $0x5, %ecx
callq 0x4be0
xorl %ecx, %ecx
movl $0xe, %esi
movl $0x9, %edx
movl %ecx, %edi
callq 0x4be0
movl $0x9, %esi
xorl %edx, %edx
movl $0x5, %ecx
movl %esi, %edi
callq 0x4be0
movl $0x9, %edi
movl $0xe, %esi
movl $0xa, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0xa, %edi
movl $0xe, %esi
movl $0xb, %edx
xorl %ecx, %ecx
callq 0x4be0
xorl %ecx, %ecx
movl $0xf, %esi
movl $0xc, %edx
movl %ecx, %edi
callq 0x4be0
movl $0xc, %edi
movl $0x9, %esi
xorl %edx, %edx
movl $0x5, %ecx
callq 0x4be0
movl $0xc, %edi
movl $0xf, %esi
movl $0xd, %edx
xorl %ecx, %ecx
callq 0x4be0
movl $0xd, %edi
movl $0xf, %esi
movl $0xe, %edx
xorl %ecx, %ecx
callq 0x4be0
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)