// 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); }