def light(los_map, world_pos, size, row, start_slope, end_slope, xx, xy, yx, yy):
	if start_slope < end_slope:
		return False
	
	x, y = world_pos
	
	_next_start_slope = start_slope
	
	for i in range(row, size):
		_blocked = False
		
		_d_x = -i
		_d_y = -i
		while _d_x <= 0:
			_l_slope = (_d_x - 0.5) / (_d_y + 0.5)
			_r_slope = (_d_x + 0.5) / (_d_y - 0.5)
			
			if _r_slope < start_slope:
				_d_x += 1
				continue
			elif end_slope>_l_slope:
				break
			
			_sax = _d_x * xx + _d_y * xy
			_say = _d_x * yx + _d_y * yy
			
			if (_sax<0 and abs(_sax)>x) or (_say<0 and abs(_say)>y):
				_d_x += 1
				continue
			
			
			_a_x = x + _sax
			_a_y = y + _say
			
			if _a_x >= MAP_SIZE[0] or _a_y >= MAP_SIZE[1]:
				_d_x += 1
				continue
			
			_rad2 = size*size
			
			if (_d_x * _d_x + _d_y * _d_y) < _rad2:
				los_map[_a_x, _a_y] = 1
			
			_solid = WORLD_INFO['map'][_a_x][_a_y]
			if _blocked:
				if _solid:
					_next_start_slope = _r_slope
					_d_x += 1
					continue
				else:
					_blocked = False
					start_slope = _next_start_slope
			elif _solid:
				_blocked = True
				_next_start_slope = _r_slope
				light(los_map, world_pos, size, i+1, start_slope, _l_slope, xx, xy, yx, yy)
			
			_d_x += 1
		
		if _blocked:
			break
dataset/ETHPy150Open flags/Reactor-3/tests/M06_fov.py/light/swapped operands of `<`