re: tybits and ey.  Currently the code is declare and initialize ey, declare and initialize tybits, change ey, use both.  Swapping the middle two would add clarity that tybits and ey aren't interdependent.

re: BT, ok.  Looking at the if condition that the entire block is inside, it's got this clause: && emax - emin < REGSIZE * 8
So, it won't be a problem for I32.  I suggest rewriting that  couple lines to:

    if ((emax - emin) >= 32)
    {
        assert(I64);
        tybits = TYullong;
    }

Should something change and I32 code make it to that point with with the delta >= 32 then there's a serious problem and it shouldn't slip through silently.