// File: /workspace/github_c_makefile_star2_O0/hfiguiere[P]exifprobe/maker_generic.c
// Function: model_number
int
model_number(int make,char *modelstring,char *softwarename)
{
    int number = NO_MODEL;

    if(modelstring == NULL)
        modelstring = NULLSTRING;
    if(softwarename == NULL)
        softwarename = NULLSTRING;
    switch(make)
    {
        case MAKER_AGFA:
            number = agfa_model_number(modelstring,softwarename);
            break;
        case MAKER_ASAHI:   /* PENTAX                                 */
        case MAKER_PENTAX:  /* PENTAX                                 */
            number = asahi_model_number(modelstring,softwarename);
            break;
        case MAKER_CANON:
            number = canon_model_number(modelstring,softwarename);
            break;
        case MAKER_CASIO:
            number = casio_model_number(modelstring,softwarename);
            break;
        case MAKER_EPSON:
            number = epson_model_number(modelstring,softwarename);
            break;
        case MAKER_FUJIFILM:
            number = fujifilm_model_number(modelstring,softwarename);
            break;
        case MAKER_HP:      /* proprietary makernotes                 */
            number = hp_model_number(modelstring,softwarename);
            break;
        case MAKER_KODAK:   /* proprietary makernotes                 */
            number = kodak_model_number(modelstring,softwarename);
            break;
        case MAKER_KONICA:  /* proprietary notes: old Konica models   */
            number = konica_model_number(modelstring,softwarename);
            break;
        case MAKER_KYOCERA:
            number = kyocera_model_number(modelstring,softwarename);
            break;
        case MAKER_LEICA:
            number = leica_model_number(modelstring,softwarename);
            break;
        case MAKER_MINOLTA:
            number = minolta_model_number(modelstring,softwarename);
            break;
        case MAKER_NIKON:
            number = nikon_model_number(modelstring,softwarename);
            break;
        case MAKER_OLYMPUS:
            number = olympus_model_number(modelstring,softwarename);
            break;
        case MAKER_PANASONIC:
            number = panasonic_model_number(modelstring,softwarename);
            break;
        case MAKER_RICOH:    /* no or non-IFD makernote data          */
            number = ricoh_model_number(modelstring,softwarename);
            break;
        case MAKER_SANYO:
            number = sanyo_model_number(modelstring,softwarename);
            break;
        case MAKER_SIGMA:
            number = sigma_model_number(modelstring,softwarename);
            break;
        case MAKER_SONY:    /* no makernote data                      */
            /* DSC-V3 has makernote in IFD format, but nothing is     */
            /* known about meaning (there are no maker-specific       */
            /* routines here yet)                                     */
            number = sony_model_number(modelstring,softwarename);
            break;
        case MAKER_TOSHIBA:
            number = toshiba_model_number(modelstring,softwarename);
            break;
        case MAKER_TRAVELER:    /* proprietary makernote              */
            number = traveler_model_number(modelstring,softwarename);
            break;
        default:    /* NO_MODEL                                       */
            break;
    }
    return(number);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x26e4c
leaq 0x434d2(%rip), %rax     # 0x6a31a
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x26e5e
leaq 0x434c0(%rip), %rax     # 0x6a31a
movq %rax, -0x18(%rbp)
movl -0x4(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0x15, %eax
ja 0x2702a
movq -0x28(%rbp), %rax
leaq 0x4229b(%rip), %rcx     # 0x69118
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5ca10
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5d870
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x50100
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x47610
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x41460
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x466d0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x631a0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x63240
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x62d50
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x61af0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5bae0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x499f0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3e3d0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x42800
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x60ac0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x632e0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4e800
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x623a0
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x62900
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x61f70
movl %eax, -0x1c(%rbp)
jmp 0x2702c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x63380
movl %eax, -0x1c(%rbp)
jmp 0x2702c
jmp 0x2702c
movl -0x1c(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)