示例#1
0
 public int m0002c8(c0001d1 p0)
 {
     int num2;
     int num5;
     int index = p0.m00000e(9);
     if (index >= 0)
     {
         num2 = this.f00001c[index];
         if (num2 >= 0)
         {
             p0.m000004(num2 & 15);
             return (num2 >> 4);
         }
         int num3 = -(num2 >> 4);
         int num4 = num2 & 15;
         index = p0.m00000e(num4);
         if (index >= 0)
         {
             num2 = this.f00001c[num3 | (index >> 9)];
             p0.m000004(num2 & 15);
             return (num2 >> 4);
         }
         num5 = p0.m00000f();
         index = p0.m00000e(num5);
         num2 = this.f00001c[num3 | (index >> 9)];
         if ((num2 & 15) <= num5)
         {
             p0.m000004(num2 & 15);
             return (num2 >> 4);
         }
         return -1;
     }
     num5 = p0.m00000f();
     index = p0.m00000e(num5);
     num2 = this.f00001c[index];
     if ((num2 >= 0) && ((num2 & 15) <= num5))
     {
         p0.m000004(num2 & 15);
         return (num2 >> 4);
     }
     return -1;
 }
示例#2
0
 public c0000cc(bool p0)
 {
     this.f000056 = p0;
     this.f00002c = new c0001fc();
     this.f00002d = new c0001d1();
     this.f00002b = new c0001fb();
     this.f000131 = p0 ? 2 : 0;
 }
示例#3
0
 public int m0002cb(c0001d1 p0, int p1)
 {
     int num;
     p1 = Math.Min(Math.Min(p1, 0x8000 - this.f00000f), p0.m000010());
     int num2 = 0x8000 - this.f00000b;
     if (p1 > num2)
     {
         num = p0.m00000d(this.f000008, this.f00000b, num2);
         if (num == num2)
         {
             num += p0.m00000d(this.f000008, 0, p1 - num2);
         }
     }
     else
     {
         num = p0.m00000d(this.f000008, this.f00000b, p1);
     }
     this.f00000b = (this.f00000b + num) & 0x7fff;
     this.f00000f += num;
     return num;
 }
示例#4
0
        public bool m0002c6(c0001d1 p0)
        {
            int num3;
            bool flag2;
            Label_0000:
            flag2 = true;
            switch (this.f0001f9)
            {
                case 0:
                    this.f0001fa = p0.m00000e(5);
                    if (this.f0001fa >= 0)
                    {
                        this.f0001fa += 0x101;
                        p0.m000004(5);
                        this.f0001f9 = 1;
                        break;
                    }
                    return false;

                case 1:
                    break;

                case 2:
                    goto Label_00E3;

                case 3:
                    goto Label_018C;

                case 4:
                    goto Label_01CA;

                case 5:
                    goto Label_026E;

                default:
                    goto Label_0000;
            }
            this.f0001fb = p0.m00000e(5);
            if (this.f0001fb < 0)
            {
                return false;
            }
            this.f0001fb++;
            p0.m000004(5);
            this.f000016 = this.f0001fa + this.f0001fb;
            this.f00001d = new byte[this.f000016];
            this.f0001f9 = 2;
            Label_00E3:
            this.f000011 = p0.m00000e(4);
            if (this.f000011 < 0)
            {
                return false;
            }
            this.f000011 += 4;
            p0.m000004(4);
            this.f000008 = new byte[0x13];
            this.f000022 = 0;
            this.f0001f9 = 3;
            Label_018C:
            while (this.f000022 < this.f000011)
            {
                int num = p0.m00000e(3);
                if (num < 0)
                {
                    return false;
                }
                p0.m000004(3);
                this.f000008[f000010[this.f000022]] = (byte) num;
                this.f000022++;
            }
            this.f000017 = new c0001dd(this.f000008);
            this.f000008 = null;
            this.f000022 = 0;
            this.f0001f9 = 4;
            Label_01CA:
            do
            {
                int num2;
                if (((num2 = this.f000017.m0002c8(p0)) & -16) != 0)
                {
                    if (num2 < 0)
                    {
                        return false;
                    }
                    if (num2 < 0x11)
                    {
                        if (this.f000022 == 0)
                        {
                            throw new SharpZipBaseException();
                        }
                    }
                    else
                    {
                        this.f0001fc = 0;
                    }
                    this.f000020 = num2 - 0x10;
                    this.f0001f9 = 5;
                    goto Label_026E;
                }
                this.f00001d[this.f000022++] = this.f0001fc = (byte) num2;
            }
            while (this.f000022 != this.f000016);
            return true;
            Label_026E:
            num3 = f00000f[this.f000020];
            int num4 = p0.m00000e(num3);
            if (num4 >= 0)
            {
                p0.m000004(num3);
                num4 += f00000b[this.f000020];
                if ((this.f000022 + num4) > this.f000016)
                {
                    throw new SharpZipBaseException();
                }
                while (num4-- > 0)
                {
                    this.f00001d[this.f000022++] = this.f0001fc;
                }
                if (this.f000022 == this.f000016)
                {
                    return true;
                }
                this.f0001f9 = 4;
                goto Label_0000;
            }
            return false;
        }