),
)]
-# Trade memory for CPU for part of L() calculations
-_Cache = None
-
-def _cache_ensure():
- global _Cache
- if _Cache is not None:
- return
+def _lcache():
cache = []
for byteN in xrange(8):
cache.append([0 for _ in xrange(256)])
res64 ^= A[(7 - byteN) * 8 + bitN]
val <<= 1
cache[byteN][byteVal] = res64
- _Cache = cache
+ return cache
+
+
+# Trade memory for CPU for part of L() calculations
+LCache = _lcache()
def add512bit(a, b):
def L(data):
- _cache_ensure()
res = []
for i in range(8):
res64 = 0
for j in range(8):
- res64 ^= _Cache[j][data[8 * i + j]]
+ res64 ^= LCache[j][data[8 * i + j]]
res.append(pack("<Q", res64))
return b"".join(res)