// File: manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImgList<char>::get_append(char, float) const
CImg<T> get_append(const char axis, const float align=0) const {
      if (is_empty()) return CImg<T>();
      if (_width==1) return +((*this)[0]);
      unsigned int dx = 0, dy = 0, dz = 0, dc = 0, pos = 0;
      CImg<T> res;
      switch (cimg::uncase(axis)) {
      case 'x' : { // Along the X-axis.
        cimglist_for(*this,l) {
          const CImg<T>& img = (*this)[l];
          if (img) {
            dx+=img._width;
            dy = cimg::max(dy,img._height);
            dz = cimg::max(dz,img._depth);
            dc = cimg::max(dc,img._spectrum);
          }
        }
        res.assign(dx,dy,dz,dc,0);
        if (res) cimglist_for(*this,l) {
            const CImg<T>& img = (*this)[l];
            if (img) res.draw_image(pos,
                                    (int)(align*(dy-img._height)),
                                    (int)(align*(dz-img._depth)),
                                    (int)(align*(dc-img._spectrum)),
                                    img);
            pos+=img._width;
          }
      } break;
      case 'y' : { // Along the Y-axis.
        cimglist_for(*this,l) {
          const CImg<T>& img = (*this)[l];
          if (img) {
            dx = cimg::max(dx,img._width);
            dy+=img._height;
            dz = cimg::max(dz,img._depth);
            dc = cimg::max(dc,img._spectrum);
          }
        }
        res.assign(dx,dy,dz,dc,0);
        if (res) cimglist_for(*this,l) {
            const CImg<T>& img = (*this)[l];
            if (img) res.draw_image((int)(align*(dx-img._width)),
                                    pos,
                                    (int)(align*(dz-img._depth)),
                                    (int)(align*(dc-img._spectrum)),
                                    img);
            pos+=img._height;
          }
      } break;
      case 'z' : { // Along the Z-axis.
        cimglist_for(*this,l) {
          const CImg<T>& img = (*this)[l];
          if (img) {
            dx = cimg::max(dx,img._width);
            dy = cimg::max(dy,img._height);
            dz+=img._depth;
            dc = cimg::max(dc,img._spectrum);
          }
        }
        res.assign(dx,dy,dz,dc,0);
        if (res) cimglist_for(*this,l) {
            const CImg<T>& img = (*this)[l];
            if (img) res.draw_image((int)(align*(dx-img._width)),
                                    (int)(align*(dy-img._height)),
                                    pos,
                                    (int)(align*(dc-img._spectrum)),
                                    img);
            pos+=img._depth;
          }
      } break;
      default : { // Along the C-axis.
        cimglist_for(*this,l) {
          const CImg<T>& img = (*this)[l];
          if (img) {
            dx = cimg::max(dx,img._width);
            dy = cimg::max(dy,img._height);
            dz = cimg::max(dz,img._depth);
            dc+=img._spectrum;
          }
        }
        res.assign(dx,dy,dz,dc,0);
        if (res) cimglist_for(*this,l) {
            const CImg<T>& img = (*this)[l];
            if (img) res.draw_image((int)(align*(dx-img._width)),
                                    (int)(align*(dy-img._height)),
                                    (int)(align*(dz-img._depth)),
                                    pos,
                                    img);
            pos+=img._spectrum;
          }
      }
      }
      return res;
    }

// Assembly:
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdi, 0xe8(%rsp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, 0xf0(%rsp)
movq %rdi, 0x1b0(%rsp)
movq %rsi, 0x1a8(%rsp)
movb %al, 0x1a7(%rsp)
movss %xmm0, 0x1a0(%rsp)
movq 0x1a8(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x1e020
testb $0x1, %al
jne 0x1d3f7
jmp 0x1d409
movq 0xe8(%rsp), %rdi
callq 0x19e80
jmp 0x1e003
movq 0xf8(%rsp), %rax
cmpl $0x1, (%rax)
jne 0x1d438
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq 0xe8(%rsp), %rdi
movq %rax, %rsi
callq 0x1e070
jmp 0x1e003
movq 0xe8(%rsp), %rdi
movl $0x0, 0x19c(%rsp)
movl $0x0, 0x198(%rsp)
movl $0x0, 0x194(%rsp)
movl $0x0, 0x190(%rsp)
movl $0x0, 0x18c(%rsp)
movb $0x0, 0x18b(%rsp)
callq 0x19e80
movsbl 0x1a7(%rsp), %edi
callq 0x1e0a0
movb %al, 0xe7(%rsp)
jmp 0x1d49a
movb 0xe7(%rsp), %al
movsbl %al, %eax
movl %eax, 0xe0(%rsp)
subl $0x78, %eax
je 0x1d4ff
jmp 0x1d4b2
movl 0xe0(%rsp), %eax
subl $0x79, %eax
je 0x1d7d7
jmp 0x1d4c4
movl 0xe0(%rsp), %eax
subl $0x7a, %eax
je 0x1daa0
jmp 0x1dd45
movq 0xe8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
callq 0x1a320
jmp 0x1e013
movl $0x0, 0x178(%rsp)
movq 0xf8(%rsp), %rcx
movl 0x178(%rsp), %eax
cmpl (%rcx), %eax
jge 0x1d642
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq %rax, 0xd8(%rsp)
jmp 0x1d538
movq 0xd8(%rsp), %rax
movslq 0x178(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x170(%rsp)
movq 0x170(%rsp), %rdi
callq 0x1e0e0
movq %rax, 0xd0(%rsp)
jmp 0x1d56e
movq 0xd0(%rsp), %rax
cmpq $0x0, %rax
je 0x1d62a
movq 0x170(%rsp), %rax
movl (%rax), %ecx
movl 0x19c(%rsp), %eax
addl %ecx, %eax
movl %eax, 0x19c(%rsp)
movq 0x170(%rsp), %rsi
addq $0x4, %rsi
leaq 0x198(%rsp), %rdi
callq 0x15db0
movl %eax, 0xcc(%rsp)
jmp 0x1d5bc
movl 0xcc(%rsp), %eax
movl %eax, 0x198(%rsp)
movq 0x170(%rsp), %rsi
addq $0x8, %rsi
leaq 0x194(%rsp), %rdi
callq 0x15db0
movl %eax, 0xc8(%rsp)
jmp 0x1d5ec
movl 0xc8(%rsp), %eax
movl %eax, 0x194(%rsp)
movq 0x170(%rsp), %rsi
addq $0xc, %rsi
leaq 0x190(%rsp), %rdi
callq 0x15db0
movl %eax, 0xc4(%rsp)
jmp 0x1d61c
movl 0xc4(%rsp), %eax
movl %eax, 0x190(%rsp)
jmp 0x1d62c
movl 0x178(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x178(%rsp)
jmp 0x1d50a
movq 0xe8(%rsp), %rdi
movl 0x19c(%rsp), %esi
movl 0x198(%rsp), %edx
movl 0x194(%rsp), %ecx
movl 0x190(%rsp), %r8d
xorl %r9d, %r9d
callq 0x1e0f0
jmp 0x1d671
movq 0xe8(%rsp), %rdi
callq 0x1e140
movq %rax, 0xb8(%rsp)
jmp 0x1d688
movq 0xb8(%rsp), %rax
cmpq $0x0, %rax
je 0x1d7d2
movl $0x0, 0x16c(%rsp)
movq 0xf8(%rsp), %rcx
movl 0x16c(%rsp), %eax
cmpl (%rcx), %eax
jge 0x1d7d0
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq %rax, 0xb0(%rsp)
jmp 0x1d6d3
movq 0xb0(%rsp), %rax
movslq 0x16c(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x160(%rsp)
movq 0x160(%rsp), %rdi
callq 0x1e0e0
movq %rax, 0xa8(%rsp)
jmp 0x1d709
movq 0xa8(%rsp), %rax
cmpq $0x0, %rax
je 0x1d7a2
movq 0xe8(%rsp), %rdi
movl 0x18c(%rsp), %esi
movss 0x1a0(%rsp), %xmm0
movl 0x198(%rsp), %eax
movq 0x160(%rsp), %r9
movl 0x4(%r9), %edx
movl 0x8(%r9), %ecx
subl %edx, %eax
cvtsi2ss %rax, %xmm2
movaps %xmm0, %xmm1
mulss %xmm2, %xmm1
cvttss2si %xmm1, %edx
movl 0x194(%rsp), %eax
subl %ecx, %eax
cvtsi2ss %rax, %xmm2
movaps %xmm0, %xmm1
mulss %xmm2, %xmm1
cvttss2si %xmm1, %ecx
movl 0x190(%rsp), %eax
movl 0xc(%r9), %r8d
subl %r8d, %eax
cvtsi2ss %rax, %xmm1
mulss %xmm1, %xmm0
cvttss2si %xmm0, %r8d
movss 0xaa987(%rip), %xmm0    # 0xc8120
callq 0x1e150
jmp 0x1d7a0
jmp 0x1d7a2
movq 0x160(%rsp), %rax
movl (%rax), %eax
addl 0x18c(%rsp), %eax
movl %eax, 0x18c(%rsp)
movl 0x16c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x16c(%rsp)
jmp 0x1d6a5
jmp 0x1d7d2
jmp 0x1dfe2
movl $0x0, 0x15c(%rsp)
movq 0xf8(%rsp), %rcx
movl 0x15c(%rsp), %eax
cmpl (%rcx), %eax
jge 0x1d917
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq %rax, 0xa0(%rsp)
jmp 0x1d810
movq 0xa0(%rsp), %rax
movslq 0x15c(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x150(%rsp)
movq 0x150(%rsp), %rdi
callq 0x1e0e0
movq %rax, 0x98(%rsp)
jmp 0x1d846
movq 0x98(%rsp), %rax
cmpq $0x0, %rax
je 0x1d8ff
movq 0x150(%rsp), %rsi
leaq 0x19c(%rsp), %rdi
callq 0x15db0
movl %eax, 0x94(%rsp)
jmp 0x1d876
movl 0x94(%rsp), %eax
movl %eax, 0x19c(%rsp)
movq 0x150(%rsp), %rax
movl 0x4(%rax), %ecx
movl 0x198(%rsp), %eax
addl %ecx, %eax
movl %eax, 0x198(%rsp)
movq 0x150(%rsp), %rsi
addq $0x8, %rsi
leaq 0x194(%rsp), %rdi
callq 0x15db0
movl %eax, 0x90(%rsp)
jmp 0x1d8c1
movl 0x90(%rsp), %eax
movl %eax, 0x194(%rsp)
movq 0x150(%rsp), %rsi
addq $0xc, %rsi
leaq 0x190(%rsp), %rdi
callq 0x15db0
movl %eax, 0x8c(%rsp)
jmp 0x1d8f1
movl 0x8c(%rsp), %eax
movl %eax, 0x190(%rsp)
jmp 0x1d901
movl 0x15c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x15c(%rsp)
jmp 0x1d7e2
movq 0xe8(%rsp), %rdi
movl 0x19c(%rsp), %esi
movl 0x198(%rsp), %edx
movl 0x194(%rsp), %ecx
movl 0x190(%rsp), %r8d
xorl %r9d, %r9d
callq 0x1e0f0
jmp 0x1d946
movq 0xe8(%rsp), %rdi
callq 0x1e140
movq %rax, 0x80(%rsp)
jmp 0x1d95d
movq 0x80(%rsp), %rax
cmpq $0x0, %rax
je 0x1da9b
movl $0x0, 0x14c(%rsp)
movq 0xf8(%rsp), %rcx
movl 0x14c(%rsp), %eax
cmpl (%rcx), %eax
jge 0x1da99
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq %rax, 0x78(%rsp)
jmp 0x1d9a5
movq 0x78(%rsp), %rax
movslq 0x14c(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x140(%rsp)
movq 0x140(%rsp), %rdi
callq 0x1e0e0
movq %rax, 0x70(%rsp)
jmp 0x1d9d5
movq 0x70(%rsp), %rax
cmpq $0x0, %rax
je 0x1da6a
movq 0xe8(%rsp), %rdi
movss 0x1a0(%rsp), %xmm0
movl 0x19c(%rsp), %eax
movq 0x140(%rsp), %r9
movl (%r9), %edx
movl 0x8(%r9), %ecx
subl %edx, %eax
cvtsi2ss %rax, %xmm2
movaps %xmm0, %xmm1
mulss %xmm2, %xmm1
cvttss2si %xmm1, %esi
movl 0x18c(%rsp), %edx
movl 0x194(%rsp), %eax
subl %ecx, %eax
cvtsi2ss %rax, %xmm2
movaps %xmm0, %xmm1
mulss %xmm2, %xmm1
cvttss2si %xmm1, %ecx
movl 0x190(%rsp), %eax
movl 0xc(%r9), %r8d
subl %r8d, %eax
cvtsi2ss %rax, %xmm1
mulss %xmm1, %xmm0
cvttss2si %xmm0, %r8d
movss 0xaa6bf(%rip), %xmm0    # 0xc8120
callq 0x1e150
jmp 0x1da68
jmp 0x1da6a
movq 0x140(%rsp), %rax
movl 0x4(%rax), %eax
addl 0x18c(%rsp), %eax
movl %eax, 0x18c(%rsp)
movl 0x14c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14c(%rsp)
jmp 0x1d97a
jmp 0x1da9b
jmp 0x1dfe2
movl $0x0, 0x13c(%rsp)
movq 0xf8(%rsp), %rcx
movl 0x13c(%rsp), %eax
cmpl (%rcx), %eax
jge 0x1dbc2
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq %rax, 0x68(%rsp)
jmp 0x1dad6
movq 0x68(%rsp), %rax
movslq 0x13c(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x130(%rsp)
movq 0x130(%rsp), %rdi
callq 0x1e0e0
movq %rax, 0x60(%rsp)
jmp 0x1db06
movq 0x60(%rsp), %rax
cmpq $0x0, %rax
je 0x1dbaa
movq 0x130(%rsp), %rsi
leaq 0x19c(%rsp), %rdi
callq 0x15db0
movl %eax, 0x5c(%rsp)
jmp 0x1db30
movl 0x5c(%rsp), %eax
movl %eax, 0x19c(%rsp)
movq 0x130(%rsp), %rsi
addq $0x4, %rsi
leaq 0x198(%rsp), %rdi
callq 0x15db0
movl %eax, 0x58(%rsp)
jmp 0x1db5a
movl 0x58(%rsp), %eax
movl %eax, 0x198(%rsp)
movq 0x130(%rsp), %rax
movl 0x8(%rax), %ecx
movl 0x194(%rsp), %eax
addl %ecx, %eax
movl %eax, 0x194(%rsp)
movq 0x130(%rsp), %rsi
addq $0xc, %rsi
leaq 0x190(%rsp), %rdi
callq 0x15db0
movl %eax, 0x54(%rsp)
jmp 0x1db9f
movl 0x54(%rsp), %eax
movl %eax, 0x190(%rsp)
jmp 0x1dbac
movl 0x13c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x13c(%rsp)
jmp 0x1daab
movq 0xe8(%rsp), %rdi
movl 0x19c(%rsp), %esi
movl 0x198(%rsp), %edx
movl 0x194(%rsp), %ecx
movl 0x190(%rsp), %r8d
xorl %r9d, %r9d
callq 0x1e0f0
jmp 0x1dbf1
movq 0xe8(%rsp), %rdi
callq 0x1e140
movq %rax, 0x48(%rsp)
jmp 0x1dc05
movq 0x48(%rsp), %rax
cmpq $0x0, %rax
je 0x1dd40
movl $0x0, 0x12c(%rsp)
movq 0xf8(%rsp), %rcx
movl 0x12c(%rsp), %eax
cmpl (%rcx), %eax
jge 0x1dd3e
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq %rax, 0x40(%rsp)
jmp 0x1dc4a
movq 0x40(%rsp), %rax
movslq 0x12c(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x120(%rsp)
movq 0x120(%rsp), %rdi
callq 0x1e0e0
movq %rax, 0x38(%rsp)
jmp 0x1dc7a
movq 0x38(%rsp), %rax
cmpq $0x0, %rax
je 0x1dd0f
movq 0xe8(%rsp), %rdi
movss 0x1a0(%rsp), %xmm0
movl 0x19c(%rsp), %eax
movq 0x120(%rsp), %r9
movl (%r9), %edx
movl 0x4(%r9), %ecx
subl %edx, %eax
cvtsi2ss %rax, %xmm2
movaps %xmm0, %xmm1
mulss %xmm2, %xmm1
cvttss2si %xmm1, %esi
movl 0x198(%rsp), %eax
subl %ecx, %eax
cvtsi2ss %rax, %xmm2
movaps %xmm0, %xmm1
mulss %xmm2, %xmm1
cvttss2si %xmm1, %edx
movl 0x18c(%rsp), %ecx
movl 0x190(%rsp), %eax
movl 0xc(%r9), %r8d
subl %r8d, %eax
cvtsi2ss %rax, %xmm1
mulss %xmm1, %xmm0
cvttss2si %xmm0, %r8d
movss 0xaa41a(%rip), %xmm0    # 0xc8120
callq 0x1e150
jmp 0x1dd0d
jmp 0x1dd0f
movq 0x120(%rsp), %rax
movl 0x8(%rax), %eax
addl 0x18c(%rsp), %eax
movl %eax, 0x18c(%rsp)
movl 0x12c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x12c(%rsp)
jmp 0x1dc1f
jmp 0x1dd40
jmp 0x1dfe2
movl $0x0, 0x11c(%rsp)
movq 0xf8(%rsp), %rcx
movl 0x11c(%rsp), %eax
cmpl (%rcx), %eax
jge 0x1de65
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq %rax, 0x30(%rsp)
jmp 0x1dd7b
movq 0x30(%rsp), %rax
movslq 0x11c(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x110(%rsp)
movq 0x110(%rsp), %rdi
callq 0x1e0e0
movq %rax, 0x28(%rsp)
jmp 0x1ddab
movq 0x28(%rsp), %rax
cmpq $0x0, %rax
je 0x1de4d
movq 0x110(%rsp), %rsi
leaq 0x19c(%rsp), %rdi
callq 0x15db0
movl %eax, 0x24(%rsp)
jmp 0x1ddd5
movl 0x24(%rsp), %eax
movl %eax, 0x19c(%rsp)
movq 0x110(%rsp), %rsi
addq $0x4, %rsi
leaq 0x198(%rsp), %rdi
callq 0x15db0
movl %eax, 0x20(%rsp)
jmp 0x1ddff
movl 0x20(%rsp), %eax
movl %eax, 0x198(%rsp)
movq 0x110(%rsp), %rsi
addq $0x8, %rsi
leaq 0x194(%rsp), %rdi
callq 0x15db0
movl %eax, 0x1c(%rsp)
jmp 0x1de29
movl 0x1c(%rsp), %eax
movl %eax, 0x194(%rsp)
movq 0x110(%rsp), %rax
movl 0xc(%rax), %eax
addl 0x190(%rsp), %eax
movl %eax, 0x190(%rsp)
jmp 0x1de4f
movl 0x11c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x11c(%rsp)
jmp 0x1dd50
movq 0xe8(%rsp), %rdi
movl 0x19c(%rsp), %esi
movl 0x198(%rsp), %edx
movl 0x194(%rsp), %ecx
movl 0x190(%rsp), %r8d
xorl %r9d, %r9d
callq 0x1e0f0
jmp 0x1de94
movq 0xe8(%rsp), %rdi
callq 0x1e140
movq %rax, 0x10(%rsp)
jmp 0x1dea8
movq 0x10(%rsp), %rax
cmpq $0x0, %rax
je 0x1dfe0
movl $0x0, 0x10c(%rsp)
movq 0xf8(%rsp), %rcx
movl 0x10c(%rsp), %eax
cmpl (%rcx), %eax
jge 0x1dfde
movq 0xf8(%rsp), %rdi
callq 0x1e060
movq %rax, 0x8(%rsp)
jmp 0x1deed
movq 0x8(%rsp), %rax
movslq 0x10c(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x100(%rsp)
movq 0x100(%rsp), %rdi
callq 0x1e0e0
movq %rax, (%rsp)
jmp 0x1df1c
movq (%rsp), %rax
cmpq $0x0, %rax
je 0x1dfaf
movq 0xe8(%rsp), %rdi
movss 0x1a0(%rsp), %xmm0
movl 0x19c(%rsp), %eax
movq 0x100(%rsp), %r9
movl (%r9), %edx
movl 0x4(%r9), %ecx
subl %edx, %eax
cvtsi2ss %rax, %xmm2
movaps %xmm0, %xmm1
mulss %xmm2, %xmm1
cvttss2si %xmm1, %esi
movl 0x198(%rsp), %eax
subl %ecx, %eax
cvtsi2ss %rax, %xmm2
movaps %xmm0, %xmm1
mulss %xmm2, %xmm1
cvttss2si %xmm1, %edx
movl 0x194(%rsp), %eax
movl 0x8(%r9), %ecx
subl %ecx, %eax
cvtsi2ss %rax, %xmm1
mulss %xmm1, %xmm0
cvttss2si %xmm0, %ecx
movl 0x18c(%rsp), %r8d
movss 0xaa17a(%rip), %xmm0    # 0xc8120
callq 0x1e150
jmp 0x1dfad
jmp 0x1dfaf
movq 0x100(%rsp), %rax
movl 0xc(%rax), %eax
addl 0x18c(%rsp), %eax
movl %eax, 0x18c(%rsp)
movl 0x10c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x10c(%rsp)
jmp 0x1dec2
jmp 0x1dfe0
jmp 0x1dfe2
movb $0x1, 0x18b(%rsp)
testb $0x1, 0x18b(%rsp)
jne 0x1e001
movq 0xe8(%rsp), %rdi
callq 0x1a320
jmp 0x1e003
movq 0xf0(%rsp), %rax
addq $0x1b8, %rsp            # imm = 0x1B8
retq
movq 0x180(%rsp), %rdi
callq 0x5970