// File: /workspace/github_c_makefile_star2_O2/hfiguiere[P]exifprobe/maker_asahi.c
// Function: asahi3_interpret_value
void
asahi3_interpret_value(struct ifd_entry *entry_ptr)
{
    int year,month,day;
    int chpr = 0;

    if(entry_ptr && (PRINT_VALUE))
    {
        switch(entry_ptr->tag)
        {
            case 0x0001:    /* CaptureMode */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Auto"); break;
                    case 1: chpr += printf("Night-scene"); break;
                    case 2: chpr += printf("Manual"); break;
                    case 4: chpr += printf("Multiple"); break;
                    default: break;
                }
                print_endvalue();
                break;
            case 0x0002: /* ThumbnailDimensions" */
                chpr += printf(" pixels");
                break;
            case 0x0006:
                year = ((entry_ptr->value & 0xff) << 8) | ((entry_ptr->value & 0xff00) >> 8);
                month = ((entry_ptr->value & 0xff0000) >> 16) & 0x7f;
                day = ((entry_ptr->value & 0xff000000) >> 24) & 0x7f;
                chpr += printf(" = %4d:%02d:%02d",year,month,day);
                break;
            case 0x0008: /* QualityMode" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Good"); break;
                    case 1: chpr += printf("Better"); break;
                    case 2: chpr += printf("Best"); break;
                    case 3: chpr += printf("TIFF"); break;
                    case 4: chpr += printf("RAW"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0009: /* ImageSize" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("640x480"); break;
                    case 1: chpr += printf("Full"); break;
                    case 2: chpr += printf("1024x768"); break;
                    case 4: chpr += printf("1600x1200"); break;
                    case 5: chpr += printf("2048x1536"); break;
                    case 20: chpr += printf("2288x1712"); break;
                    case 21: chpr += printf("2592x1944"); break;
                    case 22: chpr += printf("2304x1728"); break;
                    case 36: chpr += printf("3008x2008"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x000D: /* FocusMode" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Normal"); break;
                    case 1: chpr += printf("Macro(1)"); break;
                    case 2: chpr += printf("Macro(2)"); break;
                    case 3: chpr += printf("Infinity"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0014: /* IsoSensitivity" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 3: chpr += printf("50"); break;
                    case 4: chpr += printf("64"); break;
                    case 6: chpr += printf("100"); break;
                    case 9: chpr += printf("200"); break;
                    case 12: chpr += printf("400"); break;
                    case 15: chpr += printf("800"); break;
                    case 18: chpr += printf("1600"); break;
                    case 21: chpr += printf("3200"); break;
                    case 50: chpr += printf("50"); break;
                    case 100: chpr += printf("100"); break;
                    case 200: chpr += printf("200"); break;
                    case 400: chpr += printf("400"); break;
                    case 800: chpr += printf("800"); break;
                    case 1600: chpr += printf("1600"); break;
                    case 3200: chpr += printf("3200"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0017: /* MeteringMode" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Multi Segment"); break;
                    case 1: chpr += printf("Center Weighted"); break;
                    case 2: chpr += printf("Spot"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0019: /* WhiteBalance" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Auto"); break;
                    case 1: chpr += printf("Daylight"); break;
                    case 2: chpr += printf("Shade"); break;
                    case 3: chpr += printf("Fluorescent"); break;
                    case 4: chpr += printf("Tungsten"); break;
                    case 5: chpr += printf("Manual"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x001D: chpr += printf(" x .1 mm");
                break; 

            case 0x001F: /* Saturation" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Normal"); break;
                    case 1: chpr += printf("Low"); break;
                    case 2: chpr += printf("High"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0020: /* Contrast" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Normal"); break;
                    case 1: chpr += printf("Low"); break;
                    case 0x10: chpr += printf("Low"); break;
                    case 2: chpr += printf("High"); break;
                    case 0x20: chpr += printf("High"); break;
                    case 3: chpr += printf("Medium Low"); break;
                    case 0x30: chpr += printf("Medium High"); break;
                    default: chpr += printf("unknown"); break;
                }
                print_endvalue();
                break;
            case 0x0021: /* Sharpness" */
                print_startvalue();
                switch(entry_ptr->value)
                {
                    case 0: chpr += printf("Normal"); break;
                    case 1: chpr += printf("Soft"); break;
                    case 0x10: chpr += printf("Soft"); break;
                    case 2: chpr += printf("Hard"); break;
                    case 0x20: chpr += printf("Hard"); break;
                    case 3: chpr += printf("Medium Soft"); break;
                    case 0x30: chpr += printf("Medium Hard"); 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 0x3c083
leaq 0x1b41f(%rip), %rax     # 0x57180
testb $0x30, (%rax)
je 0x3c083
movq %rdi, %r14
movzwl (%rdi), %eax
leal -0x14(%rax), %ecx
cmpl $0xd, %ecx
ja 0x3bdc4
leaq 0x10441(%rip), %rax     # 0x4c1c0
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
leaq 0xd21e(%rip), %rdi      # 0x48fb8
leaq -0x3(%rax), %rcx
cmpq $0x12, %rcx
ja 0x3bfee
leaq 0x10469(%rip), %rax     # 0x4c218
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0xd9d0(%rip), %rdi      # 0x4978f
jmp 0x3c073
decl %eax
cmpl $0xc, %eax
ja 0x3c083
leaq 0x103b6(%rip), %rcx     # 0x4c18c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x3c07c
pushq $0x17
popq %rcx
btl %eax, %ecx
jae 0x3c07c
leaq 0x1ae8f(%rip), %rcx     # 0x56c98
jmp 0x3bef6
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x5, %rax
ja 0x3c06c
leaq 0x1072e(%rip), %rcx     # 0x4c558
jmp 0x3bfaa
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x3, %rax
jbe 0x3bfb6
cmpq $0x10, %rax
je 0x3bfc6
cmpq $0x20, %rax
je 0x3c091
cmpq $0x30, %rax
jne 0x3c06c
leaq 0x108c1(%rip), %rdi     # 0x4c72a
jmp 0x3c073
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x3c06c
leaq 0x106c2(%rip), %rcx     # 0x4c54c
jmp 0x3bfaa
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x3, %rax
jbe 0x3bfd2
cmpq $0x10, %rax
je 0x3c0a3
cmpq $0x20, %rax
je 0x3c09a
cmpq $0x30, %rax
jne 0x3c06c
leaq 0x10849(%rip), %rdi     # 0x4c712
jmp 0x3c073
leaq 0x107db(%rip), %rdi     # 0x4c6b0
jmp 0x3bf80
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x3c06c
leaq 0x1adfa(%rip), %rcx     # 0x56cf0
movq (%rcx,%rax,8), %rdi
jmp 0x3c073
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x5, %rax
ja 0x3c03f
leaq 0x10349(%rip), %rcx     # 0x4c264
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xd82a(%rip), %rdi      # 0x49755
jmp 0x3c073
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x3, %rax
ja 0x3c06c
leaq 0x105f0(%rip), %rcx     # 0x4c53c
jmp 0x3bfaa
movq 0x10(%r14), %rcx
movl %ecx, %eax
rolw $0x8, %ax
movzwl %ax, %esi
movl %ecx, %edx
shrl $0x10, %edx
andl $0x7f, %edx
shrl $0x18, %ecx
andl $0x7f, %ecx
leaq 0x1074e(%rip), %rdi     # 0x4c6be
xorl %eax, %eax
callq 0x3120
jmp 0x3bf87
leaq 0x6e21(%rip), %rdi      # 0x42da1
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
jmp 0x3c083
xorl %eax, %eax
callq 0x8f81
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x3c06c
leaq 0x1057e(%rip), %rcx     # 0x4c528
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x3c073
leaq 0x1023b(%rip), %rcx     # 0x4c1f8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x10758(%rip), %rdi     # 0x4c725
jmp 0x3c073
leaq 0x1022f(%rip), %rcx     # 0x4c208
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xd3c0(%rip), %rdi      # 0x493a9
jmp 0x3c073
cmpq $0x32, %rax
je 0x3c073
cmpq $0x64, %rax
je 0x3c0e2
cmpq $0xc8, %rax
je 0x3c0d9
cmpq $0x190, %rax            # imm = 0x190
je 0x3c0be
cmpq $0x320, %rax            # imm = 0x320
je 0x3c0c7
cmpq $0x640, %rax            # imm = 0x640
je 0x3c0d0
cmpq $0xc80, %rax            # imm = 0xC80
jne 0x3c06c
leaq 0x106b7(%rip), %rdi     # 0x4c6f4
jmp 0x3c073
cmpq $0x14, %rax
je 0x3c133
cmpq $0x15, %rax
je 0x3c127
cmpq $0x16, %rax
je 0x3c11b
cmpq $0x24, %rax
jne 0x3c06c
leaq 0xd71b(%rip), %rdi      # 0x49785
jmp 0x3c073
leaq 0x78f1(%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 0x10699(%rip), %rdi     # 0x4c731
jmp 0x3c073
leaq 0x10678(%rip), %rdi     # 0x4c719
jmp 0x3c073
leaq 0x10664(%rip), %rdi     # 0x4c70e
jmp 0x3c073
leaq 0x1066b(%rip), %rdi     # 0x4c71e
jmp 0x3c073
leaq 0x1064b(%rip), %rdi     # 0x4c707
jmp 0x3c073
leaq 0x8d2d(%rip), %rdi      # 0x44df2
jmp 0x3c073
leaq 0x9140(%rip), %rdi      # 0x4520e
jmp 0x3c073
leaq 0x10618(%rip), %rdi     # 0x4c6ef
jmp 0x3c073
leaq 0x105b4(%rip), %rdi     # 0x4c694
jmp 0x3c073
leaq 0x105a3(%rip), %rdi     # 0x4c68c
jmp 0x3c073
leaq 0x105e2(%rip), %rdi     # 0x4c6d4
jmp 0x3c073
leaq 0xc2e8(%rip), %rdi      # 0x483e6
jmp 0x3c073
leaq 0xd653(%rip), %rdi      # 0x4975d
jmp 0x3c073
leaq 0x105b9(%rip), %rdi     # 0x4c6cf
jmp 0x3c073
leaq 0xd659(%rip), %rdi      # 0x4977b
jmp 0x3c073
leaq 0xd643(%rip), %rdi      # 0x49771
jmp 0x3c073
leaq 0xd62d(%rip), %rdi      # 0x49767
jmp 0x3c073