// File: DoubleString[P]RtConverter/src/Json/json_value.cpp
// Function: Json::Value::resolveReference(char const*, char const*)
Value& Value::resolveReference(char const* key, char const* end) {
  JSON_ASSERT_MESSAGE(
      type_ == nullValue || type_ == objectValue,
      "in Json::Value::resolveReference(key, end): requires objectValue");
  if (type_ == nullValue)
    *this = Value(objectValue);
  CZString actualKey(key, static_cast<unsigned>(end - key),
                     CZString::duplicateOnCopy);
  ObjectValues::iterator it = value_.map_->lower_bound(actualKey);
  if (it != value_.map_->end() && (*it).first == actualKey)
    return (*it).second;

  ObjectValues::value_type defaultValue(actualKey, nullSingleton());
  it = value_.map_->insert(it, defaultValue);
  Value& value = (*it).second;
  return value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x270(%rbp)
movw 0x8(%rax), %ax
andw $0xff, %ax
movzwl %ax, %eax
cmpl $0x0, %eax
je 0x22c1f
movq -0x270(%rbp), %rax
movw 0x8(%rax), %ax
andw $0xff, %ax
movzwl %ax, %eax
cmpl $0x7, %eax
je 0x22c1f
leaq -0x198(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x9a00
movq -0x278(%rbp), %rdi
leaq 0x998cd(%rip), %rsi     # 0xbc47f
callq 0x9760
jmp 0x22bb9
leaq -0x1c8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x9790
jmp 0x22bce
leaq -0x1c8(%rbp), %rdi
callq 0x1ddc0
jmp 0x22bdc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x22c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x9480
leaq -0x198(%rbp), %rdi
callq 0x91d0
jmp 0x22ea1
movq -0x270(%rbp), %rax
movw 0x8(%rax), %ax
andw $0xff, %ax
movzwl %ax, %eax
cmpl $0x0, %eax
jne 0x22c94
leaq -0x1f0(%rbp), %rdi
movq %rdi, -0x280(%rbp)
movl $0x7, %esi
callq 0x1e5c0
movq -0x270(%rbp), %rdi
movq -0x280(%rbp), %rsi
callq 0x1f1b0
jmp 0x22c63
leaq -0x1f0(%rbp), %rdi
callq 0x1f050
jmp 0x22c94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x1f050
jmp 0x22ea1
movq -0x18(%rbp), %rsi
movl -0x20(%rbp), %edx
movl %esi, %eax
subl %eax, %edx
leaq -0x200(%rbp), %rdi
movq %rdi, -0x290(%rbp)
movl $0x2, %ecx
callq 0x1e110
movq -0x270(%rbp), %rax
movq -0x290(%rbp), %rsi
movq (%rax), %rdi
callq 0x258e0
movq %rax, -0x288(%rbp)
jmp 0x22cd6
movq -0x270(%rbp), %rax
movq -0x288(%rbp), %rcx
movq %rcx, -0x208(%rbp)
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x210(%rbp)
leaq -0x208(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x25490
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x291(%rbp)
jne 0x22d1e
jmp 0x22d4f
leaq -0x208(%rbp), %rdi
callq 0x254f0
movq %rax, %rdi
leaq -0x200(%rbp), %rsi
callq 0x1e4b0
movb %al, -0x292(%rbp)
jmp 0x22d41
movb -0x292(%rbp), %al
movb %al, -0x291(%rbp)
jmp 0x22d4f
movb -0x291(%rbp), %al
testb $0x1, %al
jne 0x22d5b
jmp 0x22d95
leaq -0x208(%rbp), %rdi
callq 0x254f0
addq $0x10, %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x214(%rbp)
jmp 0x22e7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
jmp 0x22e95
callq 0x1d3c0
movq %rax, -0x2a0(%rbp)
jmp 0x22da3
movq -0x2a0(%rbp), %rdx
leaq -0x250(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x25910
jmp 0x22dbf
movq -0x270(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x2b0(%rbp)
leaq -0x260(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x25810
movq -0x2b0(%rbp), %rdi
movq -0x260(%rbp), %rsi
leaq -0x250(%rbp), %rdx
callq 0x25970
movq %rax, -0x2a8(%rbp)
jmp 0x22e06
movq -0x2a8(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x258(%rbp), %rax
movq %rax, -0x208(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x254f0
addq $0x10, %rax
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x214(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x259b0
jmp 0x22e7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x259b0
jmp 0x22e95
leaq -0x200(%rbp), %rdi
callq 0x1e280
movq -0x8(%rbp), %rax
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
leaq -0x200(%rbp), %rdi
callq 0x1e280
movq -0x1a0(%rbp), %rdi
callq 0x9d20
nopl (%rax)