// File: /workspace/github_c_makefile_star2_O1/hfiguiere[P]exifprobe/print.c
// Function: print_private_entry
unsigned long
print_private_entry(FILE *inptr,unsigned short byteorder,struct ifd_entry *entry_ptr,
                            unsigned long fileoffset_base, unsigned short subifd_ident,
                            struct image_summary *summary_entry, char *parent_name,
                            char *prefix,int make,int model,int indent)
{
    int value_is_offset = 0;
    unsigned long endoffset = 0UL;
    int chpr = 0;

    if((PRINT_ENTRY))
    {
        value_is_offset = is_offset(entry_ptr);
        if(value_is_offset == 0)
            value_is_offset = private_value_is_offset(make,subifd_ident,entry_ptr->tag);
        print_private_taginfo(entry_ptr,subifd_ident,parent_name,make,indent);
        if((entry_ptr->value_type == 0) || (entry_ptr->value_type > DOUBLE) ||
            ferror(inptr) || feof(inptr))
        {
            clearerr(inptr);
            printred("# INVALID ENTRY");
            endoffset = ftell(inptr);
        }
        else if(entry_ptr->count == 0)
        {
            if(PRINT_VALUE)
                chpr += printf(" EMPTY (value=%#lx)",entry_ptr->value);
            endoffset = ftell(inptr);
        }
        else if(value_is_offset)
        {
            if(value_is_offset > 0)
            {
                /* Offsets read from the file are printed relative to the */
                /* beginning of the file (with fileoffset_base added) so  */
                /* that the values, printed later, will be easy to find.  */
                if(PRINT_BOTH_OFFSET)
                    chpr += printf("@%#lx=%lu",entry_ptr->value + fileoffset_base,
                            entry_ptr->value + fileoffset_base);
                else if(PRINT_HEX_OFFSET)
                    chpr += printf("@%#lx",entry_ptr->value + fileoffset_base);
                else if(PRINT_DEC_OFFSET)
                    chpr += printf("@%lu",entry_ptr->value + fileoffset_base);

                if(fileoffset_base && (PRINT_ENTRY_RELOFFSET))
                    chpr += printf(" (%lu) ",entry_ptr->value);
            }
            else if((value_is_offset < 0) && (PRINT_VALUE))
            {
                print_value(entry_ptr,PREFIX);
                interpret_pe_value(entry_ptr,subifd_ident,make,prefix);
            }

            /* Print "inline" in REPORT & LIST modes                      */
            if(!(PRINT_VALUE_AT_OFFSET))
            {
                setcharsprinted(chpr);
                chpr = 0;
                endoffset = print_offset_pe_value(inptr,byteorder,
                                            entry_ptr,fileoffset_base,
                                            subifd_ident,summary_entry,
                                            parent_name,"@",indent + MEDIUMINDENT,
                                            make,model,0);
            }
        }
        else if(PRINT_VALUE)
        {
            print_value(entry_ptr,PREFIX);
            interpret_pe_value(entry_ptr,subifd_ident,make,prefix);
        }
        chpr = newline(chpr);
    }
    return(endoffset);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
leaq 0x4e264(%rip), %rax     # 0x58180
testl $0x4003333, (%rax)      # imm = 0x4003333
je 0x9fea
movl %r8d, %r12d
movq %rdx, %r14
movq %rdi, %rbx
movl %esi, 0xc(%rsp)
movq %rcx, (%rsp)
movq %r9, 0x10(%rsp)
movl 0x70(%rsp), %ebp
movl 0x60(%rsp), %r13d
movq %rdx, %rdi
callq 0xfe62
movl %eax, %r15d
movzwl %r12w, %r12d
testl %eax, %eax
jne 0x9f72
xorl %r15d, %r15d
cmpl $0xd, %r13d
jne 0x9f72
movzwl (%r14), %esi
movl %r12d, %edi
callq 0x302b9
movl %eax, %r15d
movq %r14, %rdi
movl %r12d, %esi
movq 0x50(%rsp), %rdx
movl %r13d, %ecx
movl %ebp, %r8d
callq 0xa366
movzwl 0x2(%r14), %eax
addl $-0xd, %eax
cmpw $-0xc, %ax
jb 0x9fae
movq %rbx, %rdi
callq 0x30b0
testl %eax, %eax
jne 0x9fae
movq %rbx, %rdi
callq 0x31a0
testl %eax, %eax
je 0x9fff
movq %rbx, %rdi
callq 0x31b0
leaq 0x370da(%rip), %rdi     # 0x41097
leaq 0x37608(%rip), %rsi     # 0x415cc
xorl %r15d, %r15d
xorl %eax, %eax
callq 0x3120
movl %eax, %edi
callq 0x17530
movq %rbx, %rdi
callq 0x3190
movq %rax, %r13
movl %r15d, %edi
callq 0x16b56
jmp 0x9fed
xorl %r13d, %r13d
movq %r13, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpq $0x0, 0x8(%r14)
je 0xa051
movq 0x58(%rsp), %rax
testl %r15d, %r15d
leaq 0x4e16b(%rip), %rdx     # 0x58180
je 0xa07b
movq (%rdx), %rax
jle 0xa0b9
movl %eax, %ecx
notl %ecx
testl $0x300, %ecx            # imm = 0x300
jne 0xa105
movq 0x10(%r14), %rdx
movq (%rsp), %r13
addq %r13, %rdx
leaq 0x3b1cb(%rip), %rdi     # 0x4520d
movq %rdx, %rsi
xorl %eax, %eax
callq 0x3120
jmp 0xa13d
leaq 0x4e128(%rip), %rax     # 0x58180
testb $0x30, (%rax)
je 0xa0fd
movq 0x10(%r14), %rsi
leaq 0x37570(%rip), %rdi     # 0x415dc
xorl %eax, %eax
callq 0x3120
movl %eax, %r15d
jmp 0x9fd5
testb $0x30, (%rdx)
je 0xa0b1
movq %rax, %rbx
leaq 0x3dc0c(%rip), %rsi     # 0x47c96
movq %r14, %rdi
callq 0x62c7
testq %r14, %r14
sete %al
cmpl $0xd, %r13d
setne %cl
orb %al, %cl
jne 0xa0b1
movq %r14, %rdi
movl %r12d, %esi
movq %rbx, %rdx
callq 0x2f59e
xorl %r13d, %r13d
jmp 0xa1c6
xorl %r15d, %r15d
testb $0x30, %al
je 0xa16e
leaq 0x3dbcb(%rip), %rsi     # 0x47c96
movq %r14, %rdi
callq 0x62c7
testq %r14, %r14
sete %al
cmpl $0xd, %r13d
setne %cl
orb %al, %cl
jne 0xa0f4
movq %r14, %rdi
movl %r12d, %esi
movq 0x58(%rsp), %rdx
callq 0x2f59e
leaq 0x4e085(%rip), %rdx     # 0x58180
jmp 0xa16e
xorl %r15d, %r15d
jmp 0x9fd5
btl $0x8, %eax
movq (%rsp), %r13
jb 0xa128
xorl %r15d, %r15d
btl $0x9, %eax
jae 0xa147
movq 0x10(%r14), %rsi
addq %r13, %rsi
leaq 0x3e6c6(%rip), %rdi     # 0x487ec
jmp 0xa136
movq 0x10(%r14), %rsi
addq %r13, %rsi
leaq 0x3b0e4(%rip), %rdi     # 0x4521a
xorl %eax, %eax
callq 0x3120
leaq 0x4e03c(%rip), %rdx     # 0x58180
movl %eax, %r15d
testq %r13, %r13
je 0xa16e
testb $0x4, 0x3(%rdx)
je 0xa16e
movq 0x10(%r14), %rsi
leaq 0x37493(%rip), %rdi     # 0x415f0
xorl %eax, %eax
callq 0x3120
leaq 0x4e015(%rip), %rdx     # 0x58180
addl %eax, %r15d
xorl %r13d, %r13d
testb $0x1, 0x3(%rdx)
jne 0x9fe0
movl 0x68(%rsp), %r13d
movl %r15d, %edi
callq 0x17530
addl $0x4, %ebp
leaq 0x36f4a(%rip), %rax     # 0x410dc
movzwl 0xc(%rsp), %esi
movq %rbx, %rdi
movq %r14, %rdx
movq (%rsp), %rcx
movl %r12d, %r8d
movq 0x10(%rsp), %r9
pushq $0x0
pushq %r13
movl 0x70(%rsp), %r10d
pushq %r10
pushq %rbp
pushq %rax
pushq 0x78(%rsp)
callq 0xa1e1
addq $0x30, %rsp
movq %rax, %r13
xorl %r15d, %r15d
jmp 0x9fe0