// File: /workspace/github_c_makefile_star2_O0/mattn[P]orelang/ore.c
// Function: ore_cmp_eq
static int
ore_cmp_eq(ore_context* ore, ore_value lhs, ore_value rhs) {
  switch (lhs.t) {
    case ORE_TYPE_NIL:
      return rhs.t == ORE_TYPE_NIL;
    case ORE_TYPE_BOOL:
      if (rhs.t == ORE_TYPE_BOOL && lhs.v.b == rhs.v.b) return 1;
      return 0;
    case ORE_TYPE_INT:
      if (rhs.t == ORE_TYPE_INT && lhs.v.i == rhs.v.i) return 1;
      if (rhs.t == ORE_TYPE_FLOAT && lhs.v.i == rhs.v.d) return 1;
      return 0;
    case ORE_TYPE_FLOAT:
      if (rhs.t == ORE_TYPE_INT && lhs.v.d == rhs.v.i) return 1;
      if (rhs.t == ORE_TYPE_FLOAT && lhs.v.d == rhs.v.d) return 1;
      return 0;
    case ORE_TYPE_STRING:
      if (lhs.t == rhs.t && lhs.v.s->l == rhs.v.s->l &&
          !memcmp(lhs.v.s->p, rhs.v.s->p, lhs.v.s->l))
        return 1;
      return 0;
    case ORE_TYPE_ARRAY:
      if (lhs.t == rhs.t && lhs.v.a->p == rhs.v.a->p)
        return 1;
      return 0;
    case ORE_TYPE_HASH:
      if (lhs.t == rhs.t && lhs.v.h->p == rhs.v.h->p)
        return 1;
      return 0;
    case ORE_TYPE_REGEXP:
      if (lhs.t == rhs.t && lhs.v.r->l == rhs.v.r->l &&
          !memcmp(lhs.v.r->p, rhs.v.r->p, lhs.v.r->l))
        return 1;
      return 0;
    case ORE_TYPE_FUNC:
      if (lhs.t == rhs.t && lhs.v.f.x.o == rhs.v.f.x.o)
        return 1;
      return 0;
    case ORE_TYPE_CFUNC:
      if (lhs.t == rhs.t && lhs.v.f.x.c == rhs.v.f.x.c)
        return 1;
      return 0;
    case ORE_TYPE_ENV:
      if (lhs.t == rhs.t && lhs.v.e->p == rhs.v.e->p)
        return 1;
      return 0;
    default:
      break;
  }
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
leaq 0x38(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq %rdi, -0x10(%rbp)
movl (%rax), %eax
movq %rax, -0x18(%rbp)
subq $0xa, %rax
ja 0x183de
movq -0x18(%rbp), %rax
leaq 0x29e1(%rip), %rcx      # 0x1aac8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x1812c
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
cmpl 0x8(%rcx), %eax
jne 0x1812c
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x1815d
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
cmpl 0x8(%rcx), %eax
jne 0x1815d
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x18188
movq -0x28(%rbp), %rax
movq -0x20(%rbp), %rcx
cvtsi2sdl 0x8(%rcx), %xmm0
ucomisd 0x8(%rax), %xmm0
jne 0x18188
jp 0x18188
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x181c3
movq -0x28(%rbp), %rax
movq -0x20(%rbp), %rcx
movsd 0x8(%rcx), %xmm0
cvtsi2sdl 0x8(%rax), %xmm1
ucomisd %xmm1, %xmm0
jne 0x181c3
jp 0x181c3
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x181ee
movq -0x28(%rbp), %rax
movq -0x20(%rbp), %rcx
movsd 0x8(%rcx), %xmm0
ucomisd 0x8(%rax), %xmm0
jne 0x181ee
jp 0x181ee
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jne 0x18254
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x8(%rax), %eax
movq 0x8(%rcx), %rcx
cmpl 0x8(%rcx), %eax
jne 0x18254
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rax), %rdx
movq (%rdx), %rdi
movq 0x8(%rcx), %rcx
movq (%rcx), %rsi
movq 0x8(%rax), %rax
movslq 0x8(%rax), %rdx
callq 0x2100
cmpl $0x0, %eax
jne 0x18254
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jne 0x18292
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x8(%rcx), %rcx
cmpq (%rcx), %rax
jne 0x18292
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jne 0x182d0
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x8(%rcx), %rcx
cmpq (%rcx), %rax
jne 0x182d0
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jne 0x18336
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x8(%rax), %eax
movq 0x8(%rcx), %rcx
cmpl 0x8(%rcx), %eax
jne 0x18336
movq -0x20(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rax), %rdx
movq (%rdx), %rdi
movq 0x8(%rcx), %rcx
movq (%rcx), %rsi
movq 0x8(%rax), %rax
movslq 0x8(%rax), %rdx
callq 0x2100
cmpl $0x0, %eax
jne 0x18336
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jne 0x1836b
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
cmpq 0x18(%rcx), %rax
jne 0x1836b
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jne 0x1839d
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
cmpq 0x18(%rcx), %rax
jne 0x1839d
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jne 0x183d5
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x8(%rcx), %rcx
cmpq (%rcx), %rax
jne 0x183d5
movl $0x1, -0x4(%rbp)
jmp 0x183e7
movl $0x0, -0x4(%rbp)
jmp 0x183e7
jmp 0x183e0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq