// File: jo-qzy[P]MyJson/./json.hpp
// Function: JSON::value_parse::parse_object(JSON::Value*)
int parse_object(Value* element = nullptr) {
            it++;
            skip_blank();
            int ret = 0;
            std::map<std::string, Value> tmp_object;
            if (*it == '}') {
                if (element != nullptr)
                    *element = tmp_object;
                else
                    *root = tmp_object;
                return PARSE_OK;
            }
            for (;;) {
                skip_blank();
                CHECK_ITERATOR(it);
                if (*it != '\"')
                    return PARSE_MISS_KEY;
                std::string key_str;
                std::string::const_iterator tmp_it = it;
                if ((ret = parse_string(key_str, tmp_it)) != PARSE_OK)
                    return PARSE_MISS_KEY;
                it = tmp_it;
                skip_blank();
                CHECK_ITERATOR(it);
                if (*it != ':')
                    return PARSE_MISS_COLON;
                it++;
                skip_blank();
                CHECK_ITERATOR(it);
                Value tmp_root;
                if ((ret = parse_value(&tmp_root)) != PARSE_OK)
                    return ret;
                tmp_object.insert(make_pair(key_str, tmp_root));
                skip_blank();
                CHECK_ITERATOR(it);
                if (*it == '}') {
                    it++;
                    if (element != nullptr)
                        *element = tmp_object;
                    else
                        *root = tmp_object;
                    return PARSE_OK;
                }
                else if (*it == ',')
                    it++;
                else {
                    return PARSE_MISS_COMMA_OR_CURLY_BRACKET;
                }
            }
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2a0, %rsp            # imm = 0x2A0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x250(%rbp)
addq $0x20, %rdi
xorl %esi, %esi
callq 0x3f10
movq -0x250(%rbp), %rdi
movq %rax, -0x20(%rbp)
callq 0x3c60
movl $0x0, -0x24(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x37f0
movq -0x250(%rbp), %rdi
addq $0x20, %rdi
callq 0x3ef0
movsbl (%rax), %eax
cmpl $0x7d, %eax
jne 0x44d5
cmpq $0x0, -0x18(%rbp)
je 0x44aa
movq -0x18(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x8800
jmp 0x4497
jmp 0x44c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x491b
movq -0x250(%rbp), %rax
movq 0x28(%rax), %rdi
leaq -0x58(%rbp), %rsi
callq 0x8800
jmp 0x44c0
jmp 0x44c2
movl $0x0, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x4906
jmp 0x44d7
movq -0x250(%rbp), %rdi
callq 0x3c60
movq -0x250(%rbp), %rdi
movq %rdi, %rax
addq $0x20, %rax
movq %rax, -0x258(%rbp)
callq 0x20f0
movq -0x258(%rbp), %rdi
movq %rax, -0x70(%rbp)
leaq -0x70(%rbp), %rsi
callq 0x3f70
testb $0x1, %al
jne 0x4517
jmp 0x452a
movl $0x5, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x4906
jmp 0x452c
jmp 0x452e
movq -0x250(%rbp), %rdi
addq $0x20, %rdi
callq 0x3ef0
movsbl (%rax), %eax
cmpl $0x22, %eax
je 0x4559
movl $0xb, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x4906
leaq -0x90(%rbp), %rdi
movq %rdi, -0x268(%rbp)
callq 0x22b0
movq -0x250(%rbp), %rdi
movq -0x268(%rbp), %rsi
movq 0x20(%rdi), %rax
movq %rax, -0x98(%rbp)
leaq -0x98(%rbp), %rdx
callq 0x8840
movl %eax, -0x25c(%rbp)
jmp 0x4599
movl -0x25c(%rbp), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
je 0x45cb
movl $0xb, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x48d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x48f8
movq -0x250(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, 0x20(%rdi)
callq 0x3c60
movq -0x250(%rbp), %rdi
movq %rdi, %rax
addq $0x20, %rax
movq %rax, -0x270(%rbp)
callq 0x20f0
movq -0x270(%rbp), %rdi
movq %rax, -0xa0(%rbp)
leaq -0xa0(%rbp), %rsi
callq 0x3f70
testb $0x1, %al
jne 0x461c
jmp 0x462f
movl $0x5, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x48d2
jmp 0x4631
jmp 0x4633
movq -0x250(%rbp), %rdi
addq $0x20, %rdi
callq 0x3ef0
movsbl (%rax), %eax
cmpl $0x3a, %eax
je 0x465e
movl $0xc, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x48d2
movq -0x250(%rbp), %rdi
addq $0x20, %rdi
xorl %esi, %esi
callq 0x3f10
movq -0x250(%rbp), %rdi
movq %rax, -0xa8(%rbp)
callq 0x3c60
movq -0x250(%rbp), %rdi
movq %rdi, %rax
addq $0x20, %rax
movq %rax, -0x278(%rbp)
callq 0x20f0
movq -0x278(%rbp), %rdi
movq %rax, -0xb0(%rbp)
leaq -0xb0(%rbp), %rsi
callq 0x3f70
testb $0x1, %al
jne 0x46bd
jmp 0x46d0
movl $0x5, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x48d2
jmp 0x46d2
jmp 0x46d4
leaq -0x158(%rbp), %rdi
callq 0x2de0
jmp 0x46e2
movq -0x250(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x3cf0
movl %eax, -0x27c(%rbp)
jmp 0x46fd
movl -0x27c(%rbp), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
je 0x472e
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x48c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x48ec
leaq -0x220(%rbp), %rdi
leaq -0x90(%rbp), %rsi
leaq -0x158(%rbp), %rdx
callq 0x8c30
jmp 0x474a
leaq -0x58(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x71a0
movb %dl, -0x289(%rbp)
movq %rax, -0x288(%rbp)
jmp 0x4769
movb -0x289(%rbp), %al
movq -0x288(%rbp), %rcx
movq %rcx, -0x230(%rbp)
movb %al, -0x228(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x72c0
movq -0x250(%rbp), %rdi
callq 0x3c60
movq -0x250(%rbp), %rdi
movq %rdi, %rax
addq $0x20, %rax
movq %rax, -0x298(%rbp)
callq 0x20f0
movq -0x298(%rbp), %rdi
movq %rax, -0x238(%rbp)
leaq -0x238(%rbp), %rsi
callq 0x3f70
testb $0x1, %al
jne 0x47d5
jmp 0x4805
movl $0x5, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x48c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x72c0
jmp 0x48ec
jmp 0x4807
jmp 0x4809
movq -0x250(%rbp), %rdi
addq $0x20, %rdi
callq 0x3ef0
movsbl (%rax), %eax
cmpl $0x7d, %eax
jne 0x487a
movq -0x250(%rbp), %rdi
addq $0x20, %rdi
xorl %esi, %esi
callq 0x3f10
movq %rax, -0x240(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x4852
movq -0x18(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x8800
jmp 0x4850
jmp 0x486a
movq -0x250(%rbp), %rax
movq 0x28(%rax), %rdi
leaq -0x58(%rbp), %rsi
callq 0x8800
jmp 0x4868
jmp 0x486a
movl $0x0, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x48c6
movq -0x250(%rbp), %rdi
addq $0x20, %rdi
callq 0x3ef0
movsbl (%rax), %eax
cmpl $0x2c, %eax
jne 0x48ad
movq -0x250(%rbp), %rdi
addq $0x20, %rdi
xorl %esi, %esi
callq 0x3f10
movq %rax, -0x248(%rbp)
jmp 0x48bd
movl $0xd, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x48c6
jmp 0x48bf
movl $0x0, -0x68(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x3010
leaq -0x90(%rbp), %rdi
callq 0x2120
movl -0x68(%rbp), %eax
testl %eax, %eax
jne 0x4906
jmp 0x48e7
jmp 0x44d7
leaq -0x158(%rbp), %rdi
callq 0x3010
leaq -0x90(%rbp), %rdi
callq 0x2120
jmp 0x491b
leaq -0x58(%rbp), %rdi
callq 0x8c70
movl -0x4(%rbp), %eax
addq $0x2a0, %rsp            # imm = 0x2A0
popq %rbp
retq
leaq -0x58(%rbp), %rdi
callq 0x8c70
movq -0x60(%rbp), %rdi
callq 0x22f0
nopl (%rax)