// File: manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImg<unsigned char>::get_projections2d(unsigned int, unsigned int, unsigned int) const
CImg<T> get_projections2d(const unsigned int x0, const unsigned int y0, const unsigned int z0) const {
      if (is_empty() || _depth<2) return +*this;
      const unsigned int
        _x0 = (x0>=_width)?_width - 1:x0,
        _y0 = (y0>=_height)?_height - 1:y0,
        _z0 = (z0>=_depth)?_depth - 1:z0;
      const CImg<T>
        img_xy = get_crop(0,0,_z0,0,_width-1,_height-1,_z0,_spectrum-1),
        img_zy = get_crop(_x0,0,0,0,_x0,_height-1,_depth-1,_spectrum-1).permute_axes("xzyc").
        resize(_depth,_height,1,-100,-1),
        img_xz = get_crop(0,_y0,0,0,_width-1,_y0,_depth-1,_spectrum-1).resize(_width,_depth,1,-100,-1);
      return CImg<T>(_width + _depth,_height + _depth,1,_spectrum,cimg::min(img_xy.min(),img_zy.min(),img_xz.min())).
        draw_image(0,0,img_xy).draw_image(img_xy._width,0,img_zy).
        draw_image(0,img_xy._height,img_xz);
    }

// Assembly:
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rdi, 0x98(%rsp)
movq %rdi, %rax
movq %rax, 0xa0(%rsp)
movq %rdi, 0x1a0(%rsp)
movq %rsi, 0x198(%rsp)
movl %edx, 0x194(%rsp)
movl %ecx, 0x190(%rsp)
movl %r8d, 0x18c(%rsp)
movq 0x198(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x1f750
testb $0x1, %al
jne 0x32dc7
movq 0xa8(%rsp), %rax
cmpl $0x2, 0x8(%rax)
jae 0x32de1
movq 0xa8(%rsp), %rsi
movq 0x98(%rsp), %rdi
callq 0x21990
jmp 0x332d8
movq 0xa8(%rsp), %rcx
movl 0x194(%rsp), %eax
cmpl (%rcx), %eax
jb 0x32e0a
movq 0xa8(%rsp), %rax
movl (%rax), %eax
subl $0x1, %eax
movl %eax, 0x94(%rsp)
jmp 0x32e18
movl 0x194(%rsp), %eax
movl %eax, 0x94(%rsp)
movq 0xa8(%rsp), %rcx
movl 0x94(%rsp), %eax
movl %eax, 0x188(%rsp)
movl 0x190(%rsp), %eax
cmpl 0x4(%rcx), %eax
jb 0x32e51
movq 0xa8(%rsp), %rax
movl 0x4(%rax), %eax
subl $0x1, %eax
movl %eax, 0x90(%rsp)
jmp 0x32e5f
movl 0x190(%rsp), %eax
movl %eax, 0x90(%rsp)
movq 0xa8(%rsp), %rcx
movl 0x90(%rsp), %eax
movl %eax, 0x184(%rsp)
movl 0x18c(%rsp), %eax
cmpl 0x8(%rcx), %eax
jb 0x32e98
movq 0xa8(%rsp), %rax
movl 0x8(%rax), %eax
subl $0x1, %eax
movl %eax, 0x8c(%rsp)
jmp 0x32ea6
movl 0x18c(%rsp), %eax
movl %eax, 0x8c(%rsp)
movq 0xa8(%rsp), %rsi
movl 0x8c(%rsp), %eax
movl %eax, 0x180(%rsp)
movl 0x180(%rsp), %r8d
movl (%rsi), %ecx
movl 0x4(%rsi), %edx
decl %ecx
decl %edx
movl 0xc(%rsi), %edi
decl %edi
movq %rsp, %rax
movl %edi, 0x18(%rax)
movl %r8d, 0x10(%rax)
movl %edx, 0x8(%rax)
movl %ecx, (%rax)
movl $0x0, 0x20(%rax)
leaq 0x160(%rsp), %rdi
xorl %r9d, %r9d
movl %r9d, 0x88(%rsp)
movl %r9d, %edx
movl %r9d, %ecx
callq 0x1f850
movq 0xa8(%rsp), %rsi
movl 0x88(%rsp), %r9d
movl 0x188(%rsp), %edx
movl 0x4(%rsi), %ecx
movl 0x8(%rsi), %edi
decl %ecx
decl %edi
movl 0xc(%rsi), %r8d
decl %r8d
movq %rsp, %rax
movl %r8d, 0x18(%rax)
movl %edi, 0x10(%rax)
movl %ecx, 0x8(%rax)
movl %edx, (%rax)
movl $0x0, 0x20(%rax)
leaq 0x120(%rsp), %rdi
movl %r9d, %ecx
movl %r9d, %r8d
callq 0x1f850
jmp 0x32f59
leaq 0xb55ce(%rip), %rsi     # 0xe852e
leaq 0x120(%rsp), %rdi
callq 0x374b0
movq %rax, 0x80(%rsp)
jmp 0x32f77
movq 0x80(%rsp), %rdi
movq 0xa8(%rsp), %rax
movl 0x4(%rax), %edx
movl 0x8(%rax), %esi
movq %rsp, %rax
movl $0x0, (%rax)
movl $0x1, %ecx
movl $0xffffff9c, %r8d       # imm = 0xFFFFFF9C
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
xorps %xmm3, %xmm3
movaps %xmm3, %xmm0
movaps %xmm3, %xmm1
movaps %xmm3, %xmm2
callq 0x15920
movq %rax, 0x78(%rsp)
jmp 0x32fbf
movq 0x78(%rsp), %rsi
leaq 0x140(%rsp), %rdi
callq 0x17070
jmp 0x32fd3
leaq 0x120(%rsp), %rdi
callq 0x15650
movq 0xa8(%rsp), %rsi
movl 0x184(%rsp), %ecx
movl (%rsi), %edx
movl 0x8(%rsi), %edi
decl %edx
decl %edi
movl 0xc(%rsi), %r8d
decl %r8d
movq %rsp, %rax
movl %r8d, 0x18(%rax)
movl %edi, 0x10(%rax)
movl %ecx, 0x8(%rax)
movl %edx, (%rax)
movl $0x0, 0x20(%rax)
leaq 0xd0(%rsp), %rdi
xorl %r9d, %r9d
movl %r9d, %edx
movl %r9d, %r8d
callq 0x1f850
jmp 0x3302d
movq 0xa8(%rsp), %rax
movl (%rax), %esi
movl 0x8(%rax), %edx
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0xd0(%rsp), %rdi
movl $0x1, %ecx
movl $0xffffff9c, %r8d       # imm = 0xFFFFFF9C
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
xorps %xmm3, %xmm3
movaps %xmm3, %xmm0
movaps %xmm3, %xmm1
movaps %xmm3, %xmm2
callq 0x15920
movq %rax, 0x70(%rsp)
jmp 0x33074
movq 0x70(%rsp), %rsi
leaq 0xf0(%rsp), %rdi
callq 0x17070
jmp 0x33088
leaq 0xd0(%rsp), %rdi
callq 0x15650
movq 0xa8(%rsp), %rax
movl 0x8(%rax), %edx
movl (%rax), %esi
movl 0x4(%rax), %ecx
addl %edx, %esi
movl %esi, 0x5c(%rsp)
addl %edx, %ecx
movl %ecx, 0x60(%rsp)
movl 0xc(%rax), %eax
movl %eax, 0x64(%rsp)
leaq 0x160(%rsp), %rdi
callq 0x37570
movq %rax, 0x68(%rsp)
jmp 0x330cc
leaq 0x140(%rsp), %rdi
callq 0x37570
movq %rax, 0x50(%rsp)
jmp 0x330e0
leaq 0xf0(%rsp), %rdi
callq 0x37570
movq %rax, 0x48(%rsp)
jmp 0x330f4
movq 0x48(%rsp), %rdx
movq 0x50(%rsp), %rsi
movq 0x68(%rsp), %rdi
callq 0x37530
movb %al, 0x47(%rsp)
jmp 0x3310e
movl 0x64(%rsp), %r8d
movl 0x60(%rsp), %edx
movl 0x5c(%rsp), %esi
movb 0x47(%rsp), %al
movzbl %al, %r9d
leaq 0xb0(%rsp), %rdi
movl $0x1, %ecx
callq 0x22e50
jmp 0x33137
leaq 0xb0(%rsp), %rdi
xorl %edx, %edx
leaq 0x160(%rsp), %rcx
movss 0x94fcf(%rip), %xmm0    # 0xc8120
movl %edx, %esi
callq 0x173b0
movq %rax, 0x38(%rsp)
jmp 0x3315f
movq 0x38(%rsp), %rdi
movl 0x160(%rsp), %esi
xorl %edx, %edx
leaq 0x140(%rsp), %rcx
movss 0x94fa3(%rip), %xmm0    # 0xc8120
callq 0x173b0
movq %rax, 0x30(%rsp)
jmp 0x33189
movq 0x30(%rsp), %rdi
movl 0x164(%rsp), %edx
xorl %esi, %esi
leaq 0xf0(%rsp), %rcx
movss 0x94f79(%rip), %xmm0    # 0xc8120
callq 0x173b0
movq %rax, 0x28(%rsp)
jmp 0x331b3
movq 0x28(%rsp), %rsi
movq 0x98(%rsp), %rdi
callq 0x17070
jmp 0x331c7
leaq 0xb0(%rsp), %rdi
callq 0x15650
leaq 0xf0(%rsp), %rdi
callq 0x15650
leaq 0x140(%rsp), %rdi
callq 0x15650
leaq 0x160(%rsp), %rdi
callq 0x15650
jmp 0x332d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0x332c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x15650
jmp 0x332c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0x332bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x15650
jmp 0x332bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0x332af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0x15650
leaq 0xf0(%rsp), %rdi
callq 0x15650
leaq 0x140(%rsp), %rdi
callq 0x15650
leaq 0x160(%rsp), %rdi
callq 0x15650
jmp 0x332e8
movq 0xa0(%rsp), %rax
addq $0x1a8, %rsp            # imm = 0x1A8
retq
movq 0x118(%rsp), %rdi
callq 0x5970
nopw %cs:(%rax,%rax)
nop