The function f = nInvArcLength[param, {t, a, b}] returns a function f (an InterpolatingFunction) that computes the value of t = f[s] for a point that is a given arclength distance s along the parametrization param from the initial point at t == a.  (This function works for parametrizations of curves in any dimension.)  The domain of the function f can be queried since it is an InterpolatingFunction, and the domain the interval from 0 to the arclength of the curve.
ClearAll[nInvArcLength];
nInvArcLength::diff = "Parametrization `` not differentiable with respect to ``.";
nInvArcLength[param_?VectorQ, {t_, a_?NumericQ, b_?NumericQ}] := 
  Module[{time, s, v, realnorm = Sqrt[#.#] &},
   Check[   (* check for user-error: is param differentiable? *)
    v = D[param, t],
    Message[nInvArcLength::diff, param, t]];
   NDSolveValue[{
      time'[s] == 1/realnorm[v] /. t -> time[s], time[0] == a,
      WhenEvent[time[s] > b, "StopIntegration"]},
     time, {s, 0, Infinity}
     ] /; FreeQ[v, D]  (* The condition (/;) prevents NDSolveValue from running if `D` failed *)
   ];
For the OP's case, I call the function ts:
ts = nInvArcLength[{x1[t, 0], y1[t, 0]}, {t, 0, K * 2 Pi}]
(*  InterpolatingFunction[{{0., 134.788}}, << 4 >>]  *)
First@ts["Domain"]  (* the domain is 0 to the arclength of the whole path *)
(*  {0., 134.788}  *)
tdata = ts[Array[# &, K*Sample, First@ts["Domain"]]]; (* t-values for K*Sample evenly arclength-spaced points *)
points = Table[{x1[t, 0], y1[t, 0]}, {t, tdata}];    (* the corresponding points *)
Graphics[{Thick, Blue, PointSize[0.0075], Point[points]}, Axes -> True, AxesLabel -> {X, Y}]
