// File: rfotino[P]consolite-compiler/src/syntax.cpp
// Function: ParamToken::parse(Tokenizer*, std::vector<std::shared_ptr<FunctionToken>, std::allocator<std::shared_ptr<FunctionToken>>> const&, std::vector<std::shared_ptr<GlobalVarToken>, std::allocator<std::shared_ptr<GlobalVarToken>>> const&)
bool ParamToken::parse(
      Tokenizer *tokenizer,
      const std::vector<std::shared_ptr<FunctionToken>>& functions,
      const std::vector<std::shared_ptr<GlobalVarToken>>& globals) {
  if (!_type.parse(tokenizer, functions, globals)) {
    return false;
  } else if (_type.isArray()) {
    _error("Array parameter types not supported.", _type.line());
    return false;
  } else if ("void" == _type.name()) {
    _error("Parameter cannot be of type void.", _type.line());
    return false;
  }
  AtomToken nameToken = tokenizer->getNext();
  if (nameToken.str().empty()) {
    _error("Unexpected EOF.", nameToken.line());
    return false;
  } else if (!isValidName(nameToken.str())) {
    _error("Invalid parameter name '" + nameToken.str() + "'.",
           nameToken.line());
    return false;
  } else if (getFunction(nameToken.str(), functions)) {
    _error("Parameter name '" + nameToken.str() + "' conflicts with "
           "function name.", nameToken.line());
    return false;
  } else if (getGlobal(nameToken.str(), globals)) {
    _error("Parameter name '" + nameToken.str() + "' conflicts with "
           " global var name.", nameToken.line());
    return false;
  }
  _name = nameToken.str();
  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3d0, %rsp            # imm = 0x3D0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x368(%rbp)
addq $0x38, %rax
movq %rax, -0x350(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x348(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x340(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x338(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x360(%rbp)
movaps %xmm0, -0x40(%rbp)
movq $0x0, -0x30(%rbp)
leaq -0x40(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0xd470
movaps -0x360(%rbp), %xmm0
movaps %xmm0, -0x60(%rbp)
movq $0x0, -0x50(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x328(%rbp)
callq 0xd510
movq -0x350(%rbp), %rdi
movq -0x348(%rbp), %rsi
movq -0x340(%rbp), %rdx
movq -0x338(%rbp), %rcx
movq -0x330(%rbp), %r8
movq -0x328(%rbp), %r9
callq 0x1d3e0
movb %al, -0x319(%rbp)
jmp 0x25ff2
movb -0x319(%rbp), %al
xorb $-0x1, %al
movb %al, -0x369(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xd530
leaq -0x40(%rbp), %rdi
callq 0xd380
movb -0x369(%rbp), %al
testb $0x1, %al
jne 0x2601e
jmp 0x2604a
movb $0x0, -0x1(%rbp)
jmp 0x2683c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xd530
leaq -0x40(%rbp), %rdi
callq 0xd380
jmp 0x2684a
movq -0x368(%rbp), %rdi
addq $0x10, %rdi
addq $0x28, %rdi
callq 0x33e20
testb $0x1, %al
jne 0x26067
jmp 0x2611a
leaq -0x91(%rbp), %rdi
movq %rdi, -0x378(%rbp)
callq 0x8760
movq -0x378(%rbp), %rdx
leaq 0x49bdc(%rip), %rsi     # 0x6fc64
leaq -0x90(%rbp), %rdi
callq 0xced0
jmp 0x26096
movq -0x368(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x37c(%rbp)
jmp 0x260ae
movl -0x37c(%rbp), %esi
leaq -0x90(%rbp), %rdi
callq 0x6d960
jmp 0x260c2
leaq -0x90(%rbp), %rdi
callq 0x8848
leaq -0x91(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
jmp 0x2683c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26109
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x8848
leaq -0x91(%rbp), %rdi
callq 0x8460
jmp 0x2684a
movq -0x368(%rbp), %rsi
addq $0x38, %rsi
leaq -0xb8(%rbp), %rdi
movq %rdi, -0x388(%rbp)
callq 0xd940
movq -0x388(%rbp), %rsi
leaq 0x48eee(%rip), %rdi     # 0x6f034
callq 0xd590
movb %al, -0x37d(%rbp)
jmp 0x26153
leaq -0xb8(%rbp), %rdi
callq 0x8848
movb -0x37d(%rbp), %al
testb $0x1, %al
jne 0x2616e
jmp 0x2623e
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x8760
movq -0x390(%rbp), %rdx
leaq 0x49afa(%rip), %rsi     # 0x6fc89
leaq -0xd8(%rbp), %rdi
callq 0xced0
jmp 0x2619d
movq -0x368(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x394(%rbp)
jmp 0x261b5
movl -0x394(%rbp), %esi
leaq -0xd8(%rbp), %rdi
callq 0x6d960
jmp 0x261c9
leaq -0xd8(%rbp), %rdi
callq 0x8848
leaq -0xd9(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
jmp 0x2683c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x8848
jmp 0x2684a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2622d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x8848
leaq -0xd9(%rbp), %rdi
callq 0x8460
jmp 0x2684a
jmp 0x26240
jmp 0x26242
movq -0x18(%rbp), %rsi
leaq -0x110(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x6ae20
movq -0x3a0(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0xd5c0
jmp 0x2626e
leaq -0x130(%rbp), %rdi
callq 0x8690
movb %al, -0x3a1(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x8848
movb -0x3a1(%rbp), %al
testb $0x1, %al
jne 0x2629b
jmp 0x26365
leaq -0x151(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x8760
movq -0x3b0(%rbp), %rdx
leaq 0x497ab(%rip), %rsi     # 0x6fa67
leaq -0x150(%rbp), %rdi
callq 0xced0
jmp 0x262ca
leaq -0x110(%rbp), %rdi
callq 0x32270
movl %eax, -0x3b4(%rbp)
jmp 0x262de
movl -0x3b4(%rbp), %esi
leaq -0x150(%rbp), %rdi
callq 0x6d960
jmp 0x262f2
leaq -0x150(%rbp), %rdi
callq 0x8848
leaq -0x151(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x158(%rbp)
jmp 0x26820
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2682e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26354
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x8848
leaq -0x151(%rbp), %rdi
callq 0x8460
jmp 0x2682e
leaq -0x178(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xd5c0
jmp 0x2637a
leaq -0x178(%rbp), %rdi
callq 0x6cd20
movb %al, -0x3b5(%rbp)
jmp 0x2638e
movb -0x3b5(%rbp), %al
xorb $-0x1, %al
movb %al, -0x3b6(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x8848
movb -0x3b6(%rbp), %al
testb $0x1, %al
jne 0x263b7
jmp 0x264d1
leaq -0x1d8(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xd5c0
jmp 0x263cc
leaq 0x498d8(%rip), %rsi     # 0x6fcab
leaq -0x1b8(%rbp), %rdi
leaq -0x1d8(%rbp), %rdx
callq 0x325f0
jmp 0x263e8
leaq 0x499e3(%rip), %rdx     # 0x6fdd2
leaq -0x198(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0xe020
jmp 0x26404
leaq -0x110(%rbp), %rdi
callq 0x32270
movl %eax, -0x3bc(%rbp)
jmp 0x26418
movl -0x3bc(%rbp), %esi
leaq -0x198(%rbp), %rdi
callq 0x6d960
jmp 0x2642c
leaq -0x198(%rbp), %rdi
callq 0x8848
leaq -0x1b8(%rbp), %rdi
callq 0x8848
leaq -0x1d8(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x158(%rbp)
jmp 0x26820
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x8848
jmp 0x2682e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x264c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x264b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x8848
leaq -0x1b8(%rbp), %rdi
callq 0x8848
leaq -0x1d8(%rbp), %rdi
callq 0x8848
jmp 0x2682e
leaq -0x208(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xd5c0
jmp 0x264e6
movq -0x20(%rbp), %rdx
leaq -0x1e8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x6d580
jmp 0x264ff
leaq -0x1e8(%rbp), %rdi
callq 0xd8c0
movb %al, -0x3bd(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x94c0
leaq -0x208(%rbp), %rdi
callq 0x8848
movb -0x3bd(%rbp), %al
testb $0x1, %al
jne 0x26538
jmp 0x26652
leaq -0x268(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xd5c0
jmp 0x2654d
leaq 0x49770(%rip), %rsi     # 0x6fcc4
leaq -0x248(%rbp), %rdi
leaq -0x268(%rbp), %rdx
callq 0x325f0
jmp 0x26569
leaq 0x49765(%rip), %rdx     # 0x6fcd5
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0xe020
jmp 0x26585
leaq -0x110(%rbp), %rdi
callq 0x32270
movl %eax, -0x3c4(%rbp)
jmp 0x26599
movl -0x3c4(%rbp), %esi
leaq -0x228(%rbp), %rdi
callq 0x6d960
jmp 0x265ad
leaq -0x228(%rbp), %rdi
callq 0x8848
leaq -0x248(%rbp), %rdi
callq 0x8848
leaq -0x268(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x158(%rbp)
jmp 0x26820
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x8848
jmp 0x2682e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26641
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26635
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x8848
leaq -0x248(%rbp), %rdi
callq 0x8848
leaq -0x268(%rbp), %rdi
callq 0x8848
jmp 0x2682e
leaq -0x298(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xd5c0
jmp 0x26667
movq -0x28(%rbp), %rdx
leaq -0x278(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x6d6b0
jmp 0x26680
leaq -0x278(%rbp), %rdi
callq 0x332b0
movb %al, -0x3c5(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x9880
leaq -0x298(%rbp), %rdi
callq 0x8848
movb -0x3c5(%rbp), %al
testb $0x1, %al
jne 0x266b9
jmp 0x267d0
leaq -0x2f8(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xd5c0
jmp 0x266ce
leaq 0x495ef(%rip), %rsi     # 0x6fcc4
leaq -0x2d8(%rbp), %rdi
leaq -0x2f8(%rbp), %rdx
callq 0x325f0
jmp 0x266ea
leaq 0x49604(%rip), %rdx     # 0x6fcf5
leaq -0x2b8(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0xe020
jmp 0x26706
leaq -0x110(%rbp), %rdi
callq 0x32270
movl %eax, -0x3cc(%rbp)
jmp 0x2671a
movl -0x3cc(%rbp), %esi
leaq -0x2b8(%rbp), %rdi
callq 0x6d960
jmp 0x2672e
leaq -0x2b8(%rbp), %rdi
callq 0x8848
leaq -0x2d8(%rbp), %rdi
callq 0x8848
leaq -0x2f8(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x158(%rbp)
jmp 0x26820
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x8848
jmp 0x2682e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x267c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x267b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x8848
leaq -0x2d8(%rbp), %rdi
callq 0x8848
leaq -0x2f8(%rbp), %rdi
callq 0x8848
jmp 0x2682e
jmp 0x267d2
jmp 0x267d4
jmp 0x267d6
leaq -0x318(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xd5c0
jmp 0x267eb
movq -0x368(%rbp), %rdi
addq $0x10, %rdi
addq $0x60, %rdi
leaq -0x318(%rbp), %rsi
callq 0x84e0
leaq -0x318(%rbp), %rdi
callq 0x8848
movb $0x1, -0x1(%rbp)
movl $0x1, -0x158(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x99b0
jmp 0x2683c
leaq -0x110(%rbp), %rdi
callq 0x99b0
jmp 0x2684a
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x3d0, %rsp            # imm = 0x3D0
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x8750
nopw %cs:(%rax,%rax)