-// ThreadsManager::set_timer() is used to set the timer to trigger after msec
-// milliseconds. If msec is 0 then timer is stopped.
+// split() does the actual work of distributing the work at a node between
+// several available threads. If it does not succeed in splitting the node
+// (because no idle threads are available), the function immediately returns.
+// If splitting is possible, a SplitPoint object is initialized with all the
+// data that must be copied to the helper threads and then helper threads are
+// told that they have been assigned work. This will cause them to instantly
+// leave their idle loops and call search(). When all threads have returned from
+// search() then split() returns.
+
+template <bool Fake>
+Value Thread::split(Position& pos, Stack* ss, Value alpha, Value beta,
+ Value bestValue, Move* bestMove, Depth depth, Move threatMove,
+ int moveCount, MovePicker& mp, int nodeType) {