アンパック(復号化):

このファイルは deflate 圧縮さらに Blowfish(カスタム) で暗号化されていますので、アンパックする前に復号化する必要があります。

Key:
Blowfish なので key が必要。 key の場所。
key_length = 0x37,
key_offset = project_lang.prop の前 0x38 or
{
    cc
    68 ? ? ? ?
    E8 ? ? ? ?
    C3
    cc
}

ファイル構造:

struct Arch {
    version: u32,
    chunk_size: u32,
    chunk_count: u32,
    chunk_offsets: Vec<u64>,
    file_size: u64,
    chunks: <u8>,
}

基本フロー:
chunk_offset から size (chunk_offset[i+1] - chunk_offset[i]) 分 Chunk を取得。
取得データを Blowfish(カスタム) で上記の key を使って復号化。
size が chunk_size より小さければ圧縮されているので defrate で解凍する。
以上を chunk_count 分繰り返す。

Blowfish(カスタム):
暗号化は Blowfish なんですが若干カスタマイズされています。

P,S 初期化時 S[0][118] はバイトスワップ

P の配列順番が
P{[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17]}

P{[0],[3],[4],[1],[2],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17]}
ですが、expand_key の時(初期化時)は元の順番の P を使用する。

カスタマイズはこの2点

Block は LittleEndian

以上で復号可