// File: /workspace/github_c_makefile_star2_O0/atomlang[P]atomlang/src/pk_core.c
// Function: pkGetArgInst
bool pkGetArgInst(PKVM* vm, int arg, uint32_t id, void** value) {
  CHECK_GET_ARG_API_ERRORS();

  Var val = ARG(arg);
  bool is_native_instance = false;

  if (IS_OBJ_TYPE(val, OBJ_INST)) {
    Instance* inst = ((Instance*)AS_OBJ(val));
    if (inst->is_native && inst->native_id == id) {
      *value = inst->native;
      is_native_instance = true;
    }
  }

  if (!is_native_instance) {
    const char* ty_name = "$(?)";
    if (vm->config.inst_name_fn != NULL) {
      ty_name = vm->config.inst_name_fn(id);
    }

    ERR_INVALID_ARG_TYPE(ty_name);
    return false;
  }

  return true;
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movl %esi, 0x44(%rsp)
movl %edx, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
jmp 0x1bbf8
movq 0x48(%rsp), %rax
cmpq $0x0, 0x5f0(%rax)
jne 0x1bc41
movq 0x173ea(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0xe538(%rip), %rsi      # 0x2a150
leaq 0xea9d(%rip), %rdx      # 0x2a6bc
leaq 0xffd3(%rip), %rcx      # 0x2bbf9
leaq 0xfe69(%rip), %r8       # 0x2ba96
movl $0xde, %r9d
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x1bc43
cmpl $0x0, 0x44(%rsp)
je 0x1bcc3
jmp 0x1bc4c
cmpl $0x0, 0x44(%rsp)
jle 0x1bc85
movl 0x44(%rsp), %eax
movq 0x48(%rsp), %rcx
movq 0x5f0(%rcx), %rcx
movq 0x30(%rcx), %rcx
movq 0x48(%rsp), %rdx
movq 0x5f0(%rdx), %rdx
movq 0x38(%rdx), %rdx
subq %rdx, %rcx
sarq $0x3, %rcx
subl $0x1, %ecx
cmpl %ecx, %eax
jle 0x1bcbf
movq 0x1736c(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0xe4ba(%rip), %rsi      # 0x2a150
leaq 0xfec9(%rip), %rdx      # 0x2bb66
leaq 0xff55(%rip), %rcx      # 0x2bbf9
leaq 0xfdeb(%rip), %r8       # 0x2ba96
movl $0xde, %r9d
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x1bcc1
jmp 0x1bcc3
jmp 0x1bcc5
cmpq $0x0, 0x38(%rsp)
jne 0x1bd07
movq 0x17324(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0xe472(%rip), %rsi      # 0x2a150
leaq 0xfea6(%rip), %rdx      # 0x2bb8b
leaq 0xff0d(%rip), %rcx      # 0x2bbf9
leaq 0xfda3(%rip), %r8       # 0x2ba96
movl $0xde, %r9d
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x1bd09
jmp 0x1bd0b
movq 0x48(%rsp), %rax
movq 0x5f0(%rax), %rax
movq 0x38(%rax), %rax
movslq 0x44(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x30(%rsp)
movb $0x0, 0x2f(%rsp)
movabsq $-0x4000000000000, %rax # imm = 0xFFFC000000000000
andq 0x30(%rsp), %rax
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
cmpq %rcx, %rax
jne 0x1bda5
movabsq $0xffffffffffff, %rax   # imm = 0xFFFFFFFFFFFF
andq 0x30(%rsp), %rax
cmpl $0x8, (%rax)
jne 0x1bda5
movabsq $0xffffffffffff, %rax   # imm = 0xFFFFFFFFFFFF
andq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
testb $0x1, 0x18(%rax)
je 0x1bda3
movq 0x20(%rsp), %rax
movl 0x1c(%rax), %eax
cmpl 0x40(%rsp), %eax
jne 0x1bda3
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x38(%rsp), %rax
movq %rcx, (%rax)
movb $0x1, 0x2f(%rsp)
jmp 0x1bda5
testb $0x1, 0x2f(%rsp)
jne 0x1bf15
leaq 0xe4fe(%rip), %rax      # 0x2a2b5
movq %rax, 0x18(%rsp)
movq 0x48(%rsp), %rax
cmpq $0x0, 0xf0(%rax)
je 0x1bde2
movq 0x48(%rsp), %rax
movq 0xf0(%rax), %rax
movl 0x40(%rsp), %edi
callq *%rax
movq %rax, 0x18(%rsp)
jmp 0x1bde4
cmpl $0x0, 0x44(%rsp)
je 0x1be8c
leaq 0xc(%rsp), %rdi
movl 0x44(%rsp), %edx
leaq 0x11d72(%rip), %rsi     # 0x2db71
movb $0x0, %al
callq 0x2350
jmp 0x1be08
movq 0x48(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x1be55
movq 0x171d6(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0xe324(%rip), %rsi      # 0x2a150
leaq 0xe431(%rip), %rdx      # 0x2a264
leaq 0xfdbf(%rip), %rcx      # 0x2bbf9
leaq 0xfc55(%rip), %r8       # 0x2ba96
movl $0xf1, %r9d
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x1be57
movq 0x48(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0xc(%rsp), %rcx
leaq 0xfd48(%rip), %rsi      # 0x2bbb5
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0x48(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x1bf0c
jmp 0x1be8e
jmp 0x1be90
movq 0x48(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x1bedd
movq 0x1714e(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0xe29c(%rip), %rsi      # 0x2a150
leaq 0xe3a9(%rip), %rdx      # 0x2a264
leaq 0xfd37(%rip), %rcx      # 0x2bbf9
leaq 0xfbcd(%rip), %r8       # 0x2ba96
movl $0xf1, %r9d
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x1bedf
movq 0x48(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0xfcea(%rip), %rsi      # 0x2bbda
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0x48(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x1bf0c
jmp 0x1bf0e
movb $0x0, 0x57(%rsp)
jmp 0x1bf1a
movb $0x1, 0x57(%rsp)
movb 0x57(%rsp), %al
andb $0x1, %al
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)