// File: ryuichiueda[P]GlueLang/src/Where.cc
// Function: Where::parse()
bool Where::parse(void)
{
	m_feeder->getPos(&m_start_line, &m_start_char);
	int base_indent = m_feeder->countIndent();
	if(base_indent <= 0)
		return false;

	m_feeder->blank();
	if(!m_feeder->str("where")){
		m_feeder->setPos(m_start_line, m_start_char);
		return false;
	}

	int indent = base_indent;
	while(indent >= base_indent){
		m_feeder->blank();
		if(add(new Job(m_feeder,m_env,&m_scopes))){
		}else{
			m_error_msg = "Invalid where sentences";	
			m_exit_status = 1;
			throw this;
		}

		if(!m_feeder->atNewLine()){
			m_error_msg = "Invalid pipeline or andline";	
			m_exit_status = 1;
			throw this;
		}
		
		indent = m_feeder->countIndent();
	}

	m_feeder->getPos(&m_end_line, &m_end_char);
	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdx
movq %rdx, -0x58(%rbp)
movq 0x8(%rdx), %rdi
movq %rdx, %rsi
addq $0x30, %rsi
addq $0x34, %rdx
callq 0x17610
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x17cb0
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
jg 0x1b94a
movb $0x0, -0x1(%rbp)
jmp 0x1bb54
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x164a0
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x68(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x6710
movq -0x60(%rbp), %rdx
leaq 0x1eba(%rip), %rsi      # 0x1d835
leaq -0x38(%rbp), %rdi
callq 0x7940
jmp 0x1b986
movq -0x68(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x17750
movb %al, -0x69(%rbp)
jmp 0x1b998
movb -0x69(%rbp), %al
xorb $-0x1, %al
movb %al, -0x6a(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x6280
leaq -0x39(%rbp), %rdi
callq 0x6480
movb -0x6a(%rbp), %al
testb $0x1, %al
jne 0x1b9bb
jmp 0x1ba08
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rdi
movl 0x30(%rax), %esi
movl 0x34(%rax), %edx
callq 0x16c90
movb $0x0, -0x1(%rbp)
jmp 0x1bb54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1b9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x6280
leaq -0x39(%rbp), %rdi
callq 0x6480
jmp 0x1bb62
movl -0x14(%rbp), %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x14(%rbp), %eax
jl 0x1bb38
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x164a0
movl $0xd0, %edi
callq 0x6420
movq -0x58(%rbp), %rcx
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x78(%rbp)
movq 0x8(%rcx), %rsi
movq 0x10(%rcx), %rdx
addq $0x48, %rcx
callq 0x18c40
jmp 0x1ba52
movq -0x78(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0xb860
testb $0x1, %al
jne 0x1ba65
jmp 0x1ba86
jmp 0x1bacc
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0xd0, %esi
callq 0x6430
jmp 0x1bb62
movq -0x58(%rbp), %rdi
addq $0x60, %rdi
leaq 0x1da6(%rip), %rsi      # 0x1d83b
callq 0x6580
movq -0x58(%rbp), %rax
movl $0x1, 0x80(%rax)
movl $0x8, %edi
callq 0x6200
movq %rax, %rdi
movq -0x58(%rbp), %rax
movq %rax, (%rdi)
leaq 0xd20d(%rip), %rsi      # 0x28cd0
xorl %eax, %eax
movl %eax, %edx
callq 0x66d0
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x16c70
testb $0x1, %al
jne 0x1bb23
movq -0x58(%rbp), %rdi
addq $0x60, %rdi
leaq 0x1d67(%rip), %rsi      # 0x1d853
callq 0x6580
movq -0x58(%rbp), %rax
movl $0x1, 0x80(%rax)
movl $0x8, %edi
callq 0x6200
movq %rax, %rdi
movq -0x58(%rbp), %rax
movq %rax, (%rdi)
leaq 0xd1b6(%rip), %rsi      # 0x28cd0
xorl %eax, %eax
movl %eax, %edx
callq 0x66d0
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x17cb0
movl %eax, -0x50(%rbp)
jmp 0x1ba0e
movq -0x58(%rbp), %rdx
movq 0x8(%rdx), %rdi
movq %rdx, %rsi
addq $0x38, %rsi
addq $0x3c, %rdx
callq 0x17610
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x80, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x6700
nopl (%rax,%rax)