in III_huffdecode() you make a new block for most of the function call. Why use this temporary block?
I'm not sure I understand what you're really asking. There is indeed a separate statement block in III_huffdecode() for decoding the big_values portion of the spectrum, and similarly another block for decoding the count1 region. This is mostly just to keep the scope of the local variables clear, but it can also help the compiler make efficient use of the stack, since variables in the latter block can replace variables in the former.
This doesn't add any overhead at run-time... it's not like calling a function. Just pretend the first block is preceded with "if (1)". :-)
I was not aware the compiler treated it in this manner. Thanks for explaining. All of my compiler knowledge comes from the books in school, which did not really go into the modern arts much.