// Token: 0x0600002A RID: 42 RVA: 0x00003A08 File Offset: 0x00003A08
                internal byte method_3(Class0 class0_0, byte byte_0)
                {
                    uint num = 1u;

                    while (true)
                    {
                        uint num2 = (uint)(byte_0 >> 7 & 1);
                        byte_0 = (byte)(byte_0 << 1);
                        uint num3 = this.struct0_0[(int)((UIntPtr)((1u + num2 << 8) + num))].method_1(class0_0);
                        num = (num << 1 | num3);
                        if (num2 != num3)
                        {
                            break;
                        }
                        if (num >= 256u)
                        {
                            goto IL_5E;
                        }
                    }
                    while (num < 256u)
                    {
                        num = (num << 1 | this.struct0_0[(int)((UIntPtr)num)].method_1(class0_0));
                    }
IL_5E:
                    return((byte)num);
                }
        // Token: 0x0600000A RID: 10 RVA: 0x00002E2C File Offset: 0x00002E2C
        internal uint method_1(Class0 class0_0)
        {
            uint num = (class0_0.uint_1 >> 11) * this.uint_0;

            if (class0_0.uint_0 < num)
            {
                class0_0.uint_1 = num;
                this.uint_0    += 2048u - this.uint_0 >> 5;
                if (class0_0.uint_1 < 16777216u)
                {
                    class0_0.uint_0   = (class0_0.uint_0 << 8 | (uint)((byte)class0_0.stream_0.ReadByte()));
                    class0_0.uint_1 <<= 8;
                }
                return(0u);
            }
            class0_0.uint_1 -= num;
            class0_0.uint_0 -= num;
            this.uint_0     -= this.uint_0 >> 5;
            if (class0_0.uint_1 < 16777216u)
            {
                class0_0.uint_0   = (class0_0.uint_0 << 8 | (uint)((byte)class0_0.stream_0.ReadByte()));
                class0_0.uint_1 <<= 8;
            }
            return(1u);
        }
                // Token: 0x06000029 RID: 41 RVA: 0x000039D4 File Offset: 0x000039D4
                internal byte method_2(Class0 class0_0)
                {
                    uint num = 1u;

                    do
                    {
                        num = (num << 1 | this.struct0_0[(int)((UIntPtr)num)].method_1(class0_0));
                    }while (num < 256u);
                    return((byte)num);
                }
        // Token: 0x0600000D RID: 13 RVA: 0x00002F50 File Offset: 0x00002F50
        internal uint method_1(Class0 class0_0)
        {
            uint num = 1u;

            for (int i = this.int_0; i > 0; i--)
            {
                num = (num << 1) + this.struct0_0[(int)((UIntPtr)num)].method_1(class0_0);
            }
            return(num - (1u << this.int_0));
        }
        // Token: 0x0600000F RID: 15 RVA: 0x00002FE0 File Offset: 0x00002FE0
        internal static uint smethod_0(Struct0[] struct0_1, uint uint_0, Class0 class0_0, int int_1)
        {
            uint num  = 1u;
            uint num2 = 0u;

            for (int i = 0; i < int_1; i++)
            {
                uint num3 = struct0_1[(int)((UIntPtr)(uint_0 + num))].method_1(class0_0);
                num <<= 1;
                num  += num3;
                num2 |= num3 << i;
            }
            return(num2);
        }
        // Token: 0x0600000E RID: 14 RVA: 0x00002F98 File Offset: 0x00002F98
        internal uint method_2(Class0 class0_0)
        {
            uint num  = 1u;
            uint num2 = 0u;

            for (int i = 0; i < this.int_0; i++)
            {
                uint num3 = this.struct0_0[(int)((UIntPtr)num)].method_1(class0_0);
                num <<= 1;
                num  += num3;
                num2 |= num3 << i;
            }
            return(num2);
        }
            // Token: 0x0600001F RID: 31 RVA: 0x00003820 File Offset: 0x00003820
            internal uint method_2(Class0 class0_0, uint uint_1)
            {
                if (this.struct0_0.method_1(class0_0) == 0u)
                {
                    return(this.struct1_0[(int)((UIntPtr)uint_1)].method_1(class0_0));
                }
                uint num = 8u;

                if (this.struct0_1.method_1(class0_0) == 0u)
                {
                    num += this.struct1_1[(int)((UIntPtr)uint_1)].method_1(class0_0);
                }
                else
                {
                    num += 8u;
                    num += this.struct1_2.method_1(class0_0);
                }
                return(num);
            }
 // Token: 0x06000025 RID: 37 RVA: 0x000021E5 File Offset: 0x000021E5
 internal byte method_4(Class0 class0_0, uint uint_1, byte byte_0, byte byte_1)
 {
     return(this.struct2_0[(int)((UIntPtr)this.method_2(uint_1, byte_0))].method_3(class0_0, byte_1));
 }