// File: /workspace/github_cpp_makefile_star2_O3/manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImg<double>::_save_pnm(_IO_FILE*, char const*, unsigned int) const
const CImg<T>& _save_pnm(std::FILE *const file, const char *const filename,
                             const unsigned int bytes_per_pixel=0) const {
      if (!file && !filename)
        throw CImgArgumentException(_cimg_instance
                                    "save_pnm(): Specified filename is (null).",
                                    cimg_instance);
      if (is_empty()) { cimg::fempty(file,filename); return *this; }

      double stmin, stmax = (double)max_min(stmin);
      if (_depth>1)
        cimg::warn(_cimg_instance
                   "save_pnm(): Instance is volumetric, only the first slice will be saved in file '%s'.",
                   cimg_instance,
                   filename?filename:"(FILE*)");
      if (_spectrum>3)
        cimg::warn(_cimg_instance
                   "save_pnm(): Instance is multispectral, only the three first channels will be saved in file '%s'.",
                   cimg_instance,
                   filename?filename:"(FILE*)");
      if (stmin<0 || (bytes_per_pixel==1 && stmax>=256) || stmax>=65536)
        cimg::warn(_cimg_instance
                   "save_pnm(): Instance has pixel values in [%g,%g], probable type overflow in file '%s'.",
                   cimg_instance,
                   stmin,stmax,filename?filename:"(FILE*)");

      std::FILE *const nfile = file?file:cimg::fopen(filename,"wb");
      const T
        *ptr_r = data(0,0,0,0),
        *ptr_g = (_spectrum>=2)?data(0,0,0,1):0,
        *ptr_b = (_spectrum>=3)?data(0,0,0,2):0;
      const unsigned long buf_size = cimg::min(1024*1024UL,_width*_height*(_spectrum==1?1UL:3UL));

      std::fprintf(nfile,"P%c\n%u %u\n%u\n",
                   (_spectrum==1?'5':'6'),_width,_height,stmax<256?255:(stmax<4096?4095:65535));

      switch (_spectrum) {
      case 1 : { // Scalar image
        if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PGM 8 bits
          CImg<ucharT> buf(buf_size);
          for (long to_write = (long)_width*_height; to_write>0; ) {
            const unsigned long N = cimg::min((unsigned long)to_write,buf_size);
            unsigned char *ptrd = buf._data;
            for (unsigned long i = N; i>0; --i) *(ptrd++) = (unsigned char)*(ptr_r++);
            cimg::fwrite(buf._data,N,nfile);
            to_write-=N;
          }
        } else { // Binary PGM 16 bits
          CImg<ushortT> buf(buf_size);
          for (long to_write = (long)_width*_height; to_write>0; ) {
            const unsigned long N = cimg::min((unsigned long)to_write,buf_size);
            unsigned short *ptrd = buf._data;
            for (unsigned long i = N; i>0; --i) *(ptrd++) = (unsigned short)*(ptr_r++);
            if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size);
            cimg::fwrite(buf._data,N,nfile);
            to_write-=N;
          }
        }
      } break;
      case 2 : { // RG image
        if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PPM 8 bits
          CImg<ucharT> buf(buf_size);
          for (long to_write = (long)_width*_height; to_write>0; ) {
            const unsigned long N = cimg::min((unsigned long)to_write,buf_size/3);
            unsigned char *ptrd = buf._data;
            for (unsigned long i = N; i>0; --i) {
              *(ptrd++) = (unsigned char)*(ptr_r++);
              *(ptrd++) = (unsigned char)*(ptr_g++);
              *(ptrd++) = 0;
            }
            cimg::fwrite(buf._data,3*N,nfile);
            to_write-=N;
          }
        } else {             // Binary PPM 16 bits
          CImg<ushortT> buf(buf_size);
          for (long to_write = (long)_width*_height; to_write>0; ) {
            const unsigned long N = cimg::min((unsigned long)to_write,buf_size/3);
            unsigned short *ptrd = buf._data;
            for (unsigned long i = N; i>0; --i) {
              *(ptrd++) = (unsigned short)*(ptr_r++);
              *(ptrd++) = (unsigned short)*(ptr_g++);
              *(ptrd++) = 0;
            }
            if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size);
            cimg::fwrite(buf._data,3*N,nfile);
            to_write-=N;
          }
        }
      } break;
      default : { // RGB image
        if (bytes_per_pixel==1 || (!bytes_per_pixel && stmax<256)) { // Binary PPM 8 bits
          CImg<ucharT> buf(buf_size);
          for (long to_write = (long)_width*_height; to_write>0; ) {
            const unsigned long N = cimg::min((unsigned long)to_write,buf_size/3);
            unsigned char *ptrd = buf._data;
            for (unsigned long i = N; i>0; --i) {
              *(ptrd++) = (unsigned char)*(ptr_r++);
              *(ptrd++) = (unsigned char)*(ptr_g++);
              *(ptrd++) = (unsigned char)*(ptr_b++);
            }
            cimg::fwrite(buf._data,3*N,nfile);
            to_write-=N;
          }
        } else {             // Binary PPM 16 bits
          CImg<ushortT> buf(buf_size);
          for (long to_write = (long)_width*_height; to_write>0; ) {
            const unsigned long N = cimg::min((unsigned long)to_write,buf_size/3);
            unsigned short *ptrd = buf._data;
            for (unsigned long i = N; i>0; --i) {
              *(ptrd++) = (unsigned short)*(ptr_r++);
              *(ptrd++) = (unsigned short)*(ptr_g++);
              *(ptrd++) = (unsigned short)*(ptr_b++);
            }
            if (!cimg::endianness()) cimg::invert_endianness(buf._data,buf_size);
            cimg::fwrite(buf._data,3*N,nfile);
            to_write-=N;
          }
        }
      }
      }
      if (!file) cimg::fclose(nfile);
      return *this;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rdi, %r15
movq %rsi, 0x60(%rsp)
movq %rsi, %rax
orq %rdx, %rax
je 0x5ed72
movq %rdx, %r12
cmpq $0x0, 0x18(%r15)
je 0x5e429
movdqu (%r15), %xmm0
pxor %xmm1, %xmm1
pcmpeqd %xmm0, %xmm1
movmskps %xmm1, %eax
testb %al, %al
jne 0x5e429
movl %ecx, %ebp
leaq 0x70(%rsp), %rsi
movq %r15, %rdi
callq 0x5ef7e
movsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movl 0x8(%r15), %ecx
cmpl $0x2, %ecx
jb 0x5e358
leaq 0x1055f(%rip), %rax     # 0x6e868
leaq 0x11932(%rip), %r10     # 0x6fc42
cmpb $0x0, 0x10(%r15)
cmovneq %rax, %r10
testq %r12, %r12
movl (%r15), %esi
movl 0x4(%r15), %edx
movl 0xc(%r15), %r8d
movq 0x18(%r15), %r9
leaq 0x312df(%rip), %r11     # 0x8f611
cmovneq %r12, %r11
subq $0x8, %rsp
leaq 0x30dde(%rip), %rbx     # 0x8f11f
leaq 0x33d0e(%rip), %rdi     # 0x92056
xorl %eax, %eax
pushq %r11
pushq %rbx
pushq %r10
callq 0xbb10
addq $0x20, %rsp
movl 0xc(%r15), %r8d
cmpl $0x4, %r8d
jb 0x5e3b8
leaq 0x104ff(%rip), %rax     # 0x6e868
leaq 0x118d2(%rip), %r10     # 0x6fc42
cmpb $0x0, 0x10(%r15)
cmovneq %rax, %r10
testq %r12, %r12
movl (%r15), %esi
movl 0x4(%r15), %edx
movl 0x8(%r15), %ecx
movq 0x18(%r15), %r9
leaq 0x3127f(%rip), %r11     # 0x8f611
cmovneq %r12, %r11
subq $0x8, %rsp
leaq 0x30d7e(%rip), %rbx     # 0x8f11f
leaq 0x33d31(%rip), %rdi     # 0x920d9
xorl %eax, %eax
pushq %r11
pushq %rbx
pushq %r10
callq 0xbb10
addq $0x20, %rsp
movsd 0x70(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm0, %xmm1
jbe 0x5e43b
leaq 0x1049a(%rip), %rax     # 0x6e868
cmpb $0x0, 0x10(%r15)
leaq 0x11868(%rip), %r10     # 0x6fc42
cmovneq %rax, %r10
testq %r12, %r12
movl (%r15), %esi
movl 0x4(%r15), %edx
movl 0x8(%r15), %ecx
movl 0xc(%r15), %r8d
movq 0x18(%r15), %r9
leaq 0x31216(%rip), %r11     # 0x8f611
cmovneq %r12, %r11
subq $0x8, %rsp
leaq 0x30d15(%rip), %rbx     # 0x8f11f
leaq 0x33d57(%rip), %rdi     # 0x92168
movsd 0x18(%rsp), %xmm1
movb $0x2, %al
pushq %r11
pushq %rbx
pushq %r10
callq 0xbb10
addq $0x20, %rsp
jmp 0x5e46e
movq 0x60(%rsp), %rdi
movq %r12, %rsi
callq 0x5ce0e
jmp 0x5ecb2
cmpl $0x1, %ebp
sete %al
movsd 0x10(%rsp), %xmm1
ucomisd 0xfc41(%rip), %xmm1     # 0x6e090
setae %cl
testb %cl, %al
jne 0x5e3c7
movsd 0x10(%rsp), %xmm1
ucomisd 0xfc30(%rip), %xmm1     # 0x6e098
jae 0x5e3c7
movq 0x60(%rsp), %rax
movq %rax, (%rsp)
testq %rax, %rax
jne 0x5e48f
leaq 0x30bda(%rip), %rsi     # 0x8f05d
movq %r12, %rdi
callq 0x3b111
movq %rax, (%rsp)
movq 0x18(%r15), %r12
movl (%r15), %ecx
movl 0x4(%r15), %r8d
movl 0xc(%r15), %eax
cmpl $0x2, %eax
jb 0x5e4c9
movl 0x8(%r15), %edx
movq %r8, %rsi
imulq %rcx, %rsi
imulq %rdx, %rsi
leaq (%r12,%rsi,8), %r14
cmpl $0x2, %eax
je 0x5e4cc
shlq $0x4, %rsi
addq %r12, %rsi
movq %rsi, 0x40(%rsp)
jmp 0x5e4d5
xorl %r14d, %r14d
movq $0x0, 0x40(%rsp)
movl %r8d, %esi
imull %ecx, %esi
xorl %edx, %edx
cmpl $0x1, %eax
setne %dl
leaq 0x1(,%rdx,2), %r13
movq %rsi, 0x18(%rsp)
imulq %rsi, %r13
movl $0x100000, %eax         # imm = 0x100000
cmpq %rax, %r13
cmovbq %r13, %rax
movq %rax, 0x8(%rsp)
addl $0x35, %edx
movsd 0xfb90(%rip), %xmm0     # 0x6e0a0
movsd 0x10(%rsp), %xmm1
ucomisd %xmm1, %xmm0
movl $0xfff, %eax            # imm = 0xFFF
movl $0xffff, %esi           # imm = 0xFFFF
cmoval %eax, %esi
movsd 0xfb61(%rip), %xmm0     # 0x6e090
ucomisd %xmm1, %xmm0
seta %bl
movl $0xff, %r9d
cmovbel %esi, %r9d
leaq 0x33ca6(%rip), %rsi     # 0x921ed
movq (%rsp), %rdi
xorl %eax, %eax
callq 0x4750
movl 0xc(%r15), %ecx
cmpl $0x1, %ebp
sete %dl
testl %ebp, %ebp
sete %al
andb %bl, %al
orb %dl, %al
cmpl $0x2, %ecx
movq %r13, 0x10(%rsp)
je 0x5e6c1
cmpl $0x1, %ecx
jne 0x5e85b
testb %al, %al
movq 0x8(%rsp), %rbx
je 0x5ea0c
leaq 0x20(%rsp), %rdi
movl %ebx, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0xe578
movl (%r15), %eax
movq %r15, 0x48(%rsp)
movl 0x4(%r15), %edx
imulq %rax, %rdx
testq %rdx, %rdx
je 0x5e6a3
cmpq %rbx, %rdx
movq %rbx, %r15
cmovbq %rdx, %r15
movq 0x38(%rsp), %rbp
cmpl $0x0, 0x18(%rsp)
je 0x5e67b
xorl %eax, %eax
cvttsd2si (%r12), %ecx
addq $0x8, %r12
movb %cl, (%rbp,%rax)
incq %rax
cmpq %rax, %r15
jne 0x5e5da
movq 0x38(%rsp), %rbp
cmpq $0x0, (%rsp)
je 0x5ed0f
testq %rbp, %rbp
je 0x5ed0f
cmpl $0x0, 0x18(%rsp)
je 0x5e69a
movq %rdx, 0x10(%rsp)
movq %r15, %r13
xorl %r14d, %r14d
movl $0x3f00000, %eax        # imm = 0x3F00000
cmpq %rax, %r13
movl $0x3f00000, %ebx        # imm = 0x3F00000
cmovbq %r13, %rbx
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %rbx, %rdx
movq (%rsp), %rcx
callq 0x4a80
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %rbx
jne 0x5e656
testq %r13, %r13
jne 0x5e61f
testq %r13, %r13
je 0x5e690
leaq 0x335a3(%rip), %rdi     # 0x91c05
movq %r14, %rsi
movq %r15, %rdx
xorl %eax, %eax
callq 0xbb10
movq 0x8(%rsp), %rbx
movq 0x10(%rsp), %rdx
jmp 0x5e69a
cmpq $0x0, (%rsp)
je 0x5ed0f
testq %rbp, %rbp
jne 0x5e69a
jmp 0x5ed0f
movq 0x8(%rsp), %rbx
movq 0x10(%rsp), %rdx
subq %r15, %rdx
jg 0x5e5be
cmpb $0x0, 0x30(%rsp)
jne 0x5e9fe
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5e9fe
jmp 0x5e9f9
testb %al, %al
movq %r15, 0x48(%rsp)
je 0x5eabd
leaq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rbx
movl %ebx, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0xe578
movl (%r15), %eax
movl 0x4(%r15), %ecx
imulq %rax, %rcx
testq %rcx, %rcx
je 0x5e83d
movl %ebx, %eax
movl $0xaaaaaaab, %esi       # imm = 0xAAAAAAAB
imulq %rax, %rsi
shrq $0x21, %rsi
leaq 0x32219(%rip), %rax     # 0x90932
movq %rax, 0x50(%rsp)
movq %rsi, 0x58(%rsp)
cmpq %rsi, %rcx
movq %rsi, %r15
movq %rcx, 0x18(%rsp)
cmovbq %rcx, %r15
movq 0x38(%rsp), %rbp
cmpq $0x3, %r13
jae 0x5e756
cmpq $0x0, (%rsp)
je 0x5ede3
testq %rbp, %rbp
jne 0x5e82f
jmp 0x5ede3
xorl %eax, %eax
xorl %ecx, %ecx
cvttsd2si (%r12,%rcx,8), %edx
movb %dl, (%rbp)
cvttsd2si (%r14,%rcx,8), %edx
movb %dl, 0x1(%rbp)
movb $0x0, 0x2(%rbp)
addq $0x3, %rbp
incq %rcx
addq $-0x8, %rax
cmpq %rcx, %r15
jne 0x5e75a
movq 0x38(%rsp), %rbp
leaq (%r15,%r15,2), %rbx
cmpq $0x0, (%rsp)
je 0x5edf3
testq %rbp, %rbp
je 0x5edf3
subq %rax, %r12
subq %rax, %r14
cmpq $0x3, %r13
jb 0x5e82f
movq %r14, 0x8(%rsp)
movq %rbx, 0x40(%rsp)
movq %rbx, %r13
xorl %r14d, %r14d
movl $0x3f00000, %eax        # imm = 0x3F00000
cmpq %rax, %r13
movl $0x3f00000, %ebx        # imm = 0x3F00000
cmovbq %r13, %rbx
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %rbx, %rdx
movq (%rsp), %rcx
callq 0x4a80
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %rbx
jne 0x5e7f4
testq %r13, %r13
jne 0x5e7bd
testq %r13, %r13
je 0x5e820
leaq 0x33405(%rip), %rdi     # 0x91c05
movq %r14, %rsi
movq 0x40(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %r13
movq 0x58(%rsp), %rsi
jmp 0x5e82f
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %r13
movq 0x58(%rsp), %rsi
movq 0x18(%rsp), %rcx
subq %r15, %rcx
jg 0x5e723
cmpb $0x0, 0x30(%rsp)
jne 0x5e9fe
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5e9fe
jmp 0x5e9f9
testb %al, %al
movq 0x8(%rsp), %rbx
movq %r15, 0x48(%rsp)
je 0x5ebae
leaq 0x20(%rsp), %rdi
movl %ebx, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0xe578
movl (%r15), %eax
movl 0x4(%r15), %ecx
imulq %rax, %rcx
testq %rcx, %rcx
je 0x5e9e8
movl %ebx, %eax
movl $0xaaaaaaab, %edi       # imm = 0xAAAAAAAB
imulq %rax, %rdi
shrq $0x21, %rdi
leaq 0x3207f(%rip), %rax     # 0x90932
movq %rax, 0x68(%rsp)
movq %rdi, 0x50(%rsp)
cmpq %rdi, %rcx
movq %rdi, %r15
movq %rcx, 0x18(%rsp)
cmovbq %rcx, %r15
movq 0x38(%rsp), %rbp
cmpq $0x3, %r13
jae 0x5e8f0
cmpq $0x0, (%rsp)
je 0x5ee45
testq %rbp, %rbp
jne 0x5e9da
jmp 0x5ee45
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x40(%rsp), %rsi
cvttsd2si (%r12,%rcx,8), %edx
movb %dl, (%rbp)
cvttsd2si (%r14,%rcx,8), %edx
movb %dl, 0x1(%rbp)
cvttsd2si (%rsi,%rcx,8), %edx
movb %dl, 0x2(%rbp)
addq $0x3, %rbp
incq %rcx
addq $-0x8, %rax
cmpq %rcx, %r15
jne 0x5e8f9
movq 0x38(%rsp), %rbp
leaq (%r15,%r15,2), %rbx
cmpq $0x0, (%rsp)
je 0x5ee55
testq %rbp, %rbp
je 0x5ee55
subq %rax, %r12
subq %rax, %r14
subq %rax, %rsi
movq %rsi, 0x40(%rsp)
cmpq $0x3, %r13
jb 0x5e9da
movq %r14, 0x8(%rsp)
movq %rbx, 0x58(%rsp)
movq %rbx, %r13
xorl %r14d, %r14d
movl $0x3f00000, %eax        # imm = 0x3F00000
cmpq %rax, %r13
movl $0x3f00000, %ebx        # imm = 0x3F00000
cmovbq %r13, %rbx
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %rbx, %rdx
movq (%rsp), %rcx
callq 0x4a80
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %rbx
jne 0x5e99f
testq %r13, %r13
jne 0x5e968
testq %r13, %r13
je 0x5e9cb
leaq 0x3325a(%rip), %rdi     # 0x91c05
movq %r14, %rsi
movq 0x58(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %r13
movq 0x50(%rsp), %rdi
jmp 0x5e9da
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %r13
movq 0x50(%rsp), %rdi
movq 0x18(%rsp), %rcx
subq %r15, %rcx
jg 0x5e8bd
cmpb $0x0, 0x30(%rsp)
jne 0x5e9fe
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5e9fe
callq 0x4690
movq 0x48(%rsp), %r15
movq (%rsp), %rbp
jmp 0x5ecaa
leaq 0x20(%rsp), %rdi
movl %ebx, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x4ca6c
movl (%r15), %eax
movl 0x4(%r15), %ebx
imulq %rax, %rbx
testq %rbx, %rbx
movq (%rsp), %rbp
je 0x5ea9a
movq 0x8(%rsp), %r13
cmpq %r13, %rbx
cmovbq %rbx, %r13
movq 0x38(%rsp), %rdi
cmpl $0x0, 0x18(%rsp)
je 0x5ea8a
xorl %eax, %eax
cvttsd2si (%r12), %ecx
addq $0x8, %r12
movw %cx, (%rdi,%rax,2)
incq %rax
cmpq %rax, %r13
jne 0x5ea56
cmpl $0x0, 0x18(%rsp)
je 0x5ea8a
movq 0x8(%rsp), %rax
leaq (%rdi,%rax,2), %rax
rolw $0x8, -0x2(%rax)
addq $-0x2, %rax
cmpq %rdi, %rax
ja 0x5ea7c
movq %r13, %rsi
movq %rbp, %rdx
callq 0x5f086
subq %r13, %rbx
jg 0x5ea3c
cmpb $0x0, 0x30(%rsp)
jne 0x5ecaa
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5ecaa
callq 0x4690
jmp 0x5ecaa
movq %r14, %r13
leaq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x4ca6c
movl (%r15), %eax
movl 0x4(%r15), %ebx
imulq %rax, %rbx
testq %rbx, %rbx
movq (%rsp), %rbp
je 0x5eb90
movl 0x8(%rsp), %eax
movl $0xaaaaaaab, %r14d      # imm = 0xAAAAAAAB
imulq %rax, %r14
shrq $0x21, %r14
cmpq %r14, %rbx
movq %r14, %r15
cmovbq %rbx, %r15
movq 0x38(%rsp), %rdi
cmpq $0x3, 0x10(%rsp)
jb 0x5eb5d
xorl %eax, %eax
xorl %ecx, %ecx
movq %rdi, %rdx
movsd (%r12,%rcx,8), %xmm0
movhpd (%r13,%rcx,8), %xmm0    # xmm0 = xmm0[0],mem[0]
cvttpd2dq %xmm0, %xmm0
pshuflw $0xe8, %xmm0, %xmm0     # xmm0 = xmm0[0,2,2,3,4,5,6,7]
movd %xmm0, (%rdx)
movw $0x0, 0x4(%rdx)
addq $0x6, %rdx
incq %rcx
addq $-0x8, %rax
cmpq %rcx, %r15
jne 0x5eb27
subq %rax, %r12
subq %rax, %r13
cmpl $0x0, 0x18(%rsp)
je 0x5eb7b
movq 0x8(%rsp), %rax
leaq (%rdi,%rax,2), %rax
rolw $0x8, -0x2(%rax)
addq $-0x2, %rax
cmpq %rdi, %rax
ja 0x5eb6d
leaq (%r15,%r15,2), %rsi
movq %rbp, %rdx
callq 0x5f086
subq %r15, %rbx
jg 0x5eb09
cmpb $0x0, 0x30(%rsp)
jne 0x5eca5
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5eca5
jmp 0x5eca0
movq %r14, %r13
leaq 0x20(%rsp), %rdi
movl %ebx, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x4ca6c
movl (%r15), %eax
movl 0x4(%r15), %ebx
imulq %rax, %rbx
testq %rbx, %rbx
movq (%rsp), %rbp
je 0x5ec8f
movl 0x8(%rsp), %eax
movl $0xaaaaaaab, %r14d      # imm = 0xAAAAAAAB
imulq %rax, %r14
shrq $0x21, %r14
cmpq %r14, %rbx
movq %r14, %r15
cmovbq %rbx, %r15
movq 0x38(%rsp), %rdi
cmpq $0x3, 0x10(%rsp)
jb 0x5ec5c
xorl %eax, %eax
xorl %ecx, %ecx
movq %rdi, %rdx
movq 0x40(%rsp), %r8
movsd (%r12,%rcx,8), %xmm0
movhpd (%r13,%rcx,8), %xmm0    # xmm0 = xmm0[0],mem[0]
cvttpd2dq %xmm0, %xmm0
pshuflw $0xe8, %xmm0, %xmm0     # xmm0 = xmm0[0,2,2,3,4,5,6,7]
movd %xmm0, (%rdx)
cvttsd2si (%r8,%rcx,8), %esi
movw %si, 0x4(%rdx)
incq %rcx
addq $-0x8, %rax
addq $0x6, %rdx
cmpq %rcx, %r15
jne 0x5ec1a
subq %rax, %r12
subq %rax, %r13
subq %rax, %r8
movq %r8, 0x40(%rsp)
cmpl $0x0, 0x18(%rsp)
je 0x5ec7a
movq 0x8(%rsp), %rax
leaq (%rdi,%rax,2), %rax
rolw $0x8, -0x2(%rax)
addq $-0x2, %rax
cmpq %rdi, %rax
ja 0x5ec6c
leaq (%r15,%r15,2), %rsi
movq %rbp, %rdx
callq 0x5f086
subq %r15, %rbx
jg 0x5ebf7
cmpb $0x0, 0x30(%rsp)
jne 0x5eca5
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5eca5
callq 0x4690
movq 0x48(%rsp), %r15
cmpq $0x0, 0x60(%rsp)
je 0x5ecc4
movq %r15, %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testq %rbp, %rbp
je 0x5ecff
movq 0x492d8(%rip), %rax     # 0xa7fa8
cmpq %rbp, (%rax)
je 0x5ecb2
movq 0x492ac(%rip), %rax     # 0xa7f88
cmpq %rbp, (%rax)
je 0x5ecb2
movq %rbp, %rdi
callq 0x4550
testl %eax, %eax
je 0x5ecb2
leaq 0x30308(%rip), %rdi     # 0x8effc
movl %eax, %esi
xorl %eax, %eax
callq 0xbb10
jmp 0x5ecb2
leaq 0x302cc(%rip), %rdi     # 0x8efd2
xorl %eax, %eax
callq 0xbb10
jmp 0x5ecb2
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpq $0x2, %r15
leaq 0x31c0b(%rip), %rax     # 0x90932
leaq 0xfb3a(%rip), %r8       # 0x6e868
cmovaeq %rax, %r8
subq $0x8, %rsp
leaq 0x32e7a(%rip), %rsi     # 0x91bb7
leaq 0x1bac3(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq %r15, %rdx
movq %rbp, %r9
xorl %eax, %eax
pushq 0x8(%rsp)
callq 0xc16a
addq $0x10, %rsp
leaq 0x48eed(%rip), %rsi     # 0xa7c50
movq 0x49266(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
movl (%r15), %edx
movl 0x4(%r15), %ecx
movl 0x8(%r15), %r8d
movl 0xc(%r15), %r9d
leaq 0xfad3(%rip), %rax      # 0x6e868
leaq 0x10ea6(%rip), %r10     # 0x6fc42
cmpb $0x0, 0x10(%r15)
cmovneq %rax, %r10
subq $0x8, %rsp
leaq 0x3036f(%rip), %r11     # 0x8f11f
leaq 0x33247(%rip), %rsi     # 0x91ffe
movq %r14, %rdi
xorl %eax, %eax
pushq %r11
pushq %r10
pushq 0x18(%r15)
callq 0xc16a
addq $0x20, %rsp
leaq 0x48e7c(%rip), %rsi     # 0xa7c50
movq 0x491f5(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
leaq (%r15,%r15,2), %rbx
leaq 0xfa7a(%rip), %rax      # 0x6e868
movq %rax, 0x50(%rsp)
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
subq $0x8, %rsp
leaq 0x32dac(%rip), %rsi     # 0x91bb7
leaq 0x1b9f5(%rip), %rcx     # 0x7a807
movq %rax, %rdi
movq %rbx, %rdx
movq 0x58(%rsp), %r8
movq %rbp, %r9
xorl %eax, %eax
pushq 0x8(%rsp)
callq 0xc16a
addq $0x10, %rsp
leaq 0x48e1a(%rip), %rsi     # 0xa7c50
movq 0x49193(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
leaq (%r15,%r15,2), %rbx
leaq 0xfa18(%rip), %rax      # 0x6e868
movq %rax, 0x68(%rsp)
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
subq $0x8, %rsp
leaq 0x32d4a(%rip), %rsi     # 0x91bb7
leaq 0x1b993(%rip), %rcx     # 0x7a807
movq %rax, %rdi
movq %rbx, %rdx
movq 0x70(%rsp), %r8
movq %rbp, %r9
xorl %eax, %eax
pushq 0x8(%rsp)
callq 0xc16a
addq $0x10, %rsp
leaq 0x48db8(%rip), %rsi     # 0xa7c50
movq 0x49131(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
jmp 0x5eeeb
jmp 0x5ef0e
jmp 0x5eebd
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
jmp 0x5ef76
movq %rax, %rbx
jmp 0x5eecd
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
cmpb $0x0, 0x30(%rsp)
jne 0x5ef76
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5ef76
jmp 0x5ef71
movq %rax, %rbx
jmp 0x5eefb
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
cmpb $0x0, 0x30(%rsp)
jne 0x5ef76
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5ef76
jmp 0x5ef71
movq %rax, %rbx
jmp 0x5ef1e
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
cmpb $0x0, 0x30(%rsp)
jne 0x5ef76
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5ef76
jmp 0x5ef71
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x5ef76
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5ef76
jmp 0x5ef71
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x5ef76
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5ef76
jmp 0x5ef71
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x5ef76
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5ef76
callq 0x4690
movq %rbx, %rdi
callq 0x4960