- | ch `leChar#` '\xDF'# = C# (chr# ((ord# ch `iShiftL#` 6#) +#
- (ord# (indexCharOffAddr# addr (nh +# 1#))) -# 0x3080#))
- : unpack (nh +# 2#)
- | ch `leChar#` '\xEF'# = C# (chr# ((ord# ch `iShiftL#` 12#) +#
- (ord# (indexCharOffAddr# addr (nh +# 1#)) `iShiftL#` 6#) +#
- (ord# (indexCharOffAddr# addr (nh +# 2#))) -# 0xE2080#))
- : unpack (nh +# 3#)
- | ch `leChar#` '\xF7'# = C# (chr# ((ord# ch `iShiftL#` 18#) +#
- (ord# (indexCharOffAddr# addr (nh +# 1#)) `iShiftL#` 12#) +#
- (ord# (indexCharOffAddr# addr (nh +# 2#)) `iShiftL#` 6#) +#
- (ord# (indexCharOffAddr# addr (nh +# 3#))) -# 0x3C82080#))
- : unpack (nh +# 4#)
- | ch `leChar#` '\xFB'# = C# (chr# ((ord# ch -# 0xF8# `iShiftL#` 24#) +#
- (ord# (indexCharOffAddr# addr (nh +# 1#)) `iShiftL#` 18#) +#
- (ord# (indexCharOffAddr# addr (nh +# 2#)) `iShiftL#` 12#) +#
- (ord# (indexCharOffAddr# addr (nh +# 3#)) `iShiftL#` 6#) +#
- (ord# (indexCharOffAddr# addr (nh +# 4#))) -# 0x2082080#))
- : unpack (nh +# 5#)
- | otherwise = C# (chr# (((ord# ch -# 0xFC#) `iShiftL#` 30#) +#
- ((ord# (indexCharOffAddr# addr (nh +# 1#)) -# 0x80#)
- `iShiftL#` 24#) +#
- (ord# (indexCharOffAddr# addr (nh +# 2#)) `iShiftL#` 18#) +#
- (ord# (indexCharOffAddr# addr (nh +# 3#)) `iShiftL#` 12#) +#
- (ord# (indexCharOffAddr# addr (nh +# 4#)) `iShiftL#` 6#) +#
- (ord# (indexCharOffAddr# addr (nh +# 5#))) -# 0x2082080#))
- : unpack (nh +# 6#)
+ | ch `leChar#` '\xDF'# =
+ C# (chr# ((ord# ch -# 0xC0#) `iShiftL#` 6# +#
+ (ord# (indexCharOffAddr# addr (nh +# 1#)) -# 0x80#))) :
+ unpack (nh +# 2#)
+ | ch `leChar#` '\xEF'# =
+ C# (chr# ((ord# ch -# 0xE0#) `iShiftL#` 12# +#
+ (ord# (indexCharOffAddr# addr (nh +# 1#)) -# 0x80#) `iShiftL#` 6# +#
+ (ord# (indexCharOffAddr# addr (nh +# 2#)) -# 0x80#))) :
+ unpack (nh +# 3#)
+ | otherwise =
+ C# (chr# ((ord# ch -# 0xF0#) `iShiftL#` 18# +#
+ (ord# (indexCharOffAddr# addr (nh +# 1#)) -# 0x80#) `iShiftL#` 12# +#
+ (ord# (indexCharOffAddr# addr (nh +# 2#)) -# 0x80#) `iShiftL#` 6# +#
+ (ord# (indexCharOffAddr# addr (nh +# 3#)) -# 0x80#))) :
+ unpack (nh +# 4#)