// File: /workspace/github_cpp_makefile_star2_O2/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 %rsi, %r14
movq %rdi, %r15
movq %rdx, (%rsp)
movl (%rdx), %r12d
leaq 0x2cfb(%rip), %r13      # 0x83d8
movabsq $0x100000600, %rbp      # imm = 0x100000600
movzbl (%r14), %eax
testl %eax, %eax
je 0x5915
testb $0x60, %al
je 0x5716
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
cmpb (%r14), %al
jne 0x5921
incl %r12d
movl %r12d, %ebx
jmp 0x590a
andl $0x1f, %eax
decl %eax
cmpl $0xb, %eax
ja 0x5899
movslq (%r13,%rax,4), %rax
addq %r13, %rax
jmpq *%rax
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
cmpb $0x20, %al
je 0x584a
movzbl %al, %eax
cmpl $0x9, %eax
je 0x584a
jmp 0x57f6
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
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
pushq $0x1
popq %rsi
shlq %cl, %rsi
btl %r8d, %edi
jb 0x5896
movq 0xa0(%rdx), %rcx
testl %esi, (%rcx,%rax,4)
setne %al
jmp 0x58ff
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
andb $-0x21, %al
addb $-0x41, %al
cmpb $0x1a, %al
jmp 0x58e5
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
cmpb $0xa, %al
jmp 0x58fc
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
cmpb $0x20, %al
ja 0x57f6
movzbl %al, %eax
btq %rax, %rbp
jb 0x5808
cmpb $0x0, (%r14)
js 0x590a
jmp 0x5921
movl %r12d, %ebx
movl %ebx, %r12d
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
cmpb $0x20, %al
ja 0x5899
movzbl %al, %eax
btq %rax, %rbp
jae 0x5899
incl %r12d
jmp 0x580b
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
movq (%r15), %rcx
movq 0xb0(%rcx), %rcx
jmp 0x58d4
movl %r12d, %ebx
movl %ebx, %r12d
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
cmpb $0x20, %al
je 0x5864
movzbl %al, %eax
cmpl $0x9, %eax
jne 0x5899
incl %r12d
jmp 0x584d
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
movl %eax, %ecx
andb $-0x21, %cl
addb $-0x41, %cl
cmpb $0x1a, %cl
jb 0x5896
cmpb $0x9, %al
je 0x5896
movzbl %al, %ecx
cmpl $0x20, %ecx
jne 0x57d2
movl %ebx, %r12d
cmpb $0x0, (%r14)
movl %r12d, %ebx
jns 0x590a
jmp 0x5921
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
addb $-0x30, %al
cmpb $0xa, %al
jmp 0x58e5
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
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 0x58ff
leal 0x1(%r12), %ebx
movq %r15, %rdi
movl %r12d, %esi
callq 0x5932
cmpb $0x9, %al
sete %al
cmpb $0x0, (%r14)
setns %cl
xorb %al, %cl
jne 0x5921
incq %r14
movl %ebx, %r12d
jmp 0x56e7
movq (%rsp), %rax
movl %r12d, (%rax)
pushq $0x1
popq %rax
jmp 0x5923
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq