// File: /workspace/github_cpp_makefile_star2_O1/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 0x833eb
movq %rdi, %r14
movl %esi, %eax
leaq 0x3db43(%rip), %rcx     # 0xc0e30
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r14, %rdi
callq 0x834bc
movb $0x1, %bl
testb %al, %al
jne 0x83403
movzbl 0x8(%r14), %eax
cmpw $0x5, %ax
jmp 0x833f8
movq %r14, %rdi
callq 0x82cca
movb $0x1, %bl
testb %al, %al
jne 0x83403
movzbl 0x8(%r14), %eax
cmpw $0x3, %ax
jne 0x8330d
movsd (%r14), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x8330d
movsd 0x3dd46(%rip), %xmm1    # 0xc1090
jmp 0x833b7
movq %r14, %rdi
callq 0x834bc
testb %al, %al
je 0x83413
movq %r14, %rdi
callq 0x830e6
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x83413
jp 0x83413
movb $0x1, %bl
jmp 0x83426
movq %r14, %rdi
callq 0x82aa6
movb $0x1, %bl
testb %al, %al
jne 0x83403
movzbl 0x8(%r14), %eax
cmpw $0x3, %ax
jne 0x8330d
movsd (%r14), %xmm0
ucomisd 0x3dcd7(%rip), %xmm0    # 0xc1080
jb 0x8330d
movsd 0x3dcd1(%rip), %xmm1    # 0xc1088
ucomisd %xmm0, %xmm1
jae 0x83403
jmp 0x8330d
movzbl 0x8(%r14), %eax
cmpw $0x7, %ax
jmp 0x833f8
movq %r14, %rdi
callq 0x834bc
movb $0x1, %bl
testb %al, %al
jne 0x83403
movzwl 0x8(%r14), %ecx
cmpb $0x6, %cl
jae 0x833eb
movb $0x31, %bl
shrb %cl, %bl
jmp 0x83403
xorl %ebx, %ebx
jmp 0x83403
movzbl 0x8(%r14), %eax
cmpw $0x6, %ax
sete %cl
testw %ax, %ax
sete %bl
orb %cl, %bl
andb $0x1, %bl
movl %ebx, %eax
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movzbl 0x8(%r14), %eax
movb $0x1, %bl
cmpw $0x5, %ax
jne 0x8342a
cmpb $0x0, (%r14)
jne 0x8342a
xorl %ebp, %ebp
jmp 0x8348f
cmpw $0x4, %ax
sete %bpl
jne 0x83457
leaq 0x8(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x7b3a0
leaq 0x3b1ec(%rip), %rsi     # 0xbe637
movq %r15, %rdi
callq 0x111b0
testl %eax, %eax
je 0x8348a
movzwl 0x8(%r14), %eax
movzbl %al, %eax
cmpb $0x7, %al
je 0x83478
cmpl $0x6, %eax
jne 0x83482
movq (%r14), %rcx
cmpq $0x0, 0x28(%rcx)
je 0x8348f
cmpw $0x7, %ax
jne 0x83482
movq (%r14), %rcx
cmpq $0x0, 0x28(%rcx)
je 0x8348f
testw %ax, %ax
sete %bl
jmp 0x8348f
movb $0x1, %bpl
movb $0x1, %bl
testb %bpl, %bpl
je 0x83403
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x83403
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x115c0
jmp 0x83403