示例#1
0
 // Token: 0x06001158 RID: 4440
 // RVA: 0x0005EB80 File Offset: 0x0005CD80
 internal void method_0(Class137 class137_0)
 {
     short[] array = this.short_0;
     short[] short_ = this.class144_0.short_2;
     int num = this.class144_0.int_0;
     int num2 = -1;
     class137_0.int_8 = 0;
     class137_0.int_9 = Class145.int_5;
     for (int i = 0; i < num; i++)
     {
         if (array[i * 2] != 0)
         {
             num2 = (class137_0.int_7[++class137_0.int_8] = i);
             class137_0.sbyte_1[i] = 0;
         }
         else
         {
             array[i * 2 + 1] = 0;
         }
     }
     int num3;
     while (class137_0.int_8 < 2)
     {
         num3 = (class137_0.int_7[++class137_0.int_8] = ((num2 < 2) ? (++num2) : 0));
         array[num3 * 2] = 1;
         class137_0.sbyte_1[num3] = 0;
         class137_0.int_24--;
         if (short_ != null)
         {
             class137_0.int_28 -= (int)short_[num3 * 2 + 1];
         }
     }
     this.int_6 = num2;
     for (int i = class137_0.int_8 / 2; i >= 1; i--)
     {
         class137_0.method_19(array, i);
     }
     num3 = num;
     do
     {
         int i = class137_0.int_7[1];
         class137_0.int_7[1] = class137_0.int_7[class137_0.int_8--];
         class137_0.method_19(array, 1);
         int num4 = class137_0.int_7[1];
         class137_0.int_7[--class137_0.int_9] = i;
         class137_0.int_7[--class137_0.int_9] = num4;
         array[num3 * 2] = array[i * 2] + array[num4 * 2];
         class137_0.sbyte_1[num3] = (sbyte)(Math.Max((byte)class137_0.sbyte_1[i], (byte)class137_0.sbyte_1[num4]) + 1);
         array[i * 2 + 1] = (array[num4 * 2 + 1] = (short)num3);
         class137_0.int_7[1] = num3++;
         class137_0.method_19(array, 1);
     }
     while (class137_0.int_8 >= 2);
     class137_0.int_7[--class137_0.int_9] = class137_0.int_7[1];
     this.method_1(class137_0);
     Class145.smethod_2(array, num2, class137_0.short_1);
 }