51 {
53 ItemType val;
54 while (true)
55 {
56 ItemType[] array2;
58 {
59 array2 = new ItemType[1] { newItem };
60 goto IL_0088;
61 }
62 int num = 0;
63 int num2 =
array.Length;
64 while (true)
65 {
66 int num3 = (num + num2) / 2;
68 int num4 = val.Compare(newItem);
69 if (num4 == 0)
70 {
71 break;
72 }
73 if (num4 < 0)
74 {
75 num = num3 + 1;
76 }
77 else
78 {
79 num2 = num3;
80 }
81 if (num != num2)
82 {
83 continue;
84 }
85 goto IL_005a;
86 }
87 break;
88 IL_0088:
91 {
93 continue;
94 }
95 val = newItem;
96 break;
97 IL_005a:
98 int num5 =
array.Length;
99 array2 = new ItemType[num5 + 1];
101 array2[num] = newItem;
102 Array.Copy(
array, num, array2, num + 1, num5 - num);
103 goto IL_0088;
104 }
105 return val;
106 }
static int CompareExchange(ref int location1, int value, int comparand)