\begin{scope}[node distance=0.75cm]

\node (FGX) [inner xsep=0.01cm, inner ysep=0.03cm]        at (0, 0) {@};
\node (FG)  [xshift=0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, left of=FGX]  {@};
\node (X)   [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FGX, right of=FGX] {x};
\node (F)   [xshift=0.25cm, inner xsep=0.04cm, inner ysep=0.05cm, below of=FG, left of=FG, xshift=2]   {f};
\node (G)   [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=FG, right of=FG, xshift=-2] {g};

\node (GX)
  [xshift=-0.25cm, inner xsep=0.01cm, inner ysep=0.03cm, below of=F, xshift=0.75cm]
  {@};

\draw[->] (FGX) to (X);
\draw[->] (FGX) to (FG);
\draw[->] (FG)  to (F.north east);
\draw[->] (FG)  to (G.north west);

\draw[->] (GX) to ([shift=({-0.35cm,-0.35cm})]GX)
               -- ++(0, -0.10cm)
               -| (G);

\draw[->] (GX) to ([shift=({0.45cm,-0.35cm})]GX)
               -| (X);

\node (Stk0) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
  at (-2.75, 0)     {};
\node (Stk1) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
  at (-2.75, -0.75) {};
\node (Stk2) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
  at (-2.75, -1.5)  {};
\node (Stk3) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
  at (-2.75, -2.25) {};
\node (Stk4) [draw, shape=rectangle, minimum width=1.5cm, minimum height=0.75cm, anchor=center]
  at (-2.75, -3) {};

\node (K) [right of=Stk4, xshift=1.5cm] {K};

\draw[->] (Stk0.center) to (FGX);
\draw[->] (Stk1.center) to (FG);
\draw[->] (Stk2.center) to (F);
\draw[->] (Stk3.center) to (GX);
\draw[->] (Stk4.center) to (K);

\end{scope}
