// File: Silica[P]PSL/./PSL/parser.h
// Function: PSL::variable::Parser::ParseIf(PSL::variable&, PSL::variable&)
void ParseIf(variable &g, variable &c)
	{
		variable v;
		if (t->getNextIf('('/*')'*/))
			ParseExpression(v, /*'('*/')');
		else
			Error(TINA, '('/*')'*/, "if");
		size_t l = v.codelength();
		Variable::OpCode *oc = NULL;
		if (l)
		{
			oc = new Variable::JRF(0);
			v.pushcode(oc);
			l = v.codelength();
		}
		else
		{
			Error(TINSC, 0, "if");
		}
		ParseDangling(g, v);
		if (t->checkNext() == Tokenizer::IDENTIFIER && t->nstr == "else")
		{
			t->getNext();
			if (oc)
				oc->set(static_cast<int>(v.codelength()+1-l));
			oc = new Variable::JR(0);
			v.pushcode(oc);
			l = v.codelength();
			ParseDangling(g, v);
			oc->set(static_cast<int>(v.codelength()-l));
		}
		else
		{
			if (oc)
				oc->set(static_cast<int>(v.codelength()-l));
		}
		if (Variable::Code *x = v.getcode())
		{
		#ifdef PSL_IF_STATEMENT_NOT_SCOPE
			Variable::Code *code = c.getcode();
			if (!code)	c = v;
			else		code->push(x);
		#else
			#ifdef PSL_DEBUG
			c.pushcode(new Variable::IF(x));
			#else
			c.pushcode(new Variable::SCOPE(x));
			#endif
		#endif
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x1a130
movq -0x60(%rbp), %rax
movq (%rax), %rdi
movl $0x28, %esi
callq 0x27d30
movb %al, -0x51(%rbp)
jmp 0x2722e
movb -0x51(%rbp), %al
testb $0x1, %al
jne 0x27237
jmp 0x27260
movq -0x60(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movl $0x29, %edx
xorl %ecx, %ecx
callq 0x27150
jmp 0x2724d
jmp 0x27284
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x27567
movq -0x60(%rbp), %rdi
leaq 0x178ba(%rip), %rcx     # 0x3eb25
movl $0x2, %esi
movl $0x28, %edx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0x27d80
jmp 0x27282
jmp 0x27284
leaq -0x20(%rbp), %rdi
callq 0x27030
movq %rax, -0x68(%rbp)
jmp 0x27293
movq -0x68(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x27311
movl $0x10, %edi
callq 0x2a950
movq %rax, -0x70(%rbp)
jmp 0x272ba
movq -0x70(%rbp), %rdi
xorl %esi, %esi
callq 0x2a970
jmp 0x272c7
movq -0x70(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x23150
jmp 0x272de
leaq -0x20(%rbp), %rdi
callq 0x27030
movq %rax, -0x78(%rbp)
jmp 0x272ed
movq -0x78(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x27332
movq -0x70(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x2a9b0
jmp 0x27567
movq -0x60(%rbp), %rdi
leaq 0x17809(%rip), %rcx     # 0x3eb25
movl $0x3, %esi
xorl %edx, %edx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0x27d80
jmp 0x27330
jmp 0x27332
movq -0x60(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x33330
jmp 0x27345
movq -0x60(%rbp), %rax
movq (%rax), %rdi
callq 0x232e0
movl %eax, -0x7c(%rbp)
jmp 0x27356
movl -0x7c(%rbp), %eax
cmpl $0x1, %eax
jne 0x274a1
movq -0x60(%rbp), %rax
movq (%rax), %rdi
addq $0x68, %rdi
leaq 0x177a9(%rip), %rsi     # 0x3eb1d
callq 0x26a00
testb $0x1, %al
jne 0x27382
jmp 0x274a1
movq -0x60(%rbp), %rax
movq (%rax), %rdi
callq 0x26620
jmp 0x27390
cmpq $0x0, -0x40(%rbp)
je 0x273d8
movq -0x40(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x27030
movq %rax, -0x88(%rbp)
jmp 0x273b4
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rax
movl %eax, %esi
movl -0x38(%rbp), %eax
subl %eax, %esi
incl %esi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
jmp 0x273d6
jmp 0x273d8
movl $0x10, %edi
callq 0x2a950
movq %rax, -0x98(%rbp)
jmp 0x273eb
movq -0x98(%rbp), %rdi
xorl %esi, %esi
callq 0x2a9e0
jmp 0x273fb
movq -0x98(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x23150
jmp 0x27415
leaq -0x20(%rbp), %rdi
callq 0x27030
movq %rax, -0xa0(%rbp)
jmp 0x27427
movq -0x60(%rbp), %rdi
movq -0xa0(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x33330
jmp 0x27445
movq -0x40(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x27030
movq %rax, -0xa8(%rbp)
jmp 0x27462
movq -0xb0(%rbp), %rdi
movq -0xa8(%rbp), %rcx
movl -0x38(%rbp), %eax
movl %ecx, %esi
subl %eax, %esi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
jmp 0x27482
jmp 0x274e9
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x2a9b0
jmp 0x27567
cmpq $0x0, -0x40(%rbp)
je 0x274e7
movq -0x40(%rbp), %rax
movq %rax, -0xc0(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x27030
movq %rax, -0xb8(%rbp)
jmp 0x274c5
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rcx
movl -0x38(%rbp), %eax
movl %ecx, %esi
subl %eax, %esi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
jmp 0x274e5
jmp 0x274e7
jmp 0x274e9
leaq -0x20(%rbp), %rdi
callq 0x27070
movq %rax, -0xc8(%rbp)
jmp 0x274fb
movq -0xc8(%rbp), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x27555
movq -0x18(%rbp), %rdi
callq 0x27070
movq %rax, -0xd0(%rbp)
jmp 0x2751f
movq -0xd0(%rbp), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x27542
movq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x1d200
jmp 0x27540
jmp 0x27553
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x1bd00
jmp 0x27551
jmp 0x27553
jmp 0x27555
leaq -0x20(%rbp), %rdi
callq 0xcdc0
addq $0xd0, %rsp
popq %rbp
retq
leaq -0x20(%rbp), %rdi
callq 0xcdc0
movq -0x28(%rbp), %rdi
callq 0xc280
nopl (%rax)