// File: /workspace/github_cpp_makefile_star2_O1/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 0x60ac
movq %rsi, %r14
movq %rdi, %r15
movabsq $0x100000600, %rbx      # imm = 0x100000600
testb $0x60, %al
je 0x5e9f
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
cmpb (%r14), %al
jne 0x60bc
incl %r12d
movl %r12d, %ebp
jmp 0x6098
movzbl %al, %eax
andl $0x1f, %eax
movb $0x1, %r13b
decl %eax
cmpl $0xb, %eax
ja 0x6084
leaq 0x2646(%rip), %rcx      # 0x8500
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
cmpb $0x20, %al
je 0x5ee3
movzbl %al, %eax
cmpl $0x9, %eax
jne 0x6089
movl %ebp, %r12d
movl %r12d, %ebp
movq %r15, %rdi
movl %ebp, %esi
callq 0x60ce
cmpb $0x20, %al
je 0x5f03
movzbl %al, %eax
cmpl $0x9, %eax
jne 0x608c
incl %ebp
jmp 0x5ee9
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
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 0x608c
movq 0xa0(%rdx), %rcx
testl %esi, (%rcx,%rax,4)
setne %r13b
jmp 0x608c
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
andb $-0x21, %al
addb $-0x41, %al
cmpb $0x1a, %al
jmp 0x6066
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
cmpb $0xa, %al
jmp 0x607e
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
xorl %r13d, %r13d
cmpb $0x20, %al
ja 0x608c
movzbl %al, %eax
btq %rax, %rbx
jb 0x5fb8
jmp 0x608c
movl %r12d, %ebp
movq %r15, %rdi
movl %ebp, %esi
callq 0x60ce
cmpb $0x20, %al
ja 0x5fd3
movzbl %al, %eax
btq %rax, %rbx
jae 0x5fd3
incl %ebp
jmp 0x5fb8
movb $0x1, %r13b
jmp 0x608c
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
movq (%r15), %rcx
movq 0xb0(%rcx), %rcx
jmp 0x6055
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
movl %eax, %ecx
andb $-0x21, %cl
addb $-0x41, %cl
cmpb $0x1a, %cl
jb 0x608c
cmpb $0x9, %al
je 0x608c
movzbl %al, %ecx
cmpl $0x20, %ecx
je 0x608c
jmp 0x5f85
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
addb $-0x30, %al
cmpb $0xa, %al
jmp 0x6066
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
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 %r13b
jmp 0x608c
leal 0x1(%r12), %ebp
movq %r15, %rdi
movl %r12d, %esi
callq 0x60ce
cmpb $0x9, %al
sete %r13b
jmp 0x608c
movl %r12d, %ebp
jmp 0x608c
xorl %r13d, %r13d
cmpb $0x0, (%r14)
setns %al
xorb %r13b, %al
jne 0x60bc
movb 0x1(%r14), %al
incq %r14
movl %ebp, %r12d
testb %al, %al
jne 0x5e7c
jmp 0x60af
movl %r12d, %ebp
movq (%rsp), %rax
movl %ebp, (%rax)
movl $0x1, %eax
jmp 0x60be
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop