// File: /workspace/github_c_makefile_star2_O0/markdryan[P]subtilis/frontend/parser_output.c
// Function: subtilis_parser_print
void subtilis_parser_print(subtilis_parser_t *p, subtilis_token_t *t,
			   subtilis_error_t *err)
{
	const char *tbuf;
	bool hex = false;
	subtilis_exp_t *e = NULL;

	subtilis_lexer_get(p->l, t, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return;

	if (t->type == SUBTILIS_TOKEN_KEYWORD) {
		if (t->tok.keyword.type == SUBTILIS_KEYWORD_TAB)
			prv_parse_tab(p, t, err);
		else if (t->tok.keyword.type == SUBTILIS_KEYWORD_SPC)
			prv_parse_spc(p, t, err);
		if (err->type != SUBTILIS_ERROR_OK)
			return;
	}

	tbuf = subtilis_token_get_text(t);
	if ((t->type == SUBTILIS_TOKEN_OPERATOR) && (!strcmp(tbuf, "~"))) {
		subtilis_lexer_get(p->l, t, err);
		if (err->type != SUBTILIS_ERROR_OK)
			return;
		hex = true;
	}

	e = subtilis_parser_priority7(p, t, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return;

	if (hex) {
		if (!subtilis_type_if_is_integer(&e->type)) {
			e = subtilis_type_if_to_int(p, e, err);
			if (err->type != SUBTILIS_ERROR_OK)
				return;
		}
		e = subtilis_type_if_to_hex_string(p, e, err);
		if (err->type != SUBTILIS_ERROR_OK)
			return;
	} else if (subtilis_type_if_is_numeric(&e->type)) {
		e = subtilis_type_if_exp_to_var(p, e, err);
		if (err->type != SUBTILIS_ERROR_OK)
			return;
	}

	subtilis_type_if_print(p, e, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return;

	if (!p->settings.ignore_graphics_errors) {
		subtilis_exp_handle_errors(p, err);
		if (err->type != SUBTILIS_ERROR_OK)
			return;
	}

	tbuf = subtilis_token_get_text(t);
	if ((t->type == SUBTILIS_TOKEN_OPERATOR) && (!strcmp(tbuf, ";")))
		subtilis_lexer_get(p->l, t, err);
	else
		subtilis_ir_section_add_instr_no_arg(
		    p->current, SUBTILIS_OP_INSTR_PRINT_NL, err);

	if (err->type != SUBTILIS_ERROR_OK)
		return;

	if (!p->settings.ignore_graphics_errors)
		subtilis_exp_handle_errors(p, err);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movb $0x0, -0x21(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x133f0
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x309f2
jmp 0x30c0e
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x30a45
movq -0x10(%rbp), %rax
cmpl $0x7f, 0x8(%rax)
jne 0x30a18
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x30c20
jmp 0x30a35
movq -0x10(%rbp), %rax
cmpl $0x74, 0x8(%rax)
jne 0x30a33
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x30e60
jmp 0x30a35
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30a43
jmp 0x30c0e
jmp 0x30a45
movq -0x10(%rbp), %rdi
callq 0x12d70
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x30a96
movq -0x20(%rbp), %rdi
leaq 0x7a0c8(%rip), %rsi     # 0xaab2e
callq 0x12140
cmpl $0x0, %eax
jne 0x30a96
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x133f0
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30a92
jmp 0x30c0e
movb $0x1, -0x21(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x24550
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30ab9
jmp 0x30c0e
testb $0x1, -0x21(%rbp)
je 0x30b16
movq -0x30(%rbp), %rdi
callq 0x499a0
testb $0x1, %al
jne 0x30af1
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x488b0
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30aef
jmp 0x30c0e
jmp 0x30af1
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x48cf0
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30b14
jmp 0x30c0e
jmp 0x30b4c
movq -0x30(%rbp), %rdi
callq 0x49d10
testb $0x1, %al
jne 0x30b25
jmp 0x30b4a
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x47c10
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30b48
jmp 0x30c0e
jmp 0x30b4a
jmp 0x30b4c
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x49f10
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30b6b
jmp 0x30c0e
movq -0x8(%rbp), %rax
testb $0x1, 0xb9(%rax)
jne 0x30b92
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x36ce0
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30b90
jmp 0x30c0e
jmp 0x30b92
movq -0x10(%rbp), %rdi
callq 0x12d70
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x30bd3
movq -0x20(%rbp), %rdi
leaq 0x79eaa(%rip), %rsi     # 0xaaa5d
callq 0x12140
cmpl $0x0, %eax
jne 0x30bd3
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x133f0
jmp 0x30be9
movq -0x8(%rbp), %rax
movq 0x48(%rax), %rdi
movq -0x18(%rbp), %rdx
movl $0x20, %esi
callq 0x385f0
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x30bf4
jmp 0x30c0e
movq -0x8(%rbp), %rax
testb $0x1, 0xb9(%rax)
jne 0x30c0e
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x36ce0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)