// File: /workspace/github_c_makefile_star2_O0/lengjingzju[P]json/json.c
// Function: json_parse_key
static int _json_parse_key(json_parse_t *parse_ptr, json_string_t *jkey)
{
    char *str = NULL;
    char end_ch = '\"';

    parse_ptr->skip_blank(parse_ptr);
    _get_parse_ptr(parse_ptr, 0, 2, &str);

    switch (*str) {
    case '\"':
#if JSON_PARSE_SPECIAL_QUOTES
    case '\'':
#endif
        if (unlikely(str[1] == str[0])) {
#if !JSON_PARSE_EMPTY_KEY
            JsonPareseErr("key is empty!");
            goto err;
#else
            _UPDATE_PARSE_OFFSET(2);
#endif
        } else {
            end_ch = *str;
            _UPDATE_PARSE_OFFSET(1);
            if (unlikely(parse_ptr->parse_string(parse_ptr, end_ch, jkey, &parse_ptr->mem->key_mgr) < 0)) {
                goto err;
            }
            _UPDATE_PARSE_OFFSET(1);
        }
        parse_ptr->skip_blank(parse_ptr);
        _get_parse_ptr(parse_ptr, 0, 1, &str);
        if (unlikely(*str != ':')) {
            JsonPareseErr("key is not before ':'");
            goto err;
        }
        _UPDATE_PARSE_OFFSET(1);
        break;

    default:
#if JSON_PARSE_SPECIAL_QUOTES
        if (unlikely(*str == ':')) {
#if !JSON_PARSE_EMPTY_KEY
            JsonPareseErr("key is empty!");
            goto err;
#else
            _UPDATE_PARSE_OFFSET(1);
#endif
        } else {
            end_ch = ':';
            if (unlikely(parse_ptr->parse_string(parse_ptr, end_ch, jkey, &parse_ptr->mem->key_mgr) < 0)) {
                goto err;
            }
            _UPDATE_PARSE_OFFSET(1);

            while (IS_BLANK((unsigned char)jkey->str[jkey->len - 1]))
                --jkey->len;
            jkey->str[jkey->len] = '\0';
        }
        break;
#else
        JsonPareseErr("key is not started with quotes!");
        goto err;
#endif
    }
    return 0;
err:
    return -1;
}

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x78(%rsp)
movq %rsi, 0x70(%rsp)
movq $0x0, 0x68(%rsp)
movb $0x22, 0x67(%rsp)
movq 0x78(%rsp), %rdi
movq 0x40(%rdi), %rax
callq *%rax
movq 0x78(%rsp), %rdi
xorl %esi, %esi
movl $0x2, %edx
leaq 0x68(%rsp), %rcx
callq 0xabb0
movq 0x68(%rsp), %rax
movb (%rax), %al
subb $0x22, %al
jne 0xbccf
jmp 0xba71
movq 0x68(%rsp), %rax
movsbl 0x1(%rax), %eax
movq 0x68(%rsp), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xbb4c
jmp 0xba9e
movq 0x78(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xbb12
leaq 0x40(%rsp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
leaq 0x40(%rsp), %rdi
movq 0x78(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0x78(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x4f11(%rip), %rdi      # 0x109f4
leaq 0x5367(%rip), %rsi      # 0x10e51
movl $0xa3e, %edx            # imm = 0xA3E
movb $0x0, %al
callq 0x10c0
leaq 0x40(%rsp), %rdx
leaq 0x526d(%rip), %rdi      # 0x10d6f
leaq 0x5358(%rip), %rsi      # 0x10e61
movb $0x0, %al
callq 0x10c0
jmp 0xbb45
jmp 0xbb14
leaq 0x4ed9(%rip), %rdi      # 0x109f4
leaq 0x532f(%rip), %rsi      # 0x10e51
movl $0xa3e, %edx            # imm = 0xA3E
movb $0x0, %al
callq 0x10c0
leaq 0x5133(%rip), %rdi      # 0x10c68
leaq 0x5325(%rip), %rsi      # 0x10e61
movb $0x0, %al
callq 0x10c0
jmp 0xbb45
jmp 0xbb47
jmp 0xbd83
movq 0x68(%rsp), %rax
movb (%rax), %al
movb %al, 0x67(%rsp)
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
movq 0x78(%rsp), %rax
movq 0x48(%rax), %rax
movq 0x78(%rsp), %rdi
movb 0x67(%rsp), %sil
movq 0x70(%rsp), %rdx
movq 0x78(%rsp), %rcx
movq 0x38(%rcx), %rcx
addq $0x28, %rcx
movsbl %sil, %esi
callq *%rax
cmpl $0x0, %eax
setl %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xbbaf
jmp 0xbd83
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
movq 0x78(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x78(%rsp), %rdi
callq *%rax
movq 0x78(%rsp), %rdi
xorl %esi, %esi
movl $0x1, %edx
leaq 0x68(%rsp), %rcx
callq 0xabb0
movq 0x68(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xbcb9
jmp 0xbc0b
movq 0x78(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xbc7f
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
leaq 0x20(%rsp), %rdi
movq 0x78(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0x78(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x4da4(%rip), %rdi      # 0x109f4
leaq 0x51fa(%rip), %rsi      # 0x10e51
movl $0xa4e, %edx            # imm = 0xA4E
movb $0x0, %al
callq 0x10c0
leaq 0x20(%rsp), %rdx
leaq 0x5100(%rip), %rdi      # 0x10d6f
leaq 0x51f9(%rip), %rsi      # 0x10e6f
movb $0x0, %al
callq 0x10c0
jmp 0xbcb2
jmp 0xbc81
leaq 0x4d6c(%rip), %rdi      # 0x109f4
leaq 0x51c2(%rip), %rsi      # 0x10e51
movl $0xa4e, %edx            # imm = 0xA4E
movb $0x0, %al
callq 0x10c0
leaq 0x4fc6(%rip), %rdi      # 0x10c68
leaq 0x51c6(%rip), %rsi      # 0x10e6f
movb $0x0, %al
callq 0x10c0
jmp 0xbcb2
jmp 0xbcb4
jmp 0xbd83
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
jmp 0xbd76
jmp 0xbcd1
movq 0x78(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xbd3f
movq %rsp, %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
movq %rsp, %rdi
movq 0x78(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0x78(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x4ce2(%rip), %rdi      # 0x109f4
leaq 0x5138(%rip), %rsi      # 0x10e51
movl $0xa6a, %edx            # imm = 0xA6A
movb $0x0, %al
callq 0x10c0
movq %rsp, %rdx
leaq 0x5040(%rip), %rdi      # 0x10d6f
leaq 0x514f(%rip), %rsi      # 0x10e85
movb $0x0, %al
callq 0x10c0
jmp 0xbd72
jmp 0xbd41
leaq 0x4cac(%rip), %rdi      # 0x109f4
leaq 0x5102(%rip), %rsi      # 0x10e51
movl $0xa6a, %edx            # imm = 0xA6A
movb $0x0, %al
callq 0x10c0
leaq 0x4f06(%rip), %rdi      # 0x10c68
leaq 0x511c(%rip), %rsi      # 0x10e85
movb $0x0, %al
callq 0x10c0
jmp 0xbd72
jmp 0xbd74
jmp 0xbd83
movl $0x0, 0x84(%rsp)
jmp 0xbd8e
movl $0xffffffff, 0x84(%rsp) # imm = 0xFFFFFFFF
movl 0x84(%rsp), %eax
addq $0x88, %rsp
retq
nopl (%rax)