Files
2026-06-04 11:42:34 +02:00

103 lines
2.2 KiB
C#

using System;
namespace Hjg.Pngcs.Zlib
{
// Token: 0x02000047 RID: 71
public class CRC32
{
// Token: 0x060002A4 RID: 676 RVA: 0x0000A90A File Offset: 0x00008B0A
public CRC32()
: this(3988292384U, uint.MaxValue)
{
}
// Token: 0x060002A5 RID: 677 RVA: 0x0000A918 File Offset: 0x00008B18
public CRC32(uint polynomial, uint seed)
{
this.table = CRC32.InitializeTable(polynomial);
this.seed = seed;
this.hash = seed;
}
// Token: 0x060002A6 RID: 678 RVA: 0x0000A93A File Offset: 0x00008B3A
public void Update(byte[] buffer)
{
this.Update(buffer, 0, buffer.Length);
}
// Token: 0x060002A7 RID: 679 RVA: 0x0000A948 File Offset: 0x00008B48
public void Update(byte[] buffer, int start, int length)
{
int i = 0;
int num = start;
while (i < length)
{
this.hash = (this.hash >> 8) ^ this.table[(int)((UIntPtr)((uint)buffer[num] ^ (this.hash & 255U)))];
i++;
num++;
}
}
// Token: 0x060002A8 RID: 680 RVA: 0x0000A98E File Offset: 0x00008B8E
public uint GetValue()
{
return ~this.hash;
}
// Token: 0x060002A9 RID: 681 RVA: 0x0000A997 File Offset: 0x00008B97
public void Reset()
{
this.hash = this.seed;
}
// Token: 0x060002AA RID: 682 RVA: 0x0000A9A8 File Offset: 0x00008BA8
private static uint[] InitializeTable(uint polynomial)
{
if (polynomial == 3988292384U && CRC32.defaultTable != null)
{
return CRC32.defaultTable;
}
uint[] array = new uint[256];
for (int i = 0; i < 256; i++)
{
uint num = (uint)i;
for (int j = 0; j < 8; j++)
{
if ((num & 1U) == 1U)
{
num = (num >> 1) ^ polynomial;
}
else
{
num >>= 1;
}
}
array[i] = num;
}
if (polynomial == 3988292384U)
{
CRC32.defaultTable = array;
}
return array;
}
// Token: 0x0400015D RID: 349
private const uint defaultPolynomial = 3988292384U;
// Token: 0x0400015E RID: 350
private const uint defaultSeed = 4294967295U;
// Token: 0x0400015F RID: 351
private static uint[] defaultTable;
// Token: 0x04000160 RID: 352
private uint hash;
// Token: 0x04000161 RID: 353
private uint seed;
// Token: 0x04000162 RID: 354
private uint[] table;
}
}