// File: manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImgDisplay::_assign(unsigned int, unsigned int, char const*, unsigned int, bool, bool)
void _assign(const unsigned int dimw, const unsigned int dimh, const char *const ptitle=0,
                 const unsigned int normalization_type=3,
                 const bool fullscreen_flag=false, const bool closed_flag=false) {
      cimg::mutex(14);

      // Allocate space for window title
      const char *const nptitle = ptitle?ptitle:"";
      const unsigned int s = std::strlen(nptitle) + 1;
      char *const tmp_title = s?new char[s]:0;
      if (s) std::memcpy(tmp_title,nptitle,s*sizeof(char));

      // Destroy previous display window if existing
      if (!is_empty()) assign();

      // Open X11 display and retrieve graphical properties.
      Display* &dpy = cimg::X11_attr().display;
      if (!dpy) {
        dpy = XOpenDisplay(0);
        if (!dpy)
          throw CImgDisplayException(_cimgdisplay_instance
                                     "assign(): Failed to open X11 display.",
                                     cimgdisplay_instance);

        cimg::X11_attr().nb_bits = DefaultDepth(dpy,DefaultScreen(dpy));
        if (cimg::X11_attr().nb_bits!=8 && cimg::X11_attr().nb_bits!=16 &&
            cimg::X11_attr().nb_bits!=24 && cimg::X11_attr().nb_bits!=32)
          throw CImgDisplayException(_cimgdisplay_instance
                                     "assign(): Invalid %u bits screen mode detected "
                                     "(only 8, 16, 24 and 32 bits modes are managed).",
                                     cimgdisplay_instance,
                                     cimg::X11_attr().nb_bits);
        XVisualInfo vtemplate;
        vtemplate.visualid = XVisualIDFromVisual(DefaultVisual(dpy,DefaultScreen(dpy)));
        int nb_visuals;
        XVisualInfo *vinfo = XGetVisualInfo(dpy,VisualIDMask,&vtemplate,&nb_visuals);
        if (vinfo && vinfo->red_mask<vinfo->blue_mask) cimg::X11_attr().is_blue_first = true;
        cimg::X11_attr().byte_order = ImageByteOrder(dpy);
        XFree(vinfo);

        XLockDisplay(dpy);
        cimg::X11_attr().events_thread = new pthread_t;
        pthread_create(cimg::X11_attr().events_thread,0,_events_thread,0);
      } else XLockDisplay(dpy);

      // Set display variables.
      _width = cimg::min(dimw,(unsigned int)screen_width());
      _height = cimg::min(dimh,(unsigned int)screen_height());
      _normalization = normalization_type<4?normalization_type:3;
      _is_fullscreen = fullscreen_flag;
      _window_x = _window_y = 0;
      _is_closed = closed_flag;
      _title = tmp_title;
      flush();

      // Create X11 window (and LUT, if 8bits display)
      if (_is_fullscreen) {
        if (!_is_closed) _init_fullscreen();
        const unsigned int sx = screen_width(), sy = screen_height();
        XSetWindowAttributes winattr;
        winattr.override_redirect = 1;
        _window = XCreateWindow(dpy,DefaultRootWindow(dpy),(sx-_width)/2,(sy-_height)/2,_width,_height,0,0,
                                InputOutput,CopyFromParent,CWOverrideRedirect,&winattr);
      } else
        _window = XCreateSimpleWindow(dpy,DefaultRootWindow(dpy),0,0,_width,_height,0,0L,0L);

      XSelectInput(dpy,_window,
                   ExposureMask | StructureNotifyMask | ButtonPressMask | KeyPressMask | PointerMotionMask |
                   EnterWindowMask | LeaveWindowMask | ButtonReleaseMask | KeyReleaseMask);

      XStoreName(dpy,_window,_title?_title:" ");
      if (cimg::X11_attr().nb_bits==8) {
        _colormap = XCreateColormap(dpy,_window,DefaultVisual(dpy,DefaultScreen(dpy)),AllocAll);
        _set_colormap(_colormap,3);
        XSetWindowColormap(dpy,_window,_colormap);
      }

      static const char *const _window_class = cimg_appname;
      XClassHint *const window_class = XAllocClassHint();
      window_class->res_name = (char*)_window_class;
      window_class->res_class = (char*)_window_class;
      XSetClassHint(dpy,_window,window_class);
      XFree(window_class);

      _window_width = _width;
      _window_height = _height;

      // Create XImage
#ifdef cimg_use_xshm
      _shminfo = 0;
      if (XShmQueryExtension(dpy)) {
        _shminfo = new XShmSegmentInfo;
        _image = XShmCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)),cimg::X11_attr().nb_bits,
                                 ZPixmap,0,_shminfo,_width,_height);
        if (!_image) { delete _shminfo; _shminfo = 0; }
        else {
          _shminfo->shmid = shmget(IPC_PRIVATE,_image->bytes_per_line*_image->height,IPC_CREAT|0777);
          if (_shminfo->shmid==-1) { XDestroyImage(_image); delete _shminfo; _shminfo = 0; }
          else {
            _shminfo->shmaddr = _image->data = (char*)(_data = shmat(_shminfo->shmid,0,0));
            if (_shminfo->shmaddr==(char*)-1) {
              shmctl(_shminfo->shmid,IPC_RMID,0); XDestroyImage(_image); delete _shminfo; _shminfo = 0;
            } else {
              _shminfo->readOnly = 0;
              cimg::X11_attr().is_shm_enabled = true;
              XErrorHandler oldXErrorHandler = XSetErrorHandler(_assign_xshm);
              XShmAttach(dpy,_shminfo);
              XSync(dpy,0);
              XSetErrorHandler(oldXErrorHandler);
              if (!cimg::X11_attr().is_shm_enabled) {
                shmdt(_shminfo->shmaddr); shmctl(_shminfo->shmid,IPC_RMID,0); XDestroyImage(_image);
                delete _shminfo; _shminfo = 0;
              }
            }
          }
        }
      }
      if (!_shminfo)
#endif
        {
          const unsigned long buf_size = (unsigned long)_width*_height*(cimg::X11_attr().nb_bits==8?1:
                                                                        (cimg::X11_attr().nb_bits==16?2:4));
          _data = std::malloc(buf_size);
          _image = XCreateImage(dpy,DefaultVisual(dpy,DefaultScreen(dpy)),cimg::X11_attr().nb_bits,
                                ZPixmap,0,(char*)_data,_width,_height,8,0);
        }

      _wm_window_atom = XInternAtom(dpy,"WM_DELETE_WINDOW",0);
      _wm_protocol_atom = XInternAtom(dpy,"WM_PROTOCOLS",0);
      XSetWMProtocols(dpy,_window,&_wm_window_atom,1);

      if (_is_fullscreen) XGrabKeyboard(dpy,_window,1,GrabModeAsync,GrabModeAsync,CurrentTime);
      cimg::X11_attr().wins[cimg::X11_attr().nb_wins++]=this;
      if (!_is_closed) _map_window(); else { _window_x = _window_y = cimg::type<int>::min(); }
      XUnlockDisplay(dpy);
      cimg::mutex(14,0);
    }

// Assembly:
subq $0x268, %rsp            # imm = 0x268
movl %r9d, %eax
movq %rcx, 0x108(%rsp)
movl %edx, %ecx
movq 0x108(%rsp), %rdx
movl %ecx, 0x110(%rsp)
movl %esi, %ecx
movl 0x110(%rsp), %esi
movl %ecx, 0x114(%rsp)
movq %rdi, %r9
movl 0x114(%rsp), %edi
movb %al, %cl
movb 0x270(%rsp), %al
movq %r9, 0x260(%rsp)
movl %edi, 0x25c(%rsp)
movl %esi, 0x258(%rsp)
movq %rdx, 0x250(%rsp)
movl %r8d, 0x24c(%rsp)
andb $0x1, %cl
movb %cl, 0x24b(%rsp)
andb $0x1, %al
movb %al, 0x24a(%rsp)
movq 0x260(%rsp), %rax
movq %rax, 0x118(%rsp)
movl $0xe, %edi
movl $0x1, %esi
callq 0x12d30
cmpq $0x0, 0x250(%rsp)
je 0x3341b
movq 0x250(%rsp), %rax
movq %rax, 0x100(%rsp)
jmp 0x3342c
leaq 0xb55b0(%rip), %rax     # 0xe89d2
movq %rax, 0x100(%rsp)
jmp 0x3342c
movq 0x100(%rsp), %rax
movq %rax, 0x240(%rsp)
movq 0x240(%rsp), %rdi
callq 0x5210
addq $0x1, %rax
movl %eax, 0x23c(%rsp)
movl 0x23c(%rsp), %eax
movb $0x0, 0x21f(%rsp)
cmpl $0x0, %eax
je 0x334a8
movl 0x23c(%rsp), %eax
movl %eax, %edi
movq %rdi, 0xf0(%rsp)
callq 0x5040
movq 0xf0(%rsp), %rcx
movq %rax, 0x228(%rsp)
movq %rcx, 0x220(%rsp)
movb $0x1, 0x21f(%rsp)
movq %rax, 0xf8(%rsp)
jmp 0x334b4
xorl %eax, %eax
movq %rax, 0xf8(%rsp)
jmp 0x334b4
movq 0xf8(%rsp), %rax
movq %rax, 0x230(%rsp)
cmpl $0x0, 0x23c(%rsp)
je 0x334f0
movq 0x230(%rsp), %rdi
movq 0x240(%rsp), %rsi
movl 0x23c(%rsp), %eax
movl %eax, %edx
shlq $0x0, %rdx
callq 0x5420
movq 0x118(%rsp), %rdi
callq 0x37140
testb $0x1, %al
jne 0x3350e
movq 0x118(%rsp), %rdi
callq 0x32b00
callq 0x37200
addq $0x2068, %rax           # imm = 0x2068
movq %rax, 0x210(%rsp)
movq 0x210(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x339ea
xorl %eax, %eax
movl %eax, %edi
callq 0x56e0
movq %rax, %rcx
movq 0x210(%rsp), %rax
movq %rcx, (%rax)
movq 0x210(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x336af
movl $0x4008, %edi           # imm = 0x4008
callq 0x5240
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0xd8(%rsp)
movl 0x18(%rax), %ecx
movl %ecx, 0xe0(%rsp)
movl 0x1c(%rax), %ecx
movl %ecx, 0xe4(%rsp)
movl 0x20(%rax), %ecx
movl %ecx, 0xe8(%rsp)
movq 0x38(%rax), %rcx
movb $0x22, %al
movb $0x5b, %dl
movb %dl, 0xee(%rsp)
cmpq $0x0, %rcx
movb %al, 0xef(%rsp)
jne 0x335c1
movb 0xee(%rsp), %al
movb %al, 0xef(%rsp)
movq 0x118(%rsp), %rax
movb 0xef(%rsp), %cl
movsbl %cl, %ecx
movl %ecx, 0xd4(%rsp)
cmpq $0x0, 0x38(%rax)
je 0x335f7
movq 0x118(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0xc8(%rsp)
jmp 0x33608
leaq 0xb509e(%rip), %rax     # 0xe869c
movq %rax, 0xc8(%rsp)
jmp 0x33608
movl 0xd4(%rsp), %r9d
movl 0xe8(%rsp), %r8d
movl 0xe4(%rsp), %ecx
movl 0xe0(%rsp), %edx
movq 0xd8(%rsp), %rdi
movq 0x118(%rsp), %rax
movq 0xc8(%rsp), %rsi
movq 0x38(%rax), %rax
testq %rax, %rax
movl $0x22, %eax
movl $0x5d, %r10d
cmovnel %eax, %r10d
movq %rsp, %rax
movl %r10d, 0x8(%rax)
movq %rsi, (%rax)
leaq 0xb4fe8(%rip), %rsi     # 0xe864d
xorl %eax, %eax
callq 0x3b160
jmp 0x3366e
movq 0xd8(%rsp), %rdi
leaq 0xcc5ab(%rip), %rsi     # 0xffc28
leaq 0x7c5c(%rip), %rdx      # 0x3b2e0
callq 0x5920
movq 0xd8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x208(%rsp)
movl %eax, 0x204(%rsp)
callq 0x53a0
jmp 0x3406e
movq 0x210(%rsp), %rax
movq (%rax), %rax
movq 0xe8(%rax), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rcx
movslq 0xe0(%rcx), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x38(%rax), %eax
movl %eax, 0xc4(%rsp)
callq 0x37200
movl 0xc4(%rsp), %ecx
movl %ecx, 0x2070(%rax)
callq 0x37200
cmpl $0x8, 0x2070(%rax)
je 0x338d0
callq 0x37200
cmpl $0x10, 0x2070(%rax)
je 0x338d0
callq 0x37200
cmpl $0x18, 0x2070(%rax)
je 0x338d0
callq 0x37200
cmpl $0x20, 0x2070(%rax)
je 0x338d0
movl $0x4008, %edi           # imm = 0x4008
callq 0x5240
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0xa8(%rsp)
movl 0x18(%rax), %ecx
movl %ecx, 0xb4(%rsp)
movl 0x1c(%rax), %ecx
movl %ecx, 0xb8(%rsp)
movl 0x20(%rax), %ecx
movl %ecx, 0xbc(%rsp)
movq 0x38(%rax), %rcx
movb $0x22, %al
movb $0x5b, %dl
movb %dl, 0xc2(%rsp)
cmpq $0x0, %rcx
movb %al, 0xc3(%rsp)
jne 0x337a3
movb 0xc2(%rsp), %al
movb %al, 0xc3(%rsp)
movq 0x118(%rsp), %rax
movb 0xc3(%rsp), %cl
movsbl %cl, %ecx
movl %ecx, 0xa4(%rsp)
cmpq $0x0, 0x38(%rax)
je 0x337d9
movq 0x118(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x98(%rsp)
jmp 0x337ea
leaq 0xb4ebc(%rip), %rax     # 0xe869c
movq %rax, 0x98(%rsp)
jmp 0x337ea
movq 0x118(%rsp), %rax
movq 0x98(%rsp), %rcx
movq %rcx, 0x80(%rsp)
movq 0x38(%rax), %rax
testq %rax, %rax
movl $0x22, %ecx
movl $0x5d, %eax
cmovnel %ecx, %eax
movl %eax, 0x8c(%rsp)
callq 0x37200
movq %rax, 0x90(%rsp)
jmp 0x3382c
movl 0xa4(%rsp), %r9d
movl 0xbc(%rsp), %r8d
movl 0xb8(%rsp), %ecx
movl 0xb4(%rsp), %edx
movq 0xa8(%rsp), %rdi
movq 0x80(%rsp), %rsi
movl 0x8c(%rsp), %r10d
movq 0x90(%rsp), %rax
movl 0x2070(%rax), %r11d
movq %rsp, %rax
movl %r11d, 0x10(%rax)
movl %r10d, 0x8(%rax)
movq %rsi, (%rax)
leaq 0xb4e1f(%rip), %rsi     # 0xe86a5
xorl %eax, %eax
callq 0x3b160
jmp 0x3388f
movq 0xa8(%rsp), %rdi
leaq 0xcc38a(%rip), %rsi     # 0xffc28
leaq 0x7a3b(%rip), %rdx      # 0x3b2e0
callq 0x5920
movq 0xa8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x208(%rsp)
movl %eax, 0x204(%rsp)
callq 0x53a0
jmp 0x3406e
movq 0x210(%rsp), %rax
movq (%rax), %rax
movq 0xe8(%rax), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rcx
movslq 0xe0(%rcx), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rdi
callq 0x58e0
movq %rax, 0x1c8(%rsp)
movq 0x210(%rsp), %rax
movq (%rax), %rdi
movl $0x1, %esi
leaq 0x1c0(%rsp), %rdx
leaq 0x1bc(%rsp), %rcx
callq 0x5430
movq %rax, 0x1b0(%rsp)
cmpq $0x0, 0x1b0(%rsp)
je 0x3396a
movq 0x1b0(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x1b0(%rsp), %rcx
cmpq 0x30(%rcx), %rax
jae 0x3396a
callq 0x37200
movb $0x1, 0x2074(%rax)
movq 0x210(%rsp), %rax
movq (%rax), %rax
cmpl $0x0, 0x50(%rax)
setne %al
movb %al, 0x77(%rsp)
callq 0x37200
movb 0x77(%rsp), %cl
andb $0x1, %cl
movb %cl, 0x2076(%rax)
movq 0x1b0(%rsp), %rdi
callq 0x5640
movq 0x210(%rsp), %rax
movq (%rax), %rdi
callq 0x5290
movl $0x8, %edi
callq 0x5540
movq %rax, 0x78(%rsp)
callq 0x37200
movq 0x78(%rsp), %rcx
movq %rcx, 0x8(%rax)
callq 0x37200
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %ecx
leaq 0x7910(%rip), %rdx      # 0x3b2f0
movq %rcx, %rsi
callq 0x59f0
jmp 0x339fa
movq 0x210(%rsp), %rax
movq (%rax), %rdi
callq 0x5290
callq 0x17990
movl %eax, 0x1ac(%rsp)
leaq 0x25c(%rsp), %rdi
leaq 0x1ac(%rsp), %rsi
callq 0x23ba0
movl %eax, %ecx
movq 0x118(%rsp), %rax
movl %ecx, 0x18(%rax)
callq 0x17ab0
movl %eax, 0x1a8(%rsp)
leaq 0x258(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x23ba0
movl %eax, %ecx
movq 0x118(%rsp), %rax
movl %ecx, 0x1c(%rax)
cmpl $0x4, 0x24c(%rsp)
jae 0x33a6d
movl 0x24c(%rsp), %eax
movl %eax, 0x70(%rsp)
jmp 0x33a78
movl $0x3, %eax
movl %eax, 0x70(%rsp)
jmp 0x33a78
movq 0x118(%rsp), %rdi
movl 0x70(%rsp), %eax
movl %eax, 0x20(%rdi)
movb 0x24b(%rsp), %al
andb $0x1, %al
movb %al, 0x30(%rdi)
movl $0x0, 0x450(%rdi)
movl 0x450(%rdi), %eax
movl %eax, 0x44c(%rdi)
movb 0x24a(%rsp), %al
andb $0x1, %al
movb %al, 0x460(%rdi)
movq 0x230(%rsp), %rax
movq %rax, 0x38(%rdi)
callq 0x37180
movq 0x118(%rsp), %rax
testb $0x1, 0x30(%rax)
je 0x33bd7
movq 0x118(%rsp), %rax
movb 0x460(%rax), %al
testb $0x1, %al
jne 0x33afa
movq 0x118(%rsp), %rdi
callq 0x3b460
callq 0x17990
movl %eax, 0x1a4(%rsp)
callq 0x17ab0
movl %eax, %ecx
movq 0x118(%rsp), %rax
movl %ecx, 0x1a0(%rsp)
movl $0x1, 0x188(%rsp)
movq 0x210(%rsp), %rcx
movq (%rcx), %rdi
movq 0x210(%rsp), %rcx
movq (%rcx), %rcx
movq 0xe8(%rcx), %rcx
movq 0x210(%rsp), %rdx
movq (%rdx), %rdx
movslq 0xe0(%rdx), %rdx
shlq $0x7, %rdx
addq %rdx, %rcx
movq 0x10(%rcx), %rsi
movl 0x1a4(%rsp), %edx
subl 0x18(%rax), %edx
shrl %edx
movl 0x1a0(%rsp), %ecx
subl 0x1c(%rax), %ecx
shrl %ecx
movl 0x18(%rax), %r8d
movl 0x1c(%rax), %r9d
xorl %eax, %eax
xorl %eax, %eax
leaq 0x130(%rsp), %rax
movl $0x0, (%rsp)
movl $0x0, 0x8(%rsp)
movl $0x1, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq $0x200, 0x20(%rsp)      # imm = 0x200
movq %rax, 0x28(%rsp)
callq 0x5840
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x4d0(%rax)
jmp 0x33c57
movq 0x118(%rsp), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rdi
movq 0x210(%rsp), %rcx
movq (%rcx), %rcx
movq 0xe8(%rcx), %rcx
movq 0x210(%rsp), %rdx
movq (%rdx), %rdx
movslq 0xe0(%rdx), %rdx
shlq $0x7, %rdx
addq %rdx, %rcx
movq 0x10(%rcx), %rsi
movl 0x18(%rax), %r8d
movl 0x1c(%rax), %r9d
xorl %ecx, %ecx
xorl %eax, %eax
movl %ecx, %edx
movl $0x0, (%rsp)
movq $0x0, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
callq 0x5190
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x4d0(%rax)
movq 0x118(%rsp), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rdi
movq 0x4d0(%rax), %rsi
movl $0x2807f, %edx          # imm = 0x2807F
callq 0x5300
movq 0x118(%rsp), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rcx
movq %rcx, 0x60(%rsp)
movq 0x4d0(%rax), %rcx
movq %rcx, 0x68(%rsp)
cmpq $0x0, 0x38(%rax)
je 0x33cb9
movq 0x118(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x58(%rsp)
jmp 0x33cc7
leaq 0xb7c0f(%rip), %rax     # 0xeb8cf
movq %rax, 0x58(%rsp)
jmp 0x33cc7
movq 0x68(%rsp), %rsi
movq 0x60(%rsp), %rdi
movq 0x58(%rsp), %rdx
callq 0x50d0
callq 0x37200
cmpl $0x8, 0x2070(%rax)
jne 0x33d89
movq 0x118(%rsp), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rdi
movq 0x4d0(%rax), %rsi
movq 0x210(%rsp), %rax
movq (%rax), %rax
movq 0xe8(%rax), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rcx
movslq 0xe0(%rcx), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rdx
movl $0x1, %ecx
callq 0x5330
movq 0x118(%rsp), %rdi
movq %rax, 0x4e0(%rdi)
movq %rdi, %rsi
addq $0x4e0, %rsi            # imm = 0x4E0
movl $0x3, %edx
callq 0x3b810
movq 0x118(%rsp), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rdi
movq 0x4d0(%rax), %rsi
movq 0x4e0(%rax), %rdx
callq 0x5870
callq 0x57e0
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x128(%rsp)
movq 0x128(%rsp), %rcx
leaq 0xb497d(%rip), %rdx     # 0xe872d
movq %rdx, (%rcx)
movq 0x128(%rsp), %rcx
leaq 0xb496b(%rip), %rdx     # 0xe872d
movq %rdx, 0x8(%rcx)
movq 0x210(%rsp), %rcx
movq (%rcx), %rdi
movq 0x4d0(%rax), %rsi
movq 0x128(%rsp), %rdx
callq 0x52c0
movq 0x128(%rsp), %rdi
callq 0x5640
movq 0x118(%rsp), %rcx
movl 0x18(%rcx), %eax
movl %eax, 0x40(%rcx)
movl 0x1c(%rcx), %eax
movl %eax, 0x44(%rcx)
movl 0x18(%rcx), %eax
movl 0x1c(%rcx), %ecx
imulq %rcx, %rax
movq %rax, 0x50(%rsp)
callq 0x37200
cmpl $0x8, 0x2070(%rax)
jne 0x33e2e
movl $0x1, %eax
movl %eax, 0x4c(%rsp)
jmp 0x33e4d
callq 0x37200
movl 0x2070(%rax), %edx
movl $0x4, %eax
movl $0x2, %ecx
cmpl $0x10, %edx
cmovel %ecx, %eax
movl %eax, 0x4c(%rsp)
movq 0x50(%rsp), %rax
movl 0x4c(%rsp), %ecx
movslq %ecx, %rcx
imulq %rcx, %rax
movq %rax, 0x120(%rsp)
movq 0x120(%rsp), %rdi
callq 0x56a0
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x4f0(%rax)
movq 0x210(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x210(%rsp), %rax
movq (%rax), %rax
movq 0xe8(%rax), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rcx
movslq 0xe0(%rcx), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rax
movq %rax, 0x40(%rsp)
callq 0x37200
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq %rax, %rcx
movq 0x118(%rsp), %rax
movl 0x2070(%rcx), %edx
movq 0x4f0(%rax), %r9
movl 0x18(%rax), %r10d
movl 0x1c(%rax), %eax
movl $0x2, %ecx
xorl %r8d, %r8d
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movl $0x8, 0x10(%rsp)
movl $0x0, 0x18(%rsp)
callq 0x5620
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x4e8(%rax)
movq 0x210(%rsp), %rax
movq (%rax), %rdi
leaq 0xb47f3(%rip), %rsi     # 0xe8732
xorl %edx, %edx
callq 0x53c0
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x4c0(%rax)
movq 0x210(%rsp), %rax
movq (%rax), %rdi
leaq 0xb47d9(%rip), %rsi     # 0xe8743
xorl %edx, %edx
callq 0x53c0
movq 0x118(%rsp), %rdx
movq %rax, 0x4c8(%rdx)
movq 0x210(%rsp), %rax
movq (%rax), %rdi
movq 0x4d0(%rdx), %rsi
addq $0x4c0, %rdx            # imm = 0x4C0
movl $0x1, %ecx
callq 0x52b0
movq 0x118(%rsp), %rax
testb $0x1, 0x30(%rax)
je 0x33fe1
movq 0x118(%rsp), %rax
movq 0x210(%rsp), %rcx
movq (%rcx), %rdi
movq 0x4d0(%rax), %rsi
movl $0x1, %r8d
xorl %eax, %eax
movl %eax, %r9d
movl %r8d, %edx
movl %r8d, %ecx
callq 0x5610
callq 0x37200
movq %rax, 0x30(%rsp)
callq 0x37200
movq 0x30(%rsp), %rcx
movq %rax, %rsi
movq 0x118(%rsp), %rax
movl (%rsi), %edx
movl %edx, %edi
addl $0x1, %edi
movl %edi, (%rsi)
movl %edx, %edx
movq %rax, 0x68(%rcx,%rdx,8)
movb 0x460(%rax), %al
testb $0x1, %al
jne 0x34029
movq 0x118(%rsp), %rdi
callq 0x3bb40
jmp 0x3404a
callq 0x3bc90
movl %eax, %ecx
movq 0x118(%rsp), %rax
movl %ecx, 0x450(%rax)
movl 0x450(%rax), %ecx
movl %ecx, 0x44c(%rax)
movq 0x210(%rsp), %rax
movq (%rax), %rdi
callq 0x5220
movl $0xe, %edi
xorl %esi, %esi
callq 0x12d30
addq $0x268, %rsp            # imm = 0x268
retq
movq 0x208(%rsp), %rdi
callq 0x5970
nopl (%rax,%rax)