// File: rfotino[P]consolite-compiler/src/syntax.cpp
// Function: GotoStatement::parse(Tokenizer*)
bool GotoStatement::parse(Tokenizer *tokenizer) {
  _lineNum = tokenizer->peekNext().line();
  // Make sure the first token is the "goto" keyword.
  if (!_expect(tokenizer, "goto")) {
    return false;
  }
  // Get the label.
  AtomToken labelToken = tokenizer->getNext();
  if (labelToken.str().empty()) {
    _error("Unexpected EOF.", labelToken.line());
    return false;
  } else if (!isValidName(labelToken.str())) {
    _error("Invalid label name in goto statement.", labelToken.line());
    return false;
  }
  _label = labelToken.str();
  // Get the trailing ";" token.
  if (!_expect(tokenizer, ";")) {
    return false;
  }
  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x200, %rsp            # imm = 0x200
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x198(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x48(%rbp), %rdi
movq %rdi, -0x190(%rbp)
callq 0x6bae0
movq -0x190(%rbp), %rdi
callq 0x32270
movl %eax, -0x188(%rbp)
jmp 0x2d996
movq -0x198(%rbp), %rax
movl -0x188(%rbp), %ecx
movl %ecx, 0x8(%rax)
leaq -0x48(%rbp), %rdi
callq 0x99b0
movq -0x18(%rbp), %rax
movq %rax, -0x1a8(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x8760
movq -0x1a0(%rbp), %rdx
leaq 0x4247a(%rip), %rsi     # 0x6fe52
leaq -0x78(%rbp), %rdi
callq 0xced0
jmp 0x2d9e3
movq -0x1a8(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movl $0x1, %edx
callq 0x6da60
movb %al, -0x1a9(%rbp)
jmp 0x2da00
movb -0x1a9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1aa(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x8848
leaq -0x79(%rbp), %rdi
callq 0x8460
movb -0x1aa(%rbp), %al
testb $0x1, %al
jne 0x2da2c
jmp 0x2da80
movb $0x0, -0x1(%rbp)
jmp 0x2de06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x99b0
jmp 0x2de14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2da72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x8848
leaq -0x79(%rbp), %rdi
callq 0x8460
jmp 0x2de14
movq -0x18(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x6ae20
movq -0x1b8(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0xd5c0
jmp 0x2daac
leaq -0xd0(%rbp), %rdi
callq 0x8690
movb %al, -0x1b9(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x8848
movb -0x1b9(%rbp), %al
testb $0x1, %al
jne 0x2dad9
jmp 0x2dba3
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x8760
movq -0x1c8(%rbp), %rdx
leaq 0x41f6d(%rip), %rsi     # 0x6fa67
leaq -0xf0(%rbp), %rdi
callq 0xced0
jmp 0x2db08
leaq -0xb0(%rbp), %rdi
callq 0x32270
movl %eax, -0x1cc(%rbp)
jmp 0x2db1c
movl -0x1cc(%rbp), %esi
leaq -0xf0(%rbp), %rdi
callq 0x6d960
jmp 0x2db30
leaq -0xf0(%rbp), %rdi
callq 0x8848
leaq -0xf1(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0xf8(%rbp)
jmp 0x2ddea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2ddf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2db92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x8848
leaq -0xf1(%rbp), %rdi
callq 0x8460
jmp 0x2ddf8
leaq -0x118(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xd5c0
jmp 0x2dbb8
leaq -0x118(%rbp), %rdi
callq 0x6cd20
movb %al, -0x1cd(%rbp)
jmp 0x2dbcc
movb -0x1cd(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1ce(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x8848
movb -0x1ce(%rbp), %al
testb $0x1, %al
jne 0x2dbf5
jmp 0x2dccb
leaq -0x139(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x8760
movq -0x1d8(%rbp), %rdx
leaq 0x42493(%rip), %rsi     # 0x700a9
leaq -0x138(%rbp), %rdi
callq 0xced0
jmp 0x2dc24
leaq -0xb0(%rbp), %rdi
callq 0x32270
movl %eax, -0x1dc(%rbp)
jmp 0x2dc38
movl -0x1dc(%rbp), %esi
leaq -0x138(%rbp), %rdi
callq 0x6d960
jmp 0x2dc4c
leaq -0x138(%rbp), %rdi
callq 0x8848
leaq -0x139(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0xf8(%rbp)
jmp 0x2ddea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x8848
jmp 0x2ddf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2dcba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x8848
leaq -0x139(%rbp), %rdi
callq 0x8460
jmp 0x2ddf8
jmp 0x2dccd
leaq -0x160(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xd5c0
jmp 0x2dce2
movq -0x198(%rbp), %rdi
addq $0x10, %rdi
leaq -0x160(%rbp), %rsi
movq %rsi, -0x1f8(%rbp)
callq 0x84e0
movq -0x1f8(%rbp), %rdi
callq 0x8848
movq -0x18(%rbp), %rax
movq %rax, -0x1f0(%rbp)
leaq -0x181(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x8760
movq -0x1e8(%rbp), %rdx
leaq 0x41f19(%rip), %rsi     # 0x6fc51
leaq -0x180(%rbp), %rdi
callq 0xced0
jmp 0x2dd46
movq -0x1f0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
movl $0x1, %edx
callq 0x6da60
movb %al, -0x1f9(%rbp)
jmp 0x2dd66
movb -0x1f9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1fa(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x8848
leaq -0x181(%rbp), %rdi
callq 0x8460
movb -0x1fa(%rbp), %al
testb $0x1, %al
jne 0x2dd98
jmp 0x2dddc
movb $0x0, -0x1(%rbp)
movl $0x1, -0xf8(%rbp)
jmp 0x2ddea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2ddce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x8848
leaq -0x181(%rbp), %rdi
callq 0x8460
jmp 0x2ddf8
movb $0x1, -0x1(%rbp)
movl $0x1, -0xf8(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x99b0
jmp 0x2de06
leaq -0xb0(%rbp), %rdi
callq 0x99b0
jmp 0x2de14
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x200, %rsp            # imm = 0x200
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x8750
nopl (%rax)