// File: /workspace/github_c_makefile_star2_O3/janet-lang[P]janet/src/core/cfuns.c
// Function: do_get
static JanetSlot do_get(JanetFopts opts, JanetSlot *args) {
    if (janet_v_count(args) == 3) {
        JanetCompiler *c = opts.compiler;
        JanetSlot t = janetc_gettarget(opts);
        int target_is_default = janetc_sequal(t, args[2]);
        JanetSlot dflt_slot = args[2];
        if (target_is_default) {
            dflt_slot = janetc_farslot(c);
            janetc_copy(c, dflt_slot, t);
        }
        janetc_emit_sss(c, JOP_GET, t, args[0], args[1], 1);
        int32_t label = janetc_emit_si(c, JOP_JUMP_IF_NOT_NIL, t, 0, 0);
        janetc_copy(c, t, dflt_slot);
        if (target_is_default) janetc_freeslot(c, dflt_slot);
        int32_t current = janet_v_count(c->buffer);
        c->buffer[label] |= (current - label) << 16;
        return t;
    } else {
        return opreduce(opts, args, JOP_GET, 0, janet_wrap_nil(), janet_wrap_nil());
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x10(%rbp), %r13
testq %rsi, %rsi
je 0x1b14d
cmpl $0x3, -0x4(%r15)
jne 0x1b14d
movq (%r13), %r14
movq 0x20(%r13), %rax
movq %rax, 0x20(%rsp)
movups (%r13), %xmm0
movups 0x10(%r13), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %rbx, %rdi
callq 0x1c64f
movq 0x40(%r15), %rax
movq %rax, 0x28(%rsp)
movups 0x30(%r15), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0x10(%rbx), %rax
movq %rax, 0x10(%rsp)
movups (%rbx), %xmm0
movups %xmm0, (%rsp)
callq 0x217b2
movl %eax, %r12d
movq 0x40(%r15), %rax
movq %rax, -0x30(%rbp)
movups 0x30(%r15), %xmm0
movaps %xmm0, -0x40(%rbp)
testl %r12d, %r12d
je 0x1b07a
leaq -0x40(%rbp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x1be05
movq 0x10(%rbx), %rax
movq %rax, 0x28(%rsp)
movups (%rbx), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0x10(%r13), %rax
movq %rax, 0x10(%rsp)
movaps (%r13), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x217fb
movq 0x28(%r15), %rax
movq %rax, 0x40(%rsp)
movups 0x18(%r15), %xmm0
movups %xmm0, 0x30(%rsp)
movq 0x10(%r15), %rax
movq %rax, 0x28(%rsp)
movups (%r15), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0x10(%rbx), %rax
movq %rax, 0x10(%rsp)
movups (%rbx), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movl $0x3b, %esi
movl $0x1, %edx
callq 0x22063
movq 0x10(%rbx), %rax
movq %rax, 0x10(%rsp)
movups (%rbx), %xmm0
movups %xmm0, (%rsp)
xorl %r13d, %r13d
movq %r14, %rdi
movl $0x20, %esi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x21d94
movl %eax, %r15d
movq -0x30(%rbp), %rax
movq %rax, 0x28(%rsp)
movaps -0x40(%rbp), %xmm0
movups %xmm0, 0x18(%rsp)
movq 0x10(%rbx), %rax
movq %rax, 0x10(%rsp)
movups (%rbx), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x217fb
testl %r12d, %r12d
je 0x1b130
movq -0x30(%rbp), %rax
movq %rax, 0x10(%rsp)
movaps -0x40(%rbp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x1bd19
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x1b13d
movl -0x4(%rax), %r13d
subl %r15d, %r13d
shll $0x10, %r13d
movslq %r15d, %rcx
orl %r13d, (%rax,%rcx,4)
jmp 0x1b19e
movabsq $-0x77fffffffffff, %r14 # imm = 0xFFF8800000000001
movq %r14, %rdi
callq 0x4ece6
movq %rax, %r12
movq %r14, %rdi
callq 0x4ece6
movq 0x20(%r13), %rcx
movq %rcx, 0x20(%rsp)
movups (%r13), %xmm0
movups 0x10(%r13), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %rbx, %rdi
movq %r15, %rsi
movl $0x3b, %edx
xorl %ecx, %ecx
movq %r12, %r8
movq %rax, %r9
callq 0x1b532
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq