(* This file contains highly trivial proofs, but they are carefully engineered in such a way that the Qed is fast. This is tricky because we have to avoid that constants such as 12 or 13 are unfolded by the typechecker while unifying two terms. *)
Local Open Scope Z.

Lemma round14eq: forall buf S13 S14,
S14 = mbed_tls_final_fround S13 buf 56 ->
Int.xor
(Int.xor
(Int.xor
(Int.xor (Int.repr (Znth 56 buf))
(Znth
(Z.land (Int.unsigned (col 0 S13))
(Int.unsigned (Int.repr 255))) FSb))
(Int.shl
(Znth
(Z.land
(Int.unsigned (Int.shru (col 1 S13) (Int.repr 8)))
(Int.unsigned (Int.repr 255))) FSb)
(Int.repr 8)))
(Int.shl
(Znth
(Z.land (Int.unsigned (Int.shru (col 2 S13) (Int.repr 16)))
(Int.unsigned (Int.repr 255))) FSb)
(Int.repr 16)))
(Int.shl
(Znth
(Z.land (Int.unsigned (Int.shru (col 3 S13) (Int.repr 24)))
(Int.unsigned (Int.repr 255))) FSb) (Int.repr 24)) =
col 0 S14
/\ Int.xor
(Int.xor
(Int.xor
(Int.xor (Int.repr (Znth 57 buf))
(Znth
(Z.land (Int.unsigned (col 1 S13))
(Int.unsigned (Int.repr 255))) FSb))
(Int.shl
(Znth
(Z.land
(Int.unsigned (Int.shru (col 2 S13) (Int.repr 8)))
(Int.unsigned (Int.repr 255))) FSb)
(Int.repr 8)))
(Int.shl
(Znth
(Z.land (Int.unsigned (Int.shru (col 3 S13) (Int.repr 16)))
(Int.unsigned (Int.repr 255))) FSb)
(Int.repr 16)))
(Int.shl
(Znth
(Z.land (Int.unsigned (Int.shru (col 0 S13) (Int.repr 24)))
(Int.unsigned (Int.repr 255))) FSb) (Int.repr 24)) =
col 1 S14
/\ Int.xor
(Int.xor
(Int.xor
(Int.xor (Int.repr (Znth 58 buf))
(Znth
(Z.land (Int.unsigned (col 2 S13))
(Int.unsigned (Int.repr 255))) FSb))
(Int.shl
(Znth
(Z.land
(Int.unsigned (Int.shru (col 3 S13) (Int.repr 8)))
(Int.unsigned (Int.repr 255))) FSb)
(Int.repr 8)))
(Int.shl
(Znth
(Z.land (Int.unsigned (Int.shru (col 0 S13) (Int.repr 16)))
(Int.unsigned (Int.repr 255))) FSb)
(Int.repr 16)))
(Int.shl
(Znth
(Z.land (Int.unsigned (Int.shru (col 1 S13) (Int.repr 24)))
(Int.unsigned (Int.repr 255))) FSb) (Int.repr 24)) =
col 2 S14
/\ Int.xor
(Int.xor
(Int.xor
(Int.xor (Int.repr (Znth 59 buf))
(Znth
(Z.land (Int.unsigned (col 3 S13))
(Int.unsigned (Int.repr 255))) FSb))
(Int.shl
(Znth
(Z.land
(Int.unsigned (Int.shru (col 0 S13) (Int.repr 8)))
(Int.unsigned (Int.repr 255))) FSb)
(Int.repr 8)))
(Int.shl
(Znth
(Z.land (Int.unsigned (Int.shru (col 1 S13) (Int.repr 16)))
(Int.unsigned (Int.repr 255))) FSb)
(Int.repr 16)))
(Int.shl
(Znth
(Z.land (Int.unsigned (Int.shru (col 2 S13) (Int.repr 24)))
(Int.unsigned (Int.repr 255))) FSb) (Int.repr 24)) =
col 3 S14.