Program: 86652
Project: 86652
Buggy source:
/** 
 * @param dt
 * @return true if blocked
 */
private boolean movementUpdate(TimeStep timeStep){
  if (isDestroyed()) {
    return false;
  }
  boolean isBlocked=false;
  boolean hasThrottle=!this.vel.isZero();
  if (!hasThrottle && !this.isStopped) {
    this.isStopping=true;
  }
  if (isAlive() && (hasThrottle || this.isStopping)) {
    if (currentState != State.WALKING && currentState != State.SPRINTING) {
      currentState=State.RUNNING;
    }
    if (this.throttleWarmupTime < 600) {
      this.throttleWarmupTime+=timeStep.getDeltaTime();
      if (hasOperator() && this.throttleWarmupTime > 590) {
        game.emitSound(getOperator().getId(),SoundType.TANK_REV_UP,getCenterPos());
      }
    }
 else {
      this.throttleStartTime-=timeStep.getDeltaTime();
      if (this.isStopping) {
        this.vel.set(this.previousVel);
        this.stopEase.update(timeStep);
        if (this.stopEase.isExpired()) {
          this.isStopping=false;
          this.isStopped=true;
          return isBlocked;
        }
      }
 else {
        this.stopEase.reset(90f,0f,800);
        this.isStopped=false;
        this.previousVel.set(this.vel);
        if (hasOperator()) {
        }
      }
      float normalSpeed=this.isStopping ? this.stopEase.getValue() : 90f;
      final float movementSpeed=this.throttleStartTime > 0 ? 160f : normalSpeed;
      float dt=(float)timeStep.asFraction();
      float newX=pos.x + vel.x * movementSpeed * dt;
      float newY=pos.y + vel.y * movementSpeed * dt;
      Map map=game.getMap();
      boolean isXBlocked=false;
      boolean isYBlocked=false;
      bounds.x=(int)newX;
      if (map.rectCollides(bounds)) {
        vehicleBB.setLocation(newX + WeaponConstants.TANK_AABB_WIDTH / 2f,vehicleBB.center.y);
        isBlocked=map.rectCollides(vehicleBB);
        if (isBlocked) {
          bounds.x=(int)pos.x;
          isXBlocked=true;
        }
      }
      if (!isBlocked) {
        vehicleBB.setLocation(newX + WeaponConstants.TANK_AABB_WIDTH / 2f,vehicleBB.center.y);
        if (collidesAgainstVehicle(bounds)) {
          bounds.x=(int)pos.x;
          isBlocked=true;
          isXBlocked=true;
        }
      }
      bounds.y=(int)newY;
      if (map.rectCollides(bounds)) {
        vehicleBB.setLocation(vehicleBB.center.x,newY + WeaponConstants.TANK_AABB_HEIGHT / 2f);
        isBlocked=map.rectCollides(vehicleBB);
        if (isBlocked) {
          bounds.y=(int)pos.y;
          isYBlocked=true;
        }
      }
      if (!isBlocked) {
        vehicleBB.setLocation(vehicleBB.center.x,newY + WeaponConstants.TANK_AABB_HEIGHT / 2f);
        if (collidesAgainstVehicle(bounds)) {
          bounds.y=(int)pos.y;
          isBlocked=true;
          isYBlocked=true;
        }
      }
      if (isBlocked && !continueIfBlock()) {
        bounds.x=(int)pos.x;
        bounds.y=(int)pos.y;
        isXBlocked=isYBlocked=true;
      }
      pos.x=isXBlocked ? pos.x : newX;
      pos.y=isYBlocked ? pos.y : newY;
      vel.zeroOut();
    }
  }
 else {
    this.currentState=State.IDLE;
    this.throttleWarmupTime=0;
    this.throttleStartTime=200;
  }
  return isBlocked;
}

Fixed version (ground truth):
/** 
 * @param dt
 * @return true if blocked
 */
private boolean movementUpdate(TimeStep timeStep){
  if (isDestroyed()) {
    return false;
  }
  boolean isBlocked=false;
  boolean hasThrottle=!this.vel.isZero();
  if (!hasThrottle && !this.isStopped) {
    this.isStopping=true;
  }
  if (isAlive() && (hasThrottle || this.isStopping)) {
    if (currentState != State.WALKING && currentState != State.SPRINTING) {
      currentState=State.RUNNING;
    }
    if (this.throttleWarmupTime < 600) {
      this.throttleWarmupTime+=timeStep.getDeltaTime();
      if (hasOperator() && this.throttleWarmupTime > 590) {
        game.emitSound(getOperator().getId(),SoundType.TANK_REV_UP,getCenterPos());
      }
    }
 else {
      this.throttleStartTime-=timeStep.getDeltaTime();
      if (this.isStopping) {
        this.vel.set(this.previousVel);
        this.stopEase.update(timeStep);
        if (this.stopEase.isExpired()) {
          this.isStopping=false;
          this.isStopped=true;
          return isBlocked;
        }
      }
 else {
        this.stopEase.reset(90f,0f,800);
        this.isStopped=false;
        this.previousVel.set(this.vel);
        if (hasOperator()) {
        }
      }
      float normalSpeed=this.isStopping ? this.stopEase.getValue() : 90f;
      final float movementSpeed=this.throttleStartTime > 0 ? 160f : normalSpeed;
      float dt=(float)timeStep.asFraction();
      float newX=pos.x + vel.x * movementSpeed * dt;
      float newY=pos.y + vel.y * movementSpeed * dt;
      newX=Math.max(0,newX);
      newY=Math.max(0,newY);
      Map map=game.getMap();
      boolean isXBlocked=false;
      boolean isYBlocked=false;
      bounds.x=(int)newX;
      if (map.rectCollides(bounds)) {
        vehicleBB.setLocation(newX + WeaponConstants.TANK_AABB_WIDTH / 2f,vehicleBB.center.y);
        isBlocked=map.rectCollides(vehicleBB);
        if (isBlocked) {
          bounds.x=(int)pos.x;
          isXBlocked=true;
        }
      }
      if (!isBlocked) {
        vehicleBB.setLocation(newX + WeaponConstants.TANK_AABB_WIDTH / 2f,vehicleBB.center.y);
        if (collidesAgainstVehicle(bounds)) {
          bounds.x=(int)pos.x;
          isBlocked=true;
          isXBlocked=true;
        }
      }
      bounds.y=(int)newY;
      if (map.rectCollides(bounds)) {
        vehicleBB.setLocation(vehicleBB.center.x,newY + WeaponConstants.TANK_AABB_HEIGHT / 2f);
        isBlocked=map.rectCollides(vehicleBB);
        if (isBlocked) {
          bounds.y=(int)pos.y;
          isYBlocked=true;
        }
      }
      if (!isBlocked) {
        vehicleBB.setLocation(vehicleBB.center.x,newY + WeaponConstants.TANK_AABB_HEIGHT / 2f);
        if (collidesAgainstVehicle(bounds)) {
          bounds.y=(int)pos.y;
          isBlocked=true;
          isYBlocked=true;
        }
      }
      if (isBlocked && !continueIfBlock()) {
        bounds.x=(int)pos.x;
        bounds.y=(int)pos.y;
        isXBlocked=isYBlocked=true;
      }
      pos.x=isXBlocked ? pos.x : newX;
      pos.y=isYBlocked ? pos.y : newY;
      vel.zeroOut();
    }
  }
 else {
    this.currentState=State.IDLE;
    this.throttleWarmupTime=0;
    this.throttleStartTime=200;
  }
  return isBlocked;
}