What this does is expand the 16-word (512-bit) input message block (to the compression function, i.e. one "chunk" of the complete message) into an 64-word array W[t]
. The definition of this array is recursive. What it tells you is that the first 16 words of this 64-word array are just the words of the input chunk:
W[t] = M[t] for 0 <= t <= 15
In other words, for t between 0 and 15, W[t] is equal to M[t].
Then, for 16 <= t <= 63
(the remaining 48 words) the following recurrence is used:
W[t] = MIX(W[t - 2], W[t - 7], W[t - 15], W[t - 16]) for 16 <= t <= 63
Such that W[t]
depends on W[t - 2]
, W[t - 7]
, W[t - 15]
and W[t - 16]
and MIX
is the message schedule function (composed of exclusive-or and bit shifts/rotations). Note that words are guaranteed to have been defined previously as the first 16 words have already been initialized, and the remaining values are then successively calculated.
Here W[t]
is just a temporary variable just like any other and is used to improve the compression function's quality, and is called the "message schedule" since it preprocesses the message block.
EDIT: I changed the description to SHA256 as @Henno noted you were actually describing SHA1 (though as he correctly observes, the overall structure remains the same for the two hash functions)