// File: cjxgm[P]libgpp/src/libgpp.cpp
// Function: (anonymous namespace)::Preprocessor::parse_text()
void parse_text() {
            int l, cs, ce;
            char c, *s;
            Comment *p;

            // look for comments first
            if (!C->in_comment) {
                cs = 1;
                for (p = S->comments; p != nullptr ; p = p->next)
                    if (!(p->flags[C->ambience] & FLAG_IGNORE))
                        if (match_start_sequence(p->start, &cs)) {
                            l = ce = find_comment_end(p->end, p->quote, p->warn, cs,
                                    p->flags[C->ambience]);
                            match_end_sequence(p->end, &l);
                            if (p->flags[C->ambience] & OUTPUT_DELIM)
                                sendout(C->buf + 1, cs - 1, 0);
                            if (p->flags[C->ambience] & PARSE_MACROS) {
                                C->in_comment = 1;
                                s = process_text(C->buf + cs, ce - cs, C->ambience);
                                if (p->flags[C->ambience] & OUTPUT_TEXT)
                                    sendout(s, strlen(s), 0);
                                C->in_comment = 0;
                                free(s);
                            } else if (p->flags[C->ambience] & OUTPUT_TEXT)
                                sendout(C->buf + cs, ce - cs, 0);
                            if (p->flags[C->ambience] & OUTPUT_DELIM)
                                sendout(C->buf + ce, l - ce, 0);
                            shift_in(l);
                            return;
                        }
            }

            if (parse_possible_meta() >= 0)
                return;
            if (parse_possible_user() >= 0)
                return;

            l = 1;
            // if matching numbered macro argument and inside a macro
            if (match_sequence(S->user.macro_arg_ref, &l) && C->may_have_args) {
                // process macro arguments referenced as #1,#2,...
                c = get_char(l);
                if ((c >= '1') && (c <= '9')) {
                    c = c - '1';
                    if (c < C->argc)
                        sendout(C->argv[(int) c], strlen(C->argv[(int) c]), 0);
                    shift_in(l + 1);
                    return;
                }
            }

            l = identifier_end(1);
            if (l == 1)
                l = 2;
            sendout(C->buf + 1, l - 1, 1);
            shift_in(l);
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq 0x20(%rax), %rax
cmpl $0x0, 0x44(%rax)
jne 0x3abb
movq -0x30(%rbp), %rax
movl $0x1, -0x10(%rbp)
movq (%rax), %rax
movq 0x90(%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x3ab9
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq 0x20(%rcx), %rcx
movslq 0x48(%rcx), %rcx
movl 0x14(%rax,%rcx,4), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x3aa6
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq -0x10(%rbp), %rdx
callq 0x3c00
cmpl $0x0, %eax
je 0x3aa4
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x28(%rbp), %rax
movb 0x10(%rax), %cl
movq -0x28(%rbp), %rax
movb 0x11(%rax), %al
movl -0x10(%rbp), %r8d
movq -0x28(%rbp), %rdx
movq 0x20(%rdi), %r9
movslq 0x48(%r9), %r9
movl 0x14(%rdx,%r9,4), %r9d
movsbl %cl, %edx
movsbl %al, %ecx
callq 0x3e90
movq -0x30(%rbp), %rdi
movl %eax, -0x14(%rbp)
movl %eax, -0xc(%rbp)
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0xc(%rbp), %rdx
callq 0x3f80
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq 0x20(%rcx), %rcx
movslq 0x48(%rcx), %rcx
movl 0x14(%rax,%rcx,4), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x3970
movq -0x30(%rbp), %rdi
movq 0x20(%rdi), %rax
movq (%rax), %rsi
addq $0x1, %rsi
movl -0x10(%rbp), %edx
subl $0x1, %edx
xorl %ecx, %ecx
callq 0x4020
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq 0x20(%rcx), %rcx
movslq 0x48(%rcx), %rcx
movl 0x14(%rax,%rcx,4), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3a1b
movq -0x30(%rbp), %rdi
movq 0x20(%rdi), %rax
movl $0x1, 0x44(%rax)
movq 0x20(%rdi), %rax
movq (%rax), %rsi
movslq -0x10(%rbp), %rax
addq %rax, %rsi
movl -0x14(%rbp), %edx
subl -0x10(%rbp), %edx
movq 0x20(%rdi), %rax
movl 0x48(%rax), %ecx
callq 0x40f0
movq -0x30(%rbp), %rcx
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
movq 0x20(%rcx), %rcx
movslq 0x48(%rcx), %rcx
movl 0x14(%rax,%rcx,4), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x3a01
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2070
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movl %eax, %edx
xorl %ecx, %ecx
callq 0x4020
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movl $0x0, 0x44(%rax)
movq -0x20(%rbp), %rdi
callq 0x2170
jmp 0x3a58
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq 0x20(%rcx), %rcx
movslq 0x48(%rcx), %rcx
movl 0x14(%rax,%rcx,4), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x3a56
movq -0x30(%rbp), %rdi
movq 0x20(%rdi), %rax
movq (%rax), %rsi
movslq -0x10(%rbp), %rax
addq %rax, %rsi
movl -0x14(%rbp), %edx
subl -0x10(%rbp), %edx
xorl %ecx, %ecx
callq 0x4020
jmp 0x3a58
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq 0x20(%rcx), %rcx
movslq 0x48(%rcx), %rcx
movl 0x14(%rax,%rcx,4), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x3a93
movq -0x30(%rbp), %rdi
movq 0x20(%rdi), %rax
movq (%rax), %rsi
movslq -0x14(%rbp), %rax
addq %rax, %rsi
movl -0xc(%rbp), %edx
subl -0x14(%rbp), %edx
xorl %ecx, %ecx
callq 0x4020
movq -0x30(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x43c0
jmp 0x3bf3
jmp 0x3aa6
jmp 0x3aa8
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x389b
jmp 0x3abb
movq -0x30(%rbp), %rdi
callq 0x4520
cmpl $0x0, %eax
jl 0x3ace
jmp 0x3bf3
movq -0x30(%rbp), %rdi
callq 0x5ed0
cmpl $0x0, %eax
jl 0x3ae1
jmp 0x3bf3
movq -0x30(%rbp), %rdi
movl $0x1, -0xc(%rbp)
movq (%rdi), %rax
movq 0x28(%rax), %rsi
leaq -0xc(%rbp), %rdx
callq 0x6810
cmpl $0x0, %eax
je 0x3baa
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
cmpl $0x0, 0x4c(%rax)
je 0x3baa
movq -0x30(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x6c80
movb %al, -0x15(%rbp)
movsbl -0x15(%rbp), %eax
cmpl $0x31, %eax
jl 0x3ba8
movsbl -0x15(%rbp), %eax
cmpl $0x39, %eax
jg 0x3ba8
movq -0x30(%rbp), %rcx
movsbl -0x15(%rbp), %eax
subl $0x31, %eax
movb %al, -0x15(%rbp)
movsbl -0x15(%rbp), %eax
movq 0x20(%rcx), %rcx
cmpl 0x20(%rcx), %eax
jge 0x3b97
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rcx
movq 0x28(%rcx), %rcx
movsbl -0x15(%rbp), %edx
movslq %edx, %rdx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0x40(%rbp)
movq 0x20(%rax), %rax
movq 0x28(%rax), %rax
movsbl -0x15(%rbp), %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2070
movq -0x30(%rbp), %rdi
movq -0x40(%rbp), %rsi
movl %eax, %edx
xorl %ecx, %ecx
callq 0x4020
movq -0x30(%rbp), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
callq 0x43c0
jmp 0x3bf3
jmp 0x3baa
movq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0x6db0
movl %eax, -0xc(%rbp)
cmpl $0x1, -0xc(%rbp)
jne 0x3bc8
movl $0x2, -0xc(%rbp)
movq -0x30(%rbp), %rdi
movq 0x20(%rdi), %rax
movq (%rax), %rsi
addq $0x1, %rsi
movl -0xc(%rbp), %edx
subl $0x1, %edx
movl $0x1, %ecx
callq 0x4020
movq -0x30(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x43c0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)