// File: /workspace/github_cpp_makefile_star2_O1/yhirose[P]fizzbuzzlang/fzbz.cc
// Function: eval(peg::AstBase<peg::EmptyType> const&, std::shared_ptr<Environment>)
Value eval(const Ast& ast, shared_ptr<Environment> env) {
  switch (ast.tag) {
    case "TERNARY"_:
      return eval_ternary(ast, env);
    case "CONDITION"_:
      return eval_condition(ast, env);
    case "MULTIPLICATIVE"_:
      return eval_multiplicative(ast, env);
    case "CALL"_:
      return eval_call(ast, env);
    case "FOR"_:
      return eval_for(ast, env);
    case "Identifier"_:
      return Value(env->get_value(ast.token));
    case "String"_:
      return Value(ast.token);
    case "Number"_:
      return Value(ast.token_to_number<long>());
    default:
      return Value();
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x60, %rsp
movq %rdi, %rbx
movl 0xa0(%rsi), %eax
cmpl $0x25d361, %eax         # imm = 0x25D361
jg 0x9c75
cmpl $0xc31de054, %eax       # imm = 0xC31DE054
jg 0x9cc6
cmpl $0xa93e7fa7, %eax       # imm = 0xA93E7FA7
je 0x9d52
cmpl $0xbd90f163, %eax       # imm = 0xBD90F163
jne 0x9ddc
movq 0xb8(%rsi), %rdi
movq 0xb0(%rsi), %rsi
addq %rdi, %rsi
leaq -0x68(%rbp), %r14
movq $0x0, (%r14)
movq %r14, %rdx
movl $0xa, %ecx
callq 0x430db
movq (%r14), %rax
movq %rax, (%rbx)
movb $0x2, 0x20(%rbx)
jmp 0x9e5f
cmpl $0x36a5c242, %eax       # imm = 0x36A5C242
jg 0x9d0c
cmpl $0x25d362, %eax         # imm = 0x25D362
je 0x9d7b
cmpl $0xb538ed3, %eax        # imm = 0xB538ED3
jne 0x9ddc
movq (%rdx), %rax
movq %rax, -0x50(%rbp)
movq 0x8(%rdx), %rax
movq %rax, -0x48(%rbp)
testq %rax, %rax
je 0x9e19
movq 0x562bb(%rip), %rcx     # 0x5ff70
cmpb $0x0, (%rcx)
je 0x9e15
incl 0x8(%rax)
jmp 0x9e19
cmpl $0xc31de055, %eax       # imm = 0xC31DE055
je 0x9da0
cmpl $0x1323b, %eax          # imm = 0x1323B
jne 0x9ddc
movq (%rdx), %rax
movq %rax, -0x20(%rbp)
movq 0x8(%rdx), %rax
movq %rax, -0x18(%rbp)
testq %rax, %rax
je 0x9e2f
movq 0x56275(%rip), %rcx     # 0x5ff70
cmpb $0x0, (%rcx)
je 0x9e2b
incl 0x8(%rax)
jmp 0x9e2f
cmpl $0x36a5c243, %eax       # imm = 0x36A5C243
je 0x9db3
cmpl $0x63cc1e70, %eax       # imm = 0x63CC1E70
jne 0x9ddc
movq (%rdx), %rax
movq %rax, -0x40(%rbp)
movq 0x8(%rdx), %rax
movq %rax, -0x38(%rbp)
testq %rax, %rax
je 0x9e45
movq 0x5622f(%rip), %rcx     # 0x5ff70
cmpb $0x0, (%rcx)
je 0x9e41
incl 0x8(%rax)
jmp 0x9e45
movq (%rdx), %rax
movq %rax, -0x60(%rbp)
movq 0x8(%rdx), %rax
movq %rax, -0x58(%rbp)
testq %rax, %rax
je 0x9ded
movq 0x561ff(%rip), %rcx     # 0x5ff70
cmpb $0x0, (%rcx)
je 0x9de9
incl 0x8(%rax)
jmp 0x9ded
movq (%rdx), %rax
movq %rax, -0x30(%rbp)
movq 0x8(%rdx), %rax
movq %rax, -0x28(%rbp)
testq %rax, %rax
je 0x9e03
movq 0x561da(%rip), %rcx     # 0x5ff70
cmpb $0x0, (%rcx)
je 0x9dff
incl 0x8(%rax)
jmp 0x9e03
movups 0xb0(%rsi), %xmm0
movups %xmm0, (%rbx)
movb $0x3, 0x20(%rbx)
jmp 0x9e5f
movq (%rdx), %rdi
movq 0xb0(%rsi), %rax
movq 0xb8(%rsi), %rdx
movq %rax, %rsi
callq 0xee58
movq %rbx, %rdi
movq %rax, %rsi
callq 0x3bbf4
jmp 0x9e5f
movq $0x0, (%rbx)
movb $0x0, 0x20(%rbx)
jmp 0x9e5f
lock
incl 0x8(%rax)
leaq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x99f2
movq -0x58(%rbp), %rdi
jmp 0x9e55
lock
incl 0x8(%rax)
leaq -0x30(%rbp), %rdx
movq %rbx, %rdi
callq 0xa1d7
movq -0x28(%rbp), %rdi
jmp 0x9e55
lock
incl 0x8(%rax)
leaq -0x50(%rbp), %rdx
movq %rbx, %rdi
callq 0x9ea8
movq -0x48(%rbp), %rdi
jmp 0x9e55
lock
incl 0x8(%rax)
leaq -0x20(%rbp), %rdx
movq %rbx, %rdi
callq 0xa307
movq -0x18(%rbp), %rdi
jmp 0x9e55
lock
incl 0x8(%rax)
leaq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x9ffc
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x9e5f
callq 0x13612
movq %rbx, %rax
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
movq -0x38(%rbp), %rdi
jmp 0x9e96
movq %rax, %rbx
movq -0x18(%rbp), %rdi
jmp 0x9e96
movq %rax, %rbx
movq -0x48(%rbp), %rdi
jmp 0x9e96
movq %rax, %rbx
movq -0x28(%rbp), %rdi
jmp 0x9e96
movq %rax, %rbx
movq -0x58(%rbp), %rdi
testq %rdi, %rdi
je 0x9ea0
callq 0x13612
movq %rbx, %rdi
callq 0x9420