Thanks to Petr for the reviews - I made these changes:
Patch 1: Use 0x80 to represent flag_present's 0 in the table.
Patch 2: Added a comment for the manually unrolled step 0 of uleb128,
and made both get_?leb128 macros into simple expressions. Fixed the
one caller who was getting a set-but-unused warning from this.
Patch 3: Redid this as a smaller optimization directly on the hash
lookup function. The performance gain is not as great, but it's a
simpler change and doesn't increase memory use.
And my spacing should be improved everywhere. :)