// File: /workspace/github_cpp_makefile_star2_O2/rfotino[P]consolite-compiler/src/parser.cpp
// Function: Parser::Parser(Tokenizer*)
Parser::Parser(Tokenizer *t) : _tokenizer(t), _bytePos(0) {
  // Add builtin "void COLOR(uint16 color)" function.
  _functions.push_back(
    std::make_shared<FunctionToken>(
      FunctionToken(
        TypeToken("void"),
        "COLOR",
        {
          std::make_shared<ParamToken>(
            ParamToken(TypeToken("uint16"), "color")
          )
        }
      )
    )
  );
  // Add builtin "void PIXEL(uint16 x, uint16 y)" function.
  _functions.push_back(
    std::make_shared<FunctionToken>(
      FunctionToken(
        TypeToken("void"),
        "PIXEL",
        {
          std::make_shared<ParamToken>(
            ParamToken(TypeToken("uint16"), "x")
          ),
          std::make_shared<ParamToken>(
            ParamToken(TypeToken("uint16"), "y")
          )
        }
      )
    )
  );
  // Add builtin "void TIMERST()" function.
  _functions.push_back(
    std::make_shared<FunctionToken>(
      FunctionToken(
        TypeToken("void"),
        "TIMERST",
        { }
      )
    )
  );
  // Add builtin "uint16 TIME()" function.
  _functions.push_back(
    std::make_shared<FunctionToken>(
      FunctionToken(
        TypeToken("uint16"),
        "TIME",
        { }
      )
    )
  );
  // Add builtin "uint16 INPUT(uint16 input_id)" function.
  _functions.push_back(
    std::make_shared<FunctionToken>(
      FunctionToken(
        TypeToken("uint16"),
        "INPUT",
        {
          std::make_shared<ParamToken>(
            ParamToken(TypeToken("uint16"), "input_id")
          )
        }
      )
    )
  );
  // Add builtin "uint16 RND()" function.
  _functions.push_back(
    std::make_shared<FunctionToken>(
      FunctionToken(
        TypeToken("uint16"),
        "RND",
        { }
      )
    )
  );
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x438, %rsp            # imm = 0x438
movq %rdi, %rbx
movq %rsi, (%rdi)
leaq 0x20(%rdi), %r14
leaq 0x38(%rdi), %r15
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rdi)
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x28(%rdi)
movq %r15, %rdi
callq 0x74c0
leaq 0x248(%rbx), %rax
movq %rax, 0x238(%rbx)
andq $0x0, 0x240(%rbx)
movb $0x0, 0x248(%rbx)
leaq 0x288(%rbx), %rax
movq %rax, 0x258(%rbx)
movq $0x1, 0x260(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x268(%rbx)
movl $0x3f800000, 0x278(%rbx) # imm = 0x3F800000
movups %xmm0, 0x280(%rbx)
andw $0x0, 0x290(%rbx)
leaq 0x21462(%rip), %rsi     # 0x29030
leaq 0xe0(%rsp), %rdi
leaq 0x1a8(%rsp), %rdx
callq 0x9502
leaq 0x1c8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x21432(%rip), %rsi     # 0x29035
leaq 0x70(%rsp), %rdi
leaq 0x188(%rsp), %rdx
callq 0x9502
leaq 0x2141f(%rip), %rsi     # 0x2903b
leaq 0x50(%rsp), %rdi
leaq 0x170(%rsp), %rdx
callq 0x9502
leaq 0xa8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x213f7(%rip), %rsi     # 0x29042
leaq 0x30(%rsp), %rdi
leaq 0x160(%rsp), %rdx
callq 0x9502
leaq 0x260(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x958e
leaq 0x120(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x956f
leaq 0x10(%rsp), %rdi
leaq 0x120(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0x9(%rsp), %rcx
callq 0x95b6
leaq 0x2f8(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
leaq 0x70(%rsp), %rdx
leaq 0x10(%rsp), %rcx
callq 0x95f0
leaq 0x140(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x94e4
leaq 0x140(%rsp), %rsi
movq %r14, %rdi
callq 0xab66
leaq 0x148(%rsp), %rdi
callq 0x7a34
leaq 0x2f8(%rsp), %rdi
callq 0x9714
leaq 0x10(%rsp), %r13
movq %r13, %rdi
callq 0x9786
leaq 0x128(%rsp), %rdi
callq 0x7a34
leaq 0x270(%rsp), %rdi
callq 0xa202
leaq 0x30(%rsp), %rdi
callq 0x75c8
leaq 0xa8(%rsp), %rdi
callq 0x97a8
leaq 0x50(%rsp), %rdi
callq 0x75c8
leaq 0x70(%rsp), %rdi
callq 0x75c8
leaq 0x1c8(%rsp), %rdi
callq 0x97a8
leaq 0xe0(%rsp), %rdi
callq 0x75c8
leaq 0x212b9(%rip), %rsi     # 0x29030
leaq 0x50(%rsp), %rdi
leaq 0x9(%rsp), %rdx
callq 0x9502
leaq 0xa8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x212a5(%rip), %rsi     # 0x29048
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x9502
leaq 0x21282(%rip), %rsi     # 0x2903b
leaq 0x140(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x9502
leaq 0xe0(%rsp), %rdi
leaq 0x140(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x23802(%rip), %rsi     # 0x2b5ed
leaq 0x120(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x9502
leaq 0x260(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0x958e
leaq 0x10(%rsp), %rbp
leaq 0x260(%rsp), %rsi
movq %rbp, %rdi
callq 0x956f
leaq 0x20(%rsp), %rbp
leaq 0x21200(%rip), %rsi     # 0x2903b
leaq 0x1a8(%rsp), %rdi
leaq 0xc(%rsp), %rdx
callq 0x9502
leaq 0x70(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x211e4(%rip), %rsi     # 0x2904e
leaq 0x188(%rsp), %rdi
leaq 0xb(%rsp), %rdx
callq 0x9502
leaq 0x1c8(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x188(%rsp), %rdx
callq 0x958e
leaq 0x1c8(%rsp), %rsi
movq %rbp, %rdi
callq 0x956f
leaq 0x170(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0xa(%rsp), %rcx
callq 0x95b6
leaq 0x2f8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0x30(%rsp), %rdx
leaq 0x170(%rsp), %rcx
callq 0x95f0
leaq 0x160(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x94e4
leaq 0x160(%rsp), %rsi
movq %r14, %rdi
callq 0xab66
leaq 0x168(%rsp), %rdi
callq 0x7a34
leaq 0x2f8(%rsp), %rdi
callq 0x9714
leaq 0x170(%rsp), %rdi
callq 0x9786
pushq $0x18
popq %r12
leaq (%rsp,%r12), %rdi
addq $0x10, %rdi
callq 0x7a34
addq $-0x10, %r12
cmpq $-0x8, %r12
jne 0x7f32
leaq 0x1d8(%rsp), %rdi
callq 0xa202
leaq 0x188(%rsp), %rdi
callq 0x75c8
leaq 0x70(%rsp), %rdi
callq 0x97a8
leaq 0x1a8(%rsp), %rdi
callq 0x75c8
leaq 0x270(%rsp), %rdi
callq 0xa202
leaq 0x120(%rsp), %rdi
callq 0x75c8
leaq 0xe0(%rsp), %rdi
callq 0x97a8
leaq 0x140(%rsp), %rdi
callq 0x75c8
leaq 0x30(%rsp), %rdi
callq 0x75c8
leaq 0xa8(%rsp), %rdi
callq 0x97a8
leaq 0x50(%rsp), %rdi
callq 0x75c8
leaq 0x2105a(%rip), %rsi     # 0x29030
leaq 0x1c8(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x9502
leaq 0x260(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x21048(%rip), %rsi     # 0x29050
leaq 0xa8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x9502
xorps %xmm0, %xmm0
leaq 0xe0(%rsp), %rcx
movaps %xmm0, (%rcx)
andq $0x0, 0x10(%rcx)
leaq 0x2f8(%rsp), %rdi
leaq 0x260(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0x95f0
leaq 0x70(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x94e4
leaq 0x70(%rsp), %rsi
movq %r14, %rdi
callq 0xab66
leaq 0x78(%rsp), %rdi
callq 0x7a34
leaq 0x2f8(%rsp), %rdi
callq 0x9714
leaq 0xe0(%rsp), %rdi
callq 0x9786
leaq 0xa8(%rsp), %rdi
callq 0x75c8
leaq 0x260(%rsp), %rdi
callq 0x97a8
leaq 0x1c8(%rsp), %rdi
callq 0x75c8
leaq 0x20f80(%rip), %rsi     # 0x2903b
leaq 0x1c8(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x9502
leaq 0x260(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x20f6b(%rip), %rsi     # 0x29058
leaq 0xa8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x9502
xorps %xmm0, %xmm0
leaq 0xe0(%rsp), %rcx
movaps %xmm0, (%rcx)
andq $0x0, 0x10(%rcx)
leaq 0x2f8(%rsp), %rdi
leaq 0x260(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0x95f0
leaq 0x70(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x94e4
leaq 0x70(%rsp), %rsi
movq %r14, %rdi
callq 0xab66
leaq 0x78(%rsp), %rdi
callq 0x7a34
leaq 0x2f8(%rsp), %rdi
callq 0x9714
leaq 0xe0(%rsp), %rdi
callq 0x9786
leaq 0xa8(%rsp), %rdi
callq 0x75c8
leaq 0x260(%rsp), %rdi
callq 0x97a8
leaq 0x1c8(%rsp), %rdi
callq 0x75c8
leaq 0x20e9b(%rip), %rsi     # 0x2903b
leaq 0xe0(%rsp), %rdi
leaq 0x1a8(%rsp), %rdx
callq 0x9502
leaq 0x1c8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x20e88(%rip), %rsi     # 0x2905d
leaq 0x70(%rsp), %rdi
leaq 0x188(%rsp), %rdx
callq 0x9502
leaq 0x20e4d(%rip), %rsi     # 0x2903b
leaq 0x50(%rsp), %rdi
leaq 0x170(%rsp), %rdx
callq 0x9502
leaq 0xa8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x20e46(%rip), %rsi     # 0x29063
leaq 0x30(%rsp), %rdi
leaq 0x160(%rsp), %rdx
callq 0x9502
leaq 0x260(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x958e
leaq 0x120(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x956f
leaq 0x10(%rsp), %rdi
leaq 0x120(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0x9(%rsp), %rcx
callq 0x95b6
leaq 0x2f8(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
leaq 0x70(%rsp), %rdx
leaq 0x10(%rsp), %rcx
callq 0x95f0
leaq 0x140(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x94e4
leaq 0x140(%rsp), %rsi
movq %r14, %rdi
callq 0xab66
leaq 0x148(%rsp), %rdi
callq 0x7a34
leaq 0x2f8(%rsp), %rdi
callq 0x9714
leaq 0x10(%rsp), %rdi
callq 0x9786
leaq 0x128(%rsp), %rdi
callq 0x7a34
leaq 0x270(%rsp), %rdi
callq 0xa202
leaq 0x30(%rsp), %rdi
callq 0x75c8
leaq 0xa8(%rsp), %rdi
callq 0x97a8
leaq 0x50(%rsp), %rdi
callq 0x75c8
leaq 0x70(%rsp), %rdi
callq 0x75c8
leaq 0x1c8(%rsp), %rdi
callq 0x97a8
leaq 0xe0(%rsp), %rdi
callq 0x75c8
leaq 0x20cf5(%rip), %rsi     # 0x2903b
leaq 0x1c8(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x9502
leaq 0x260(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x953e
leaq 0x20cf4(%rip), %rsi     # 0x2906c
leaq 0xa8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x9502
xorps %xmm0, %xmm0
leaq 0xe0(%rsp), %rcx
movaps %xmm0, (%rcx)
andq $0x0, 0x10(%rcx)
leaq 0x2f8(%rsp), %rdi
leaq 0x260(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0x95f0
leaq 0x70(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x94e4
leaq 0x70(%rsp), %rsi
movq %r14, %rdi
callq 0xab66
leaq 0x78(%rsp), %rdi
callq 0x7a34
leaq 0x2f8(%rsp), %rdi
callq 0x9714
leaq 0xe0(%rsp), %rdi
callq 0x9786
leaq 0xa8(%rsp), %rdi
callq 0x75c8
leaq 0x260(%rsp), %rdi
callq 0x97a8
leaq 0x1c8(%rsp), %rdi
callq 0x75c8
addq $0x438, %rsp            # imm = 0x438
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8496
jmp 0x84a6
jmp 0x84b9
jmp 0x84d9
jmp 0x84ec
jmp 0x8798
jmp 0x8686
jmp 0x8699
jmp 0x86ac
jmp 0x86bc
jmp 0x86cf
jmp 0x8765
jmp 0x876e
jmp 0x8777
jmp 0x8780
jmp 0x8789
jmp 0x8792
jmp 0x8798
jmp 0x8496
jmp 0x84a6
jmp 0x84b9
jmp 0x84d9
jmp 0x84ec
jmp 0x8798
movq %rax, (%rsp)
leaq 0x78(%rsp), %rdi
callq 0x7a34
jmp 0x84aa
movq %rax, (%rsp)
leaq 0x2f8(%rsp), %rdi
callq 0x9714
jmp 0x84bd
movq %rax, (%rsp)
leaq 0xe0(%rsp), %rdi
callq 0x9786
leaq 0xa8(%rsp), %rdi
callq 0x75c8
jmp 0x84dd
movq %rax, (%rsp)
leaq 0x260(%rsp), %rdi
callq 0x97a8
jmp 0x84f0
movq %rax, (%rsp)
leaq 0x1c8(%rsp), %rdi
jmp 0x8720
jmp 0x8798
movq %rax, (%rsp)
leaq 0x168(%rsp), %rdi
callq 0x7a34
jmp 0x8519
movq %rax, (%rsp)
leaq 0x2f8(%rsp), %rdi
callq 0x9714
jmp 0x852c
movq %rax, (%rsp)
leaq 0x170(%rsp), %rdi
callq 0x9786
jmp 0x853f
movq %rax, (%rsp)
pushq $0x18
popq %r12
leaq (%rsp,%r12), %rdi
addq $0x10, %rdi
callq 0x7a34
addq $-0x10, %r12
cmpq $-0x8, %r12
jne 0x8543
movb $0x1, %r12b
jmp 0x8566
movq %rax, (%rsp)
xorl %r12d, %r12d
leaq 0x1d8(%rsp), %rdi
callq 0xa202
leaq 0x188(%rsp), %rdi
callq 0x75c8
leaq 0x70(%rsp), %rdi
callq 0x97a8
leaq 0x1a8(%rsp), %rdi
callq 0x75c8
jmp 0x85bd
movq %rax, (%rsp)
xorl %r12d, %r12d
jmp 0x8573
movq %rax, (%rsp)
xorl %r12d, %r12d
jmp 0x8580
movq %rax, (%rsp)
xorl %r12d, %r12d
jmp 0x858a
jmp 0x85b6
movq %rax, (%rsp)
xorl %r12d, %r12d
leaq 0x270(%rsp), %rdi
callq 0xa202
leaq 0x120(%rsp), %rdi
callq 0x75c8
leaq 0xe0(%rsp), %rdi
callq 0x97a8
leaq 0x140(%rsp), %rdi
callq 0x75c8
cmpq %rbp, %r13
sete %al
testb %r12b, %r12b
jne 0x861d
testb %al, %al
jne 0x861d
leaq 0x10(%rsp), %r12
leaq -0x10(%rbp), %r13
addq $-0x8, %rbp
movq %rbp, %rdi
callq 0x7a34
movq %r13, %rbp
cmpq %r12, %r13
jne 0x8605
leaq 0x30(%rsp), %rdi
callq 0x75c8
leaq 0xa8(%rsp), %rdi
callq 0x97a8
leaq 0x50(%rsp), %rdi
jmp 0x8720
movq %rax, (%rsp)
leaq 0x10(%rsp), %rbp
xorl %r12d, %r12d
jmp 0x85ca
movq %rax, (%rsp)
leaq 0x10(%rsp), %rbp
xorl %r12d, %r12d
jmp 0x85d7
movq %rax, (%rsp)
xorl %r12d, %r12d
movq %r13, %rbp
jmp 0x85e4
movq %rax, (%rsp)
jmp 0x861d
movq %rax, (%rsp)
jmp 0x8627
movq %rax, (%rsp)
jmp 0x8634
jmp 0x8798
movq %rax, (%rsp)
leaq 0x148(%rsp), %rdi
callq 0x7a34
jmp 0x869d
movq %rax, (%rsp)
leaq 0x2f8(%rsp), %rdi
callq 0x9714
jmp 0x86b0
movq %rax, (%rsp)
leaq 0x10(%rsp), %rdi
callq 0x9786
jmp 0x86c0
movq %rax, (%rsp)
leaq 0x128(%rsp), %rdi
callq 0x7a34
jmp 0x86d3
movq %rax, (%rsp)
leaq 0x270(%rsp), %rdi
callq 0xa202
leaq 0x30(%rsp), %rdi
callq 0x75c8
leaq 0xa8(%rsp), %rdi
callq 0x97a8
leaq 0x50(%rsp), %rdi
callq 0x75c8
leaq 0x70(%rsp), %rdi
callq 0x75c8
leaq 0x1c8(%rsp), %rdi
callq 0x97a8
leaq 0xe0(%rsp), %rdi
callq 0x75c8
leaq 0x238(%rbx), %r13
leaq 0x258(%rbx), %rdi
callq 0x7926
movq %r13, %rdi
callq 0x75c8
movq %r15, %rdi
callq 0x7420
addq $0x8, %rbx
movq %r14, %rdi
callq 0x78e2
movq %rbx, %rdi
callq 0x7904
movq (%rsp), %rdi
callq 0x7510
movq %rax, (%rsp)
jmp 0x86e0
movq %rax, (%rsp)
jmp 0x86ea
movq %rax, (%rsp)
jmp 0x86f7
movq %rax, (%rsp)
jmp 0x8701
movq %rax, (%rsp)
jmp 0x870b
movq %rax, (%rsp)
jmp 0x8718
movq %rax, (%rsp)
jmp 0x8725
movq %rax, (%rsp)
jmp 0x8748