// File: cloudinary[P]fuif/encoding/encoding.cpp
// Function: ch_describe(Image const&, int)
const char * ch_describe(const Image &image, int i) {
    if (i < image.nb_meta_channels) return "Meta";
    int c=image.channel[i].component;
    bool rgb=true, palette=false;
    for (const Transform &t : image.transform) {
        if (t.ID == TRANSFORM_YCoCg) rgb=false;
        if (t.ID == TRANSFORM_YCbCr) rgb=false;
        if (t.ID == TRANSFORM_PALETTE && t.parameters[0] != t.parameters[1]) { palette=true;}
    }
    if (image.real_nb_channels < 3) {
        if (c==0) return "Gray";
        if (c==1) return "Alpha";
    }
    if (palette && c==0) return "Palette";
    if ((image.colormodel & 48) == 0) {
        if (rgb && c==0) return "Red";
        if (rgb && c==1) return "Green";
        if (rgb && c==2) return "Blue";
    } else {
        if (rgb && c==0) return "Cyan";
        if (rgb && c==1) return "Magenta";
        if (rgb && c==2) return "Yellow";
        if (c==3) return "Key";
        if (c==4) return "Alpha";
        if (c==5) return "Depth";
    }
    if (c==0) return "Luma";
    if (c==1) return "Chroma1";
    if (c==2) return "Chroma2";
    if (c==3) return "Alpha";
    if (c==4) return "Depth";
    if (c==5) return "Unknown_5";
    if (c==6) return "Unknown_6";
    return "Unknown";
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movl %esi, 0x34(%rsp)
movl 0x34(%rsp), %eax
movq 0x38(%rsp), %rcx
cmpl 0x6c(%rcx), %eax
jge 0x1ec3c
leaq 0x287bc(%rip), %rax     # 0x473ee
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
movq 0x38(%rsp), %rdi
movslq 0x34(%rsp), %rsi
callq 0x13390
movl 0x3c(%rax), %eax
movl %eax, 0x30(%rsp)
movb $0x1, 0x2f(%rsp)
movb $0x0, 0x2e(%rsp)
movq 0x38(%rsp), %rax
addq $0x18, %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
callq 0x152e0
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x15310
movq %rax, 0x10(%rsp)
leaq 0x18(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x155f0
testb $0x1, %al
jne 0x1eca0
jmp 0x1ed23
leaq 0x18(%rsp), %rdi
callq 0x15660
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x1, (%rax)
jne 0x1ecbe
movb $0x0, 0x2f(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x1eccd
movb $0x0, 0x2f(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x6, (%rax)
jne 0x1ed12
movq 0x8(%rsp), %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x13560
movl (%rax), %eax
movl %eax, 0x4(%rsp)
movq 0x8(%rsp), %rdi
addq $0x8, %rdi
movl $0x1, %esi
callq 0x13560
movq %rax, %rcx
movl 0x4(%rsp), %eax
cmpl (%rcx), %eax
je 0x1ed12
movb $0x1, 0x2e(%rsp)
jmp 0x1ed14
leaq 0x18(%rsp), %rdi
callq 0x15670
jmp 0x1ec88
movq 0x38(%rsp), %rax
cmpl $0x3, 0x68(%rax)
jge 0x1ed60
cmpl $0x0, 0x30(%rsp)
jne 0x1ed46
leaq 0x286b7(%rip), %rax     # 0x473f3
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x1, 0x30(%rsp)
jne 0x1ed5e
leaq 0x286a4(%rip), %rax     # 0x473f8
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
jmp 0x1ed60
testb $0x1, 0x2e(%rsp)
je 0x1ed7f
cmpl $0x0, 0x30(%rsp)
jne 0x1ed7f
leaq 0x28452(%rip), %rax     # 0x471c7
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
movq 0x38(%rsp), %rax
movl 0x70(%rax), %eax
andl $0x30, %eax
cmpl $0x0, %eax
jne 0x1edf1
testb $0x1, 0x2f(%rsp)
je 0x1edae
cmpl $0x0, 0x30(%rsp)
jne 0x1edae
leaq 0x2865a(%rip), %rax     # 0x473fe
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
testb $0x1, 0x2f(%rsp)
je 0x1edcd
cmpl $0x1, 0x30(%rsp)
jne 0x1edcd
leaq 0x2863f(%rip), %rax     # 0x47402
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
testb $0x1, 0x2f(%rsp)
je 0x1edec
cmpl $0x2, 0x30(%rsp)
jne 0x1edec
leaq 0x28626(%rip), %rax     # 0x47408
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
jmp 0x1ee98
testb $0x1, 0x2f(%rsp)
je 0x1ee10
cmpl $0x0, 0x30(%rsp)
jne 0x1ee10
leaq 0x28607(%rip), %rax     # 0x4740d
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
testb $0x1, 0x2f(%rsp)
je 0x1ee2f
cmpl $0x1, 0x30(%rsp)
jne 0x1ee2f
leaq 0x285ed(%rip), %rax     # 0x47412
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
testb $0x1, 0x2f(%rsp)
je 0x1ee4e
cmpl $0x2, 0x30(%rsp)
jne 0x1ee4e
leaq 0x285d6(%rip), %rax     # 0x4741a
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x3, 0x30(%rsp)
jne 0x1ee66
leaq 0x285c5(%rip), %rax     # 0x47421
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x4, 0x30(%rsp)
jne 0x1ee7e
leaq 0x28584(%rip), %rax     # 0x473f8
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x5, 0x30(%rsp)
jne 0x1ee96
leaq 0x28599(%rip), %rax     # 0x47425
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
jmp 0x1ee98
cmpl $0x0, 0x30(%rsp)
jne 0x1eeb0
leaq 0x28585(%rip), %rax     # 0x4742b
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x1, 0x30(%rsp)
jne 0x1eec5
leaq 0x28572(%rip), %rax     # 0x47430
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x2, 0x30(%rsp)
jne 0x1eeda
leaq 0x28565(%rip), %rax     # 0x47438
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x3, 0x30(%rsp)
jne 0x1eeef
leaq 0x28510(%rip), %rax     # 0x473f8
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x4, 0x30(%rsp)
jne 0x1ef04
leaq 0x28528(%rip), %rax     # 0x47425
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x5, 0x30(%rsp)
jne 0x1ef19
leaq 0x2852e(%rip), %rax     # 0x47440
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
cmpl $0x6, 0x30(%rsp)
jne 0x1ef2e
leaq 0x28523(%rip), %rax     # 0x4744a
movq %rax, 0x40(%rsp)
jmp 0x1ef3a
leaq 0x2851f(%rip), %rax     # 0x47454
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)