// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x68, %rsp
movq %rdi, 0x58(%rsp)
movl %esi, 0x54(%rsp)
movq %rdx, 0x48(%rsp)
movl 0x54(%rsp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x40(%rsp)
subl $0x5, %eax
ja 0x3536
movq 0x40(%rsp), %rax
leaq 0x101a4(%rip), %rcx     # 0x13078
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x2edf
movq 0x58(%rsp), %rax
movl 0x8(%rax), %eax
andl $0xf, %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x38(%rsp)
subl $0x5, %eax
ja 0x2fb5
movq 0x38(%rsp), %rax
leaq 0x10200(%rip), %rcx     # 0x13108
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rsp), %rax
movb 0x18(%rax), %cl
movq 0x48(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
jmp 0x2ff2
movq 0x58(%rsp), %rax
cmpl $0x0, 0x18(%rax)
setne %cl
movq 0x48(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
jmp 0x2ff2
movq 0x58(%rsp), %rax
cmpl $0x0, 0x18(%rax)
setne %cl
movq 0x48(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
jmp 0x2ff2
movq 0x58(%rsp), %rax
cmpq $0x0, 0x18(%rax)
setne %cl
movq 0x48(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
jmp 0x2ff2
movq 0x58(%rsp), %rax
cmpq $0x0, 0x18(%rax)
setne %cl
movq 0x48(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
jmp 0x2ff2
movq 0x58(%rsp), %rax
movsd 0x18(%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
setne %cl
setp %al
orb %al, %cl
movq 0x48(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
jmp 0x2ff2
movq 0x48(%rsp), %rax
movb $0x0, (%rax)
leaq 0x10874(%rip), %rdi     # 0x13838
leaq 0x108d2(%rip), %rsi     # 0x1389d
movl $0x1ea, %edx            # imm = 0x1EA
movb $0x0, %al
callq 0x2100
leaq 0x108d5(%rip), %rdi     # 0x138b3
movb $0x0, %al
callq 0x2100
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x359a
jmp 0x2ff4
jmp 0x356a
jmp 0x2ffb
movq 0x58(%rsp), %rax
movl 0x8(%rax), %eax
andl $0xf, %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x30(%rsp)
subl $0x5, %eax
ja 0x30a6
movq 0x30(%rsp), %rax
leaq 0x100cc(%rip), %rcx     # 0x130f0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rsp), %rax
movb 0x18(%rax), %al
andb $0x1, %al
movzbl %al, %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x30e6
movq 0x58(%rsp), %rax
movl 0x18(%rax), %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x30e6
movq 0x58(%rsp), %rax
movl 0x18(%rax), %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x30e6
movq 0x58(%rsp), %rax
movq 0x18(%rax), %rax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x30e6
movq 0x58(%rsp), %rax
movq 0x18(%rax), %rax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x30e6
movq 0x58(%rsp), %rax
cvttsd2si 0x18(%rax), %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x30e6
movq 0x48(%rsp), %rax
movl $0x0, (%rax)
leaq 0x10780(%rip), %rdi     # 0x13838
leaq 0x107de(%rip), %rsi     # 0x1389d
movl $0x1eb, %edx            # imm = 0x1EB
movb $0x0, %al
callq 0x2100
leaq 0x107e1(%rip), %rdi     # 0x138b3
movb $0x0, %al
callq 0x2100
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x359a
jmp 0x30e8
jmp 0x356a
jmp 0x30ef
movq 0x58(%rsp), %rax
movl 0x8(%rax), %eax
andl $0xf, %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x28(%rsp)
subl $0x5, %eax
ja 0x319d
movq 0x28(%rsp), %rax
leaq 0xffc0(%rip), %rcx      # 0x130d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rsp), %rax
movb 0x18(%rax), %al
andb $0x1, %al
movzbl %al, %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x31dd
movq 0x58(%rsp), %rax
movl 0x18(%rax), %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x31dd
movq 0x58(%rsp), %rax
movl 0x18(%rax), %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x31dd
movq 0x58(%rsp), %rax
movq 0x18(%rax), %rax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x31dd
movq 0x58(%rsp), %rax
movq 0x18(%rax), %rax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x31dd
movq 0x58(%rsp), %rax
cvttsd2si 0x18(%rax), %rax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movl %ecx, (%rax)
jmp 0x31dd
movq 0x48(%rsp), %rax
movl $0x0, (%rax)
leaq 0x10689(%rip), %rdi     # 0x13838
leaq 0x106e7(%rip), %rsi     # 0x1389d
movl $0x1ec, %edx            # imm = 0x1EC
movb $0x0, %al
callq 0x2100
leaq 0x106ea(%rip), %rdi     # 0x138b3
movb $0x0, %al
callq 0x2100
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x359a
jmp 0x31df
jmp 0x356a
jmp 0x31e6
movq 0x58(%rsp), %rax
movl 0x8(%rax), %eax
andl $0xf, %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x20(%rsp)
subl $0x5, %eax
ja 0x3299
movq 0x20(%rsp), %rax
leaq 0xfeb1(%rip), %rcx      # 0x130c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rsp), %rax
movb 0x18(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x32da
movq 0x58(%rsp), %rax
movslq 0x18(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x32da
movq 0x58(%rsp), %rax
movl 0x18(%rax), %eax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x32da
movq 0x58(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x32da
movq 0x58(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x32da
movq 0x58(%rsp), %rax
cvttsd2si 0x18(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x32da
movq 0x48(%rsp), %rax
movq $0x0, (%rax)
leaq 0x1058c(%rip), %rdi     # 0x13838
leaq 0x105ea(%rip), %rsi     # 0x1389d
movl $0x1ed, %edx            # imm = 0x1ED
movb $0x0, %al
callq 0x2100
leaq 0x105ed(%rip), %rdi     # 0x138b3
movb $0x0, %al
callq 0x2100
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x359a
jmp 0x32dc
jmp 0x356a
jmp 0x32e3
movq 0x58(%rsp), %rax
movl 0x8(%rax), %eax
andl $0xf, %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x18(%rsp)
subl $0x5, %eax
ja 0x33c1
movq 0x18(%rsp), %rax
leaq 0xfd9c(%rip), %rcx      # 0x130a8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rsp), %rax
movb 0x18(%rax), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x3402
movq 0x58(%rsp), %rax
movslq 0x18(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x3402
movq 0x58(%rsp), %rax
movl 0x18(%rax), %eax
movl %eax, %ecx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x3402
movq 0x58(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x3402
movq 0x58(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x3402
movq 0x58(%rsp), %rax
movsd 0x18(%rax), %xmm0
movsd 0xfcd7(%rip), %xmm2     # 0x13070
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rax, %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
jmp 0x3402
movq 0x48(%rsp), %rax
movq $0x0, (%rax)
leaq 0x10464(%rip), %rdi     # 0x13838
leaq 0x104c2(%rip), %rsi     # 0x1389d
movl $0x1ee, %edx            # imm = 0x1EE
movb $0x0, %al
callq 0x2100
leaq 0x104c5(%rip), %rdi     # 0x138b3
movb $0x0, %al
callq 0x2100
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x359a
jmp 0x3404
jmp 0x356a
jmp 0x340b
movq 0x58(%rsp), %rax
movl 0x8(%rax), %eax
andl $0xf, %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x10(%rsp)
subl $0x5, %eax
ja 0x34f4
movq 0x10(%rsp), %rax
leaq 0xfc5c(%rip), %rcx      # 0x13090
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x58(%rsp), %rax
movb 0x18(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movq 0x48(%rsp), %rax
movsd %xmm0, (%rax)
jmp 0x3532
movq 0x58(%rsp), %rax
cvtsi2sdl 0x18(%rax), %xmm0
movq 0x48(%rsp), %rax
movsd %xmm0, (%rax)
jmp 0x3532
movq 0x58(%rsp), %rax
movl 0x18(%rax), %eax
cvtsi2sd %rax, %xmm0
movq 0x48(%rsp), %rax
movsd %xmm0, (%rax)
jmp 0x3532
movq 0x58(%rsp), %rax
cvtsi2sdq 0x18(%rax), %xmm0
movq 0x48(%rsp), %rax
movsd %xmm0, (%rax)
jmp 0x3532
movq 0x58(%rsp), %rax
movq 0x18(%rax), %xmm0
movaps 0xfb97(%rip), %xmm1     # 0x13050
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xfb9b(%rip), %xmm1     # 0x13060
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq 0x48(%rsp), %rax
movsd %xmm0, (%rax)
jmp 0x3532
movq 0x58(%rsp), %rax
movsd 0x18(%rax), %xmm0
movq 0x48(%rsp), %rax
movsd %xmm0, (%rax)
jmp 0x3532
movq 0x48(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
leaq 0x10331(%rip), %rdi     # 0x13838
leaq 0x1038f(%rip), %rsi     # 0x1389d
movl $0x1ef, %edx            # imm = 0x1EF
movb $0x0, %al
callq 0x2100
leaq 0x10392(%rip), %rdi     # 0x138b3
movb $0x0, %al
callq 0x2100
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x359a
jmp 0x3534
jmp 0x356a
jmp 0x3538
leaq 0x102f9(%rip), %rdi     # 0x13838
leaq 0x10357(%rip), %rsi     # 0x1389d
movl $0x1f0, %edx            # imm = 0x1F0
movb $0x0, %al
callq 0x2100
leaq 0x1035a(%rip), %rdi     # 0x138b3
movb $0x0, %al
callq 0x2100
movl $0xffffffff, 0x64(%rsp) # imm = 0xFFFFFFFF
jmp 0x359a
movq 0x58(%rsp), %rax
movl 0x8(%rax), %eax
andl $0xf, %eax
cmpl 0x54(%rsp), %eax
jne 0x3583
xorl %eax, %eax
movl %eax, 0xc(%rsp)
jmp 0x3592
movq 0x58(%rsp), %rax
movl 0x8(%rax), %eax
andl $0xf, %eax
movl %eax, 0xc(%rsp)
movl 0xc(%rsp), %eax
movl %eax, 0x64(%rsp)
movl 0x64(%rsp), %eax
addq $0x68, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)