// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./regexp.c
// Function: lex
static int lex(struct cstate *g)
{
	int quoted = nextrune(g);
	if (quoted) {
		switch (g->yychar) {
		case 'b': return L_WORD;
		case 'B': return L_NWORD;
		case 'd': newcclass(g); addranges_d(g); return L_CCLASS;
		case 's': newcclass(g); addranges_s(g); return L_CCLASS;
		case 'w': newcclass(g); addranges_w(g); return L_CCLASS;
		case 'D': newcclass(g); addranges_d(g); return L_NCCLASS;
		case 'S': newcclass(g); addranges_s(g); return L_NCCLASS;
		case 'W': newcclass(g); addranges_w(g); return L_NCCLASS;
		case '0': g->yychar = 0; return L_CHAR;
		}
		if (g->yychar >= '0' && g->yychar <= '9') {
			g->yychar -= '0';
			if (*g->source >= '0' && *g->source <= '9')
				g->yychar = g->yychar * 10 + *g->source++ - '0';
			return L_REF;
		}
		return L_CHAR;
	}

	switch (g->yychar) {
	case EOF:
	case '$': case ')': case '*': case '+':
	case '.': case '?': case '^': case '|':
		return g->yychar;
	}

	if (g->yychar == '{')
		return lexcount(g);
	if (g->yychar == '[')
		return lexclass(g);
	if (g->yychar == '(') {
		if (g->source[0] == '?') {
			if (g->source[1] == ':') {
				g->source += 2;
				return L_NC;
			}
			if (g->source[1] == '=') {
				g->source += 2;
				return L_PLA;
			}
			if (g->source[1] == '!') {
				g->source += 2;
				return L_NLA;
			}
		}
		return '(';
	}

	return L_CHAR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30ef0
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
je 0x30d8d
movq -0x10(%rbp), %rax
movl 0xac(%rax), %eax
addl $-0x30, %eax
movl %eax, %ecx
movq %rcx, -0x20(%rbp)
subl $0x47, %eax
ja 0x30cf8
movq -0x20(%rbp), %rax
leaq 0x36f7(%rip), %rcx      # 0x34300
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x106, -0x4(%rbp)      # imm = 0x106
jmp 0x30ee3
movl $0x107, -0x4(%rbp)      # imm = 0x107
jmp 0x30ee3
movq -0x10(%rbp), %rdi
callq 0x31370
movq -0x10(%rbp), %rdi
callq 0x313f0
movl $0x101, -0x4(%rbp)      # imm = 0x101
jmp 0x30ee3
movq -0x10(%rbp), %rdi
callq 0x31370
movq -0x10(%rbp), %rdi
callq 0x31420
movl $0x101, -0x4(%rbp)      # imm = 0x101
jmp 0x30ee3
movq -0x10(%rbp), %rdi
callq 0x31370
movq -0x10(%rbp), %rdi
callq 0x31490
movl $0x101, -0x4(%rbp)      # imm = 0x101
jmp 0x30ee3
movq -0x10(%rbp), %rdi
callq 0x31370
movq -0x10(%rbp), %rdi
callq 0x313f0
movl $0x102, -0x4(%rbp)      # imm = 0x102
jmp 0x30ee3
movq -0x10(%rbp), %rdi
callq 0x31370
movq -0x10(%rbp), %rdi
callq 0x31420
movl $0x102, -0x4(%rbp)      # imm = 0x102
jmp 0x30ee3
movq -0x10(%rbp), %rdi
callq 0x31370
movq -0x10(%rbp), %rdi
callq 0x31490
movl $0x102, -0x4(%rbp)      # imm = 0x102
jmp 0x30ee3
movq -0x10(%rbp), %rax
movl $0x0, 0xac(%rax)
movl $0x100, -0x4(%rbp)      # imm = 0x100
jmp 0x30ee3
movq -0x10(%rbp), %rax
cmpl $0x30, 0xac(%rax)
jl 0x30d81
movq -0x10(%rbp), %rax
cmpl $0x39, 0xac(%rax)
jg 0x30d81
movq -0x10(%rbp), %rax
movl 0xac(%rax), %ecx
subl $0x30, %ecx
movl %ecx, 0xac(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jl 0x30d75
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
jg 0x30d75
movq -0x10(%rbp), %rax
imull $0xa, 0xac(%rax), %ecx
movq -0x10(%rbp), %rdx
movq 0x18(%rdx), %rax
movq %rax, %rsi
addq $0x1, %rsi
movq %rsi, 0x18(%rdx)
movsbl (%rax), %eax
addl %eax, %ecx
subl $0x30, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xac(%rax)
movl $0x108, -0x4(%rbp)      # imm = 0x108
jmp 0x30ee3
movl $0x100, -0x4(%rbp)      # imm = 0x100
jmp 0x30ee3
movq -0x10(%rbp), %rax
movl 0xac(%rax), %eax
movl %eax, -0x24(%rbp)
subl $-0x1, %eax
je 0x30de0
jmp 0x30da1
movl -0x24(%rbp), %eax
subl $0x24, %eax
je 0x30de0
jmp 0x30dab
movl -0x24(%rbp), %eax
addl $-0x29, %eax
subl $0x3, %eax
jb 0x30de0
jmp 0x30db8
movl -0x24(%rbp), %eax
subl $0x2e, %eax
je 0x30de0
jmp 0x30dc2
movl -0x24(%rbp), %eax
subl $0x3f, %eax
je 0x30de0
jmp 0x30dcc
movl -0x24(%rbp), %eax
subl $0x5e, %eax
je 0x30de0
jmp 0x30dd6
movl -0x24(%rbp), %eax
subl $0x7c, %eax
jne 0x30df2
jmp 0x30de0
movq -0x10(%rbp), %rax
movl 0xac(%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x30ee3
movq -0x10(%rbp), %rax
cmpl $0x7b, 0xac(%rax)
jne 0x30e10
movq -0x10(%rbp), %rdi
callq 0x314f0
movl %eax, -0x4(%rbp)
jmp 0x30ee3
movq -0x10(%rbp), %rax
cmpl $0x5b, 0xac(%rax)
jne 0x30e2e
movq -0x10(%rbp), %rdi
callq 0x31730
movl %eax, -0x4(%rbp)
jmp 0x30ee3
movq -0x10(%rbp), %rax
cmpl $0x28, 0xac(%rax)
jne 0x30edc
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movsbl (%rax), %eax
cmpl $0x3f, %eax
jne 0x30ed3
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x3a, %eax
jne 0x30e7d
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
addq $0x2, %rcx
movq %rcx, 0x18(%rax)
movl $0x103, -0x4(%rbp)      # imm = 0x103
jmp 0x30ee3
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x3d, %eax
jne 0x30ea7
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
addq $0x2, %rcx
movq %rcx, 0x18(%rax)
movl $0x104, -0x4(%rbp)      # imm = 0x104
jmp 0x30ee3
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x21, %eax
jne 0x30ed1
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
addq $0x2, %rcx
movq %rcx, 0x18(%rax)
movl $0x105, -0x4(%rbp)      # imm = 0x105
jmp 0x30ee3
jmp 0x30ed3
movl $0x28, -0x4(%rbp)
jmp 0x30ee3
movl $0x100, -0x4(%rbp)      # imm = 0x100
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)