// File: fgheng[P]keysound/src/cJSON.cc
// Function: parse_hex4(char const*)
static unsigned parse_hex4(const char *str)
{
	unsigned h=0;
	if (*str>='0' && *str<='9') h+=(*str)-'0'; else if (*str>='A' && *str<='F') h+=10+(*str)-'A'; else if (*str>='a' && *str<='f') h+=10+(*str)-'a'; else return 0;
	h=h<<4;str++;
	if (*str>='0' && *str<='9') h+=(*str)-'0'; else if (*str>='A' && *str<='F') h+=10+(*str)-'A'; else if (*str>='a' && *str<='f') h+=10+(*str)-'a'; else return 0;
	h=h<<4;str++;
	if (*str>='0' && *str<='9') h+=(*str)-'0'; else if (*str>='A' && *str<='F') h+=10+(*str)-'A'; else if (*str>='a' && *str<='f') h+=10+(*str)-'a'; else return 0;
	h=h<<4;str++;
	if (*str>='0' && *str<='9') h+=(*str)-'0'; else if (*str>='A' && *str<='F') h+=10+(*str)-'A'; else if (*str>='a' && *str<='f') h+=10+(*str)-'a'; else return 0;
	return h;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jl 0x10b09
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
jg 0x10b09
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10b73
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x41, %eax
jl 0x10b36
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x46, %eax
jg 0x10b36
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
addl $0xa, %eax
subl $0x41, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10b71
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x61, %eax
jl 0x10b63
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x66, %eax
jg 0x10b63
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
addl $0xa, %eax
subl $0x61, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10b6f
movl $0x0, -0x4(%rbp)
jmp 0x10d71
jmp 0x10b71
jmp 0x10b73
movl -0x14(%rbp), %eax
shll $0x4, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jl 0x10bb2
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
jg 0x10bb2
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10c1c
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x41, %eax
jl 0x10bdf
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x46, %eax
jg 0x10bdf
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
addl $0xa, %eax
subl $0x41, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10c1a
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x61, %eax
jl 0x10c0c
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x66, %eax
jg 0x10c0c
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
addl $0xa, %eax
subl $0x61, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10c18
movl $0x0, -0x4(%rbp)
jmp 0x10d71
jmp 0x10c1a
jmp 0x10c1c
movl -0x14(%rbp), %eax
shll $0x4, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jl 0x10c5b
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
jg 0x10c5b
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10cc5
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x41, %eax
jl 0x10c88
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x46, %eax
jg 0x10c88
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
addl $0xa, %eax
subl $0x41, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10cc3
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x61, %eax
jl 0x10cb5
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x66, %eax
jg 0x10cb5
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
addl $0xa, %eax
subl $0x61, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10cc1
movl $0x0, -0x4(%rbp)
jmp 0x10d71
jmp 0x10cc3
jmp 0x10cc5
movl -0x14(%rbp), %eax
shll $0x4, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jl 0x10d04
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
jg 0x10d04
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
subl $0x30, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10d6b
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x41, %eax
jl 0x10d31
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x46, %eax
jg 0x10d31
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
addl $0xa, %eax
subl $0x41, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10d69
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x61, %eax
jl 0x10d5e
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x66, %eax
jg 0x10d5e
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
addl $0xa, %eax
subl $0x61, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
jmp 0x10d67
movl $0x0, -0x4(%rbp)
jmp 0x10d71
jmp 0x10d69
jmp 0x10d6b
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)