// File: /workspace/github_c_makefile_star2_O1/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 0x41cf
leaq 0x7fda(%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 0x4307
leaq 0x8049(%rip), %rcx      # 0xc108
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x0, 0x18(%rdi)
jmp 0x4224
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x425f
leaq 0x7fbf(%rip), %rcx      # 0xc0a8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsd 0x18(%rdi), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
subsd 0x7f69(%rip), %xmm0     # 0xc070
cvttsd2si %xmm0, %r8
sarq $0x3f, %rcx
andq %rcx, %r8
orq %rax, %r8
movq %r8, (%rdx)
jmp 0x4349
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x428b
leaq 0x7fa2(%rip), %rcx      # 0xc0d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cvttsd2si 0x18(%rdi), %rax
movl %eax, (%rdx)
jmp 0x4349
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x42c2
leaq 0x7f5c(%rip), %rcx      # 0xc0c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x18(%rdi), %rax
jmp 0x42af
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x4322
leaq 0x7f62(%rip), %rcx      # 0xc0f0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x18(%rdi), %eax
movl %eax, (%rdx)
jmp 0x4349
movl 0x8(%rdi), %eax
andl $0xf, %eax
decl %eax
cmpl $0x5, %eax
ja 0x4358
leaq 0x7ed7(%rip), %rcx      # 0xc090
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsbl 0x18(%rdi), %eax
cvtsi2sd %eax, %xmm0
jmp 0x4345
leaq 0x80c6(%rip), %rdi      # 0xc29c
leaq 0x80d1(%rip), %rsi      # 0xc2ae
movl $0x1f0, %edx            # imm = 0x1F0
xorl %eax, %eax
callq 0x20f0
leaq 0x84e4(%rip), %rdi      # 0xc6d4
callq 0x2090
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x4356
movl 0x18(%rdi), %eax
jmp 0x42af
movzbl 0x18(%rdi), %eax
jmp 0x419a
movzbl 0x18(%rdi), %eax
jmp 0x42af
movslq 0x18(%rdi), %rax
jmp 0x42af
cmpq $0x0, 0x18(%rdi)
setne (%rdx)
jmp 0x4349
movb 0x18(%rdi), %al
movb %al, (%rdx)
jmp 0x4349
movsd 0x18(%rdi), %xmm0
unpcklps 0x7dfe(%rip), %xmm0     # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x7e06(%rip), %xmm0     # 0xc050
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd %xmm1, (%rdx)
jmp 0x4349
movq $0x0, (%rdx)
leaq 0x802f(%rip), %rdi      # 0xc29c
leaq 0x803a(%rip), %rsi      # 0xc2ae
movl $0x1ee, %edx            # imm = 0x1EE
jmp 0x41e2
movl 0x18(%rdi), %eax
cvtsi2sd %rax, %xmm0
jmp 0x4345
movl $0x0, (%rdx)
leaq 0x8004(%rip), %rdi      # 0xc29c
leaq 0x800f(%rip), %rsi      # 0xc2ae
movl $0x1ec, %edx            # imm = 0x1EC
jmp 0x41e2
cvttsd2si 0x18(%rdi), %rax
movq %rax, (%rdx)
jmp 0x4349
cvtsi2sdq 0x18(%rdi), %xmm0
jmp 0x4345
movq $0x0, (%rdx)
leaq 0x7fcc(%rip), %rdi      # 0xc29c
leaq 0x7fd7(%rip), %rsi      # 0xc2ae
movl $0x1ed, %edx            # imm = 0x1ED
jmp 0x41e2
xorpd %xmm0, %xmm0
ucomisd 0x18(%rdi), %xmm0
setp %al
setne %cl
orb %al, %cl
movb %cl, (%rdx)
jmp 0x4349
cvttsd2si 0x18(%rdi), %eax
jmp 0x419a
cvtsi2sdl 0x18(%rdi), %xmm0
jmp 0x4345
movb $0x0, (%rdx)
leaq 0x7f8b(%rip), %rdi      # 0xc29c
leaq 0x7f96(%rip), %rsi      # 0xc2ae
movl $0x1ea, %edx            # imm = 0x1EA
jmp 0x41e2
movl $0x0, (%rdx)
leaq 0x7f6d(%rip), %rdi      # 0xc29c
leaq 0x7f78(%rip), %rsi      # 0xc2ae
movl $0x1eb, %edx            # imm = 0x1EB
jmp 0x41e2
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 0x7f36(%rip), %rdi      # 0xc29c
leaq 0x7f41(%rip), %rsi      # 0xc2ae
movl $0x1ef, %edx            # imm = 0x1EF
jmp 0x41e2