// File: /workspace/github_c_makefile_star2_O1/masyagin1998[P]GCI/src/bytecode-generator/bytecode-generator.c
// Function: left_unary_expr_ast_bytecode_generate
static enum BYTECODE_GENERATOR_CODES left_unary_expr_ast_bytecode_generate(bytecode_generator_type_t bc_gen, const struct LEFT_UNARY_EXPR_AST*ast)
{

    enum BYTECODE_GENERATOR_CODES r = primary_expr_ast_bytecode_generate(bc_gen, ast->expr);
    if (r != BYTECODE_GENERATOR_OK) {
        return r;
    }
    if (ast->op != AST_LEFT_UNARY_OP_PLUS) {
        if (ast->op == AST_LEFT_UNARY_OP_MINUS) {
            PUSH_BACK(bc_gen->bc->op_codes, BC_OP_NEGATE);
        }
    }

    return BYTECODE_GENERATOR_OK;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x90, %rsp
movq %rdi, %rbx
movq 0x8(%rsi), %rax
movl 0x8(%rax), %edi
cmpq $0x5, %rdi
ja 0xcf97
movq %rsi, %r14
xorl %ebp, %ebp
leaq 0x375a(%rip), %rcx      # 0x102e0
movslq (%rcx,%rdi,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
movq (%rax), %r15
movq (%r15), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xcfba
movl %eax, %ebp
testl %eax, %eax
jne 0xcf10
movq 0x8(%rbx), %r12
movq 0x10(%r12), %rsi
cmpq %rsi, 0x8(%r12)
jne 0xce13
testq %rsi, %rsi
je 0xcdf3
leaq (%rsi,%rsi), %rax
movq %rax, 0x10(%r12)
movq (%r12), %rdi
shlq $0x4, %rsi
callq 0x1160
movq 0x8(%rbx), %rdi
movq %rax, (%rdi)
testq %rax, %rax
jne 0xce13
callq 0x3532
movq (%rax), %rax
movq (%rax), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
movq %rax, 0x30(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x8(%rbx), %rdi
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movaps 0x30(%rsp), %xmm0
movaps 0x40(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
callq 0xc2cf
movl %eax, %r15d
movq 0x8(%rbx), %r12
movq 0x10(%r12), %rsi
cmpq %rsi, 0x8(%r12)
jne 0xcd2a
testq %rsi, %rsi
je 0xcd0a
leaq (%rsi,%rsi), %rax
movq %rax, 0x10(%r12)
movq (%r12), %rdi
shlq $0x4, %rsi
callq 0x1160
movq 0x8(%rbx), %rdi
movq %rax, (%rdi)
testq %rax, %rax
jne 0xcd2a
callq 0x33f7
movq (%rax), %rax
movq (%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xcfba
movl %eax, %ebp
testl %eax, %eax
jne 0xcf10
movq 0x8(%rbx), %r15
movq 0x10(%r15), %rsi
cmpq %rsi, 0x8(%r15)
jne 0xcdd7
testq %rsi, %rsi
je 0xcdb9
leaq (%rsi,%rsi), %rax
movq %rax, 0x10(%r15)
movq (%r15), %rdi
shlq $0x4, %rsi
callq 0x1160
movq 0x8(%rbx), %rdi
movq %rax, (%rdi)
testq %rax, %rax
jne 0xcdd7
callq 0x34c9
movq (%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xcfba
jmp 0xcd03
movq (%rax), %rsi
movq %rbx, %rdi
callq 0xc1f9
movl %eax, %ebp
jmp 0xcf10
movq $0x1, 0x10(%r12)
movl $0x8, %edi
callq 0x1130
movq %rax, (%r12)
testq %rax, %rax
je 0xcfa1
movq 0x8(%rbx), %r12
movq (%r12), %rdi
movq 0x8(%r12), %rax
movq $0x1, (%rdi,%rax,8)
movq 0x8(%r12), %rax
movq 0x10(%r12), %rsi
incq %rax
movq %rax, 0x8(%r12)
cmpq %rsi, %rax
jne 0xcd9e
testq %rsi, %rsi
je 0xcd7e
leaq (%rsi,%rsi), %rax
movq %rax, 0x10(%r12)
shlq $0x4, %rsi
callq 0x1160
movq 0x8(%rbx), %rdi
movq %rax, (%rdi)
testq %rax, %rax
jne 0xcd9e
callq 0x342f
movq $0x1, 0x10(%r12)
movl $0x8, %edi
callq 0x1130
movq %rax, (%r12)
testq %rax, %rax
je 0xcfa6
movslq %r15d, %rax
movq 0x8(%rbx), %rcx
movq (%rcx), %rdx
movq 0x8(%rcx), %rsi
movq %rax, (%rdx,%rsi,8)
incq 0x8(%rcx)
jmp 0xcf10
movq $0x1, 0x10(%r15)
movl $0x8, %edi
callq 0x1130
movq %rax, (%r15)
testq %rax, %rax
je 0xcfab
movq 0x8(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
movq $0x1b, (%rcx,%rdx,8)
incq 0x8(%rax)
jmp 0xcf0e
movq $0x1, 0x10(%r12)
movl $0x8, %edi
callq 0x1130
movq %rax, (%r12)
testq %rax, %rax
je 0xcfb0
movq 0x8(%rbx), %r12
movq (%r12), %rax
movq 0x8(%r12), %rcx
movq $0x1a, (%rax,%rcx,8)
incq 0x8(%r12)
movq 0x8(%r15), %rsi
xorps %xmm0, %xmm0
leaq 0x60(%rsp), %r15
movaps %xmm0, 0x10(%r15)
movaps %xmm0, (%r15)
movq $0x0, 0x20(%r15)
movl $0x20, %edx
movq %r15, %rdi
callq 0x1040
movl $0x2, 0x20(%r15)
movaps (%r15), %xmm0
movaps 0x10(%r15), %xmm1
movaps %xmm0, 0x30(%rsp)
movaps %xmm1, 0x40(%rsp)
movq 0x20(%r15), %rax
movq %rax, 0x50(%rsp)
movq 0x10(%r12), %rsi
cmpq %rsi, 0x8(%r12)
jne 0xced3
testq %rsi, %rsi
je 0xceb3
leaq (%rsi,%rsi), %rax
movq %rax, 0x10(%r12)
movq (%r12), %rdi
shlq $0x4, %rsi
callq 0x1160
movq 0x8(%rbx), %rdi
movq %rax, (%rdi)
testq %rax, %rax
jne 0xced3
callq 0x356a
movq $0x1, 0x10(%r12)
movl $0x8, %edi
callq 0x1130
movq %rax, (%r12)
testq %rax, %rax
je 0xcfb5
movq 0x8(%rbx), %rdi
movq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movaps 0x30(%rsp), %xmm0
movaps 0x40(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
callq 0xc2cf
cltq
movq 0x8(%rbx), %rcx
movq (%rcx), %rdx
movq 0x8(%rcx), %rsi
movq %rax, (%rdx,%rsi,8)
incq 0x8(%rcx)
xorl %ebp, %ebp
testl %ebp, %ebp
jne 0xcf85
xorl %ebp, %ebp
cmpl $0x1, (%r14)
jne 0xcf85
movq 0x8(%rbx), %r14
movq 0x10(%r14), %rsi
cmpq %rsi, 0x8(%r14)
jne 0xcf6e
testq %rsi, %rsi
je 0xcf54
leaq (%rsi,%rsi), %rax
movq %rax, 0x10(%r14)
movq (%r14), %rdi
shlq $0x4, %rsi
callq 0x1160
movq 0x8(%rbx), %rdi
movq %rax, (%rdi)
testq %rax, %rax
jne 0xcf6e
callq 0x35a2
movq $0x1, 0x10(%r14)
movl $0x8, %edi
callq 0x1130
movq %rax, (%r14)
testq %rax, %rax
je 0xcf9c
movq 0x8(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
movq $0x19, (%rcx,%rdx,8)
incq 0x8(%rax)
movl %ebp, %eax
addq $0x90, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0x366d
callq 0x35da
callq 0x3498
callq 0x3467
callq 0x3501
callq 0x363c
callq 0x360b