// File: cloudinary[P]fuif/transform/transform.cpp
// Function: Transform::apply(Image&, bool)
bool Transform::apply(Image &input, bool inverse) {
    switch(ID) {
        case TRANSFORM_YCbCr: return YCbCr(input, inverse);
        case TRANSFORM_ChromaSubsample: return subsample(input, inverse, parameters);
        case TRANSFORM_DCT: return DCT(input, inverse, parameters);
        case TRANSFORM_QUANTIZE: return quantize(input, inverse, parameters);
        case TRANSFORM_YCoCg: return YCoCg(input, inverse);
//        case TRANSFORM_XYB: return XYB(input, inverse);
        case TRANSFORM_SQUEEZE: return squeeze(input, inverse, parameters);
        case TRANSFORM_PALETTE: return palette(input, inverse, parameters);
        case TRANSFORM_2DMATCH: return match(input, inverse, parameters);
        case TRANSFORM_PERMUTE: return permute(input, inverse, parameters);
        case TRANSFORM_APPROXIMATE: return approximate(input, inverse, parameters);
        default: e_printf("Unknown transformation (ID=%i)\n",ID); return false;
    }
}

// Assembly:
subq $0x38, %rsp
movb %dl, %al
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
andb $0x1, %al
movb %al, 0x1f(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
movl (%rax), %eax
movq %rax, 0x10(%rsp)
subq $0xa, %rax
ja 0x11f31
movq 0x10(%rsp), %rax
leaq 0x34443(%rip), %rcx     # 0x46200
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x6e30
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
addq $0x8, %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0x7e40
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
addq $0x8, %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0x98b0
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
addq $0x8, %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0x9c20
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
andb $0x1, %al
movzbl %al, %esi
callq 0xa370
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
addq $0x8, %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0xdab0
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
addq $0x8, %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0xb6b0
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
addq $0x8, %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0x10720
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
addq $0x8, %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0x11390
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rdx
movq 0x20(%rsp), %rdi
movb 0x1f(%rsp), %al
addq $0x8, %rdx
andb $0x1, %al
movzbl %al, %esi
callq 0x11d20
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0x11f4b
movq 0x8(%rsp), %rax
movl (%rax), %esi
leaq 0x352bf(%rip), %rdi     # 0x471fe
movb $0x0, %al
callq 0x3a670
movb $0x0, 0x37(%rsp)
movb 0x37(%rsp), %al
andb $0x1, %al
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)