// File: /workspace/github_cpp_makefile_star2_O2/joncampbell123[P]haxcc/haxpp.cpp
// Function: is_keyword(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
enum token::token_t is_keyword(const string &s) {
    if (s == "_Alignas")
        return token::ALIGNAS;
    if (s == "_Alignof")
        return token::ALIGNOF;
    if (s == "_Atomic")
        return token::ATOMIC;
    if (s == "_Bool")
        return token::BOOL_KW;
    if (s == "_Complex")
        return token::COMPLEX;
    if (s == "_Generic")
        return token::GENERIC;
    if (s == "_Imaginary")
        return token::IMAGINARY;
    if (s == "_Noreturn")
        return token::NORETURN;
    if (s == "_Pragma")
        return token::PRAGMA;
    if (s == "_Static_assert")
        return token::STATIC_ASSERT;
    if (s == "_Thread_local")
        return token::THREAD_LOCAL;
    if (s == "auto")
        return token::AUTO;
    if (s == "break")
        return token::BREAK;
    if (s == "case")
        return token::CASE;
    if (s == "char")
        return token::CHAR;
    if (s == "const")
        return token::CONST;
    if (s == "continue")
        return token::CONTINUE;
    if (s == "default")
        return token::DEFAULT;
    if (s == "do")
        return token::DO;
    if (s == "double")
        return token::DOUBLE;
    if (s == "else")
        return token::ELSE;
    if (s == "enum")
        return token::ENUM;
    if (s == "extern")
        return token::EXTERN;
    if (s == "float")
        return token::FLOAT_KW;
    if (s == "for")
        return token::FOR;
    if (s == "goto")
        return token::GOTO;
    if (s == "if")
        return token::IF;
    if (s == "int")
        return token::INT;
    if (s == "long")
        return token::LONG;
    if (s == "register")
        return token::REGISTER;
    if (s == "return")
        return token::RETURN;
    if (s == "short")
        return token::SHORT;
    if (s == "signed")
        return token::SIGNED;
    if (s == "sizeof")
        return token::SIZEOF;
    if (s == "static")
        return token::STATIC;
    if (s == "struct")
        return token::STRUCT;
    if (s == "switch")
        return token::SWITCH;
    if (s == "typedef")
        return token::TYPEDEF;
    if (s == "union")
        return token::UNION;
    if (s == "unsigned")
        return token::UNSIGNED;
    if (s == "void")
        return token::VOID;
    if (s == "volatile")
        return token::VOLATILE;
    if (s == "while")
        return token::WHILE;

    /* GCC treats these as keywords anyway, why not do the same? */
    if (s == "__VA_ARGS__")
        return token::VA_ARGS;
    if (s == "__VA_OPT__")
        return token::VA_OPT;

    return token::NONE;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0xc646(%rip), %rsi      # 0xf807
callq 0xb1f3
testb %al, %al
je 0x31d1
pushq $0x27
jmp 0x361b
leaq 0xc638(%rip), %rsi      # 0xf810
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x31eb
pushq $0x28
jmp 0x361b
leaq 0xc627(%rip), %rsi      # 0xf819
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3205
pushq $0x29
jmp 0x361b
leaq 0xc615(%rip), %rsi      # 0xf821
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x321f
pushq $0x2a
jmp 0x361b
leaq 0xc601(%rip), %rsi      # 0xf827
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3239
pushq $0x2b
jmp 0x361b
leaq 0xc5f0(%rip), %rsi      # 0xf830
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3253
pushq $0x2c
jmp 0x361b
leaq 0xc5df(%rip), %rsi      # 0xf839
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x326d
pushq $0x2d
jmp 0x361b
leaq 0xc5d0(%rip), %rsi      # 0xf844
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3287
pushq $0x2e
jmp 0x361b
leaq 0xc5c0(%rip), %rsi      # 0xf84e
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x32a1
pushq $0x31
jmp 0x361b
leaq 0xc5ae(%rip), %rsi      # 0xf856
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x32bb
pushq $0x2f
jmp 0x361b
leaq 0xc5a3(%rip), %rsi      # 0xf865
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x32d5
pushq $0x30
jmp 0x361b
leaq 0xc597(%rip), %rsi      # 0xf873
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x32ef
pushq $0x51
jmp 0x361b
leaq 0xc582(%rip), %rsi      # 0xf878
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3309
pushq $0x52
jmp 0x361b
leaq 0xc56e(%rip), %rsi      # 0xf87e
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3323
pushq $0x53
jmp 0x361b
leaq 0xc6bd(%rip), %rsi      # 0xf9e7
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x333d
pushq $0x54
jmp 0x361b
leaq 0xc53f(%rip), %rsi      # 0xf883
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3357
pushq $0x55
jmp 0x361b
leaq 0xc52b(%rip), %rsi      # 0xf889
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3371
pushq $0x56
jmp 0x361b
leaq 0xc51a(%rip), %rsi      # 0xf892
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x338b
pushq $0x57
jmp 0x361b
leaq 0xc508(%rip), %rsi      # 0xf89a
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x33a5
pushq $0x58
jmp 0x361b
leaq 0xc4f1(%rip), %rsi      # 0xf89d
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x33bf
pushq $0x59
jmp 0x361b
leaq 0xc400(%rip), %rsi      # 0xf7c6
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x33d9
pushq $0x5a
jmp 0x361b
leaq 0xc4c4(%rip), %rsi      # 0xf8a4
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x33f3
pushq $0x5b
jmp 0x361b
leaq 0xc4af(%rip), %rsi      # 0xf8a9
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x340d
pushq $0x5c
jmp 0x361b
leaq 0xc49c(%rip), %rsi      # 0xf8b0
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3427
pushq $0x5d
jmp 0x361b
leaq 0xc488(%rip), %rsi      # 0xf8b6
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3441
pushq $0x5e
jmp 0x361b
leaq 0xc472(%rip), %rsi      # 0xf8ba
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x345b
pushq $0x5f
jmp 0x361b
leaq 0xd1e3(%rip), %rsi      # 0x10645
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3475
pushq $0x60
jmp 0x361b
leaq 0xc443(%rip), %rsi      # 0xf8bf
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x348f
pushq $0x6b
jmp 0x361b
leaq 0xc42d(%rip), %rsi      # 0xf8c3
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x34a9
pushq $0x6c
jmp 0x361b
leaq 0xc418(%rip), %rsi      # 0xf8c8
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x34c3
pushq $0x6d
jmp 0x361b
leaq 0xc37d(%rip), %rsi      # 0xf847
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x34dd
pushq $0x6e
jmp 0x361b
leaq 0xc3ed(%rip), %rsi      # 0xf8d1
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x34f7
pushq $0x6f
jmp 0x361b
leaq 0xc405(%rip), %rsi      # 0xf903
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3511
pushq $0x70
jmp 0x361b
leaq 0xc3bf(%rip), %rsi      # 0xf8d7
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x352b
pushq $0x26
jmp 0x361b
leaq 0xc3ac(%rip), %rsi      # 0xf8de
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3545
pushq $0x71
jmp 0x361b
leaq 0xc399(%rip), %rsi      # 0xf8e5
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x355f
pushq $0x72
jmp 0x361b
leaq 0xc386(%rip), %rsi      # 0xf8ec
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3579
pushq $0x73
jmp 0x361b
leaq 0xc373(%rip), %rsi      # 0xf8f3
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3593
pushq $0x74
jmp 0x361b
leaq 0xc361(%rip), %rsi      # 0xf8fb
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x35aa
pushq $0x75
jmp 0x361b
leaq 0xc350(%rip), %rsi      # 0xf901
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x35c1
pushq $0x76
jmp 0x361b
leaq 0xc342(%rip), %rsi      # 0xf90a
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x35d8
pushq $0x77
jmp 0x361b
leaq 0xc330(%rip), %rsi      # 0xf90f
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x35ef
pushq $0x78
jmp 0x361b
leaq 0xc322(%rip), %rsi      # 0xf918
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x3606
pushq $0x79
jmp 0x361b
leaq 0xc311(%rip), %rsi      # 0xf91e
movq %rbx, %rdi
callq 0xb1f3
testb %al, %al
je 0x361e
pushq $0x7c
popq %rax
popq %rbx
retq
leaq 0xc305(%rip), %rsi      # 0xf92a
movq %rbx, %rdi
callq 0xb1f3
xorl %ecx, %ecx
testb %al, %al
pushq $0x7d
popq %rax
cmovel %ecx, %eax
jmp 0x361c