// File: /workspace/github_cpp_makefile_star2_O3/manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImg<double>::_load_pnm(_IO_FILE*, char const*)
CImg<T>& _load_pnm(std::FILE *const file, const char *const filename) {
      if (!file && !filename)
        throw CImgArgumentException(_cimg_instance
                                    "load_pnm(): Specified filename is (null).",
                                    cimg_instance);

      std::FILE *const nfile = file?file:cimg::fopen(filename,"rb");
      unsigned int ppm_type, W, H, D = 1, colormax = 255;
      CImg<charT> item(16384,1,1,1,0);
      int err, rval, gval, bval;
      const long cimg_iobuffer = 12*1024*1024;
      while ((err=std::fscanf(nfile,"%16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile);
      if (std::sscanf(item," P%u",&ppm_type)!=1) {
        if (!file) cimg::fclose(nfile);
        throw CImgIOException(_cimg_instance
                              "load_pnm(): PNM header not found in file '%s'.",
                              cimg_instance,
                              filename?filename:"(FILE*)");
      }
      while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile);
      if ((err=std::sscanf(item," %u %u %u %u",&W,&H,&D,&colormax))<2) {
        if (!file) cimg::fclose(nfile);
        throw CImgIOException(_cimg_instance
                              "load_pnm(): WIDTH and HEIGHT fields undefined in file '%s'.",
                              cimg_instance,
                              filename?filename:"(FILE*)");
      }
      if (ppm_type!=1 && ppm_type!=4) {
        if (err==2 || (err==3 && (ppm_type==5 || ppm_type==7 || ppm_type==8 || ppm_type==9))) {
          while ((err=std::fscanf(nfile," %16383[^\n]",item.data()))!=EOF && (*item=='#' || !err)) std::fgetc(nfile);
          if (std::sscanf(item,"%u",&colormax)!=1)
            cimg::warn(_cimg_instance
                       "load_pnm(): COLORMAX field is undefined in file '%s'.",
                       cimg_instance,
                       filename?filename:"(FILE*)");
        } else { colormax = D; D = 1; }
      }
      std::fgetc(nfile);

      switch (ppm_type) {
      case 1 : { // 2d b&w ascii.
        assign(W,H,1,1);
        T* ptrd = _data;
        cimg_foroff(*this,off) { if (std::fscanf(nfile,"%d",&rval)>0) *(ptrd++) = (T)(rval?0:255); else break; }
      } break;
      case 2 : { // 2d grey ascii.
        assign(W,H,1,1);
        T* ptrd = _data;
        cimg_foroff(*this,off) { if (std::fscanf(nfile,"%d",&rval)>0) *(ptrd++) = (T)rval; else break; }
      } break;
      case 3 : { // 2d color ascii.
        assign(W,H,1,3);
        T *ptrd = data(0,0,0,0), *ptr_g = data(0,0,0,1), *ptr_b = data(0,0,0,2);
        cimg_forXY(*this,x,y) {
          if (std::fscanf(nfile,"%d %d %d",&rval,&gval,&bval)==3) {
            *(ptrd++) = (T)rval; *(ptr_g++) = (T)gval; *(ptr_b++) = (T)bval;
          } else break;
        }
      } break;
      case 4 : { // 2d b&w binary (support 3D PINK extension).
        CImg<ucharT> raw;
        assign(W,H,D,1);
        T *ptrd = data(0,0,0,0);
        unsigned int w = 0, h = 0, d = 0;
        for (long to_read = (long)((W/8 + (W%8?1:0))*H*D); to_read>0; ) {
          raw.assign(cimg::min(to_read,cimg_iobuffer));
          cimg::fread(raw._data,raw._width,nfile);
          to_read-=raw._width;
          const unsigned char *ptrs = raw._data;
          unsigned char mask = 0, val = 0;
          for (unsigned long off = (unsigned long)raw._width; off || mask; mask>>=1) {
            if (!mask) { if (off--) val = *(ptrs++); mask = 128; }
            *(ptrd++) = (T)((val&mask)?0:255);
            if (++w==W) { w = 0; mask = 0; if (++h==H) { h = 0; if (++d==D) break; }}
          }
        }
      } break;
      case 5 : case 7 : { // 2d/3d grey binary (support 3D PINK extension).
        if (colormax<256) { // 8 bits.
          CImg<ucharT> raw;
          assign(W,H,D,1);
          T *ptrd = data(0,0,0,0);
          for (long to_read = (long)size(); to_read>0; ) {
            raw.assign(cimg::min(to_read,cimg_iobuffer));
            cimg::fread(raw._data,raw._width,nfile);
            to_read-=raw._width;
            const unsigned char *ptrs = raw._data;
            for (unsigned long off = (unsigned long)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++);
          }
        } else { // 16 bits.
          CImg<ushortT> raw;
          assign(W,H,D,1);
          T *ptrd = data(0,0,0,0);
          for (long to_read = (long)size(); to_read>0; ) {
            raw.assign(cimg::min(to_read,cimg_iobuffer/2));
            cimg::fread(raw._data,raw._width,nfile);
            if (!cimg::endianness()) cimg::invert_endianness(raw._data,raw._width);
            to_read-=raw._width;
            const unsigned short *ptrs = raw._data;
            for (unsigned long off = (unsigned long)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++);
          }
        }
      } break;
      case 6 : { // 2d color binary.
        if (colormax<256) { // 8 bits.
          CImg<ucharT> raw;
          assign(W,H,1,3);
          T
            *ptr_r = data(0,0,0,0),
            *ptr_g = data(0,0,0,1),
            *ptr_b = data(0,0,0,2);
          for (long to_read = (long)size(); to_read>0; ) {
            raw.assign(cimg::min(to_read,cimg_iobuffer));
            cimg::fread(raw._data,raw._width,nfile);
            to_read-=raw._width;
            const unsigned char *ptrs = raw._data;
            for (unsigned long off = (unsigned long)raw._width/3; off; --off) {
              *(ptr_r++) = (T)*(ptrs++);
              *(ptr_g++) = (T)*(ptrs++);
              *(ptr_b++) = (T)*(ptrs++);
            }
          }
        } else { // 16 bits.
          CImg<ushortT> raw;
          assign(W,H,1,3);
          T
            *ptr_r = data(0,0,0,0),
            *ptr_g = data(0,0,0,1),
            *ptr_b = data(0,0,0,2);
          for (long to_read = (int)size(); to_read>0; ) {
            raw.assign(cimg::min(to_read,cimg_iobuffer/2));
            cimg::fread(raw._data,raw._width,nfile);
            if (!cimg::endianness()) cimg::invert_endianness(raw._data,raw._width);
            to_read-=raw._width;
            const unsigned short *ptrs = raw._data;
            for (unsigned long off = (unsigned long)raw._width/3; off; --off) {
              *(ptr_r++) = (T)*(ptrs++);
              *(ptr_g++) = (T)*(ptrs++);
              *(ptr_b++) = (T)*(ptrs++);
            }
          }
        }
      } break;
      case 8 : { // 2d/3d grey binary with int32 integers (PINK extension).
        CImg<intT> raw;
        assign(W,H,D,1);
        T *ptrd = data(0,0,0,0);
        for (long to_read = (long)size(); to_read>0; ) {
          raw.assign(cimg::min(to_read,cimg_iobuffer));
          cimg::fread(raw._data,raw._width,nfile);
          to_read-=raw._width;
          const int *ptrs = raw._data;
          for (unsigned long off = (unsigned long)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++);
        }
      } break;
      case 9 : { // 2d/3d grey binary with float values (PINK extension).
        CImg<floatT> raw;
        assign(W,H,D,1);
        T *ptrd = data(0,0,0,0);
        for (long to_read = (long)size(); to_read>0; ) {
          raw.assign(cimg::min(to_read,cimg_iobuffer));
          cimg::fread(raw._data,raw._width,nfile);
          to_read-=raw._width;
          const float *ptrs = raw._data;
          for (unsigned long off = (unsigned long)raw._width; off; --off) *(ptrd++) = (T)*(ptrs++);
        }
      } break;
      default :
        assign();
        if (!file) cimg::fclose(nfile);
        throw CImgIOException(_cimg_instance
                              "load_pnm(): PNM type 'P%d' found, but type is not supported.",
                              cimg_instance,
                              filename?filename:"(FILE*)",ppm_type);
      }
      if (!file) cimg::fclose(nfile);
      return *this;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rdi, %r14
movq %rsi, %rax
orq %rdx, %rax
je 0x47fc5
movq %rdx, %r12
movq %rsi, %rbx
movq %rsi, 0x68(%rsp)
testq %rsi, %rsi
jne 0x46fcc
leaq 0x48324(%rip), %rsi     # 0x8f2e5
movq %r12, %rdi
callq 0x3b111
movq %rax, %rbx
movl $0x1, 0x1c(%rsp)
movl $0xff, 0x4c(%rsp)
leaq 0x80(%rsp), %rdi
movl $0x4000, %esi           # imm = 0x4000
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
xorl %r9d, %r9d
callq 0x4836a
leaq 0x48b9f(%rip), %r15     # 0x8fba7
movq 0x98(%rsp), %rdx
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x49f0
movq 0x98(%rsp), %rdi
cmpl $-0x1, %eax
je 0x47045
cmpb $0x23, (%rdi)
sete %cl
testl %eax, %eax
sete %al
orb %cl, %al
cmpb $0x1, %al
jne 0x47045
movq %rbx, %rdi
callq 0x4850
jmp 0x47008
leaq 0x48af8(%rip), %rsi     # 0x8fb44
leaq 0x64(%rsp), %rdx
xorl %eax, %eax
callq 0x4540
cmpl $0x1, %eax
movq %rbx, 0x10(%rsp)
jne 0x48035
leaq 0x48b39(%rip), %r15     # 0x8fba6
movq 0x98(%rsp), %rdx
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x49f0
movq 0x98(%rsp), %rdi
cmpl $-0x1, %eax
je 0x470aa
cmpb $0x23, (%rdi)
sete %cl
testl %eax, %eax
sete %al
orb %cl, %al
cmpb $0x1, %al
jne 0x470aa
movq %rbx, %rdi
callq 0x4850
jmp 0x4706d
leaq 0x48b01(%rip), %rsi     # 0x8fbb2
leaq 0xc(%rsp), %rdx
leaq 0x8(%rsp), %rcx
leaq 0x1c(%rsp), %r8
leaq 0x4c(%rsp), %r9
xorl %eax, %eax
callq 0x4540
cmpl $0x1, %eax
jle 0x480b2
movl 0x64(%rsp), %ecx
cmpl $0x1, %ecx
je 0x471dd
cmpl $0x4, %ecx
je 0x471dd
cmpl $0x2, %eax
je 0x47110
cmpl $0x3, %eax
jne 0x471cd
cmpl $0x9, %ecx
ja 0x471cd
movl $0x3a0, %eax            # imm = 0x3A0
btl %ecx, %eax
jae 0x471cd
leaq 0x48a8f(%rip), %r15     # 0x8fba6
movq 0x10(%rsp), %rbx
movq 0x98(%rsp), %rdx
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x49f0
movq 0x98(%rsp), %rdi
cmpl $-0x1, %eax
je 0x47159
cmpb $0x23, (%rdi)
sete %cl
testl %eax, %eax
sete %al
orb %cl, %al
cmpb $0x1, %al
jne 0x47159
movq %rbx, %rdi
callq 0x4850
jmp 0x4711c
leaq 0x48a5c(%rip), %rsi     # 0x8fbbc
leaq 0x4c(%rsp), %rdx
xorl %eax, %eax
callq 0x4540
cmpl $0x1, %eax
je 0x471dd
leaq 0x276f0(%rip), %rax     # 0x6e868
cmpb $0x0, 0x10(%r14)
leaq 0x28abe(%rip), %r10     # 0x6fc42
cmovneq %rax, %r10
testq %r12, %r12
movl (%r14), %esi
movl 0x4(%r14), %edx
movl 0x8(%r14), %ecx
movl 0xc(%r14), %r8d
movq 0x18(%r14), %r9
leaq 0x4846c(%rip), %r11     # 0x8f611
cmovneq %r12, %r11
subq $0x8, %rsp
leaq 0x47f6b(%rip), %rbx     # 0x8f11f
leaq 0x48a6e(%rip), %rdi     # 0x8fc29
xorl %eax, %eax
pushq %r11
pushq %rbx
pushq %r10
callq 0xbb10
addq $0x20, %rsp
jmp 0x471dd
movl 0x1c(%rsp), %eax
movl %eax, 0x4c(%rsp)
movl $0x1, 0x1c(%rsp)
movq 0x10(%rsp), %rdi
callq 0x4850
movl 0x64(%rsp), %eax
decl %eax
cmpl $0x8, %eax
movq %r14, 0x40(%rsp)
ja 0x48143
leaq 0x2756e(%rip), %rcx     # 0x6e770
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0xff, 0x4c(%rsp)
ja 0x4738c
movq $0x0, 0x38(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x20(%rsp)
movb $0x0, 0x30(%rsp)
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movl 0x1c(%rsp), %ecx
movq %r14, %rdi
movl $0x1, %r8d
callq 0xbbfc
movl (%r14), %eax
movl 0x4(%r14), %ecx
imulq %rax, %rcx
movl 0x8(%r14), %eax
movl 0xc(%r14), %ebx
imulq %rax, %rbx
imulq %rcx, %rbx
testq %rbx, %rbx
jle 0x4736e
movq 0x40(%rsp), %rax
movq 0x18(%rax), %r14
movl $0x3f00000, %r12d       # imm = 0x3F00000
movl $0xc00000, %eax         # imm = 0xC00000
cmpq %rax, %rbx
movl $0xc00000, %esi         # imm = 0xC00000
cmovbq %rbx, %rsi
leaq 0x20(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x104de
movq %rbx, 0x50(%rsp)
movq 0x38(%rsp), %rbx
movl 0x20(%rsp), %r15d
cmpq $0x0, 0x10(%rsp)
je 0x47e9d
testq %rbx, %rbx
je 0x47e9d
testl %r15d, %r15d
je 0x47e9d
movq %r15, 0x58(%rsp)
xorl %ebp, %ebp
cmpq %r12, %r15
movl $0x3f00000, %r13d       # imm = 0x3F00000
cmovbq %r15, %r13
leaq (%rbx,%rbp), %rdi
movl $0x1, %esi
movq %r13, %rdx
movq 0x10(%rsp), %rcx
callq 0x47d0
addq %rax, %rbp
subq %rax, %r15
cmpq %rax, %r13
jne 0x47310
testq %r15, %r15
jne 0x472dd
testq %r15, %r15
movq 0x50(%rsp), %rbx
je 0x47330
leaq 0x48599(%rip), %rdi     # 0x8f8ba
movq %rbp, %rsi
movq 0x58(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movl 0x20(%rsp), %eax
testq %rax, %rax
je 0x47362
movq 0x38(%rsp), %rdx
xorl %ecx, %ecx
xorl %esi, %esi
movzbl (%rdx,%rsi), %edi
xorps %xmm0, %xmm0
cvtsi2sd %edi, %xmm0
movsd %xmm0, (%r14,%rsi,8)
incq %rsi
addq $-0x8, %rcx
cmpq %rsi, %rax
jne 0x47342
subq %rcx, %r14
subq %rax, %rbx
testq %rbx, %rbx
jg 0x4727e
cmpb $0x0, 0x30(%rsp)
jne 0x47e05
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x47e05
jmp 0x47e00
movq $0x0, 0x38(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x20(%rsp)
movb $0x0, 0x30(%rsp)
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movl 0x1c(%rsp), %ecx
movq %r14, %rdi
movl $0x1, %r8d
callq 0xbbfc
movl (%r14), %eax
movl 0x4(%r14), %ecx
imulq %rax, %rcx
movl 0x8(%r14), %eax
movl 0xc(%r14), %ebx
imulq %rax, %rbx
imulq %rcx, %rbx
testq %rbx, %rbx
jle 0x4747f
movq 0x40(%rsp), %rax
movq 0x18(%rax), %r14
movl $0x600000, %r12d        # imm = 0x600000
leaq 0x20(%rsp), %r15
cmpq %r12, %rbx
movl $0x600000, %esi         # imm = 0x600000
cmovbq %rbx, %rsi
movq %r15, %rdi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x484e4
movq 0x38(%rsp), %rdi
movl 0x20(%rsp), %esi
movq 0x10(%rsp), %rdx
callq 0x48767
movl 0x20(%rsp), %eax
testq %rax, %rax
je 0x47476
movq 0x38(%rsp), %rcx
leaq (%rcx,%rax,2), %rdx
rolw $0x8, -0x2(%rdx)
addq $-0x2, %rdx
cmpq %rcx, %rdx
ja 0x4743f
testq %rax, %rax
je 0x47476
xorl %edx, %edx
xorl %esi, %esi
movzwl (%rcx,%rsi,2), %edi
xorps %xmm0, %xmm0
cvtsi2sd %edi, %xmm0
movsd %xmm0, (%r14,%rsi,8)
incq %rsi
addq $-0x8, %rdx
cmpq %rsi, %rax
jne 0x47456
subq %rdx, %r14
subq %rax, %rbx
jg 0x473f6
cmpb $0x0, 0x30(%rsp)
jne 0x47e05
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x47e05
jmp 0x47e00
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movq %r14, %rdi
movl $0x1, %ecx
movl $0x3, %r8d
callq 0xbbfc
movslq 0x4(%r14), %rax
testq %rax, %rax
jle 0x47e05
movq 0x40(%rsp), %rdx
movq 0x18(%rdx), %rbx
movl (%rdx), %ecx
movl 0x8(%rdx), %r14d
imulq %rax, %rcx
imulq %rcx, %r14
leaq (%rbx,%r14,8), %r12
shlq $0x4, %r14
addq %rbx, %r14
leaq 0x78(%rsp), %r15
xorl %r13d, %r13d
movq 0x40(%rsp), %rcx
cmpl $0x0, (%rcx)
jle 0x47569
xorl %ebp, %ebp
movq 0x10(%rsp), %rdi
leaq 0x48786(%rip), %rsi     # 0x8fc8d
leaq 0x48(%rsp), %rdx
leaq 0x7c(%rsp), %rcx
movq %r15, %r8
xorl %eax, %eax
callq 0x49f0
cmpl $0x3, %eax
jne 0x47561
xorps %xmm0, %xmm0
cvtsi2sdl 0x48(%rsp), %xmm0
movsd %xmm0, (%rbx)
addq $0x8, %rbx
xorps %xmm0, %xmm0
cvtsi2sdl 0x7c(%rsp), %xmm0
movsd %xmm0, (%r12)
addq $0x8, %r12
xorps %xmm0, %xmm0
cvtsi2sdl 0x78(%rsp), %xmm0
movsd %xmm0, (%r14)
addq $0x8, %r14
incl %ebp
movq 0x40(%rsp), %rax
cmpl (%rax), %ebp
jl 0x474fb
movq 0x40(%rsp), %rax
movl 0x4(%rax), %eax
incl %r13d
cmpl %eax, %r13d
jl 0x474ef
jmp 0x47e05
movq $0x0, 0x38(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x20(%rsp)
movb $0x0, 0x30(%rsp)
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movl 0x1c(%rsp), %ecx
movq %r14, %rdi
movl $0x1, %r8d
callq 0xbbfc
movl (%r14), %eax
movl 0x4(%r14), %ecx
imulq %rax, %rcx
movl 0x8(%r14), %eax
movl 0xc(%r14), %ebx
imulq %rax, %rbx
imulq %rcx, %rbx
testq %rbx, %rbx
jle 0x47652
movq 0x40(%rsp), %rax
movq 0x18(%rax), %r14
movl $0xc00000, %r12d        # imm = 0xC00000
leaq 0x20(%rsp), %r15
cmpq %r12, %rbx
movl $0xc00000, %esi         # imm = 0xC00000
cmovbq %rbx, %rsi
movq %r15, %rdi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x4656e
movq 0x38(%rsp), %rdi
movl 0x20(%rsp), %esi
movq 0x10(%rsp), %rdx
callq 0x467f6
movl 0x20(%rsp), %eax
testq %rax, %rax
je 0x4764a
movq 0x38(%rsp), %rdx
xorl %ecx, %ecx
xorl %esi, %esi
xorps %xmm0, %xmm0
cvtsi2sdl (%rdx,%rsi,4), %xmm0
movsd %xmm0, (%r14,%rsi,8)
incq %rsi
addq $-0x8, %rcx
cmpq %rsi, %rax
jne 0x4762d
subq %rcx, %r14
subq %rax, %rbx
testq %rbx, %rbx
jg 0x475e4
cmpb $0x0, 0x30(%rsp)
jne 0x47e05
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x47e05
jmp 0x47e00
movq $0x0, 0x38(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movb $0x0, 0x30(%rsp)
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movl 0x1c(%rsp), %ecx
movq %r14, %rdi
movl $0x1, %r8d
callq 0xbbfc
movl 0xc(%rsp), %eax
movl %eax, %ecx
shrl $0x3, %ecx
andl $0x7, %eax
cmpl $0x1, %eax
sbbl $-0x1, %ecx
movl 0x1c(%rsp), %eax
imull 0x8(%rsp), %eax
imull %ecx, %eax
testl %eax, %eax
je 0x47896
movl %eax, %ecx
movq 0x40(%rsp), %rax
movq 0x18(%rax), %r14
movl $0x0, 0x58(%rsp)
movl $0x0, 0x50(%rsp)
xorl %ebx, %ebx
movl $0xc00000, %eax         # imm = 0xC00000
cmpq %rax, %rcx
movl $0xc00000, %esi         # imm = 0xC00000
movq %rcx, 0x70(%rsp)
cmovbq %rcx, %rsi
leaq 0x20(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x104de
movq 0x38(%rsp), %r12
movl 0x20(%rsp), %r15d
cmpq $0x0, 0x10(%rsp)
je 0x47eff
testq %r12, %r12
je 0x47eff
testl %r15d, %r15d
je 0x47eff
movq %r15, 0xa0(%rsp)
xorl %ebp, %ebp
movl $0x3f00000, %eax        # imm = 0x3F00000
cmpq %rax, %r15
movl $0x3f00000, %r13d       # imm = 0x3F00000
cmovbq %r15, %r13
leaq (%r12,%rbp), %rdi
movl $0x1, %esi
movq %r13, %rdx
movq 0x10(%rsp), %rcx
callq 0x47d0
addq %rax, %rbp
subq %rax, %r15
cmpq %rax, %r13
jne 0x4777d
testq %r15, %r15
jne 0x47745
testq %r15, %r15
je 0x4779b
leaq 0x48131(%rip), %rdi     # 0x8f8ba
movq %rbp, %rsi
movq 0xa0(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movl 0x20(%rsp), %eax
testq %rax, %rax
je 0x47885
movq 0x38(%rsp), %rdx
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edi
movl 0x1c(%rsp), %ecx
addq $0x8, %r14
movb $0x1, %r11b
xorl %ebp, %ebp
movq %r14, %r12
movq %rax, %r9
xorl %r8d, %r8d
xorl %r10d, %r10d
movsd 0x26832(%rip), %xmm1    # 0x6e008
movq %r12, %r14
testb $0x1, %bpl
jne 0x477fa
movb $-0x80, %r10b
testb $0x1, %r11b
je 0x477f3
decq %r9
movb (%rdx), %r8b
incq %rdx
jmp 0x477fa
movq $-0x1, %r9
movaps %xmm1, %xmm0
testb %r10b, %r8b
je 0x47805
xorps %xmm0, %xmm0
movsd %xmm0, -0x8(%r14)
incl %ebx
cmpl %esi, %ebx
jne 0x4784c
movl 0x50(%rsp), %r10d
incl %r10d
xorl %ebx, %ebx
cmpl %edi, %r10d
jne 0x47844
movl 0x58(%rsp), %r11d
incl %r11d
xorl %ebx, %ebx
movl $0x0, 0x50(%rsp)
movl $0x0, %r10d
movl %r11d, 0x58(%rsp)
cmpl %ecx, %r11d
jne 0x4784c
jmp 0x47879
movl %r10d, 0x50(%rsp)
xorl %r10d, %r10d
movl %r10d, %r15d
shrb %r15b
testq %r9, %r9
setne %r11b
cmpb $0x2, %r10b
setae %bpl
movl %r11d, %r13d
orb %bpl, %r13b
leaq 0x8(%r14), %r12
movl %r15d, %r10d
testb %r13b, %r13b
jne 0x477d6
jmp 0x47885
movl $0x0, 0x50(%rsp)
movl %ecx, 0x58(%rsp)
movq 0x70(%rsp), %rcx
subq %rax, %rcx
testq %rcx, %rcx
jg 0x476e3
cmpb $0x0, 0x30(%rsp)
jne 0x47e05
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x47e05
jmp 0x47e00
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movq %r14, %rdi
movl $0x1, %ecx
movl $0x1, %r8d
callq 0xbbfc
movl (%r14), %eax
movl 0x4(%r14), %ecx
imulq %rax, %rcx
movl 0x8(%r14), %eax
movl 0xc(%r14), %ebx
imulq %rax, %rbx
imulq %rcx, %rbx
testq %rbx, %rbx
je 0x47e05
movq 0x40(%rsp), %rax
movq 0x18(%rax), %r14
leaq 0x48390(%rip), %r15     # 0x8fc93
leaq 0x48(%rsp), %r12
movl $0xff, %ebp
xorl %r13d, %r13d
movq 0x10(%rsp), %rdi
movq %r15, %rsi
movq %r12, %rdx
xorl %eax, %eax
callq 0x49f0
testl %eax, %eax
jle 0x47e05
cmpl $0x0, 0x48(%rsp)
movl $0x0, %eax
cmovel %ebp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, (%r14,%r13,8)
incq %r13
cmpq %r13, %rbx
jne 0x47910
jmp 0x47e05
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movq %r14, %rdi
movl $0x1, %ecx
movl $0x1, %r8d
callq 0xbbfc
movl (%r14), %eax
movl 0x4(%r14), %ecx
imulq %rax, %rcx
movl 0x8(%r14), %eax
movl 0xc(%r14), %ebx
imulq %rax, %rbx
imulq %rcx, %rbx
testq %rbx, %rbx
je 0x47e05
movq 0x40(%rsp), %rax
movq 0x18(%rax), %r14
leaq 0x482f3(%rip), %r15     # 0x8fc93
leaq 0x48(%rsp), %r12
xorl %r13d, %r13d
movq 0x10(%rsp), %rdi
movq %r15, %rsi
movq %r12, %rdx
xorl %eax, %eax
callq 0x49f0
testl %eax, %eax
jle 0x47e05
xorps %xmm0, %xmm0
cvtsi2sdl 0x48(%rsp), %xmm0
movsd %xmm0, (%r14,%r13,8)
incq %r13
cmpq %r13, %rbx
jne 0x479a8
jmp 0x47e05
cmpl $0xff, 0x4c(%rsp)
ja 0x47ca6
movq $0x0, 0x38(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x20(%rsp)
movb $0x0, 0x30(%rsp)
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movq %r14, %rdi
movl $0x1, %ecx
movl $0x3, %r8d
callq 0xbbfc
movl (%r14), %eax
movl 0x4(%r14), %ecx
imulq %rax, %rcx
movl 0x8(%r14), %eax
imulq %rcx, %rax
movl 0xc(%r14), %r15d
imulq %rax, %r15
testq %r15, %r15
jle 0x47b94
movq 0x18(%r14), %r14
movq %rax, %r12
shlq $0x4, %r12
addq %r14, %r12
leaq (%r14,%rax,8), %rbx
movl $0xc00000, %eax         # imm = 0xC00000
cmpq %rax, %r15
movl $0xc00000, %esi         # imm = 0xC00000
cmovbq %r15, %rsi
leaq 0x20(%rsp), %rdi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x104de
movq %r14, 0x58(%rsp)
movq %r15, 0x50(%rsp)
movq 0x38(%rsp), %r15
movl 0x20(%rsp), %r14d
cmpq $0x0, 0x10(%rsp)
je 0x47f62
testq %r15, %r15
je 0x47f62
testl %r14d, %r14d
je 0x47f62
movq %r14, 0x70(%rsp)
xorl %ebp, %ebp
movl $0x3f00000, %eax        # imm = 0x3F00000
cmpq %rax, %r14
movl $0x3f00000, %r13d       # imm = 0x3F00000
cmovbq %r14, %r13
leaq (%r15,%rbp), %rdi
movl $0x1, %esi
movq %r13, %rdx
movq 0x10(%rsp), %rcx
callq 0x47d0
addq %rax, %rbp
subq %rax, %r14
cmpq %rax, %r13
jne 0x47af1
testq %r14, %r14
jne 0x47ab9
testq %r14, %r14
movq 0x50(%rsp), %r15
movq 0x58(%rsp), %r14
je 0x47b16
leaq 0x47db3(%rip), %rdi     # 0x8f8ba
movq %rbp, %rsi
movq 0x70(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movl 0x20(%rsp), %eax
cmpq $0x3, %rax
jb 0x47b88
movl %eax, %ecx
movl $0xaaaaaaab, %edx       # imm = 0xAAAAAAAB
imulq %rdx, %rcx
shrq $0x21, %rcx
movq 0x38(%rsp), %rsi
xorl %edx, %edx
xorl %edi, %edi
movzbl (%rsi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%r14,%rdi,8)
movzbl 0x1(%rsi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rbx,%rdi,8)
movzbl 0x2(%rsi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%r12,%rdi,8)
incq %rdi
addq $-0x8, %rdx
addq $0x3, %rsi
cmpq %rdi, %rcx
jne 0x47b38
subq %rdx, %r12
subq %rdx, %rbx
subq %rdx, %r14
subq %rax, %r15
testq %r15, %r15
jg 0x47a55
cmpb $0x0, 0x30(%rsp)
jne 0x47e05
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x47e05
jmp 0x47e00
movq $0x0, 0x38(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movb $0x0, 0x30(%rsp)
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movl 0x1c(%rsp), %ecx
movq %r14, %rdi
movl $0x1, %r8d
callq 0xbbfc
movl (%r14), %eax
movl 0x4(%r14), %ecx
imulq %rax, %rcx
movl 0x8(%r14), %eax
movl 0xc(%r14), %ebx
imulq %rax, %rbx
imulq %rcx, %rbx
testq %rbx, %rbx
jle 0x47c88
movq 0x40(%rsp), %rax
movq 0x18(%rax), %r14
movl $0xc00000, %r12d        # imm = 0xC00000
leaq 0x20(%rsp), %r15
cmpq %r12, %rbx
movl $0xc00000, %esi         # imm = 0xC00000
cmovbq %rbx, %rsi
movq %r15, %rdi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x48866
movq 0x38(%rsp), %rdi
movl 0x20(%rsp), %esi
movq 0x10(%rsp), %rdx
callq 0x48aee
movl 0x20(%rsp), %eax
testq %rax, %rax
je 0x47c80
movq 0x38(%rsp), %rdx
xorl %ecx, %ecx
xorl %esi, %esi
xorps %xmm0, %xmm0
cvtss2sd (%rdx,%rsi,4), %xmm0
movsd %xmm0, (%r14,%rsi,8)
incq %rsi
addq $-0x8, %rcx
cmpq %rsi, %rax
jne 0x47c63
subq %rcx, %r14
subq %rax, %rbx
testq %rbx, %rbx
jg 0x47c1a
cmpb $0x0, 0x30(%rsp)
jne 0x47e05
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x47e05
jmp 0x47e00
movq $0x0, 0x38(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x20(%rsp)
movb $0x0, 0x30(%rsp)
movl 0xc(%rsp), %esi
movl 0x8(%rsp), %edx
movq %r14, %rdi
movl $0x1, %ecx
movl $0x3, %r8d
callq 0xbbfc
movl (%r14), %eax
movl 0x4(%r14), %ecx
imulq %rax, %rcx
movl 0x8(%r14), %eax
imulq %rcx, %rax
movl 0xc(%r14), %ecx
imull %eax, %ecx
movslq %ecx, %rbx
testq %rbx, %rbx
jle 0x47def
movq 0x40(%rsp), %rcx
movq 0x18(%rcx), %r14
movq %rax, %r15
shlq $0x4, %r15
addq %r14, %r15
leaq (%r14,%rax,8), %r13
movl $0x600000, %ebp         # imm = 0x600000
leaq 0x20(%rsp), %r12
cmpq %rbp, %rbx
movl $0x600000, %esi         # imm = 0x600000
cmovbq %rbx, %rsi
movq %r12, %rdi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x484e4
movq 0x38(%rsp), %rdi
movl 0x20(%rsp), %esi
movq 0x10(%rsp), %rdx
callq 0x48767
movl 0x20(%rsp), %eax
testq %rax, %rax
je 0x47de6
movq 0x38(%rsp), %rcx
leaq (%rcx,%rax,2), %rdx
rolw $0x8, -0x2(%rdx)
addq $-0x2, %rdx
cmpq %rcx, %rdx
ja 0x47d6d
cmpl $0x3, %eax
jb 0x47de6
movq %rax, %rsi
movl $0xaaaaaaab, %edx       # imm = 0xAAAAAAAB
imulq %rdx, %rsi
shrq $0x21, %rsi
xorl %edx, %edx
xorl %edi, %edi
movzwl (%rcx), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%r14,%rdi,8)
movzwl 0x2(%rcx), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%r13,%rdi,8)
movzwl 0x4(%rcx), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%r15,%rdi,8)
incq %rdi
addq $-0x8, %rdx
addq $0x6, %rcx
cmpq %rdi, %rsi
jne 0x47d94
subq %rdx, %r15
subq %rdx, %r13
subq %rdx, %r14
subq %rax, %rbx
jg 0x47d20
cmpb $0x0, 0x30(%rsp)
jne 0x47e05
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x47e05
callq 0x4690
cmpq $0x0, 0x68(%rsp)
movq 0x40(%rsp), %rbx
je 0x47e43
cmpb $0x0, 0x90(%rsp)
jne 0x47e2e
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x47e2e
callq 0x4690
movq %rbx, %rax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x10(%rsp), %rcx
testq %rcx, %rcx
je 0x47e8a
movq 0x60154(%rip), %rax     # 0xa7fa8
cmpq %rcx, (%rax)
je 0x47e12
movq 0x60128(%rip), %rax     # 0xa7f88
movq 0x10(%rsp), %rcx
cmpq %rcx, (%rax)
je 0x47e12
movq 0x10(%rsp), %rdi
callq 0x4550
testl %eax, %eax
je 0x47e12
leaq 0x4717d(%rip), %rdi     # 0x8effc
movl %eax, %esi
xorl %eax, %eax
callq 0xbb10
jmp 0x47e12
leaq 0x47141(%rip), %rdi     # 0x8efd2
xorl %eax, %eax
callq 0xbb10
jmp 0x47e12
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r12
cmpl $0x2, %r15d
leaq 0x48a7d(%rip), %rax     # 0x90932
leaq 0x269ac(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
subq $0x8, %rsp
leaq 0x479a2(%rip), %rsi     # 0x8f86d
leaq 0x32935(%rip), %rcx     # 0x7a807
movq %r12, %rdi
movq %r15, %rdx
movq 0x18(%rsp), %r9
xorl %eax, %eax
pushq %rbx
callq 0xc16a
addq $0x10, %rsp
leaq 0x5fd60(%rip), %rsi     # 0xa7c50
movq 0x600d9(%rip), %rdx     # 0xa7fd0
movq %r12, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, %r15d
leaq 0x48a1b(%rip), %rax     # 0x90932
leaq 0x2694a(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
subq $0x8, %rsp
leaq 0x47940(%rip), %rsi     # 0x8f86d
leaq 0x328d3(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq %r15, %rdx
movq 0x18(%rsp), %r9
xorl %eax, %eax
pushq %r12
callq 0xc16a
addq $0x10, %rsp
leaq 0x5fcfd(%rip), %rsi     # 0xa7c50
movq 0x60076(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r12
cmpl $0x2, %r14d
leaq 0x489b8(%rip), %rax     # 0x90932
leaq 0x268e7(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
subq $0x8, %rsp
leaq 0x478dd(%rip), %rsi     # 0x8f86d
leaq 0x32870(%rip), %rcx     # 0x7a807
movq %r12, %rdi
movq %r14, %rdx
movq 0x18(%rsp), %r9
xorl %eax, %eax
pushq %r15
callq 0xc16a
addq $0x10, %rsp
leaq 0x5fc9a(%rip), %rsi     # 0xa7c50
movq 0x60013(%rip), %rdx     # 0xa7fd0
movq %r12, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %r14, %rbx
movq %rax, %r14
movl (%rbx), %edx
movl 0x4(%rbx), %ecx
movl 0x8(%rbx), %r8d
movl 0xc(%rbx), %r9d
leaq 0x2687f(%rip), %rax     # 0x6e868
leaq 0x27c52(%rip), %r10     # 0x6fc42
cmpb $0x0, 0x10(%rbx)
cmovneq %rax, %r10
subq $0x8, %rsp
leaq 0x4711c(%rip), %r11     # 0x8f11f
leaq 0x47ae2(%rip), %rsi     # 0x8faec
movq %r14, %rdi
xorl %eax, %eax
pushq %r11
pushq %r10
pushq 0x18(%rbx)
callq 0xc16a
addq $0x20, %rsp
leaq 0x5fc2a(%rip), %rsi     # 0xa7c50
movq 0x5ffa3(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
cmpq $0x0, 0x68(%rsp)
jne 0x48047
movq 0x10(%rsp), %rdi
callq 0x367a9
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %r14, %r15
movq %rax, %r14
leaq 0x2680a(%rip), %rax     # 0x6e868
leaq 0x27bdd(%rip), %r10     # 0x6fc42
cmpb $0x0, 0x10(%r15)
cmovneq %rax, %r10
testq %r12, %r12
movl (%r15), %edx
movl 0x4(%r15), %ecx
movl 0x8(%r15), %r8d
movl 0xc(%r15), %r9d
leaq 0x4758a(%rip), %r11     # 0x8f611
cmovneq %r12, %r11
leaq 0x4708d(%rip), %rbx     # 0x8f11f
leaq 0x47ab0(%rip), %rsi     # 0x8fb49
movq %r14, %rdi
xorl %eax, %eax
pushq %r11
pushq %rbx
pushq %r10
pushq 0x18(%r15)
callq 0x36908
addq $0x20, %rsp
jmp 0x4812d
cmpq $0x0, 0x68(%rsp)
jne 0x480c4
movq 0x10(%rsp), %rdi
callq 0x367a9
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %r14, %r15
movq %rax, %r14
leaq 0x2678d(%rip), %rax     # 0x6e868
leaq 0x27b60(%rip), %r10     # 0x6fc42
cmpb $0x0, 0x10(%r15)
cmovneq %rax, %r10
testq %r12, %r12
movl (%r15), %edx
movl 0x4(%r15), %ecx
movl 0x8(%r15), %r8d
movl 0xc(%r15), %r9d
leaq 0x4750d(%rip), %r11     # 0x8f611
cmovneq %r12, %r11
leaq 0x47010(%rip), %rbx     # 0x8f11f
leaq 0x47aa9(%rip), %rsi     # 0x8fbbf
movq %r14, %rdi
xorl %eax, %eax
pushq %r11
pushq %rbx
pushq %r10
pushq 0x18(%r15)
callq 0x36908
addq $0x20, %rsp
leaq 0x5fbbc(%rip), %rsi     # 0xa7cf0
movq 0x5fe95(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
cmpb $0x0, 0x10(%r14)
jne 0x4815d
movq 0x40(%rsp), %rax
movq 0x18(%rax), %rdi
testq %rdi, %rdi
je 0x4815d
callq 0x4690
movq 0x40(%rsp), %r13
movq $0x0, 0x18(%r13)
xorpd %xmm0, %xmm0
movupd %xmm0, (%r13)
movb $0x0, 0x10(%r13)
cmpq $0x0, 0x68(%rsp)
jne 0x4818b
movq 0x10(%rsp), %rdi
callq 0x367a9
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
leaq 0x266c9(%rip), %rax     # 0x6e868
cmpb $0x0, 0x10(%r13)
leaq 0x27a97(%rip), %r10     # 0x6fc42
cmovneq %rax, %r10
testq %r12, %r12
movl (%r13), %edx
movl 0x4(%r13), %ecx
movl 0x8(%r13), %r8d
movl 0xc(%r13), %r9d
leaq 0x47448(%rip), %r11     # 0x8f611
cmovneq %r12, %r11
movl 0x64(%rsp), %ebx
subq $0x8, %rsp
leaq 0x46f43(%rip), %r15     # 0x8f11f
leaq 0x47ab3(%rip), %rsi     # 0x8fc96
movq %r14, %rdi
xorl %eax, %eax
pushq %rbx
pushq %r11
pushq %r15
pushq %r10
pushq 0x18(%r13)
callq 0x36908
addq $0x30, %rsp
jmp 0x4812d
jmp 0x48225
jmp 0x4827d
jmp 0x482a8
jmp 0x4830e
jmp 0x482e2
jmp 0x48324
jmp 0x482ca
jmp 0x482f8
jmp 0x48225
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
jmp 0x48346
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
jmp 0x48362
jmp 0x482a8
movq %rax, %rbx
movq %r12, %rdi
callq 0x43c0
jmp 0x482ab
jmp 0x482e2
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
jmp 0x482e5
jmp 0x482f8
movq %rax, %rbx
movq %r12, %rdi
callq 0x43c0
jmp 0x482fb
jmp 0x4827d
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x48346
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x48346
jmp 0x48338
jmp 0x48343
jmp 0x48343
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x48346
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x48346
jmp 0x48338
jmp 0x48343
jmp 0x482ca
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x48346
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x48346
jmp 0x48338
jmp 0x48343
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x48346
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x48346
jmp 0x48338
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x48346
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x48346
jmp 0x48338
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x48346
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x48346
jmp 0x48338
movq %rax, %rbx
cmpb $0x0, 0x30(%rsp)
jne 0x48346
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x48346
callq 0x4690
jmp 0x48346
jmp 0x48343
jmp 0x48343
movq %rax, %rbx
cmpb $0x0, 0x90(%rsp)
jne 0x48362
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x48362
callq 0x4690
movq %rbx, %rdi
callq 0x4960