Skip to content

Commit 4772f4f

Browse files
committed
less var accesses
1 parent b6939a4 commit 4772f4f

File tree

2 files changed

+93
-179
lines changed

2 files changed

+93
-179
lines changed

sha1-generator.py

+13-18
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,24 @@
1+
vars = ["a", "b", "c", "d", "e"]
12
for j in xrange(0, 80):
3+
a, b, c, d, e = vars[-j % 5:] + vars[:-j % 5] # rotate var array
24
if j < 20:
3-
f = "(b & c) | ((~b) & d)"
5+
f = "(%s & %s) | ((~%s) & %s)" % (b, c, b, d)
46
k = 0x5A827999
57
elif j < 40:
6-
f = "b ^ c ^ d"
8+
f = "%s ^ %s ^ %s" % (b, c, d)
79
k = 0x6ED9EBA1
810
elif j < 60:
9-
f = "(b & c) | (b & d) | (c & d)"
11+
f = "(%s & %s) | (%s & %s) | (%s & %s)" % (b, c, b, d, c, d)
1012
k = 0x8F1BBCDC
1113
else:
12-
f = "b ^ c ^ d"
14+
f = "%s ^ %s ^ %s" % (b, c, d)
1315
k = 0xCA62C1D6
1416
if j < 16:
15-
print "var w%s:uint = byteInput.readUnsignedInt();" % j
16-
print "tmp = ((a << 5) | (a >>> 27)) + (%s) + e + 0x%08X + w%s; " \
17-
"e = d; " \
18-
"d = c; " \
19-
"c = (b << 30) | (b >>> 2); " \
20-
"b = a; " \
21-
"a = tmp;" % (f, k, j % 16)
17+
print "var w%02d:uint = byteInput.readUnsignedInt();" % j,
18+
w_access = "w%02d" % (j % 16)
2219
else:
23-
print "w%s ^= w%s ^ w%s ^ w%s;" % (j % 16, (j - 3) % 16, (j - 8) % 16, (j - 14) % 16)
24-
print "tmp = ((a << 5) | (a >>> 27)) + (%s) + e + 0x%08X + (w%s = (w%s << 1) | (w%s >>> 31)); " \
25-
"e = d; " \
26-
"d = c; " \
27-
"c = (b << 30) | (b >>> 2); " \
28-
"b = a; " \
29-
"a = tmp;" % (f, k, j % 16, j % 16, j % 16)
20+
print "w%02d ^= w%02d ^ w%02d ^ w%02d;" % (j % 16, (j - 3) % 16, (j - 8) % 16, (j - 14) % 16),
21+
w_access = "(w%02d = (w%02d << 1) | (w%02d >>> 31))" % (j % 16, j % 16, j % 16)
22+
print "%s += ((%s << 5) | (%s >>> 27)) + (%s) + 0x%08X + %s;" % (
23+
e, a, a, f, k, w_access),
24+
print "%s = (%s << 30) | (%s >>> 2);" % (b, b, b)

0 commit comments

Comments
 (0)