// File: /workspace/github_c_makefile_star2_O0/phase[P]o/libregexp/regcomp.c
// Function: evaluntil
static	void
evaluntil(int pri)
{
	Node *op1, *op2;
	Reinst *inst1, *inst2;

	while(pri==RBRA || atorp[-1]>=pri){
		switch(popator()){
		default:
			rcerror("unknown operator in evaluntil");
			break;
		case LBRA:		/* must have been RBRA */
			op1 = popand('(');
			inst2 = newinst(RBRA);
			inst2->r.subid = *subidp;
			op1->last->l.next = inst2;
			inst1 = newinst(LBRA);
			inst1->r.subid = *subidp;
			inst1->l.next = op1->first;
			pushand(inst1, inst2);
			return;
		case OR:
			op2 = popand('|');
			op1 = popand('|');
			inst2 = newinst(NOP);
			op2->last->l.next = inst2;
			op1->last->l.next = inst2;
			inst1 = newinst(OR);
			inst1->r.right = op1->first;
			inst1->l.left = op2->first;
			pushand(inst1, inst2);
			break;
		case CAT:
			op2 = popand(0);
			op1 = popand(0);
			op1->last->l.next = op2->first;
			pushand(op1->first, op2->last);
			break;
		case STAR:
			op2 = popand('*');
			inst1 = newinst(OR);
			op2->last->l.next = inst1;
			inst1->r.right = op2->first;
			pushand(inst1, inst1);
			break;
		case PLUS:
			op2 = popand('+');
			inst1 = newinst(OR);
			op2->last->l.next = inst1;
			inst1->r.right = op2->first;
			pushand(op2->first, inst1);
			break;
		case QUEST:
			op2 = popand('?');
			inst1 = newinst(OR);
			inst2 = newinst(NOP);
			inst1->l.left = inst2;
			inst1->r.right = op2->first;
			op2->last->l.next = inst2;
			pushand(inst1, inst2);
			break;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movl %edi, -0x4(%rbp)
movb $0x1, %al
cmpl $0x81, -0x4(%rbp)
movb %al, -0x29(%rbp)
je 0x863c
movq 0x7bc0(%rip), %rax      # 0x101f0
movl -0x4(%rax), %eax
cmpl -0x4(%rbp), %eax
setge %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %al
testb $0x1, %al
jne 0x8648
jmp 0x88c8
callq 0x9160
addl $0xffffff7e, %eax       # imm = 0xFFFFFF7E
movl %eax, %ecx
movq %rcx, -0x38(%rbp)
subl $0x5, %eax
ja 0x8671
movq -0x38(%rbp), %rax
leaq 0x2ed8(%rip), %rcx      # 0xb540
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x2fe7(%rip), %rdi      # 0xb65f
callq 0x88d0
jmp 0x88c3
movl $0x28, %edi
callq 0x91b0
movq %rax, -0x10(%rbp)
movl $0x81, %edi
callq 0x90a0
movq %rax, -0x28(%rbp)
movq 0x7cfb(%rip), %rax      # 0x103a0
movl (%rax), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movl $0x82, %edi
callq 0x90a0
movq %rax, -0x20(%rbp)
movq 0x7ccd(%rip), %rax      # 0x103a0
movl (%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x90f0
jmp 0x88c8
movl $0x7c, %edi
callq 0x91b0
movq %rax, -0x18(%rbp)
movl $0x7c, %edi
callq 0x91b0
movq %rax, -0x10(%rbp)
movl $0xc2, %edi
callq 0x90a0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movl $0x83, %edi
callq 0x90a0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x90f0
jmp 0x88c3
xorl %edi, %edi
callq 0x91b0
movq %rax, -0x18(%rbp)
xorl %edi, %edi
callq 0x91b0
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x90f0
jmp 0x88c3
movl $0x2a, %edi
callq 0x91b0
movq %rax, -0x18(%rbp)
movl $0x83, %edi
callq 0x90a0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x90f0
jmp 0x88c3
movl $0x2b, %edi
callq 0x91b0
movq %rax, -0x18(%rbp)
movl $0x83, %edi
callq 0x90a0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x90f0
jmp 0x88c3
movl $0x3f, %edi
callq 0x91b0
movq %rax, -0x18(%rbp)
movl $0x83, %edi
callq 0x90a0
movq %rax, -0x20(%rbp)
movl $0xc2, %edi
callq 0x90a0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x90f0
jmp 0x861b
addq $0x40, %rsp
popq %rbp
retq
nop