\begin{tikzpicture}[node distance=1.5cm and 2cm]
\node (start) [startstop] {Recorder: get\_next\_mutation(func)};
\node (checkcurrent) [decision, below of=start] {Current Node Has Untried Mutations?};
\node (addnode) [process, right=3.5cm of checkcurrent] {Add New Mutation Node};
\node (traverse) [process, below of=checkcurrent] {Traverse Children};
\node (foundchild) [decision, below of=traverse] {Child With Untried Mutations?};
\node (usechild) [process, left=3.5cm of foundchild] {Use Child Node};
\node (usenone) [process, right=3.5cm of foundchild] {Use NONE Node};
\node (mutate) [process, below of=foundchild, yshift=-2cm] {Mutate APDU and Send};
\node (record) [process, below of=mutate] {Recorder.record()};

\draw [arrow] (start) -- (checkcurrent);
\draw [arrow] (checkcurrent.east) -- node[above] {Yes} (addnode.west);
\draw [arrow] (addnode.south) |- (mutate);
\draw [arrow] (checkcurrent) -- (traverse);
\draw [arrow] (traverse) -- (foundchild);
\draw [arrow] (foundchild.west) -- node[above] {Yes} (usechild.east);
\draw [arrow] (foundchild.east) -- node[above] {No} (usenone.west);
\draw [arrow] (usechild.south) |- (mutate);
\draw [arrow] (usenone.south) |- (mutate);
\draw [arrow] (mutate) -- (record);
\end{tikzpicture}