private bool testCondition(GameData.DescCondition c)
        {
            bool flag;

            if (c == null)
            {
                return(true);
            }
            object obj = this.castItemValue(c.key);

            if (!c.values.GetType().IsArray)
            {
                return(c.values.Equals(obj) == c.match);
            }
            IEnumerator enumerator = ((IEnumerable)c.values).GetEnumerator();

            try
            {
                while (enumerator.MoveNext())
                {
                    if (!enumerator.Current.Equals(obj))
                    {
                        continue;
                    }
                    flag = c.match;
                    return(flag);
                }
                return(!c.match);
            }
            finally
            {
                IDisposable disposable = enumerator as IDisposable;
                if (disposable != null)
                {
                    disposable.Dispose();
                }
            }
            return(flag);
        }
        public static void export(string file)
        {
            SortedList <string, SortedList <string, List <string> > > strs = new SortedList <string, SortedList <string, List <string> > >();

            foreach (KeyValuePair <itemType, SortedList <string, GameData.Desc> > keyValuePair in GameData.desc)
            {
                SortedList <string, List <string> > strs1 = new SortedList <string, List <string> >();
                strs.Add(keyValuePair.Key.ToString(), strs1);
                foreach (KeyValuePair <string, GameData.Desc> value in keyValuePair.Value)
                {
                    string str  = value.Value.category;
                    string str1 = string.Concat(value.Key, ": ");
                    while (str1.Length < 22)
                    {
                        str1 = string.Concat(str1, " ");
                    }
                    if (value.Value.defaultValue is string)
                    {
                        str1 = string.Concat(str1, "\"", value.Value.defaultValue.ToString(), "\" ");
                        if ((value.Value.flags & 16) > 0)
                        {
                            str1 = string.Concat(str1, "multiline ");
                        }
                    }
                    else if (value.Value.defaultValue is GameData.TripleInt)
                    {
                        GameData.TripleInt tripleInt = value.Value.defaultValue as GameData.TripleInt;
                        str1 = string.Concat(str1, value.Value.list.ToString(), " ");
                        if (value.Value.flags == 1)
                        {
                            str1 = string.Concat(new object[] { str1, "(", tripleInt.v0, ") " });
                        }
                        else if (value.Value.flags == 2)
                        {
                            str1 = string.Concat(new object[] { str1, "(", tripleInt.v0, ", ", tripleInt.v1, ") " });
                        }
                        else if (value.Value.flags == 3)
                        {
                            str1 = string.Concat(new object[] { str1, "(", tripleInt.v0, ", ", tripleInt.v1, ",", tripleInt.v2, ") " });
                        }
                        str = "";
                    }
                    else if (value.Value.defaultValue is GameData.Instance)
                    {
                        str1 = string.Concat(str1, value.Value.list.ToString(), " (0,0,0) (1,0,0,0) ");
                        str  = "";
                    }
                    else if (value.Value.defaultValue is Color)
                    {
                        Color color = (Color)value.Value.defaultValue;
                        int   argb  = color.ToArgb() & 16777215;
                        str1 = string.Concat(str1, "#", argb.ToString("X").PadLeft(6, '0'), " ");
                    }
                    else if (value.Value.defaultValue is GameData.File)
                    {
                        if (!value.Value.mask.EndsWith("*.dds"))
                        {
                            str1 = (value.Value.mask != "Nvidia dds|*.dds|tga|*.tga|jpg|*.jpg|png|*.png|bmp|*.bmp" ? string.Concat(str1, "\"", value.Value.mask, "\" ") : string.Concat(str1, "TEXTURE_ANY "));
                        }
                        else
                        {
                            str1 = string.Concat(str1, "TEXTURE_DDS ");
                        }
                    }
                    else if (value.Value.defaultValue == null)
                    {
                        str1 = string.Concat(str1, "null ");
                    }
                    else if (value.Value.defaultValue.GetType().IsEnum)
                    {
                        str1 = string.Concat(new string[] { str1, value.Value.defaultValue.GetType().Name, ".", value.Value.defaultValue.ToString(), " " });
                        if ((value.Value.flags & 256) > 0)
                        {
                            str1 = string.Concat(str1, "bitset ");
                        }
                    }
                    else if (value.Value.defaultValue is float || value.Value.defaultValue is double)
                    {
                        string str2 = value.Value.defaultValue.ToString();
                        if (!str2.Contains("."))
                        {
                            str2 = string.Concat(str2, ".0");
                        }
                        str1 = string.Concat(str1, str2, " ");
                    }
                    else
                    {
                        str1 = string.Concat(str1, value.Value.defaultValue.ToString(), " ");
                    }
                    if (str.Length > 0 && value.Value.limit == 9999)
                    {
                        str1 = string.Concat(str1, "looped ");
                    }
                    if (value.Value.description.Length > 0)
                    {
                        str1 = string.Concat(str1, "\"", value.Value.description.Replace("\n", "\\n"), "\"");
                    }
                    if (!strs1.ContainsKey(str))
                    {
                        strs1.Add(str, new List <string>());
                    }
                    strs1[str].Add(str1);
                    if (value.Value.condition == null)
                    {
                        continue;
                    }
                    GameData.DescCondition descCondition = value.Value.condition;
                    string str3 = "";
                    if (!descCondition.values.GetType().IsArray)
                    {
                        if (descCondition.values.GetType().IsEnum)
                        {
                            str3 = string.Concat(descCondition.values.GetType().Name, ".");
                        }
                        str3 = string.Concat(str3, descCondition.values.ToString());
                    }
                    else
                    {
                        List <string> strs2 = new List <string>();
                        foreach (object obj in (IEnumerable)descCondition.values)
                        {
                            strs2.Add(string.Concat((obj.GetType().IsEnum ? string.Concat(obj.GetType().Name, ".") : ""), obj.ToString()));
                        }
                        str3 = string.Join(" or ", strs2);
                    }
                    if (descCondition.values.GetType().IsEnum)
                    {
                        string.Concat(descCondition.values.GetType().Name, ".");
                    }
                    if (!strs1.ContainsKey("CONDITIONS"))
                    {
                        strs1.Add("CONDITIONS", new List <string>());
                    }
                    List <string> item = strs1["CONDITIONS"];
                    string[]      key  = new string[] { "condition \"", value.Key, "\" if \"", descCondition.key, "\"", null, null };
                    key[5] = (descCondition.match ? " is " : " not ");
                    key[6] = str3;
                    item.Add(string.Concat(key));
                }
            }
            bool flag = true;

Label0:
            while (flag)
            {
                flag = false;
                foreach (KeyValuePair <string, SortedList <string, List <string> > > keyValuePair1 in strs)
                {
                    foreach (KeyValuePair <string, List <string> > value1 in keyValuePair1.Value)
                    {
                        foreach (string value2 in value1.Value)
                        {
                            foreach (KeyValuePair <string, SortedList <string, List <string> > > keyValuePair2 in strs)
                            {
                                if (!(keyValuePair1.Key != keyValuePair2.Key) || !keyValuePair2.Value.ContainsKey(value1.Key) || !keyValuePair2.Value[value1.Key].Contains(value2))
                                {
                                    continue;
                                }
                                string str4 = string.Concat(keyValuePair1.Key, ",", keyValuePair2.Key);
                                if (!strs.ContainsKey(str4))
                                {
                                    strs.Add(str4, new SortedList <string, List <string> >());
                                }
                                if (!strs[str4].ContainsKey(value1.Key))
                                {
                                    strs[str4].Add(value1.Key, new List <string>());
                                }
                                strs[str4][value1.Key].Add(value2);
                                keyValuePair2.Value[value1.Key].Remove(value2);
                                value1.Value.Remove(value2);
                                if (keyValuePair2.Value[value1.Key].Count == 0)
                                {
                                    keyValuePair2.Value.Remove(value1.Key);
                                }
                                if (value1.Value.Count == 0)
                                {
                                    keyValuePair1.Value.Remove(value1.Key);
                                }
                                flag = true;
                                goto Label3;
                            }
Label3:
                            if (!flag)
                            {
                                continue;
                            }
                            goto Label2;
                        }
Label2:
                        if (!flag)
                        {
                            continue;
                        }
                        goto Label1;
                    }
Label1:
                    if (!flag)
                    {
                        continue;
                    }
                    goto Label0;
                }
            }
            string str5 = "";

            foreach (KeyValuePair <string, SortedList <string, List <string> > > keyValuePair3 in strs)
            {
                if (keyValuePair3.Value.Count == 0)
                {
                    continue;
                }
                str5 = string.Concat(str5, "[", keyValuePair3.Key, "]\n");
                foreach (KeyValuePair <string, List <string> > value3 in keyValuePair3.Value)
                {
                    if (value3.Key == "CONDITIONS")
                    {
                        continue;
                    }
                    if (value3.Key.Length > 0 && value3.Value.Count > 0)
                    {
                        str5 = string.Concat(str5, value3.Key, ":\n");
                    }
                    foreach (string value4 in value3.Value)
                    {
                        str5 = string.Concat(str5, value4, "\n");
                    }
                }
                if (!keyValuePair3.Value.ContainsKey("CONDITIONS") || keyValuePair3.Value["CONDITIONS"].Count <= 0)
                {
                    continue;
                }
                str5 = string.Concat(str5, "CONDITIONS:\n");
                foreach (string item1 in keyValuePair3.Value["CONDITIONS"])
                {
                    str5 = string.Concat(str5, item1, "\n");
                }
            }
            FileStream fileStream = File.Open(file, FileMode.Create);

            byte[] bytes = Encoding.ASCII.GetBytes(str5);
            fileStream.Write(bytes, 0, (int)bytes.Length);
            fileStream.Close();
        }