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

    switch (*str) {
    case '\"':
#if JSON_PARSE_SPECIAL_QUOTES
    case '\'':
#endif
        jkey->type = JSON_STRING;
        if (unlikely(str[1] == str[0])) {
            memset(&value->vstr, 0, sizeof(json_string_t));
            _UPDATE_PARSE_OFFSET(2);
        } else {
            end_ch = *str;
            _UPDATE_PARSE_OFFSET(1);
            if (unlikely(parse_ptr->parse_string(parse_ptr, end_ch, &value->vstr, &parse_ptr->mem->str_mgr) < 0)) {
                goto err;
            }
            _UPDATE_PARSE_OFFSET(1);
        }
        break;

#if JSON_PARSE_SPECIAL_NUM
    case '+':
#endif
    case '-':
#if JSON_PARSE_SPECIAL_DOUBLE
        if (strncmp("inf", str + 1, 3) == 0) {
            jkey->type = JSON_DOUBLE;
            value->vnum.vlhex = (*str == '-' ? 0xFFF0000000000000 : 0x7FF0000000000000);
            _UPDATE_PARSE_OFFSET(9);
            break;
        }
        FALLTHROUGH_ATTR;
#endif
#if JSON_PARSE_SPECIAL_NUM
    case '.':
#endif
    case '0': case '1': case '2': case '3': case '4':
    case '5': case '6': case '7': case '8': case '9':
        bak = str;
        if (unlikely((jkey->type = _json_parse_number((const char **)&str, &value->vnum)) == JSON_NULL)) {
            JsonPareseErr("Not number!");
            goto err;
        }
        _UPDATE_PARSE_OFFSET(str - bak);
        break;

    case 'f':
        if (likely(parse_ptr->size - parse_ptr->offset >= 5 && memcmp("false", str, 5) == 0)) {
            jkey->type = JSON_BOOL;
            value->vnum.vbool = false;
            _UPDATE_PARSE_OFFSET(5);
        } else {
            JsonPareseErr("invalid next ptr!");
            goto err;
        }
        break;
    case 't':
        if (likely(parse_ptr->size - parse_ptr->offset >= 4 && memcmp("true", str, 4) == 0)) {
            jkey->type = JSON_BOOL;
            value->vnum.vbool = true;
            _UPDATE_PARSE_OFFSET(4);
        } else {
            JsonPareseErr("invalid next ptr!");
            goto err;
        }
        break;

    case 'n':
        if (likely(parse_ptr->size - parse_ptr->offset >= 4 && memcmp("null", str, 4) == 0)) {
            jkey->type = JSON_NULL;
            _UPDATE_PARSE_OFFSET(4);
            break;
        }
#if JSON_PARSE_SPECIAL_DOUBLE
        if (likely(parse_ptr->size - parse_ptr->offset >= 3 && memcmp("nan", str, 3) == 0)) {
            jkey->type = JSON_DOUBLE;
            value->vnum.vlhex = 0x7FF0000000000001;
            _UPDATE_PARSE_OFFSET(3);
            break;
        }
#endif
        JsonPareseErr("invalid next ptr!");
        goto err;

#if JSON_PARSE_SPECIAL_DOUBLE
    case 'i':
        if (likely(parse_ptr->size - parse_ptr->offset >= 3 && memcmp("inf", str, 3) == 0)) {
            jkey->type = JSON_DOUBLE;
            value->vnum.vlhex = 0x7FF0000000000000;
            _UPDATE_PARSE_OFFSET(8);
        } else {
            JsonPareseErr("invalid next ptr!");
            goto err;
        }
        break;
#endif
    default:
        JsonPareseErr("invalid next ptr!");
        goto err;
    }

    return 0;
err:
    return -1;
}

// Assembly:
subq $0x108, %rsp            # imm = 0x108
movq %rdi, 0xf8(%rsp)
movq %rsi, 0xf0(%rsp)
movq %rdx, 0xe8(%rsp)
movq %rcx, 0xe0(%rsp)
movb $0x22, 0xdf(%rsp)
movq $0x0, 0xd0(%rsp)
movq 0xf0(%rsp), %rax
movsbl (%rax), %eax
addl $-0x22, %eax
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x52, %eax
ja 0xc6a3
movq 0x8(%rsp), %rax
leaq 0x4aa3(%rip), %rcx      # 0x108a8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xe8(%rsp), %rax
movl (%rax), %ecx
andl $-0x10, %ecx
orl $0x7, %ecx
movl %ecx, (%rax)
movq 0xf0(%rsp), %rax
movsbl 0x1(%rax), %eax
movq 0xf0(%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 0xbe7a
movq 0xe0(%rsp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x10f0
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x2, %rcx
movq %rcx, 0x10(%rax)
jmp 0xbf09
movq 0xf0(%rsp), %rax
movb (%rax), %al
movb %al, 0xdf(%rsp)
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
movq 0xf8(%rsp), %rax
movq 0x48(%rax), %rax
movq 0xf8(%rsp), %rdi
movb 0xdf(%rsp), %sil
movq 0xe0(%rsp), %rdx
movq 0xf8(%rsp), %rcx
movq 0x38(%rcx), %rcx
addq $0x48, %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 0xbef5
jmp 0xc766
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
jmp 0xc759
movq 0xf0(%rsp), %rsi
addq $0x1, %rsi
leaq 0x4f84(%rip), %rdi      # 0x10ea5
movl $0x3, %edx
callq 0x1060
cmpl $0x0, %eax
jne 0xbf8c
movq 0xe8(%rsp), %rax
movl (%rax), %ecx
andl $-0x10, %ecx
orl $0x6, %ecx
movl %ecx, (%rax)
movq 0xf0(%rsp), %rax
movsbl (%rax), %edx
movabsq $0x7ff0000000000000, %rcx # imm = 0x7FF0000000000000
movabsq $-0x10000000000000, %rax # imm = 0xFFF0000000000000
cmpl $0x2d, %edx
cmoveq %rax, %rcx
movq 0xe0(%rsp), %rax
movq %rcx, (%rax)
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x9, %rcx
movq %rcx, 0x10(%rax)
jmp 0xc759
jmp 0xbf8e
movq 0xf0(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0xe0(%rsp), %rsi
leaq 0xf0(%rsp), %rdi
callq 0xc780
movq 0xe8(%rsp), %rcx
movl (%rcx), %edx
andl $0xf, %eax
andl $-0x10, %edx
orl %eax, %edx
movl %edx, (%rcx)
cmpl $0x0, %eax
sete %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xc0a4
jmp 0xbfe4
movq 0xf8(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xc06a
leaq 0xb0(%rsp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
leaq 0xb0(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0xf8(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x49bc(%rip), %rdi      # 0x109f4
leaq 0x4e6a(%rip), %rsi      # 0x10ea9
movl $0xa9f, %edx            # imm = 0xA9F
movb $0x0, %al
callq 0x10c0
leaq 0xb0(%rsp), %rdx
leaq 0x4d15(%rip), %rdi      # 0x10d6f
leaq 0x4e61(%rip), %rsi      # 0x10ec2
movb $0x0, %al
callq 0x10c0
jmp 0xc09d
jmp 0xc06c
leaq 0x4981(%rip), %rdi      # 0x109f4
leaq 0x4e2f(%rip), %rsi      # 0x10ea9
movl $0xa9f, %edx            # imm = 0xA9F
movb $0x0, %al
callq 0x10c0
leaq 0x4bdb(%rip), %rdi      # 0x10c68
leaq 0x4e2e(%rip), %rsi      # 0x10ec2
movb $0x0, %al
callq 0x10c0
jmp 0xc09d
jmp 0xc09f
jmp 0xc766
movq 0xf0(%rsp), %rcx
movq 0xd0(%rsp), %rax
subq %rax, %rcx
movq 0xf8(%rsp), %rax
addq 0x10(%rax), %rcx
movq %rcx, 0x10(%rax)
jmp 0xc759
movq 0xf8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0xf8(%rsp), %rax
subq 0x10(%rax), %rcx
xorl %eax, %eax
cmpq $0x5, %rcx
movb %al, 0x7(%rsp)
jb 0xc113
movq 0xf0(%rsp), %rsi
leaq 0x4ae4(%rip), %rdi      # 0x10be3
movl $0x5, %edx
callq 0x1120
cmpl $0x0, %eax
sete %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xc15e
movq 0xe8(%rsp), %rax
movl (%rax), %ecx
andl $-0x10, %ecx
orl $0x1, %ecx
movl %ecx, (%rax)
movq 0xe0(%rsp), %rax
movb $0x0, (%rax)
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x5, %rcx
movq %rcx, 0x10(%rax)
jmp 0xc220
jmp 0xc160
movq 0xf8(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xc1e6
leaq 0x90(%rsp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
leaq 0x90(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0xf8(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x4840(%rip), %rdi      # 0x109f4
leaq 0x4cee(%rip), %rsi      # 0x10ea9
movl $0xaab, %edx            # imm = 0xAAB
movb $0x0, %al
callq 0x10c0
leaq 0x90(%rsp), %rdx
leaq 0x4b99(%rip), %rdi      # 0x10d6f
leaq 0x4cf1(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc219
jmp 0xc1e8
leaq 0x4805(%rip), %rdi      # 0x109f4
leaq 0x4cb3(%rip), %rsi      # 0x10ea9
movl $0xaab, %edx            # imm = 0xAAB
movb $0x0, %al
callq 0x10c0
leaq 0x4a5f(%rip), %rdi      # 0x10c68
leaq 0x4cbe(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc219
jmp 0xc21b
jmp 0xc766
jmp 0xc759
movq 0xf8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0xf8(%rsp), %rax
subq 0x10(%rax), %rcx
xorl %eax, %eax
cmpq $0x4, %rcx
movb %al, 0x6(%rsp)
jb 0xc268
movq 0xf0(%rsp), %rax
movl (%rax), %eax
subl $0x65757274, %eax       # imm = 0x65757274
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
sete %al
movb %al, 0x6(%rsp)
movb 0x6(%rsp), %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xc2b3
movq 0xe8(%rsp), %rax
movl (%rax), %ecx
andl $-0x10, %ecx
orl $0x1, %ecx
movl %ecx, (%rax)
movq 0xe0(%rsp), %rax
movb $0x1, (%rax)
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x4, %rcx
movq %rcx, 0x10(%rax)
jmp 0xc36c
jmp 0xc2b5
movq 0xf8(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xc332
leaq 0x70(%rsp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
leaq 0x70(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0xf8(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x46f1(%rip), %rdi      # 0x109f4
leaq 0x4b9f(%rip), %rsi      # 0x10ea9
movl $0xab5, %edx            # imm = 0xAB5
movb $0x0, %al
callq 0x10c0
leaq 0x70(%rsp), %rdx
leaq 0x4a4d(%rip), %rdi      # 0x10d6f
leaq 0x4ba5(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc365
jmp 0xc334
leaq 0x46b9(%rip), %rdi      # 0x109f4
leaq 0x4b67(%rip), %rsi      # 0x10ea9
movl $0xab5, %edx            # imm = 0xAB5
movb $0x0, %al
callq 0x10c0
leaq 0x4913(%rip), %rdi      # 0x10c68
leaq 0x4b72(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc365
jmp 0xc367
jmp 0xc766
jmp 0xc759
movq 0xf8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0xf8(%rsp), %rax
subq 0x10(%rax), %rcx
xorl %eax, %eax
cmpq $0x4, %rcx
movb %al, 0x5(%rsp)
jb 0xc3b4
movq 0xf0(%rsp), %rax
movl (%rax), %eax
subl $0x6c6c756e, %eax       # imm = 0x6C6C756E
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
sete %al
movb %al, 0x5(%rsp)
movb 0x5(%rsp), %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xc3f4
movq 0xe8(%rsp), %rax
movl (%rax), %ecx
andl $-0x10, %ecx
orl $0x0, %ecx
movl %ecx, (%rax)
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x4, %rcx
movq %rcx, 0x10(%rax)
jmp 0xc759
movq 0xf8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0xf8(%rsp), %rax
subq 0x10(%rax), %rcx
xorl %eax, %eax
cmpq $0x3, %rcx
movb %al, 0x4(%rsp)
jb 0xc43b
movq 0xf0(%rsp), %rsi
leaq 0x4ab9(%rip), %rdi      # 0x10ee0
movl $0x3, %edx
callq 0x1120
cmpl $0x0, %eax
sete %al
movb %al, 0x4(%rsp)
movb 0x4(%rsp), %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xc490
movq 0xe8(%rsp), %rax
movl (%rax), %ecx
andl $-0x10, %ecx
orl $0x6, %ecx
movl %ecx, (%rax)
movq 0xe0(%rsp), %rax
movabsq $0x7ff0000000000001, %rcx # imm = 0x7FF0000000000001
movq %rcx, (%rax)
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x3, %rcx
movq %rcx, 0x10(%rax)
jmp 0xc759
jmp 0xc492
movq 0xf8(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xc50f
leaq 0x50(%rsp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
leaq 0x50(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0xf8(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x4514(%rip), %rdi      # 0x109f4
leaq 0x49c2(%rip), %rsi      # 0x10ea9
movl $0xac8, %edx            # imm = 0xAC8
movb $0x0, %al
callq 0x10c0
leaq 0x50(%rsp), %rdx
leaq 0x4870(%rip), %rdi      # 0x10d6f
leaq 0x49c8(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc542
jmp 0xc511
leaq 0x44dc(%rip), %rdi      # 0x109f4
leaq 0x498a(%rip), %rsi      # 0x10ea9
movl $0xac8, %edx            # imm = 0xAC8
movb $0x0, %al
callq 0x10c0
leaq 0x4736(%rip), %rdi      # 0x10c68
leaq 0x4995(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc542
jmp 0xc544
jmp 0xc766
movq 0xf8(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0xf8(%rsp), %rax
subq 0x10(%rax), %rcx
xorl %eax, %eax
cmpq $0x3, %rcx
movb %al, 0x3(%rsp)
jb 0xc590
movq 0xf0(%rsp), %rsi
leaq 0x4929(%rip), %rdi      # 0x10ea5
movl $0x3, %edx
callq 0x1120
cmpl $0x0, %eax
sete %al
movb %al, 0x3(%rsp)
movb 0x3(%rsp), %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0xc5e5
movq 0xe8(%rsp), %rax
movl (%rax), %ecx
andl $-0x10, %ecx
orl $0x6, %ecx
movl %ecx, (%rax)
movq 0xe0(%rsp), %rax
movabsq $0x7ff0000000000000, %rcx # imm = 0x7FF0000000000000
movq %rcx, (%rax)
movq 0xf8(%rsp), %rax
movq 0x10(%rax), %rcx
addq $0x8, %rcx
movq %rcx, 0x10(%rax)
jmp 0xc69e
jmp 0xc5e7
movq 0xf8(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xc664
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
leaq 0x30(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0xf8(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x43bf(%rip), %rdi      # 0x109f4
leaq 0x486d(%rip), %rsi      # 0x10ea9
movl $0xad2, %edx            # imm = 0xAD2
movb $0x0, %al
callq 0x10c0
leaq 0x30(%rsp), %rdx
leaq 0x471b(%rip), %rdi      # 0x10d6f
leaq 0x4873(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc697
jmp 0xc666
leaq 0x4387(%rip), %rdi      # 0x109f4
leaq 0x4835(%rip), %rsi      # 0x10ea9
movl $0xad2, %edx            # imm = 0xAD2
movb $0x0, %al
callq 0x10c0
leaq 0x45e1(%rip), %rdi      # 0x10c68
leaq 0x4840(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc697
jmp 0xc699
jmp 0xc766
jmp 0xc759
jmp 0xc6a5
movq 0xf8(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0xc722
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x10f0
leaq 0x10(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0xf8(%rsp), %rax
addq 0x10(%rax), %rsi
movl $0x1f, %edx
callq 0x1050
leaq 0x4301(%rip), %rdi      # 0x109f4
leaq 0x47af(%rip), %rsi      # 0x10ea9
movl $0xad8, %edx            # imm = 0xAD8
movb $0x0, %al
callq 0x10c0
leaq 0x10(%rsp), %rdx
leaq 0x465d(%rip), %rdi      # 0x10d6f
leaq 0x47b5(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc755
jmp 0xc724
leaq 0x42c9(%rip), %rdi      # 0x109f4
leaq 0x4777(%rip), %rsi      # 0x10ea9
movl $0xad8, %edx            # imm = 0xAD8
movb $0x0, %al
callq 0x10c0
leaq 0x4523(%rip), %rdi      # 0x10c68
leaq 0x4782(%rip), %rsi      # 0x10ece
movb $0x0, %al
callq 0x10c0
jmp 0xc755
jmp 0xc757
jmp 0xc766
movl $0x0, 0x104(%rsp)
jmp 0xc771
movl $0xffffffff, 0x104(%rsp) # imm = 0xFFFFFFFF
movl 0x104(%rsp), %eax
addq $0x108, %rsp            # imm = 0x108
retq