// File: /workspace/github_c_makefile_star2_O2/hfiguiere[P]exifprobe/maker_olympus.c
// Function: olympus2020_interpret_value
void
olympus2020_interpret_value(struct ifd_entry *entry_ptr,char *prefix)
{
    int chpr = 0;

    if(entry_ptr && (PRINT_VALUE))
    {
        switch(entry_ptr->tag)
        {
            case 0x0100: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("No"); break;
                    case 1: chpr += printf("yes"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0200: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 1: chpr += printf("Manual"); break;
                    case 3: chpr += printf("Aperture-priority"); break;
                    case 4: chpr += printf("Shutter-priority"); break;
                    case 5: chpr += printf("Program AE"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0202: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 2: chpr += printf("Center Weighted"); break;
                    case 3: chpr += printf("Spot"); break;
                    case 5: chpr += printf("ESP"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0300: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Off"); break;
                    case 1: chpr += printf("On"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0301: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Single AF"); break;
                    case 1: chpr += printf("Sequential Shooting AF"); break;
                    case 2: chpr += printf("Continuous AF"); break;
                    case 3: chpr += printf("Multi AF"); break;
                    case 10: chpr += printf("Manual"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0302: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("AF Off"); break;
                    case 1: chpr += printf("AF On"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0303: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Not Ready"); break;
                    case 1: chpr += printf("Ready"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0504: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Off"); break;
                    case 1: chpr += printf("CM1 (Red Enhance)"); break;
                    case 2: chpr += printf("CM2 (Green Enhance)"); break;
                    case 3: chpr += printf("CM3 (Blue Enhance)"); break;
                    case 4: chpr += printf("CM4 (Skin Tones)"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0507: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("sRGB"); break;
                    case 1: chpr += printf("Adobe RGB"); break;
                    case 2: chpr += printf("Pro Photo RGB"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0509: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Standard"); break;
                    case 7: chpr += printf("Sport"); break;
                    case 8: chpr += printf("Portrait"); break;
                    case 9: chpr += printf("Landscape+Portrait"); break;
                    case 10: chpr += printf("Landscape"); break;
                    case 11: chpr += printf("Night schene"); break;
                    case 17: chpr += printf("Night+Portrait"); break;
                    case 19: chpr += printf("Fireworks"); break;
                    case 20: chpr += printf("Sunset"); break;
                    case 22: chpr += printf("Macro"); break;
                    case 25: chpr += printf("Documents"); break;
                    case 26: chpr += printf("Museum"); break;
                    case 28: chpr += printf("Beach&Snow"); break;
                    case 30: chpr += printf("Candle"); break;
                    case 39: chpr += printf("High Key"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x050a: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Off"); break;
                    case 1: chpr += printf("Noise Reduction On"); break;
                    case 2: chpr += printf("Noise Filter On"); break;
                    case 3: chpr += printf("Noise Reduction + Noise Filter On"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x050b: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Off"); break;
                    case 1: chpr += printf("On"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x050c: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Off"); break;
                    case 1: chpr += printf("On"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x050f: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case -1: chpr += printf("Low Key"); break;
                    case 0: chpr += printf("Normal"); break;
                    case 1: chpr += printf("High Key"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0600: 
                chpr += printf("%#x,%#x",(unsigned short)entry_ptr->value & 0xffff,(unsigned short)((entry_ptr->value & 0xffff0000) >> 16));
                break;
            case 0x0603: 
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 1: chpr += printf("SQ"); break;
                    case 2: chpr += printf("HQ"); break;
                    case 3: chpr += printf("SHQ"); break;
                    case 4: chpr += printf("RAW1"); break;
                    case 6: chpr += printf("RAW2"); break;
                    case 33: chpr += printf("not compressed"); break;
                    case 34: /* not sure about this one ###%%%         */
                             chpr += printf("not compressed");
                             break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            default:
                break;
        }
    }
    setcharsprinted(chpr);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
xorl %ebx, %ebx
testq %rdi, %rdi
je 0x2e910
leaq 0x28b83(%rip), %rax     # 0x57180
testb $0x30, (%rax)
je 0x2e910
movq %rdi, %r14
movzwl (%rdi), %eax
leal -0x504(%rax), %ecx
cmpl $0xb, %ecx
jbe 0x2e68d
leal -0x300(%rax), %ecx
cmpl $0x3, %ecx
jbe 0x2e6be
cmpl $0x603, %eax            # imm = 0x603
je 0x2e884
cmpl $0x200, %eax            # imm = 0x200
je 0x2e85c
cmpl $0x202, %eax            # imm = 0x202
je 0x2e7c6
cmpl $0x600, %eax            # imm = 0x600
je 0x2e83d
cmpl $0x100, %eax            # imm = 0x100
jne 0x2e910
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x186c1(%rip), %rcx     # 0x46d34
leaq 0x152ea(%rip), %rdx     # 0x43964
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1c6c0(%rip), %rdi     # 0x4ad48
jmp 0x2e816
leaq 0x1a260(%rip), %rax     # 0x488f4
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x2e8f9
leaq 0x1a36b(%rip), %rcx     # 0x48a24
jmp 0x2e87b
leaq 0x1a21f(%rip), %rax     # 0x488e4
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1a96d(%rip), %rcx     # 0x49051
leaq 0x15279(%rip), %rdx     # 0x43964
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1a951(%rip), %rdi     # 0x4904a
jmp 0x2e816
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
leaq -0x7(%rax), %rcx
cmpq $0x20, %rcx
ja 0x2e8eb
leaq 0x1a21e(%rip), %rax     # 0x4893c
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1a992(%rip), %rdi     # 0x490c0
jmp 0x2e900
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x3, %rax
ja 0x2e8f9
leaq 0x1a2f5(%rip), %rcx     # 0x48a44
jmp 0x2e87b
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
incq %rax
cmpq $0x2, %rax
ja 0x2e8f9
leaq 0x1a2e1(%rip), %rcx     # 0x48a54
jmp 0x2e87b
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x2e8f9
leaq 0x1a2a4(%rip), %rcx     # 0x48a38
jmp 0x2e87b
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1a89f(%rip), %rcx     # 0x4904e
leaq 0x151ae(%rip), %rdx     # 0x43964
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1a883(%rip), %rdi     # 0x49047
jmp 0x2e816
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
addq $-0x2, %rax
cmpq $0x3, %rax
ja 0x2e8f9
leaq 0x1a202(%rip), %rcx     # 0x489e8
jmp 0x2e87b
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1a857(%rip), %rcx     # 0x49058
leaq 0x1515c(%rip), %rdx     # 0x43964
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1a83e(%rip), %rdi     # 0x49054
cmovneq %rdx, %rdi
jmp 0x2e900
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0xa, %rax
ja 0x2e8f9
leaq 0x1a1bd(%rip), %rcx     # 0x489f8
jmp 0x2e87b
movl 0x10(%r14), %edx
movzwl %dx, %esi
shrl $0x10, %edx
leaq 0x1a921(%rip), %rdi     # 0x4916f
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
jmp 0x2e910
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
decq %rax
cmpq $0x4, %rax
ja 0x2e8f9
leaq 0x1a159(%rip), %rcx     # 0x489d4
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x2e900
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
leaq -0x1(%rax), %rcx
cmpq $0x5, %rcx
ja 0x2e8b2
leaq 0x1a084(%rip), %rax     # 0x48924
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x19d90(%rip), %rdi     # 0x48640
jmp 0x2e900
cmpq $0x21, %rax
je 0x2e8be
cmpq $0x22, %rax
jne 0x2e8f9
leaq 0x19d82(%rip), %rdi     # 0x48647
jmp 0x2e900
leaq 0x19d76(%rip), %rdi     # 0x48644
jmp 0x2e900
leaq 0x19d6c(%rip), %rdi     # 0x48643
jmp 0x2e900
leaq 0x1a298(%rip), %rdi     # 0x48b78
jmp 0x2e900
leaq 0x1a294(%rip), %rdi     # 0x48b7d
jmp 0x2e900
testq %rax, %rax
jne 0x2e8f9
leaq 0x15d76(%rip), %rdi     # 0x4466d
jmp 0x2e900
leaq 0x15064(%rip), %rdi     # 0x43964
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
xorl %eax, %eax
callq 0x8fa0
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x16a4f
leaq 0x1a7eb(%rip), %rdi     # 0x49110
jmp 0x2e900
leaq 0x1a7b8(%rip), %rdi     # 0x490e6
jmp 0x2e900
leaq 0x15d3f(%rip), %rdi     # 0x44676
jmp 0x2e900
leaq 0x1b730(%rip), %rdi     # 0x4a070
jmp 0x2e900
leaq 0x15d7e(%rip), %rdi     # 0x446c7
jmp 0x2e900
leaq 0x1a7ad(%rip), %rdi     # 0x490ff
jmp 0x2e900
leaq 0x1a7ce(%rip), %rdi     # 0x49129
jmp 0x2e900
leaq 0x1a7b3(%rip), %rdi     # 0x49117
jmp 0x2e900
leaq 0x1a759(%rip), %rdi     # 0x490c6
jmp 0x2e900
leaq 0x1a763(%rip), %rdi     # 0x490d9
jmp 0x2e900
leaq 0x1a776(%rip), %rdi     # 0x490f5
jmp 0x2e900
leaq 0x1a77b(%rip), %rdi     # 0x49106
jmp 0x2e900
leaq 0x1a78b(%rip), %rdi     # 0x49122
jmp 0x2e900