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

      std::FILE *nfile_header = 0, *nfile = 0;
      if (!file) {
        char body[1024] = { 0 };
        const char *const ext = cimg::split_filename(filename,body);
        if (!cimg::strcasecmp(ext,"hdr")) { // File is an Analyze header file.
          nfile_header = cimg::fopen(filename,"rb");
          std::sprintf(body + std::strlen(body),".img");
          nfile = cimg::fopen(body,"rb");
        } else if (!cimg::strcasecmp(ext,"img")) { // File is an Analyze data file.
          nfile = cimg::fopen(filename,"rb");
          std::sprintf(body + std::strlen(body),".hdr");
          nfile_header = cimg::fopen(body,"rb");
        } else nfile_header = nfile = cimg::fopen(filename,"rb"); // File is a Niftii file.
      } else nfile_header = nfile = file; // File is a Niftii file.
      if (!nfile || !nfile_header)
        throw CImgIOException(_cimg_instance
                              "load_analyze(): Invalid Analyze7.5 or NIFTI header in file '%s'.",
                              cimg_instance,
                              filename?filename:"(FILE*)");

      // Read header.
      bool endian = false;
      unsigned int header_size;
      cimg::fread(&header_size,1,nfile_header);
      if (!header_size)
        throw CImgIOException(_cimg_instance
                              "load_analyze(): Invalid zero-sized header in file '%s'.",
                              cimg_instance,
                              filename?filename:"(FILE*)");

      if (header_size>=4096) { endian = true; cimg::invert_endianness(header_size); }
      unsigned char *const header = new unsigned char[header_size];
      cimg::fread(header+4,header_size-4,nfile_header);
      if (!file && nfile_header!=nfile) cimg::fclose(nfile_header);
      if (endian) {
        cimg::invert_endianness((short*)(header+40),5);
        cimg::invert_endianness((short*)(header+70),1);
        cimg::invert_endianness((short*)(header+72),1);
        cimg::invert_endianness((float*)(header+76),4);
        cimg::invert_endianness((float*)(header+112),1);
      }
      unsigned short *dim = (unsigned short*)(header+40), dimx = 1, dimy = 1, dimz = 1, dimv = 1;
      if (!dim[0])
        cimg::warn(_cimg_instance
                   "load_analyze(): File '%s' defines an image with zero dimensions.",
                   cimg_instance,
                   filename?filename:"(FILE*)");

      if (dim[0]>4)
        cimg::warn(_cimg_instance
                   "load_analyze(): File '%s' defines an image with %u dimensions, reading only the 4 first.",
                   cimg_instance,
                   filename?filename:"(FILE*)",dim[0]);

      if (dim[0]>=1) dimx = dim[1];
      if (dim[0]>=2) dimy = dim[2];
      if (dim[0]>=3) dimz = dim[3];
      if (dim[0]>=4) dimv = dim[4];
      float scalefactor = *(float*)(header+112); if (scalefactor==0) scalefactor=1;
      const unsigned short datatype = *(short*)(header+70);
      if (voxel_size) {
        const float *vsize = (float*)(header+76);
        voxel_size[0] = vsize[1]; voxel_size[1] = vsize[2]; voxel_size[2] = vsize[3];
      }
      delete[] header;

      // Read pixel data.
      assign(dimx,dimy,dimz,dimv);
      switch (datatype) {
      case 2 : {
        unsigned char *const buffer = new unsigned char[dimx*dimy*dimz*dimv];
        cimg::fread(buffer,dimx*dimy*dimz*dimv,nfile);
        cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor);
        delete[] buffer;
      } break;
      case 4 : {
        short *const buffer = new short[dimx*dimy*dimz*dimv];
        cimg::fread(buffer,dimx*dimy*dimz*dimv,nfile);
        if (endian) cimg::invert_endianness(buffer,dimx*dimy*dimz*dimv);
        cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor);
        delete[] buffer;
      } break;
      case 8 : {
        int *const buffer = new int[dimx*dimy*dimz*dimv];
        cimg::fread(buffer,dimx*dimy*dimz*dimv,nfile);
        if (endian) cimg::invert_endianness(buffer,dimx*dimy*dimz*dimv);
        cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor);
        delete[] buffer;
      } break;
      case 16 : {
        float *const buffer = new float[dimx*dimy*dimz*dimv];
        cimg::fread(buffer,dimx*dimy*dimz*dimv,nfile);
        if (endian) cimg::invert_endianness(buffer,dimx*dimy*dimz*dimv);
        cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor);
        delete[] buffer;
      } break;
      case 64 : {
        double *const buffer = new double[dimx*dimy*dimz*dimv];
        cimg::fread(buffer,dimx*dimy*dimz*dimv,nfile);
        if (endian) cimg::invert_endianness(buffer,dimx*dimy*dimz*dimv);
        cimg_foroff(*this,off) _data[off] = (T)(buffer[off]*scalefactor);
        delete[] buffer;
      } break;
      default :
        if (!file) cimg::fclose(nfile);
        throw CImgIOException(_cimg_instance
                              "load_analyze(): Unable to load datatype %d in file '%s'",
                              cimg_instance,
                              datatype,filename?filename:"(FILE*)");
      }
      if (!file) cimg::fclose(nfile);
      return *this;
    }

// Assembly:
pushq %r14
pushq %rbx
subq $0x6b8, %rsp            # imm = 0x6B8
movq %rdi, 0x6b0(%rsp)
movq %rsi, 0x6a8(%rsp)
movq %rdx, 0x6a0(%rsp)
movq %rcx, 0x698(%rsp)
movq 0x6b0(%rsp), %rax
movq %rax, 0x1b8(%rsp)
cmpq $0x0, 0x6a8(%rsp)
jne 0x7dc34
cmpq $0x0, 0x6a0(%rsp)
jne 0x7dc34
movl $0x4008, %edi           # imm = 0x4008
callq 0x5240
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movq %rcx, 0x188(%rsp)
movl (%rax), %ecx
movl %ecx, 0x190(%rsp)
movl 0x4(%rax), %ecx
movl %ecx, 0x194(%rsp)
movl 0x8(%rax), %ecx
movl %ecx, 0x198(%rsp)
movl 0xc(%rax), %ecx
movl %ecx, 0x19c(%rsp)
movq 0x18(%rax), %rcx
movq %rcx, 0x1a0(%rsp)
movb 0x10(%rax), %dl
leaq 0x6ae60(%rip), %rcx     # 0xe89d2
leaq 0x4bf68(%rip), %rax     # 0xc9ae1
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x1a8(%rsp)
callq 0x118f0
movq %rax, 0x1b0(%rsp)
jmp 0x7db97
movl 0x19c(%rsp), %r9d
movl 0x198(%rsp), %r8d
movl 0x194(%rsp), %ecx
movl 0x190(%rsp), %edx
movq 0x188(%rsp), %rdi
movq 0x1a0(%rsp), %rsi
movq 0x1a8(%rsp), %r10
movq 0x1b0(%rsp), %r11
movq %rsp, %rax
movq %r11, 0x10(%rax)
movq %r10, 0x8(%rax)
movq %rsi, (%rax)
leaq 0x6c5bc(%rip), %rsi     # 0xea1a6
xorl %eax, %eax
callq 0x12220
jmp 0x7dbf3
movq 0x188(%rsp), %rdi
leaq 0x81f5e(%rip), %rsi     # 0xffb60
leaq -0x6b7a9(%rip), %rdx    # 0x12460
callq 0x5920
movq 0x188(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x690(%rsp)
movl %eax, 0x68c(%rsp)
callq 0x53a0
jmp 0x7eed0
movq $0x0, 0x680(%rsp)
movq $0x0, 0x678(%rsp)
cmpq $0x0, 0x6a8(%rsp)
jne 0x7ddc9
leaq 0x270(%rsp), %rdi
xorl %esi, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x52a0
movq 0x6a0(%rsp), %rdi
leaq 0x270(%rsp), %rsi
callq 0x63280
movq %rax, 0x268(%rsp)
movq 0x268(%rsp), %rdi
leaq 0x6c481(%rip), %rsi     # 0xea11c
callq 0x633b0
cmpl $0x0, %eax
jne 0x7dd18
movq 0x6a0(%rsp), %rdi
leaq 0x6b4aa(%rip), %rsi     # 0xe915e
callq 0x654a0
movq %rax, 0x680(%rsp)
leaq 0x270(%rsp), %rax
movq %rax, 0x180(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x5210
movq 0x180(%rsp), %rdi
addq %rax, %rdi
leaq 0x6c4b1(%rip), %rsi     # 0xea1a1
movb $0x0, %al
callq 0x50a0
leaq 0x270(%rsp), %rdi
leaq 0x6b458(%rip), %rsi     # 0xe915e
callq 0x654a0
movq %rax, 0x678(%rsp)
jmp 0x7ddc7
movq 0x268(%rsp), %rdi
leaq 0x6c47b(%rip), %rsi     # 0xea1a2
callq 0x633b0
cmpl $0x0, %eax
jne 0x7dda1
movq 0x6a0(%rsp), %rdi
leaq 0x6b41e(%rip), %rsi     # 0xe915e
callq 0x654a0
movq %rax, 0x678(%rsp)
leaq 0x270(%rsp), %rax
movq %rax, 0x178(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x5210
movq 0x178(%rsp), %rdi
addq %rax, %rdi
leaq 0x6c39f(%rip), %rsi     # 0xea11b
movb $0x0, %al
callq 0x50a0
leaq 0x270(%rsp), %rdi
leaq 0x6b3cc(%rip), %rsi     # 0xe915e
callq 0x654a0
movq %rax, 0x680(%rsp)
jmp 0x7ddc5
movq 0x6a0(%rsp), %rdi
leaq 0x6b3ae(%rip), %rsi     # 0xe915e
callq 0x654a0
movq %rax, 0x678(%rsp)
movq %rax, 0x680(%rsp)
jmp 0x7ddc7
jmp 0x7dde1
movq 0x6a8(%rsp), %rax
movq %rax, 0x678(%rsp)
movq %rax, 0x680(%rsp)
cmpq $0x0, 0x678(%rsp)
je 0x7ddfb
cmpq $0x0, 0x680(%rsp)
jne 0x7df51
movl $0x4008, %edi           # imm = 0x4008
callq 0x5240
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movq %rcx, 0x148(%rsp)
movl (%rax), %ecx
movl %ecx, 0x150(%rsp)
movl 0x4(%rax), %ecx
movl %ecx, 0x154(%rsp)
movl 0x8(%rax), %ecx
movl %ecx, 0x158(%rsp)
movl 0xc(%rax), %ecx
movl %ecx, 0x15c(%rsp)
movq 0x18(%rax), %rcx
movq %rcx, 0x160(%rsp)
movb 0x10(%rax), %dl
leaq 0x6ab7d(%rip), %rcx     # 0xe89d2
leaq 0x4bc85(%rip), %rax     # 0xc9ae1
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x168(%rsp)
callq 0x118f0
movq %rax, 0x170(%rsp)
jmp 0x7de7a
cmpq $0x0, 0x6a0(%rsp)
je 0x7de97
movq 0x6a0(%rsp), %rax
movq %rax, 0x140(%rsp)
jmp 0x7dea8
leaq 0x6b5ec(%rip), %rax     # 0xe948a
movq %rax, 0x140(%rsp)
jmp 0x7dea8
movl 0x15c(%rsp), %r9d
movl 0x158(%rsp), %r8d
movl 0x154(%rsp), %ecx
movl 0x150(%rsp), %edx
movq 0x148(%rsp), %rdi
movq 0x160(%rsp), %rsi
movq 0x168(%rsp), %r10
movq 0x170(%rsp), %r11
movq 0x140(%rsp), %rbx
movq %rsp, %rax
movq %rbx, 0x18(%rax)
movq %r11, 0x10(%rax)
movq %r10, 0x8(%rax)
movq %rsi, (%rax)
leaq 0x6c2fb(%rip), %rsi     # 0xea202
xorl %eax, %eax
callq 0x5c880
jmp 0x7df10
movq 0x148(%rsp), %rdi
leaq 0x81d51(%rip), %rsi     # 0xffc70
leaq -0x21466(%rip), %rdx    # 0x5cac0
callq 0x5920
movq 0x148(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x690(%rsp)
movl %eax, 0x68c(%rsp)
callq 0x53a0
jmp 0x7eed0
movb $0x0, 0x267(%rsp)
movq 0x680(%rsp), %rdx
leaq 0x260(%rsp), %rdi
movl $0x1, %esi
callq 0x7eee0
cmpl $0x0, 0x260(%rsp)
jne 0x7e0d7
movl $0x4008, %edi           # imm = 0x4008
callq 0x5240
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movq %rcx, 0x110(%rsp)
movl (%rax), %ecx
movl %ecx, 0x118(%rsp)
movl 0x4(%rax), %ecx
movl %ecx, 0x11c(%rsp)
movl 0x8(%rax), %ecx
movl %ecx, 0x120(%rsp)
movl 0xc(%rax), %ecx
movl %ecx, 0x124(%rsp)
movq 0x18(%rax), %rcx
movq %rcx, 0x128(%rsp)
movb 0x10(%rax), %dl
leaq 0x6a9f7(%rip), %rcx     # 0xe89d2
leaq 0x4baff(%rip), %rax     # 0xc9ae1
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x130(%rsp)
callq 0x118f0
movq %rax, 0x138(%rsp)
jmp 0x7e000
cmpq $0x0, 0x6a0(%rsp)
je 0x7e01d
movq 0x6a0(%rsp), %rax
movq %rax, 0x108(%rsp)
jmp 0x7e02e
leaq 0x6b466(%rip), %rax     # 0xe948a
movq %rax, 0x108(%rsp)
jmp 0x7e02e
movl 0x124(%rsp), %r9d
movl 0x120(%rsp), %r8d
movl 0x11c(%rsp), %ecx
movl 0x118(%rsp), %edx
movq 0x110(%rsp), %rdi
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %r10
movq 0x138(%rsp), %r11
movq 0x108(%rsp), %rbx
movq %rsp, %rax
movq %rbx, 0x18(%rax)
movq %r11, 0x10(%rax)
movq %r10, 0x8(%rax)
movq %rsi, (%rax)
leaq 0x6c1e4(%rip), %rsi     # 0xea271
xorl %eax, %eax
callq 0x5c880
jmp 0x7e096
movq 0x110(%rsp), %rdi
leaq 0x81bcb(%rip), %rsi     # 0xffc70
leaq -0x215ec(%rip), %rdx    # 0x5cac0
callq 0x5920
movq 0x110(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x690(%rsp)
movl %eax, 0x68c(%rsp)
callq 0x53a0
jmp 0x7eed0
cmpl $0x1000, 0x260(%rsp) # imm = 0x1000
jb 0x7e0f9
movb $0x1, 0x267(%rsp)
leaq 0x260(%rsp), %rdi
callq 0x7f0e0
movl 0x260(%rsp), %eax
movl %eax, %edi
callq 0x5040
movq %rax, 0x258(%rsp)
movq 0x258(%rsp), %rdi
addq $0x4, %rdi
movl 0x260(%rsp), %eax
subl $0x4, %eax
movl %eax, %eax
movl %eax, %esi
movq 0x680(%rsp), %rdx
callq 0x754c0
cmpq $0x0, 0x6a8(%rsp)
jne 0x7e160
movq 0x680(%rsp), %rax
cmpq 0x678(%rsp), %rax
je 0x7e160
movq 0x680(%rsp), %rdi
callq 0x5c6f0
testb $0x1, 0x267(%rsp)
je 0x7e1d8
movq 0x258(%rsp), %rdi
addq $0x28, %rdi
movl $0x5, %esi
callq 0x7f100
movq 0x258(%rsp), %rdi
addq $0x46, %rdi
movl $0x1, %esi
callq 0x7f100
movq 0x258(%rsp), %rdi
addq $0x48, %rdi
movl $0x1, %esi
callq 0x7f100
movq 0x258(%rsp), %rdi
addq $0x4c, %rdi
movl $0x4, %esi
callq 0x7aaa0
movq 0x258(%rsp), %rdi
addq $0x70, %rdi
movl $0x1, %esi
callq 0x7aaa0
movq 0x258(%rsp), %rax
addq $0x28, %rax
movq %rax, 0x250(%rsp)
movw $0x1, 0x24e(%rsp)
movw $0x1, 0x24c(%rsp)
movw $0x1, 0x24a(%rsp)
movw $0x1, 0x248(%rsp)
movq 0x250(%rsp), %rax
cmpw $0x0, (%rax)
jne 0x7e315
movq 0x1b8(%rsp), %rax
movl (%rax), %ecx
movl %ecx, 0xe0(%rsp)
movl 0x4(%rax), %ecx
movl %ecx, 0xe4(%rsp)
movl 0x8(%rax), %ecx
movl %ecx, 0xe8(%rsp)
movl 0xc(%rax), %ecx
movl %ecx, 0xec(%rsp)
movq 0x18(%rax), %rcx
movq %rcx, 0xf0(%rsp)
movb 0x10(%rax), %dl
leaq 0x4b876(%rip), %rax     # 0xc9ae1
leaq 0x6a760(%rip), %rcx     # 0xe89d2
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0xf8(%rsp)
callq 0x118f0
movq %rax, 0x100(%rsp)
cmpq $0x0, 0x6a0(%rsp)
je 0x7e2ab
movq 0x6a0(%rsp), %rax
movq %rax, 0xd8(%rsp)
jmp 0x7e2bc
leaq 0x6b1d8(%rip), %rax     # 0xe948a
movq %rax, 0xd8(%rsp)
jmp 0x7e2bc
movq 0x100(%rsp), %r10
movq 0xf8(%rsp), %r11
movq 0xf0(%rsp), %r9
movl 0xec(%rsp), %r8d
movl 0xe8(%rsp), %ecx
movl 0xe4(%rsp), %edx
movl 0xe0(%rsp), %esi
movq 0xd8(%rsp), %rax
leaq 0x6bfd7(%rip), %rdi     # 0xea2d7
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movb $0x0, %al
callq 0x117e0
movq 0x250(%rsp), %rax
movzwl (%rax), %eax
cmpl $0x4, %eax
jle 0x7e427
movq 0x1b8(%rsp), %rax
movl (%rax), %ecx
movl %ecx, 0xb0(%rsp)
movl 0x4(%rax), %ecx
movl %ecx, 0xb4(%rsp)
movl 0x8(%rax), %ecx
movl %ecx, 0xb8(%rsp)
movl 0xc(%rax), %ecx
movl %ecx, 0xbc(%rsp)
movq 0x18(%rax), %rcx
movq %rcx, 0xc0(%rsp)
movb 0x10(%rax), %dl
leaq 0x4b773(%rip), %rax     # 0xc9ae1
leaq 0x6a65d(%rip), %rcx     # 0xe89d2
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0xc8(%rsp)
callq 0x118f0
movq %rax, 0xd0(%rsp)
cmpq $0x0, 0x6a0(%rsp)
je 0x7e3ae
movq 0x6a0(%rsp), %rax
movq %rax, 0xa8(%rsp)
jmp 0x7e3bf
leaq 0x6b0d5(%rip), %rax     # 0xe948a
movq %rax, 0xa8(%rsp)
jmp 0x7e3bf
movq 0xd0(%rsp), %r11
movq 0xc8(%rsp), %rbx
movq 0xc0(%rsp), %r9
movl 0xbc(%rsp), %r8d
movl 0xb8(%rsp), %ecx
movl 0xb4(%rsp), %edx
movl 0xb0(%rsp), %esi
movq 0xa8(%rsp), %r10
movq 0x250(%rsp), %rax
movzwl (%rax), %eax
leaq 0x6bf38(%rip), %rdi     # 0xea346
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movb $0x0, %al
callq 0x117e0
movq 0x250(%rsp), %rax
movzwl (%rax), %eax
cmpl $0x1, %eax
jl 0x7e44b
movq 0x250(%rsp), %rax
movw 0x2(%rax), %ax
movw %ax, 0x24e(%rsp)
movq 0x250(%rsp), %rax
movzwl (%rax), %eax
cmpl $0x2, %eax
jl 0x7e46f
movq 0x250(%rsp), %rax
movw 0x4(%rax), %ax
movw %ax, 0x24c(%rsp)
movq 0x250(%rsp), %rax
movzwl (%rax), %eax
cmpl $0x3, %eax
jl 0x7e493
movq 0x250(%rsp), %rax
movw 0x6(%rax), %ax
movw %ax, 0x24a(%rsp)
movq 0x250(%rsp), %rax
movzwl (%rax), %eax
cmpl $0x4, %eax
jl 0x7e4b7
movq 0x250(%rsp), %rax
movw 0x8(%rax), %ax
movw %ax, 0x248(%rsp)
movq 0x258(%rsp), %rax
movss 0x70(%rax), %xmm0
movss %xmm0, 0x244(%rsp)
movss 0x244(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x7e4f1
jp 0x7e4f1
movss 0x49c38(%rip), %xmm0    # 0xc8120
movss %xmm0, 0x244(%rsp)
movq 0x258(%rsp), %rax
movw 0x46(%rax), %ax
movw %ax, 0x242(%rsp)
cmpq $0x0, 0x698(%rsp)
je 0x7e571
movq 0x258(%rsp), %rax
addq $0x4c, %rax
movq %rax, 0x238(%rsp)
movq 0x238(%rsp), %rax
movss 0x4(%rax), %xmm0
movq 0x698(%rsp), %rax
movss %xmm0, (%rax)
movq 0x238(%rsp), %rax
movss 0x8(%rax), %xmm0
movq 0x698(%rsp), %rax
movss %xmm0, 0x4(%rax)
movq 0x238(%rsp), %rax
movss 0xc(%rax), %xmm0
movq 0x698(%rsp), %rax
movss %xmm0, 0x8(%rax)
movq 0x258(%rsp), %rax
movq %rax, 0xa0(%rsp)
cmpq $0x0, %rax
je 0x7e594
movq 0xa0(%rsp), %rdi
callq 0x5680
movq 0x1b8(%rsp), %rdi
movzwl 0x24e(%rsp), %esi
movzwl 0x24c(%rsp), %edx
movzwl 0x24a(%rsp), %ecx
movzwl 0x248(%rsp), %r8d
callq 0x11900
movzwl 0x242(%rsp), %eax
movl %eax, 0x9c(%rsp)
subl $0x2, %eax
je 0x7e623
jmp 0x7e5d8
movl 0x9c(%rsp), %eax
subl $0x4, %eax
je 0x7e75b
jmp 0x7e5ea
movl 0x9c(%rsp), %eax
subl $0x8, %eax
je 0x7e8e2
jmp 0x7e5fc
movl 0x9c(%rsp), %eax
subl $0x10, %eax
je 0x7ea66
jmp 0x7e60e
movl 0x9c(%rsp), %eax
subl $0x40, %eax
je 0x7ebe4
jmp 0x7ed66
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rdi
movq $-0x1, %rax
cmpq $0x0, %rdi
cmovlq %rax, %rdi
callq 0x5040
movq %rax, 0x230(%rsp)
movq 0x230(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
movq 0x678(%rsp), %rdx
callq 0x754c0
movq 0x1b8(%rsp), %rdi
movq $0x0, 0x228(%rsp)
callq 0x117b0
movq %rax, 0x220(%rsp)
movq 0x228(%rsp), %rax
cmpq 0x220(%rsp), %rax
jae 0x7e733
movq 0x1b8(%rsp), %rax
movq 0x230(%rsp), %rcx
movq 0x228(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
cvtsi2ss %ecx, %xmm0
mulss 0x244(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x18(%rax), %rax
movq 0x228(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x228(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x228(%rsp)
jmp 0x7e6cd
movq 0x230(%rsp), %rax
movq %rax, 0x90(%rsp)
cmpq $0x0, %rax
je 0x7e756
movq 0x90(%rsp), %rdi
callq 0x5680
jmp 0x7eea5
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
cltq
movl $0x2, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x5040
movq %rax, 0x218(%rsp)
movq 0x218(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
movq 0x678(%rsp), %rdx
callq 0x7f170
testb $0x1, 0x267(%rsp)
je 0x7e833
movq 0x218(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
callq 0x7f100
movq 0x1b8(%rsp), %rdi
movq $0x0, 0x210(%rsp)
callq 0x117b0
movq %rax, 0x208(%rsp)
movq 0x210(%rsp), %rax
cmpq 0x208(%rsp), %rax
jae 0x7e8ba
movq 0x1b8(%rsp), %rax
movq 0x218(%rsp), %rcx
movq 0x210(%rsp), %rdx
movswl (%rcx,%rdx,2), %ecx
cvtsi2ss %ecx, %xmm0
mulss 0x244(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x18(%rax), %rax
movq 0x210(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x210(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x210(%rsp)
jmp 0x7e854
movq 0x218(%rsp), %rax
movq %rax, 0x88(%rsp)
cmpq $0x0, %rax
je 0x7e8dd
movq 0x88(%rsp), %rdi
callq 0x5680
jmp 0x7eea5
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
cltq
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x5040
movq %rax, 0x200(%rsp)
movq 0x200(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
movq 0x678(%rsp), %rdx
callq 0x75c00
testb $0x1, 0x267(%rsp)
je 0x7e9ba
movq 0x200(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
callq 0x7f370
movq 0x1b8(%rsp), %rdi
movq $0x0, 0x1f8(%rsp)
callq 0x117b0
movq %rax, 0x1f0(%rsp)
movq 0x1f8(%rsp), %rax
cmpq 0x1f0(%rsp), %rax
jae 0x7ea3e
movq 0x1b8(%rsp), %rax
movq 0x200(%rsp), %rcx
movq 0x1f8(%rsp), %rdx
cvtsi2ssl (%rcx,%rdx,4), %xmm0
mulss 0x244(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x18(%rax), %rax
movq 0x1f8(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1f8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1f8(%rsp)
jmp 0x7e9db
movq 0x200(%rsp), %rax
movq %rax, 0x80(%rsp)
cmpq $0x0, %rax
je 0x7ea61
movq 0x80(%rsp), %rdi
callq 0x5680
jmp 0x7eea5
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
cltq
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x5040
movq %rax, 0x1e8(%rsp)
movq 0x1e8(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
movq 0x678(%rsp), %rdx
callq 0x79a70
testb $0x1, 0x267(%rsp)
je 0x7eb3e
movq 0x1e8(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
callq 0x7aaa0
movq 0x1b8(%rsp), %rdi
movq $0x0, 0x1e0(%rsp)
callq 0x117b0
movq %rax, 0x1d8(%rsp)
movq 0x1e0(%rsp), %rax
cmpq 0x1d8(%rsp), %rax
jae 0x7ebc2
movq 0x1b8(%rsp), %rax
movq 0x1e8(%rsp), %rcx
movq 0x1e0(%rsp), %rdx
movss (%rcx,%rdx,4), %xmm0
mulss 0x244(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x18(%rax), %rax
movq 0x1e0(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1e0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1e0(%rsp)
jmp 0x7eb5f
movq 0x1e8(%rsp), %rax
movq %rax, 0x78(%rsp)
cmpq $0x0, %rax
je 0x7ebdf
movq 0x78(%rsp), %rdi
callq 0x5680
jmp 0x7eea5
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
cltq
movl $0x8, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x5040
movq %rax, 0x1d0(%rsp)
movq 0x1d0(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
movq 0x678(%rsp), %rdx
callq 0x7f400
testb $0x1, 0x267(%rsp)
je 0x7ecbc
movq 0x1d0(%rsp), %rdi
movzwl 0x24e(%rsp), %eax
movzwl 0x24c(%rsp), %ecx
imull %ecx, %eax
movzwl 0x24a(%rsp), %ecx
imull %ecx, %eax
movzwl 0x248(%rsp), %ecx
imull %ecx, %eax
movslq %eax, %rsi
callq 0x7f600
movq 0x1b8(%rsp), %rdi
movq $0x0, 0x1c8(%rsp)
callq 0x117b0
movq %rax, 0x1c0(%rsp)
movq 0x1c8(%rsp), %rax
cmpq 0x1c0(%rsp), %rax
jae 0x7ed44
movq 0x1b8(%rsp), %rax
movq 0x1d0(%rsp), %rcx
movq 0x1c8(%rsp), %rdx
movsd (%rcx,%rdx,8), %xmm0
movss 0x244(%rsp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movq 0x18(%rax), %rax
movq 0x1c8(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1c8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x1c8(%rsp)
jmp 0x7ecdd
movq 0x1d0(%rsp), %rax
movq %rax, 0x70(%rsp)
cmpq $0x0, %rax
je 0x7ed61
movq 0x70(%rsp), %rdi
callq 0x5680
jmp 0x7eea5
cmpq $0x0, 0x6a8(%rsp)
jne 0x7ed7e
movq 0x678(%rsp), %rdi
callq 0x5c6f0
movl $0x4008, %edi           # imm = 0x4008
callq 0x5240
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movq %rcx, 0x40(%rsp)
movl (%rax), %ecx
movl %ecx, 0x48(%rsp)
movl 0x4(%rax), %ecx
movl %ecx, 0x4c(%rsp)
movl 0x8(%rax), %ecx
movl %ecx, 0x50(%rsp)
movl 0xc(%rax), %ecx
movl %ecx, 0x54(%rsp)
movq 0x18(%rax), %rcx
movq %rcx, 0x58(%rsp)
movb 0x10(%rax), %dl
leaq 0x69c0c(%rip), %rcx     # 0xe89d2
leaq 0x4ad14(%rip), %rax     # 0xc9ae1
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x60(%rsp)
callq 0x118f0
movq %rax, 0x68(%rsp)
jmp 0x7ede5
movzwl 0x242(%rsp), %eax
movl %eax, 0x3c(%rsp)
cmpq $0x0, 0x6a0(%rsp)
je 0x7ee0b
movq 0x6a0(%rsp), %rax
movq %rax, 0x30(%rsp)
jmp 0x7ee19
leaq 0x6a678(%rip), %rax     # 0xe948a
movq %rax, 0x30(%rsp)
jmp 0x7ee19
movl 0x54(%rsp), %r9d
movl 0x50(%rsp), %r8d
movl 0x4c(%rsp), %ecx
movl 0x48(%rsp), %edx
movq 0x40(%rsp), %rdi
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %r10
movq 0x68(%rsp), %r11
movl 0x3c(%rsp), %ebx
movq 0x30(%rsp), %r14
movq %rsp, %rax
movq %r14, 0x20(%rax)
movl %ebx, 0x18(%rax)
movq %r11, 0x10(%rax)
movq %r10, 0x8(%rax)
movq %rsi, (%rax)
leaq 0x6b569(%rip), %rsi     # 0xea3cd
xorl %eax, %eax
callq 0x5c880
jmp 0x7ee6d
movq 0x40(%rsp), %rdi
leaq 0x80df7(%rip), %rsi     # 0xffc70
leaq -0x223c0(%rip), %rdx    # 0x5cac0
callq 0x5920
movq 0x40(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x690(%rsp)
movl %eax, 0x68c(%rsp)
callq 0x53a0
jmp 0x7eed0
cmpq $0x0, 0x6a8(%rsp)
jne 0x7eebd
movq 0x678(%rsp), %rdi
callq 0x5c6f0
movq 0x1b8(%rsp), %rax
addq $0x6b8, %rsp            # imm = 0x6B8
popq %rbx
popq %r14
retq
movq 0x690(%rsp), %rdi
callq 0x5970
nopl (%rax)