die() { printf -- "$1" >&2; exit 1; }
[ "$#" -eq 2 ] || die 'Usage: decompose SRC DEST\n'
[ "$1" = '-' ] && set -- /dev/stdin "$2"
{ exec <"$1"; } 2>/dev/null || die 'source file spoiled\n'
{ mkdir -p "$2"; } 2>/dev/null
{ cd "$2"; } 2>/dev/null || die 'destination directory dissonance\n'
ls | read x && die 'destination directory full\n'
od -vAn -bw1 | (seq 1 65536 | while read i; do
  i=$(printf '%.3x' $i)
  [ "${#i}" -eq 3 ] || { rm *; die 'too big for me >.<\n'; };
  read v <&67
  if [ -z "$v" ]; then break; fi
  printf -- '\'"$v" > $i
done) 67<&0
