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

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

	tbuf = subtilis_token_get_text(t);
	if (t->type != SUBTILIS_TOKEN_OPERATOR) {
		subtilis_error_set_expected(err, "( or ~", tbuf,
					    p->l->stream->name, p->l->line);
		return NULL;
	}

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

	if (strcmp(tbuf, "(")) {
		subtilis_error_set_expected(err, "(", tbuf, p->l->stream->name,
					    p->l->line);
		return NULL;
	}

	val = subtilis_parser_bracketed_exp_internal(p, t, err);
	if (err->type != SUBTILIS_ERROR_OK)
		return NULL;

	subtilis_lexer_get(p->l, t, err);
	if (err->type != SUBTILIS_ERROR_OK) {
		subtilis_exp_delete(val);
		return NULL;
	}

	if (hex) {
		if (!subtilis_type_if_is_integer(&val->type)) {
			val = subtilis_type_if_to_int(p, val, err);
			if (err->type != SUBTILIS_ERROR_OK)
				return NULL;
		}
		return subtilis_type_if_to_hex_string(p, val, err);
	}

	return subtilis_type_if_to_string(p, val, err);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movb $0x0, -0x31(%rbp)
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 0x32da2
movq $0x0, -0x8(%rbp)
jmp 0x32f7f
movq -0x18(%rbp), %rdi
callq 0x12d70
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x2, (%rax)
je 0x32e07
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x30(%rax), %r8
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl 0x38(%rax), %r9d
movl $0x1d, %esi
leaq 0x77d47(%rip), %rdx     # 0xaab29
leaq 0x77d27(%rip), %rax     # 0xaab10
movq %rax, (%rsp)
movl $0x11b, 0x8(%rsp)       # imm = 0x11B
callq 0x156d0
movq $0x0, -0x8(%rbp)
jmp 0x32f7f
movq -0x30(%rbp), %rdi
leaq 0x77d1c(%rip), %rsi     # 0xaab2e
callq 0x12140
cmpl $0x0, %eax
jne 0x32e57
movb $0x1, -0x31(%rbp)
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 0x32e4a
movq $0x0, -0x8(%rbp)
jmp 0x32f7f
movq -0x18(%rbp), %rdi
callq 0x12d70
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
leaq 0x7843a(%rip), %rsi     # 0xab29c
callq 0x12140
cmpl $0x0, %eax
je 0x32ebb
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x30(%rax), %r8
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl 0x38(%rax), %r9d
movl $0x1d, %esi
leaq 0x78406(%rip), %rdx     # 0xab29c
leaq 0x77c73(%rip), %rax     # 0xaab10
movq %rax, (%rsp)
movl $0x129, 0x8(%rsp)       # imm = 0x129
callq 0x156d0
movq $0x0, -0x8(%rbp)
jmp 0x32f7f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x24f20
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
je 0x32ee6
movq $0x0, -0x8(%rbp)
jmp 0x32f7f
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 0x32f16
movq -0x28(%rbp), %rdi
callq 0x36ee0
movq $0x0, -0x8(%rbp)
jmp 0x32f7f
testb $0x1, -0x31(%rbp)
je 0x32f6a
movq -0x28(%rbp), %rdi
callq 0x499a0
testb $0x1, %al
jne 0x32f53
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x488b0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
je 0x32f51
movq $0x0, -0x8(%rbp)
jmp 0x32f7f
jmp 0x32f53
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x48cf0
movq %rax, -0x8(%rbp)
jmp 0x32f7f
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x48c10
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)