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

      std::FILE *const nfile = file?file:cimg::fopen(filename,"rb");
      unsigned char header[64] = { 0 };
      cimg::fread(header,54,nfile);
      if (*header!='B' || header[1]!='M') {
        if (!file) cimg::fclose(nfile);
        throw CImgIOException(_cimg_instance
                              "load_bmp(): Invalid BMP file '%s'.",
                              cimg_instance,
                              filename?filename:"(FILE*)");
      }

      // Read header and pixel buffer
      int
        file_size = header[0x02] + (header[0x03]<<8) + (header[0x04]<<16) + (header[0x05]<<24),
        offset = header[0x0A] + (header[0x0B]<<8) + (header[0x0C]<<16) + (header[0x0D]<<24),
        header_size = header[0x0E] + (header[0x0F]<<8) + (header[0x10]<<16) + (header[0x11]<<24),
        dx = header[0x12] + (header[0x13]<<8) + (header[0x14]<<16) + (header[0x15]<<24),
        dy = header[0x16] + (header[0x17]<<8) + (header[0x18]<<16) + (header[0x19]<<24),
        compression = header[0x1E] + (header[0x1F]<<8) + (header[0x20]<<16) + (header[0x21]<<24),
        nb_colors = header[0x2E] + (header[0x2F]<<8) + (header[0x30]<<16) + (header[0x31]<<24),
        bpp = header[0x1C] + (header[0x1D]<<8);

      if (!file_size || file_size==offset) {
        std::fseek(nfile,0,SEEK_END);
        file_size = (int)std::ftell(nfile);
        std::fseek(nfile,54,SEEK_SET);
      }
      if (header_size>40) std::fseek(nfile, header_size - 40, SEEK_CUR);

      const int
        cimg_iobuffer = 12*1024*1024,
        dx_bytes = (bpp==1)?(dx/8+(dx%8?1:0)):((bpp==4)?(dx/2+(dx%2?1:0)):(dx*bpp/8)),
        align_bytes = (4-dx_bytes%4)%4,
        buf_size = cimg::min(cimg::abs(dy)*(dx_bytes + align_bytes),file_size - offset);

      CImg<intT> colormap;
      if (bpp<16) { if (!nb_colors) nb_colors = 1<<bpp; } else nb_colors = 0;
      if (nb_colors) { colormap.assign(nb_colors); cimg::fread(colormap._data,nb_colors,nfile); }
      const int xoffset = offset - 14 - header_size - 4*nb_colors;
      if (xoffset>0) std::fseek(nfile,xoffset,SEEK_CUR);

      CImg<ucharT> buffer;
      if (buf_size<cimg_iobuffer) { buffer.assign(buf_size); cimg::fread(buffer._data,buf_size,nfile); }
      else buffer.assign(dx_bytes + align_bytes);
      unsigned char *ptrs = buffer;

      // Decompress buffer (if necessary)
      if (compression) {
        if (file)
          throw CImgIOException(_cimg_instance
                                "load_bmp(): Unable to load compressed data from '(*FILE)' inputs.",
                                cimg_instance);
        else {
          if (!file) cimg::fclose(nfile);
          return load_other(filename);
        }
      }

      // Read pixel data
      assign(dx,cimg::abs(dy),1,3);
      switch (bpp) {
      case 1 : { // Monochrome
        for (int y = height()-1; y>=0; --y) {
          if (buf_size>=cimg_iobuffer) {
            cimg::fread(ptrs=buffer._data,dx_bytes,nfile);
            std::fseek(nfile,align_bytes,SEEK_CUR);
          }
          unsigned char mask = 0x80, val = 0;
          cimg_forX(*this,x) {
            if (mask==0x80) val = *(ptrs++);
            const unsigned char *col = (unsigned char*)(colormap._data + (val&mask?1:0));
            (*this)(x,y,2) = (T)*(col++);
            (*this)(x,y,1) = (T)*(col++);
            (*this)(x,y,0) = (T)*(col++);
            mask = cimg::ror(mask);
          }
          ptrs+=align_bytes;
        }
      } break;
      case 4 : { // 16 colors
        for (int y = height()-1; y>=0; --y) {
          if (buf_size>=cimg_iobuffer) {
            cimg::fread(ptrs=buffer._data,dx_bytes,nfile);
            std::fseek(nfile,align_bytes,SEEK_CUR);
          }
          unsigned char mask = 0xF0, val = 0;
          cimg_forX(*this,x) {
            if (mask==0xF0) val = *(ptrs++);
            const unsigned char color = (unsigned char)((mask<16)?(val&mask):((val&mask)>>4));
            const unsigned char *col = (unsigned char*)(colormap._data + color);
            (*this)(x,y,2) = (T)*(col++);
            (*this)(x,y,1) = (T)*(col++);
            (*this)(x,y,0) = (T)*(col++);
            mask = cimg::ror(mask,4);
          }
          ptrs+=align_bytes;
        }
      } break;
      case 8 : { //  256 colors
        for (int y = height()-1; y>=0; --y) {
          if (buf_size>=cimg_iobuffer) {
            cimg::fread(ptrs=buffer._data,dx_bytes,nfile);
            std::fseek(nfile,align_bytes,SEEK_CUR);
          }
          cimg_forX(*this,x) {
            const unsigned char *col = (unsigned char*)(colormap._data + *(ptrs++));
            (*this)(x,y,2) = (T)*(col++);
            (*this)(x,y,1) = (T)*(col++);
            (*this)(x,y,0) = (T)*(col++);
          }
          ptrs+=align_bytes;
        }
      } break;
      case 16 : { // 16 bits colors
        for (int y = height()-1; y>=0; --y) {
          if (buf_size>=cimg_iobuffer) {
            cimg::fread(ptrs=buffer._data,dx_bytes,nfile);
            std::fseek(nfile,align_bytes,SEEK_CUR);
          }
          cimg_forX(*this,x) {
            const unsigned char c1 = *(ptrs++), c2 = *(ptrs++);
            const unsigned short col = (unsigned short)(c1|(c2<<8));
            (*this)(x,y,2) = (T)(col&0x1F);
            (*this)(x,y,1) = (T)((col>>5)&0x1F);
            (*this)(x,y,0) = (T)((col>>10)&0x1F);
          }
          ptrs+=align_bytes;
        }
      } break;
      case 24 : { // 24 bits colors
        for (int y = height()-1; y>=0; --y) {
          if (buf_size>=cimg_iobuffer) {
            cimg::fread(ptrs=buffer._data,dx_bytes,nfile);
            std::fseek(nfile,align_bytes,SEEK_CUR);
          }
          cimg_forX(*this,x) {
            (*this)(x,y,2) = (T)*(ptrs++);
            (*this)(x,y,1) = (T)*(ptrs++);
            (*this)(x,y,0) = (T)*(ptrs++);
          }
          ptrs+=align_bytes;
        }
      } break;
      case 32 : { // 32 bits colors
        for (int y = height()-1; y>=0; --y) {
          if (buf_size>=cimg_iobuffer) {
            cimg::fread(ptrs=buffer._data,dx_bytes,nfile);
            std::fseek(nfile,align_bytes,SEEK_CUR);
          }
          cimg_forX(*this,x) {
            (*this)(x,y,2) = (T)*(ptrs++);
            (*this)(x,y,1) = (T)*(ptrs++);
            (*this)(x,y,0) = (T)*(ptrs++);
            ++ptrs;
          }
          ptrs+=align_bytes;
        }
      } break;
      }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdi, %r15
movq %rsi, %rax
orq %rdx, %rax
je 0x47ed7
movq %rdx, %r12
movq %rsi, %r14
movq %rsi, %rbx
testq %rsi, %rsi
jne 0x46f96
leaq 0x4ce2a(%rip), %rsi     # 0x93db5
movq %r12, %rdi
callq 0x3ceb3
movq %rax, %rbx
movq %r12, 0xc8(%rsp)
movq %r14, 0x90(%rsp)
movq %r15, 0x50(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x100(%rsp)
movapd %xmm0, 0xf0(%rsp)
movapd %xmm0, 0xe0(%rsp)
movapd %xmm0, 0xd0(%rsp)
testq %rbx, %rbx
je 0x47f36
movl $0x36, %r12d
xorl %r14d, %r14d
movl $0x3f00000, %r13d       # imm = 0x3F00000
cmpq %r13, %r12
movl $0x3f00000, %r15d       # imm = 0x3F00000
cmovbq %r12, %r15
leaq 0xd0(%rsp,%r14), %rdi
movl $0x1, %esi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x47c0
addq %rax, %r14
subq %rax, %r12
cmpq %rax, %r15
jne 0x47020
testq %r12, %r12
jne 0x46feb
testq %r12, %r12
je 0x4703b
leaq 0x4d35e(%rip), %rdi     # 0x9438a
movl $0x36, %edx
movq %r14, %rsi
xorl %eax, %eax
callq 0xbb52
cmpb $0x42, 0xd0(%rsp)
jne 0x47f82
cmpb $0x4d, 0xd1(%rsp)
jne 0x47f82
movl 0xd2(%rsp), %r13d
movl 0xda(%rsp), %ebp
movl 0xde(%rsp), %eax
movq %rax, 0x38(%rsp)
movzbl 0xe2(%rsp), %eax
movl %eax, 0x58(%rsp)
movzbl 0xe3(%rsp), %eax
shll $0x8, %eax
movzbl 0xe4(%rsp), %ecx
shll $0x10, %ecx
orl %eax, %ecx
movq %rcx, 0x30(%rsp)
movzbl 0xe5(%rsp), %r12d
shll $0x18, %r12d
movzwl 0xe6(%rsp), %r14d
movzbl 0xe8(%rsp), %r15d
shll $0x10, %r15d
movzbl 0xe9(%rsp), %eax
movl %eax, 0x64(%rsp)
movl 0xee(%rsp), %eax
movl %eax, 0x9c(%rsp)
movl 0xfe(%rsp), %eax
movl %eax, 0x40(%rsp)
movzwl 0xec(%rsp), %eax
testl %r13d, %r13d
movl %eax, 0x28(%rsp)
je 0x470f9
cmpl %ebp, %r13d
jne 0x47126
movq %rbx, %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x4580
movq %rbx, %rdi
callq 0x4030
movq %rax, %r13
movl $0x36, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x4580
movl 0x28(%rsp), %eax
movq 0x30(%rsp), %rcx
orl %r12d, %ecx
movq %rcx, 0x30(%rsp)
orl %r15d, %r14d
movl 0x64(%rsp), %r15d
shll $0x18, %r15d
cmpl $0x29, 0x38(%rsp)
jl 0x4715f
movq 0x38(%rsp), %rax
leal -0x28(%rax), %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x4580
movl 0x28(%rsp), %eax
movq 0x30(%rsp), %rcx
movl 0x58(%rsp), %edx
orl %edx, %ecx
movq %rcx, 0x30(%rsp)
movl %r15d, 0x64(%rsp)
orl %r15d, %r14d
cmpl $0x4, %eax
movq %r13, %r15
je 0x4719f
cmpl $0x1, %eax
jne 0x471b6
movq 0x30(%rsp), %rcx
leal 0x7(%rcx), %eax
testl %ecx, %ecx
cmovnsl %ecx, %eax
sarl $0x3, %eax
andl $0x7, %edx
cmpl $0x1, %edx
sbbl $-0x1, %eax
jmp 0x471c9
movq 0x30(%rsp), %rcx
movl %ecx, %eax
shrl $0x1f, %eax
addl %ecx, %eax
sarl %eax
andl $0x1, %edx
addl %eax, %edx
movl %edx, %eax
jmp 0x471c9
imull 0x30(%rsp), %eax
leal 0x7(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
movq %rcx, %rax
sarl $0x3, %eax
movq 0x50(%rsp), %r13
movl %eax, %ecx
negl %ecx
andl $0x3, %ecx
movl %r14d, %edx
negl %edx
cmovsl %r14d, %edx
movq %rax, 0x48(%rsp)
movq %rcx, 0x68(%rsp)
leal (%rcx,%rax), %r14d
movl %r14d, %eax
movl %edx, 0x98(%rsp)
imull %edx, %eax
subl %ebp, %r15d
cmpl %r15d, %eax
cmovll %eax, %r15d
movq $0x0, 0xb8(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xa0(%rsp)
movl $0x1, %eax
movl 0x28(%rsp), %ecx
shll %cl, %eax
movb $0x0, 0xb0(%rsp)
movl 0x40(%rsp), %edx
testl %edx, %edx
cmovnel %edx, %eax
xorl %r12d, %r12d
cmpl $0x10, %ecx
cmovbl %eax, %r12d
jae 0x47277
leaq 0xa0(%rsp), %rdi
movl %r12d, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x484c0
movq 0xb8(%rsp), %rdi
movslq %r12d, %rsi
movq %rbx, %rdx
callq 0x48733
movq 0x38(%rsp), %rax
leal (%rax,%r12,4), %eax
subl %eax, %ebp
addl $-0xe, %ebp
testl %ebp, %ebp
jle 0x47298
movl %ebp, %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x4580
movq $0x0, 0x88(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x70(%rsp)
movb $0x0, 0x80(%rsp)
cmpl $0xbfffff, %r15d        # imm = 0xBFFFFF
jg 0x47372
leaq 0x70(%rsp), %rdi
movl %r15d, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x10470
movq 0x88(%rsp), %rbp
movslq %r15d, %r13
testq %rbx, %rbx
je 0x482cf
testl %r15d, %r15d
je 0x482cf
testq %rbp, %rbp
je 0x482cf
movq %r15, 0x58(%rsp)
xorl %r12d, %r12d
movl $0x3f00000, %r15d       # imm = 0x3F00000
movq %r13, 0x38(%rsp)
cmpq %r15, %r13
movl $0x3f00000, %r14d       # imm = 0x3F00000
cmovbq %r13, %r14
leaq (%rbp,%r12), %rdi
movl $0x1, %esi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x47c0
addq %rax, %r12
subq %rax, %r13
cmpq %rax, %r14
jne 0x4734b
testq %r13, %r13
jne 0x47319
testq %r13, %r13
movq 0x50(%rsp), %r13
movq 0x58(%rsp), %r15
je 0x4738f
leaq 0x4d029(%rip), %rdi     # 0x9438a
movq %r12, %rsi
movq 0x38(%rsp), %rdx
xorl %eax, %eax
callq 0xbb52
jmp 0x4738f
leaq 0x70(%rsp), %rdi
movl %r14d, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x10470
cmpl $0x0, 0x9c(%rsp)
je 0x473f6
cmpq $0x0, 0x90(%rsp)
jne 0x48025
testq %rbx, %rbx
je 0x475db
movq 0x65bf0(%rip), %rax     # 0xacfa8
cmpq %rbx, (%rax)
je 0x475e9
movq 0x65bc0(%rip), %rax     # 0xacf88
cmpq %rbx, (%rax)
je 0x475e9
movq %rbx, %rdi
callq 0x4540
testl %eax, %eax
je 0x475e9
leaq 0x4c6e4(%rip), %rdi     # 0x93acc
movl %eax, %esi
xorl %eax, %eax
callq 0xbb52
jmp 0x475e9
movq 0x88(%rsp), %rbp
movq %r13, %rdi
movq 0x30(%rsp), %rsi
movl 0x98(%rsp), %edx
movl $0x1, %ecx
movl $0x3, %r8d
callq 0xbc3e
movl 0x28(%rsp), %eax
cmpl $0xf, %eax
movq %r15, 0x58(%rsp)
jg 0x47601
cmpl $0x1, %eax
je 0x4779d
cmpl $0x4, %eax
je 0x47ae7
cmpl $0x8, %eax
jne 0x47e1a
movslq 0x4(%r13), %r11
testq %r11, %r11
jle 0x47e1a
movslq 0x48(%rsp), %rax
movq %rax, 0x28(%rsp)
movl 0x68(%rsp), %r14d
leaq -0x8(,%r11,8), %r12
movl $0x3f00000, %r15d       # imm = 0x3F00000
movq %r14, 0x40(%rsp)
cmpl $0xc00000, 0x58(%rsp)   # imm = 0xC00000
jl 0x4752f
movq %r12, 0x38(%rsp)
movq %r11, 0x30(%rsp)
movq 0x88(%rsp), %rbp
testq %rbx, %rbx
je 0x48157
cmpl $0x0, 0x48(%rsp)
je 0x48157
testq %rbp, %rbp
je 0x48157
movq 0x28(%rsp), %r13
xorl %r14d, %r14d
cmpq %r15, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47c0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x474f0
testq %r13, %r13
jne 0x474be
testq %r13, %r13
je 0x4750b
leaq 0x4ce8e(%rip), %rdi     # 0x9438a
movq %r14, %rsi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0xbb52
movq %rbx, %rdi
movq 0x40(%rsp), %r14
movq %r14, %rsi
movl $0x1, %edx
callq 0x4580
movq 0x50(%rsp), %r13
movq 0x30(%rsp), %r11
movq 0x38(%rsp), %r12
movslq (%r13), %rax
testq %rax, %rax
jle 0x475be
movq 0xb8(%rsp), %rcx
movq 0x18(%r13), %r8
movl 0x4(%r13), %edx
movq %r12, %rsi
imulq %rax, %rsi
addq %r8, %rsi
leaq (%r12,%rdx,8), %rdi
imulq %rax, %rdi
addq %r8, %rdi
shlq $0x4, %rdx
addq %r12, %rdx
imulq %rax, %rdx
addq %r8, %rdx
xorl %r8d, %r8d
movzbl (%rbp,%r8), %r9d
movzbl (%rcx,%r9,4), %r10d
xorps %xmm0, %xmm0
cvtsi2sd %r10d, %xmm0
movsd %xmm0, (%rdx,%r8,8)
movzbl 0x1(%rcx,%r9,4), %r10d
xorps %xmm0, %xmm0
cvtsi2sd %r10d, %xmm0
movsd %xmm0, (%rdi,%r8,8)
movzbl 0x2(%rcx,%r9,4), %r9d
xorps %xmm0, %xmm0
cvtsi2sd %r9d, %xmm0
movsd %xmm0, (%rsi,%r8,8)
incq %r8
cmpq %r8, %rax
jne 0x47572
addq %r8, %rbp
leaq -0x1(%r11), %rax
addq %r14, %rbp
addq $-0x8, %r12
cmpq $0x1, %r11
movq %rax, %r11
jg 0x47479
jmp 0x47e1a
leaq 0x4c4c0(%rip), %rdi     # 0x93aa2
xorl %eax, %eax
callq 0xbb52
movq %r13, %rdi
movq 0xc8(%rsp), %rsi
callq 0x3d31a
movq %rax, %r13
jmp 0x47e39
cmpl $0x10, %eax
je 0x47948
cmpl $0x18, %eax
je 0x47ca5
cmpl $0x20, %eax
jne 0x47e1a
movslq 0x4(%r13), %r9
testq %r9, %r9
jle 0x47e1a
movslq 0x48(%rsp), %rax
movq %rax, 0x28(%rsp)
movl 0x68(%rsp), %r14d
leaq -0x8(,%r9,8), %r10
movl $0x3f00000, %r15d       # imm = 0x3F00000
movq %r14, 0x40(%rsp)
cmpl $0xc00000, 0x58(%rsp)   # imm = 0xC00000
jl 0x47701
movq %r10, 0x38(%rsp)
movq %r9, 0x30(%rsp)
movq 0x88(%rsp), %rbp
testq %rbx, %rbx
je 0x481b5
cmpl $0x0, 0x48(%rsp)
je 0x481b5
testq %rbp, %rbp
je 0x481b5
movq 0x28(%rsp), %r13
xorl %r14d, %r14d
cmpq %r15, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47c0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x476c2
testq %r13, %r13
jne 0x47690
testq %r13, %r13
je 0x476dd
leaq 0x4ccbc(%rip), %rdi     # 0x9438a
movq %r14, %rsi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0xbb52
movq %rbx, %rdi
movq 0x40(%rsp), %r14
movq %r14, %rsi
movl $0x1, %edx
callq 0x4580
movq 0x50(%rsp), %r13
movq 0x30(%rsp), %r9
movq 0x38(%rsp), %r10
movslq (%r13), %rax
testq %rax, %rax
jle 0x47780
movq 0x18(%r13), %rdi
movl 0x4(%r13), %ecx
movq %r10, %rdx
imulq %rax, %rdx
addq %rdi, %rdx
leaq (%r10,%rcx,8), %rsi
imulq %rax, %rsi
addq %rdi, %rsi
shlq $0x4, %rcx
addq %r10, %rcx
imulq %rax, %rcx
addq %rdi, %rcx
shlq $0x2, %rax
xorl %edi, %edi
movzbl (%rbp,%rdi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rcx,%rdi,2)
movzbl 0x1(%rbp,%rdi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rsi,%rdi,2)
movzbl 0x2(%rbp,%rdi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rdx,%rdi,2)
addq $0x4, %rdi
cmpq %rdi, %rax
jne 0x4773b
addq %rdi, %rbp
leaq -0x1(%r9), %rax
addq %r14, %rbp
addq $-0x8, %r10
cmpq $0x1, %r9
movq %rax, %r9
jg 0x4764b
jmp 0x47e1a
movslq 0x4(%r13), %r12
testq %r12, %r12
jle 0x47e1a
movslq 0x48(%rsp), %rax
movq %rax, 0x40(%rsp)
movl 0x68(%rsp), %eax
movq %rax, 0x38(%rsp)
leaq -0x8(,%r12,8), %rax
movq %rax, 0x30(%rsp)
movl $0x3f00000, %r15d       # imm = 0x3F00000
cmpl $0xc00000, 0x58(%rsp)   # imm = 0xC00000
jl 0x47879
movq %r12, 0x28(%rsp)
movq 0x88(%rsp), %rbp
testq %rbx, %rbx
je 0x48099
cmpl $0x0, 0x48(%rsp)
je 0x48099
testq %rbp, %rbp
je 0x48099
movq 0x40(%rsp), %r13
xorl %r14d, %r14d
cmpq %r15, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47c0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x47842
testq %r13, %r13
jne 0x47810
testq %r13, %r13
je 0x4785d
leaq 0x4cb3c(%rip), %rdi     # 0x9438a
movq %r14, %rsi
movq 0x40(%rsp), %rdx
xorl %eax, %eax
callq 0xbb52
movq %rbx, %rdi
movq 0x38(%rsp), %rsi
movl $0x1, %edx
callq 0x4580
movq 0x50(%rsp), %r13
movq 0x28(%rsp), %r12
movslq (%r13), %rax
testq %rax, %rax
jle 0x47926
movq 0xb8(%rsp), %rcx
movq 0x18(%r13), %r8
movl 0x4(%r13), %edx
movq 0x30(%rsp), %r9
movq %r9, %rsi
imulq %rax, %rsi
addq %r8, %rsi
leaq (%r9,%rdx,8), %rdi
imulq %rax, %rdi
addq %r8, %rdi
shlq $0x4, %rdx
addq %r9, %rdx
imulq %rax, %rdx
addq %r8, %rdx
movb $-0x80, %r8b
xorl %r9d, %r9d
xorl %r10d, %r10d
movl %r8d, %r11d
negb %r11b
jno 0x478d6
movb (%rbp), %r10b
incq %rbp
xorl %r11d, %r11d
testb %r8b, %r10b
setne %r11b
movzbl (%rcx,%r11,4), %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rdx,%r9,8)
movzbl 0x1(%rcx,%r11,4), %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rdi,%r9,8)
movzbl 0x2(%rcx,%r11,4), %r11d
xorps %xmm0, %xmm0
cvtsi2sd %r11d, %xmm0
movsd %xmm0, (%rsi,%r9,8)
rorb %r8b
incq %r9
cmpq %r9, %rax
jne 0x478c7
leaq -0x1(%r12), %rax
addq 0x38(%rsp), %rbp
addq $-0x8, 0x30(%rsp)
cmpq $0x1, %r12
movq %rax, %r12
jg 0x477d0
jmp 0x47e1a
movslq 0x4(%r13), %r11
testq %r11, %r11
jle 0x47e1a
movslq 0x48(%rsp), %rax
movq %rax, 0x28(%rsp)
movl 0x68(%rsp), %r14d
leaq -0x8(,%r11,8), %r12
movl $0x3f00000, %r15d       # imm = 0x3F00000
movq %r14, 0x40(%rsp)
cmpl $0xc00000, 0x58(%rsp)   # imm = 0xC00000
jl 0x47a2f
movq %r12, 0x38(%rsp)
movq %r11, 0x30(%rsp)
movq 0x88(%rsp), %rbp
testq %rbx, %rbx
movq 0x48(%rsp), %rax
je 0x480f7
testl %eax, %eax
je 0x480f7
testq %rbp, %rbp
je 0x480f7
movq 0x28(%rsp), %r13
xorl %r14d, %r14d
cmpq %r15, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47c0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x479f0
testq %r13, %r13
jne 0x479be
testq %r13, %r13
je 0x47a0b
leaq 0x4c98e(%rip), %rdi     # 0x9438a
movq %r14, %rsi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0xbb52
movq %rbx, %rdi
movq 0x40(%rsp), %r14
movq %r14, %rsi
movl $0x1, %edx
callq 0x4580
movq 0x50(%rsp), %r13
movq 0x30(%rsp), %r11
movq 0x38(%rsp), %r12
movslq (%r13), %rdi
testq %rdi, %rdi
jle 0x47aca
movq 0x18(%r13), %r8
leaq (%rdi,%rdi), %rax
movl 0x4(%r13), %ecx
movq %r12, %rdx
imulq %rdi, %rdx
addq %r8, %rdx
leaq (%r12,%rcx,8), %rsi
imulq %rdi, %rsi
addq %r8, %rsi
shlq $0x4, %rcx
addq %r12, %rcx
imulq %rdi, %rcx
addq %r8, %rcx
xorl %edi, %edi
movzbl (%rbp,%rdi), %r8d
movzbl 0x1(%rbp,%rdi), %r9d
movl %r9d, %r10d
shll $0x8, %r10d
orl %r8d, %r10d
andl $0x1f, %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rcx,%rdi,4)
shrl $0x5, %r10d
andl $0x1f, %r10d
xorps %xmm0, %xmm0
cvtsi2sd %r10d, %xmm0
shrl $0x2, %r9d
andl $0x1f, %r9d
xorps %xmm1, %xmm1
cvtsi2sd %r9d, %xmm1
movsd %xmm0, (%rsi,%rdi,4)
movsd %xmm1, (%rdx,%rdi,4)
addq $0x2, %rdi
cmpq %rdi, %rax
jne 0x47a6d
addq %rdi, %rbp
leaq -0x1(%r11), %rax
addq %r14, %rbp
addq $-0x8, %r12
cmpq $0x1, %r11
movq %rax, %r11
jg 0x47977
jmp 0x47e1a
movslq 0x4(%r13), %r12
testq %r12, %r12
jle 0x47e1a
movslq 0x48(%rsp), %rax
movq %rax, 0x40(%rsp)
movl 0x68(%rsp), %eax
movq %rax, 0x38(%rsp)
leaq -0x8(,%r12,8), %rax
movq %rax, 0x30(%rsp)
movl $0x3f00000, %r15d       # imm = 0x3F00000
cmpl $0xc00000, 0x58(%rsp)   # imm = 0xC00000
jl 0x47bc3
movq %r12, 0x28(%rsp)
movq 0x88(%rsp), %rbp
testq %rbx, %rbx
je 0x48213
cmpl $0x0, 0x48(%rsp)
je 0x48213
testq %rbp, %rbp
je 0x48213
movq 0x40(%rsp), %r13
xorl %r14d, %r14d
cmpq %r15, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47c0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x47b8c
testq %r13, %r13
jne 0x47b5a
testq %r13, %r13
je 0x47ba7
leaq 0x4c7f2(%rip), %rdi     # 0x9438a
movq %r14, %rsi
movq 0x40(%rsp), %rdx
xorl %eax, %eax
callq 0xbb52
movq %rbx, %rdi
movq 0x38(%rsp), %rsi
movl $0x1, %edx
callq 0x4580
movq 0x50(%rsp), %r13
movq 0x28(%rsp), %r12
movslq (%r13), %rax
testq %rax, %rax
jle 0x47c83
movq 0xb8(%rsp), %rcx
movq 0x18(%r13), %r8
movl 0x4(%r13), %edx
movq 0x30(%rsp), %r9
movq %r9, %rsi
imulq %rax, %rsi
addq %r8, %rsi
leaq (%r9,%rdx,8), %rdi
imulq %rax, %rdi
addq %r8, %rdi
shlq $0x4, %rdx
addq %r9, %rdx
imulq %rax, %rdx
addq %r8, %rdx
movb $-0x10, %r8b
xorl %r9d, %r9d
xorl %r10d, %r10d
cmpb $-0x10, %r8b
jne 0x47c1e
movb (%rbp), %r10b
incq %rbp
movl %r10d, %r11d
andb %r8b, %r11b
movzbl %r11b, %r14d
shrb $0x4, %r11b
cmpb $0x10, %r8b
movzbl %r11b, %r11d
cmovbl %r14d, %r11d
movzbl %r11b, %r11d
movzbl (%rcx,%r11,4), %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rdx,%r9,8)
movzbl 0x1(%rcx,%r11,4), %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rdi,%r9,8)
movzbl 0x2(%rcx,%r11,4), %r11d
xorps %xmm0, %xmm0
cvtsi2sd %r11d, %xmm0
movsd %xmm0, (%rsi,%r9,8)
rolb $0x4, %r8b
incq %r9
cmpq %r9, %rax
jne 0x47c11
leaq -0x1(%r12), %rax
addq 0x38(%rsp), %rbp
addq $-0x8, 0x30(%rsp)
cmpq $0x1, %r12
movq %rax, %r12
jg 0x47b1a
jmp 0x47e1a
movslq 0x4(%r13), %r9
testq %r9, %r9
jle 0x47e1a
movslq 0x48(%rsp), %rax
movq %rax, 0x28(%rsp)
movl 0x68(%rsp), %r14d
leaq -0x8(,%r9,8), %r10
movl $0x3f00000, %r15d       # imm = 0x3F00000
movq %r14, 0x40(%rsp)
cmpl $0xc00000, 0x58(%rsp)   # imm = 0xC00000
jl 0x47d8a
movq %r10, 0x38(%rsp)
movq %r9, 0x30(%rsp)
movq 0x88(%rsp), %rbp
testq %rbx, %rbx
je 0x48271
cmpl $0x0, 0x48(%rsp)
je 0x48271
testq %rbp, %rbp
je 0x48271
movq 0x28(%rsp), %r13
xorl %r14d, %r14d
cmpq %r15, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%rbp,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47c0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x47d4b
testq %r13, %r13
jne 0x47d19
testq %r13, %r13
je 0x47d66
leaq 0x4c633(%rip), %rdi     # 0x9438a
movq %r14, %rsi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0xbb52
movq %rbx, %rdi
movq 0x40(%rsp), %r14
movq %r14, %rsi
movl $0x1, %edx
callq 0x4580
movq 0x50(%rsp), %r13
movq 0x30(%rsp), %r9
movq 0x38(%rsp), %r10
movslq (%r13), %rax
testq %rax, %rax
jle 0x47e02
movq 0x18(%r13), %rdi
movl 0x4(%r13), %ecx
movq %r10, %rdx
imulq %rax, %rdx
addq %rdi, %rdx
leaq (%r10,%rcx,8), %rsi
imulq %rax, %rsi
addq %rdi, %rsi
shlq $0x4, %rcx
addq %r10, %rcx
imulq %rax, %rcx
addq %rdi, %rcx
xorl %edi, %edi
movzbl (%rbp), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rcx,%rdi,8)
movzbl 0x1(%rbp), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rsi,%rdi,8)
movzbl 0x2(%rbp), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
addq $0x3, %rbp
movsd %xmm0, (%rdx,%rdi,8)
incq %rdi
cmpq %rdi, %rax
jne 0x47dc0
leaq -0x1(%r9), %rax
addq %r14, %rbp
addq $-0x8, %r10
cmpq $0x1, %r9
movq %rax, %r9
jg 0x47cd4
cmpl $0x0, 0x64(%rsp)
jns 0x47e2e
movq %r13, %rdi
movl $0x79, %esi
callq 0x48832
cmpq $0x0, 0x90(%rsp)
je 0x47e86
cmpb $0x0, 0x80(%rsp)
jne 0x47e55
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x47e55
callq 0x4680
cmpb $0x0, 0xb0(%rsp)
jne 0x47e71
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x47e71
callq 0x4680
movq %r13, %rax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testq %rbx, %rbx
je 0x47ec4
movq 0x65116(%rip), %rax     # 0xacfa8
cmpq %rbx, (%rax)
je 0x47e39
movq 0x650ea(%rip), %rax     # 0xacf88
cmpq %rbx, (%rax)
je 0x47e39
movq %rbx, %rdi
callq 0x4540
testl %eax, %eax
je 0x47e39
leaq 0x4bc16(%rip), %rdi     # 0x93acc
movl %eax, %esi
xorl %eax, %eax
callq 0xbb52
jmp 0x47e39
leaq 0x4bbd7(%rip), %rdi     # 0x93aa2
xorl %eax, %eax
callq 0xbb52
jmp 0x47e39
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
movq 0x18(%r15), %rax
leaq 0x2b43a(%rip), %rsi     # 0x73338
leaq 0x2c80d(%rip), %rdi     # 0x74712
cmpb $0x0, 0x10(%r15)
cmovneq %rsi, %rdi
leaq 0x4bcda(%rip), %rsi     # 0x93bef
movq %rsi, 0x10(%rsp)
movq %rdi, 0x8(%rsp)
movq %rax, (%rsp)
leaq 0x4c2fa(%rip), %rsi     # 0x94224
movq %r14, %rdi
xorl %eax, %eax
callq 0xc196
jmp 0x47f76
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
leaq 0xd0(%rsp), %rax
movq %rax, (%rsp)
leaq 0x4c3e7(%rip), %rsi     # 0x9433d
leaq 0x3737a(%rip), %rcx     # 0x7f2d7
leaq 0x4d49e(%rip), %r8      # 0x95402
movl $0x36, %edx
movq %r14, %rdi
movq %rbx, %r9
xorl %eax, %eax
callq 0xc196
leaq 0x64ca3(%rip), %rsi     # 0xacc20
jmp 0x48016
cmpq $0x0, 0x90(%rsp)
jne 0x47f95
movq %rbx, %rdi
callq 0x3845e
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
leaq 0x2b38f(%rip), %rax     # 0x73338
movq 0x50(%rsp), %rdi
cmpb $0x0, 0x10(%rdi)
leaq 0x2c759(%rip), %rsi     # 0x74712
cmovneq %rax, %rsi
movq 0xc8(%rsp), %r10
testq %r10, %r10
movl (%rdi), %edx
movl 0x4(%rdi), %ecx
movl 0x8(%rdi), %r8d
movl 0xc(%rdi), %r9d
movq 0x18(%rdi), %rax
leaq 0x4c101(%rip), %rdi     # 0x940e1
cmovneq %r10, %rdi
movq %rdi, 0x18(%rsp)
leaq 0x4bbff(%rip), %rdi     # 0x93bef
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rax, (%rsp)
leaq 0x4c277(%rip), %rsi     # 0x9427c
movq %r14, %rdi
xorl %eax, %eax
callq 0x385b4
leaq 0x64cda(%rip), %rsi     # 0xaccf0
movq 0x64fb3(%rip), %rdx     # 0xacfd0
movq %r14, %rdi
callq 0x4900
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
movl (%r13), %edx
movl 0x4(%r13), %ecx
movl 0x8(%r13), %r8d
movl 0xc(%r13), %r9d
movq 0x18(%r13), %rax
leaq 0x2b2eb(%rip), %rsi     # 0x73338
leaq 0x2c6be(%rip), %rdi     # 0x74712
cmpb $0x0, 0x10(%r13)
cmovneq %rsi, %rdi
leaq 0x4bb8b(%rip), %rsi     # 0x93bef
movq %rsi, 0x10(%rsp)
movq %rdi, 0x8(%rsp)
movq %rax, (%rsp)
leaq 0x4c254(%rip), %rsi     # 0x942cd
movq %r14, %rdi
xorl %eax, %eax
callq 0x385b4
leaq 0x64c66(%rip), %rsi     # 0xaccf0
movq 0x64f3f(%rip), %rdx     # 0xacfd0
movq %r14, %rdi
callq 0x4900
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x48(%rsp)
leaq 0x4d350(%rip), %rax     # 0x95402
leaq 0x2b27f(%rip), %r8      # 0x73338
cmovaeq %rax, %r8
movq %rbp, (%rsp)
leaq 0x4c275(%rip), %rsi     # 0x9433d
leaq 0x37208(%rip), %rcx     # 0x7f2d7
movq %r14, %rdi
movq 0x40(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc196
leaq 0x64b38(%rip), %rsi     # 0xacc20
movq 0x64ee1(%rip), %rdx     # 0xacfd0
movq %r14, %rdi
callq 0x4900
movl $0x4008, %edi           # imm = 0x4008
movq %rax, %r15
callq 0x4210
movq %rax, %r14
cmpl $0x2, %r15d
leaq 0x4d2f0(%rip), %rax     # 0x95402
leaq 0x2b21f(%rip), %r8      # 0x73338
cmovaeq %rax, %r8
movq %rbp, (%rsp)
leaq 0x4c215(%rip), %rsi     # 0x9433d
leaq 0x371a8(%rip), %rcx     # 0x7f2d7
movq %r14, %rdi
movq 0x28(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc196
leaq 0x64ad8(%rip), %rsi     # 0xacc20
movq 0x64e81(%rip), %rdx     # 0xacfd0
movq %r14, %rdi
callq 0x4900
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x48(%rsp)
leaq 0x4d292(%rip), %rax     # 0x95402
leaq 0x2b1c1(%rip), %r8      # 0x73338
cmovaeq %rax, %r8
movq %rbp, (%rsp)
leaq 0x4c1b7(%rip), %rsi     # 0x9433d
leaq 0x3714a(%rip), %rcx     # 0x7f2d7
movq %r14, %rdi
movq 0x28(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc196
leaq 0x64a7a(%rip), %rsi     # 0xacc20
movq 0x64e23(%rip), %rdx     # 0xacfd0
movq %r14, %rdi
callq 0x4900
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x48(%rsp)
leaq 0x4d234(%rip), %rax     # 0x95402
leaq 0x2b163(%rip), %r8      # 0x73338
cmovaeq %rax, %r8
movq %rbp, (%rsp)
leaq 0x4c159(%rip), %rsi     # 0x9433d
leaq 0x370ec(%rip), %rcx     # 0x7f2d7
movq %r14, %rdi
movq 0x28(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc196
leaq 0x64a1c(%rip), %rsi     # 0xacc20
movq 0x64dc5(%rip), %rdx     # 0xacfd0
movq %r14, %rdi
callq 0x4900
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x48(%rsp)
leaq 0x4d1d6(%rip), %rax     # 0x95402
leaq 0x2b105(%rip), %r8      # 0x73338
cmovaeq %rax, %r8
movq %rbp, (%rsp)
leaq 0x4c0fb(%rip), %rsi     # 0x9433d
leaq 0x3708e(%rip), %rcx     # 0x7f2d7
movq %r14, %rdi
movq 0x40(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc196
leaq 0x649be(%rip), %rsi     # 0xacc20
movq 0x64d67(%rip), %rdx     # 0xacfd0
movq %r14, %rdi
callq 0x4900
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x48(%rsp)
leaq 0x4d178(%rip), %rax     # 0x95402
leaq 0x2b0a7(%rip), %r8      # 0x73338
cmovaeq %rax, %r8
movq %rbp, (%rsp)
leaq 0x4c09d(%rip), %rsi     # 0x9433d
leaq 0x37030(%rip), %rcx     # 0x7f2d7
movq %r14, %rdi
movq 0x28(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc196
leaq 0x64960(%rip), %rsi     # 0xacc20
movq 0x64d09(%rip), %rdx     # 0xacfd0
movq %r14, %rdi
callq 0x4900
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %r15, %rcx
movq %rax, %r15
cmpl $0x2, %ecx
leaq 0x4d119(%rip), %rax     # 0x95402
leaq 0x2b048(%rip), %r8      # 0x73338
cmovaeq %rax, %r8
movq %rbp, (%rsp)
leaq 0x4c03e(%rip), %rsi     # 0x9433d
leaq 0x36fd1(%rip), %rcx     # 0x7f2d7
movq %r15, %rdi
movq %r13, %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc196
leaq 0x64903(%rip), %rsi     # 0xacc20
movq 0x64cac(%rip), %rdx     # 0xacfd0
movq %r15, %rdi
callq 0x4900
movq %rax, %rbx
movq %r15, %rdi
jmp 0x48352
jmp 0x4837d
jmp 0x4834c
jmp 0x4837d
jmp 0x4834c
jmp 0x4837d
jmp 0x4834c
jmp 0x4837d
jmp 0x4834c
jmp 0x4837d
jmp 0x4837d
jmp 0x4834c
jmp 0x4834c
movq %rax, %rbx
movq %r14, %rdi
callq 0x43b0
jmp 0x48380
jmp 0x4837d
jmp 0x4837d
jmp 0x4837d
jmp 0x4837d
jmp 0x4837d
jmp 0x4837d
jmp 0x48369
jmp 0x48369
movq %rax, %rbx
movq %r14, %rdi
callq 0x43b0
jmp 0x483b8
movq %rax, %rbx
jmp 0x4839c
jmp 0x4837d
movq %rax, %rbx
cmpb $0x0, 0x80(%rsp)
jne 0x4839c
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x4839c
callq 0x4680
cmpb $0x0, 0xb0(%rsp)
jne 0x483b8
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x483b8
callq 0x4680
movq %rbx, %rdi
callq 0x4950