// File: /workspace/github_cpp_makefile_star2_O3/arnoldrobbins[P]mcilroy-regex/re1.cpp
// Function: Rep::dorep(int, unsigned char*, Rex*, Eenv*)
int Rep::dorep(int n, uchar *s, Rex *cont, Eenv *env)
{
	int result = NONE;
	if(hi > n) {
		Rep1 rep1(this, s, n+1, cont);
		Save save(n1, n2, env);
		if(env->flags&SPACE)
			return BAD;
		if(env->pushpos(this, s, BEGI))	
			return BAD;
		result = rex->parse(s, &rep1, env);
		env->poppos();
		save.restore(env);
	}
	if(result==BEST || result==BAD || lo>n)
		return result;
	if(env->pushpos(this, s, ENDP))	// end BEGR
		return BAD;
	int res1 = follow(s, cont, env);
	env->poppos();
	return res1==NONE? result: res1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %r8, %rbx
movq %rcx, %r14
movq %rdx, %r15
movl %esi, %r13d
movq %rdi, %r12
xorl %ebp, %ebp
cmpl %esi, 0x1c(%rdi)
jle 0x93ac
leal 0x1(%r13), %eax
movb $0x11, 0x8(%rsp)
leaq 0x96cd(%rip), %rcx      # 0x12960
movq %rcx, (%rsp)
movq %r12, 0x18(%rsp)
movq %r15, 0x20(%rsp)
movl %eax, 0x28(%rsp)
movq %r14, 0x38(%rsp)
movq %r14, 0x30(%rsp)
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movzwl 0xa(%r12), %eax
movw %ax, 0xa(%rsp)
movl 0x20(%r12), %esi
movl 0x24(%r12), %edx
leaq 0x40(%rsp), %rdi
movq %rbx, %rcx
callq 0x8dd4
xorl %ebp, %ebp
testb $0x4, 0x1(%rbx)
movl $0x0, %r14d
jne 0x935d
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
movl $0x1, %ecx
callq 0x829c
xorl %ebp, %ebp
movl $0x0, %r14d
testl %eax, %eax
jne 0x935d
movq 0x28(%r12), %rdi
movq (%rdi), %rax
movq %rsp, %rdx
movq %r15, %rsi
movq %rbx, %rcx
callq *0x20(%rax)
movl %eax, %ebp
decl 0x20(%rbx)
movslq 0x40(%rsp), %rsi
movb $0x1, %r14b
testq %rsi, %rsi
je 0x935d
movl 0x44(%rsp), %eax
movq %rsi, %rcx
shlq $0x4, %rcx
addq 0x2c8(%rbx), %rcx
movq 0x48(%rsp), %rdx
subl %esi, %eax
incl %eax
xorl %esi, %esi
movups (%rdx,%rsi), %xmm0
movups %xmm0, (%rcx,%rsi)
addq $0x10, %rsi
decl %eax
testl %eax, %eax
jg 0x934b
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
sete %al
testq %rdi, %rdi
sete %cl
orb %al, %cl
jne 0x937b
callq 0x5200
leaq 0x91ee(%rip), %rax      # 0x12570
movq %rax, (%rsp)
cmpb $0x11, 0x8(%rsp)
je 0x939d
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x939d
movq (%rdi), %rax
callq *0x8(%rax)
movl $0x3, %eax
testb %r14b, %r14b
movq 0x38(%rsp), %r14
je 0x940b
movl %ebp, %eax
andl $-0x2, %eax
cmpl $0x2, %eax
je 0x9409
cmpl %r13d, 0x18(%r12)
jg 0x9409
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
movl $0x4, %ecx
callq 0x829c
movl %eax, %ecx
movl $0x3, %eax
testl %ecx, %ecx
jne 0x940b
movq 0x10(%r12), %rdi
testq %rdi, %rdi
je 0x93f0
movq (%rdi), %rax
movq %r15, %rsi
movq %r14, %rdx
jmp 0x93fb
movq (%r14), %rax
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %rbx, %rcx
callq *0x20(%rax)
decl 0x20(%rbx)
testl %eax, %eax
cmovnel %eax, %ebp
movl %ebp, %eax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
sete %al
testq %rdi, %rdi
sete %cl
orb %al, %cl
jne 0x9443
callq 0x5200
jmp 0x9443
movq %rax, %rbx
leaq 0x9126(%rip), %rax      # 0x12570
movq %rax, (%rsp)
cmpb $0x11, 0x8(%rsp)
je 0x9465
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x9465
movq (%rdi), %rax
callq *0x8(%rax)
movq %rbx, %rdi
callq 0x52b0
nop