// File: /workspace/github_c_makefile_star2_O1/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 0x2f98a
leaq 0x28b1e(%rip), %rax     # 0x58180
testb $0x30, (%rax)
je 0x2f98a
movq %rdi, %r14
movzwl (%rdi), %eax
cmpl $0x503, %eax            # imm = 0x503
jle 0x2f6b8
leal -0x504(%rax), %ecx
cmpl $0xb, %ecx
ja 0x2f753
leaq 0x1b276(%rip), %rax     # 0x4a904
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x2f973
leaq 0x1b381(%rip), %rcx     # 0x4aa34
jmp 0x2f8d3
cmpl $0x2ff, %eax            # imm = 0x2FF
jle 0x2f70d
addl $0xfffffd00, %eax       # imm = 0xFFFFFD00
cmpl $0x3, %eax
ja 0x2f98a
leaq 0x1b220(%rip), %rcx     # 0x4a8f4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1b96e(%rip), %rcx     # 0x4b061
leaq 0x1626a(%rip), %rdx     # 0x45964
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1b952(%rip), %rdi     # 0x4b05a
jmp 0x2f90a
cmpl $0x100, %eax            # imm = 0x100
je 0x2f8df
cmpl $0x200, %eax            # imm = 0x200
je 0x2f8b4
cmpl $0x202, %eax            # imm = 0x202
jne 0x2f98a
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
addq $-0x2, %rax
cmpq $0x3, %rax
ja 0x2f973
leaq 0x1b2aa(%rip), %rcx     # 0x4a9f8
jmp 0x2f8d3
cmpl $0x600, %eax            # imm = 0x600
je 0x2f910
cmpl $0x603, %eax            # imm = 0x603
jne 0x2f98a
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
leaq -0x1(%rax), %rcx
cmpq $0x5, %rcx
ja 0x2f92c
leaq 0x1b1ab(%rip), %rax     # 0x4a934
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1aeb7(%rip), %rdi     # 0x4a650
jmp 0x2f97a
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
incq %rax
cmpq $0x2, %rax
ja 0x2f973
leaq 0x1b2a7(%rip), %rcx     # 0x4aa64
jmp 0x2f8d3
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x3, %rax
ja 0x2f973
leaq 0x1b276(%rip), %rcx     # 0x4aa54
jmp 0x2f8d3
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x2f973
leaq 0x1b249(%rip), %rcx     # 0x4aa48
jmp 0x2f8d3
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
leaq -0x7(%rax), %rcx
cmpq $0x20, %rcx
ja 0x2f965
leaq 0x1b128(%rip), %rax     # 0x4a94c
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1b89c(%rip), %rdi     # 0x4b0d0
jmp 0x2f97a
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1b80f(%rip), %rcx     # 0x4b05e
leaq 0x1610e(%rip), %rdx     # 0x45964
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1b7f3(%rip), %rdi     # 0x4b057
jmp 0x2f90a
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1b7e9(%rip), %rcx     # 0x4b068
leaq 0x160de(%rip), %rdx     # 0x45964
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1b7d0(%rip), %rdi     # 0x4b064
jmp 0x2f90a
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0xa, %rax
ja 0x2f973
leaq 0x1b156(%rip), %rcx     # 0x4aa08
jmp 0x2f8d3
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
decq %rax
cmpq $0x4, %rax
ja 0x2f973
leaq 0x1b111(%rip), %rcx     # 0x4a9e4
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x2f97a
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x1, %rax
leaq 0x1944f(%rip), %rcx     # 0x48d44
leaq 0x16068(%rip), %rdx     # 0x45964
cmoveq %rcx, %rdx
testq %rax, %rax
leaq 0x1d44e(%rip), %rdi     # 0x4cd58
cmovneq %rdx, %rdi
jmp 0x2f97a
movl 0x10(%r14), %edx
movzwl %dx, %esi
shrl $0x10, %edx
leaq 0x1b85e(%rip), %rdi     # 0x4b17f
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
jmp 0x2f98a
cmpq $0x21, %rax
je 0x2f938
cmpq $0x22, %rax
jne 0x2f973
leaq 0x1ad18(%rip), %rdi     # 0x4a657
jmp 0x2f97a
leaq 0x1ad0c(%rip), %rdi     # 0x4a654
jmp 0x2f97a
leaq 0x1ad02(%rip), %rdi     # 0x4a653
jmp 0x2f97a
leaq 0x1b22e(%rip), %rdi     # 0x4ab88
jmp 0x2f97a
leaq 0x1b22a(%rip), %rdi     # 0x4ab8d
jmp 0x2f97a
testq %rax, %rax
jne 0x2f973
leaq 0x16d0c(%rip), %rdi     # 0x4667d
jmp 0x2f97a
leaq 0x15fea(%rip), %rdi     # 0x45964
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
xorl %eax, %eax
callq 0x95f3
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x17530
leaq 0x1b781(%rip), %rdi     # 0x4b120
jmp 0x2f97a
leaq 0x1b74e(%rip), %rdi     # 0x4b0f6
jmp 0x2f97a
leaq 0x16cd5(%rip), %rdi     # 0x46686
jmp 0x2f97a
leaq 0x1c6c6(%rip), %rdi     # 0x4c080
jmp 0x2f97a
leaq 0x16d14(%rip), %rdi     # 0x466d7
jmp 0x2f97a
leaq 0x1b743(%rip), %rdi     # 0x4b10f
jmp 0x2f97a
leaq 0x1b764(%rip), %rdi     # 0x4b139
jmp 0x2f97a
leaq 0x1b749(%rip), %rdi     # 0x4b127
jmp 0x2f97a
leaq 0x1b6ef(%rip), %rdi     # 0x4b0d6
jmp 0x2f97a
leaq 0x1b6f9(%rip), %rdi     # 0x4b0e9
jmp 0x2f97a
leaq 0x1b70c(%rip), %rdi     # 0x4b105
jmp 0x2f97a
leaq 0x1b711(%rip), %rdi     # 0x4b116
jmp 0x2f97a
leaq 0x1b721(%rip), %rdi     # 0x4b132
jmp 0x2f97a