// File: /workspace/github_c_makefile_star2_O0/mattn[P]orelang/ore.c
// Function: ore_value_real_free
static void
ore_value_real_free(ore_value v) {
  switch (v.t) {
    case ORE_TYPE_STRING:
      if (verbose)
        printf("free str %s\n", v.v.s->p);
      free(v.v.s->p);
      free(v.v.s);
      v.v.s = NULL;
      break;
    case ORE_TYPE_ARRAY:
      if (verbose)
        printf("free array %p\n", v.v.a->p);
      kl_destroy(value, v.v.a->p);
      free(v.v.a);
      v.v.a = NULL;
      break;
    case ORE_TYPE_HASH:
      if (verbose)
        printf("free hash %p\n", v.v.h->p);
      kh_destroy(value, v.v.h->p);
      free(v.v.h);
      v.v.h = NULL;
      break;
    case ORE_TYPE_REGEXP:
      if (verbose)
        printf("free regexp %s\n", v.v.r->p);
      free(v.v.r->p);
      free(v.v.r);
      v.v.r = NULL;
      break;
    case ORE_TYPE_ENV:
      if (verbose)
        printf("free env %p\n", v.v.e->p);
      ore_destroy((ore_context*) v.v.e->p);
      v.v.e = NULL;
      break;
    case ORE_TYPE_OBJECT:
      if (verbose)
        printf("free object %p\n", v.v.o);
      ore_value terminate = ore_prop(v.v.o->e, "__terminate__");
      if (terminate.t == ORE_TYPE_FUNC)
        ore_func_call(v.v.o->e, terminate, 0, NULL);
      free(v.v.o);
      v.v.o = NULL;
      break;
    default:
      break;
  }
  v.t = ORE_TYPE_NIL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
leaq 0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movl (%rax), %eax
addl $-0x4, %eax
movl %eax, %ecx
movq %rcx, -0x58(%rbp)
subl $0x9, %eax
ja 0x10651
movq -0x58(%rbp), %rax
leaq 0xa5b6(%rip), %rcx      # 0x1a9e8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x0, 0x10dae(%rip)     # 0x211f0
je 0x1045d
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0xbbd7(%rip), %rdi      # 0x1c02d
movb $0x0, %al
callq 0x20d0
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x2280
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2280
movq -0x60(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0x10653
cmpl $0x0, 0x10d5e(%rip)     # 0x211f0
je 0x104ad
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0xbb94(%rip), %rdi      # 0x1c03a
movb $0x0, %al
callq 0x20d0
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x14f00
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2280
movq -0x60(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0x10653
cmpl $0x0, 0x10d0e(%rip)     # 0x211f0
je 0x104fd
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0xbb53(%rip), %rdi      # 0x1c049
movb $0x0, %al
callq 0x20d0
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x13250
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2280
movq -0x60(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0x10653
cmpl $0x0, 0x10cbe(%rip)     # 0x211f0
je 0x1054d
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0xbb11(%rip), %rdi      # 0x1c057
movb $0x0, %al
callq 0x20d0
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x2280
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2280
movq -0x60(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0x10653
cmpl $0x0, 0x10c6e(%rip)     # 0x211f0
je 0x1059d
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rsi
leaq 0xbad1(%rip), %rdi      # 0x1c067
movb $0x0, %al
callq 0x20d0
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
callq 0x13210
movq -0x60(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0x10653
cmpl $0x0, 0x10c2b(%rip)     # 0x211f0
je 0x105dd
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0xba9e(%rip), %rdi      # 0x1c074
movb $0x0, %al
callq 0x20d0
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rsi
leaq -0x28(%rbp), %rdi
leaq 0xba90(%rip), %rdx      # 0x1c084
callq 0x10850
cmpl $0x8, -0x28(%rbp)
jne 0x10636
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rsi
xorl %eax, %eax
xorl %eax, %eax
movq -0x8(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x20(%rax)
movups -0x28(%rbp), %xmm0
movups -0x18(%rbp), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
xorl %edx, %edx
movl %edx, %ecx
leaq -0x50(%rbp), %rdi
callq 0x11400
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2280
movq -0x60(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0x10653
jmp 0x10653
movq -0x60(%rbp), %rax
movl $0x0, (%rax)
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)