Local Open Scope logic.
Definition block_data_order_loop1 :=
Ssequence
(Sset _i (Econst_int (Int.repr 0) tint))
(nth 0 (loops (fn_body f_sha256_block_data_order)) Sskip).

Lemma sha256_block_data_order_loop1_proof:
forall (Espec : OracleKind) (sh: share)
(b: list int) ctx (data: val) (regs: list int) gv Xv
(Hregs: length regs = 8%nat)
(Hsh: readable_share sh),
Zlength b = LBLOCKz ->
semax (func_tycontext f_sha256_block_data_order Vprog Gtot nil)
(PROP  ()
LOCAL  (temp _a (Vint (nthi regs 0)); temp _b (Vint (nthi regs 1));
temp _c (Vint (nthi regs 2)); temp _d (Vint (nthi regs 3));
temp _e (Vint (nthi regs 4)); temp _f (Vint (nthi regs 5));
temp _g (Vint (nthi regs 6)); temp _h (Vint (nthi regs 7));
temp _data data; temp _ctx ctx; temp _in data;
gvars gv; lvar _X (tarray tuint LBLOCKz) Xv)
SEP  (data_at_ Tsh (tarray tuint 16) Xv;
data_block sh (intlist_to_bytelist b) data; K_vector gv))
block_data_order_loop1
(normal_ret_assert
(PROP ()
LOCAL(temp _ctx ctx; temp _i (Vint (Int.repr LBLOCKz));
temp _a (Vint (nthi (Round regs (nthi b) (LBLOCKz - 1)) 0));
temp _b (Vint (nthi (Round regs (nthi b) (LBLOCKz - 1)) 1));
temp _c (Vint (nthi (Round regs (nthi b) (LBLOCKz - 1)) 2));
temp _d (Vint (nthi (Round regs (nthi b) (LBLOCKz - 1)) 3));
temp _e (Vint (nthi (Round regs (nthi b) (LBLOCKz - 1)) 4));
temp _f (Vint (nthi (Round regs (nthi b) (LBLOCKz - 1)) 5));
temp _g (Vint (nthi (Round regs (nthi b) (LBLOCKz - 1)) 6));
temp _h (Vint (nthi (Round regs (nthi b) (LBLOCKz - 1)) 7));
gvars gv; lvar _X (tarray tuint LBLOCKz) Xv)
SEP (K_vector gv;
data_at Tsh (tarray tuint LBLOCKz) (map Vint b) Xv;
data_block sh (intlist_to_bytelist b) data))).