// File: /workspace/github_c_makefile_star2_O0/ryvnf[P]czc/lex.c
// Function: esc_char
int esc_char(int quote, FILE *fp)
{
    int c;
    while ((c = lex_getc()) != EOF) {
        if (c == '\n') {
            fatal(loc_new(lex_filepath, linenr), "missing terminating %c",
                    quote);
            return EOF;
        }
        if (c == quote) {
            return EOF;
        }

        if (c == '\\') {
            c = lex_getc();
            if (c == 'x') {
                int res = 0;
                if (hexdigit(&res, c = lex_getc()) < 0) {
                    lex_ungetc(c);
                    fatal(loc_new(lex_filepath, linenr),
                            "missing hex digit after \\x");
                    return 0;
                }
                if (hexdigit(&res, c = lex_getc()) < 0) {
                    lex_ungetc(c);
                }
                return res;
            }

            if (c >= '0' && c <= '7') {
                int res = 0;
                octdigit(&res, c);
                for (int i = 0; i < 2; i++) {
                    if (octdigit(&res, c = lex_getc()) < 0) {
                        lex_ungetc(c);
                        break;
                    }
                }
                return res;
            }

            switch (c) {
                case 'a': return '\n';
                case 'b': return '\b';
                case 'f': return '\f';
                case 'n': return '\n';
                case 't': return '\t';
                case 'v': return '\v';
                case '\\':
                case '"':
                case '\'':
                          return c;
            }

            fprintf(stderr, "unknown escape \\%c\n", c);
            return c;
        }

        return c;
    }
    return EOF;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
callq 0xb0e0
movl %eax, -0x14(%rbp)
cmpl $-0x1, %eax
je 0xb341
cmpl $0xa, -0x14(%rbp)
jne 0xb1ac
movq 0xec13(%rip), %rdi      # 0x19da0
movl 0xebfd(%rip), %esi      # 0x19d90
callq 0xbf00
movq %rax, %rdi
movl -0x8(%rbp), %edx
leaq 0x8bf7(%rip), %rsi      # 0x13d9c
movb $0x0, %al
callq 0x6610
movl -0x14(%rbp), %eax
cmpl -0x8(%rbp), %eax
jne 0xb1c0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb348
cmpl $0x5c, -0x14(%rbp)
jne 0xb339
callq 0xb0e0
movl %eax, -0x14(%rbp)
cmpl $0x78, -0x14(%rbp)
jne 0xb24d
movl $0x0, -0x18(%rbp)
callq 0xb0e0
movl %eax, %esi
movl %esi, -0x14(%rbp)
leaq -0x18(%rbp), %rdi
callq 0xb000
cmpl $0x0, %eax
jge 0xb222
movl -0x14(%rbp), %edi
callq 0xb120
movq 0xeb9a(%rip), %rdi      # 0x19da0
movl 0xeb84(%rip), %esi      # 0x19d90
callq 0xbf00
movq %rax, %rdi
leaq 0x8b98(%rip), %rsi      # 0x13db3
movb $0x0, %al
callq 0x6610
callq 0xb0e0
movl %eax, %esi
movl %esi, -0x14(%rbp)
leaq -0x18(%rbp), %rdi
callq 0xb000
cmpl $0x0, %eax
jge 0xb242
movl -0x14(%rbp), %edi
callq 0xb120
movl -0x18(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xb348
cmpl $0x30, -0x14(%rbp)
jl 0xb2b3
cmpl $0x37, -0x14(%rbp)
jg 0xb2b3
movl $0x0, -0x1c(%rbp)
movl -0x14(%rbp), %esi
leaq -0x1c(%rbp), %rdi
callq 0xb0a0
movl $0x0, -0x20(%rbp)
cmpl $0x2, -0x20(%rbp)
jge 0xb2a8
callq 0xb0e0
movl %eax, %esi
movl %esi, -0x14(%rbp)
leaq -0x1c(%rbp), %rdi
callq 0xb0a0
cmpl $0x0, %eax
jge 0xb29b
movl -0x14(%rbp), %edi
callq 0xb120
jmp 0xb2a8
jmp 0xb29d
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0xb273
movl -0x1c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xb348
movl -0x14(%rbp), %eax
addl $-0x22, %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0x54, %eax
ja 0xb316
movq -0x28(%rbp), %rax
leaq 0x85e9(%rip), %rcx      # 0x138b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0xa, -0x4(%rbp)
jmp 0xb348
movl $0x8, -0x4(%rbp)
jmp 0xb348
movl $0xc, -0x4(%rbp)
jmp 0xb348
movl $0xa, -0x4(%rbp)
jmp 0xb348
movl $0x9, -0x4(%rbp)
jmp 0xb348
movl $0xb, -0x4(%rbp)
jmp 0xb348
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xb348
movq 0xdcdb(%rip), %rax      # 0x18ff8
movq (%rax), %rdi
movl -0x14(%rbp), %edx
leaq 0x8aa4(%rip), %rsi      # 0x13dce
movb $0x0, %al
callq 0x2140
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xb348
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0xb348
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)