// Token: 0x060001B6 RID: 438 RVA: 0x00008E74 File Offset: 0x00007074
        private static void CollectParts(ICollection <string> parts, ref int number, int divisor, GrammaticalGender gender, params string[] forms)
        {
            if (number < divisor)
            {
                return;
            }
            int result = number / divisor;

            number %= divisor;
            RussianNumberToWordsConverter.CollectPartsUnderOneThousand(parts, result, gender);
            parts.Add(RussianNumberToWordsConverter.ChooseOneForGrammaticalNumber(result, forms));
        }
        // Token: 0x060001B2 RID: 434 RVA: 0x00008AC8 File Offset: 0x00006CC8
        public override string Convert(long input, GrammaticalGender gender)
        {
            if (input > 2147483647L || input < -2147483648L)
            {
                throw new NotImplementedException();
            }
            int number = (int)input;

            if (number == 0)
            {
                return("ноль");
            }
            List <string> parts = new List <string>();

            if (number < 0)
            {
                parts.Add("минус");
                number = -number;
            }
            RussianNumberToWordsConverter.CollectParts(parts, ref number, 1000000000, GrammaticalGender.Masculine, new string[]
            {
                "миллиард",
                "миллиарда",
                "миллиардов"
            });
            RussianNumberToWordsConverter.CollectParts(parts, ref number, 1000000, GrammaticalGender.Masculine, new string[]
            {
                "миллион",
                "миллиона",
                "миллионов"
            });
            RussianNumberToWordsConverter.CollectParts(parts, ref number, 1000, GrammaticalGender.Feminine, new string[]
            {
                "тысяча",
                "тысячи",
                "тысяч"
            });
            if (number > 0)
            {
                RussianNumberToWordsConverter.CollectPartsUnderOneThousand(parts, number, gender);
            }
            return(string.Join(" ", parts));
        }
        // Token: 0x060001B7 RID: 439 RVA: 0x00008EA8 File Offset: 0x000070A8
        private static void CollectOrdinalParts(ICollection <string> parts, ref int number, int divisor, GrammaticalGender gender, string prefixedForm, params string[] forms)
        {
            if (number < divisor)
            {
                return;
            }
            int result = number / divisor;

            number %= divisor;
            if (number != 0)
            {
                RussianNumberToWordsConverter.CollectPartsUnderOneThousand(parts, result, gender);
                parts.Add(RussianNumberToWordsConverter.ChooseOneForGrammaticalNumber(result, forms));
                return;
            }
            if (result == 1)
            {
                parts.Add(prefixedForm);
                return;
            }
            parts.Add(RussianNumberToWordsConverter.GetPrefix(result) + prefixedForm);
        }
        // Token: 0x060001B3 RID: 435 RVA: 0x00008BAC File Offset: 0x00006DAC
        public override string ConvertToOrdinal(int number, GrammaticalGender gender)
        {
            if (number == 0)
            {
                return("нулев" + RussianNumberToWordsConverter.GetEndingForGender(gender, number));
            }
            List <string> parts = new List <string>();

            if (number < 0)
            {
                parts.Add("минус");
                number = -number;
            }
            RussianNumberToWordsConverter.CollectOrdinalParts(parts, ref number, 1000000000, GrammaticalGender.Masculine, "миллиардн" + RussianNumberToWordsConverter.GetEndingForGender(gender, number), new string[]
            {
                "миллиард",
                "миллиарда",
                "миллиардов"
            });
            RussianNumberToWordsConverter.CollectOrdinalParts(parts, ref number, 1000000, GrammaticalGender.Masculine, "миллионн" + RussianNumberToWordsConverter.GetEndingForGender(gender, number), new string[]
            {
                "миллион",
                "миллиона",
                "миллионов"
            });
            RussianNumberToWordsConverter.CollectOrdinalParts(parts, ref number, 1000, GrammaticalGender.Feminine, "тысячн" + RussianNumberToWordsConverter.GetEndingForGender(gender, number), new string[]
            {
                "тысяча",
                "тысячи",
                "тысяч"
            });
            if (number >= 100)
            {
                string ending   = RussianNumberToWordsConverter.GetEndingForGender(gender, number);
                int    hundreds = number / 100;
                number %= 100;
                if (number == 0)
                {
                    parts.Add(RussianNumberToWordsConverter.UnitsOrdinalPrefixes[hundreds] + "сот" + ending);
                }
                else
                {
                    parts.Add(RussianNumberToWordsConverter.HundredsMap[hundreds]);
                }
            }
            if (number >= 20)
            {
                string ending2 = RussianNumberToWordsConverter.GetEndingForGender(gender, number);
                int    tens    = number / 10;
                number %= 10;
                if (number == 0)
                {
                    parts.Add(RussianNumberToWordsConverter.TensOrdinal[tens] + ending2);
                }
                else
                {
                    parts.Add(RussianNumberToWordsConverter.TensMap[tens]);
                }
            }
            if (number > 0)
            {
                parts.Add(RussianNumberToWordsConverter.UnitsOrdinal[number] + RussianNumberToWordsConverter.GetEndingForGender(gender, number));
            }
            return(string.Join(" ", parts));
        }
 // Token: 0x060001B9 RID: 441 RVA: 0x00008F0F File Offset: 0x0000710F
 private static string ChooseOneForGrammaticalNumber(int number, string[] forms)
 {
     return(forms[RussianNumberToWordsConverter.GetIndex(RussianGrammaticalNumberDetector.Detect(number))]);
 }