That’s the problem with SHA, then. The implementation (and the spec, really) is essentially a long combination of the form:
let x_n5 = small_computation x_n1 x_n2 x_n3 x_n4
x_n6 = small_computation x_n2 x_n3 x_n4 x_n5
…
Which has ~70 entries. The actual number of live variables alive at any time should be relatively small, but if slots aren’t getting reused there’s going to be some significant blowup. (To be honest, I had figured — and thought I had validated — that doing it this way would give the compiler the best chance at generating optimal code, but it appears I merely set myself up to hit this limitation several years later.)