// File: /workspace/github_c_makefile_star2_O3/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 0x30177
leaq 0x28331(%rip), %rax     # 0x58180
testb $0x30, (%rax)
je 0x30177
movq %rdi, %r14
movzwl (%rdi), %eax
cmpl $0x503, %eax            # imm = 0x503
jle 0x2fea5
leal -0x504(%rax), %ecx
cmpl $0xb, %ecx
ja 0x2ff40
leaq 0x1aac9(%rip), %rax     # 0x4a944
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x30160
leaq 0x1abd4(%rip), %rcx     # 0x4aa74
jmp 0x300c0
cmpl $0x2ff, %eax            # imm = 0x2FF
jle 0x2fefa
addl $0xfffffd00, %eax       # imm = 0xFFFFFD00
cmpl $0x3, %eax
ja 0x30177
leaq 0x1aa73(%rip), %rcx     # 0x4a934
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1b1c1(%rip), %rcx     # 0x4b0a1
leaq 0x15ac1(%rip), %rdx     # 0x459a8
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1b1a5(%rip), %rdi     # 0x4b09a
jmp 0x300f7
cmpl $0x100, %eax            # imm = 0x100
je 0x300cc
cmpl $0x200, %eax            # imm = 0x200
je 0x300a1
cmpl $0x202, %eax            # imm = 0x202
jne 0x30177
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
addq $-0x2, %rax
cmpq $0x3, %rax
ja 0x30160
leaq 0x1aafd(%rip), %rcx     # 0x4aa38
jmp 0x300c0
cmpl $0x600, %eax            # imm = 0x600
je 0x300fd
cmpl $0x603, %eax            # imm = 0x603
jne 0x30177
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
leaq -0x1(%rax), %rcx
cmpq $0x5, %rcx
ja 0x30119
leaq 0x1a9fe(%rip), %rax     # 0x4a974
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1a70a(%rip), %rdi     # 0x4a690
jmp 0x30167
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
incq %rax
cmpq $0x2, %rax
ja 0x30160
leaq 0x1aafa(%rip), %rcx     # 0x4aaa4
jmp 0x300c0
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x3, %rax
ja 0x30160
leaq 0x1aac9(%rip), %rcx     # 0x4aa94
jmp 0x300c0
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x30160
leaq 0x1aa9c(%rip), %rcx     # 0x4aa88
jmp 0x300c0
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
leaq -0x7(%rax), %rcx
cmpq $0x20, %rcx
ja 0x30152
leaq 0x1a97b(%rip), %rax     # 0x4a98c
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1b0ef(%rip), %rdi     # 0x4b110
jmp 0x30167
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1b062(%rip), %rcx     # 0x4b09e
leaq 0x15965(%rip), %rdx     # 0x459a8
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1b046(%rip), %rdi     # 0x4b097
jmp 0x300f7
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1b03c(%rip), %rcx     # 0x4b0a8
leaq 0x15935(%rip), %rdx     # 0x459a8
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1b023(%rip), %rdi     # 0x4b0a4
jmp 0x300f7
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0xa, %rax
ja 0x30160
leaq 0x1a9a9(%rip), %rcx     # 0x4aa48
jmp 0x300c0
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
decq %rax
cmpq $0x4, %rax
ja 0x30160
leaq 0x1a964(%rip), %rcx     # 0x4aa24
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x30167
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x18ca2(%rip), %rcx     # 0x48d84
leaq 0x158bf(%rip), %rdx     # 0x459a8
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1cca1(%rip), %rdi     # 0x4cd98
cmovneq %rdx, %rdi
jmp 0x30167
movl 0x10(%r14), %edx
movzwl %dx, %esi
shrl $0x10, %edx
leaq 0x1b0b1(%rip), %rdi     # 0x4b1bf
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
jmp 0x30177
cmpq $0x21, %rax
je 0x30125
cmpq $0x22, %rax
jne 0x30160
leaq 0x1a56b(%rip), %rdi     # 0x4a697
jmp 0x30167
leaq 0x1a55f(%rip), %rdi     # 0x4a694
jmp 0x30167
leaq 0x1a555(%rip), %rdi     # 0x4a693
jmp 0x30167
leaq 0x1aa81(%rip), %rdi     # 0x4abc8
jmp 0x30167
leaq 0x1aa7d(%rip), %rdi     # 0x4abcd
jmp 0x30167
testq %rax, %rax
jne 0x30160
leaq 0x1655f(%rip), %rdi     # 0x466bd
jmp 0x30167
leaq 0x15841(%rip), %rdi     # 0x459a8
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
xorl %eax, %eax
callq 0x971e
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x17a82
leaq 0x1afd4(%rip), %rdi     # 0x4b160
jmp 0x30167
leaq 0x1afa1(%rip), %rdi     # 0x4b136
jmp 0x30167
leaq 0x16528(%rip), %rdi     # 0x466c6
jmp 0x30167
leaq 0x1bf19(%rip), %rdi     # 0x4c0c0
jmp 0x30167
leaq 0x16567(%rip), %rdi     # 0x46717
jmp 0x30167
leaq 0x1af96(%rip), %rdi     # 0x4b14f
jmp 0x30167
leaq 0x1afb7(%rip), %rdi     # 0x4b179
jmp 0x30167
leaq 0x1af9c(%rip), %rdi     # 0x4b167
jmp 0x30167
leaq 0x1af42(%rip), %rdi     # 0x4b116
jmp 0x30167
leaq 0x1af4c(%rip), %rdi     # 0x4b129
jmp 0x30167
leaq 0x1af5f(%rip), %rdi     # 0x4b145
jmp 0x30167
leaq 0x1af64(%rip), %rdi     # 0x4b156
jmp 0x30167
leaq 0x1af74(%rip), %rdi     # 0x4b172
jmp 0x30167