// File: /workspace/github_cpp_makefile_star2_O2/CodyNault[P]Image-Filter-Dataflow/src/main.cpp
// Function: main
int main(int argc, char *argv[])
{
    PNMreader reader(argv[1]);

    Crop crop;
    crop.SetRegion(300, 1400, 50, 400);
    crop.SetInput(reader.GetOutput());

    Transpose t;
    t.SetInput(crop.GetOutput());

    Invert i;
    i.SetInput(t.GetOutput());

    Color color(50, 1101, 0, 0, 128);
    
    LRConcat lr;
    lr.SetInput(color.GetOutput());
    lr.SetInput2(i.GetOutput());

    Color white(401, 1101, 255, 255, 255);

    Checkerboard cb;
    cb.SetInput(lr.GetOutput());
    cb.SetInput2(white.GetOutput());

    cb.GetOutput()->Update();

    PNMwriter writer;
    writer.SetInput(cb.GetOutput());
    writer.Write(argv[2]);

    CheckSum cs;
    cs.SetInput(cb.GetOutput());
    cs.OutputCheckSum();
    Logger::Finalize();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x230, %rsp            # imm = 0x230
movq %rsi, %rbx
movq 0x8(%rsi), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x40f0
leaq -0x1c0(%rbp), %rdi
callq 0x367c
movaps 0x2c30(%rip), %xmm0     # 0x6010
movups %xmm0, -0x180(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x3bb8
leaq -0x198(%rbp), %rdi
movq %rax, %rsi
callq 0x3994
leaq -0x170(%rbp), %rdi
callq 0x36b0
leaq -0x1c0(%rbp), %rdi
callq 0x3bb8
leaq -0x148(%rbp), %rdi
movq %rax, %rsi
callq 0x3994
leaq -0x130(%rbp), %rdi
callq 0x36dc
leaq -0x170(%rbp), %rdi
callq 0x3bb8
leaq -0x108(%rbp), %rdi
movq %rax, %rsi
callq 0x3994
leaq -0x240(%rbp), %rdi
pushq $0x32
popq %rsi
movl $0x44d, %edx            # imm = 0x44D
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x80, %r9d
callq 0x55a6
leaq -0xf0(%rbp), %rdi
callq 0x3708
leaq -0x240(%rbp), %rdi
callq 0x3bb8
leaq -0xc8(%rbp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x3994
leaq -0x130(%rbp), %rdi
callq 0x3bb8
movq %r14, %rdi
movq %rax, %rsi
callq 0x399e
leaq -0x200(%rbp), %rdi
movl $0x191, %esi            # imm = 0x191
movl $0x44d, %edx            # imm = 0x44D
movl $0xff, %ecx
movl $0xff, %r8d
movl $0xff, %r9d
callq 0x55a6
leaq -0x80(%rbp), %rdi
callq 0x3734
leaq -0xf0(%rbp), %rdi
callq 0x3bb8
leaq -0x58(%rbp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x3994
leaq -0x200(%rbp), %rdi
callq 0x3bb8
movq %r14, %rdi
movq %rax, %rsi
callq 0x399e
leaq -0x80(%rbp), %rdi
callq 0x3bb8
movq %rax, %rdi
callq 0x3966
leaq -0x40(%rbp), %rdi
callq 0x3760
leaq -0x80(%rbp), %rdi
callq 0x3bb8
leaq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0x3994
movq 0x10(%rbx), %rsi
leaq -0x40(%rbp), %rdi
callq 0x43bc
leaq -0x28(%rbp), %rdi
callq 0x3780
leaq -0x80(%rbp), %rdi
callq 0x3bb8
leaq -0x28(%rbp), %rdi
movq %rax, %rsi
callq 0x3994
leaq -0x28(%rbp), %rdi
callq 0x57bc
callq 0x5c5e
leaq -0x80(%rbp), %rdi
callq 0x37a0
leaq -0x200(%rbp), %rdi
callq 0x37a0
leaq -0xf0(%rbp), %rdi
callq 0x37a0
leaq -0x240(%rbp), %rdi
callq 0x37a0
leaq -0x130(%rbp), %rdi
callq 0x37a0
leaq -0x170(%rbp), %rdi
callq 0x37a0
leaq -0x1c0(%rbp), %rdi
callq 0x37a0
leaq -0xb0(%rbp), %rdi
callq 0x4144
xorl %eax, %eax
addq $0x230, %rsp            # imm = 0x230
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
jmp 0x3620
jmp 0x360d
movq %rax, %rbx
jmp 0x3638
jmp 0x35fc
jmp 0x3601
jmp 0x3606
movq %rax, %rbx
jmp 0x3668
movq %rax, %rbx
jmp 0x3644
movq %rax, %rbx
jmp 0x3650
movq %rax, %rbx
jmp 0x365c
jmp 0x3614
movq %rax, %rbx
jmp 0x362c
jmp 0x3614
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x37a0
leaq -0x200(%rbp), %rdi
callq 0x37a0
leaq -0xf0(%rbp), %rdi
callq 0x37a0
leaq -0x240(%rbp), %rdi
callq 0x37a0
leaq -0x130(%rbp), %rdi
callq 0x37a0
leaq -0x170(%rbp), %rdi
callq 0x37a0
leaq -0x1c0(%rbp), %rdi
callq 0x37a0
leaq -0xb0(%rbp), %rdi
callq 0x4144
movq %rbx, %rdi
callq 0x31d0