// File: /workspace/github_c_makefile_star2_O2/hfiguiere[P]exifprobe/x3f.c
// Function: process_x3f_direntry
void
process_x3f_direntry(FILE *inptr,unsigned short byteorder,struct x3f_direntry *entry,
                            unsigned long offset,struct image_summary *summary_entry,
                            char *parent_name,int entry_num,int indent)
{
    struct x3f_imag_header *imag_header;
    struct x3f_prop_header *prop_header;
    struct x3f_camf_header *camf_header;
    unsigned long data_offset = 0UL;
    unsigned long data_length = 0UL;
    char *dirname = CNULL;
    int chpr = 0;

    if(entry)
    {
        if((PRINT_SECTION))
        {
            print_tag_address(SECTION,entry->data_offset,indent,"@");
            chpr += printf("<%4.4s:%d> (%#06lx)",(char *)&entry->data_type,entry_num,entry->data_type);
            chpr += printf(" length %lu",entry->data_length);
            chpr = newline(chpr);
        }
        switch(entry->data_type)
        {
            case X3F_IMAG:
                dirname = splice(parent_name,".","IMAG");
                imag_header = read_x3f_imag_header(inptr,byteorder,entry->data_offset);
                data_offset = display_x3f_imag_header(entry,imag_header,dirname,entry_num,
                                                                    indent + MEDIUMINDENT);
                data_length = entry->data_length - (data_offset - entry->data_offset);
                if((summary_entry == NULL) || summary_entry->entry_lock)
                    summary_entry = new_summary_entry(summary_entry,FILEFMT_X3F,IMGFMT_X3F);
                if(summary_entry)
                {
                    switch(imag_header->image_type)
                    {
                        case 2:
                            summary_entry->subfiletype = REDUCED_RES_TYPE;
                            break;
                        case 3:
                            /* observed; spec doesn't say             */
                            summary_entry->subfiletype = PRIMARY_TYPE;
                            break;
                        default:
                            /* assume this; spec doesn't say          */
                            summary_entry->subfiletype = REDUCED_RES_TYPE;
                            break;
                    }
                    switch(imag_header->image_format)
                    {
                        case 3:
                            summary_entry->imagesubformat = IMGSUBFMT_RGB;
                            break;
                        case 11:
                            summary_entry->imagesubformat = IMGSUBFMT_HUFF_COMPRESSED_RGB;
                            break;
                        case 18:
                            summary_entry->imagesubformat = IMGSUBFMT_JPEG_COMPRESSED_RGB;
                            break;
                        case 6:
                            summary_entry->imagesubformat = IMGSUBFMT_X3F_COMPRESSED;
                            break;
                        default:
                            summary_entry->imagesubformat = IMGSUBFMT_X3F_UNSPECIFIED;
                            break;
                    }
                    summary_entry->imageformat = IMGFMT_X3F;
                    summary_entry->pixel_width = imag_header->image_width;
                    summary_entry->pixel_height = imag_header->image_height;
                    summary_entry->offset = data_offset;
                    summary_entry->length = data_length;
                    summary_entry->entry_lock = lock_number(summary_entry);

                }
                if((PRINT_SECTION))
                {
                    print_tag_address(SECTION,data_offset,indent + MEDIUMINDENT,"@");
                    chpr += printf("<IMAG.Data> length %lu",data_length);
                    chpr = newline(chpr);
                    dumpsection(inptr,data_offset,data_length,indent + LARGEINDENT);
                    print_tag_address(SECTION,entry->data_offset + entry->data_length - 1,
                                                                indent + MEDIUMINDENT,"@");
                    chpr += printf("</IMAG.Data>");
                }
                else if((LIST_MODE))
                {
                    print_tag_address(ENTRY,data_offset,indent + MEDIUMINDENT,"@");
                    if((PRINT_TAGINFO))
                    {
                        if((PRINT_LONGNAMES))
                            chpr += printf("%s:%d.",dirname,entry_num);
                        else
                            chpr += printf("IMAG:%d.",entry_num);
                        chpr += printf("Data");
                        if((PRINT_VALUE))
                        {
                            putindent(X3FTAGWIDTH - 7);
                            chpr += printf(" = ");
                        }
                    }
                    if((PRINT_VALUE))
                        chpr += printf("@%lu:%lu",data_offset,data_length);
                }
                chpr = newline(chpr);
                break;
            case X3F_IMA2:
                dirname = splice(parent_name,".","IMA2");
                imag_header = read_x3f_imag_header(inptr,byteorder,entry->data_offset);
                data_offset = display_x3f_imag_header(entry,imag_header,dirname,entry_num,
                                                                    indent + MEDIUMINDENT);
                data_length = entry->data_length - (data_offset - entry->data_offset);
                if((summary_entry == NULL) || summary_entry->entry_lock)
                    summary_entry = new_summary_entry(summary_entry,FILEFMT_X3F,IMGFMT_X3F);
                if(summary_entry)
                {
                    switch(imag_header->image_type)
                    {
                        case 2:
                            summary_entry->subfiletype = REDUCED_RES_TYPE;
                            break;
                        case 3:
                            /* observed; spec doesn't say             */
                            summary_entry->subfiletype = PRIMARY_TYPE;
                            break;
                        default:
                            /* assume this; spec doesn't say          */
                            summary_entry->subfiletype = REDUCED_RES_TYPE;
                            break;
                    }
                    switch(imag_header->image_format)
                    {
                        case 3:
                            summary_entry->imagesubformat = IMGSUBFMT_RGB;
                            break;
                        case 11:
                            summary_entry->imagesubformat = IMGSUBFMT_HUFF_COMPRESSED_RGB;
                            break;
                        case 18:
                            summary_entry->imagesubformat = IMGSUBFMT_JPEG_COMPRESSED_RGB;
                            break;
                        case 6:
                            /* No idea how "raw" this is, or how it's */
                            /* compressed/encoded                     */
                            summary_entry->imagesubformat = IMGSUBFMT_X3F_COMPRESSED;
                            break;
                        default:
                            summary_entry->imagesubformat = IMGSUBFMT_X3F_UNSPECIFIED;
                            break;
                    }
                    summary_entry->imageformat = IMGFMT_X3F;
                    summary_entry->pixel_width = imag_header->image_width;
                    summary_entry->pixel_height = imag_header->image_height;
                    summary_entry->offset = data_offset;
                    summary_entry->length = data_length;
                    summary_entry->entry_lock = lock_number(summary_entry);

                }
                if((PRINT_SECTION))
                {
                    print_tag_address(SECTION,data_offset,indent + MEDIUMINDENT,"@");
                    chpr += printf("<IMA2.Data> length %lu",data_length);
                    chpr = newline(chpr);
                    dumpsection(inptr,data_offset,data_length,indent + LARGEINDENT);
                    print_tag_address(SECTION,entry->data_offset + entry->data_length - 1,
                                                                indent + MEDIUMINDENT,"@");
                    chpr += printf("</IMA2.Data>");
                }
                else if((LIST_MODE))
                {
                    print_tag_address(ENTRY,data_offset,indent + MEDIUMINDENT,"@");
                    if((PRINT_TAGINFO))
                    {
                        if((PRINT_LONGNAMES))
                            chpr += printf("%s:%d.",dirname,entry_num);
                        else
                            chpr += printf("IMA2:%d.",entry_num);
                        chpr += printf("Data");
                        if((PRINT_VALUE))
                        {
                            putindent(X3FTAGWIDTH - 7);
                            chpr += printf(" = ");
                        }
                    }
                    if((PRINT_VALUE))
                        chpr += printf("@%lu:%lu",data_offset,data_length);
                }
                chpr = newline(chpr);
                break;
            case X3F_PROP:
                dirname = splice(parent_name,".","PROP");
                prop_header = read_x3f_prop_header(inptr,byteorder,entry->data_offset);
                data_offset = display_x3f_prop_header(entry,prop_header,dirname,entry_num,
                                                                    indent + MEDIUMINDENT);
                data_length = entry->data_length - (data_offset - entry->data_offset);
                process_x3f_props(inptr,byteorder,data_offset,data_length,
                                                prop_header->char_format,dirname,
                                                prop_header->num_entries,
                                                indent + MEDIUMINDENT);
                break;
            case X3F_CAMF:
                dirname = splice(parent_name,".","CAMF");
                camf_header = read_x3f_camf_header(inptr,byteorder,entry->data_offset);
                data_offset = display_x3f_camf_header(entry,camf_header,dirname,entry_num,
                                                                    indent + MEDIUMINDENT);
                data_length = entry->data_length - (data_offset - entry->data_offset);
                if((PRINT_SECTION))
                {
                    print_tag_address(SECTION,data_offset,indent + MEDIUMINDENT,"@");
                    chpr += printf("<CAMF.Data> length %lu",data_length);
                    chpr = newline(chpr);
                    dumpsection(inptr,data_offset,data_length,indent + LARGEINDENT);
                    print_tag_address(SECTION,entry->data_offset + entry->data_length - 1,
                                                                indent + MEDIUMINDENT,"@");
                    chpr += printf("</CAMF.Data>");
                }
                else if((LIST_MODE))
                {
                    print_tag_address(ENTRY,data_offset,indent + MEDIUMINDENT,"@");
                    if((PRINT_TAGINFO))
                    {
                        if((PRINT_LONGNAMES))
                            chpr += printf("%s:%d.",dirname,entry_num);
                        else
                            chpr += printf("CAMF:%d.",entry_num);
                        chpr += printf("Data");
                        if((PRINT_VALUE))
                        {
                            putindent(X3FTAGWIDTH - 7);
                            chpr += printf(" = ");
                        }
                    }
                    if((PRINT_VALUE))
                        chpr += printf("@%lu:%lu",data_offset,data_length);
                }
                chpr = newline(chpr);
                break;
            default:
                if((PRINT_SECTION))
                {
                    print_tag_address(SECTION,entry->data_offset,indent + MEDIUMINDENT,"@");
                    chpr += printf("<%4.4s> length %lu",(char *)&entry->section_id,entry->data_length);
                    chpr = newline(chpr);
                    dumpsection(inptr,data_offset,data_length,indent + LARGEINDENT);
                    print_tag_address(SECTION,entry->data_offset + entry->data_length - 1,
                                                                indent + MEDIUMINDENT,"@");
                    chpr += printf("</%4.4s>",(char *)&entry->section_id);
                }
                else if((LIST_MODE))
                {
                    print_tag_address(ENTRY,data_offset,indent,"@");
                    if((PRINT_TAGINFO))
                    {
                        if((PRINT_LONGNAMES))
                            chpr += printf("%s:%d.",dirname,entry_num);
                        else
                            chpr += printf("%4.4s:%d.",(char *)&entry->section_id,entry_num);
                        if((PRINT_VALUE))
                        {
                            putindent(X3FTAGWIDTH - 7);
                            chpr += printf(" = ");
                        }
                    }
                    if((PRINT_VALUE))
                        chpr += printf("@%lu:%lu",entry->data_offset,entry->data_length);
                }
                chpr = newline(chpr);
                break;
        }
        if((PRINT_SECTION))
        {
            print_tag_address(SECTION,entry->data_offset + entry->data_length - 1,indent,"@");
            chpr += printf("</%4.4s:%d>",(char *)&entry->data_type,entry_num);
            chpr += newline(chpr);
        }
        if(dirname)
            free(dirname);
    }
}

// Assembly:
testq %rdx, %rdx
je 0x283cd
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %r9, %r12
movq %r8, %rbx
movq %rdx, %r14
movl %esi, %r15d
movq %rdi, 0x28(%rsp)
movl 0x78(%rsp), %r13d
movl 0x70(%rsp), %eax
movl %eax, 0xc(%rsp)
leaq 0x2eedf(%rip), %rax     # 0x57180
xorl %ebp, %ebp
testb $0x4, 0x2(%rax)
je 0x282fa
movq 0x8(%r14), %rsi
leaq 0x16e28(%rip), %rcx     # 0x3f0dc
movl $0x40000, %edi          # imm = 0x40000
movl %r13d, %edx
callq 0x5100
leaq 0x18(%r14), %rsi
movq 0x18(%r14), %rcx
leaq 0x1f736(%rip), %rdi     # 0x47a06
movl 0xc(%rsp), %edx
xorl %eax, %eax
callq 0x3120
movl %eax, %ebp
movq 0x10(%r14), %rsi
leaq 0x1e422(%rip), %rdi     # 0x4670a
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x160f7
movl %eax, %ebp
movq 0x18(%r14), %rax
cmpq $0x32414d49, %rax       # imm = 0x32414D49
movq %r13, 0x30(%rsp)
je 0x28515
cmpq $0x464d4143, %rax       # imm = 0x464D4143
je 0x283ce
cmpq $0x504f5250, %rax       # imm = 0x504F5250
je 0x2848e
cmpq $0x47414d49, %rax       # imm = 0x47414D49
jne 0x285af
leaq 0x1765d(%rip), %rsi     # 0x3f997
leaq 0x1f6d9(%rip), %rdx     # 0x47a1a
movq %r12, %rdi
callq 0x16f1d
movq %rax, %r12
movq 0x8(%r14), %rdx
movzwl %r15w, %esi
movq 0x28(%rsp), %rdi
callq 0x28cbe
movq %rax, %r15
leal 0x4(%r13), %r8d
movq %r14, %rdi
movq %rax, %rsi
movq %r12, 0x10(%rsp)
movq %r12, %rdx
movl 0xc(%rsp), %ecx
movl %r8d, 0x1c(%rsp)
callq 0x28dc6
movq %rax, %r12
movq 0x8(%r14), %rax
subq %r12, %rax
addq 0x10(%r14), %rax
movq %rax, 0x20(%rsp)
testq %rbx, %rbx
je 0x283a3
cmpl $0x0, 0x10(%rbx)
je 0x28738
movq %rbx, %rdi
movl $0x62564f46, %esi       # imm = 0x62564F46
movl $0x62564f46, %edx       # imm = 0x62564F46
callq 0xef13
movq %rax, %rbx
testq %rax, %rax
leaq 0x2edbe(%rip), %r13     # 0x57180
jne 0x2873f
jmp 0x2883d
retq
leaq 0x175c2(%rip), %rsi     # 0x3f997
leaq 0x1f6ae(%rip), %rdx     # 0x47a8a
movq %r12, %rdi
callq 0x16f1d
movq %rax, %rbx
movq 0x8(%r14), %rdx
movzwl %r15w, %esi
movq 0x28(%rsp), %rdi
callq 0x29e97
leal 0x4(%r13), %r12d
movq %r14, %rdi
movq %rax, %rsi
movq %rbx, 0x10(%rsp)
movq %rbx, %rdx
movl 0xc(%rsp), %ecx
movl %r12d, %r8d
callq 0x29f9f
movq %rax, %rbx
movq 0x8(%r14), %r15
subq %rax, %r15
leaq 0x2ed58(%rip), %rax     # 0x57180
movq (%rax), %rax
addq 0x10(%r14), %r15
btl $0x12, %eax
jb 0x2860f
btl $0x18, %eax
jb 0x2868f
leaq 0x16c92(%rip), %rcx     # 0x3f0dc
movl $0x4003333, %edi        # imm = 0x4003333
movq %rbx, %rsi
movl %r12d, %edx
callq 0x5100
leaq 0x2ed1f(%rip), %r13     # 0x57180
movq (%r13), %rax
testw $0x3003, %ax            # imm = 0x3003
je 0x28afe
testb $0x40, %al
jne 0x28aad
leaq 0x1f635(%rip), %rdi     # 0x47ab3
movl 0xc(%rsp), %esi
xorl %eax, %eax
callq 0x3120
jmp 0x28ac4
leaq 0x17502(%rip), %rsi     # 0x3f997
leaq 0x1f5e9(%rip), %rdx     # 0x47a85
movq %r12, %rdi
callq 0x16f1d
movq %rax, %r12
movq 0x8(%r14), %rdx
movzwl %r15w, %ebx
movl %ebp, 0x10(%rsp)
movq 0x28(%rsp), %rbp
movq %rbp, %rdi
movl %ebx, %esi
callq 0x29327
movq %rax, %r15
addl $0x4, %r13d
movq %r14, %rdi
movq %rax, %rsi
movq %r12, %rdx
movl 0xc(%rsp), %ecx
movl %r13d, %r8d
callq 0x29419
movq 0x10(%r14), %rcx
subq %rax, %rcx
addq 0x8(%r14), %rcx
movq 0x18(%r15), %r8
movq %rbp, %rdi
movl 0x10(%rsp), %ebp
movl %ebx, %esi
movq %rax, %rdx
movq %r12, %r9
pushq %r13
pushq 0x10(%r15)
callq 0x29848
popq %rcx
popq %rdx
leaq 0x2ec70(%rip), %r13     # 0x57180
jmp 0x28b26
leaq 0x1747b(%rip), %rsi     # 0x3f997
leaq 0x1f530(%rip), %rdx     # 0x47a53
movq %r12, %rdi
callq 0x16f1d
movq %rax, %r12
movq 0x8(%r14), %rdx
movzwl %r15w, %esi
movq 0x28(%rsp), %rdi
callq 0x28cbe
movq %rax, %r15
leal 0x4(%r13), %r8d
movq %r14, %rdi
movq %rax, %rsi
movq %r12, 0x10(%rsp)
movq %r12, %rdx
movl 0xc(%rsp), %ecx
movl %r8d, 0x1c(%rsp)
callq 0x28dc6
movq %rax, %r12
movq 0x8(%r14), %rax
subq %r12, %rax
addq 0x10(%r14), %rax
movq %rax, 0x20(%rsp)
testq %rbx, %rbx
je 0x28585
cmpl $0x0, 0x10(%rbx)
je 0x28784
movq %rbx, %rdi
movl $0x62564f46, %esi       # imm = 0x62564F46
movl $0x62564f46, %edx       # imm = 0x62564F46
callq 0xef13
movq %rax, %rbx
testq %rax, %rax
leaq 0x2ebdc(%rip), %r13     # 0x57180
jne 0x2878b
jmp 0x28953
leaq 0x2ebca(%rip), %rax     # 0x57180
movq (%rax), %rax
btl $0x12, %eax
jb 0x2869b
btl $0x18, %eax
jb 0x28720
leaq 0x16b08(%rip), %rcx     # 0x3f0dc
movl $0x4003333, %edi        # imm = 0x4003333
xorl %esi, %esi
movl %r13d, %edx
callq 0x5100
leaq 0x2eb96(%rip), %r13     # 0x57180
movq (%r13), %rax
testw $0x3003, %ax            # imm = 0x3003
je 0x28bc4
testb $0x40, %al
jne 0x28b8a
leaq 0x1f4d1(%rip), %rdi     # 0x47ad8
movq %r14, %rsi
jmp 0x28b93
leaq 0x16ac6(%rip), %rcx     # 0x3f0dc
movl $0x40000, %edi          # imm = 0x40000
movq %rbx, %rsi
movl %r12d, %edx
callq 0x5100
leaq 0x1f462(%rip), %rdi     # 0x47a8f
movq %r15, %rsi
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x160f7
movl %eax, 0x20(%rsp)
leal 0x8(%r13), %ecx
movq 0x28(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x90de
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movl $0x40000, %edi          # imm = 0x40000
movl %r12d, %edx
leaq 0x16a66(%rip), %rcx     # 0x3f0dc
callq 0x5100
leaq 0x1f424(%rip), %rdi     # 0x47aa6
xorl %eax, %eax
callq 0x3120
movl %eax, %ebp
addl 0x20(%rsp), %ebp
leaq 0x2eaea(%rip), %r13     # 0x57180
jmp 0x28a3d
movq 0x8(%r14), %rsi
leal 0x4(%r13), %ebx
leaq 0x16a32(%rip), %r15     # 0x3f0dc
movl $0x40000, %edi          # imm = 0x40000
movl %ebx, %edx
movq %r15, %rcx
callq 0x5100
movq 0x10(%r14), %rdx
leaq 0x1f3f8(%rip), %rdi     # 0x47abc
movq %r14, %rsi
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x160f7
movl %eax, %r12d
leal 0x8(%r13), %ecx
movq 0x28(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x90de
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movl $0x40000, %edi          # imm = 0x40000
movl %ebx, %edx
movq %r15, %rcx
callq 0x5100
leaq 0x1f3be(%rip), %rdi     # 0x47acf
movq %r14, %rsi
xorl %eax, %eax
callq 0x3120
movl %eax, %ebp
addl %r12d, %ebp
leaq 0x2ea59(%rip), %r13     # 0x57180
movl %ebp, %edi
callq 0x160f7
movl %eax, %ebp
xorl %r12d, %r12d
jmp 0x28b26
leaq 0x2ea41(%rip), %r13     # 0x57180
xorl %eax, %eax
cmpq $0x3, 0x10(%r15)
setne %al
leal 0x1(,%rax,4), %eax
movl %eax, 0xc4(%rbx)
movq 0x18(%r15), %rax
cmpq $0x3, %rax
je 0x287e4
cmpq $0x6, %rax
je 0x287cc
cmpq $0x12, %rax
je 0x287dd
cmpq $0xb, %rax
jne 0x287ff
movl $0x20001, %eax          # imm = 0x20001
jmp 0x28804
leaq 0x2e9f5(%rip), %r13     # 0x57180
xorl %eax, %eax
cmpq $0x3, 0x10(%r15)
setne %al
leal 0x1(,%rax,4), %eax
movl %eax, 0xc4(%rbx)
movq 0x18(%r15), %rax
cmpq $0x3, %rax
je 0x287f5
cmpq $0x6, %rax
je 0x287d3
cmpq $0x12, %rax
je 0x287eb
cmpq $0xb, %rax
jne 0x28915
movl $0x20001, %eax          # imm = 0x20001
jmp 0x2891a
movl $0x20004, %eax          # imm = 0x20004
jmp 0x28804
movl $0x20004, %eax          # imm = 0x20004
jmp 0x2891a
movl $0x20002, %eax          # imm = 0x20002
jmp 0x28804
movl $0x10002, %eax          # imm = 0x10002
jmp 0x28804
movl $0x20002, %eax          # imm = 0x20002
jmp 0x2891a
movl $0x10002, %eax          # imm = 0x10002
jmp 0x2891a
movl $0x20003, %eax          # imm = 0x20003
movq %rax, 0x88(%rbx)
movq $0x62564f46, 0x80(%rbx) # imm = 0x62564F46
movups 0x20(%r15), %xmm0
movups %xmm0, 0x70(%rbx)
movq %r12, 0x90(%rbx)
movq 0x20(%rsp), %rax
movq %rax, 0x98(%rbx)
movq %rbx, %rdi
callq 0xf126
movl %eax, 0x10(%rbx)
movq (%r13), %rax
btl $0x12, %eax
jb 0x28893
movq %r12, %r15
btl $0x18, %eax
movq 0x10(%rsp), %r12
jb 0x28b1d
leaq 0x1687c(%rip), %rcx     # 0x3f0dc
movl $0x4003333, %edi        # imm = 0x4003333
movq %r15, %rsi
movl 0x1c(%rsp), %edx
callq 0x5100
movq (%r13), %rax
testw $0x3003, %ax            # imm = 0x3003
je 0x28a94
testb $0x40, %al
jne 0x28a47
leaq 0x1f1bc(%rip), %rdi     # 0x47a4a
jmp 0x289a4
leaq 0x16842(%rip), %rcx     # 0x3f0dc
movl $0x40000, %edi          # imm = 0x40000
movq %r12, %rsi
movl 0x1c(%rsp), %ebx
movl %ebx, %edx
callq 0x5100
leaq 0x1f16b(%rip), %rdi     # 0x47a1f
movq 0x20(%rsp), %r15
movq %r15, %rsi
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x160f7
movq %r12, %rsi
movl %eax, %r12d
movq 0x30(%rsp), %rax
leal 0x8(%rax), %ecx
movq 0x28(%rsp), %rdi
movq %r15, %rdx
callq 0x90de
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movl $0x40000, %edi          # imm = 0x40000
movl %ebx, %edx
leaq 0x167d8(%rip), %rcx     # 0x3f0dc
callq 0x5100
leaq 0x1f126(%rip), %rdi     # 0x47a36
jmp 0x28a31
movl $0x20003, %eax          # imm = 0x20003
movq %rax, 0x88(%rbx)
movq $0x62564f46, 0x80(%rbx) # imm = 0x62564F46
movups 0x20(%r15), %xmm0
movups %xmm0, 0x70(%rbx)
movq %r12, 0x90(%rbx)
movq 0x20(%rsp), %rax
movq %rax, 0x98(%rbx)
movq %rbx, %rdi
callq 0xf126
movl %eax, 0x10(%rbx)
movq (%r13), %rax
btl $0x12, %eax
jb 0x289b4
movq %r12, %r15
btl $0x18, %eax
movq 0x10(%rsp), %r12
jb 0x28b1d
leaq 0x16766(%rip), %rcx     # 0x3f0dc
movl $0x4003333, %edi        # imm = 0x4003333
movq %r15, %rsi
movl 0x1c(%rsp), %edx
callq 0x5100
movq (%r13), %rax
testw $0x3003, %ax            # imm = 0x3003
je 0x28a94
testb $0x40, %al
jne 0x28a47
leaq 0x1f0d8(%rip), %rdi     # 0x47a7c
movl 0xc(%rsp), %esi
xorl %eax, %eax
callq 0x3120
jmp 0x28a5c
leaq 0x16721(%rip), %rcx     # 0x3f0dc
movl $0x40000, %edi          # imm = 0x40000
movq %r12, %rsi
movl 0x1c(%rsp), %ebx
movl %ebx, %edx
callq 0x5100
leaq 0x1f083(%rip), %rdi     # 0x47a58
movq 0x20(%rsp), %r15
movq %r15, %rsi
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x160f7
movq %r12, %rsi
movl %eax, %r12d
movq 0x30(%rsp), %rax
leal 0x8(%rax), %ecx
movq 0x28(%rsp), %rdi
movq %r15, %rdx
callq 0x90de
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movl $0x40000, %edi          # imm = 0x40000
movl %ebx, %edx
leaq 0x166b7(%rip), %rcx     # 0x3f0dc
callq 0x5100
leaq 0x1f03e(%rip), %rdi     # 0x47a6f
xorl %eax, %eax
callq 0x3120
movl %eax, %ebp
addl %r12d, %ebp
movq 0x10(%rsp), %r12
jmp 0x28b1d
leaq 0x1eff5(%rip), %rdi     # 0x47a43
movq %r12, %rsi
movl 0xc(%rsp), %edx
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
leaq 0x19eac(%rip), %rdi     # 0x42911
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
addl %ebx, %ebp
movq (%r13), %rax
testb $0x30, %al
je 0x28a94
pushq $0xb
popq %rdi
callq 0x521b
leaq 0x1fad1(%rip), %rdi     # 0x48558
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movq (%r13), %rax
testb $0x30, %al
je 0x28b1d
leaq 0x1a6bf(%rip), %rdi     # 0x43162
movq %r15, %rsi
movq 0x20(%rsp), %rdx
jmp 0x28b14
leaq 0x1ef8f(%rip), %rdi     # 0x47a43
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
xorl %eax, %eax
callq 0x3120
movl %eax, %r12d
leaq 0x19e43(%rip), %rdi     # 0x42911
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
addl %r12d, %ebp
movq (%r13), %rax
testb $0x30, %al
je 0x28afe
pushq $0xb
popq %rdi
callq 0x521b
leaq 0x1fa67(%rip), %rdi     # 0x48558
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movq (%r13), %rax
movq 0x10(%rsp), %r12
testb $0x30, %al
je 0x28b1d
leaq 0x1a654(%rip), %rdi     # 0x43162
movq %rbx, %rsi
movq %r15, %rdx
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x160f7
movl %eax, %ebp
testb $0x4, 0x2(%r13)
je 0x28b74
leaq 0x18(%r14), %rbx
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
leaq 0x16595(%rip), %rcx     # 0x3f0dc
movl $0x40000, %edi          # imm = 0x40000
movq 0x30(%rsp), %rdx
callq 0x5100
leaq 0x1ef85(%rip), %rdi     # 0x47ae2
movq %rbx, %rsi
movl 0xc(%rsp), %edx
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x160f7
movq %r12, %rdi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3050
leaq 0x1eeb2(%rip), %rdi     # 0x47a43
xorl %esi, %esi
movl 0xc(%rsp), %edx
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movq (%r13), %rax
testb $0x30, %al
je 0x28bc4
pushq $0xb
popq %rdi
callq 0x521b
leaq 0x1f9a1(%rip), %rdi     # 0x48558
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movq (%r13), %rax
testb $0x30, %al
je 0x28727
movq 0x8(%r14), %rsi
movq 0x10(%r14), %rdx
leaq 0x1a587(%rip), %rdi     # 0x43162
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
jmp 0x28727