// File: /workspace/github_c_makefile_star2_O1/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
pushq %r14
pushq %rbx
leaq 0x112cd(%rip), %rbx     # 0x15d70
xorl %r14d, %r14d
movl $0x5d8, %edx            # imm = 0x5D8
movq %rbx, %rdi
xorl %esi, %esi
callq 0x30f0
leaq 0x118b4(%rip), %rax     # 0x16370
leaq 0x1188d(%rip), %rcx     # 0x16350
movzbl (%r14,%rcx), %edx
xorl $0x1, %edx
leal (%rdx,%rdx,2), %edx
addl $0x4, %edx
xorl %esi, %esi
movl %edx, (%rax,%rsi,4)
incq %rsi
cmpq $0x11, %rsi
jne 0x4ad3
incq %r14
addq $0x44, %rax
cmpq $0x16, %r14
jne 0x4ac3
xorps %xmm0, %xmm0
movaps %xmm0, 0x112aa(%rip)    # 0x15da0
movaps %xmm0, 0x11293(%rip)    # 0x15d90
movaps %xmm0, 0x1127c(%rip)    # 0x15d80
movaps %xmm0, 0x11265(%rip)    # 0x15d70
movl $0x0, 0x1129b(%rip)     # 0x15db0
xorl %ecx, %ecx
leaq 0x11852(%rip), %rax     # 0x16370
movl $0x5, (%rcx,%rax)
addq $0x4, %rcx
cmpq $0x44, %rcx
jne 0x4b1e
movabsq $0x200000001, %rcx      # imm = 0x200000001
movq %rcx, 0x11844(%rip)     # 0x16384
xorl %ecx, %ecx
movl %ecx, 0x11240(%rip)     # 0x15d88
movl $0xf, 0x11222(%rip)     # 0x15d74
xorps %xmm0, %xmm0
movups %xmm0, 0x11818(%rip)    # 0x16374
movabsq $0xf0000000f, %rdx      # imm = 0xF0000000F
movq %rdx, 0x1120b(%rip)     # 0x15d78
movq %rdx, 0x115fc(%rip)     # 0x16170
movaps %xmm0, 0x11bf5(%rip)    # 0x16770
movq %rdx, 0x115f6(%rip)     # 0x16178
movq $0x10, 0x111f3(%rip) # 0x15d80
movl $0x10, 0x11629(%rip)    # 0x161c0
movl %ecx, 0x11c23(%rip)     # 0x167c0
movl $0x11, 0x11635(%rip)    # 0x161dc
movl %ecx, 0x11c2f(%rip)     # 0x167dc
movl $0x12, %edx
movl %edx, 0x11600(%rip)     # 0x161b8
movl %ecx, 0x11bfa(%rip)     # 0x167b8
movl $0x7, 0x11658(%rip)     # 0x16220
movl $0x6, 0x11c4e(%rip)     # 0x16820
movl $0x14, %esi
movl %esi, 0x11627(%rip)     # 0x16204
movl %ecx, 0x11c21(%rip)     # 0x16804
movl %edx, 0x11613(%rip)     # 0x161fc
movl %ecx, 0x11c0d(%rip)     # 0x167fc
movl %esi, 0x116db(%rip)     # 0x162d0
movl %ecx, 0x11cd5(%rip)     # 0x168d0
movl %edx, 0x116c7(%rip)     # 0x162c8
movl %ecx, 0x11cc1(%rip)     # 0x168c8
movl $0x13, 0x11647(%rip)    # 0x16258
movl %ecx, 0x11c41(%rip)     # 0x16858
movl $0x15, %edx
movl %edx, 0x11626(%rip)     # 0x16248
movl %ecx, 0x11c20(%rip)     # 0x16848
movl %edx, 0x1165e(%rip)     # 0x1628c
movl %ecx, 0x11c58(%rip)     # 0x1688c
movl %edx, 0x116da(%rip)     # 0x16314
movl %ecx, 0x11cd4(%rip)     # 0x16914
movl $0x1, 0x11156(%rip)     # 0x15da0
movl %ecx, 0x11750(%rip)     # 0x163a0
movl $0x2, 0x1118a(%rip)     # 0x15de4
movl $0x3, 0x11780(%rip)     # 0x163e4
movl $0x2, 0x88(%rbx,%rcx,4)
movl $0x1, 0x88(%rax,%rcx,4)
incq %rcx
cmpq $0x11, %rcx
jne 0x4c64
movl $0x2, %ecx
movl %ecx, 0x11182(%rip)     # 0x15e10
movl %ecx, 0x1177c(%rip)     # 0x16410
movl $0x3, 0x1118a(%rip)     # 0x15e28
movl $0x1, 0x11780(%rip)     # 0x16428
xorl %ecx, %ecx
movl $0x3, 0xcc(%rbx,%rcx,4)
movl $0x1, 0xcc(%rax,%rcx,4)
incq %rcx
cmpq $0x11, %rcx
jne 0x4caa
movl $0x3, 0x11181(%rip)     # 0x15e54
movl $0x2, 0x11777(%rip)     # 0x16454
xorl %eax, %eax
movl %eax, 0x11187(%rip)     # 0x15e6c
movl $0x1, 0x1177d(%rip)     # 0x1646c
movl %eax, 0x11097(%rip)     # 0x15d8c
movl $0x5, %ecx
movl %ecx, 0x1168c(%rip)     # 0x1638c
movabsq $0x400000000, %rdx      # imm = 0x400000000
movq %rdx, 0x1107f(%rip)     # 0x15d90
movq $0x5, 0x11674(%rip) # 0x16390
movl %eax, 0x11182(%rip)     # 0x15ea4
movl %ecx, 0x1177c(%rip)     # 0x164a4
movabsq $0x600000005, %rdx      # imm = 0x600000005
movq %rdx, 0x1105f(%rip)     # 0x15d98
movq %rax, 0x11658(%rip)     # 0x16398
movl %eax, 0x111a2(%rip)     # 0x15ee8
movl %ecx, 0x1179c(%rip)     # 0x164e8
movl $0x7, 0x111de(%rip)     # 0x15f34
movl %eax, 0x117d8(%rip)     # 0x16534
movl $0x8, 0x1103e(%rip)     # 0x15da4
movl %eax, 0x11638(%rip)     # 0x163a4
movl %eax, 0x11242(%rip)     # 0x15fb4
movl %ecx, 0x1183c(%rip)     # 0x165b4
movabsq $0xc00000009, %rdx      # imm = 0xC00000009
movq %rdx, 0x1101f(%rip)     # 0x15da8
movq %rax, 0x11618(%rip)     # 0x163a8
movl %eax, 0x11262(%rip)     # 0x15ff8
movl %ecx, 0x1185c(%rip)     # 0x165f8
movl $0xa, 0x11266(%rip)     # 0x1600c
movl %eax, 0x11860(%rip)     # 0x1660c
movl $0xb, 0x1129a(%rip)     # 0x16050
movl %eax, 0x11894(%rip)     # 0x16650
movl %eax, 0x11302(%rip)     # 0x160c4
movl %ecx, 0x118fc(%rip)     # 0x166c4
movl $0xd, 0x1130a(%rip)     # 0x160dc
movl %eax, 0x11904(%rip)     # 0x166dc
movl $0xe, 0x1133e(%rip)     # 0x16120
movl %eax, 0x11938(%rip)     # 0x16720
popq %rbx
popq %r14
popq %rbp
retq