// File: /workspace/github_c_makefile_star2_O0/lengjingzju[P]json/json_test.c
// Function: sax_parser_cb
json_sax_ret_t _sax_parser_cb(json_sax_parser_t *parser)
{
    static json_sax_print_hd handle = NULL;
    json_string_t *jkey = &parser->array[parser->index];

    if (parser->index == 0) {
        switch (parser->array[parser->index].type) {
        case JSON_ARRAY:
        case JSON_OBJECT:
            if (parser->value.vcmd == JSON_SAX_START) {
                if (s_sax_for_file)
                    handle = json_sax_fprint_format_start(s_sax_item_num, s_dst_json_path, NULL);
                else
                    handle = json_sax_print_format_start(s_sax_item_num, NULL);
            }
            break;
        default:
            if (s_sax_for_file)
                handle = json_sax_fprint_format_start(s_sax_item_num, s_dst_json_path, NULL);
            else
                handle = json_sax_print_format_start(s_sax_item_num, NULL);
            break;
        }
    }

    switch (parser->array[parser->index].type) {
    case JSON_NULL:
        json_sax_print_null(handle, jkey);
        break;
    case JSON_BOOL:
        json_sax_print_bool(handle, jkey, parser->value.vnum.vbool);
        break;
    case JSON_INT:
        json_sax_print_int(handle, jkey, parser->value.vnum.vint);
        break;
    case JSON_HEX:
        json_sax_print_hex(handle, jkey, parser->value.vnum.vhex);
        break;
    case JSON_LINT:
        json_sax_print_lint(handle, jkey, parser->value.vnum.vlint);
        break;
    case JSON_LHEX:
        json_sax_print_lhex(handle, jkey, parser->value.vnum.vlhex);
        break;
    case JSON_DOUBLE:
        json_sax_print_double(handle, jkey, parser->value.vnum.vdbl);
        break;
    case JSON_STRING:
        json_sax_print_string(handle, jkey, &parser->value.vstr);
        break;
    case JSON_ARRAY:
        json_sax_print_array(handle, jkey, parser->value.vcmd);
        break;
    case JSON_OBJECT:
        json_sax_print_object(handle, jkey, parser->value.vcmd);
        break;
    default:
        break;
    }

    if (parser->index == 0) {
        switch (parser->array[parser->index].type) {
        case JSON_ARRAY:
        case JSON_OBJECT:
            if (parser->value.vcmd == JSON_SAX_FINISH) {
                if (s_sax_for_file) {
                    json_sax_print_finish(handle, NULL, NULL);
                } else {
                    s_print_str = json_sax_print_finish(handle, &s_print_size, NULL);
                }
            }
            break;
        default:
            if (s_sax_for_file) {
                json_sax_print_finish(handle, NULL, NULL);
            } else {
                s_print_str = json_sax_print_finish(handle, &s_print_size, NULL);
            }
            break;
        }
    }

    return JSON_SAX_PARSE_CONTINUE;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rsp), %rcx
movslq 0x4(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x1a46
movq 0x10(%rsp), %rcx
movq 0x8(%rcx), %rax
movslq 0x4(%rcx), %rcx
shlq $0x4, %rcx
movl (%rax,%rcx), %eax
andl $0xf, %eax
addl $-0x8, %eax
subl $0x1, %eax
ja 0x1a04
jmp 0x19b7
movq 0x10(%rsp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x1a02
testb $0x1, 0x147ff(%rip)     # 0x161c8
je 0x19ea
movl 0x147fb(%rip), %edi     # 0x161cc
leaq 0x147f8(%rip), %rsi     # 0x161d0
xorl %eax, %eax
movl %eax, %edx
callq 0x1c70
movq %rax, 0x147d8(%rip)     # 0x161c0
jmp 0x1a00
movl 0x147dc(%rip), %edi     # 0x161cc
xorl %eax, %eax
movl %eax, %esi
callq 0x1850
movq %rax, 0x147c0(%rip)     # 0x161c0
jmp 0x1a02
jmp 0x1a44
testb $0x1, 0x147bd(%rip)     # 0x161c8
je 0x1a2c
movl 0x147b9(%rip), %edi     # 0x161cc
leaq 0x147b6(%rip), %rsi     # 0x161d0
xorl %eax, %eax
movl %eax, %edx
callq 0x1c70
movq %rax, 0x14796(%rip)     # 0x161c0
jmp 0x1a42
movl 0x1479a(%rip), %edi     # 0x161cc
xorl %eax, %eax
movl %eax, %esi
callq 0x1850
movq %rax, 0x1477e(%rip)     # 0x161c0
jmp 0x1a44
jmp 0x1a46
movq 0x10(%rsp), %rcx
movq 0x8(%rcx), %rax
movslq 0x4(%rcx), %rcx
shlq $0x4, %rcx
movl (%rax,%rcx), %eax
andl $0xf, %eax
movl %eax, %ecx
movq %rcx, (%rsp)
subl $0x9, %eax
ja 0x1b9f
movq (%rsp), %rax
leaq 0xe589(%rip), %rcx      # 0x10000
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x14739(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
callq 0x1cc0
jmp 0x1ba1
movq 0x14723(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
movb 0x10(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x1cf0
jmp 0x1ba1
movq 0x14700(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
movl 0x10(%rax), %edx
callq 0x1900
jmp 0x1ba1
movq 0x146e2(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
movl 0x10(%rax), %edx
callq 0x1d30
jmp 0x1ba1
movq 0x146c4(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdx
callq 0x1d60
jmp 0x1ba1
movq 0x146a5(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdx
callq 0x1d90
jmp 0x1ba1
movq 0x14689(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
movsd 0x10(%rax), %xmm0
callq 0x1dc0
jmp 0x1ba1
movq 0x1466c(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq $0x10, %rdx
callq 0x18d0
jmp 0x1ba1
movq 0x14650(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
movl 0x10(%rax), %edx
callq 0x1930
jmp 0x1ba1
movq 0x14635(%rip), %rdi     # 0x161c0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
movl 0x10(%rax), %edx
callq 0x18a0
jmp 0x1ba1
jmp 0x1ba1
movq 0x10(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x1c5c
movq 0x10(%rsp), %rcx
movq 0x8(%rcx), %rax
movslq 0x4(%rcx), %rcx
shlq $0x4, %rcx
movl (%rax,%rcx), %eax
andl $0xf, %eax
addl $-0x8, %eax
subl $0x1, %eax
ja 0x1c1c
jmp 0x1bd1
movq 0x10(%rsp), %rax
cmpl $0x1, 0x10(%rax)
jne 0x1c1a
testb $0x1, 0x145e5(%rip)     # 0x161c8
je 0x1bfa
movq 0x145d4(%rip), %rdi     # 0x161c0
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x60f0
jmp 0x1c18
movq 0x145bf(%rip), %rdi     # 0x161c0
leaq 0x146c8(%rip), %rsi     # 0x162d0
xorl %eax, %eax
movl %eax, %edx
callq 0x60f0
movq %rax, 0x145a0(%rip)     # 0x161b8
jmp 0x1c1a
jmp 0x1c5a
testb $0x1, 0x145a5(%rip)     # 0x161c8
je 0x1c3a
movq 0x14594(%rip), %rdi     # 0x161c0
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x60f0
jmp 0x1c58
movq 0x1457f(%rip), %rdi     # 0x161c0
leaq 0x14688(%rip), %rsi     # 0x162d0
xorl %eax, %eax
movl %eax, %edx
callq 0x60f0
movq %rax, 0x14560(%rip)     # 0x161b8
jmp 0x1c5a
jmp 0x1c5c
xorl %eax, %eax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)