// File: Silica[P]PSL/./PSL/parser.h
// Function: PSL::variable::Parser::Error(PSL::variable::Parser::ErrorID, int, char const*, int)
void Error(ErrorID n, int op = 0, const char *str = "", int line = -1)
	{
		if (line < 0)
			line = t->getLine();
		if (n < WARNING)
		{
			++error;
			PSL_PRINTF(("error %s %d,%d: ", t->getFile().c_str(), line, t->getByte()));
		}
		else
		{
			PSL_PRINTF(("warning %s %d,%d: ", t->getFile().c_str(), line, t->getByte()));
		}
		switch (n)
		{
		case TINA:	PSL_PRINTF(("There is no %c after %s\n", op, str));break;
		case TINSC:	PSL_PRINTF(("There is no %s-statement condition\n", str));break;
		case TINLAG:PSL_PRINTF(("There is no label after goto\n"));break;
		case NOTT:	PSL_PRINTF(("not term : %c\n", op));break;
		case UKT:	PSL_PRINTF(("unknown token\n"));break;
		case TINIA:	PSL_PRINTF(("There is no identifier after %s\n", str));break;
		case TINCOT:PSL_PRINTF(("There is no : on ternary operation\n"));break;
		case TINAE:	PSL_PRINTF(("There is no %c at expression end\n", op));break;
		case IIAE:	PSL_PRINTF(("'%s' is already exsit\n", str));break;
		case BINC:	PSL_PRINTF(("block not closed from %d\n", op));break;
		default:	PSL_PRINTF(("unknown error\n"));
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpl $0x0, -0x1c(%rbp)
jge 0x27db7
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x280c0
movl %eax, -0x1c(%rbp)
cmpl $0xa, -0xc(%rbp)
jge 0x27e0c
movq -0x28(%rbp), %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
movq (%rax), %rdi
callq 0x23f40
movq %rax, %rdi
callq 0xce20
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, -0x38(%rbp)
movl -0x1c(%rbp), %ecx
movl %ecx, -0x2c(%rbp)
movq (%rax), %rdi
callq 0x33ad0
movq -0x38(%rbp), %rsi
movl -0x2c(%rbp), %edx
movl %eax, %ecx
leaq 0x16dc7(%rip), %rdi     # 0x3ebca
movb $0x0, %al
callq 0xc050
jmp 0x27e50
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x23f40
movq %rax, %rdi
callq 0xce20
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, -0x48(%rbp)
movl -0x1c(%rbp), %ecx
movl %ecx, -0x3c(%rbp)
movq (%rax), %rdi
callq 0x33ad0
movq -0x48(%rbp), %rsi
movl -0x3c(%rbp), %edx
movl %eax, %ecx
leaq 0x16d92(%rip), %rdi     # 0x3ebdb
movb $0x0, %al
callq 0xc050
movl -0xc(%rbp), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x50(%rbp)
subl $0xa, %eax
ja 0x27f3e
movq -0x50(%rbp), %rax
leaq 0x1641c(%rip), %rcx     # 0x3e28c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x10(%rbp), %esi
movq -0x18(%rbp), %rdx
leaq 0x16d67(%rip), %rdi     # 0x3ebee
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
movq -0x18(%rbp), %rsi
leaq 0x16d69(%rip), %rdi     # 0x3ec07
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
leaq 0x16d7a(%rip), %rdi     # 0x3ec2b
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
movl -0x10(%rbp), %esi
leaq 0x16d82(%rip), %rdi     # 0x3ec49
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
leaq 0x16d81(%rip), %rdi     # 0x3ec58
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
movq -0x18(%rbp), %rsi
leaq 0x16d7c(%rip), %rdi     # 0x3ec67
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
leaq 0x16d8d(%rip), %rdi     # 0x3ec88
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
movl -0x10(%rbp), %esi
leaq 0x16d9e(%rip), %rdi     # 0x3ecac
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
movq -0x18(%rbp), %rsi
leaq 0x16dac(%rip), %rdi     # 0x3ecce
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
movl -0x10(%rbp), %esi
leaq 0x16db0(%rip), %rdi     # 0x3ece5
movb $0x0, %al
callq 0xc050
jmp 0x27f4c
leaq 0x16dba(%rip), %rdi     # 0x3ecff
movb $0x0, %al
callq 0xc050
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)