#pragma once
#include "decompress.h"
#include "stdafx.h"
struct KrakenLzTable
{
uint8_t *cmd_stream;
int32_t cmd_stream_size;
int32_t *offs_stream;
int32_t offs_stream_size;
uint8_t *lit_stream;
int32_t lit_stream_size;
int32_t *len_stream;
int32_t len_stream_size;
};
bool Kraken_UnpackOffsets (const uint8_t *src, const uint8_t *src_end,
const uint8_t *packed_offs_stream,
const uint8_t *packed_offs_stream_extra,
int32_t packed_offs_stream_size,
int32_t multi_dist_scale,
const uint8_t *packed_litlen_stream,
int32_t packed_litlen_stream_size,
int32_t *offs_stream, int32_t *len_stream,
bool excess_flag, int32_t excess_bytes);
bool Kraken_ReadLzTable (int32_t mode, const uint8_t *src,
const uint8_t *src_end, uint8_t *dst,
int32_t dst_size, int32_t offset, uint8_t *scratch,
uint8_t *scratch_end, KrakenLzTable *lztable);
bool Kraken_ProcessLzRuns_Type0 (KrakenLzTable *lzt, uint8_t *dst,
uint8_t *dst_end, uint8_t *dst_start);
bool Kraken_ProcessLzRuns_Type1 (KrakenLzTable *lzt, uint8_t *dst,
uint8_t *dst_end, uint8_t *dst_start);
bool Kraken_ProcessLzRuns (int32_t mode, uint8_t *dst, int32_t dst_size,
int32_t offset, KrakenLzTable *lztable);
int32_t Kraken_DecodeQuantum (uint8_t *dst, uint8_t *dst_end,
uint8_t *dst_start, const uint8_t *src,
const uint8_t *src_end, uint8_t *scratch,
uint8_t *scratch_end);