// Token: 0x0600030A RID: 778 RVA: 0x000111C4 File Offset: 0x0000F3C4
        private int EncodeRfc2231Segment(byte[] source, int sourceIndex, int maxValueLength, EncodingOptions encodingOptions)
        {
            byte[] array = new byte[maxValueLength * 4];
            int    count = 0;
            int    num   = 0;

            while (sourceIndex < source.Length)
            {
                int  i    = 1;
                byte b    = source[sourceIndex];
                bool flag = true;
                if (b >= 128)
                {
                    if (encodingOptions.AllowUTF8 && MimeScan.IsUTF8NonASCII(source, sourceIndex, source.Length, out i))
                    {
                        flag = false;
                    }
                }
                else if (!MimeScan.IsSegmentEncodingRequired(b))
                {
                    flag = false;
                }
                if (flag)
                {
                    if (num + 3 > maxValueLength)
                    {
                        break;
                    }
                    array[count++]    = 37;
                    array[count++]    = MimeParameter.OctetEncoderMap[b >> 4];
                    array[count++]    = MimeParameter.OctetEncoderMap[(int)(b & 15)];
                    num              += 3;
                    this.valueEncoded = true;
                    sourceIndex++;
                }
                else
                {
                    if (num + 1 > maxValueLength)
                    {
                        break;
                    }
                    while (i > 0)
                    {
                        array[count++] = source[sourceIndex++];
                        i--;
                    }
                    num++;
                }
            }
            this.valueFragments.AppendFragment(new MimeString(array, 0, count));
            return(sourceIndex);
        }