// File: /workspace/github_cpp_makefile_star2_O1/Silica[P]PSL/./PSL/parser.h
// Function: PSL::variable::Parser::ParseFor(PSL::variable&, PSL::variable&)
void ParseFor(variable &g, variable &c)
	{
		variable v;
		size_t l = 0;
		if (!t->getNextIf('('/*')'*/))
			Error(TINA, '('/*')'*/, "for");
		if (!t->getNextIf(';'))
		{
			v.pushcode(new Variable::POP);
			ParseExpression(v, ';');
			l = v.codelength();
		}
		Variable::OpCode *oc = NULL;
		if (!t->getNextIf(';'))
		{
			ParseExpression(v, ';');
			if (v.codelength() - l)
			{
				oc = new Variable::JF(static_cast<int>(v.codelength()));
				v.pushcode(oc);
			}
		}
		variable x;
		if (!t->getNextIf(/*'('*/')'))
			ParseExpression(x, /*'('*/')');
		ParseDangling(g, v);
		size_t cline = v.codelength();
		if (x.codelength())
		{
			v.pushcode(new Variable::POP);
			v.getcode()->push(x.getcode());
		}
		v.pushcode(new Variable::JMP(static_cast<int>(l)));
		if (oc)
			oc->set(static_cast<int>(v.codelength()));
		if (t->checkNext() == Tokenizer::IDENTIFIER && t->nstr == "else")
		{
			t->getNext();
			ParseDangling(g, v);
		}
		if (Variable::Code *z = v.getcode())
			c.pushcode(new Variable::LOOP(z, cline));
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq %rsp, %rdi
callq 0x1303e
movq (%r15), %r12
movl 0x38(%r12), %eax
testl %eax, %eax
jns 0x1b84c
movq %r12, %rdi
callq 0x199bc
movl %eax, 0x38(%r12)
cmpl $0x28, %eax
jne 0x1b85c
movl $0xffffffff, 0x38(%r12) # imm = 0xFFFFFFFF
jmp 0x1b87b
leaq 0xd043(%rip), %rcx      # 0x288a6
movq %r15, %rdi
movl $0x2, %esi
movl $0x28, %edx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0x1bdbc
movq (%r15), %r12
movl 0x38(%r12), %eax
testl %eax, %eax
jns 0x1b894
movq %r12, %rdi
callq 0x199bc
movl %eax, 0x38(%r12)
cmpl $0x3b, %eax
jne 0x1b8a7
movl $0xffffffff, 0x38(%r12) # imm = 0xFFFFFFFF
xorl %r12d, %r12d
jmp 0x1b8ee
callq 0xf762
leaq 0x21405(%rip), %rcx     # 0x3ccb8
movq %rcx, (%rax)
movq (%rsp), %rcx
movq (%rcx), %rdi
movq (%rdi), %rcx
movq %rax, %rsi
callq *0x190(%rcx)
movq %rsp, %rsi
movq %r15, %rdi
movl $0x3b, %edx
xorl %ecx, %ecx
callq 0x1b500
movq (%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x180(%rax)
movq %rax, %r12
movq (%r15), %r13
movl 0x38(%r13), %eax
testl %eax, %eax
jns 0x1b905
movq %r13, %rdi
callq 0x199bc
movl %eax, 0x38(%r13)
cmpl $0x3b, %eax
jne 0x1b914
movl $0xffffffff, 0x38(%r13) # imm = 0xFFFFFFFF
jmp 0x1b93b
movq %rsp, %rsi
movq %r15, %rdi
movl $0x3b, %edx
xorl %ecx, %ecx
callq 0x1b500
movq (%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x180(%rax)
cmpq %r12, %rax
jne 0x1b940
xorl %r13d, %r13d
jmp 0x1b97a
callq 0x10058
movq %rax, %r13
movq (%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x180(%rax)
movl %eax, 0x8(%r13)
leaq 0x22945(%rip), %rax     # 0x3e2a8
movq %rax, (%r13)
movq (%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
movq %r13, %rsi
callq *0x190(%rax)
movq %rbx, 0x10(%rsp)
leaq 0x8(%rsp), %rdi
callq 0x1303e
movq (%r15), %rbp
movl 0x38(%rbp), %eax
testl %eax, %eax
jns 0x1b99e
movq %rbp, %rdi
callq 0x199bc
movl %eax, 0x38(%rbp)
cmpl $0x29, %eax
jne 0x1b9ac
movl $0xffffffff, 0x38(%rbp) # imm = 0xFFFFFFFF
jmp 0x1b9c0
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movl $0x29, %edx
xorl %ecx, %ecx
callq 0x1b500
movq %rsp, %rdx
movq %r15, %rdi
movq %r14, %rsi
callq 0x21e1a
movq (%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x180(%rax)
movq %rax, %rbp
movq 0x8(%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x180(%rax)
testq %rax, %rax
je 0x1ba48
callq 0xf762
leaq 0x212b5(%rip), %rcx     # 0x3ccb8
movq %rcx, (%rax)
movq (%rsp), %rcx
movq (%rcx), %rdi
movq (%rdi), %rcx
movq %rax, %rsi
callq *0x190(%rcx)
movq (%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x188(%rax)
movq %rax, %rbx
movq 0x8(%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x188(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x13f52
callq 0x10058
leaq 0x221ec(%rip), %rcx     # 0x3dc40
movq %rcx, (%rax)
movl %r12d, 0x8(%rax)
movq (%rsp), %rcx
movq (%rcx), %rdi
movq (%rdi), %rcx
movq %rax, %rsi
callq *0x190(%rcx)
testq %r13, %r13
je 0x1ba8f
movq (%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x180(%rax)
movq (%r13), %rcx
movq %r13, %rdi
movl %eax, %esi
callq *0x20(%rcx)
movq (%r15), %rbx
movl 0x38(%rbx), %eax
testl %eax, %eax
jns 0x1baa4
movq %rbx, %rdi
callq 0x199bc
movl %eax, 0x38(%rbx)
cmpl $0x1, %eax
jne 0x1bae7
movq (%r15), %rdi
addq $0x68, %rdi
leaq 0xcd75(%rip), %rsi      # 0x2882c
callq 0x1b0f8
testb %al, %al
je 0x1bae7
movq (%r15), %rdi
cmpl $0x0, 0x38(%rdi)
jle 0x1bad2
movl $0xffffffff, 0x38(%rdi) # imm = 0xFFFFFFFF
jmp 0x1bad9
jns 0x1bad9
callq 0x199bc
movq %rsp, %rdx
movq %r15, %rdi
movq %r14, %rsi
callq 0x21e1a
movq (%rsp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
callq *0x188(%rax)
movq %rax, %r14
testq %rax, %rax
je 0x1bb31
callq 0x128c4
leaq 0x22805(%rip), %rcx     # 0x3e310
movq %rcx, (%rax)
incl 0x30(%r14)
movq %r14, 0x8(%rax)
movq %rbp, 0x10(%rax)
movq 0x10(%rsp), %rcx
movq (%rcx), %rcx
movq (%rcx), %rdi
movq (%rdi), %rcx
movq %rax, %rsi
callq *0x190(%rcx)
movq 0x8(%rsp), %rdi
callq 0xfc04
movq (%rsp), %rdi
callq 0xfc04
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq %r13, %rdi
callq 0x1d7be
jmp 0x1bb7e
jmp 0x1bb91
jmp 0x1bb91
jmp 0x1bb6c
jmp 0x1bb71
jmp 0x1bb6c
jmp 0x1bb71
movq %rax, %rbx
jmp 0x1bb7e
movq %rax, %rbx
movq 0x8(%rsp), %rdi
callq 0xfc04
movq (%rsp), %rdi
callq 0xfc04
movq %rbx, %rdi
callq 0xc290
jmp 0x1bb91
movq %rax, %rdi
callq 0xde83
nop