// File: /workspace/github_cpp_makefile_star2_O2/tomfunkhouser[P]gaps/pkgs/RNBasics/json.cpp
// Function: Json::Value::isConvertibleTo(Json::ValueType) const
bool Value::isConvertibleTo(ValueType other) const {
  switch (other) {
  case nullValue:
    return (isNumeric() && asDouble() == 0.0) ||
           (type_ == booleanValue && value_.bool_ == false) ||
           (type_ == stringValue && asString() == "") ||
           (type_ == arrayValue && value_.map_->size() == 0) ||
           (type_ == objectValue && value_.map_->size() == 0) ||
           type_ == nullValue;
  case intValue:
    return isInt() ||
           (type_ == realValue && InRange(value_.real_, minInt, maxInt)) ||
           type_ == booleanValue || type_ == nullValue;
  case uintValue:
    return isUInt() ||
           (type_ == realValue && InRange(value_.real_, 0, maxUInt)) ||
           type_ == booleanValue || type_ == nullValue;
  case realValue:
    return isNumeric() || type_ == booleanValue || type_ == nullValue;
  case booleanValue:
    return isNumeric() || type_ == booleanValue || type_ == nullValue;
  case stringValue:
    return isNumeric() || type_ == booleanValue || type_ == stringValue ||
           type_ == nullValue;
  case arrayValue:
    return type_ == arrayValue || type_ == nullValue;
  case objectValue:
    return type_ == objectValue || type_ == nullValue;
  }
  JSON_ASSERT_UNREACHABLE;
  return false;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
cmpl $0x7, %esi
ja 0x759ab
movq %rdi, %rbx
movl %esi, %eax
leaq 0x36515(%rip), %rcx     # 0xabd50
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
callq 0x759ec
movb $0x1, %bpl
testb %al, %al
jne 0x759c4
movzbl 0x8(%rbx), %eax
cmpw $0x5, %ax
jmp 0x759b7
movq %rbx, %rdi
callq 0x75322
movb $0x1, %bpl
testb %al, %al
jne 0x759c4
movzbl 0x8(%rbx), %eax
cmpw $0x3, %ax
jne 0x7585b
movsd (%rbx), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x7585b
movsd 0x36719(%rip), %xmm1    # 0xabfb0
jmp 0x75976
movq %rbx, %rdi
callq 0x759ec
testb %al, %al
je 0x758c3
movq %rbx, %rdi
callq 0x75688
movb $0x1, %bpl
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x758c3
jnp 0x759c4
movzbl 0x8(%rbx), %r15d
cmpw $0x5, %r15w
jne 0x758db
movb $0x1, %bpl
cmpb $0x0, (%rbx)
je 0x759c4
movl %r15d, %eax
movl %r15d, %ecx
cmpw $0x4, %r15w
jne 0x75918
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7012a
leaq 0x33c65(%rip), %rsi     # 0xa9564
movq %r14, %rdi
callq 0x7a130
movb $0x1, %bpl
testb %al, %al
jne 0x759df
movzbl 0x8(%rbx), %eax
movl %eax, %ecx
cmpb $0x7, %cl
je 0x75925
movzwl %cx, %ecx
cmpl $0x6, %ecx
jne 0x75933
movq (%rbx), %rcx
cmpq $0x0, 0x28(%rcx)
je 0x759d5
testw %ax, %ax
sete %bpl
jmp 0x759d8
movq %rbx, %rdi
callq 0x75152
movb $0x1, %bpl
testb %al, %al
jne 0x759c4
movzbl 0x8(%rbx), %eax
cmpw $0x3, %ax
jne 0x7585b
movsd (%rbx), %xmm0
ucomisd 0x36638(%rip), %xmm0    # 0xabfa0
jb 0x7585b
movsd 0x36632(%rip), %xmm1    # 0xabfa8
ucomisd %xmm0, %xmm1
jae 0x759c4
jmp 0x7585b
movzbl 0x8(%rbx), %eax
cmpw $0x7, %ax
jmp 0x759b7
movq %rbx, %rdi
callq 0x759ec
movb $0x1, %bpl
testb %al, %al
jne 0x759c4
movzwl 0x8(%rbx), %ecx
cmpb $0x6, %cl
jae 0x759ab
movb $0x31, %bpl
shrb %cl, %bpl
jmp 0x759c4
xorl %ebp, %ebp
jmp 0x759c4
movzbl 0x8(%rbx), %eax
cmpw $0x6, %ax
sete %cl
testw %ax, %ax
sete %bpl
orb %cl, %bpl
andb $0x1, %bpl
movl %ebp, %eax
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movb $0x1, %bpl
cmpw $0x4, %r15w
jne 0x759c4
leaq 0x8(%rsp), %rdi
callq 0x11270
jmp 0x759c4
nop