// File: /workspace/github_cpp_makefile_star2_O1/silverneko[P]Lambda-calculus-interpreter/src/ExpressionParser.cpp
// Function: tokenParser(Token&)
Parser tokenParser(Token& token){
  auto f = [&token](Token::Type t){
    return [&token, t](const string& str){ token = Token(t, str);};
  };
  auto g = [&token](const string& str){
    if(str == "let") token = Token(Token::Keyword, "let");
    else if(str == "in") token = Token(Token::Keyword, "in");
    else token = Token(Token::Identifier, str);
  };
  return (comment[f(Token::Undefined)]
      | integer[f(Token::Constant)]
      | charLiteral[f(Token::Constant)]
      | identifier[g]
      | lambda[f(Token::Lambda)]
      | leftBracket[f(Token::LeftBracket)]
      | rightBracket[f(Token::RightBracket)]
      | panic[f(Token::Undefined)]
      );
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
leaq 0x2a0(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movq %rsi, (%rdx)
movl $0x0, 0x8(%rdx)
leaq 0x22e3(%rip), %r15      # 0xd822
movq %r15, 0x18(%rdx)
leaq 0x2344(%rip), %r12      # 0xd88e
movq %r12, 0x10(%rdx)
leaq 0x9e2b(%rip), %rsi      # 0x15380
leaq 0xe0(%rsp), %rdi
callq 0xa3cc
leaq 0x280(%rsp), %rdx
xorps %xmm0, %xmm0
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movq %r14, (%rdx)
movl $0x1, 0x8(%rdx)
movq %r15, 0x18(%rdx)
movq %r12, 0x10(%rdx)
leaq 0x9d33(%rip), %rsi      # 0x152c0
leaq 0xc0(%rsp), %rdi
callq 0xa3cc
leaq 0x100(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0xa693
xorps %xmm0, %xmm0
leaq 0x260(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movq %r14, (%rdx)
movl $0x1, 0x8(%rdx)
movq %r15, 0x18(%rdx)
movq %r12, 0x10(%rdx)
leaq 0x9cfe(%rip), %rsi      # 0x152e0
leaq 0xa0(%rsp), %rdi
callq 0xa3cc
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
callq 0xa693
xorps %xmm0, %xmm0
leaq 0x240(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movq %r14, (%rdx)
leaq 0x228e(%rip), %rax      # 0xd8b6
movq %rax, 0x18(%rdx)
leaq 0x23df(%rip), %rax      # 0xda12
movq %rax, 0x10(%rdx)
leaq 0x9cc2(%rip), %rsi      # 0x15300
leaq 0x80(%rsp), %rdi
callq 0xa3cc
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0xa693
xorps %xmm0, %xmm0
leaq 0x220(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movq %r14, (%rdx)
movl $0x4, 0x8(%rdx)
movq %r15, 0x18(%rdx)
movq %r12, 0x10(%rdx)
leaq 0x9c8d(%rip), %rsi      # 0x15320
leaq 0x60(%rsp), %rdi
callq 0xa3cc
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0xa693
xorps %xmm0, %xmm0
leaq 0x200(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movq %r14, (%rdx)
movl $0x5, 0x8(%rdx)
movq %r15, 0x18(%rdx)
movq %r12, 0x10(%rdx)
leaq 0x9c5e(%rip), %rsi      # 0x15340
leaq 0x40(%rsp), %rdi
callq 0xa3cc
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0xa693
xorps %xmm0, %xmm0
leaq 0x1e0(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movq %r14, (%rdx)
movl $0x6, 0x8(%rdx)
movq %r15, 0x18(%rdx)
movq %r12, 0x10(%rdx)
leaq 0x9c2f(%rip), %rsi      # 0x15360
leaq 0x20(%rsp), %rdi
callq 0xa3cc
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0xa693
xorps %xmm0, %xmm0
leaq 0x1c0(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movq %r14, (%rdx)
movl $0x0, 0x8(%rdx)
movq %r15, 0x18(%rdx)
movq %r12, 0x10(%rdx)
leaq 0x9c20(%rip), %rsi      # 0x153a0
movq %rsp, %rdi
callq 0xa3cc
leaq 0x1a0(%rsp), %rsi
movq %rsp, %rdx
movq %rbx, %rdi
callq 0xa693
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0xb7b2
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x1d0(%rsp), %rax
testq %rax, %rax
je 0xb7d1
leaq 0x1c0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x1b0(%rsp), %rax
testq %rax, %rax
je 0xb7f0
leaq 0x1a0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x30(%rsp), %rax
testq %rax, %rax
je 0xb809
leaq 0x20(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x1f0(%rsp), %rax
testq %rax, %rax
je 0xb828
leaq 0x1e0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x190(%rsp), %rax
testq %rax, %rax
je 0xb847
leaq 0x180(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x50(%rsp), %rax
testq %rax, %rax
je 0xb860
leaq 0x40(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x210(%rsp), %rax
testq %rax, %rax
je 0xb87f
leaq 0x200(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x170(%rsp), %rax
testq %rax, %rax
je 0xb89e
leaq 0x160(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0xb8b7
leaq 0x60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x230(%rsp), %rax
testq %rax, %rax
je 0xb8d6
leaq 0x220(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x150(%rsp), %rax
testq %rax, %rax
je 0xb8f5
leaq 0x140(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x90(%rsp), %rax
testq %rax, %rax
je 0xb914
leaq 0x80(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x250(%rsp), %rax
testq %rax, %rax
je 0xb933
leaq 0x240(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x130(%rsp), %rax
testq %rax, %rax
je 0xb952
leaq 0x120(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xb0(%rsp), %rax
testq %rax, %rax
je 0xb971
leaq 0xa0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x270(%rsp), %rax
testq %rax, %rax
je 0xb990
leaq 0x260(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x110(%rsp), %rax
testq %rax, %rax
je 0xb9af
leaq 0x100(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xd0(%rsp), %rax
testq %rax, %rax
je 0xb9ce
leaq 0xc0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x290(%rsp), %rax
testq %rax, %rax
je 0xb9ed
leaq 0x280(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xf0(%rsp), %rax
testq %rax, %rax
je 0xba0c
leaq 0xe0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x2b0(%rsp), %rax
testq %rax, %rax
je 0xba2b
leaq 0x2a0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq %rbx, %rax
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
jmp 0xbdec
movq %rax, %rbx
movq 0x10(%rsp), %rax
testq %rax, %rax
je 0xbacf
movq %rsp, %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbacf
jmp 0xbdec
movq %rax, %rbx
movq 0x1d0(%rsp), %rax
testq %rax, %rax
je 0xbaee
leaq 0x1c0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x1b0(%rsp), %rax
testq %rax, %rax
je 0xbb1c
leaq 0x1a0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbb1c
jmp 0xbdec
jmp 0xbdec
movq %rax, %rbx
movq 0x30(%rsp), %rax
testq %rax, %rax
je 0xbb3f
leaq 0x20(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbb3f
jmp 0xbdec
movq %rax, %rbx
movq 0x1f0(%rsp), %rax
testq %rax, %rax
je 0xbb5e
leaq 0x1e0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x190(%rsp), %rax
testq %rax, %rax
je 0xbb8c
leaq 0x180(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbb8c
jmp 0xbdec
jmp 0xbdec
movq %rax, %rbx
movq 0x50(%rsp), %rax
testq %rax, %rax
je 0xbbaf
leaq 0x40(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbbaf
jmp 0xbdec
movq %rax, %rbx
movq 0x210(%rsp), %rax
testq %rax, %rax
je 0xbbce
leaq 0x200(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x170(%rsp), %rax
testq %rax, %rax
je 0xbbfc
leaq 0x160(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbbfc
jmp 0xbdec
jmp 0xbdec
movq %rax, %rbx
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0xbc1f
leaq 0x60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbc1f
jmp 0xbdec
movq %rax, %rbx
movq 0x230(%rsp), %rax
testq %rax, %rax
je 0xbc3e
leaq 0x220(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x150(%rsp), %rax
testq %rax, %rax
je 0xbc6c
leaq 0x140(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbc6c
jmp 0xbdec
jmp 0xbdec
movq %rax, %rbx
movq 0x90(%rsp), %rax
testq %rax, %rax
je 0xbc95
leaq 0x80(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbc95
jmp 0xbdec
movq %rax, %rbx
movq 0x250(%rsp), %rax
testq %rax, %rax
je 0xbcb4
leaq 0x240(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x130(%rsp), %rax
testq %rax, %rax
je 0xbce2
leaq 0x120(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbce2
jmp 0xbdec
jmp 0xbdec
movq %rax, %rbx
movq 0xb0(%rsp), %rax
testq %rax, %rax
je 0xbd0b
leaq 0xa0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbd0b
jmp 0xbdec
movq %rax, %rbx
movq 0x270(%rsp), %rax
testq %rax, %rax
je 0xbd2a
leaq 0x260(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x110(%rsp), %rax
testq %rax, %rax
je 0xbd58
leaq 0x100(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbd58
jmp 0xbdec
jmp 0xbdec
movq %rax, %rbx
movq 0xd0(%rsp), %rax
testq %rax, %rax
je 0xbd7e
leaq 0xc0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbd7e
jmp 0xbdec
movq %rax, %rbx
movq 0x290(%rsp), %rax
testq %rax, %rax
je 0xbd9d
leaq 0x280(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0xf0(%rsp), %rax
testq %rax, %rax
je 0xbdc5
leaq 0xe0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xbdc5
jmp 0xbdec
jmp 0xbdec
movq %rax, %rbx
movq 0x2b0(%rsp), %rax
testq %rax, %rax
je 0xbde4
leaq 0x2a0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq %rbx, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x9d49