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

            while (*s != 0) {
                if (!((*s) & 0x60)) { // special sequences
                    match = 1;
                    switch ((*s) & 0x1f) {
                    case '\001':
                        c = get_char(i++);
                        if ((c != ' ') && (c != '\t')) {
                            match = 0;
                            break;
                        }
                        // fallthrough
                    case '\002':
                        i--;
                        do {
                            c = get_char(++i);
                        } while ((c == ' ') || (c == '\t'));
                        break;
                    case '\003':
                        c = get_char(i++);
                        if ((c != ' ') && (c != '\t') && (c != '\n')) {
                            match = 0;
                            break;
                        }
                        // fallthrough
                    case '\004':
                        i--;
                        do {
                            c = get_char(++i);
                        } while ((c == ' ') || (c == '\t') || (c == '\n'));
                        break;
                    case '\006':
                        c = get_char(i++);
                        match = ((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z'))
                                || (c == ' ') || (c == '\t') || (c == '\n');
                        break;
                    case '\005':
                        c = get_char(i++);
                        match = ((c >= 'a') && (c <= 'z'))
                                || ((c >= 'A') && (c <= 'Z'));
                        break;
                    case '\007':
                        c = get_char(i++);
                        match = ((c >= '0') && (c <= '9'));
                        break;
                    case '\010':
                        c = get_char(i++);
                        match = is_in_charset(S->id_set, c);
                        break;
                    case '\011':
                        c = get_char(i++);
                        match = (c == '\t');
                        break;
                    case '\012':
                        c = get_char(i++);
                        match = (c == '\n');
                        break;
                    case '\013':
                        c = get_char(i++);
                        match = is_in_charset(S->op_set, c);
                        break;
                    case '\014':
                        c = get_char(i++);
                        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;
                } else if (get_char(i++) != *s)
                    return 0;
                s++;
            }
            *pos = i;
            return 1;
        }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, (%rsp)
movl (%rdx), %r12d
movb (%rsi), %al
testb %al, %al
je 0x60d6
movq %rsi, %r14
movq %rdi, %r15
leaq 0x260b(%rip), %r13      # 0x84a4
movabsq $0x100000600, %rbp      # imm = 0x100000600
testb $0x60, %al
je 0x5ec6
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
cmpb (%r14), %al
jne 0x60e6
incl %r12d
movl %r12d, %ebx
jmp 0x60c2
movzbl %al, %eax
andl $0x1f, %eax
decl %eax
cmpl $0xb, %eax
ja 0x604e
movslq (%r13,%rax,4), %rax
addq %r13, %rax
jmpq *%rax
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
cmpb $0x20, %al
je 0x5fff
movzbl %al, %eax
cmpl $0x9, %eax
je 0x5fff
jmp 0x5fab
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
movq (%r15), %rdx
movq 0xa8(%rdx), %rsi
movsbl %al, %ecx
movl %ecx, %eax
sarl $0x5, %eax
cltq
movl (%rsi,%rax,4), %edi
movzbl %cl, %r8d
andb $0x1f, %cl
movl $0x1, %esi
shlq %cl, %rsi
btl %r8d, %edi
jb 0x604b
movq 0xa0(%rdx), %rcx
testl %esi, (%rcx,%rax,4)
setne %al
jmp 0x60b7
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
andb $-0x21, %al
addb $-0x41, %al
cmpb $0x1a, %al
jmp 0x609d
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
cmpb $0xa, %al
jmp 0x60b4
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
cmpb $0x20, %al
ja 0x5fab
movzbl %al, %eax
btq %rax, %rbp
jb 0x5fbd
cmpb $0x0, (%r14)
js 0x60c2
jmp 0x60e6
movl %r12d, %ebx
movl %ebx, %r12d
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
cmpb $0x20, %al
ja 0x604e
movzbl %al, %eax
btq %rax, %rbp
jae 0x604e
incl %r12d
jmp 0x5fc0
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
movq (%r15), %rcx
movq 0xb0(%rcx), %rcx
jmp 0x608c
movl %r12d, %ebx
movl %ebx, %r12d
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
cmpb $0x20, %al
je 0x6019
movzbl %al, %eax
cmpl $0x9, %eax
jne 0x604e
incl %r12d
jmp 0x6002
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
movl %eax, %ecx
andb $-0x21, %cl
addb $-0x41, %cl
cmpb $0x1a, %cl
jb 0x604b
cmpb $0x9, %al
je 0x604b
movzbl %al, %ecx
cmpl $0x20, %ecx
jne 0x5f87
movl %ebx, %r12d
cmpb $0x0, (%r14)
movl %r12d, %ebx
jns 0x60c2
jmp 0x60e6
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
addb $-0x30, %al
cmpb $0xa, %al
jmp 0x609d
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
movq (%r15), %rcx
movq 0xa0(%rcx), %rcx
movsbl %al, %eax
movzbl %al, %edx
sarl $0x5, %eax
cltq
movl (%rcx,%rax,4), %eax
btl %edx, %eax
setb %al
jmp 0x60b7
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x60f8
cmpb $0x9, %al
sete %al
cmpb $0x0, (%r14)
setns %cl
xorb %al, %cl
jne 0x60e6
movb 0x1(%r14), %al
incq %r14
movl %ebx, %r12d
testb %al, %al
jne 0x5ea3
jmp 0x60d9
movl %r12d, %ebx
movq (%rsp), %rax
movl %ebx, (%rax)
movl $0x1, %eax
jmp 0x60e8
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop