iv = 4 DWORD initalization vector (constant) p = 4 DWORD plaintext i = 4 DWORD intermediate c = 4 DWORD ciphertext t = 4 DWORD temporary encrypt: t = iv for n in 0..31 i[n][0] = p[n][0] ^ t[0] ^ t[1] i[n][1] = p[n][1] ^ t[1] ^ t[2] i[n][2] = p[n][2] ^ t[2] ^ t[3] i[n][3] = p[n][3] ^ t[3] ^ i[n][0] t = i[n] c[0] = aes256_encrypt(i[0] ^ i[31]) for n in 1..31 c[n] = aes256_encrypt(i[n] ^ c[n-1]) decrypt: for n in 1..31 i[n] = aes256_decrypt(c[n]) ^ c[n-1] i[0] = aes256_decrypt(c[0]) ^ i[31] t = iv for n in 0..31 p[n][0] = i[n][0] ^ t[0] ^ t[1] p[n][1] = i[n][1] ^ t[1] ^ t[2] p[n][2] = i[n][2] ^ t[2] ^ t[3] p[n][3] = i[n][3] ^ t[3] ^ i[n][0] t = i[n]