internal void scan_tree(short[] tree, int max_code)
{
int num = -1;
int num2 = tree[1];
int num3 = 0;
int num4 = 7;
int num5 = 4;
if (num2 == 0)
{
num4 = 138;
num5 = 3;
}
tree[(max_code + 1) * 2 + 1] = (short)SupportClass.Identity(65535L);
for (int i = 0; i <= max_code; i++)
{
int num6 = num2;
num2 = tree[(i + 1) * 2 + 1];
if (++num3 < num4 && num6 == num2)
{
continue;
}
if (num3 < num5)
{
bl_tree[num6 * 2] = (short)(bl_tree[num6 * 2] + num3);
}
else if (num6 != 0)
{
if (num6 != num)
{
bl_tree[num6 * 2]++;
}
bl_tree[32]++;
}
else if (num3 <= 10)
{
bl_tree[34]++;
}
else
{
bl_tree[36]++;
}
num3 = 0;
num = num6;
if (num2 == 0)
{
num4 = 138;
num5 = 3;
}
else if (num6 == num2)
{
num4 = 6;
num5 = 3;
}
else
{
num4 = 7;
num5 = 4;
}
}
}