// File: /workspace/github_c_makefile_star2_O3/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, %rbx
movl %edi, %ebp
xorl %eax, %eax
movq %rax, 0x10(%rsp)
movq %rax, 0x8(%rsp)
leaq 0xb0(%rsp), %r14
movq %rax, 0x60(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%r14)
movaps %xmm0, 0x40(%r14)
movaps %xmm0, 0x30(%r14)
movaps %xmm0, 0x20(%r14)
movaps %xmm0, 0x10(%r14)
movaps %xmm0, (%r14)
movq %r14, %rdi
callq 0x3f3e
cmpl $0x3, %ebp
je 0x352a
cmpl $0x2, %ebp
jne 0x355a
movq 0x8(%rbx), %rdi
callq 0x11d0
testl %eax, %eax
jne 0x355a
callq 0x3085
xorl %ebp, %ebp
jmp 0x361a
movq 0x8(%rbx), %r15
leaq 0x6b59(%rip), %r12      # 0xa08e
cmpb $0x0, (%r15)
je 0x354d
movq %r15, %rdi
xorl %esi, %esi
callq 0x11b0
testl %eax, %eax
je 0x362e
movq %r12, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x10c0
movq (%rbx), %rbx
leaq 0x6c75(%rip), %rdi      # 0xa1d9
leaq 0x6c84(%rip), %r14      # 0xa1ef
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10c0
leaq 0x6c77(%rip), %rdi      # 0xa1f6
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10c0
leaq 0x6c87(%rip), %rdi      # 0xa21a
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10c0
leaq 0x6c9c(%rip), %rdi      # 0xa243
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10c0
leaq 0x6cb2(%rip), %rdi      # 0xa26d
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10c0
leaq 0x6cc3(%rip), %rdi      # 0xa292
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10c0
leaq 0x6cd9(%rip), %rdi      # 0xa2bc
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10c0
leaq 0x6ced(%rip), %rdi      # 0xa2e4
movq %rbx, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10c0
leaq 0x6d02(%rip), %rdi      # 0xa30d
movq %rbx, %rsi
xorl %eax, %eax
callq 0x10c0
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(%rbx), %rdi
callq 0x11d0
movl %eax, %r12d
leal -0x8(%r12), %eax
cmpl $-0x7, %eax
jb 0x355a
movl %r12d, 0x4(%rsp)
leaq 0x40(%rsp), %r13
movl $0x1, %edi
movq %r13, %rsi
callq 0x1080
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r13)
imull $0x3e8, (%r13), %ebp    # imm = 0x3E8
cmpl $0x6, %r12d
ja 0x36a9
movl $0x4e, %eax
movl 0x4(%rsp), %ecx
btl %ecx, %eax
jae 0x36a9
leaq 0x8(%rsp), %rsi
movq %rdx, %r13
leaq 0x10(%rsp), %rdx
movq %r15, %rdi
callq 0x2f53
movq %r13, %rdx
testl %eax, %eax
js 0x3737
movq %rdx, %rax
shrq $0x3f, %rax
shrq $0x12, %rdx
addl %eax, %edx
addl %ebp, %edx
movq %rdx, 0x88(%rsp)
leaq 0x40(%rsp), %r13
movl $0x1, %edi
movq %r13, %rsi
callq 0x1080
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r13)
movq %rdx, %rbx
imull $0x3e8, (%r13), %eax    # imm = 0x3E8
movq %rdx, %rcx
shrq $0x3f, %rcx
shrq $0x12, %rbx
addl %ecx, %ebx
addl %eax, %ebx
decl %r12d
leaq 0x6924(%rip), %rax      # 0xa028
movslq (%rax,%r12,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x8(%rsp), %rax
movq 0x10(%rsp), %rcx
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rdi
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, (%rdi)
movq %rax, 0x30(%rdi)
movq %rcx, 0x10(%rdi)
jmp 0x37b9
leaq 0x6962(%rip), %r12      # 0xa0a0
jmp 0x354d
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0x30(%rdi)
movq %r15, 0x28(%rdi)
movq %r14, 0x20(%rdi)
jmp 0x37ef
movq 0x8(%rsp), %rax
movq 0x10(%rsp), %rcx
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq %rax, 0x30(%rdi)
movq %r14, 0x20(%rdi)
movq %rcx, 0x10(%rdi)
movb $0x1, 0x18(%rdi)
jmp 0x37ef
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0x30(%rdi)
movq %r15, 0x28(%rdi)
callq 0x4f97
movq %rax, %r13
movb $0x1, %bpl
jmp 0x37f9
movq 0x8(%rsp), %rax
movq 0x10(%rsp), %rcx
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq %rax, 0x30(%rdi)
movq %r14, 0x20(%rdi)
movq %rcx, 0x10(%rdi)
callq 0x4f97
movq %rax, %r13
xorl %ebp, %ebp
testq %r13, %r13
je 0x385f
leaq 0x40(%rsp), %r14
movl $0x1, %edi
movq %r14, %rsi
callq 0x1080
imull $0x3e8, (%r14), %eax    # imm = 0x3E8
movl %eax, 0x38(%rsp)
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r14)
movq %rdx, 0x18(%rsp)
leaq 0xc8eb(%rip), %r14      # 0x10120
leaq 0x687a(%rip), %rdx      # 0xa0b6
movl $0x100, %esi            # imm = 0x100
movq %r14, %rdi
movq %r15, %rcx
movl 0x4(%rsp), %r8d
xorl %eax, %eax
callq 0x10d0
testb %bpl, %bpl
je 0x3875
movq 0x10(%rsp), %rdx
jmp 0x3891
leaq 0x6b0a(%rip), %rdi      # 0xa370
callq 0x1060
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jmp 0x3c2d
leaq 0xb8(%rsp), %rdi
callq 0x4020
cltq
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
mulq %rcx
shrq $0x5, %rdx
cmpl $0x2, %r12d
movl %ebp, 0x3c(%rsp)
movq %rdx, 0x80(%rsp)
xorps %xmm0, %xmm0
ja 0x38e4
leaq 0x40(%rsp), %r14
movaps %xmm0, 0x10(%r14)
movaps %xmm0, 0x20(%r14)
movaps %xmm0, (%r14)
movb $0x1, 0x1c(%r14)
movl %edx, 0x18(%r14)
movq %r13, %rdi
movq %r14, %rsi
callq 0x4120
movq (%r14), %rcx
movq %rcx, 0xc945(%rip)      # 0x10220
movq %rax, 0xc826(%rip)      # 0x10108
jmp 0x390b
leaq 0x40(%rsp), %rsi
movaps %xmm0, 0x10(%rsi)
movaps %xmm0, (%rsi)
movb $0x1, 0x1c(%rsi)
movl %edx, 0x18(%rsi)
movq %r14, 0x28(%rsi)
movq $0x0, 0x20(%rsi)
movq %r13, %rdi
callq 0x4120
movq %r13, 0x20(%rsp)
movq %rbx, 0xa8(%rsp)
movq 0x18(%rsp), %rax
movq %rax, %rcx
shrq $0x3f, %rcx
movq %rcx, 0xa0(%rsp)
shrq $0x12, %rax
movq %rax, 0x18(%rsp)
leaq 0x40(%rsp), %r14
movl $0x1, %edi
movq %r14, %rsi
callq 0x1080
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r14)
movq %rdx, %rbp
imull $0x3e8, (%r14), %eax    # imm = 0x3E8
movl %eax, 0x34(%rsp)
movq %rdx, %rax
shrq $0x3f, %rax
movq %rax, 0x98(%rsp)
shrq $0x12, %rbp
movq 0xc78b(%rip), %rdi      # 0x10108
testq %rdi, %rdi
je 0x39ac
movq 0xc897(%rip), %rsi      # 0x10220
leaq 0xc790(%rip), %rdx      # 0x10120
callq 0x2ec9
movq 0xc76c(%rip), %rdi      # 0x10108
callq 0x3e43
movq $0x0, 0xc75c(%rip) # 0x10108
leaq 0x40(%rsp), %r14
movl $0x1, %edi
movq %r14, %rsi
callq 0x1080
imull $0x3e8, (%r14), %eax    # imm = 0x3E8
movl %eax, 0x2c(%rsp)
movabsq $0x431bde82d7b634db, %rbx # imm = 0x431BDE82D7B634DB
movq %rbx, %rax
imulq 0x8(%r14)
movq %rdx, 0x90(%rsp)
leaq 0x40(%rsp), %r14
movl $0x1, %edi
movq %r14, %rsi
callq 0x1080
imull $0x3e8, (%r14), %eax    # imm = 0x3E8
movl %eax, 0x30(%rsp)
movq %rbx, %rax
imulq 0x8(%r14)
movq %rdx, %r13
movq %rdx, %r14
shrq $0x3f, %r14
shrq $0x12, %r13
leaq 0xc705(%rip), %rbx      # 0x10120
leaq 0x6706(%rip), %rdx      # 0xa128
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdi
movq %r15, %rcx
movl 0x4(%rsp), %r8d
xorl %eax, %eax
callq 0x10d0
xorps %xmm0, %xmm0
cmpl $0x2, %r12d
ja 0x3a7d
leaq 0x40(%rsp), %rbx
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, 0x20(%rbx)
movaps %xmm0, (%rbx)
movq 0x80(%rsp), %rax
movl %eax, 0x18(%rbx)
movq 0x20(%rsp), %rdi
movq %rbx, %rsi
callq 0x4120
movq (%rbx), %rcx
movq %rcx, 0xc7ac(%rip)      # 0x10220
movq %rax, 0xc68d(%rip)      # 0x10108
jmp 0x3aaa
leaq 0x40(%rsp), %rsi
movaps %xmm0, 0x10(%rsi)
movaps %xmm0, (%rsi)
movq 0x80(%rsp), %rax
movl %eax, 0x18(%rsi)
movq %rbx, 0x28(%rsi)
movq $0x0, 0x20(%rsi)
movq 0x20(%rsp), %rdi
callq 0x4120
movq 0x18(%rsp), %rax
addl 0xa0(%rsp), %eax
movq %rax, 0x18(%rsp)
addl 0x98(%rsp), %ebp
addl %r14d, %r13d
leaq 0x40(%rsp), %rbx
movl $0x1, %edi
movq %rbx, %rsi
callq 0x1080
imull $0x3e8, (%rbx), %r14d   # imm = 0x3E8
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%rbx)
movq %rdx, %r15
movq %rdx, %rax
shrq $0x3f, %rax
shrq $0x12, %r15
addl %eax, %r15d
movq 0xc604(%rip), %rdi      # 0x10108
testq %rdi, %rdi
je 0x3b33
movq 0xc710(%rip), %rsi      # 0x10220
leaq 0xc609(%rip), %rdx      # 0x10120
callq 0x2ec9
movq 0xc5e5(%rip), %rdi      # 0x10108
callq 0x3e43
movq $0x0, 0xc5d5(%rip) # 0x10108
movq 0x18(%rsp), %rbx
addl 0x38(%rsp), %ebx
addl 0x34(%rsp), %ebp
addl 0x30(%rsp), %r13d
addl %r14d, %r15d
leaq 0x40(%rsp), %rsi
movl $0x1, %edi
callq 0x1080
cmpl $0x2, %r12d
movq 0xa8(%rsp), %r8
ja 0x3bec
movq 0x90(%rsp), %r9
movq %r9, %rax
shrq $0x3f, %rax
shrq $0x12, %r9
addl %eax, %r9d
addl 0x2c(%rsp), %r9d
movq 0x40(%rsp), %rcx
movq 0x48(%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 %ebp, %r9d
subl %ebx, %ebp
subl %r8d, %ebx
subl 0x88(%rsp), %r8d
subl %r15d, %r10d
subl %r13d, %r15d
leaq 0x656d(%rip), %rdi      # 0xa13c
movl 0x4(%rsp), %esi
movl %r8d, %edx
movl %ebx, %ecx
movl %ebp, %r8d
xorl %eax, %eax
pushq %r10
pushq %r15
callq 0x10c0
addq $0x10, %rsp
jmp 0x3c0d
subl %ebx, %ebp
subl %r8d, %ebx
subl %r13d, %r15d
leaq 0x6591(%rip), %rdi      # 0xa18c
movl 0x4(%rsp), %esi
movl %ebx, %edx
movl %ebp, %ecx
movl %r15d, %r8d
xorl %eax, %eax
callq 0x10c0
cmpb $0x0, 0x3c(%rsp)
movq 0x20(%rsp), %rdi
je 0x3c1e
callq 0x3e4d
leaq 0xb0(%rsp), %rdi
callq 0x3f87
xorl %ebp, %ebp
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x361a
callq 0x1030
jmp 0x361a
movq 0x10(%rsp), %rax
movq 0x8(%rsp), %rcx
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rdi
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq %rcx, 0x10(%rdi)
leaq -0x9b4(%rip), %rcx      # 0x32b5
movq %rcx, 0x20(%rdi)
movq %rax, 0x8(%rdi)
shrq $0x5, %rax
movl %eax, 0xc4a1(%rip)      # 0x1011c
callq 0x64cc
testl %eax, %eax
js 0x3e2b
leaq 0x40(%rsp), %r14
movl $0x1, %edi
movq %r14, %rsi
callq 0x1080
imull $0x3e8, (%r14), %ecx    # imm = 0x3E8
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r14)
movq %rdx, %r14
movq %rdx, %rax
shrq $0x3f, %rax
shrq $0x12, %r14
addl %eax, %r14d
addl %ecx, %r14d
cmpq $0x0, 0xc43d(%rip)      # 0x10108
je 0x3d20
leaq 0xc44c(%rip), %r12      # 0x10120
leaq 0x63db(%rip), %rdx      # 0xa0b6
movl $0x100, %esi            # imm = 0x100
movq %r12, %rdi
movq %r15, %rcx
movl $0x6, %r8d
xorl %eax, %eax
callq 0x10d0
movq 0xc40e(%rip), %rdi      # 0x10108
movq 0xc51f(%rip), %rsi      # 0x10220
movq %r12, %rdx
callq 0x2ec9
movq 0xc3f8(%rip), %rdi      # 0x10108
callq 0x3e43
movq $0x0, 0xc3e8(%rip) # 0x10108
leaq 0x40(%rsp), %r15
movl $0x1, %edi
movq %r15, %rsi
callq 0x1080
imull $0x3e8, (%r15), %ecx    # imm = 0x3E8
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r15)
movq %rdx, %r8
shrq $0x3f, %r8
shrq $0x12, %rdx
addl %edx, %r8d
addl %ecx, %r8d
subl %r14d, %r8d
subl %ebx, %r14d
subl 0x88(%rsp), %ebx
leaq 0x635c(%rip), %rdi      # 0xa0c8
xorl %ebp, %ebp
movl $0x6, %esi
movl %ebx, %edx
movl %r14d, %ecx
xorl %eax, %eax
callq 0x10c0
jmp 0x3c2d
movb $0x1, 0xc38d(%rip)      # 0x10118
leaq 0xc38e(%rip), %rdi      # 0x10120
leaq 0x631d(%rip), %rdx      # 0xa0b6
xorl %ebp, %ebp
movl $0x100, %esi            # imm = 0x100
movq %r15, %rcx
movl $0x7, %r8d
xorl %eax, %eax
callq 0x10d0
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq %r15, 0x18(%rdi)
leaq -0xb19(%rip), %rax      # 0x32b5
movq %rax, 0x20(%rdi)
callq 0x64cc
testl %eax, %eax
js 0x3e37
leaq 0x40(%rsp), %r14
movl $0x1, %edi
movq %r14, %rsi
callq 0x1080
imull $0x3e8, (%r14), %ecx    # imm = 0x3E8
movabsq $0x431bde82d7b634db, %rax # imm = 0x431BDE82D7B634DB
imulq 0x8(%r14)
movq %rdx, %rax
shrq $0x3f, %rax
shrq $0x12, %rdx
addl %eax, %edx
addl %ecx, %edx
subl %ebx, %edx
leaq 0x62e6(%rip), %rdi      # 0xa100
movl $0x7, %esi
xorl %eax, %eax
callq 0x10c0
jmp 0x3c2d
leaq 0x6523(%rip), %rdi      # 0xa355
jmp 0x3866
leaq 0x64fb(%rip), %rdi      # 0xa339
jmp 0x3866