Files
PCL2/pcl2_full/Plain Craft Launcher 2/GClass0.cs
1989-06-04 00:00:04 +09:00

524 lines
13 KiB
C#

using System;
using System.IO;
// Token: 0x020001CC RID: 460
public class GClass0
{
// Token: 0x06001309 RID: 4873 RVA: 0x0008AC88 File Offset: 0x00088E88
public GClass0()
{
this.uint_0 = 1U;
this.gclass1_0 = new GClass1();
this.class5_0 = new Class5();
this.struct21_0 = new Struct21[0xC0];
this.struct21_1 = new Struct21[0xC];
this.struct21_2 = new Struct21[0xC];
this.struct21_3 = new Struct21[0xC];
this.struct21_4 = new Struct21[0xC];
this.struct21_5 = new Struct21[0xC0];
this.struct22_0 = new Struct22[4];
this.struct21_6 = new Struct21[0x72];
this.struct22_1 = new Struct22(4);
this.class3_0 = new GClass0.Class3();
this.class3_1 = new GClass0.Class3();
this.class4_0 = new GClass0.Class4();
base..ctor();
this.uint_1 = uint.MaxValue;
int num = 0;
while ((long)num < 4L)
{
this.struct22_0[num] = new Struct22(6);
num++;
}
}
// Token: 0x0600130A RID: 4874 RVA: 0x0008AD80 File Offset: 0x00088F80
private void method_0(uint uint_4)
{
if (this.uint_1 != uint_4)
{
this.uint_1 = uint_4;
this.uint_2 = Math.Max(this.uint_1, 1U);
uint uint_5 = Math.Max(this.uint_2, 0x1000U);
this.gclass1_0.method_0(uint_5);
}
}
// Token: 0x0600130B RID: 4875 RVA: 0x0000BFB8 File Offset: 0x0000A1B8
private void method_1(int int_0, int int_1)
{
if (int_0 > 8)
{
throw new ArgumentException("lp > 8");
}
if (int_1 > 8)
{
throw new ArgumentException("lc > 8");
}
this.class4_0.method_0(int_0, int_1);
}
// Token: 0x0600130C RID: 4876 RVA: 0x0008ADCC File Offset: 0x00088FCC
private void method_2(int int_0)
{
if (int_0 > 4)
{
throw new ArgumentException("pb > Base.KNumPosStatesBitsMax");
}
uint num = 1U << int_0;
this.class3_0.method_0(num);
this.class3_1.method_0(num);
this.uint_3 = num - 1U;
}
// Token: 0x0600130D RID: 4877 RVA: 0x0008AE10 File Offset: 0x00089010
private void method_3(Stream stream_0, Stream stream_1)
{
this.class5_0.method_0(stream_0);
this.gclass1_0.method_1(stream_1, false);
for (uint num = 0U; num < 0xCU; num += 1U)
{
for (uint num2 = 0U; num2 <= this.uint_3; num2 += 1U)
{
uint num3 = (num << 4) + num2;
this.struct21_0[(int)num3].method_0();
this.struct21_5[(int)num3].method_0();
}
this.struct21_1[(int)num].method_0();
this.struct21_2[(int)num].method_0();
this.struct21_3[(int)num].method_0();
this.struct21_4[(int)num].method_0();
}
this.class4_0.method_1();
for (uint num = 0U; num < 4U; num += 1U)
{
this.struct22_0[(int)num].method_0();
}
for (uint num = 0U; num < 0x72U; num += 1U)
{
this.struct21_6[(int)num].method_0();
}
this.class3_0.method_1();
this.class3_1.method_1();
this.struct22_1.method_0();
}
// Token: 0x0600130E RID: 4878 RVA: 0x0008AF30 File Offset: 0x00089130
public void method_4(Stream stream_0, Stream stream_1, long long_0)
{
this.method_3(stream_0, stream_1);
Class2.Struct19 @struct = default(Class2.Struct19);
@struct.method_0();
uint num = 0U;
uint num2 = 0U;
uint num3 = 0U;
uint num4 = 0U;
ulong num5 = 0UL;
if (0L < long_0)
{
if (this.struct21_0[(int)((int)@struct.uint_0 << 4)].method_1(this.class5_0) != 0U)
{
throw new InvalidDataException("IsMatchDecoders");
}
@struct.method_1();
byte byte_ = this.class4_0.method_3(this.class5_0, 0U, 0);
this.gclass1_0.method_5(byte_);
num5 += 1UL;
}
while (num5 < (ulong)long_0)
{
uint num6 = (uint)num5 & this.uint_3;
if (this.struct21_0[(int)((@struct.uint_0 << 4) + num6)].method_1(this.class5_0) == 0U)
{
byte byte_2 = this.gclass1_0.method_6(0U);
byte byte_3;
if (!@struct.method_5())
{
byte_3 = this.class4_0.method_4(this.class5_0, (uint)num5, byte_2, this.gclass1_0.method_6(num));
}
else
{
byte_3 = this.class4_0.method_3(this.class5_0, (uint)num5, byte_2);
}
this.gclass1_0.method_5(byte_3);
@struct.method_1();
num5 += 1UL;
}
else
{
uint num8;
if (this.struct21_1[(int)@struct.uint_0].method_1(this.class5_0) == 1U)
{
if (this.struct21_2[(int)@struct.uint_0].method_1(this.class5_0) == 0U)
{
if (this.struct21_5[(int)((@struct.uint_0 << 4) + num6)].method_1(this.class5_0) == 0U)
{
@struct.method_4();
this.gclass1_0.method_5(this.gclass1_0.method_6(num));
num5 += 1UL;
continue;
}
}
else
{
uint num7;
if (this.struct21_3[(int)@struct.uint_0].method_1(this.class5_0) == 0U)
{
num7 = num2;
}
else
{
if (this.struct21_4[(int)@struct.uint_0].method_1(this.class5_0) == 0U)
{
num7 = num3;
}
else
{
num7 = num4;
num4 = num3;
}
num3 = num2;
}
num2 = num;
num = num7;
}
num8 = this.class3_1.method_2(this.class5_0, num6) + 2U;
@struct.method_3();
}
else
{
num4 = num3;
num3 = num2;
num2 = num;
num8 = 2U + this.class3_0.method_2(this.class5_0, num6);
@struct.method_2();
uint num9 = this.struct22_0[(int)Class2.smethod_0(num8)].method_1(this.class5_0);
if (num9 >= 4U)
{
int num10 = (int)((num9 >> 1) - 1U);
num = (2U | (num9 & 1U)) << num10;
if (num9 < 0xEU)
{
num += Struct22.smethod_0(this.struct21_6, num - num9 - 1U, this.class5_0, num10);
}
else
{
num += this.class5_0.method_2(num10 - 4) << 4;
num += this.struct22_1.method_2(this.class5_0);
}
}
else
{
num = num9;
}
}
if ((ulong)num < (ulong)this.gclass1_0.uint_4 + num5 && num < this.uint_2)
{
this.gclass1_0.method_4(num, num8);
num5 += (ulong)num8;
}
else
{
if (num != 0xFFFFFFFFU)
{
throw new InvalidDataException("rep0");
}
IL_359:
this.gclass1_0.method_3();
this.gclass1_0.method_2();
this.class5_0.method_1();
return;
}
}
}
goto IL_359;
}
// Token: 0x0600130F RID: 4879 RVA: 0x0008B2B8 File Offset: 0x000894B8
public void method_5(byte[] byte_0)
{
if (byte_0.Length < 5)
{
throw new ArgumentException("properties.Length < 5");
}
int int_ = (int)(byte_0[0] % 9);
byte b = byte_0[0] / 9;
int int_2 = (int)(b % 5);
int num = (int)(b / 5);
if (num > 4)
{
throw new ArgumentException("pb > Base.kNumPosStatesBitsMax");
}
uint num2 = 0U;
for (int i = 0; i < 4; i++)
{
num2 += (uint)((uint)byte_0[1 + i] << i * 8);
}
this.method_0(num2);
this.method_1(int_2, int_);
this.method_2(num);
}
// Token: 0x04000A4E RID: 2638
private uint uint_0;
// Token: 0x04000A4F RID: 2639
private readonly GClass1 gclass1_0;
// Token: 0x04000A50 RID: 2640
private readonly Class5 class5_0;
// Token: 0x04000A51 RID: 2641
private readonly Struct21[] struct21_0;
// Token: 0x04000A52 RID: 2642
private readonly Struct21[] struct21_1;
// Token: 0x04000A53 RID: 2643
private readonly Struct21[] struct21_2;
// Token: 0x04000A54 RID: 2644
private readonly Struct21[] struct21_3;
// Token: 0x04000A55 RID: 2645
private readonly Struct21[] struct21_4;
// Token: 0x04000A56 RID: 2646
private readonly Struct21[] struct21_5;
// Token: 0x04000A57 RID: 2647
private readonly Struct22[] struct22_0;
// Token: 0x04000A58 RID: 2648
private readonly Struct21[] struct21_6;
// Token: 0x04000A59 RID: 2649
private Struct22 struct22_1;
// Token: 0x04000A5A RID: 2650
private readonly GClass0.Class3 class3_0;
// Token: 0x04000A5B RID: 2651
private readonly GClass0.Class3 class3_1;
// Token: 0x04000A5C RID: 2652
private readonly GClass0.Class4 class4_0;
// Token: 0x04000A5D RID: 2653
private uint uint_1;
// Token: 0x04000A5E RID: 2654
private uint uint_2;
// Token: 0x04000A5F RID: 2655
private uint uint_3;
// Token: 0x020001CD RID: 461
private class Class3
{
// Token: 0x06001310 RID: 4880 RVA: 0x0008B334 File Offset: 0x00089534
public void method_0(uint uint_1)
{
for (uint num = this.uint_0; num < uint_1; num += 1U)
{
this.struct22_0[(int)num] = new Struct22(3);
this.struct22_1[(int)num] = new Struct22(3);
}
this.uint_0 = uint_1;
}
// Token: 0x06001311 RID: 4881 RVA: 0x0008B380 File Offset: 0x00089580
public void method_1()
{
this.struct21_0.method_0();
for (uint num = 0U; num < this.uint_0; num += 1U)
{
this.struct22_0[(int)num].method_0();
this.struct22_1[(int)num].method_0();
}
this.struct21_1.method_0();
this.struct22_2.method_0();
}
// Token: 0x06001312 RID: 4882 RVA: 0x0008B3E4 File Offset: 0x000895E4
public uint method_2(Class5 class5_0, uint uint_1)
{
if (this.struct21_0.method_1(class5_0) == 0U)
{
return this.struct22_0[(int)uint_1].method_1(class5_0);
}
uint num = 8U;
if (this.struct21_1.method_1(class5_0) == 0U)
{
num += this.struct22_1[(int)uint_1].method_1(class5_0);
}
else
{
num += 8U;
num += this.struct22_2.method_1(class5_0);
}
return num;
}
// Token: 0x06001313 RID: 4883 RVA: 0x0000BFE5 File Offset: 0x0000A1E5
public Class3()
{
this.struct22_0 = new Struct22[0x10];
this.struct22_1 = new Struct22[0x10];
this.struct22_2 = new Struct22(8);
base..ctor();
}
// Token: 0x04000A60 RID: 2656
private Struct21 struct21_0;
// Token: 0x04000A61 RID: 2657
private Struct21 struct21_1;
// Token: 0x04000A62 RID: 2658
private readonly Struct22[] struct22_0;
// Token: 0x04000A63 RID: 2659
private readonly Struct22[] struct22_1;
// Token: 0x04000A64 RID: 2660
private Struct22 struct22_2;
// Token: 0x04000A65 RID: 2661
private uint uint_0;
}
// Token: 0x020001CE RID: 462
private class Class4
{
// Token: 0x06001314 RID: 4884 RVA: 0x0008B450 File Offset: 0x00089650
public void method_0(int int_2, int int_3)
{
if (this.struct20_0 != null && this.int_0 == int_3 && this.int_1 == int_2)
{
return;
}
this.int_1 = int_2;
this.uint_1 = (1U << int_2) - 1U;
this.int_0 = int_3;
uint num = 1U << this.int_0 + this.int_1;
this.struct20_0 = new GClass0.Class4.Struct20[num];
for (uint num2 = 0U; num2 < num; num2 += 1U)
{
this.struct20_0[(int)num2].method_0();
}
}
// Token: 0x06001315 RID: 4885 RVA: 0x0008B4D0 File Offset: 0x000896D0
public void method_1()
{
uint num = 1U << this.int_0 + this.int_1;
for (uint num2 = 0U; num2 < num; num2 += 1U)
{
this.struct20_0[(int)num2].method_1();
}
}
// Token: 0x06001316 RID: 4886 RVA: 0x0000C013 File Offset: 0x0000A213
private uint method_2(uint uint_2, byte byte_0)
{
return ((uint_2 & this.uint_1) << this.int_0) + (uint)(byte_0 >> 8 - this.int_0);
}
// Token: 0x06001317 RID: 4887 RVA: 0x0000C035 File Offset: 0x0000A235
public byte method_3(Class5 class5_0, uint uint_2, byte byte_0)
{
return this.struct20_0[(int)this.method_2(uint_2, byte_0)].method_2(class5_0);
}
// Token: 0x06001318 RID: 4888 RVA: 0x0000C050 File Offset: 0x0000A250
public byte method_4(Class5 class5_0, uint uint_2, byte byte_0, byte byte_1)
{
return this.struct20_0[(int)this.method_2(uint_2, byte_0)].method_3(class5_0, byte_1);
}
// Token: 0x06001319 RID: 4889 RVA: 0x0000C06D File Offset: 0x0000A26D
public Class4()
{
this.uint_0 = 1U;
base..ctor();
}
// Token: 0x04000A66 RID: 2662
private uint uint_0;
// Token: 0x04000A67 RID: 2663
private GClass0.Class4.Struct20[] struct20_0;
// Token: 0x04000A68 RID: 2664
private int int_0;
// Token: 0x04000A69 RID: 2665
private int int_1;
// Token: 0x04000A6A RID: 2666
private uint uint_1;
// Token: 0x020001CF RID: 463
private struct Struct20
{
// Token: 0x0600131A RID: 4890 RVA: 0x0000C07C File Offset: 0x0000A27C
public void method_0()
{
this.struct21_0 = new Struct21[0x300];
}
// Token: 0x0600131B RID: 4891 RVA: 0x0008B510 File Offset: 0x00089710
public void method_1()
{
for (int i = 0; i < 0x300; i++)
{
this.struct21_0[i].method_0();
}
}
// Token: 0x0600131C RID: 4892 RVA: 0x0008B540 File Offset: 0x00089740
public byte method_2(Class5 class5_0)
{
uint num = 1U;
do
{
num = (num << 1 | this.struct21_0[(int)num].method_1(class5_0));
}
while (num < 0x100U);
return (byte)num;
}
// Token: 0x0600131D RID: 4893 RVA: 0x0008B570 File Offset: 0x00089770
public byte method_3(Class5 class5_0, byte byte_0)
{
uint num = 1U;
for (;;)
{
uint num2 = (uint)(byte_0 >> 7 & 1);
byte_0 = (byte)(byte_0 << 1);
uint num3 = this.struct21_0[(int)((1U + num2 << 8) + num)].method_1(class5_0);
num = (num << 1 | num3);
if (num2 != num3)
{
break;
}
if (num >= 0x100U)
{
goto IL_5C;
}
}
while (num < 0x100U)
{
num = (num << 1 | this.struct21_0[(int)num].method_1(class5_0));
}
IL_5C:
return (byte)num;
}
// Token: 0x04000A6B RID: 2667
private Struct21[] struct21_0;
}
}
}