Module Type AES_LL_Spec_Type.
(* arr: list of 4 bytes *)
Parameter get_uint32_le: list Z -> Z -> int.
(* outputs a list of 4 bytes *)
Parameter put_uint32_le: int -> list int.
Parameter output_four_ints_as_bytes: four_ints -> list int.
Parameter byte0: int -> Z.
Parameter byte1: int -> Z.
Parameter byte2: int -> Z.
Parameter byte3: int -> Z.
Parameter mbed_tls_fround_col: int -> int -> int -> int -> Z -> int.
Parameter mbed_tls_final_fround_col: int -> int -> int -> int -> Z -> int.
Parameter mbed_tls_initial_add_round_key_col: Z -> list Z -> list Z -> int.
Parameter mbed_tls_fround: four_ints -> list Z -> Z -> four_ints.
Parameter mbed_tls_final_fround: four_ints -> list Z -> Z -> four_ints.

Axiom mbed_tls_final_fround_def: mbed_tls_final_fround =
fun (cols : four_ints) (rks : list Z) (i : Z) =>
match cols with (col0, (col1, (col2, col3))) =>
((mbed_tls_final_fround_col col0 col1 col2 col3 (Znth  i    rks 0)),
((mbed_tls_final_fround_col col1 col2 col3 col0 (Znth (i+1) rks 0)),
((mbed_tls_final_fround_col col2 col3 col0 col1 (Znth (i+2) rks 0)),
(mbed_tls_final_fround_col col3 col0 col1 col2 (Znth (i+3) rks 0)))))
end.