// File: manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImg<double>::_save_cpp(_IO_FILE*, char const*) const
const CImg<T>& _save_cpp(std::FILE *const file, const char *const filename) const {
      if (!file && !filename)
        throw CImgArgumentException(_cimg_instance
                                    "save_cpp(): Specified filename is (null).",
                                    cimg_instance);
      std::FILE *const nfile = file?file:cimg::fopen(filename,"w");
      char varname[1024] = { 0 };
      if (filename) std::sscanf(cimg::basename(filename),"%1023[a-zA-Z0-9_]",varname);
      if (!*varname) cimg_snprintf(varname,sizeof(varname),"unnamed");
      std::fprintf(nfile,
                   "/* Define image '%s' of size %ux%ux%ux%u and type '%s' */\n"
                   "%s data_%s[] = { %s\n  ",
                   varname,_width,_height,_depth,_spectrum,pixel_type(),pixel_type(),varname,
                   is_empty()?"};":"");
      if (!is_empty()) for (unsigned long off = 0, siz = size()-1; off<=siz; ++off) {
        std::fprintf(nfile,cimg::type<T>::format(),cimg::type<T>::format((*this)[off]));
        if (off==siz) std::fprintf(nfile," };\n");
        else if (!((off+1)%16)) std::fprintf(nfile,",\n  ");
        else std::fprintf(nfile,", ");
      }
      if (!file) cimg::fclose(nfile);
      return *this;
    }

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x4f0, %rsp            # imm = 0x4F0
movq %rdi, 0x4e8(%rsp)
movq %rsi, 0x4e0(%rsp)
movq %rdx, 0x4d8(%rsp)
movq 0x4e8(%rsp), %rax
movq %rax, 0xa8(%rsp)
cmpq $0x0, 0x4e0(%rsp)
jne 0x9c541
cmpq $0x0, 0x4d8(%rsp)
jne 0x9c541
movl $0x4008, %edi           # imm = 0x4008
callq 0x5240
movq %rax, %rcx
movq 0xa8(%rsp), %rax
movq %rcx, 0x78(%rsp)
movl (%rax), %ecx
movl %ecx, 0x80(%rsp)
movl 0x4(%rax), %ecx
movl %ecx, 0x84(%rsp)
movl 0x8(%rax), %ecx
movl %ecx, 0x88(%rsp)
movl 0xc(%rax), %ecx
movl %ecx, 0x8c(%rsp)
movq 0x18(%rax), %rcx
movq %rcx, 0x90(%rsp)
movb 0x10(%rax), %dl
leaq 0x4c54a(%rip), %rcx     # 0xe89d2
leaq 0x2d652(%rip), %rax     # 0xc9ae1
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x98(%rsp)
callq 0x118f0
movq %rax, 0xa0(%rsp)
jmp 0x9c4ad
movl 0x8c(%rsp), %r9d
movl 0x88(%rsp), %r8d
movl 0x84(%rsp), %ecx
movl 0x80(%rsp), %edx
movq 0x78(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %r10
movq 0xa0(%rsp), %r11
movq %rsp, %rax
movq %r11, 0x10(%rax)
movq %r10, 0x8(%rax)
movq %rsi, (%rax)
leaq 0x4f304(%rip), %rsi     # 0xeb801
xorl %eax, %eax
callq 0x12220
jmp 0x9c506
movq 0x78(%rsp), %rdi
leaq 0x6364e(%rip), %rsi     # 0xffb60
leaq -0x8a0b9(%rip), %rdx    # 0x12460
callq 0x5920
movq 0x78(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4d0(%rsp)
movl %eax, 0x4cc(%rsp)
callq 0x53a0
jmp 0x9c800
cmpq $0x0, 0x4e0(%rsp)
je 0x9c55b
movq 0x4e0(%rsp), %rax
movq %rax, 0x70(%rsp)
jmp 0x9c574
movq 0x4d8(%rsp), %rdi
leaq 0x4da07(%rip), %rsi     # 0xe9f71
callq 0x654a0
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x4c0(%rsp)
leaq 0xc0(%rsp), %rdi
xorl %esi, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x52a0
cmpq $0x0, 0x4d8(%rsp)
je 0x9c5c6
movq 0x4d8(%rsp), %rdi
callq 0x9c810
movq %rax, %rdi
leaq 0xc0(%rsp), %rdx
leaq 0x4f29a(%rip), %rsi     # 0xeb859
movb $0x0, %al
callq 0x5510
cmpb $0x0, 0xc0(%rsp)
jne 0x9c5eb
leaq 0xc0(%rsp), %rdi
movl $0x400, %esi            # imm = 0x400
leaq 0x4f287(%rip), %rdx     # 0xeb86b
movb $0x0, %al
callq 0x5890
movq 0xa8(%rsp), %rax
movq 0x4c0(%rsp), %rcx
movq %rcx, 0x40(%rsp)
leaq 0xc0(%rsp), %rcx
movq %rcx, 0x48(%rsp)
movl (%rax), %ecx
movl %ecx, 0x54(%rsp)
movl 0x4(%rax), %ecx
movl %ecx, 0x58(%rsp)
movl 0x8(%rax), %ecx
movl %ecx, 0x5c(%rsp)
movl 0xc(%rax), %ebp
callq 0x118f0
movq %rax, %rbx
callq 0x118f0
movq 0xa8(%rsp), %rdi
movq %rax, 0x60(%rsp)
leaq 0xc0(%rsp), %rax
movq %rax, 0x68(%rsp)
callq 0x10320
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rdx
movl 0x54(%rsp), %ecx
movl 0x58(%rsp), %r8d
movl 0x5c(%rsp), %r9d
movq 0x60(%rsp), %r11
movq 0x68(%rsp), %r10
movb %al, %r14b
leaq 0x4c356(%rip), %rax     # 0xe89d2
leaq 0x4f241(%rip), %rsi     # 0xeb8c4
testb $0x1, %r14b
cmovneq %rsi, %rax
leaq 0x4f1e1(%rip), %rsi     # 0xeb873
movl %ebp, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
movb $0x0, %al
callq 0x5750
movq 0xa8(%rsp), %rdi
callq 0x10320
testb $0x1, %al
jne 0x9c7d4
movq 0xa8(%rsp), %rdi
movq $0x0, 0xb8(%rsp)
callq 0x117b0
subq $0x1, %rax
movq %rax, 0xb0(%rsp)
movq 0xb8(%rsp), %rax
cmpq 0xb0(%rsp), %rax
ja 0x9c7d2
movq 0x4c0(%rsp), %rax
movq %rax, 0x30(%rsp)
callq 0x9c890
movq 0xa8(%rsp), %rdi
movq %rax, 0x38(%rsp)
callq 0x103f0
movq 0xb8(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
callq 0x9c8a0
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
movb $0x1, %al
callq 0x5750
movq 0xb8(%rsp), %rax
cmpq 0xb0(%rsp), %rax
jne 0x9c771
movq 0x4c0(%rsp), %rdi
leaq 0x4f15f(%rip), %rsi     # 0xeb8c7
movb $0x0, %al
callq 0x5750
jmp 0x9c7b7
movq 0xb8(%rsp), %rax
addq $0x1, %rax
andq $0xf, %rax
cmpq $0x0, %rax
jne 0x9c79f
movq 0x4c0(%rsp), %rdi
leaq 0x4f136(%rip), %rsi     # 0xeb8cc
movb $0x0, %al
callq 0x5750
jmp 0x9c7b5
movq 0x4c0(%rsp), %rdi
leaq 0x4f123(%rip), %rsi     # 0xeb8d1
movb $0x0, %al
callq 0x5750
jmp 0x9c7b7
jmp 0x9c7b9
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0x9c6ea
jmp 0x9c7d4
cmpq $0x0, 0x4e0(%rsp)
jne 0x9c7ec
movq 0x4c0(%rsp), %rdi
callq 0x5c6f0
movq 0xa8(%rsp), %rax
addq $0x4f0, %rsp            # imm = 0x4F0
popq %rbx
popq %r14
popq %rbp
retq
movq 0x4d0(%rsp), %rdi
callq 0x5970
nopl (%rax)