// File: /workspace/github_c_makefile_star2_O1/lengjingzju[P]json/json_test.c
// Function: main
int main(int argc, char *argv[])
{
    int ret = 0;
    size_t size = 0;
    int nitem = 0, nflag = 0;
    int choice = 0;
    char *file = NULL;
    char *data = NULL;
    json_object *json = NULL;
    json_mem_t mem = {0};
    unsigned int ms[8] = {0};

    pjson_memory_init(&mem);

#if JSON_SAX_APIS_SUPPORT
    if (argc == 2) {
        choice = atoi(argv[1]);
        if (choice == 0) {
            test_json_sax_print();
            return 0;
        } else {
            goto err;
        }
    }
#endif
    if (argc != 3)
        goto err;

    file = argv[1];
    if (strlen(file) == 0 || access(file, F_OK) != 0) {
        printf("%s is not exist!\n", file);
        goto err;
    }
    choice = atoi(argv[2]);
    if (choice < 1 || choice > 7)
        goto err;

    ms[0] = _system_ms_get();
    switch(choice)
    {
    case 1: case 2: case 3:
#if JSON_SAX_APIS_SUPPORT
    case 6:
#endif
        if (read_file_to_data(file, &data, &size) < 0) {
            printf("read file %s failed!\n", file);
            goto err;
        }
        break;
    default:
        break;
    }

    ms[1] = _system_ms_get();
    switch(choice)
    {
    case 1: json = json_parse_str(data, size); break;
    case 2: json = json_fast_parse_str(data, size, &mem); nflag = 1; break;
    case 3: json = json_reuse_parse_str(data, size, &mem); nflag = 1; break;
    case 4: json = json_parse_file(file); break;
    case 5: json = json_fast_parse_file(file, &mem); nflag = 1; break;

#if JSON_SAX_APIS_SUPPORT
    case 6:
        s_sax_item_num = (int)(size >> 5);
        if (json_sax_parse_str(data, size, _sax_parser_cb) < 0) {
            printf("json_sax_parse_str failed!\n");
            ret = -1;
            goto end;
        }

        ms[2] = _system_ms_get();
        if (s_print_str) {
            snprintf(s_dst_json_path, sizeof(s_dst_json_path), "%s-%d.format.json", file, choice);
            copy_data_to_file(s_print_str, s_print_size, s_dst_json_path);
            json_memory_free(s_print_str);
            s_print_str = NULL;
        }

        ms[3] = _system_ms_get();
        printf("[sax] %d. read=%-5d parse+format=%-5d       write=%-5d\n", choice, ms[1]-ms[0], ms[2]-ms[1], ms[3]-ms[2]);
        goto end;
    case 7:
        s_sax_for_file = true;
        snprintf(s_dst_json_path, sizeof(s_dst_json_path), "%s-%d.format.json", file, choice);
        if (json_sax_parse_file(file, _sax_parser_cb) < 0) {
            printf("json_sax_parse_file failed!\n");
            ret = -1;
            goto end;
        }

        ms[2] = _system_ms_get();
        printf("[sax] %d. read+parse+format+write=%-5d\n", choice, ms[2]-ms[1]);
        goto end;
#endif
    default:
        break;
    }

    if (!json) {
        printf("json parse failed!\n");
        ret = -1;
        goto end;
    }

    ms[2] = _system_ms_get();
    snprintf(s_dst_json_path, sizeof(s_dst_json_path), "%s-%d.format.json", file, choice);
    if (nflag)
        nitem = pjson_memory_statistics(&mem.obj_mgr) / sizeof(json_object);
    else
        nitem = (int)(size >> 5);
    switch(choice)
    {
    case 1: case 2: case 3:
        s_print_str = json_print_format(json, nitem, &s_print_size, NULL);
        break;
    case 4: case 5:
        json_fprint_format(json, nitem, s_dst_json_path, NULL);
        break;
    default:
        break;
    }

    ms[3] = _system_ms_get();
    if (s_print_str) {
        copy_data_to_file(s_print_str, s_print_size, s_dst_json_path);
        json_memory_free(s_print_str);
        s_print_str = NULL;
    }
    ms[4] = _system_ms_get();

    //sleep(1);

    ms[5] = _system_ms_get();
    snprintf(s_dst_json_path, sizeof(s_dst_json_path), "%s-%d.unformat.json", file, choice);
    switch(choice)
    {
    case 1: case 2: case 3:
        s_print_str = json_print_unformat(json, nitem, &s_print_size, NULL);
        break;
    case 4: case 5:
        json_fprint_unformat(json, nitem, s_dst_json_path, NULL);
        break;
    default:
        break;
    }

    ms[6] = _system_ms_get();
    if (s_print_str) {
        copy_data_to_file(s_print_str, s_print_size, s_dst_json_path);
        json_memory_free(s_print_str);
        s_print_str = NULL;
    }
    ms[7] = _system_ms_get();

    switch(choice)
    {
    case 1: case 2: case 3:
        printf("[dom] %d. read=%-5d parse=%-5d format=%-5d write=%-5d unformat=%-5d write=%-5d\n",
            choice, ms[1]-ms[0], ms[2]-ms[1], ms[3]-ms[2], ms[4]-ms[3], ms[6]-ms[5], ms[7]-ms[6]);
        break;
    case 4: case 5:
        printf("[dom] %d. read+parse=%-5d       format+write=%-5d       unformat+write=%-5d\n",
            choice, ms[2]-ms[1], ms[3]-ms[2], ms[6]-ms[5]);
        break;
    default:
        break;
    }

    if (!nflag && json)
        json_del_object(json);
    pjson_memory_free(&mem);
end:
    if (data)
        read_file_data_free(&data, &size);
    return ret;

err:
    usage_print(argv[0]);
    return -1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rsi, %r14
movl %edi, %ebx
xorl %eax, %eax
movq %rax, 0x18(%rsp)
movq %rax, 0x10(%rsp)
leaq 0xb0(%rsp), %r13
movq %rax, 0x60(%r13)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%r13)
movaps %xmm0, 0x40(%r13)
movaps %xmm0, 0x30(%r13)
movaps %xmm0, 0x20(%r13)
movaps %xmm0, 0x10(%r13)
movaps %xmm0, (%r13)
movq %r13, %rdi
callq 0x3bca
cmpl $0x3, %ebx
je 0x318f
cmpl $0x2, %ebx
jne 0x31c0
movq 0x8(%r14), %rdi
callq 0x11e0
testl %eax, %eax
jne 0x31c0
callq 0x2cd3
xorl %ebp, %ebp
jmp 0x3280
movq 0x8(%r14), %r12
leaq 0x6ef4(%rip), %rbx      # 0xa08e
cmpb $0x0, (%r12)
je 0x31b3
movq %r12, %rdi
xorl %esi, %esi
callq 0x11c0
testl %eax, %eax
je 0x3294
movq %rbx, %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x10d0
movq (%r14), %rbx
leaq 0x700f(%rip), %rdi      # 0xa1d9
leaq 0x701e(%rip), %r14      # 0xa1ef
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10d0
leaq 0x7011(%rip), %rdi      # 0xa1f6
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10d0
leaq 0x7021(%rip), %rdi      # 0xa21a
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10d0
leaq 0x7036(%rip), %rdi      # 0xa243
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10d0
leaq 0x704c(%rip), %rdi      # 0xa26d
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10d0
leaq 0x705d(%rip), %rdi      # 0xa292
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10d0
leaq 0x7073(%rip), %rdi      # 0xa2bc
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10d0
leaq 0x7087(%rip), %rdi      # 0xa2e4
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10d0
leaq 0x709c(%rip), %rdi      # 0xa30d
movq %rbx, %rsi
xorl %eax, %eax
callq 0x10d0
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl %ebp, %eax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x10(%r14), %rdi
callq 0x11e0
movl %eax, %ebx
leal -0x8(%rbx), %eax
cmpl $-0x7, %eax
jb 0x31c0
leaq 0x50(%rsp), %rbp
movl $0x1, %edi
movq %rbp, %rsi
callq 0x1090
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%rbp)
movq %rdx, %r15
imull $0x3e8, (%rbp), %ebp    # imm = 0x3E8
cmpl $0x6, %ebx
ja 0x32fe
movl $0x4e, %eax
btl %ebx, %eax
jae 0x32fe
leaq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdx
movq %r12, %rdi
callq 0x2bb5
testl %eax, %eax
js 0x338c
movq %r15, %rax
shrq $0x3f, %rax
shrq $0x12, %r15
addl %eax, %r15d
addl %ebp, %r15d
leaq 0x50(%rsp), %rbp
movl $0x1, %edi
movq %rbp, %rsi
callq 0x1090
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%rbp)
movq %rdx, %r14
imull $0x3e8, (%rbp), %eax    # imm = 0x3E8
movq %rdx, %rcx
shrq $0x3f, %rcx
shrq $0x12, %r14
addl %ecx, %r14d
addl %eax, %r14d
leal -0x1(%rbx), %ecx
leaq 0x6cd4(%rip), %rax      # 0xa028
movq %rcx, 0x38(%rsp)
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rcx
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, (%rdi)
movq %rax, 0x30(%rdi)
movq %rcx, 0x10(%rdi)
jmp 0x340e
leaq 0x6d0d(%rip), %rbx      # 0xa0a0
jmp 0x31b3
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0x30(%rdi)
movq %r12, 0x28(%rdi)
movq %r13, 0x20(%rdi)
jmp 0x3447
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rcx
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq %rax, 0x30(%rdi)
movq %r13, 0x20(%rdi)
movq %rcx, 0x10(%rdi)
movb $0x1, 0x18(%rdi)
jmp 0x3447
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0x30(%rdi)
movq %r12, 0x28(%rdi)
callq 0x4bad
movq %rax, %rbp
movb $0x1, %al
movl %eax, 0xc(%rsp)
jmp 0x3457
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rcx
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq %rax, 0x30(%rdi)
movq %r13, 0x20(%rdi)
movq %rcx, 0x10(%rdi)
callq 0x4bad
movq %rax, %rbp
movl $0x0, 0xc(%rsp)
testq %rbp, %rbp
je 0x34be
leaq 0x50(%rsp), %r13
movl $0x1, %edi
movq %r13, %rsi
callq 0x1090
imull $0x3e8, (%r13), %eax    # imm = 0x3E8
movl %eax, 0x4c(%rsp)
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r13)
movq %rdx, 0x20(%rsp)
leaq 0xcc9c(%rip), %r13      # 0x10130
leaq 0x6c1b(%rip), %rdx      # 0xa0b6
movl $0x100, %esi            # imm = 0x100
movq %r13, %rdi
movq %r12, %rcx
movl %ebx, %r8d
xorl %eax, %eax
callq 0x10e0
cmpb $0x0, 0xc(%rsp)
je 0x34d4
movq 0x18(%rsp), %rdx
jmp 0x34f0
leaq 0x6eab(%rip), %rdi      # 0xa370
callq 0x1070
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jmp 0x38da
leaq 0xb8(%rsp), %rdi
callq 0x3c86
cltq
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
mulq %rcx
shrq $0x5, %rdx
cmpl $0x3, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
jae 0x3547
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %r13
movaps %xmm0, 0x10(%r13)
movaps %xmm0, 0x20(%r13)
movaps %xmm0, (%r13)
movb $0x1, 0x1c(%r13)
movl %edx, 0x18(%r13)
movq $0x0, 0x20(%r13)
movq %rbp, %rdi
movq %r13, %rsi
callq 0x3d8a
movq (%r13), %rcx
movq %rcx, 0xccf2(%rip)      # 0x10230
movq %rax, 0xcbd3(%rip)      # 0x10118
jmp 0x3582
leal -0x4(%rbx), %eax
cmpl $0x2, %eax
jae 0x3582
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rsi
movaps %xmm0, 0x10(%rsi)
movaps %xmm0, 0x20(%rsi)
movaps %xmm0, (%rsi)
movb $0x1, 0x1c(%rsi)
movq 0x30(%rsp), %rax
movl %eax, 0x18(%rsi)
movq %r13, 0x28(%rsi)
movq $0x0, 0x20(%rsi)
movq %rbp, %rdi
callq 0x3d8a
movq %rbp, 0x28(%rsp)
movq %r15, 0xa8(%rsp)
movq %r14, 0x88(%rsp)
movq 0x20(%rsp), %rax
movq %rax, %rcx
shrq $0x3f, %rcx
movq %rcx, 0xa0(%rsp)
shrq $0x12, %rax
movq %rax, 0x20(%rsp)
leaq 0x50(%rsp), %rbp
movl $0x1, %edi
movq %rbp, %rsi
callq 0x1090
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%rbp)
movq %rdx, %r13
imull $0x3e8, (%rbp), %eax    # imm = 0x3E8
movl %eax, 0x48(%rsp)
movq %rdx, %rax
shrq $0x3f, %rax
movq %rax, 0x98(%rsp)
shrq $0x12, %r13
movq 0xcb1c(%rip), %rdi      # 0x10118
testq %rdi, %rdi
je 0x362b
movq 0xcc28(%rip), %rsi      # 0x10230
leaq 0xcb21(%rip), %rdx      # 0x10130
callq 0x2b29
movq 0xcafd(%rip), %rdi      # 0x10118
callq 0x3aed
movq $0x0, 0xcaed(%rip) # 0x10118
leaq 0x50(%rsp), %rbp
movl $0x1, %edi
movq %rbp, %rsi
callq 0x1090
imull $0x3e8, (%rbp), %eax    # imm = 0x3E8
movl %eax, 0x40(%rsp)
movabsq $0x431bde82d7b634db, %r15 # imm = 0x431BDE82D7B634DB
movq %r15, %rax
imulq 0x8(%rbp)
movq %rdx, 0x90(%rsp)
leaq 0x50(%rsp), %rbp
movl $0x1, %edi
movq %rbp, %rsi
callq 0x1090
imull $0x3e8, (%rbp), %eax    # imm = 0x3E8
movl %eax, 0x44(%rsp)
movq %r15, %rax
imulq 0x8(%rbp)
movq %rdx, %r14
movq %rdx, %rbp
shrq $0x3f, %rbp
shrq $0x12, %r14
leaq 0xca96(%rip), %r15      # 0x10130
leaq 0x6a87(%rip), %rdx      # 0xa128
movl $0x100, %esi            # imm = 0x100
movq %r15, %rdi
movq %r12, %rcx
movl %ebx, %r8d
xorl %eax, %eax
callq 0x10e0
cmpl $0x3, 0x38(%rsp)
jae 0x3704
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %r15
movaps %xmm0, 0x10(%r15)
movaps %xmm0, 0x20(%r15)
movaps %xmm0, (%r15)
movq 0x30(%rsp), %rax
movl %eax, 0x18(%r15)
movq $0x0, 0x20(%r15)
movq 0x28(%rsp), %rdi
movq %r15, %rsi
callq 0x3d8a
movq (%r15), %rcx
movq %rcx, 0xcb35(%rip)      # 0x10230
movq %rax, 0xca16(%rip)      # 0x10118
jmp 0x373d
leal -0x4(%rbx), %eax
cmpl $0x2, %eax
jae 0x373d
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rsi
movaps %xmm0, 0x10(%rsi)
movaps %xmm0, 0x20(%rsi)
movaps %xmm0, (%rsi)
movq 0x30(%rsp), %rax
movl %eax, 0x18(%rsi)
movq %r15, 0x28(%rsi)
movq $0x0, 0x20(%rsi)
movq 0x28(%rsp), %rdi
callq 0x3d8a
movq 0x20(%rsp), %rax
addl 0xa0(%rsp), %eax
movq %rax, 0x20(%rsp)
addl 0x98(%rsp), %r13d
addl %ebp, %r14d
leaq 0x50(%rsp), %r15
movl $0x1, %edi
movq %r15, %rsi
callq 0x1090
imull $0x3e8, (%r15), %ebp    # imm = 0x3E8
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r15)
movq %rdx, %r12
movq %rdx, %rax
shrq $0x3f, %rax
shrq $0x12, %r12
addl %eax, %r12d
movq 0xc980(%rip), %rdi      # 0x10118
testq %rdi, %rdi
je 0x37c7
movq 0xca8c(%rip), %rsi      # 0x10230
leaq 0xc985(%rip), %rdx      # 0x10130
callq 0x2b29
movq 0xc961(%rip), %rdi      # 0x10118
callq 0x3aed
movq $0x0, 0xc951(%rip) # 0x10118
movq 0x20(%rsp), %r15
addl 0x4c(%rsp), %r15d
addl 0x48(%rsp), %r13d
addl 0x44(%rsp), %r14d
addl %ebp, %r12d
leaq 0x50(%rsp), %rsi
movl $0x1, %edi
callq 0x1090
cmpl $0x3, 0x38(%rsp)
movq 0xa8(%rsp), %rsi
jae 0x3887
movq 0x90(%rsp), %r9
movq %r9, %rax
shrq $0x3f, %rax
shrq $0x12, %r9
addl %eax, %r9d
addl 0x40(%rsp), %r9d
movq 0x50(%rsp), %rcx
movq 0x58(%rsp), %rax
movabsq $0x431bde82d7b634db, %rdx # imm = 0x431BDE82D7B634DB
imulq %rdx
movq %rdx, %rax
shrq $0x3f, %rax
shrq $0x12, %rdx
addl %eax, %edx
imull $0x3e8, %ecx, %r10d     # imm = 0x3E8
addl %edx, %r10d
subl %r13d, %r9d
subl %r15d, %r13d
movq 0x88(%rsp), %rdx
subl %edx, %r15d
subl %esi, %edx
subl %r12d, %r10d
subl %r14d, %r12d
leaq 0x68d3(%rip), %rdi      # 0xa13c
movl %ebx, %esi
movl %r15d, %ecx
movl %r13d, %r8d
xorl %eax, %eax
pushq %r10
pushq %r12
callq 0x10d0
addq $0x10, %rsp
movq 0x28(%rsp), %r15
jmp 0x38bc
movq %r15, %rdx
movl %ebx, %eax
addl $-0x4, %eax
cmpl $0x2, %eax
movq 0x28(%rsp), %r15
jae 0x38bc
subl %edx, %r13d
subl 0x88(%rsp), %edx
subl %r14d, %r12d
leaq 0x68df(%rip), %rdi      # 0xa18c
movl %ebx, %esi
movl %r13d, %ecx
movl %r12d, %r8d
xorl %eax, %eax
callq 0x10d0
cmpb $0x0, 0xc(%rsp)
je 0x38cb
movq %r15, %rdi
callq 0x3af7
leaq 0xb0(%rsp), %rdi
callq 0x3c13
xorl %ebp, %ebp
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3280
callq 0x1030
xorl %eax, %eax
movq %rax, 0x10(%rsp)
movq %rax, 0x18(%rsp)
jmp 0x3280
movq 0x18(%rsp), %rax
movq 0x10(%rsp), %rcx
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq %rcx, 0x10(%rdi)
leaq -0xa09(%rip), %rcx      # 0x2f19
movq %rcx, 0x20(%rdi)
movq %rax, 0x8(%rdi)
shrq $0x5, %rax
movl %eax, 0xc7f8(%rip)      # 0x1012c
callq 0x6633
testl %eax, %eax
js 0x3ad5
leaq 0x50(%rsp), %r13
movl $0x1, %edi
movq %r13, %rsi
callq 0x1090
imull $0x3e8, (%r13), %ecx    # imm = 0x3E8
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r13)
movq %rdx, %r13
movq %rdx, %rax
shrq $0x3f, %rax
shrq $0x12, %r13
addl %eax, %r13d
addl %ecx, %r13d
cmpq $0x0, 0xc793(%rip)      # 0x10118
je 0x39d7
leaq 0xc7a2(%rip), %rbp      # 0x10130
leaq 0x6721(%rip), %rdx      # 0xa0b6
movl $0x100, %esi            # imm = 0x100
movq %rbp, %rdi
movq %r12, %rcx
movl %ebx, %r8d
xorl %eax, %eax
callq 0x10e0
movq 0xc767(%rip), %rdi      # 0x10118
movq 0xc878(%rip), %rsi      # 0x10230
movq %rbp, %rdx
callq 0x2b29
movq 0xc751(%rip), %rdi      # 0x10118
callq 0x3aed
movq $0x0, 0xc741(%rip) # 0x10118
leaq 0x50(%rsp), %r12
movl $0x1, %edi
movq %r12, %rsi
callq 0x1090
imull $0x3e8, (%r12), %ecx    # imm = 0x3E8
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r12)
movq %rdx, %r8
shrq $0x3f, %r8
shrq $0x12, %rdx
addl %edx, %r8d
addl %ecx, %r8d
subl %r13d, %r8d
subl %r14d, %r13d
subl %r15d, %r14d
leaq 0x66a7(%rip), %rdi      # 0xa0c8
xorl %ebp, %ebp
movl %ebx, %esi
movl %r14d, %edx
movl %r13d, %ecx
xorl %eax, %eax
callq 0x10d0
jmp 0x38da
movb $0x1, 0xc6ea(%rip)      # 0x10128
leaq 0xc6eb(%rip), %rdi      # 0x10130
leaq 0x666a(%rip), %rdx      # 0xa0b6
xorl %ebp, %ebp
movl $0x100, %esi            # imm = 0x100
movq %r12, %rcx
movl %ebx, %r8d
xorl %eax, %eax
callq 0x10e0
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq %r12, 0x18(%rdi)
leaq -0xb61(%rip), %rax      # 0x2f19
movq %rax, 0x20(%rdi)
callq 0x6633
testl %eax, %eax
js 0x3ae1
leaq 0x50(%rsp), %r15
movl $0x1, %edi
movq %r15, %rsi
callq 0x1090
imull $0x3e8, (%r15), %ecx    # imm = 0x3E8
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r15)
movq %rdx, %rax
shrq $0x3f, %rax
shrq $0x12, %rdx
addl %eax, %edx
addl %ecx, %edx
subl %r14d, %edx
leaq 0x6639(%rip), %rdi      # 0xa100
movl %ebx, %esi
xorl %eax, %eax
callq 0x10d0
jmp 0x38da
leaq 0x6879(%rip), %rdi      # 0xa355
jmp 0x34c5
leaq 0x6851(%rip), %rdi      # 0xa339
jmp 0x34c5