// File: /workspace/github_c_makefile_star2_O1/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
testq %rdx, %rdx
je 0x29957
movq %r9, %r12
movq %r8, %rbx
movq %rdx, %r14
movl %esi, %r15d
movq %rdi, 0x18(%rsp)
movl 0x68(%rsp), %eax
movq %rax, 0x20(%rsp)
movl 0x60(%rsp), %eax
movl %eax, 0x8(%rsp)
leaq 0x2f119(%rip), %rax     # 0x58180
xorl %ebp, %ebp
testb $0x4, 0x2(%rax)
je 0x290c2
movq 0x8(%r14), %rsi
leaq 0x18062(%rip), %rcx     # 0x410dc
movl $0x40000, %edi          # imm = 0x40000
movq 0x20(%rsp), %rdx
callq 0x5605
leaq 0x18(%r14), %rsi
movq 0x18(%r14), %rcx
leaq 0x2097e(%rip), %rdi     # 0x49a16
movl 0x8(%rsp), %edx
xorl %eax, %eax
callq 0x3120
movl %eax, %ebp
movq 0x10(%r14), %rsi
leaq 0x1f66a(%rip), %rdi     # 0x4871a
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x16b56
movl %eax, %ebp
movq 0x18(%r14), %rax
cmpq $0x47414d48, %rax       # imm = 0x47414D48
jg 0x291b8
cmpq $0x32414d49, %rax       # imm = 0x32414D49
je 0x292fc
cmpq $0x464d4143, %rax       # imm = 0x464D4143
jne 0x2929f
leaq 0x188a6(%rip), %rsi     # 0x41997
leaq 0x209a2(%rip), %rdx     # 0x49a9a
movq %r12, %rdi
callq 0x17a47
movq %rax, %r13
movq 0x8(%r14), %rdx
movzwl %r15w, %esi
movq 0x18(%rsp), %rdi
callq 0x2acab
movq 0x20(%rsp), %rbx
leal 0x4(%rbx), %r12d
movq %r14, %rdi
movq %rax, %rsi
movq %r13, 0x10(%rsp)
movq %r13, %rdx
movl 0x8(%rsp), %ecx
movl %r12d, %r8d
callq 0x2adb3
movq %rax, %r13
movq 0x8(%r14), %r15
subq %rax, %r15
leaq 0x2f037(%rip), %rax     # 0x58180
movq (%rax), %rax
addq 0x10(%r14), %r15
btl $0x12, %eax
jb 0x294ef
btl $0x18, %eax
jb 0x2980f
leaq 0x17f71(%rip), %rcx     # 0x410dc
movl $0x4003333, %edi        # imm = 0x4003333
movq %r13, %rbx
movq %r13, %rsi
movl %r12d, %edx
callq 0x5605
leaq 0x2effb(%rip), %r12     # 0x58180
movq (%r12), %rax
testl $0x3003, %eax           # imm = 0x3003
movq 0x10(%rsp), %r13
je 0x299b9
testb $0x40, %al
jne 0x29966
leaq 0x2091b(%rip), %rdi     # 0x49ac3
movl 0x8(%rsp), %esi
xorl %eax, %eax
callq 0x3120
jmp 0x2997b
cmpq $0x504f5250, %rax       # imm = 0x504F5250
je 0x293cb
cmpq $0x47414d49, %rax       # imm = 0x47414D49
jne 0x2929f
leaq 0x187c0(%rip), %rsi     # 0x41997
leaq 0x2084c(%rip), %rdx     # 0x49a2a
movq %r12, %rdi
callq 0x17a47
movq %rax, %r13
movq 0x8(%r14), %rdx
movzwl %r15w, %esi
movq 0x18(%rsp), %rdi
callq 0x29ab5
movq %rax, %r12
movq 0x20(%rsp), %rax
leal 0x4(%rax), %r8d
movq %r14, %rdi
movq %r12, %rsi
movq %r13, 0x10(%rsp)
movq %r13, %rdx
movl 0x8(%rsp), %ecx
movl %r8d, 0xc(%rsp)
callq 0x29bbd
movq %rax, %r13
movq 0x8(%r14), %r15
subq %rax, %r15
addq 0x10(%r14), %r15
testq %rbx, %rbx
je 0x2923c
cmpl $0x0, 0x10(%rbx)
je 0x29251
movq %rbx, %rdi
movl $0x62564f46, %esi       # imm = 0x62564F46
movl $0x62564f46, %edx       # imm = 0x62564F46
callq 0xfb61
movq %rax, %rbx
testq %rbx, %rbx
je 0x295fa
xorl %eax, %eax
cmpq $0x3, 0x10(%r12)
setne %al
leal 0x1(,%rax,4), %eax
movl %eax, 0xc4(%rbx)
movq 0x18(%r12), %rax
cmpq $0xa, %rax
jg 0x29573
cmpq $0x3, %rax
je 0x295b1
cmpq $0x6, %rax
jne 0x295a0
movl $0x20004, %eax          # imm = 0x20004
jmp 0x295bd
leaq 0x2eeda(%rip), %r12     # 0x58180
movq (%r12), %rax
btl $0x12, %eax
jb 0x29459
btl $0x18, %eax
jb 0x298e1
leaq 0x17e17(%rip), %rcx     # 0x410dc
movl $0x4003333, %edi        # imm = 0x4003333
xorl %esi, %esi
movq 0x20(%rsp), %rdx
callq 0x5605
movq (%r12), %rax
testl $0x3003, %eax           # imm = 0x3003
je 0x298c2
testb $0x40, %al
jne 0x2988b
leaq 0x207f4(%rip), %rdi     # 0x49ae8
movq %r14, %rsi
jmp 0x29894
leaq 0x18694(%rip), %rsi     # 0x41997
leaq 0x20759(%rip), %rdx     # 0x49a63
movq %r12, %rdi
callq 0x17a47
movq %rax, %r13
movq 0x8(%r14), %rdx
movzwl %r15w, %esi
movq 0x18(%rsp), %rdi
callq 0x29ab5
movq %rax, %r12
movq 0x20(%rsp), %rax
leal 0x4(%rax), %r8d
movq %r14, %rdi
movq %r12, %rsi
movq %r13, 0x10(%rsp)
movq %r13, %rdx
movl 0x8(%rsp), %ecx
movl %r8d, 0xc(%rsp)
callq 0x29bbd
movq %rax, %r13
movq 0x8(%r14), %r15
subq %rax, %r15
addq 0x10(%r14), %r15
testq %rbx, %rbx
je 0x29368
cmpl $0x0, 0x10(%rbx)
je 0x2937d
movq %rbx, %rdi
movl $0x62564f46, %esi       # imm = 0x62564F46
movl $0x62564f46, %edx       # imm = 0x62564F46
callq 0xfb61
movq %rax, %rbx
testq %rbx, %rbx
je 0x29720
xorl %eax, %eax
cmpq $0x3, 0x10(%r12)
setne %al
leal 0x1(,%rax,4), %eax
movl %eax, 0xc4(%rbx)
movq 0x18(%r12), %rax
cmpq $0xa, %rax
jg 0x29586
cmpq $0x3, %rax
je 0x296d7
cmpq $0x6, %rax
jne 0x295a7
movl $0x20004, %eax          # imm = 0x20004
jmp 0x296e3
leaq 0x185c5(%rip), %rsi     # 0x41997
leaq 0x206bc(%rip), %rdx     # 0x49a95
movq %r12, %rdi
callq 0x17a47
movq %rax, %r13
movq 0x8(%r14), %rdx
movzwl %r15w, %ebx
movl %ebp, 0x10(%rsp)
movq 0x18(%rsp), %rbp
movq %rbp, %rdi
movl %ebx, %esi
callq 0x2a12b
movq %rax, %r15
movq 0x20(%rsp), %rax
leal 0x4(%rax), %r12d
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rdx
movl 0x8(%rsp), %ecx
movl %r12d, %r8d
callq 0x2a21d
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 %r13, %r9
pushq %r12
pushq 0x10(%r15)
callq 0x2a652
addq $0x10, %rsp
leaq 0x2ed2c(%rip), %r12     # 0x58180
jmp 0x298ed
movq 0x8(%r14), %rsi
movq 0x20(%rsp), %r15
leal 0x4(%r15), %ebx
leaq 0x17c6f(%rip), %r13     # 0x410dc
movl $0x40000, %edi          # imm = 0x40000
movl %ebx, %edx
movq %r13, %rcx
callq 0x5605
movq 0x10(%r14), %rdx
leaq 0x20645(%rip), %rdi     # 0x49acc
movq %r14, %rsi
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x16b56
movl %eax, %r12d
leal 0x8(%r15), %ecx
movq 0x18(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x9745
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movl $0x40000, %edi          # imm = 0x40000
movl %ebx, %edx
movq %r13, %rcx
callq 0x5605
leaq 0x2060b(%rip), %rdi     # 0x49adf
movq %r14, %rsi
xorl %eax, %eax
callq 0x3120
movl %eax, %ebp
addl %r12d, %ebp
leaq 0x2ec96(%rip), %r12     # 0x58180
jmp 0x298e1
leaq 0x17be6(%rip), %rcx     # 0x410dc
movl $0x40000, %edi          # imm = 0x40000
movq %r13, %rsi
movl %r12d, %edx
callq 0x5605
leaq 0x20592(%rip), %rdi     # 0x49a9f
movq %r15, %rsi
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x16b56
movl %eax, 0xc(%rsp)
leal 0x8(%rbx), %ecx
movq 0x18(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x9745
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movl $0x40000, %edi          # imm = 0x40000
movl %r12d, %edx
leaq 0x17b87(%rip), %rcx     # 0x410dc
callq 0x5605
leaq 0x20555(%rip), %rdi     # 0x49ab6
xorl %eax, %eax
callq 0x3120
movl %eax, %ebp
addl 0xc(%rsp), %ebp
jmp 0x2980f
cmpq $0x12, %rax
je 0x295b8
cmpq $0xb, %rax
jne 0x295a0
movl $0x20001, %eax          # imm = 0x20001
jmp 0x295bd
cmpq $0x12, %rax
je 0x296de
cmpq $0xb, %rax
jne 0x295a7
movl $0x20001, %eax          # imm = 0x20001
jmp 0x296e3
movl $0x20003, %eax          # imm = 0x20003
jmp 0x295bd
movl $0x20003, %eax          # imm = 0x20003
jmp 0x296e3
movl $0x10002, %eax          # imm = 0x10002
jmp 0x295bd
movl $0x20002, %eax          # imm = 0x20002
movq %rax, 0x88(%rbx)
movq $0x62564f46, 0x80(%rbx) # imm = 0x62564F46
movq 0x20(%r12), %rax
movq %rax, 0x70(%rbx)
movq 0x28(%r12), %rax
movq %rax, 0x78(%rbx)
movq %r13, 0x90(%rbx)
movq %r15, 0x98(%rbx)
movq %rbx, %rdi
callq 0xfdbf
movl %eax, 0x10(%rbx)
leaq 0x2eb7f(%rip), %r12     # 0x58180
movq (%r12), %rax
btl $0x12, %eax
jb 0x2965a
btl $0x18, %eax
jb 0x29816
leaq 0x17ac0(%rip), %rcx     # 0x410dc
movl $0x4003333, %edi        # imm = 0x4003333
movq %r13, 0x18(%rsp)
movq %r13, %rsi
movl 0xc(%rsp), %edx
callq 0x5605
movq (%r12), %rax
testl $0x3003, %eax           # imm = 0x3003
movq 0x10(%rsp), %r13
je 0x29873
testb $0x40, %al
jne 0x29829
leaq 0x20405(%rip), %rdi     # 0x49a5a
jmp 0x2977b
leaq 0x17a7b(%rip), %rcx     # 0x410dc
movl $0x40000, %edi          # imm = 0x40000
movq %r13, %rsi
movl 0xc(%rsp), %ebx
movl %ebx, %edx
callq 0x5605
leaq 0x203b4(%rip), %rdi     # 0x49a2f
movq %r15, %rsi
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x16b56
movl %eax, %r12d
movq 0x20(%rsp), %rax
leal 0x8(%rax), %ecx
movq 0x18(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x9745
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movl $0x40000, %edi          # imm = 0x40000
movl %ebx, %edx
leaq 0x17a16(%rip), %rcx     # 0x410dc
callq 0x5605
leaq 0x20374(%rip), %rdi     # 0x49a46
jmp 0x29803
movl $0x10002, %eax          # imm = 0x10002
jmp 0x296e3
movl $0x20002, %eax          # imm = 0x20002
movq %rax, 0x88(%rbx)
movq $0x62564f46, 0x80(%rbx) # imm = 0x62564F46
movq 0x20(%r12), %rax
movq %rax, 0x70(%rbx)
movq 0x28(%r12), %rax
movq %rax, 0x78(%rbx)
movq %r13, 0x90(%rbx)
movq %r15, 0x98(%rbx)
movq %rbx, %rdi
callq 0xfdbf
movl %eax, 0x10(%rbx)
leaq 0x2ea59(%rip), %r12     # 0x58180
movq (%r12), %rax
btl $0x12, %eax
jb 0x2978b
btl $0x18, %eax
jb 0x29816
leaq 0x1799a(%rip), %rcx     # 0x410dc
movl $0x4003333, %edi        # imm = 0x4003333
movq %r13, 0x18(%rsp)
movq %r13, %rsi
movl 0xc(%rsp), %edx
callq 0x5605
movq (%r12), %rax
testl $0x3003, %eax           # imm = 0x3003
movq 0x10(%rsp), %r13
je 0x29873
testb $0x40, %al
jne 0x29829
leaq 0x20311(%rip), %rdi     # 0x49a8c
movl 0x8(%rsp), %esi
xorl %eax, %eax
callq 0x3120
jmp 0x2983e
leaq 0x1794a(%rip), %rcx     # 0x410dc
movl $0x40000, %edi          # imm = 0x40000
movq %r13, %rsi
movl 0xc(%rsp), %ebx
movl %ebx, %edx
callq 0x5605
leaq 0x202bc(%rip), %rdi     # 0x49a68
movq %r15, %rsi
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x16b56
movl %eax, %r12d
movq 0x20(%rsp), %rax
leal 0x8(%rax), %ecx
movq 0x18(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x9745
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
movl $0x40000, %edi          # imm = 0x40000
movl %ebx, %edx
leaq 0x178e5(%rip), %rcx     # 0x410dc
callq 0x5605
leaq 0x2027c(%rip), %rdi     # 0x49a7f
xorl %eax, %eax
callq 0x3120
movl %eax, %ebp
addl %r12d, %ebp
leaq 0x2e96a(%rip), %r12     # 0x58180
movq 0x10(%rsp), %r13
movl %ebp, %edi
callq 0x16b56
movl %eax, %ebp
jmp 0x298ed
leaq 0x20223(%rip), %rdi     # 0x49a53
movq %r13, %rsi
movl 0x8(%rsp), %edx
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
leaq 0x1b0ca(%rip), %rdi     # 0x44911
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
addl %ebx, %ebp
testb $0x30, (%r12)
je 0x29873
movl $0xb, %edi
callq 0x5730
leaq 0x20cfe(%rip), %rdi     # 0x4a568
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
testb $0x30, (%r12)
je 0x2981b
leaq 0x1b8e1(%rip), %rdi     # 0x45162
movq 0x18(%rsp), %rsi
jmp 0x299ce
leaq 0x201c1(%rip), %rdi     # 0x49a53
xorl %esi, %esi
movl 0x8(%rsp), %edx
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
testb $0x30, (%r12)
je 0x298c2
movl $0xb, %edi
callq 0x5730
leaq 0x20caf(%rip), %rdi     # 0x4a568
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
testb $0x30, (%r12)
je 0x298e1
movq 0x8(%r14), %rsi
movq 0x10(%r14), %rdx
leaq 0x1b88a(%rip), %rdi     # 0x45162
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x16b56
movl %eax, %ebp
xorl %r13d, %r13d
testb $0x4, 0x2(%r12)
je 0x2993c
leaq 0x18(%r14), %rbx
movq 0x8(%r14), %rax
movq 0x10(%r14), %rcx
leaq (%rax,%rcx), %rsi
decq %rsi
leaq 0x177cd(%rip), %rcx     # 0x410dc
movl $0x40000, %edi          # imm = 0x40000
movq 0x20(%rsp), %rdx
callq 0x5605
leaq 0x201cd(%rip), %rdi     # 0x49af2
movq %rbx, %rsi
movl 0x8(%rsp), %edx
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
movl %ebp, %edi
callq 0x16b56
testq %r13, %r13
je 0x29957
movq %r13, %rdi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3050
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x200e6(%rip), %rdi     # 0x49a53
movq %r13, %rsi
movl 0x8(%rsp), %edx
xorl %eax, %eax
callq 0x3120
movl %eax, %r12d
leaq 0x1af8c(%rip), %rdi     # 0x44911
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
addl %r12d, %ebp
leaq 0x2e7e8(%rip), %r12     # 0x58180
testb $0x30, (%r12)
je 0x299b9
movl $0xb, %edi
callq 0x5730
leaq 0x20bb8(%rip), %rdi     # 0x4a568
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
testb $0x30, (%r12)
je 0x2981b
leaq 0x1b797(%rip), %rdi     # 0x45162
movq %rbx, %rsi
movq %r15, %rdx
xorl %eax, %eax
callq 0x3120
addl %eax, %ebp
jmp 0x2981b