// File: /workspace/github_cpp_makefile_star2_O2/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 0x526e
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
popq %rbx
popq %r14
popq %r15
jmp 0x56be
movl (%rbx), %esi
decl %esi
movq %r15, %rdi
callq 0x5932
movzbl (%r14), %edx
testl %edx, %edx
je 0x52b3
movl %edx, %ecx
andl $0x1f, %ecx
decl %ecx
cmpl $0xb, %ecx
ja 0x5346
leaq 0x310f(%rip), %rsi      # 0x83a8
movslq (%rsi,%rcx,4), %rcx
addq %rsi, %rcx
jmpq *%rcx
cmpb $0x20, %al
sete %cl
cmpb $0x9, %al
sete %al
orb %cl, %al
jmp 0x5371
pushq $0x1
popq %rax
jmp 0x537c
movq (%r15), %rcx
movq 0xb0(%rcx), %rcx
jmp 0x535c
cmpb $0x20, %al
ja 0x52e1
movzbl %al, %eax
movabsq $0x100000600, %rcx      # imm = 0x100000600
btq %rax, %rcx
jb 0x5346
testb %dl, %dl
jns 0x537a
jmp 0x534a
cmpb $0x9, %al
jmp 0x52f1
cmpb $0xa, %al
sete %al
jmp 0x5371
cmpb $0x20, %al
ja 0x530d
movzbl %al, %ecx
movabsq $0x100000600, %rsi      # imm = 0x100000600
btq %rcx, %rsi
jb 0x5346
andb $-0x21, %al
addb $-0x41, %al
cmpb $0x1a, %al
jmp 0x536e
addb $-0x30, %al
cmpb $0xa, %al
jmp 0x536e
movq (%r15), %rsi
movq 0xa8(%rsi), %rdi
movsbl %al, %ecx
movl %ecx, %eax
sarl $0x5, %eax
cltq
movl (%rdi,%rax,4), %r8d
movzbl %cl, %r9d
andb $0x1f, %cl
pushq $0x1
popq %rdi
shlq %cl, %rdi
btl %r9d, %r8d
jae 0x5382
testb %dl, %dl
js 0x537a
incq %r14
jmp 0x525b
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 %al
testb %dl, %dl
setns %cl
xorb %al, %cl
je 0x534a
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
movq 0xa0(%rsi), %rcx
testl %edi, (%rcx,%rax,4)
setne %al
jmp 0x5371
nop