anchor.diff:          // left
           snakePoints[i].x -= 1;
           if (snakePoints[i].x < 0) {
  -          snakePoints[i].x = (bitmapWidth / 10);
  +          snakePoints[i].x = (bitmapWidth / 10).floor();
           }
         } else if (direction.y == 1) {
           // down
  
positive.code:   bitmapInfo.biClrUsed = 0;
    bitmapInfo.biClrImportant = 0;
  
    int bitmapMemorySize = (width * height) * bytesPerPixel;
    bitmapMemory =
        VirtualAlloc(nullptr, bitmapMemorySize, MEM_COMMIT, PAGE_READWRITE);
  
    // init other variables here
    blocksperwidth = Width / 10;
    blocksperheight = Height / 10;
    data.resize(blocksperheight, List<int>(blocksperwidth, 0));
  
    // resetGame();
  }
  
  void draw(
      int DeviceContext, RECT WindowRect, int X, int Y, int Width, int Height) {
    // update memory state bitmap to window
    // this is a rect to rect copy
    final WindowWidth = WindowRect.right - WindowRect.left;
    final WindowHeight = WindowRect.bottom - WindowRect.top;
    StretchDIBits(
        DeviceContext,
        //X, Y, Width, Height, X, Y, Width, Height,
        0,
        0,
        BitmapWidth,
        BitmapHeight,
        0,
        WindowHeight + 1,
        WindowWidth,
        -WindowHeight,
        BitmapMemory,
        BitmapInfo,
        DIB_RGB_COLORS,
        SRCCOPY);
  }
  
  int MainWindowProc(int hwnd, int uMsg, int wParam, int lParam) {
  
negative.code:         // up
          snakePoints[i].y -= 1;
          if (snakePoints[i].y < 0) {
            snakePoints[i].y = (bitmapHeight / 10).floor() - 1;
          }
        }
      } else {
  