\begin{tikzpicture}[scale=0.7, every node/.style={scale=0.7}]
  \foreach \x in {0, 1, 2} {
    % Draw the PRF application instances.
    \node (f\x) at ($2.5cm + \x*(2.5cm,0)$) [minimum size=1.25cm,rounded corners=1ex,draw] {\Large $F_k$};

    % Plaintext blocks.
    \node (m\x) [above of=f\x, node distance=2cm] {$m_\x$};
    % Ciphertext blocks.
    \node (c\x) [below of=f\x, node distance=1.5cm] {$c_\x$};
    % Circle for XORs.
    \node (p\x) [above of=f\x, node distance=1.2cm, circle, draw] {};

    % Draw the ``cross'' of the XORs.
    \draw[-] (p\x.north) -- (p\x.south);
    \draw[-] (p\x.east) -- (p\x.west);

    % Arrow: Plaintext input'd to XOR.
    \draw[-latex] (m\x) -- (p\x);
    % Arrow: From XOR to PRF.
    \draw[-] (p\x) -- (f\x);
    % Arrow: Output of PRF: the ciphertext.
    \draw[-latex] (f\x.south) -- (c\x);

  % ``Bent'' arrow: from the IV to the first XOR.
  \node (piv) [left of=p0, node distance=1.2cm] {};
  \node (iv) [left of=c0, node distance=1.5cm] {$IV$};
  \draw[-latex] (iv.north) -- +(0cm,2.45cm) -- ($(piv.west) + (1.15cm,0)$);

  % ``Bent'' arrows: going from ciphertext block c_i to XOR of plaintext block m_{i+1}.
  \foreach \x in {0, 1} {
    \draw[-latex] (f\x.south) -- +(0cm,-0.24cm) -| +(1.25cm,1.85cm) -- ($(p\x.west) + (2.5cm,0)$);