// File: /workspace/github_c_makefile_star2_O3/lengjingzju[P]json/json.c
// Function: json_get_number_value
int json_get_number_value(json_object *json, json_type_t type, void *value)
{
#define _get_number(json, etype, val) do {                                    \
    switch (json->type_member) {                                              \
    case JSON_BOOL:   *(etype *)val = (etype)json->value.vnum.vbool;   break; \
    case JSON_INT:    *(etype *)val = (etype)json->value.vnum.vint;    break; \
    case JSON_HEX:    *(etype *)val = (etype)json->value.vnum.vhex;    break; \
    case JSON_LINT:   *(etype *)val = (etype)json->value.vnum.vlint;   break; \
    case JSON_LHEX:   *(etype *)val = (etype)json->value.vnum.vlhex;   break; \
    case JSON_DOUBLE: *(etype *)val = (etype)json->value.vnum.vdbl;    break; \
    default: *(etype *)val = (etype)0; JsonErr("wrong type!\n");   return -1; \
    }                                                                         \
} while(0)

    switch (type) {
    case JSON_BOOL:   _get_number(json, bool, value);       break;
    case JSON_INT:    _get_number(json, int32_t, value);    break;
    case JSON_HEX:    _get_number(json, uint32_t, value);   break;
    case JSON_LINT:   _get_number(json, int64_t, value);    break;
    case JSON_LHEX:   _get_number(json, uint64_t, value);   break;
    case JSON_DOUBLE: _get_number(json, double, value);     break;
    default:          JsonErr("wrong type!\n");         return -1;
    }

    return json->type_member == type ? 0 : json->type_member;
}

// Assembly:
pushq %rax
leal -0x1(%rsi), %eax
cmpl $0x5, %eax
ja 0x455f
leaq 0x7c4a(%rip), %rcx      # 0xc078
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x4697
leaq 0x7cb9(%rip), %rcx      # 0xc108
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x0, 0x18(%rdi)
jmp 0x45b4
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x45ef
leaq 0x7c2f(%rip), %rcx      # 0xc0a8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsd 0x18(%rdi), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
subsd 0x7bd9(%rip), %xmm0     # 0xc070
cvttsd2si %xmm0, %r8
sarq $0x3f, %rcx
andq %rcx, %r8
orq %rax, %r8
movq %r8, (%rdx)
jmp 0x46d9
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x461b
leaq 0x7c12(%rip), %rcx      # 0xc0d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cvttsd2si 0x18(%rdi), %rax
movl %eax, (%rdx)
jmp 0x46d9
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x4652
leaq 0x7bcc(%rip), %rcx      # 0xc0c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x18(%rdi), %rax
jmp 0x463f
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x46b2
leaq 0x7bd2(%rip), %rcx      # 0xc0f0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x18(%rdi), %eax
movl %eax, (%rdx)
jmp 0x46d9
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x46e8
leaq 0x7b47(%rip), %rcx      # 0xc090
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsbl 0x18(%rdi), %eax
cvtsi2sd %eax, %xmm0
jmp 0x46d5
leaq 0x7d36(%rip), %rdi      # 0xc29c
leaq 0x7d41(%rip), %rsi      # 0xc2ae
movl $0x1f0, %edx            # imm = 0x1F0
xorl %eax, %eax
callq 0x20e0
leaq 0x8154(%rip), %rdi      # 0xc6d4
callq 0x2080
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x46e6
movl 0x18(%rdi), %eax
jmp 0x463f
movzbl 0x18(%rdi), %eax
jmp 0x452a
movzbl 0x18(%rdi), %eax
jmp 0x463f
movslq 0x18(%rdi), %rax
jmp 0x463f
cmpq $0x0, 0x18(%rdi)
setne (%rdx)
jmp 0x46d9
movb 0x18(%rdi), %al
movb %al, (%rdx)
jmp 0x46d9
movsd 0x18(%rdi), %xmm0
unpcklps 0x7a6e(%rip), %xmm0     # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x7a76(%rip), %xmm0     # 0xc050
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd %xmm1, (%rdx)
jmp 0x46d9
movq $0x0, (%rdx)
leaq 0x7c9f(%rip), %rdi      # 0xc29c
leaq 0x7caa(%rip), %rsi      # 0xc2ae
movl $0x1ee, %edx            # imm = 0x1EE
jmp 0x4572
movl 0x18(%rdi), %eax
cvtsi2sd %rax, %xmm0
jmp 0x46d5
movl $0x0, (%rdx)
leaq 0x7c74(%rip), %rdi      # 0xc29c
leaq 0x7c7f(%rip), %rsi      # 0xc2ae
movl $0x1ec, %edx            # imm = 0x1EC
jmp 0x4572
cvttsd2si 0x18(%rdi), %rax
movq %rax, (%rdx)
jmp 0x46d9
cvtsi2sdq 0x18(%rdi), %xmm0
jmp 0x46d5
movq $0x0, (%rdx)
leaq 0x7c3c(%rip), %rdi      # 0xc29c
leaq 0x7c47(%rip), %rsi      # 0xc2ae
movl $0x1ed, %edx            # imm = 0x1ED
jmp 0x4572
xorpd %xmm0, %xmm0
ucomisd 0x18(%rdi), %xmm0
setp %al
setne %cl
orb %al, %cl
movb %cl, (%rdx)
jmp 0x46d9
cvttsd2si 0x18(%rdi), %eax
jmp 0x452a
cvtsi2sdl 0x18(%rdi), %xmm0
jmp 0x46d5
movb $0x0, (%rdx)
leaq 0x7bfb(%rip), %rdi      # 0xc29c
leaq 0x7c06(%rip), %rsi      # 0xc2ae
movl $0x1ea, %edx            # imm = 0x1EA
jmp 0x4572
movl $0x0, (%rdx)
leaq 0x7bdd(%rip), %rdi      # 0xc29c
leaq 0x7be8(%rip), %rsi      # 0xc2ae
movl $0x1eb, %edx            # imm = 0x1EB
jmp 0x4572
movsd 0x18(%rdi), %xmm0
movsd %xmm0, (%rdx)
movl 0x8(%rdi), %ecx
andl $0xf, %ecx
xorl %eax, %eax
cmpl %esi, %ecx
cmovnel %ecx, %eax
popq %rcx
retq
movq $0x0, (%rdx)
leaq 0x7ba6(%rip), %rdi      # 0xc29c
leaq 0x7bb1(%rip), %rsi      # 0xc2ae
movl $0x1ef, %edx            # imm = 0x1EF
jmp 0x4572