// File: /workspace/github_c_makefile_star2_O0/ccxvii[P]mujs/./jslex.c
// Function: lexregexp
static int lexregexp(js_State *J)
{
	const char *s;
	int g, m, i;
	int inclass = 0;

	/* already consumed initial '/' */

	textinit(J);

	/* regexp body */
	while (J->lexchar != '/' || inclass) {
		if (J->lexchar == EOF || J->lexchar == '\n') {
			jsY_error(J, "regular expression not terminated");
		} else if (jsY_accept(J, '\\')) {
			if (jsY_accept(J, '/')) {
				textpush(J, '/');
			} else {
				textpush(J, '\\');
				if (J->lexchar == EOF || J->lexchar == '\n')
					jsY_error(J, "regular expression not terminated");
				textpush(J, J->lexchar);
				jsY_next(J);
			}
		} else {
			if (J->lexchar == '[' && !inclass)
				inclass = 1;
			if (J->lexchar == ']' && inclass)
				inclass = 0;
			textpush(J, J->lexchar);
			jsY_next(J);
		}
	}
	jsY_expect(J, '/');

	s = textend(J);

	/* regexp flags */
	g = i = m = 0;

	while (jsY_isidentifierpart(J->lexchar)) {
		if (jsY_accept(J, 'g')) ++g;
		else if (jsY_accept(J, 'i')) ++i;
		else if (jsY_accept(J, 'm')) ++m;
		else jsY_error(J, "illegal flag in regular expression: %c", J->lexchar);
	}

	if (g > 1 || i > 1 || m > 1)
		jsY_error(J, "duplicated flag in regular expression");

	J->text = js_intern(J, s);
	J->number = 0;
	if (g) J->number += JS_REGEXP_G;
	if (i) J->number += JS_REGEXP_I;
	if (m) J->number += JS_REGEXP_M;
	return TK_REGEXP;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x25540
movq -0x8(%rbp), %rcx
movb $0x1, %al
cmpl $0x2f, 0x64(%rcx)
movb %al, -0x21(%rbp)
jne 0x24c75
cmpl $0x0, -0x20(%rbp)
setne %al
movb %al, -0x21(%rbp)
movb -0x21(%rbp), %al
testb $0x1, %al
jne 0x24c81
jmp 0x24da0
movq -0x8(%rbp), %rax
cmpl $-0x1, 0x64(%rax)
je 0x24c95
movq -0x8(%rbp), %rax
cmpl $0xa, 0x64(%rax)
jne 0x24ca7
movq -0x8(%rbp), %rdi
leaq 0x1819f(%rip), %rsi     # 0x3ce3f
movb $0x0, %al
callq 0xf250
movq -0x8(%rbp), %rax
cmpl $0x5c, 0x64(%rax)
jne 0x24cc5
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0x24cd0
jmp 0x24d52
xorl %eax, %eax
testb $0x1, %al
jne 0x24cd0
jmp 0x24d52
movq -0x8(%rbp), %rax
cmpl $0x2f, 0x64(%rax)
jne 0x24ceb
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0x24cf3
jmp 0x24d03
xorl %eax, %eax
testb $0x1, %al
jne 0x24cf3
jmp 0x24d03
movq -0x8(%rbp), %rdi
movl $0x2f, %esi
callq 0x25590
jmp 0x24d50
movq -0x8(%rbp), %rdi
movl $0x5c, %esi
callq 0x25590
movq -0x8(%rbp), %rax
cmpl $-0x1, 0x64(%rax)
je 0x24d25
movq -0x8(%rbp), %rax
cmpl $0xa, 0x64(%rax)
jne 0x24d37
movq -0x8(%rbp), %rdi
leaq 0x1810f(%rip), %rsi     # 0x3ce3f
movb $0x0, %al
callq 0xf250
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x64(%rax), %esi
callq 0x25590
movq -0x8(%rbp), %rdi
callq 0xe0a0
jmp 0x24d99
movq -0x8(%rbp), %rax
cmpl $0x5b, 0x64(%rax)
jne 0x24d69
cmpl $0x0, -0x20(%rbp)
jne 0x24d69
movl $0x1, -0x20(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x5d, 0x64(%rax)
jne 0x24d80
cmpl $0x0, -0x20(%rbp)
je 0x24d80
movl $0x0, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x64(%rax), %esi
callq 0x25590
movq -0x8(%rbp), %rdi
callq 0xe0a0
jmp 0x24d9b
jmp 0x24c5c
movq -0x8(%rbp), %rax
cmpl $0x2f, 0x64(%rax)
jne 0x24dbb
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0x24dda
jmp 0x24dc3
xorl %eax, %eax
testb $0x1, %al
jne 0x24dda
jmp 0x24dc3
movq -0x8(%rbp), %rdi
leaq 0x16b59(%rip), %rsi     # 0x3b927
movl $0x2f, %edx
movb $0x0, %al
callq 0xf250
movq -0x8(%rbp), %rdi
callq 0x256e0
movq %rax, -0x10(%rbp)
movl $0x0, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x8(%rbp), %rax
movl 0x64(%rax), %edi
callq 0x25660
cmpl $0x0, %eax
je 0x24ebd
movq -0x8(%rbp), %rax
cmpl $0x67, 0x64(%rax)
jne 0x24e2c
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0x24e34
jmp 0x24e3f
xorl %eax, %eax
testb $0x1, %al
jne 0x24e34
jmp 0x24e3f
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x24eb8
movq -0x8(%rbp), %rax
cmpl $0x69, 0x64(%rax)
jne 0x24e5a
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0x24e62
jmp 0x24e6d
xorl %eax, %eax
testb $0x1, %al
jne 0x24e62
jmp 0x24e6d
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x24eb6
movq -0x8(%rbp), %rax
cmpl $0x6d, 0x64(%rax)
jne 0x24e88
movq -0x8(%rbp), %rdi
callq 0xe0a0
movb $0x1, %al
testb $0x1, %al
jne 0x24e90
jmp 0x24e9b
xorl %eax, %eax
testb $0x1, %al
jne 0x24e90
jmp 0x24e9b
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x24eb4
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x64(%rax), %edx
leaq 0x17fb4(%rip), %rsi     # 0x3ce61
movb $0x0, %al
callq 0xf250
jmp 0x24eb6
jmp 0x24eb8
jmp 0x24dfc
cmpl $0x1, -0x14(%rbp)
jg 0x24ecf
cmpl $0x1, -0x1c(%rbp)
jg 0x24ecf
cmpl $0x1, -0x18(%rbp)
jle 0x24ee1
movq -0x8(%rbp), %rdi
leaq 0x17fae(%rip), %rsi     # 0x3ce88
movb $0x0, %al
callq 0xf250
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xdc90
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x78(%rax)
movq -0x8(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x80(%rax)
cmpl $0x0, -0x14(%rbp)
je 0x24f2a
movq -0x8(%rbp), %rax
movsd 0xe556(%rip), %xmm0     # 0x33470
addsd 0x80(%rax), %xmm0
movsd %xmm0, 0x80(%rax)
cmpl $0x0, -0x1c(%rbp)
je 0x24f4c
movq -0x8(%rbp), %rax
movsd 0xe62c(%rip), %xmm0     # 0x33568
addsd 0x80(%rax), %xmm0
movsd %xmm0, 0x80(%rax)
cmpl $0x0, -0x18(%rbp)
je 0x24f6e
movq -0x8(%rbp), %rax
movsd 0xe5ca(%rip), %xmm0     # 0x33528
addsd 0x80(%rax), %xmm0
movsd %xmm0, 0x80(%rax)
movl $0x103, %eax            # imm = 0x103
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)