Code:
// factor in time (time_step), was using frame
// expect faults
// just a guess
var sprinting = 0;  // seconds sprinting
var tired = 0;  // at sprinting == 300, then sprinting > 0
function sprint() {
	if (key_shift && !tired) {
		// if moving?
		sprinting += time_step * 0.0625;
		sprinting = minv(sprinting, 300);
		tired = (sprinting >= 300);
		player.speed = 60;
	} else {
		player.speed = 10;
		if (tired && !key_shift) { // stop pressing key_shift
			sprinting -= time_step * 0.0625;
			sprinting = maxv(sprinting, 0);
			tired = (sprinting >= 0);
		}
	}
}