Instance CompSpecs : compspecs.Definition Vprog : varspecs.Definition t_struct_aesctx := Tstruct _mbedtls_aes_context_struct noattr.Definition t_struct_tables := Tstruct _aes_tables_struct noattr.Definition tables_initialized (tables : val) := data_at Ews t_struct_tables
  (map Vint FSb, (map Vint FT0, (map Vint FT1, (map Vint FT2, (map Vint FT3,
  (map Vint RSb, (map Vint RT0, (map Vint RT1, (map Vint RT2, (map Vint RT3,
  (map Vint RCON))))))))))) tables.Definition Nr := 14.Ltac simpl_Int := repeat match goal with
| |- context [ (Int.mul (Int.repr ?A) (Int.repr ?B)) ] =>
    let x := fresh "x" in (pose (x := (A * B)%Z)); simpl in x;
    replace (Int.mul (Int.repr A) (Int.repr B)) with (Int.repr x); subst x; [|reflexivity]
| |- context [ (Int.add (Int.repr ?A) (Int.repr ?B)) ] =>
    let x := fresh "x" in (pose (x := (A + B)%Z)); simpl in x;
    replace (Int.add (Int.repr A) (Int.repr B)) with (Int.repr x); subst x; [|reflexivity]
end.

(* Specifications: *)
Lemma masked_byte_range: forall i, 0 <= Z.land i 255 < 256.
Lemma FSb_range: forall i, Int.unsigned (Znth i FSb Int.zero) <= Byte.max_unsigned.
Lemma zero_ext_mask: forall i, Int.zero_ext 8 i = Int.and i (Int.repr 255).
Lemma body_aes_encrypt: semax_body Vprog Gprog f_mbedtls_aes_encrypt encryption_spec_ll.