- block[0] = saved_key[0];
- block[1] = saved_key[1];
- block[2] = saved_key[2];
- block[3] = saved_key[3];
+ block[0] = 0;
+ block[1] = 0;
+ block[2] = 0;
+ block[3] = 0;
+
+ u32 curpos;
+ u32 idx;
+
+ for (curpos = 0, idx = 0; curpos + 16 < size; curpos += 16, idx += 4)
+ {
+ block[0] = saved_key[idx + 0];
+ block[1] = saved_key[idx + 1];
+ block[2] = saved_key[idx + 2];
+ block[3] = saved_key[idx + 3];
+
+ mdtransform (state, checksum, block, s_lotus_magic_table);
+ }
+
+ block[0] = saved_key[idx + 0];
+ block[1] = saved_key[idx + 1];
+ block[2] = saved_key[idx + 2];
+ block[3] = saved_key[idx + 3];