// File: /workspace/github_c_makefile_star2_O1/generot[P]VM-0/src/lang/vc.cc
// Function: value(lexer&)
void value(lexer& lx) {
    string val = lx.accept();

    if(val == "(") {
        expr(lx);

        lx.expect(")");
        lx.accept();

        return;
    }

    if(is_numeric(val)) {
        double numval = atof(val.c_str());

        instr in = { INST_VAL, OPC_PUSH, SC_INVALID };
        in.val = numval;

        bytecode.push_back(in);
    } else {
        symbol var = symbol_table[val];
        bytecode.push_back({ INST_ADDR, OPC_PUSH, SC_INVALID, (size_s)var.addr });
        bytecode.push_back({ INST_NOARGS, OPC_DEREF, SC_INVALID });
    }
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xd8, %rsp
movq %rdi, %rbx
leaq 0x20(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x4c32
leaq 0x27b3(%rip), %rsi      # 0x18131
movq %r14, %rdi
callq 0x40a0
testl %eax, %eax
je 0x15a2d
leaq 0x88(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0x585e
leaq 0x78(%rsp), %rdi
callq 0x4fc5
movl %eax, %ebx
movq 0x78(%rsp), %rdi
cmpq %r14, %rdi
je 0x159d7
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x42d0
testb %bl, %bl
je 0x15ac0
movq 0x20(%rsp), %rdi
callq 0x43b0
movups 0x27a0(%rip), %xmm1     # 0x18190
movaps %xmm1, 0x40(%rsp)
movsd %xmm0, 0x50(%rsp)
movq 0xbd5e(%rip), %rsi      # 0x21760
cmpq 0xbd5f(%rip), %rsi      # 0x21768
je 0x15b47
movq 0x50(%rsp), %rax
movq %rax, 0x10(%rsi)
movaps 0x40(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x18, 0xbd38(%rip)     # 0x21760
jmp 0x15be1
movq %rbx, %rdi
callq 0x14ecf
leaq 0xa8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x201f(%rip), %rsi      # 0x17a67
leaq 0x2019(%rip), %rdx      # 0x17a68
leaq 0x98(%rsp), %rdi
callq 0x59ce
leaq 0x98(%rsp), %rsi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x4ab4
movq 0x98(%rsp), %rdi
cmpq %r14, %rdi
je 0x15a8e
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0xb8(%rsp), %rdi
movq %rbx, %rsi
callq 0x4c32
leaq 0xc8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15be1
movq 0xc8(%rsp), %rsi
jmp 0x15bd9
leaq 0xbc61(%rip), %rdi      # 0x21728
leaq 0x20(%rsp), %rsi
callq 0x160b6
movq %rax, %rbx
movl (%rax), %eax
leaq 0x48(%rsp), %rdi
movl %eax, -0x8(%rdi)
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdx
addq %rsi, %rdx
callq 0x585e
movq 0x28(%rbx), %rax
movq %rax, 0x68(%rsp)
movabsq $0x1000000001, %rcx     # imm = 0x1000000001
movq %rcx, 0x8(%rsp)
movl $0x3, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movq 0xbc3d(%rip), %rsi      # 0x21760
cmpq 0xbc3e(%rip), %rsi      # 0x21768
je 0x15b5d
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rsi)
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x18, 0xbc1b(%rip)     # 0x21760
jmp 0x15b6e
leaq 0xbc0a(%rip), %rdi      # 0x21758
leaq 0x40(%rsp), %rdx
callq 0x167d8
jmp 0x15be1
leaq 0xbbf4(%rip), %rdi      # 0x21758
leaq 0x8(%rsp), %rdx
callq 0x16660
movabsq $0x1200000002, %rax     # imm = 0x1200000002
movq %rax, 0x8(%rsp)
movl $0x3, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq 0xbbcb(%rip), %rsi      # 0x21760
cmpq 0xbbcc(%rip), %rsi      # 0x21768
je 0x15bb9
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rsi)
movups 0x8(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x18, 0xbba9(%rip)     # 0x21760
jmp 0x15bca
leaq 0xbb98(%rip), %rdi      # 0x21758
leaq 0x8(%rsp), %rdx
callq 0x16660
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x15be1
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15bfc
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42d0
addq $0xd8, %rsp
popq %rbx
popq %r14
retq
jmp 0x15c09
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x15c5f
movq 0x58(%rsp), %rsi
jmp 0x15c52
jmp 0x15c5c
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r14, %rdi
je 0x15c5f
movq 0xa8(%rsp), %rsi
jmp 0x15c52
jmp 0x15c5c
jmp 0x15c5c
movq %rax, %rbx
movq 0x78(%rsp), %rdi
cmpq %r14, %rdi
je 0x15c5f
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x15c5f
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x15c7a
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x42d0
movq %rbx, %rdi
callq 0x44e0