// File: /workspace/github_cpp_makefile_star2_O1/cjxgm[P]libgpp/src/libgpp.cpp
// Function: (anonymous namespace)::Preprocessor::match_start_sequence(char const*, int*)
int match_start_sequence(const char *s, int *pos) {
            char c;
            int match;

            if (!((*s) & 0x60)) { // special sequences from prev. context
                c = get_char(*pos - 1);
                match = 1;
                if (*s == 0)
                    return 1;
                switch ((*s) & 0x1f) {
                case '\001':
                    if ((c != ' ') && (c != '\t')) {
                        match = 0;
                        break;
                    }
                case '\002':
                    break;
                case '\003':
                    if ((c != ' ') && (c != '\t') && (c != '\n')) {
                        match = 0;
                        break;
                    }
                case '\004':
                    break;
                case '\006':
                    if ((c == ' ') || (c == '\t') || (c == '\n'))
                        break;
                    // fallthrough
                case '\005':
                    match = ((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z'));
                    break;
                case '\007':
                    match = ((c >= '0') && (c <= '9'));
                    break;
                case '\010':
                    match = is_in_charset(S->id_set, c);
                    break;
                case '\011':
                    match = (c == '\t');
                    break;
                case '\012':
                    match = (c == '\n');
                    break;
                case '\013':
                    match = is_in_charset(S->op_set, c);
                    break;
                case '\014':
                    match = is_in_charset(S->ext_op_set, c) || is_in_charset(S->op_set, c);
                    break;
                }
                if ((*s) & 0x80)
                    match = !match;
                if (!match)
                    return 0;
                s++;
            }
            return match_sequence(s, pos);
        }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
testb $0x60, (%rsi)
je 0x598e
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
popq %rbx
popq %r14
popq %r15
jmp 0x5e50
movl (%rbx), %esi
decl %esi
movq %r15, %rdi
callq 0x60ce
movzbl (%r14), %edx
testl %edx, %edx
je 0x59d8
movl %edx, %ecx
andl $0x1f, %ecx
movb $0x1, %sil
decl %ecx
cmpl $0xb, %ecx
ja 0x5aa2
leaq 0x2b14(%rip), %rdi      # 0x84d0
movslq (%rdi,%rcx,4), %rcx
addq %rdi, %rcx
jmpq *%rcx
cmpb $0x20, %al
sete %cl
cmpb $0x9, %al
sete %sil
orb %cl, %sil
jmp 0x5aa2
movl $0x1, %eax
jmp 0x5ab1
movq (%r15), %rcx
movq 0xb0(%rcx), %rcx
jmp 0x5a8c
cmpb $0x21, %al
jae 0x5abf
movabsq $0x100000600, %rsi      # imm = 0x100000600
movl %eax, %ecx
shrq %cl, %rsi
jmp 0x5aa2
cmpb $0x9, %al
jmp 0x5a13
cmpb $0xa, %al
sete %sil
jmp 0x5aa2
cmpb $0x20, %al
ja 0x5a33
movzbl %al, %ecx
movabsq $0x100000600, %rdi      # imm = 0x100000600
btq %rcx, %rdi
jb 0x5aa2
andb $-0x21, %al
addb $-0x41, %al
cmpb $0x1a, %al
jmp 0x5a9e
addb $-0x30, %al
cmpb $0xa, %al
jmp 0x5a9e
movq (%r15), %rdi
movq 0xa8(%rdi), %rcx
movsbl %al, %r8d
sarl $0x5, %r8d
movslq %r8d, %r8
movl (%rcx,%r8,4), %r10d
movzbl %al, %r11d
andb $0x1f, %al
movl $0x1, %r9d
movl %eax, %ecx
shlq %cl, %r9
btl %r11d, %r10d
jb 0x5aa2
movq 0xa0(%rdi), %rax
testl %r9d, (%rax,%r8,4)
setne %sil
jmp 0x5aa2
movq (%r15), %rcx
movq 0xa0(%rcx), %rcx
movsbl %al, %esi
sarl $0x5, %esi
movslq %esi, %rsi
movl (%rcx,%rsi,4), %ecx
movzbl %al, %eax
btl %eax, %ecx
setb %sil
testb %dl, %dl
setns %cl
xorb %sil, %cl
xorl %eax, %eax
testb $0x1, %cl
je 0x5ab7
popq %rbx
popq %r14
popq %r15
retq
incq %r14
jmp 0x597b
xorl %esi, %esi
jmp 0x5aa2
nop