// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/frontend/parser_exp.c
// Function: prv_priority5
static subtilis_exp_t *prv_priority5(subtilis_parser_t *p, subtilis_token_t *t,
				     subtilis_error_t *err)
{
	const char *tbuf;
	subtilis_exp_t *e1 = NULL;
	subtilis_exp_t *e2 = NULL;
	subtilis_exp_fn_t exp_fn;

	e1 = prv_priority4(p, t, err);
	if (err->type != SUBTILIS_ERROR_OK)
		goto cleanup;

	while (t->type == SUBTILIS_TOKEN_OPERATOR) {
		tbuf = subtilis_token_get_text(t);
		if (!strcmp(tbuf, "="))
			exp_fn = subtilis_type_if_eq;
		else if (!strcmp(tbuf, "<>"))
			exp_fn = subtilis_type_if_neq;
		else if (!strcmp(tbuf, ">"))
			exp_fn = subtilis_exp_gt;
		else if (!strcmp(tbuf, "<="))
			exp_fn = subtilis_exp_lte;
		else if (!strcmp(tbuf, "<"))
			exp_fn = subtilis_exp_lt;
		else if (!strcmp(tbuf, ">="))
			exp_fn = subtilis_exp_gte;
		else if (!strcmp(tbuf, "<<"))
			exp_fn = subtilis_type_if_lsl;
		else if (!strcmp(tbuf, ">>"))
			exp_fn = subtilis_type_if_lsr;
		else if (!strcmp(tbuf, ">>>"))
			exp_fn = subtilis_type_if_asr;
		else
			break;
		subtilis_lexer_get(p->l, t, err);
		if (err->type != SUBTILIS_ERROR_OK)
			goto cleanup;
		e2 = prv_priority4(p, t, err);
		if (err->type != SUBTILIS_ERROR_OK)
			goto cleanup;

		e1 = exp_fn(p, e1, e2, err);
		e2 = NULL;
		if (err->type != SUBTILIS_ERROR_OK)
			goto cleanup;
	}

	return e1;

cleanup:

	subtilis_exp_delete(e2);
	subtilis_exp_delete(e1);
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x26370
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
je 0x26157
jmp 0x26344
jmp 0x26159
movq -0x18(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x2633a
movq -0x18(%rbp), %rdi
callq 0x12d70
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
leaq 0x84496(%rip), %rsi     # 0xaa614
callq 0x12140
cmpl $0x0, %eax
jne 0x26198
leaq 0x23071(%rip), %rax     # 0x49200
movq %rax, -0x40(%rbp)
jmp 0x262c9
movq -0x28(%rbp), %rdi
leaq 0x84762(%rip), %rsi     # 0xaa905
callq 0x12140
cmpl $0x0, %eax
jne 0x261bd
leaq 0x230ac(%rip), %rax     # 0x49260
movq %rax, -0x40(%rbp)
jmp 0x262c7
movq -0x28(%rbp), %rdi
leaq 0x8473e(%rip), %rsi     # 0xaa906
callq 0x12140
cmpl $0x0, %eax
jne 0x261e2
leaq 0x11a37(%rip), %rax     # 0x37c10
movq %rax, -0x40(%rbp)
jmp 0x262c5
movq -0x28(%rbp), %rdi
leaq 0x8471b(%rip), %rsi     # 0xaa908
callq 0x12140
cmpl $0x0, %eax
jne 0x26207
leaq 0x11a52(%rip), %rax     # 0x37c50
movq %rax, -0x40(%rbp)
jmp 0x262c3
movq -0x28(%rbp), %rdi
leaq 0x846fd(%rip), %rsi     # 0xaa90f
callq 0x12140
cmpl $0x0, %eax
jne 0x2622c
leaq 0x11a6d(%rip), %rax     # 0x37c90
movq %rax, -0x40(%rbp)
jmp 0x262c1
movq -0x28(%rbp), %rdi
leaq 0x846d4(%rip), %rsi     # 0xaa90b
callq 0x12140
cmpl $0x0, %eax
jne 0x2624e
leaq 0x11a88(%rip), %rax     # 0x37cd0
movq %rax, -0x40(%rbp)
jmp 0x262bf
movq -0x28(%rbp), %rdi
leaq 0x846b5(%rip), %rsi     # 0xaa90e
callq 0x12140
cmpl $0x0, %eax
jne 0x26270
leaq 0x23656(%rip), %rax     # 0x498c0
movq %rax, -0x40(%rbp)
jmp 0x262bd
movq -0x28(%rbp), %rdi
leaq 0x84697(%rip), %rsi     # 0xaa912
callq 0x12140
cmpl $0x0, %eax
jne 0x26292
leaq 0x23764(%rip), %rax     # 0x499f0
movq %rax, -0x40(%rbp)
jmp 0x262bb
movq -0x28(%rbp), %rdi
leaq 0x84674(%rip), %rsi     # 0xaa911
callq 0x12140
cmpl $0x0, %eax
jne 0x262b4
leaq 0x23822(%rip), %rax     # 0x49ad0
movq %rax, -0x40(%rbp)
jmp 0x262b9
jmp 0x2633a
jmp 0x262bb
jmp 0x262bd
jmp 0x262bf
jmp 0x262c1
jmp 0x262c3
jmp 0x262c5
jmp 0x262c7
jmp 0x262c9
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x133f0
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
je 0x262e8
jmp 0x26344
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x26370
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
je 0x26308
jmp 0x26344
movq -0x40(%rbp), %rax
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq *%rax
movq %rax, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
je 0x26335
jmp 0x26344
jmp 0x26159
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x2635e
movq -0x38(%rbp), %rdi
callq 0x36ee0
movq -0x30(%rbp), %rdi
callq 0x36ee0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)