// File: /workspace/github_c_makefile_star2_O3/haxlang[P]hax/haxParse.c
// Function: Hax_Backslash
char
Hax_Backslash(
    char *src,			/* Points to the backslash character of
				 * a backslash sequence. */
    int *readPtr		/* Fill in with number of characters read
				 * from src, unless NULL. */)
{
    char *p = src+1;
    char result;
    int count;

    count = 2;

    switch (*p) {
	case 'b':
	    result = '\b';
	    break;
	case 'e':
	    result = 033;
	    break;
	case 'f':
	    result = '\f';
	    break;
	case 'n':
	    result = '\n';
	    break;
	case 'r':
	    result = '\r';
	    break;
	case 't':
	    result = '\t';
	    break;
	case 'v':
	    result = '\v';
	    break;
	case 'C':
	    p++;
	    if (isspace(*p) || (*p == 0)) {
		result = 'C';
		count = 1;
		break;
	    }
	    count = 3;
	    if (*p == 'M') {
		p++;
		if (isspace(*p) || (*p == 0)) {
		    result = 'M' & 037;
		    break;
		}
		count = 4;
		result = (*p & 037) | '\200';
		break;
	    }
	    count = 3;
	    result = *p & 037;
	    break;
	case 'M':
	    p++;
	    if (isspace(*p) || (*p == 0)) {
		result = 'M';
		count = 1;
		break;
	    }
	    count = 3;
	    result = *p + '\200';
	    break;
	case '}':
	case '{':
	case ']':
	case '[':
	case '$':
	case ' ':
	case ';':
	case '"':
	case '\\':
	    result = *p;
	    break;
	case '\n':
	    result = 0;
	    break;
	default:
	    if (isdigit(*p)) {
		result = *p - '0';
		p++;
		if (!isdigit(*p)) {
		    break;
		}
		count = 3;
		result = (result << 3) + (*p - '0');
		p++;
		if (!isdigit(*p)) {
		    break;
		}
		count = 4;
		result = (result << 3) + (*p - '0');
		break;
	    }
	    result = '\\';
	    count = 1;
	    break;
    }

    if (readPtr != NULL) {
	*readPtr = count;
    }
    return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movb 0x1(%rdi), %bpl
movzbl %bpl, %eax
movl $0x2, %r15d
cmpl $0x5a, %eax
jle 0xf0f9
leal -0x5b(%rax), %ecx
cmpl $0xb, %ecx
jbe 0xf160
leal -0x72(%rax), %ecx
cmpl $0xb, %ecx
ja 0xf184
leaq 0x6d2c(%rip), %rax      # 0x15e14
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movb $0xd, %bpl
jmp 0xf27c
leal -0x20(%rax), %ecx
cmpl $0x2d, %ecx
ja 0xf178
movl $0x8000015, %edx        # imm = 0x8000015
btq %rcx, %rdx
jb 0xf27c
cmpq $0x23, %rcx
je 0xf1c7
cmpq $0x2d, %rcx
jne 0xf178
callq 0x4650
movq (%rax), %rax
movsbq 0x2(%r14), %rcx
testq %rcx, %rcx
sete %dl
movb 0x1(%rax,%rcx,2), %al
andb $0x20, %al
shrb $0x5, %al
orb %dl, %al
addl $-0x80, %ecx
movzbl %cl, %ecx
testb %al, %al
movl $0x4d, %ebp
cmovel %ecx, %ebp
xorb $0x1, %al
movzbl %al, %eax
leal 0x1(,%rax,2), %r15d
jmp 0xf27c
leaq 0x6c7d(%rip), %rax      # 0x15de4
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movb $0x8, %bpl
jmp 0xf27c
cmpl $0xa, %eax
jne 0xf191
xorl %ebp, %ebp
jmp 0xf27c
cmpl $0x6e, %eax
jne 0xf191
movb $0xa, %bpl
jmp 0xf27c
movsbq %bpl, %r12
callq 0x4650
movq (%rax), %rax
testb $0x8, 0x1(%rax,%r12,2)
jne 0xf231
movl $0x1, %r15d
movb $0x5c, %bpl
jmp 0xf27c
movb $0xc, %bpl
jmp 0xf27c
movb $0x1b, %bpl
jmp 0xf27c
callq 0x4650
movsbq 0x2(%r14), %rcx
movl $0x1, %r15d
movb $0x43, %bpl
testq %rcx, %rcx
je 0xf27c
movq (%rax), %rax
movzwl (%rax,%rcx,2), %edx
andl $0x2000, %edx           # imm = 0x2000
jne 0xf27c
cmpb $0x4d, %cl
jne 0xf271
movsbq 0x3(%r14), %rcx
movl $0x3, %r15d
movb $0xd, %bpl
testq %rcx, %rcx
je 0xf27c
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
jne 0xf27c
andb $0x1f, %cl
orb $-0x80, %cl
movl $0x4, %r15d
jmp 0xf27a
movb $0x9, %bpl
jmp 0xf27c
movb $0xb, %bpl
jmp 0xf27c
addb $-0x30, %bpl
movsbq 0x2(%r14), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0xf27c
shlb $0x3, %bpl
addb %cl, %bpl
addb $-0x30, %bpl
movsbq 0x3(%r14), %rcx
movl $0x3, %r15d
testb $0x8, 0x1(%rax,%rcx,2)
je 0xf27c
shlb $0x3, %bpl
addb %cl, %bpl
addb $-0x30, %bpl
movl $0x4, %r15d
jmp 0xf27c
andb $0x1f, %cl
movl $0x3, %r15d
movl %ecx, %ebp
testq %rbx, %rbx
je 0xf284
movl %r15d, (%rbx)
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq