// File: /workspace/github_cpp_makefile_star2_O1/rofl0r[P]ascc/cs_parser.cpp
// Function: is_part_of_symbol(char, char)
int is_part_of_symbol(char thischar, char startchar) {
    // workaround for strings
    static int sayno_next_char = 0;
    static int next_is_escaped = 0;
    if (sayno_next_char) {
        sayno_next_char = 0;
        return 0;
    }
    if ((startchar == '\"') || (startchar == '\'')) {
        if (next_is_escaped) {
            // an escaped " or whatever, so let it through
            next_is_escaped = 0;
            return 1;
        }
        if (thischar == '\\')
            next_is_escaped = 1;

        if (thischar == startchar) sayno_next_char = 1;
        return 1;
    }
    if (startchar == '0' && thischar == 'x') {
        // a hexadecimal number
        return 1;
    }
    // a decimal number
    if ((startchar >= '0') && (startchar <= '9')) {
        if ((thischar >= '0') && (thischar <= '9'))
            return 1;
        // float constant
        if (thischar == '.')
            return 1;
        return 0;
    }
    // variable name
    if (((startchar >= 'a') && (startchar <= 'z')) ||
        ((startchar >= 'A') && (startchar <= 'Z')) ||
        (startchar == '_')) {
            if (is_alphanum(thischar)) return 1;
            return 0;
    }
    // ==, >=, <=, !=, etc
    if (thischar == '=') {
        if ((startchar == '=') || (startchar == '<') || (startchar == '>')
            || (startchar == '!') || (startchar == '+') || (startchar == '-')
            || (startchar == '*') || (startchar == '/')
            || (startchar == '&') || (startchar == '|') || (startchar == '^'))
            return 1;
    }
    // && and ||, ++ and --
    if ((thischar == '&') && (startchar == '&')) return 1;
    if ((thischar == '|') && (startchar == '|')) return 1;
    if ((thischar == '+') && (startchar == '+')) return 1;
    if ((thischar == '-') && (startchar == '-')) return 1;
    // << and >>
    if ((thischar == '<') && (startchar == '<')) return 1;
    if ((thischar == '>') && (startchar == '>')) return 1;
    // ...
    if ((thischar == '.') && (startchar == '.')) return 1;
    // ::
    if ((thischar == ':') && (startchar == ':')) return 1;

    return 0;
}

// Assembly:
cmpb $0x1, 0x20996(%rip)     # 0x253a0
jne 0x4a1a
movb $0x0, 0x2098d(%rip)     # 0x253a0
xorl %eax, %eax
jmp 0x4ab8
movsbl %sil, %ecx
cmpl $0x27, %ecx
je 0x4a28
cmpl $0x22, %ecx
jne 0x4a59
cmpb $0x1, 0x20975(%rip)     # 0x253a4
jne 0x4a3c
movb $0x0, 0x2096c(%rip)     # 0x253a4
movb $0x1, %al
jmp 0x4ab8
cmpb $0x5c, %dil
jne 0x4a49
movb $0x1, 0x2095b(%rip)     # 0x253a4
movb $0x1, %al
cmpb %sil, %dil
jne 0x4ab8
movb $0x1, 0x20949(%rip)     # 0x253a0
jmp 0x4ab8
movl %esi, %edx
xorb $0x30, %dl
movl %edi, %r8d
xorb $0x78, %r8b
movb $0x1, %al
orb %dl, %r8b
je 0x4ab8
leal -0x30(%rsi), %edx
cmpb $0x9, %dl
ja 0x4a87
leal -0x30(%rdi), %eax
cmpb $0xa, %al
setb %cl
cmpb $0x2e, %dil
sete %al
orb %cl, %al
jmp 0x4ab8
leal -0x61(%rsi), %edx
cmpb $0x1a, %dl
jb 0x4aa5
leal -0x41(%rsi), %edx
cmpb $0x1a, %dl
setae %dl
cmpb $0x5f, %sil
setne %r8b
testb %dl, %r8b
jne 0x4abc
pushq %rax
movsbl %dil, %edi
callq 0x13f91
testl %eax, %eax
setne %al
addq $0x8, %rsp
movzbl %al, %eax
retq
cmpb $0x3d, %dil
jne 0x4adf
leal -0x21(%rcx), %edx
cmpl $0x3d, %edx
ja 0x4ada
movabsq $0x2000000038005621, %r8 # imm = 0x2000000038005621
btq %rdx, %r8
jb 0x4ab8
cmpl $0x7c, %ecx
je 0x4ab8
movl %edi, %ecx
xorb $0x26, %cl
movl %esi, %edx
xorb $0x26, %dl
orb %cl, %dl
je 0x4ab8
movl %edi, %ecx
xorb $0x7c, %cl
movl %esi, %edx
xorb $0x7c, %dl
orb %cl, %dl
je 0x4ab8
movl %edi, %ecx
xorb $0x2b, %cl
movl %esi, %edx
xorb $0x2b, %dl
orb %cl, %dl
je 0x4ab8
movl %edi, %ecx
xorb $0x2d, %cl
movl %esi, %edx
xorb $0x2d, %dl
orb %cl, %dl
je 0x4ab8
movl %edi, %ecx
xorb $0x3c, %cl
movl %esi, %edx
xorb $0x3c, %dl
orb %cl, %dl
je 0x4ab8
movl %edi, %ecx
xorb $0x3e, %cl
movl %esi, %edx
xorb $0x3e, %dl
orb %cl, %dl
je 0x4ab8
movl %edi, %ecx
xorb $0x2e, %cl
movl %esi, %edx
xorb $0x2e, %dl
orb %cl, %dl
je 0x4ab8
xorb $0x3a, %dil
xorb $0x3a, %sil
orb %dil, %sil
sete %al
jmp 0x4ab8