// File: /workspace/github_c_makefile_star2_O3/hfiguiere[P]exifprobe/maker_epson.c
// Function: epson1_interpret_offset_makervalue
void
epson1_interpret_offset_makervalue(FILE *inptr,unsigned short byteorder,
                    struct ifd_entry *entry_ptr,unsigned long fileoffset_base)
{
    unsigned long offset,value;
    int chpr = 0;

    if(entry_ptr && (PRINT_VALUE))
    {
        offset = entry_ptr->value + fileoffset_base;
        switch(entry_ptr->tag)
        {
            case 0x0200:    /* SpecialMode                            */
                value = read_ulong(inptr,byteorder,offset);
                print_startvalue();
                /* Don't know what the last 2 values might mean for   */
                /* "normal" or "fast".                                */
                switch(value)
                {
                    case 0: chpr += printf("Normal"); break;
                    case 1: chpr += printf("Unknown"); break;
                    case 2: chpr += printf("Fast"); break;
                    case 3: chpr += printf("Panorama,");
                            value = read_ulong(inptr,byteorder,HERE);
                            chpr += printf("#%lu,",value);
                            value = read_ulong(inptr,byteorder,HERE);
                            switch(value)
                            {
                                case 1: chpr += printf(" Left to Right"); break;
                                case 2: chpr += printf(" Right to Left"); break;
                                case 3: chpr += printf(" Bottom to Top"); break;
                                case 4: chpr += printf(" Top to Bottom"); break;
                                default: printred(" undefined"); break;
                            }
                            break;
                    default: printred("undefined"); break;
                }
                print_endvalue();
                break;
            default:
                break;
        }
    }
    setcharsprinted(chpr);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
xorl %ebx, %ebx
testq %rdx, %rdx
je 0x2eaad
leaq 0x297e3(%rip), %rax     # 0x58180
testb $0x30, (%rax)
je 0x2eaad
cmpw $0x200, (%rdx)          # imm = 0x200
jne 0x2eaad
movq %rdi, %r14
addq 0x10(%rdx), %rcx
movzwl %si, %ebp
movl %ebp, %esi
movq %rcx, %rdx
callq 0x4707
movq %rax, %r15
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x96fd
cmpq $0x3, %r15
ja 0x2ea76
leaq 0x1bbfe(%rip), %rax     # 0x4a5e0
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1ca07(%rip), %rdi     # 0x4b3f9
jmp 0x2ea6b
leaq 0x1bcb3(%rip), %rdi     # 0x4a6ae
jmp 0x2ea6b
leaq 0x1bcaf(%rip), %rdi     # 0x4a6b3
xorl %eax, %eax
callq 0x3120
movl %eax, %r15d
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movq %r14, %rdi
movl %ebp, %esi
callq 0x4707
leaq 0x1bc99(%rip), %rdi     # 0x4a6bd
movq %rax, %rsi
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
addl %r15d, %ebx
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movq %r14, %rdi
movl %ebp, %esi
callq 0x4707
decq %rax
cmpq $0x3, %rax
ja 0x2eabe
leaq 0x1bb9e(%rip), %rcx     # 0x4a5f0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1bc61(%rip), %rdi     # 0x4a6c3
jmp 0x2ea9d
leaq 0x1bc3b(%rip), %rdi     # 0x4a6a6
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
jmp 0x2eaa6
leaq 0x1a3ec(%rip), %rdi     # 0x48e69
callq 0x5c26
jmp 0x2eaa6
leaq 0x1bc56(%rip), %rdi     # 0x4a6e1
jmp 0x2ea9d
leaq 0x1bc5c(%rip), %rdi     # 0x4a6f0
jmp 0x2ea9d
leaq 0x1bc35(%rip), %rdi     # 0x4a6d2
xorl %eax, %eax
callq 0x3120
addl %eax, %ebx
xorl %eax, %eax
callq 0x971e
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x17a82
leaq 0x1a3a3(%rip), %rdi     # 0x48e68
jmp 0x2ea7d