#!/usr/bin/env bash
set -euo pipefail

if [[ $# -ne 2 ]]; then
  echo "usage: $0 EXECUTABLE OUTPUT_DIRECTORY" >&2
  exit 2
fi

input=$1
output=$2
magic=$(head -c 8 "$input")
if [[ $magic != GC_EXE_3 ]]; then
  echo "unsupported executable magic: $magic" >&2
  exit 2
fi

mkdir -p "$output"
archive_size=$(od -An -tu8 -j8 -N8 "$input" | tr -d ' ')
tail -c +41 "$input" | lz4 -df - "$output/payload.bin" >/dev/null
head -c "$archive_size" "$output/payload.bin" > "$output/tiles.a"
tail -c "+$((archive_size + 1))" "$output/payload.bin" > "$output/metadata.bin"
(cd "$output" && ar x tiles.a)
echo "extracted $archive_size-byte tile archive into $output"
