// File: /workspace/github_cpp_makefile_star2_O3/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 $0x108, %rsp            # imm = 0x108
movq %rdi, %rbx
movq %rsi, %rax
orq %rdx, %rax
je 0x45f94
testq %rsi, %rsi
movq %rbx, 0x50(%rsp)
movq %rsi, 0x88(%rsp)
movq %rdx, 0x100(%rsp)
je 0x4510b
xorpd %xmm0, %xmm0
movapd %xmm0, 0xf0(%rsp)
movapd %xmm0, 0xe0(%rsp)
movapd %xmm0, 0xd0(%rsp)
movapd %xmm0, 0xc0(%rsp)
movq %rsi, %rbx
jmp 0x4514e
leaq 0x4a1d3(%rip), %rsi     # 0x8f2e5
movq %rdx, %rdi
callq 0x3b111
movq %rax, %rbx
xorpd %xmm0, %xmm0
movapd %xmm0, 0xf0(%rsp)
movapd %xmm0, 0xe0(%rsp)
movapd %xmm0, 0xd0(%rsp)
movapd %xmm0, 0xc0(%rsp)
testq %rax, %rax
je 0x46390
movl $0x36, %r12d
xorl %r14d, %r14d
movl $0x3f00000, %r13d       # imm = 0x3F00000
cmpq %r13, %r12
movl $0x3f00000, %r15d       # imm = 0x3F00000
cmovbq %r12, %r15
leaq 0xc0(%rsp,%r14), %rdi
movl $0x1, %esi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x47d0
addq %rax, %r14
subq %rax, %r12
cmpq %rax, %r15
jne 0x45192
testq %r12, %r12
jne 0x4515d
testq %r12, %r12
je 0x451ad
leaq 0x4a71c(%rip), %rdi     # 0x8f8ba
movl $0x36, %edx
movq %r14, %rsi
xorl %eax, %eax
callq 0xbb10
cmpb $0x42, 0xc0(%rsp)
jne 0x45ff3
cmpb $0x4d, 0xc1(%rsp)
jne 0x45ff3
movl 0xc2(%rsp), %ebp
movl 0xca(%rsp), %r15d
movl 0xce(%rsp), %eax
movq %rax, 0x40(%rsp)
movzbl 0xd2(%rsp), %edx
movzwl 0xd3(%rsp), %eax
shll $0x8, %eax
movq %rax, 0x28(%rsp)
movzbl 0xd5(%rsp), %r14d
shll $0x18, %r14d
movzwl 0xd6(%rsp), %esi
movzbl 0xd8(%rsp), %r12d
shll $0x10, %r12d
movzbl 0xd9(%rsp), %eax
movl 0xde(%rsp), %ecx
movl %ecx, 0x9c(%rsp)
movl 0xee(%rsp), %ecx
movl %ecx, 0x38(%rsp)
movzwl 0xdc(%rsp), %r13d
testl %ebp, %ebp
movl %edx, 0x48(%rsp)
je 0x45255
cmpl %r15d, %ebp
jne 0x45292
movq %rbx, %rdi
movl %esi, 0x30(%rsp)
xorl %esi, %esi
movl $0x2, %edx
movl %eax, 0x5c(%rsp)
callq 0x4590
movq %rbx, %rdi
callq 0x4030
movq %rax, %rbp
movl $0x36, %esi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x4590
movl 0x30(%rsp), %esi
movl 0x48(%rsp), %edx
movl 0x5c(%rsp), %eax
movq 0x28(%rsp), %rcx
orl %r14d, %ecx
orl %esi, %r12d
shll $0x18, %eax
cmpl $0x29, 0x40(%rsp)
movl %r13d, 0x20(%rsp)
jl 0x452d6
movq 0x40(%rsp), %rdx
leal -0x28(%rdx), %esi
movq %rbx, %rdi
movl $0x1, %edx
movq %rcx, %r13
movl %eax, %r14d
callq 0x4590
movl 0x48(%rsp), %edx
movl %r14d, %eax
movq %r13, %rcx
movl 0x20(%rsp), %r13d
orl %edx, %ecx
movq %rcx, 0x28(%rsp)
orl %eax, %r12d
cmpl $0x4, %r13d
movq %rbp, %r14
movl %eax, 0x5c(%rsp)
je 0x4530e
cmpl $0x1, %r13d
jne 0x45325
movq 0x28(%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 0x4533b
movq 0x28(%rsp), %rcx
movl %ecx, %eax
shrl $0x1f, %eax
addl %ecx, %eax
sarl %eax
andl $0x1, %edx
addl %eax, %edx
movl %edx, %eax
jmp 0x4533b
movl %r13d, %eax
imull 0x28(%rsp), %eax
leal 0x7(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
movq %rcx, %rax
sarl $0x3, %eax
movq 0x50(%rsp), %r13
movl %eax, %ebp
negl %ebp
andl $0x3, %ebp
movl %r12d, %ecx
negl %ecx
cmovsl %r12d, %ecx
movq %rax, 0x30(%rsp)
addl %ebp, %eax
movl %eax, 0x98(%rsp)
movl %ecx, 0x94(%rsp)
imull %ecx, %eax
subl %r15d, %r14d
cmpl %r14d, %eax
cmovll %eax, %r14d
movq $0x0, 0xb8(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xa0(%rsp)
movb $0x0, 0xb0(%rsp)
movl $0x1, %r12d
movl 0x20(%rsp), %ecx
shll %cl, %r12d
movl 0x38(%rsp), %eax
testl %eax, %eax
cmovnel %eax, %r12d
xorl %eax, %eax
cmpl $0xf, %ecx
ja 0x453eb
leaq 0xa0(%rsp), %rdi
movl %r12d, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x4656e
movq 0xb8(%rsp), %rdi
movslq %r12d, %rsi
movq %rbx, %rdx
callq 0x467f6
shll $0x2, %r12d
movl %r12d, %eax
movq 0x40(%rsp), %rcx
addl %eax, %ecx
subl %ecx, %r15d
addl $-0xe, %r15d
testl %r15d, %r15d
jle 0x4540e
movl %r15d, %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x4590
movq $0x0, 0x78(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x60(%rsp)
movb $0x0, 0x70(%rsp)
cmpl $0xbfffff, %r14d        # imm = 0xBFFFFF
jg 0x454de
leaq 0x60(%rsp), %rdi
movl %r14d, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x104de
movq %rbp, 0x40(%rsp)
movq 0x78(%rsp), %r15
movslq %r14d, %r13
movq %r14, 0x48(%rsp)
testl %r14d, %r14d
je 0x46334
testq %r15, %r15
je 0x46334
xorl %r12d, %r12d
movl $0x3f00000, %ebp        # imm = 0x3F00000
movq %r13, 0x38(%rsp)
cmpq %rbp, %r13
movl $0x3f00000, %r14d       # imm = 0x3F00000
cmovbq %r13, %r14
leaq (%r15,%r12), %rdi
movl $0x1, %esi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x47d0
addq %rax, %r12
subq %rax, %r13
cmpq %rax, %r14
jne 0x454b2
testq %r13, %r13
jne 0x45481
testq %r13, %r13
movq 0x50(%rsp), %r13
movq 0x48(%rsp), %r14
movq 0x40(%rsp), %rbp
je 0x454ff
leaq 0x4a3ed(%rip), %rdi     # 0x8f8ba
movq %r12, %rsi
movq 0x38(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
jmp 0x454ff
leaq 0x60(%rsp), %rdi
movl 0x98(%rsp), %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x104de
cmpl $0x0, 0x9c(%rsp)
je 0x45564
cmpq $0x0, 0x88(%rsp)
jne 0x4608c
movq 0x62a89(%rip), %rax     # 0xa7fa8
cmpq %rbx, (%rax)
je 0x4554c
movq 0x62a5d(%rip), %rax     # 0xa7f88
cmpq %rbx, (%rax)
je 0x4554c
movq %rbx, %rdi
callq 0x4550
testl %eax, %eax
je 0x4554c
leaq 0x49ab9(%rip), %rdi     # 0x8effc
movl %eax, %esi
xorl %eax, %eax
callq 0xbb10
movq %r13, %rdi
movq 0x100(%rsp), %rsi
callq 0x3b580
movq %rax, %r13
jmp 0x45f17
movq 0x78(%rsp), %r15
movq %r13, %rdi
movq 0x28(%rsp), %rsi
movl 0x94(%rsp), %edx
movl $0x1, %ecx
movl $0x3, %r8d
callq 0xbbfc
movzwl 0x20(%rsp), %eax
cmpl $0xf, %eax
movq %r14, 0x48(%rsp)
jg 0x45736
cmpl $0x1, %eax
je 0x458c1
cmpl $0x4, %eax
je 0x45be7
cmpl $0x8, %eax
jne 0x45ef8
movslq 0x4(%r13), %r11
testq %r11, %r11
jle 0x45ef8
movslq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
movl %ebp, %r14d
leaq -0x8(,%r11,8), %r12
movl $0x3f00000, %ebp        # imm = 0x3F00000
movq %r14, 0x38(%rsp)
cmpl $0xc00000, 0x48(%rsp)   # imm = 0xC00000
jl 0x4568b
movq %r12, 0x40(%rsp)
movq %r11, 0x28(%rsp)
movq 0x78(%rsp), %r15
cmpl $0x0, 0x30(%rsp)
je 0x461bc
testq %r15, %r15
je 0x461bc
movq 0x20(%rsp), %r13
xorl %r14d, %r14d
cmpq %rbp, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%r15,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47d0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x4564c
testq %r13, %r13
jne 0x4561b
testq %r13, %r13
je 0x45667
leaq 0x4a262(%rip), %rdi     # 0x8f8ba
movq %r14, %rsi
movq 0x20(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movq %rbx, %rdi
movq 0x38(%rsp), %r14
movq %r14, %rsi
movl $0x1, %edx
callq 0x4590
movq 0x50(%rsp), %r13
movq 0x28(%rsp), %r11
movq 0x40(%rsp), %r12
movslq (%r13), %rax
testq %rax, %rax
jle 0x45719
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 (%r15,%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 0x456ce
addq %r8, %r15
leaq -0x1(%r11), %rax
addq %r14, %r15
addq $-0x8, %r12
cmpq $0x1, %r11
movq %rax, %r11
jg 0x455e2
jmp 0x45ef8
cmpl $0x10, %eax
je 0x45a5b
cmpl $0x18, %eax
je 0x45d94
cmpl $0x20, %eax
jne 0x45ef8
movslq 0x4(%r13), %r9
testq %r9, %r9
jle 0x45ef8
movslq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
movl %ebp, %r14d
leaq -0x8(,%r9,8), %r10
movl $0x3f00000, %ebp        # imm = 0x3F00000
movq %r14, 0x38(%rsp)
cmpl $0xc00000, 0x48(%rsp)   # imm = 0xC00000
jl 0x45826
movq %r10, 0x40(%rsp)
movq %r9, 0x28(%rsp)
movq 0x78(%rsp), %r15
cmpl $0x0, 0x30(%rsp)
je 0x4621a
testq %r15, %r15
je 0x4621a
movq 0x20(%rsp), %r13
xorl %r14d, %r14d
cmpq %rbp, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%r15,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47d0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x457e7
testq %r13, %r13
jne 0x457b6
testq %r13, %r13
je 0x45802
leaq 0x4a0c7(%rip), %rdi     # 0x8f8ba
movq %r14, %rsi
movq 0x20(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movq %rbx, %rdi
movq 0x38(%rsp), %r14
movq %r14, %rsi
movl $0x1, %edx
callq 0x4590
movq 0x50(%rsp), %r13
movq 0x28(%rsp), %r9
movq 0x40(%rsp), %r10
movslq (%r13), %rax
testq %rax, %rax
jle 0x458a4
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 (%r15,%rdi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rcx,%rdi,2)
movzbl 0x1(%r15,%rdi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rsi,%rdi,2)
movzbl 0x2(%r15,%rdi), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rdx,%rdi,2)
addq $0x4, %rdi
cmpq %rdi, %rax
jne 0x45860
addq %rdi, %r15
leaq -0x1(%r9), %rax
addq %r14, %r15
addq $-0x8, %r10
cmpq $0x1, %r9
movq %rax, %r9
jg 0x4577d
jmp 0x45ef8
movslq 0x4(%r13), %r12
testq %r12, %r12
jle 0x45ef8
movslq 0x30(%rsp), %rax
movq %rax, 0x38(%rsp)
movl %ebp, %eax
movq %rax, 0x40(%rsp)
leaq -0x8(,%r12,8), %rax
movq %rax, 0x28(%rsp)
movl $0x3f00000, %ebp        # imm = 0x3F00000
cmpl $0xc00000, 0x48(%rsp)   # imm = 0xC00000
jl 0x4598d
movq %r12, 0x20(%rsp)
movq 0x78(%rsp), %r15
cmpl $0x0, 0x30(%rsp)
je 0x46100
testq %r15, %r15
je 0x46100
movq 0x38(%rsp), %r13
xorl %r14d, %r14d
cmpq %rbp, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%r15,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47d0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x45956
testq %r13, %r13
jne 0x45925
testq %r13, %r13
je 0x45971
leaq 0x49f58(%rip), %rdi     # 0x8f8ba
movq %r14, %rsi
movq 0x38(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movq %rbx, %rdi
movq 0x40(%rsp), %rsi
movl $0x1, %edx
callq 0x4590
movq 0x50(%rsp), %r13
movq 0x20(%rsp), %r12
movslq (%r13), %rax
testq %rax, %rax
jle 0x45a39
movq 0xb8(%rsp), %rcx
movq 0x18(%r13), %r8
movl 0x4(%r13), %edx
movq 0x28(%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 0x459e9
movb (%r15), %r10b
incq %r15
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 0x459db
leaq -0x1(%r12), %rax
addq 0x40(%rsp), %r15
addq $-0x8, 0x28(%rsp)
cmpq $0x1, %r12
movq %rax, %r12
jg 0x458f1
jmp 0x45ef8
movslq 0x4(%r13), %r11
testq %r11, %r11
jle 0x45ef8
movslq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
movl %ebp, %r14d
leaq -0x8(,%r11,8), %r12
movl $0x3f00000, %ebp        # imm = 0x3F00000
movq %r14, 0x38(%rsp)
cmpl $0xc00000, 0x48(%rsp)   # imm = 0xC00000
jl 0x45b30
movq %r12, 0x40(%rsp)
movq %r11, 0x28(%rsp)
movq 0x78(%rsp), %r15
cmpl $0x0, 0x30(%rsp)
je 0x4615e
testq %r15, %r15
je 0x4615e
movq 0x20(%rsp), %r13
xorl %r14d, %r14d
cmpq %rbp, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%r15,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47d0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x45af1
testq %r13, %r13
jne 0x45ac0
testq %r13, %r13
je 0x45b0c
leaq 0x49dbd(%rip), %rdi     # 0x8f8ba
movq %r14, %rsi
movq 0x20(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movq %rbx, %rdi
movq 0x38(%rsp), %r14
movq %r14, %rsi
movl $0x1, %edx
callq 0x4590
movq 0x50(%rsp), %r13
movq 0x28(%rsp), %r11
movq 0x40(%rsp), %r12
movslq (%r13), %rdi
testq %rdi, %rdi
jle 0x45bca
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 (%r15,%rdi), %r8d
movzbl 0x1(%r15,%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 0x45b6e
addq %rdi, %r15
leaq -0x1(%r11), %rax
addq %r14, %r15
addq $-0x8, %r12
cmpq $0x1, %r11
movq %rax, %r11
jg 0x45a87
jmp 0x45ef8
movslq 0x4(%r13), %r12
testq %r12, %r12
jle 0x45ef8
movslq 0x30(%rsp), %rax
movq %rax, 0x38(%rsp)
movl %ebp, %eax
movq %rax, 0x40(%rsp)
leaq -0x8(,%r12,8), %rax
movq %rax, 0x28(%rsp)
movl $0x3f00000, %ebp        # imm = 0x3F00000
cmpl $0xc00000, 0x48(%rsp)   # imm = 0xC00000
jl 0x45cb3
movq %r12, 0x20(%rsp)
movq 0x78(%rsp), %r15
cmpl $0x0, 0x30(%rsp)
je 0x46278
testq %r15, %r15
je 0x46278
movq 0x38(%rsp), %r13
xorl %r14d, %r14d
cmpq %rbp, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%r15,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47d0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x45c7c
testq %r13, %r13
jne 0x45c4b
testq %r13, %r13
je 0x45c97
leaq 0x49c32(%rip), %rdi     # 0x8f8ba
movq %r14, %rsi
movq 0x38(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movq %rbx, %rdi
movq 0x40(%rsp), %rsi
movl $0x1, %edx
callq 0x4590
movq 0x50(%rsp), %r13
movq 0x20(%rsp), %r12
movslq (%r13), %rax
testq %rax, %rax
jle 0x45d72
movq 0xb8(%rsp), %rcx
movq 0x18(%r13), %r8
movl 0x4(%r13), %edx
movq 0x28(%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 0x45d0d
movb (%r15), %r10b
incq %r15
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 0x45d01
leaq -0x1(%r12), %rax
addq 0x40(%rsp), %r15
addq $-0x8, 0x28(%rsp)
cmpq $0x1, %r12
movq %rax, %r12
jg 0x45c17
jmp 0x45ef8
movslq 0x4(%r13), %r9
testq %r9, %r9
jle 0x45ef8
movslq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
movl %ebp, %r14d
leaq -0x8(,%r9,8), %r10
movl $0x3f00000, %ebp        # imm = 0x3F00000
movq %r14, 0x38(%rsp)
cmpl $0xc00000, 0x48(%rsp)   # imm = 0xC00000
jl 0x45e69
movq %r10, 0x40(%rsp)
movq %r9, 0x28(%rsp)
movq 0x78(%rsp), %r15
cmpl $0x0, 0x30(%rsp)
je 0x462d6
testq %r15, %r15
je 0x462d6
movq 0x20(%rsp), %r13
xorl %r14d, %r14d
cmpq %rbp, %r13
movl $0x3f00000, %r12d       # imm = 0x3F00000
cmovbq %r13, %r12
leaq (%r15,%r14), %rdi
movl $0x1, %esi
movq %r12, %rdx
movq %rbx, %rcx
callq 0x47d0
addq %rax, %r14
subq %rax, %r13
cmpq %rax, %r12
jne 0x45e2a
testq %r13, %r13
jne 0x45df9
testq %r13, %r13
je 0x45e45
leaq 0x49a84(%rip), %rdi     # 0x8f8ba
movq %r14, %rsi
movq 0x20(%rsp), %rdx
xorl %eax, %eax
callq 0xbb10
movq %rbx, %rdi
movq 0x38(%rsp), %r14
movq %r14, %rsi
movl $0x1, %edx
callq 0x4590
movq 0x50(%rsp), %r13
movq 0x28(%rsp), %r9
movq 0x40(%rsp), %r10
movslq (%r13), %rax
testq %rax, %rax
jle 0x45ee0
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 (%r15), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rcx,%rdi,8)
movzbl 0x1(%r15), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
movsd %xmm0, (%rsi,%rdi,8)
movzbl 0x2(%r15), %r8d
xorps %xmm0, %xmm0
cvtsi2sd %r8d, %xmm0
addq $0x3, %r15
movsd %xmm0, (%rdx,%rdi,8)
incq %rdi
cmpq %rdi, %rax
jne 0x45e9f
leaq -0x1(%r9), %rax
addq %r14, %r15
addq $-0x8, %r10
cmpq $0x1, %r9
movq %rax, %r9
jg 0x45dc0
cmpl $0x0, 0x5c(%rsp)
jns 0x45f0c
movq %r13, %rdi
movl $0x79, %esi
callq 0x468f4
cmpq $0x0, 0x88(%rsp)
je 0x45f5e
cmpb $0x0, 0x70(%rsp)
jne 0x45f2d
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x45f2d
callq 0x4690
cmpb $0x0, 0xb0(%rsp)
jne 0x45f49
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x45f49
callq 0x4690
movq %r13, %rax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x62043(%rip), %rax     # 0xa7fa8
cmpq %rbx, (%rax)
je 0x45f17
movq 0x62017(%rip), %rax     # 0xa7f88
cmpq %rbx, (%rax)
je 0x45f17
movq %rbx, %rdi
callq 0x4550
testl %eax, %eax
je 0x45f17
leaq 0x49073(%rip), %rdi     # 0x8effc
movl %eax, %esi
xorl %eax, %eax
callq 0xbb10
jmp 0x45f17
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
movl (%rbx), %edx
movl 0x4(%rbx), %ecx
movl 0x8(%rbx), %r8d
movl 0xc(%rbx), %r9d
movq 0x18(%rbx), %rax
leaq 0x288af(%rip), %rsi     # 0x6e868
leaq 0x29c82(%rip), %rdi     # 0x6fc42
cmpb $0x0, 0x10(%rbx)
cmovneq %rsi, %rdi
leaq 0x49150(%rip), %rsi     # 0x8f11f
movq %rsi, 0x10(%rsp)
movq %rdi, 0x8(%rsp)
movq %rax, (%rsp)
leaq 0x49770(%rip), %rsi     # 0x8f754
movq %r14, %rdi
xorl %eax, %eax
callq 0xc16a
jmp 0x463d0
cmpq $0x0, 0x88(%rsp)
jne 0x46006
movq %rbx, %rdi
callq 0x367a9
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
leaq 0x2884e(%rip), %rax     # 0x6e868
movq 0x50(%rsp), %rdi
cmpb $0x0, 0x10(%rdi)
leaq 0x29c18(%rip), %rsi     # 0x6fc42
cmovneq %rax, %rsi
movq 0x100(%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 0x495c0(%rip), %rdi     # 0x8f611
cmovneq %r10, %rdi
movq %rdi, 0x18(%rsp)
leaq 0x490be(%rip), %rdi     # 0x8f11f
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rax, (%rsp)
leaq 0x49736(%rip), %rsi     # 0x8f7ac
movq %r14, %rdi
xorl %eax, %eax
callq 0x36908
leaq 0x61c69(%rip), %rsi     # 0xa7cf0
jmp 0x463d7
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 0x287b4(%rip), %rsi     # 0x6e868
leaq 0x29b87(%rip), %rdi     # 0x6fc42
cmpb $0x0, 0x10(%r13)
cmovneq %rsi, %rdi
leaq 0x49054(%rip), %rsi     # 0x8f11f
movq %rsi, 0x10(%rsp)
movq %rdi, 0x8(%rsp)
movq %rax, (%rsp)
leaq 0x4971d(%rip), %rsi     # 0x8f7fd
movq %r14, %rdi
xorl %eax, %eax
callq 0x36908
leaq 0x61bff(%rip), %rsi     # 0xa7cf0
movq 0x61ed8(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x30(%rsp)
leaq 0x4a819(%rip), %rax     # 0x90932
leaq 0x28748(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
movq %r15, (%rsp)
leaq 0x4973e(%rip), %rsi     # 0x8f86d
leaq 0x346d1(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq 0x38(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc16a
leaq 0x61b01(%rip), %rsi     # 0xa7c50
movq 0x61e7a(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x30(%rsp)
leaq 0x4a7bb(%rip), %rax     # 0x90932
leaq 0x286ea(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
movq %r15, (%rsp)
leaq 0x496e0(%rip), %rsi     # 0x8f86d
leaq 0x34673(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq 0x20(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc16a
leaq 0x61aa3(%rip), %rsi     # 0xa7c50
movq 0x61e1c(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x30(%rsp)
leaq 0x4a75d(%rip), %rax     # 0x90932
leaq 0x2868c(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
movq %r15, (%rsp)
leaq 0x49682(%rip), %rsi     # 0x8f86d
leaq 0x34615(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq 0x20(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc16a
leaq 0x61a45(%rip), %rsi     # 0xa7c50
movq 0x61dbe(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x30(%rsp)
leaq 0x4a6ff(%rip), %rax     # 0x90932
leaq 0x2862e(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
movq %r15, (%rsp)
leaq 0x49624(%rip), %rsi     # 0x8f86d
leaq 0x345b7(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq 0x20(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc16a
leaq 0x619e7(%rip), %rsi     # 0xa7c50
movq 0x61d60(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x30(%rsp)
leaq 0x4a6a1(%rip), %rax     # 0x90932
leaq 0x285d0(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
movq %r15, (%rsp)
leaq 0x495c6(%rip), %rsi     # 0x8f86d
leaq 0x34559(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq 0x38(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc16a
leaq 0x61989(%rip), %rsi     # 0xa7c50
movq 0x61d02(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x30(%rsp)
leaq 0x4a643(%rip), %rax     # 0x90932
leaq 0x28572(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
movq %r15, (%rsp)
leaq 0x49568(%rip), %rsi     # 0x8f86d
leaq 0x344fb(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq 0x20(%rsp), %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc16a
leaq 0x6192b(%rip), %rsi     # 0xa7c50
movq 0x61ca4(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
cmpl $0x2, 0x48(%rsp)
leaq 0x4a5e5(%rip), %rax     # 0x90932
leaq 0x28514(%rip), %r8      # 0x6e868
cmovaeq %rax, %r8
movq %r15, (%rsp)
leaq 0x4950a(%rip), %rsi     # 0x8f86d
leaq 0x3449d(%rip), %rcx     # 0x7a807
movq %r14, %rdi
movq %r13, %rdx
movq %rbx, %r9
xorl %eax, %eax
callq 0xc16a
leaq 0x618cf(%rip), %rsi     # 0xa7c50
movq 0x61c48(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
movl $0x4008, %edi           # imm = 0x4008
callq 0x4210
movq %rax, %r14
leaq 0xc0(%rsp), %rax
movq %rax, (%rsp)
leaq 0x494bd(%rip), %rsi     # 0x8f86d
leaq 0x34450(%rip), %rcx     # 0x7a807
leaq 0x4a574(%rip), %r8      # 0x90932
movl $0x36, %edx
movq %r14, %rdi
xorl %r9d, %r9d
xorl %eax, %eax
callq 0xc16a
leaq 0x61879(%rip), %rsi     # 0xa7c50
movq 0x61bf2(%rip), %rdx     # 0xa7fd0
movq %r14, %rdi
callq 0x4910
jmp 0x4641d
jmp 0x46402
jmp 0x46431
jmp 0x46402
jmp 0x46431
jmp 0x46402
jmp 0x46431
jmp 0x46402
jmp 0x46431
jmp 0x46402
jmp 0x46431
jmp 0x46431
jmp 0x46402
jmp 0x46402
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
jmp 0x46434
jmp 0x46431
jmp 0x46431
jmp 0x46431
jmp 0x46431
jmp 0x46431
jmp 0x46431
jmp 0x4641d
movq %rax, %rbx
movq %r14, %rdi
callq 0x43c0
jmp 0x46466
movq %rax, %rbx
jmp 0x4644a
jmp 0x46431
movq %rax, %rbx
cmpb $0x0, 0x70(%rsp)
jne 0x4644a
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x4644a
callq 0x4690
cmpb $0x0, 0xb0(%rsp)
jne 0x46466
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x46466
callq 0x4690
movq %rbx, %rdi
callq 0x4960