// File: Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: UntilNode::genParser() const
ptr_instruction_t UntilNode::genParser() const
{
	if (inclusive)
	{
		if (step == nullptr)
			return std::make_shared<UntilNoStepIncI>(a->genParser(), b->genParser(), token);
		else
			return std::make_shared<UntilStepIncI>(a->genParser(), b->genParser(), step->genParser(), token);
	}
	if (step == nullptr)
		return std::make_shared<UntilNoStepExcI>(a->genParser(), b->genParser(), token);
	else
		return std::make_shared<UntilStepExcI>(a->genParser(), b->genParser(), step->genParser(), token);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x118(%rbp)
movq %rdi, %rax
movq %rax, -0x110(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x108(%rbp)
testb $0x1, 0xd8(%rax)
je 0xe15fa
movq -0x108(%rbp), %rdi
addq $0xc8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xe6230
testb $0x1, %al
jne 0xe141c
jmp 0xe14e1
movq -0x108(%rbp), %rdi
addq $0xa8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x30(%rbp), %rdi
callq *%rax
movq -0x108(%rbp), %rdi
addq $0xb8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x40(%rbp), %rdi
callq *%rax
jmp 0xe1462
movq -0x108(%rbp), %rcx
addq $0x28, %rcx
leaq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0xe98e0
jmp 0xe1480
movq -0x118(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0xe9960
leaq -0x20(%rbp), %rdi
callq 0xe9990
leaq -0x40(%rbp), %rdi
callq 0x2a4e0
leaq -0x30(%rbp), %rdi
callq 0x2a4e0
jmp 0xe1834
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe14d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x2a4e0
leaq -0x30(%rbp), %rdi
callq 0x2a4e0
jmp 0xe1844
movq -0x108(%rbp), %rdi
addq $0xa8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x70(%rbp), %rdi
callq *%rax
movq -0x108(%rbp), %rdi
addq $0xb8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x80(%rbp), %rdi
callq *%rax
jmp 0xe1527
movq -0x108(%rbp), %rdi
addq $0xc8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x90(%rbp), %rdi
callq *%rax
jmp 0xe154e
movq -0x108(%rbp), %r8
addq $0x28, %r8
leaq -0x60(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x80(%rbp), %rdx
leaq -0x90(%rbp), %rcx
callq 0xe99b0
jmp 0xe1573
movq -0x118(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xe9a40
leaq -0x60(%rbp), %rdi
callq 0xe9a70
leaq -0x90(%rbp), %rdi
callq 0x2a4e0
leaq -0x80(%rbp), %rdi
callq 0x2a4e0
leaq -0x70(%rbp), %rdi
callq 0x2a4e0
jmp 0xe1834
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe15ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe15e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x2a4e0
leaq -0x80(%rbp), %rdi
callq 0x2a4e0
leaq -0x70(%rbp), %rdi
callq 0x2a4e0
jmp 0xe1844
movq -0x108(%rbp), %rdi
addq $0xc8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xe6230
testb $0x1, %al
jne 0xe161a
jmp 0xe1700
movq -0x108(%rbp), %rdi
addq $0xa8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xb0(%rbp), %rdi
callq *%rax
movq -0x108(%rbp), %rdi
addq $0xb8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xc0(%rbp), %rdi
callq *%rax
jmp 0xe1666
movq -0x108(%rbp), %rcx
addq $0x28, %rcx
leaq -0xa0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0xe9a90
jmp 0xe168d
movq -0x118(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0xe9b10
leaq -0xa0(%rbp), %rdi
callq 0xe9b40
leaq -0xc0(%rbp), %rdi
callq 0x2a4e0
leaq -0xb0(%rbp), %rdi
callq 0x2a4e0
jmp 0xe1834
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe16ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x2a4e0
leaq -0xb0(%rbp), %rdi
callq 0x2a4e0
jmp 0xe1844
movq -0x108(%rbp), %rdi
addq $0xa8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xe0(%rbp), %rdi
callq *%rax
movq -0x108(%rbp), %rdi
addq $0xb8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xf0(%rbp), %rdi
callq *%rax
jmp 0xe174c
movq -0x108(%rbp), %rdi
addq $0xc8, %rdi
callq 0x2d030
movq %rax, %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x100(%rbp), %rdi
callq *%rax
jmp 0xe1773
movq -0x108(%rbp), %r8
addq $0x28, %r8
leaq -0xd0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
leaq -0x100(%rbp), %rcx
callq 0xe9b60
jmp 0xe17a1
movq -0x118(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xe9bf0
leaq -0xd0(%rbp), %rdi
callq 0xe9c20
leaq -0x100(%rbp), %rdi
callq 0x2a4e0
leaq -0xf0(%rbp), %rdi
callq 0x2a4e0
leaq -0xe0(%rbp), %rdi
callq 0x2a4e0
jmp 0xe1834
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe1826
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xe181a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x2a4e0
leaq -0xf0(%rbp), %rdi
callq 0x2a4e0
leaq -0xe0(%rbp), %rdi
callq 0x2a4e0
jmp 0xe1844
movq -0x110(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x119c0
nopl (%rax)