// File: /workspace/github_cpp_makefile_star2_O1/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %ecx, %r15d
movl %edx, %r12d
movq %rsi, %r14
movq %rdi, %rbx
cmpq $0x0, 0x18(%rsi)
sete %cl
movl (%rsi), %edx
movl 0x4(%rsi), %eax
testl %edx, %edx
sete %sil
orb %cl, %sil
testl %eax, %eax
sete %dil
movl 0x8(%r14), %ecx
testl %ecx, %ecx
sete %r9b
orb %dil, %r9b
orb %sil, %r9b
jne 0x1e97c
cmpl $0x0, 0xc(%r14)
sete %sil
cmpl $0x2, %ecx
setb %dil
orb %sil, %dil
cmpb $0x1, %dil
jne 0x1e99e
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x14050
movq %rbx, %rax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leal -0x1(%rdx), %r10d
cmpl %r12d, %edx
cmovbel %r10d, %r12d
leal -0x1(%rax), %r11d
cmpl %r15d, %eax
cmovbel %r11d, %r15d
leal -0x1(%rcx), %eax
cmpl %r8d, %ecx
cmoval %r8d, %eax
movl 0xc(%r14), %ebp
decl %ebp
subq $0x8, %rsp
xorl %r13d, %r13d
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
movl %eax, %r8d
xorl %r9d, %r9d
pushq %r13
pushq %rbp
pushq %rax
pushq %r11
pushq %r10
callq 0x1345c
addq $0x30, %rsp
movl 0x4(%r14), %eax
movl 0x8(%r14), %r10d
decl %eax
decl %r10d
movl 0xc(%r14), %r11d
decl %r11d
subq $0x8, %rsp
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
movl %r12d, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r13
pushq %r11
pushq %r10
pushq %rax
pushq %r12
callq 0x1345c
addq $0x30, %rsp
leaq 0x7472d(%rip), %rsi     # 0x9315f
leaq 0x8(%rsp), %rdi
callq 0x21210
movl 0x4(%r14), %edx
movl 0x8(%r14), %esi
subq $0x8, %rsp
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
xorps %xmm3, %xmm3
movq %rax, %rdi
movl $0x1, %ecx
movl $0xffffff9c, %r8d       # imm = 0xFFFFFF9C
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
pushq $0x0
callq 0xe344
addq $0x10, %rsp
leaq 0x68(%rsp), %rdi
movq %rax, %rsi
callq 0xecec
cmpb $0x0, 0x18(%rsp)
jne 0x1ea96
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1ea96
callq 0x4680
movl (%r14), %eax
movl 0x8(%r14), %r10d
decl %eax
decl %r10d
movl 0xc(%r14), %r11d
decl %r11d
subq $0x8, %rsp
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
movl %r15d, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq $0x0
pushq %r11
pushq %r10
pushq %r15
pushq %rax
callq 0x1345c
addq $0x30, %rsp
movl (%r14), %esi
movl 0x8(%r14), %edx
subq $0x8, %rsp
leaq 0x30(%rsp), %rdi
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
xorps %xmm3, %xmm3
movl $0x1, %ecx
movl $0xffffff9c, %r8d       # imm = 0xFFFFFF9C
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
pushq $0x0
callq 0xe344
addq $0x10, %rsp
leaq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0xecec
cmpb $0x0, 0x38(%rsp)
jne 0x1eb2d
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1eb2d
callq 0x4680
movl 0x8(%r14), %r15d
movl 0xc(%r14), %ebp
movl (%r14), %r12d
addl %r15d, %r12d
addl 0x4(%r14), %r15d
leaq 0x48(%rsp), %rdi
callq 0x21286
movq %rax, %r14
leaq 0x68(%rsp), %rdi
callq 0x21286
movq %rax, %r13
leaq 0x8(%rsp), %rdi
callq 0x21286
movzbl (%r14), %ecx
movzbl (%r13), %edx
cmpb %dl, %cl
cmovbl %ecx, %edx
movzbl (%rax), %eax
cmpb %al, %dl
cmovael %eax, %edx
movzbl %dl, %r9d
leaq 0x28(%rsp), %rdi
movl %r12d, %esi
movl %r15d, %edx
movl $0x1, %ecx
movl %ebp, %r8d
callq 0x14a34
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %r9
movss 0x52709(%rip), %xmm0    # 0x712b0
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x13afe
movl 0x48(%rsp), %esi
leaq 0x68(%rsp), %r9
movss 0x526ea(%rip), %xmm0    # 0x712b0
movq %rax, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x13afe
movl 0x4c(%rsp), %edx
leaq 0x8(%rsp), %r9
movss 0x526ca(%rip), %xmm0    # 0x712b0
movq %rax, %rdi
xorl %esi, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x13afe
movq %rbx, %rdi
movq %rax, %rsi
callq 0xecec
cmpb $0x0, 0x38(%rsp)
jne 0x1ec16
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1ec16
callq 0x4680
cmpb $0x0, 0x18(%rsp)
jne 0x1ec2c
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1ec2c
callq 0x4680
cmpb $0x0, 0x78(%rsp)
jne 0x1ec45
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x1ec45
callq 0x4680
cmpb $0x0, 0x58(%rsp)
jne 0x1e989
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x1e989
callq 0x4680
jmp 0x1e989
movq %rax, %rbx
jmp 0x1ecd2
movq %rax, %rbx
jmp 0x1eceb
movq %rax, %rbx
cmpb $0x0, 0x38(%rsp)
jne 0x1ecd2
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1ecd2
jmp 0x1eccd
movq %rax, %rbx
cmpb $0x0, 0x18(%rsp)
jne 0x1eceb
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1eceb
jmp 0x1ece6
movq %rax, %rbx
cmpb $0x0, 0x38(%rsp)
jne 0x1ecbc
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1ecbc
callq 0x4680
jmp 0x1ecbc
movq %rax, %rbx
cmpb $0x0, 0x18(%rsp)
jne 0x1ecd2
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x1ecd2
callq 0x4680
cmpb $0x0, 0x78(%rsp)
jne 0x1eceb
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x1eceb
callq 0x4680
cmpb $0x0, 0x58(%rsp)
jne 0x1ed01
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x1ed01
callq 0x4680
movq %rbx, %rdi
callq 0x4950
nop