// File: /workspace/github_c_makefile_star2_O1/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 0x3d7dc
leaq 0x1ad30(%rip), %rax     # 0x58180
testb $0x30, (%rax)
je 0x3d7dc
movq %rdi, %r14
movzwl (%rdi), %eax
leal -0x14(%rax), %ecx
cmpl $0xd, %ecx
ja 0x3d4bd
leaq 0x10d62(%rip), %rax     # 0x4e1d0
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
leaq 0xdb3f(%rip), %rdi      # 0x4afc8
cmpq $0x31, %rax
jg 0x3d6b3
addq $-0x3, %rax
cmpq $0x12, %rax
ja 0x3d7c5
leaq 0x10d80(%rip), %rcx     # 0x4e228
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xe2e7(%rip), %rdi      # 0x4b79f
jmp 0x3d7cc
decl %eax
cmpl $0xc, %eax
ja 0x3d7dc
leaq 0x10ccd(%rip), %rcx     # 0x4e19c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x3d7d5
movl $0x17, %ecx
btl %eax, %ecx
jae 0x3d7d5
leaq 0x1a794(%rip), %rcx     # 0x57c98
jmp 0x3d5e9
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x5, %rax
ja 0x3d7c5
leaq 0x11043(%rip), %rcx     # 0x4e568
jmp 0x3d6a7
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0xf, %rax
jg 0x3d6ef
cmpq $0x3, %rax
ja 0x3d7c5
leaq 0x10cb8(%rip), %rcx     # 0x4e208
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x111ce(%rip), %rdi     # 0x4e72e
jmp 0x3d7cc
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x3d7c5
leaq 0x10fdb(%rip), %rcx     # 0x4e55c
jmp 0x3d6a7
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0xf, %rax
jg 0x3d711
cmpq $0x3, %rax
ja 0x3d7c5
leaq 0x10c6c(%rip), %rcx     # 0x4e218
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xddfd(%rip), %rdi      # 0x4b3b9
jmp 0x3d7cc
leaq 0x110f8(%rip), %rdi     # 0x4e6c0
jmp 0x3d67d
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x3d7c5
leaq 0x1a707(%rip), %rcx     # 0x57cf0
movq (%rcx,%rax,8), %rdi
jmp 0x3d7cc
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x13, %rax
jg 0x3d733
cmpq $0x5, %rax
ja 0x3d7c5
leaq 0x10c5c(%rip), %rcx     # 0x4e274
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xe13d(%rip), %rdi      # 0x4b765
jmp 0x3d7cc
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x3, %rax
ja 0x3d7c5
leaq 0x10f03(%rip), %rcx     # 0x4e54c
jmp 0x3d6a7
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 0x11061(%rip), %rdi     # 0x4e6ce
xorl %eax, %eax
callq 0x3120
jmp 0x3d684
leaq 0x7724(%rip), %rdi      # 0x44da1
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
jmp 0x3d7dc
xorl %eax, %eax
callq 0x95d2
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x3d7c5
leaq 0x10e91(%rip), %rcx     # 0x4e538
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x3d7cc
cmpq $0x18f, %rax            # imm = 0x18F
jle 0x3d78f
cmpq $0x63f, %rax            # imm = 0x63F
jg 0x3d7ac
cmpq $0x190, %rax            # imm = 0x190
je 0x3d7ea
cmpq $0x320, %rax            # imm = 0x320
jne 0x3d7c5
leaq 0x9b34(%rip), %rdi      # 0x4721e
jmp 0x3d7cc
cmpq $0x10, %rax
je 0x3d752
cmpq $0x20, %rax
je 0x3d75b
cmpq $0x30, %rax
jne 0x3d7c5
leaq 0x1102e(%rip), %rdi     # 0x4e73a
jmp 0x3d7cc
cmpq $0x10, %rax
je 0x3d764
cmpq $0x20, %rax
je 0x3d76d
cmpq $0x30, %rax
jne 0x3d7c5
leaq 0x10ff4(%rip), %rdi     # 0x4e722
jmp 0x3d7cc
cmpq $0x15, %rax
jg 0x3d776
cmpq $0x14, %rax
je 0x3d832
cmpq $0x15, %rax
jne 0x3d7c5
leaq 0xe031(%rip), %rdi      # 0x4b781
jmp 0x3d7cc
leaq 0x10fdc(%rip), %rdi     # 0x4e735
jmp 0x3d7cc
leaq 0x10fdf(%rip), %rdi     # 0x4e741
jmp 0x3d7cc
leaq 0x10fb3(%rip), %rdi     # 0x4e71e
jmp 0x3d7cc
leaq 0x10fb5(%rip), %rdi     # 0x4e729
jmp 0x3d7cc
cmpq $0x16, %rax
je 0x3d83b
cmpq $0x24, %rax
jne 0x3d7c5
leaq 0xe008(%rip), %rdi      # 0x4b795
jmp 0x3d7cc
cmpq $0x32, %rax
je 0x3d7cc
cmpq $0x64, %rax
je 0x3d7f3
cmpq $0xc8, %rax
jne 0x3d7c5
leaq 0x10efa(%rip), %rdi     # 0x4e6a4
jmp 0x3d7cc
cmpq $0x640, %rax            # imm = 0x640
je 0x3d7fc
cmpq $0xc80, %rax            # imm = 0xC80
jne 0x3d7c5
leaq 0x10f41(%rip), %rdi     # 0x4e704
jmp 0x3d7cc
leaq 0x8198(%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 0x9611(%rip), %rdi      # 0x46e02
jmp 0x3d7cc
leaq 0x10ea2(%rip), %rdi     # 0x4e69c
jmp 0x3d7cc
leaq 0x10efc(%rip), %rdi     # 0x4e6ff
jmp 0x3d7cc
leaq 0x10f0b(%rip), %rdi     # 0x4e717
jmp 0x3d7cc
leaq 0x10ecf(%rip), %rdi     # 0x4e6e4
jmp 0x3d7cc
leaq 0x10ec1(%rip), %rdi     # 0x4e6df
jmp 0x3d7cc
leaq 0xdf46(%rip), %rdi      # 0x4b76d
jmp 0x3d7cc
leaq 0xcbc6(%rip), %rdi      # 0x4a3f6
jmp 0x3d7cc
leaq 0xdf3e(%rip), %rdi      # 0x4b777
jmp 0x3d7cc
leaq 0xdf49(%rip), %rdi      # 0x4b78b
jmp 0x3d7cc