scripts
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user