// File: /workspace/github_c_makefile_star2_O0/nkanaev[P]tipsy/src/tigr.c
// Function: convert
static void convert(int bypp, int w, int h, const unsigned char* src, TPixel* dest, const unsigned char* trns) {
    int x, y;
    for (y = 0; y < h; y++) {
        src++;  // skip filter byte
        for (x = 0; x < w; x++, src += bypp) {
            switch (bypp) {
                case 1: {
                    unsigned char c = src[0];
                    if (trns && c == *trns) {
                        *dest++ = tigrRGBA(c, c, c, 0);
                        break;
                    } else {
                        *dest++ = tigrRGB(c, c, c);
                        break;
                    }
                }
                case 2:
                    *dest++ = tigrRGBA(src[0], src[0], src[0], src[1]);
                    break;
                case 3: {
                    unsigned char r = src[0];
                    unsigned char g = src[1];
                    unsigned char b = src[2];
                    if (trns && trns[1] == r && trns[3] == g && trns[5] == b) {
                        *dest++ = tigrRGBA(r, g, b, 0);
                        break;
                    } else {
                        *dest++ = tigrRGB(r, g, b);
                        break;
                    }
                }
                case 4:
                    *dest++ = tigrRGBA(src[0], src[1], src[2], src[3]);
                    break;
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movl %edx, -0xc(%rbp)
movq %rcx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movq %r9, -0x28(%rbp)
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x9cac
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x9c9c
movl -0x4(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x58(%rbp)
subl $0x3, %eax
ja 0x9c7b
movq -0x58(%rbp), %rax
leaq 0x55df(%rip), %rcx      # 0xf060
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rax
movb (%rax), %al
movb %al, -0x31(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x9ae3
movzbl -0x31(%rbp), %eax
movq -0x28(%rbp), %rcx
movzbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x9ae3
movq -0x20(%rbp), %rax
movq %rax, -0x60(%rbp)
addq $0x4, %rax
movq %rax, -0x20(%rbp)
movb -0x31(%rbp), %dl
movb -0x31(%rbp), %al
xorl %ecx, %ecx
movzbl %dl, %edi
movzbl %al, %esi
movzbl -0x31(%rbp), %edx
callq 0x4f70
movl %eax, %ecx
movq -0x60(%rbp), %rax
movl %ecx, -0x35(%rbp)
movl -0x35(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x9c7b
movq -0x20(%rbp), %rax
movq %rax, -0x68(%rbp)
addq $0x4, %rax
movq %rax, -0x20(%rbp)
movb -0x31(%rbp), %cl
movb -0x31(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x31(%rbp), %edx
callq 0x9db0
movl %eax, %ecx
movq -0x68(%rbp), %rax
movl %ecx, -0x39(%rbp)
movl -0x39(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x9c7b
movq -0x20(%rbp), %rax
movq %rax, -0x70(%rbp)
addq $0x4, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movb (%rax), %sil
movq -0x18(%rbp), %rax
movb (%rax), %dl
movq -0x18(%rbp), %rax
movb (%rax), %cl
movq -0x18(%rbp), %rax
movzbl %sil, %edi
movzbl %dl, %esi
movzbl %cl, %edx
movzbl 0x1(%rax), %ecx
callq 0x4f70
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, -0x3d(%rbp)
movl -0x3d(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x9c7b
movq -0x18(%rbp), %rax
movb (%rax), %al
movb %al, -0x3e(%rbp)
movq -0x18(%rbp), %rax
movb 0x1(%rax), %al
movb %al, -0x3f(%rbp)
movq -0x18(%rbp), %rax
movb 0x2(%rax), %al
movb %al, -0x40(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x9bf6
movq -0x28(%rbp), %rax
movzbl 0x1(%rax), %eax
movzbl -0x3e(%rbp), %ecx
cmpl %ecx, %eax
jne 0x9bf6
movq -0x28(%rbp), %rax
movzbl 0x3(%rax), %eax
movzbl -0x3f(%rbp), %ecx
cmpl %ecx, %eax
jne 0x9bf6
movq -0x28(%rbp), %rax
movzbl 0x5(%rax), %eax
movzbl -0x40(%rbp), %ecx
cmpl %ecx, %eax
jne 0x9bf6
movq -0x20(%rbp), %rax
movq %rax, -0x78(%rbp)
addq $0x4, %rax
movq %rax, -0x20(%rbp)
movb -0x3e(%rbp), %dl
movb -0x3f(%rbp), %al
xorl %ecx, %ecx
movzbl %dl, %edi
movzbl %al, %esi
movzbl -0x40(%rbp), %edx
callq 0x4f70
movl %eax, %ecx
movq -0x78(%rbp), %rax
movl %ecx, -0x44(%rbp)
movl -0x44(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x9c7b
movq -0x20(%rbp), %rax
movq %rax, -0x80(%rbp)
addq $0x4, %rax
movq %rax, -0x20(%rbp)
movb -0x3e(%rbp), %cl
movb -0x3f(%rbp), %al
movzbl %cl, %edi
movzbl %al, %esi
movzbl -0x40(%rbp), %edx
callq 0x9db0
movl %eax, %ecx
movq -0x80(%rbp), %rax
movl %ecx, -0x48(%rbp)
movl -0x48(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x9c7b
movq -0x20(%rbp), %rax
movq %rax, -0x88(%rbp)
addq $0x4, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movb (%rax), %sil
movq -0x18(%rbp), %rax
movb 0x1(%rax), %dl
movq -0x18(%rbp), %rax
movb 0x2(%rax), %cl
movq -0x18(%rbp), %rax
movzbl %sil, %edi
movzbl %dl, %esi
movzbl %cl, %edx
movzbl 0x3(%rax), %ecx
callq 0x4f70
movl %eax, %ecx
movq -0x88(%rbp), %rax
movl %ecx, -0x4c(%rbp)
movl -0x4c(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x9c7d
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
movl -0x4(%rbp), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
jmp 0x9a56
jmp 0x9c9e
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x9a37
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)