// File: /workspace/github_c_makefile_star2_O3/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 0x3e0cc
leaq 0x1a440(%rip), %rax     # 0x58180
testb $0x30, (%rax)
je 0x3e0cc
movq %rdi, %r14
movzwl (%rdi), %eax
leal -0x14(%rax), %ecx
cmpl $0xd, %ecx
ja 0x3ddad
leaq 0x104b2(%rip), %rax     # 0x4e210
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
leaq 0xd28f(%rip), %rdi      # 0x4b008
cmpq $0x31, %rax
jg 0x3dfa3
addq $-0x3, %rax
cmpq $0x12, %rax
ja 0x3e0b5
leaq 0x104d0(%rip), %rcx     # 0x4e268
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xda37(%rip), %rdi      # 0x4b7df
jmp 0x3e0bc
decl %eax
cmpl $0xc, %eax
ja 0x3e0cc
leaq 0x1041d(%rip), %rcx     # 0x4e1dc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x3e0c5
movl $0x17, %ecx
btl %eax, %ecx
jae 0x3e0c5
leaq 0x19ea4(%rip), %rcx     # 0x57c98
jmp 0x3ded9
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x5, %rax
ja 0x3e0b5
leaq 0x10793(%rip), %rcx     # 0x4e5a8
jmp 0x3df97
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0xf, %rax
jg 0x3dfdf
cmpq $0x3, %rax
ja 0x3e0b5
leaq 0x10408(%rip), %rcx     # 0x4e248
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1091e(%rip), %rdi     # 0x4e76e
jmp 0x3e0bc
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x3e0b5
leaq 0x1072b(%rip), %rcx     # 0x4e59c
jmp 0x3df97
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0xf, %rax
jg 0x3e001
cmpq $0x3, %rax
ja 0x3e0b5
leaq 0x103bc(%rip), %rcx     # 0x4e258
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xd54d(%rip), %rdi      # 0x4b3f9
jmp 0x3e0bc
leaq 0x10848(%rip), %rdi     # 0x4e700
jmp 0x3df6d
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x2, %rax
ja 0x3e0b5
leaq 0x19e17(%rip), %rcx     # 0x57cf0
movq (%rcx,%rax,8), %rdi
jmp 0x3e0bc
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x13, %rax
jg 0x3e023
cmpq $0x5, %rax
ja 0x3e0b5
leaq 0x103ac(%rip), %rcx     # 0x4e2b4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xd88d(%rip), %rdi      # 0x4b7a5
jmp 0x3e0bc
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x3, %rax
ja 0x3e0b5
leaq 0x10653(%rip), %rcx     # 0x4e58c
jmp 0x3df97
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 0x107b1(%rip), %rdi     # 0x4e70e
xorl %eax, %eax
callq 0x3120
jmp 0x3df74
leaq 0x6e78(%rip), %rdi      # 0x44de5
xorl %eax, %eax
callq 0x3120
movl %eax, %ebx
jmp 0x3e0cc
xorl %eax, %eax
callq 0x96fd
movq 0x10(%r14), %rax
cmpq $0x4, %rax
ja 0x3e0b5
leaq 0x105e1(%rip), %rcx     # 0x4e578
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x3e0bc
cmpq $0x18f, %rax            # imm = 0x18F
jle 0x3e07f
cmpq $0x63f, %rax            # imm = 0x63F
jg 0x3e09c
cmpq $0x190, %rax            # imm = 0x190
je 0x3e0da
cmpq $0x320, %rax            # imm = 0x320
jne 0x3e0b5
leaq 0x9284(%rip), %rdi      # 0x4725e
jmp 0x3e0bc
cmpq $0x10, %rax
je 0x3e042
cmpq $0x20, %rax
je 0x3e04b
cmpq $0x30, %rax
jne 0x3e0b5
leaq 0x1077e(%rip), %rdi     # 0x4e77a
jmp 0x3e0bc
cmpq $0x10, %rax
je 0x3e054
cmpq $0x20, %rax
je 0x3e05d
cmpq $0x30, %rax
jne 0x3e0b5
leaq 0x10744(%rip), %rdi     # 0x4e762
jmp 0x3e0bc
cmpq $0x15, %rax
jg 0x3e066
cmpq $0x14, %rax
je 0x3e122
cmpq $0x15, %rax
jne 0x3e0b5
leaq 0xd781(%rip), %rdi      # 0x4b7c1
jmp 0x3e0bc
leaq 0x1072c(%rip), %rdi     # 0x4e775
jmp 0x3e0bc
leaq 0x1072f(%rip), %rdi     # 0x4e781
jmp 0x3e0bc
leaq 0x10703(%rip), %rdi     # 0x4e75e
jmp 0x3e0bc
leaq 0x10705(%rip), %rdi     # 0x4e769
jmp 0x3e0bc
cmpq $0x16, %rax
je 0x3e12b
cmpq $0x24, %rax
jne 0x3e0b5
leaq 0xd758(%rip), %rdi      # 0x4b7d5
jmp 0x3e0bc
cmpq $0x32, %rax
je 0x3e0bc
cmpq $0x64, %rax
je 0x3e0e3
cmpq $0xc8, %rax
jne 0x3e0b5
leaq 0x1064a(%rip), %rdi     # 0x4e6e4
jmp 0x3e0bc
cmpq $0x640, %rax            # imm = 0x640
je 0x3e0ec
cmpq $0xc80, %rax            # imm = 0xC80
jne 0x3e0b5
leaq 0x10691(%rip), %rdi     # 0x4e744
jmp 0x3e0bc
leaq 0x78ec(%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 0x8d61(%rip), %rdi      # 0x46e42
jmp 0x3e0bc
leaq 0x105f2(%rip), %rdi     # 0x4e6dc
jmp 0x3e0bc
leaq 0x1064c(%rip), %rdi     # 0x4e73f
jmp 0x3e0bc
leaq 0x1065b(%rip), %rdi     # 0x4e757
jmp 0x3e0bc
leaq 0x1061f(%rip), %rdi     # 0x4e724
jmp 0x3e0bc
leaq 0x10611(%rip), %rdi     # 0x4e71f
jmp 0x3e0bc
leaq 0xd696(%rip), %rdi      # 0x4b7ad
jmp 0x3e0bc
leaq 0xc316(%rip), %rdi      # 0x4a436
jmp 0x3e0bc
leaq 0xd68e(%rip), %rdi      # 0x4b7b7
jmp 0x3e0bc
leaq 0xd699(%rip), %rdi      # 0x4b7cb
jmp 0x3e0bc