3065 {
3066 char* ptr = inputPtr + inputLength;
3067 int num = inputLength;
3068 int num2 = 0;
3069 while (inputPtr < ptr)
3070 {
3071 uint num3 = *inputPtr;
3072 inputPtr++;
3073 switch (num3)
3074 {
3075 case 0u:
3076 case 1u:
3077 case 2u:
3078 case 3u:
3079 case 4u:
3080 case 5u:
3081 case 6u:
3082 case 7u:
3083 case 8u:
3084 case 9u:
3085 case 10u:
3086 case 11u:
3087 case 12u:
3088 case 13u:
3089 case 14u:
3090 case 15u:
3091 case 16u:
3092 case 17u:
3093 case 18u:
3094 case 19u:
3095 case 20u:
3096 case 21u:
3097 case 22u:
3098 case 23u:
3099 case 24u:
3100 case 25u:
3101 case 26u:
3102 case 27u:
3103 case 28u:
3104 case 29u:
3105 case 30u:
3106 case 31u:
3107 case 32u:
3108 num--;
3109 break;
3110 case 61u:
3111 num--;
3112 num2++;
3113 break;
3114 }
3115 }
3116 switch (num2)
3117 {
3118 case 1:
3119 num2 = 2;
3120 break;
3121 case 2:
3122 num2 = 1;
3123 break;
3124 default:
3125 throw new FormatException(SR.Format_BadBase64Char);
3126 case 0:
3127 break;
3128 }
3129 return num / 4 * 3 + num2;
3130 }