// File: /workspace/github_c_makefile_star2_O2/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 0x19609
cmpl $0x3, -0x4(%r15)
jne 0x19609
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 0x1aa9e
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 0x1f846
movl %eax, %r12d
movq 0x40(%r15), %rax
movq %rax, -0x30(%rbp)
movups 0x30(%r15), %xmm0
movaps %xmm0, -0x40(%rbp)
testl %r12d, %r12d
je 0x1953c
leaq -0x40(%rbp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x1a259
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 0x1f88f
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)
pushq $0x3b
popq %rsi
pushq $0x1
popq %rdx
movq %r14, %rdi
callq 0x2010f
movq 0x10(%rbx), %rax
movq %rax, 0x10(%rsp)
movups (%rbx), %xmm0
movups %xmm0, (%rsp)
pushq $0x20
popq %rsi
xorl %r13d, %r13d
movq %r14, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1fe75
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 0x1f88f
testl %r12d, %r12d
je 0x195ec
movq -0x30(%rbp), %rax
movq %rax, 0x10(%rsp)
movaps -0x40(%rbp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x1a177
movq 0x8(%r14), %rax
testq %rax, %rax
je 0x195f9
movl -0x4(%rax), %r13d
subl %r15d, %r13d
shll $0x10, %r13d
movslq %r15d, %rcx
orl %r13d, (%rax,%rcx,4)
jmp 0x19658
movabsq $-0x77fffffffffff, %r14 # imm = 0xFFF8800000000001
movq %r14, %rdi
callq 0x4b313
movq %rax, %r12
movq %r14, %rdi
callq 0x4b313
movq 0x20(%r13), %rcx
movq %rcx, 0x20(%rsp)
movups (%r13), %xmm0
movups 0x10(%r13), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
pushq $0x3b
popq %rdx
movq %rbx, %rdi
movq %r15, %rsi
xorl %ecx, %ecx
movq %r12, %r8
movq %rax, %r9
callq 0x199b5
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq