question: protected void decodeAtom ( PushbackInputStream inStream , OutputStream outStream , int l ) throws IOException { int i , c1 , c2 , c3 , c4 ; int a , b , c ; StringBuffer x = new StringBuffer ( ) ; for ( i = 0 ; i < 4 ; i ++ ) { c1 = inStream . read ( ) ; if ( c1 == - 1 ) { throw new CEStreamExhausted ( ) ; } x . append ( ( char ) c1 ) ; decoderBuffer [ i ] = ( byte ) ( ( c1 - ' ' ) & 0x3f ) ; } a = ( ( decoderBuffer [ 0 ] << 2 ) & 0xfc ) | ( ( decoderBuffer [ 1 ] > > > 4 ) & 3 ) ; b = ( ( decoderBuffer [ 1 ] << 4 ) & 0xf0 ) | ( ( decoderBuffer [ 2 ] > > > 2 ) & 0xf ) ; c = ( ( decoderBuffer [ 2 ] << 6 ) & 0xc0 ) | ( decoderBuffer [ 3 ] & 0x3f ) ; outStream . write ( ( byte ) ( a & 0xff ) ) ; if ( l > 1 ) { outStream . write ( ( byte ) ( b & 0xff ) ) ; } if ( l > 2 ) { outStream . write ( ( byte ) ( c & 0xff ) ) ; } }
target:  Decode a UU atom. Note that if l is less than 3 we don't write the extra bits, however the encoder always encodes 4 character groups even when they are not needed.