// File: /workspace/github_c_makefile_star2_O1/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 0x2e2a5
leaq 0x29feb(%rip), %rax     # 0x58180
testb $0x30, (%rax)
je 0x2e2a5
cmpw $0x200, (%rdx)          # imm = 0x200
jne 0x2e2a5
movq %rdi, %r14
addq 0x10(%rdx), %rcx
movzwl %si, %ebp
movl %ebp, %esi
movq %rcx, %rdx
callq 0x46cc
movq %rax, %r15
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x95d2
cmpq $0x3, %r15
ja 0x2e26e
leaq 0x1c3c6(%rip), %rax     # 0x4a5a0
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1d1cf(%rip), %rdi     # 0x4b3b9
jmp 0x2e263
leaq 0x1c47b(%rip), %rdi     # 0x4a66e
jmp 0x2e263
leaq 0x1c477(%rip), %rdi     # 0x4a673
xorl %eax, %eax
callq 0x3120
movl %eax, %r15d
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movq %r14, %rdi
movl %ebp, %esi
callq 0x46cc
leaq 0x1c461(%rip), %rdi     # 0x4a67d
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 0x46cc
decq %rax
cmpq $0x3, %rax
ja 0x2e2b6
leaq 0x1c366(%rip), %rcx     # 0x4a5b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1c429(%rip), %rdi     # 0x4a683
jmp 0x2e295
leaq 0x1c403(%rip), %rdi     # 0x4a666
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
jmp 0x2e29e
leaq 0x1abb4(%rip), %rdi     # 0x48e29
callq 0x5c33
jmp 0x2e29e
leaq 0x1c41e(%rip), %rdi     # 0x4a6a1
jmp 0x2e295
leaq 0x1c424(%rip), %rdi     # 0x4a6b0
jmp 0x2e295
leaq 0x1c3fd(%rip), %rdi     # 0x4a692
xorl %eax, %eax
callq 0x3120
addl %eax, %ebx
xorl %eax, %eax
callq 0x95f3
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x17530
leaq 0x1ab6b(%rip), %rdi     # 0x48e28
jmp 0x2e275