Given that a list of points might be viewed a polygonal path, my answer to Equidistant points on a polylineEquidistant points on a polyline may be applied here:
With[{loop = Append[data, First@data], n = 100},
arclengths = Accumulate[Norm /@ Differences@loop];
pfn = Interpolation[
Transpose@{List /@ Rescale@Prepend[arclengths, 0.], loop},
InterpolationOrder -> 1, PeriodicInterpolation -> True];
Show[
C0, Graphics[{Red, Point[pfn@Subdivide[n - 1]]}]
]
]