\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) {}; \draw[->] (Stk0.center) to (FGX); \draw[->] (Stk1.center) to (FG); \draw[->] (Stk2.center) to (F); \draw[->] (Stk3.center) to (GX); \end{scope}