Initial commit: client source

This commit is contained in:
Andreas Lierschaft
2026-08-17 20:03:02 +02:00
commit 9ae37cd0ea
869 changed files with 227899 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_proto", "dump_proto\dump_proto.vcxproj", "{DBCC99BC-1D68-4271-AC99-62EBBE37890F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lzo", "lzo\lzo.vcxproj", "{3AE0E6E6-B750-4769-9A6E-0D47012F1B40}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DBCC99BC-1D68-4271-AC99-62EBBE37890F}.Debug|Win32.ActiveCfg = Debug|Win32
{DBCC99BC-1D68-4271-AC99-62EBBE37890F}.Debug|Win32.Build.0 = Debug|Win32
{DBCC99BC-1D68-4271-AC99-62EBBE37890F}.Release|Win32.ActiveCfg = Release|Win32
{DBCC99BC-1D68-4271-AC99-62EBBE37890F}.Release|Win32.Build.0 = Release|Win32
{3AE0E6E6-B750-4769-9A6E-0D47012F1B40}.Debug|Win32.ActiveCfg = Debug|Win32
{3AE0E6E6-B750-4769-9A6E-0D47012F1B40}.Debug|Win32.Build.0 = Debug|Win32
{3AE0E6E6-B750-4769-9A6E-0D47012F1B40}.Release|Win32.ActiveCfg = Release|Win32
{3AE0E6E6-B750-4769-9A6E-0D47012F1B40}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
+431
View File
@@ -0,0 +1,431 @@
#include "CsvFile.h"
#include <fstream>
#include <algorithm>
#ifndef Assert
#include <assert.h>
#define Assert assert
#define LogToFile (void)(0);
#endif
namespace
{
/// 파싱용 state 열거값
enum ParseState
{
STATE_NORMAL = 0, ///< 일반 상태
STATE_QUOTE ///< 따옴표 뒤의 상태
};
/// 문자열 좌우의 공백을 제거해서 반환한다.
std::string Trim(std::string str)
{
str = str.erase(str.find_last_not_of(" \t\r\n") + 1);
str = str.erase(0, str.find_first_not_of(" \t\r\n"));
return str;
}
/// \brief 주어진 문장에 있는 알파벳을 모두 소문자로 바꾼다.
std::string Lower(std::string original)
{
std::transform(original.begin(), original.end(), original.begin(), tolower);
return original;
}
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 셀을 액세스할 때, 숫자 대신 사용할 이름을 등록한다.
/// \param name 셀 이름
/// \param index 셀 인덱스
////////////////////////////////////////////////////////////////////////////////
void cCsvAlias::AddAlias(const char* name, size_t index)
{
std::string converted(Lower(name));
Assert(m_Name2Index.find(converted) == m_Name2Index.end());
Assert(m_Index2Name.find(index) == m_Index2Name.end());
m_Name2Index.insert(NAME2INDEX_MAP::value_type(converted, index));
m_Index2Name.insert(INDEX2NAME_MAP::value_type(index, name));
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 모든 데이터를 삭제한다.
////////////////////////////////////////////////////////////////////////////////
void cCsvAlias::Destroy()
{
m_Name2Index.clear();
m_Index2Name.clear();
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 숫자 인덱스를 이름으로 변환한다.
/// \param index 숫자 인덱스
/// \return const char* 이름
////////////////////////////////////////////////////////////////////////////////
const char* cCsvAlias::operator [] (size_t index) const
{
INDEX2NAME_MAP::const_iterator itr(m_Index2Name.find(index));
if (itr == m_Index2Name.end())
{
LogToFile(NULL, "cannot find suitable conversion for %d", index);
Assert(false && "cannot find suitable conversion");
return NULL;
}
return itr->second.c_str();
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 이름을 숫자 인덱스로 변환한다.
/// \param name 이름
/// \return size_t 숫자 인덱스
////////////////////////////////////////////////////////////////////////////////
size_t cCsvAlias::operator [] (const char* name) const
{
NAME2INDEX_MAP::const_iterator itr(m_Name2Index.find(Lower(name)));
if (itr == m_Name2Index.end())
{
LogToFile(NULL, "cannot find suitable conversion for %s", name);
Assert(false && "cannot find suitable conversion");
return 0;
}
return itr->second;
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 지정된 이름의 CSV 파일을 로드한다.
/// \param fileName CSV 파일 이름
/// \param seperator 필드 분리자로 사용할 글자. 기본값은 ','이다.
/// \param quote 따옴표로 사용할 글자. 기본값은 '"'이다.
/// \return bool 무사히 로드했다면 true, 아니라면 false
////////////////////////////////////////////////////////////////////////////////
bool cCsvFile::Load(const char* fileName, const char seperator, const char quote)
{
Assert(seperator != quote);
std::ifstream file(fileName, std::ios::in);
if (!file) return false;
Destroy(); // 기존의 데이터를 삭제
cCsvRow* row = NULL;
ParseState state = STATE_NORMAL;
std::string token = "";
char buf[2048+1] = {0,};
while (file.good())
{
file.getline(buf, 2048);
buf[sizeof(buf)-1] = 0;
std::string line(Trim(buf));
if (line.empty() || (state == STATE_NORMAL && line[0] == '#')) continue;
std::string text = std::string(line) + " "; // 파싱 lookahead 때문에 붙여준다.
size_t cur = 0;
while (cur < text.size())
{
// 현재 모드가 QUOTE 모드일 때,
if (state == STATE_QUOTE)
{
// '"' 문자의 종류는 두 가지이다.
// 1. 셀 내부에 특수 문자가 있을 경우 이를 알리는 셀 좌우의 것
// 2. 셀 내부의 '"' 문자가 '"' 2개로 치환된 것
// 이 중 첫번째 경우의 좌측에 있는 것은 CSV 파일이 정상적이라면,
// 무조건 STATE_NORMAL에 걸리게 되어있다.
// 그러므로 여기서 걸리는 것은 1번의 우측 경우나, 2번 경우 뿐이다.
// 2번의 경우에는 무조건 '"' 문자가 2개씩 나타난다. 하지만 1번의
// 우측 경우에는 아니다. 이를 바탕으로 해서 코드를 짜면...
if (text[cur] == quote)
{
// 다음 문자가 '"' 문자라면, 즉 연속된 '"' 문자라면
// 이는 셀 내부의 '"' 문자가 치환된 것이다.
if (text[cur+1] == quote)
{
token += quote;
++cur;
}
// 다음 문자가 '"' 문자가 아니라면
// 현재의 '"'문자는 셀의 끝을 알리는 문자라고 할 수 있다.
else
{
state = STATE_NORMAL;
}
}
else
{
token += text[cur];
}
}
// 현재 모드가 NORMAL 모드일 때,
else if (state == STATE_NORMAL)
{
if (row == NULL)
row = new cCsvRow();
// ',' 문자를 만났다면 셀의 끝의 의미한다.
// 토큰으로서 셀 리스트에다가 집어넣고, 토큰을 초기화한다.
if (text[cur] == seperator)
{
row->push_back(token);
token.clear();
}
// '"' 문자를 만났다면, QUOTE 모드로 전환한다.
else if (text[cur] == quote)
{
state = STATE_QUOTE;
}
// 다른 일반 문자라면 현재 토큰에다가 덧붙인다.
else
{
token += text[cur];
}
}
++cur;
}
// 마지막 셀은 끝에 ',' 문자가 없기 때문에 여기서 추가해줘야한다.
// 단, 처음에 파싱 lookahead 때문에 붙인 스페이스 문자 두 개를 뗀다.
if (state == STATE_NORMAL)
{
Assert(row != NULL);
row->push_back(token.substr(0, token.size()-2));
m_Rows.push_back(row);
token.clear();
row = NULL;
}
else
{
token = token.substr(0, token.size()-2) + "\r\n";
}
}
return true;
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 가지고 있는 내용을 CSV 파일에다 저장한다.
/// \param fileName CSV 파일 이름
/// \param append true일 경우, 기존의 파일에다 덧붙인다. false인 경우에는
/// 기존의 파일 내용을 삭제하고, 새로 쓴다.
/// \param seperator 필드 분리자로 사용할 글자. 기본값은 ','이다.
/// \param quote 따옴표로 사용할 글자. 기본값은 '"'이다.
/// \return bool 무사히 저장했다면 true, 에러가 생긴 경우에는 false
////////////////////////////////////////////////////////////////////////////////
bool cCsvFile::Save(const char* fileName, bool append, char seperator, char quote) const
{
Assert(seperator != quote);
// 출력 모드에 따라 파일을 적당한 플래그로 생성한다.
std::ofstream file;
if (append) { file.open(fileName, std::ios::out | std::ios::app); }
else { file.open(fileName, std::ios::out | std::ios::trunc); }
// 파일을 열지 못했다면, false를 리턴한다.
if (!file) return false;
char special_chars[5] = { seperator, quote, '\r', '\n', 0 };
char quote_escape_string[3] = { quote, quote, 0 };
// 모든 행을 횡단하면서...
for (size_t i=0; i<m_Rows.size(); i++)
{
const cCsvRow& row = *((*this)[i]);
std::string line;
// 행 안의 모든 토큰을 횡단하면서...
for (size_t j=0; j<row.size(); j++)
{
const std::string& token = row[j];
// 일반적인('"' 또는 ','를 포함하지 않은)
// 토큰이라면 그냥 저장하면 된다.
if (token.find_first_of(special_chars) == std::string::npos)
{
line += token;
}
// 특수문자를 포함한 토큰이라면 문자열 좌우에 '"'를 붙여주고,
// 문자열 내부의 '"'를 두 개로 만들어줘야한다.
else
{
line += quote;
for (size_t k=0; k<token.size(); k++)
{
if (token[k] == quote) line += quote_escape_string;
else line += token[k];
}
line += quote;
}
// 마지막 셀이 아니라면 ','를 토큰의 뒤에다 붙여줘야한다.
if (j != row.size() - 1) { line += seperator; }
}
// 라인을 출력한다.
file << line << std::endl;
}
return true;
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 모든 데이터를 메모리에서 삭제한다.
////////////////////////////////////////////////////////////////////////////////
void cCsvFile::Destroy()
{
for (ROWS::iterator itr(m_Rows.begin()); itr != m_Rows.end(); ++itr)
delete *itr;
m_Rows.clear();
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 해당하는 인덱스의 행을 반환한다.
/// \param index 인덱스
/// \return cCsvRow* 해당 행
////////////////////////////////////////////////////////////////////////////////
cCsvRow* cCsvFile::operator [] (size_t index)
{
Assert(index < m_Rows.size());
return m_Rows[index];
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 해당하는 인덱스의 행을 반환한다.
/// \param index 인덱스
/// \return const cCsvRow* 해당 행
////////////////////////////////////////////////////////////////////////////////
const cCsvRow* cCsvFile::operator [] (size_t index) const
{
Assert(index < m_Rows.size());
return m_Rows[index];
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 생성자
////////////////////////////////////////////////////////////////////////////////
cCsvTable::cCsvTable()
: m_CurRow(-1)
{
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 소멸자
////////////////////////////////////////////////////////////////////////////////
cCsvTable::~cCsvTable()
{
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 지정된 이름의 CSV 파일을 로드한다.
/// \param fileName CSV 파일 이름
/// \param seperator 필드 분리자로 사용할 글자. 기본값은 ','이다.
/// \param quote 따옴표로 사용할 글자. 기본값은 '"'이다.
/// \return bool 무사히 로드했다면 true, 아니라면 false
////////////////////////////////////////////////////////////////////////////////
bool cCsvTable::Load(const char* fileName, const char seperator, const char quote)
{
Destroy();
return m_File.Load(fileName, seperator, quote);
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 다음 행으로 넘어간다.
/// \return bool 다음 행으로 무사히 넘어간 경우 true를 반환하고, 더 이상
/// 넘어갈 행이 존재하지 않는 경우에는 false를 반환한다.
////////////////////////////////////////////////////////////////////////////////
bool cCsvTable::Next()
{
// 20억번 정도 호출하면 오버플로가 일어날텐데...괜찮겠지?
return ++m_CurRow < (int)m_File.GetRowCount() ? true : false;
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 현재 행의 셀 숫자를 반환한다.
/// \return size_t 현재 행의 셀 숫자
////////////////////////////////////////////////////////////////////////////////
size_t cCsvTable::ColCount() const
{
return CurRow()->size();
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 인덱스를 이용해 int 형으로 셀 값을 반환한다.
/// \param index 셀 인덱스
/// \return int 셀 값
////////////////////////////////////////////////////////////////////////////////
int cCsvTable::AsInt(size_t index) const
{
const cCsvRow* const row = CurRow();
Assert(row);
Assert(index < row->size());
return row->AsInt(index);
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 인덱스를 이용해 double 형으로 셀 값을 반환한다.
/// \param index 셀 인덱스
/// \return double 셀 값
////////////////////////////////////////////////////////////////////////////////
double cCsvTable::AsDouble(size_t index) const
{
const cCsvRow* const row = CurRow();
Assert(row);
Assert(index < row->size());
return row->AsDouble(index);
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 인덱스를 이용해 std::string 형으로 셀 값을 반환한다.
/// \param index 셀 인덱스
/// \return const char* 셀 값
////////////////////////////////////////////////////////////////////////////////
const char* cCsvTable::AsStringByIndex(size_t index) const
{
const cCsvRow* const row = CurRow();
Assert(row);
Assert(index < row->size());
return row->AsString(index);
}
////////////////////////////////////////////////////////////////////////////////
/// \brief alias를 포함해 모든 데이터를 삭제한다.
////////////////////////////////////////////////////////////////////////////////
void cCsvTable::Destroy()
{
m_File.Destroy();
m_Alias.Destroy();
m_CurRow = -1;
}
////////////////////////////////////////////////////////////////////////////////
/// \brief 현재 행을 반환한다.
/// \return const cCsvRow* 액세스가 가능한 현재 행이 존재하는 경우에는 그 행의
/// 포인터를 반환하고, 더 이상 액세스 가능한 행이 없는 경우에는 NULL을
/// 반환한다.
////////////////////////////////////////////////////////////////////////////////
const cCsvRow* const cCsvTable::CurRow() const
{
if (m_CurRow < 0)
{
Assert(false && "call Next() first!");
return NULL;
}
else if (m_CurRow >= (int)m_File.GetRowCount())
{
Assert(false && "no more rows!");
return NULL;
}
return m_File[m_CurRow];
}
+325
View File
@@ -0,0 +1,325 @@
#ifndef __CSVFILE_H__
#define __CSVFILE_H__
#include <string>
#include <vector>
#if _MSC_VER
//#include <hash_map>
#include <unordered_map>
#else
#include <map>
#endif
////////////////////////////////////////////////////////////////////////////////
/// \class cCsvAlias
/// \brief CSV 파일을 수정했을 때 발생하는 인덱스 문제를 줄이기 위한
/// 별명 객체.
///
/// 예를 들어 0번 컬럼이 A에 관한 내용을 포함하고, 1번 컬럼이 B에 관한 내용을
/// 포함하고 있었는데...
///
/// <pre>
/// int a = row.AsInt(0);
/// int b = row.AsInt(1);
/// </pre>
///
/// 그 사이에 C에 관한 내용을 포함하는 컬럼이 끼어든 경우, 하드코딩되어 있는
/// 1번을 찾아서 고쳐야 하는데, 상당히 에러가 발생하기 쉬운 작업이다.
///
/// <pre>
/// int a = row.AsInt(0);
/// int c = row.AsInt(1);
/// int b = row.AsInt(2); <-- 이 부분을 일일이 신경써야 한다.
/// </pre>
///
/// 이 부분을 문자열로 처리하면 유지보수에 들어가는 수고를 약간이나마 줄일 수
/// 있다.
////////////////////////////////////////////////////////////////////////////////
class cCsvAlias
{
private:
#if _MSC_VER
//typedef stdext::hash_map<std::string, size_t> NAME2INDEX_MAP;
//typedef stdext::hash_map<size_t, std::string> INDEX2NAME_MAP;
typedef std::unordered_map<std::string, size_t> NAME2INDEX_MAP;
typedef std::unordered_map<size_t, std::string> INDEX2NAME_MAP;
#else
typedef std::map<std::string, size_t> NAME2INDEX_MAP;
typedef std::map<size_t, std::string> INDEX2NAME_MAP;
#endif
NAME2INDEX_MAP m_Name2Index; ///< 셀 인덱스 대신으로 사용하기 위한 이름들
INDEX2NAME_MAP m_Index2Name; ///< 잘못된 alias를 검사하기 위한 추가적인 맵
public:
/// \brief 생성자
cCsvAlias() {}
/// \brief 소멸자
virtual ~cCsvAlias() {}
public:
/// \brief 셀을 액세스할 때, 숫자 대신 사용할 이름을 등록한다.
void AddAlias(const char* name, size_t index);
/// \brief 모든 데이터를 삭제한다.
void Destroy();
/// \brief 숫자 인덱스를 이름으로 변환한다.
const char* operator [] (size_t index) const;
/// \brief 이름을 숫자 인덱스로 변환한다.
size_t operator [] (const char* name) const;
private:
/// \brief 복사 생성자 금지
cCsvAlias(const cCsvAlias&) {}
/// \brief 대입 연산자 금지
const cCsvAlias& operator = (const cCsvAlias&) { return *this; }
};
////////////////////////////////////////////////////////////////////////////////
/// \class cCsvRow
/// \brief CSV 파일의 한 행을 캡슐화한 클래스
///
/// CSV의 기본 포맷은 엑셀에서 보이는 하나의 셀을 ',' 문자로 구분한 것이다.
/// 하지만, 셀 안에 특수 문자로 쓰이는 ',' 문자나 '"' 문자가 들어갈 경우,
/// 모양이 약간 이상하게 변한다. 다음은 그 변화의 예이다.
///
/// <pre>
/// 엑셀에서 보이는 모양 | 실제 CSV 파일에 들어가있는 모양
/// ---------------------+----------------------------------------------------
/// ItemPrice | ItemPrice
/// Item,Price | "Item,Price"
/// Item"Price | "Item""Price"
/// "ItemPrice" | """ItemPrice"""
/// "Item,Price" | """Item,Price"""
/// Item",Price | "Item"",Price"
/// </pre>
///
/// 이 예로서 다음과 같은 사항을 알 수 있다.
/// - 셀 내부에 ',' 또는 '"' 문자가 들어갈 경우, 셀 좌우에 '"' 문자가 생긴다.
/// - 셀 내부의 '"' 문자는 2개로 치환된다.
///
/// \sa cCsvFile
////////////////////////////////////////////////////////////////////////////////
class cCsvRow : public std::vector<std::string>
{
public:
/// \brief 기본 생성자
cCsvRow() {}
/// \brief 소멸자
~cCsvRow() {}
public:
/// \brief 해당 셀의 데이터를 int 형으로 반환한다.
int AsInt(size_t index) const { return atoi(at(index).c_str()); }
/// \brief 해당 셀의 데이터를 double 형으로 반환한다.
double AsDouble(size_t index) const { return atof(at(index).c_str()); }
/// \brief 해당 셀의 데이터를 문자열로 반환한다.
const char* AsString(size_t index) const { return at(index).c_str(); }
/// \brief 해당하는 이름의 셀 데이터를 int 형으로 반환한다.
int AsInt(const char* name, const cCsvAlias& alias) const {
return atoi( at(alias[name]).c_str() );
}
/// \brief 해당하는 이름의 셀 데이터를 int 형으로 반환한다.
double AsDouble(const char* name, const cCsvAlias& alias) const {
return atof( at(alias[name]).c_str() );
}
/// \brief 해당하는 이름의 셀 데이터를 문자열로 반환한다.
const char* AsString(const char* name, const cCsvAlias& alias) const {
return at(alias[name]).c_str();
}
private:
/// \brief 복사 생성자 금지
cCsvRow(const cCsvRow&) {}
/// \brief 대입 연산자 금지
const cCsvRow& operator = (const cCsvRow&) { return *this; }
};
////////////////////////////////////////////////////////////////////////////////
/// \class cCsvFile
/// \brief CSV(Comma Seperated Values) 파일을 read/write하기 위한 클래스
///
/// <b>sample</b>
/// <pre>
/// cCsvFile file;
///
/// cCsvRow row1, row2, row3;
/// row1.push_back("ItemPrice");
/// row1.push_back("Item,Price");
/// row1.push_back("Item\"Price");
///
/// row2.reserve(3);
/// row2[0] = "\"ItemPrice\"";
/// row2[1] = "\"Item,Price\"";
/// row2[2] = "Item\",Price\"";
///
/// row3 = "\"ItemPrice\"\"Item,Price\"Item\",Price\"";
///
/// file.add(row1);
/// file.add(row2);
/// file.add(row3);
/// file.save("test.csv", false);
/// </pre>
///
/// \todo 파일에서만 읽어들일 것이 아니라, 메모리 소스로부터 읽는 함수도
/// 있어야 할 듯 하다.
////////////////////////////////////////////////////////////////////////////////
class cCsvFile
{
private:
typedef std::vector<cCsvRow*> ROWS;
ROWS m_Rows; ///< 행 컬렉션
public:
/// \brief 생성자
cCsvFile() {}
/// \brief 소멸자
virtual ~cCsvFile() { Destroy(); }
public:
/// \brief 지정된 이름의 CSV 파일을 로드한다.
bool Load(const char* fileName, const char seperator=',', const char quote='"');
/// \brief 가지고 있는 내용을 CSV 파일에다 저장한다.
bool Save(const char* fileName, bool append=false, char seperator=',', char quote='"') const;
/// \brief 모든 데이터를 메모리에서 삭제한다.
void Destroy();
/// \brief 해당하는 인덱스의 행을 반환한다.
cCsvRow* operator [] (size_t index);
/// \brief 해당하는 인덱스의 행을 반환한다.
const cCsvRow* operator [] (size_t index) const;
/// \brief 행의 갯수를 반환한다.
size_t GetRowCount() const { return m_Rows.size(); }
private:
/// \brief 복사 생성자 금지
cCsvFile(const cCsvFile&) {}
/// \brief 대입 연산자 금지
const cCsvFile& operator = (const cCsvFile&) { return *this; }
};
////////////////////////////////////////////////////////////////////////////////
/// \class cCsvTable
/// \brief CSV 파일을 이용해 테이블 데이터를 로드하는 경우가 많은데, 이 클래스는
/// 그 작업을 좀 더 쉽게 하기 위해 만든 유틸리티 클래스다.
///
/// CSV 파일을 로드하는 경우, 숫자를 이용해 셀을 액세스해야 하는데, CSV
/// 파일의 포맷이 바뀌는 경우, 이 숫자들을 변경해줘야한다. 이 작업이 꽤
/// 신경 집중을 요구하는 데다가, 에러가 발생하기 쉽다. 그러므로 숫자로
/// 액세스하기보다는 문자열로 액세스하는 것이 약간 느리지만 낫다고 할 수 있다.
///
/// <b>sample</b>
/// <pre>
/// cCsvTable table;
///
/// table.alias(0, "ItemClass");
/// table.alias(1, "ItemType");
///
/// if (table.load("test.csv"))
/// {
/// while (table.next())
/// {
/// std::string item_class = table.AsString("ItemClass");
/// int item_type = table.AsInt("ItemType");
/// }
/// }
/// </pre>
////////////////////////////////////////////////////////////////////////////////
class cCsvTable
{
public :
cCsvFile m_File; ///< CSV 파일 객체
private:
cCsvAlias m_Alias; ///< 문자열을 셀 인덱스로 변환하기 위한 객체
int m_CurRow; ///< 현재 횡단 중인 행 번호
public:
/// \brief 생성자
cCsvTable();
/// \brief 소멸자
virtual ~cCsvTable();
public:
/// \brief 지정된 이름의 CSV 파일을 로드한다.
bool Load(const char* fileName, const char seperator=',', const char quote='"');
/// \brief 셀을 액세스할 때, 숫자 대신 사용할 이름을 등록한다.
void AddAlias(const char* name, size_t index) { m_Alias.AddAlias(name, index); }
/// \brief 다음 행으로 넘어간다.
bool Next();
/// \brief 현재 행의 셀 숫자를 반환한다.
size_t ColCount() const;
/// \brief 인덱스를 이용해 int 형으로 셀값을 반환한다.
int AsInt(size_t index) const;
/// \brief 인덱스를 이용해 double 형으로 셀값을 반환한다.
double AsDouble(size_t index) const;
/// \brief 인덱스를 이용해 std::string 형으로 셀값을 반환한다.
const char* AsStringByIndex(size_t index) const;
/// \brief 셀 이름을 이용해 int 형으로 셀값을 반환한다.
int AsInt(const char* name) const { return AsInt(m_Alias[name]); }
/// \brief 셀 이름을 이용해 double 형으로 셀값을 반환한다.
double AsDouble(const char* name) const { return AsDouble(m_Alias[name]); }
/// \brief 셀 이름을 이용해 std::string 형으로 셀값을 반환한다.
const char* AsString(const char* name) const { return AsStringByIndex(m_Alias[name]); }
/// \brief alias를 포함해 모든 데이터를 삭제한다.
void Destroy();
private:
/// \brief 현재 행을 반환한다.
const cCsvRow* const CurRow() const;
/// \brief 복사 생성자 금지
cCsvTable(const cCsvTable&) {}
/// \brief 대입 연산자 금지
const cCsvTable& operator = (const cCsvTable&) { return *this; }
};
#endif //__CSVFILE_H__
+566
View File
@@ -0,0 +1,566 @@
#include <math.h>
#include "ItemCSVReader.h"
using namespace std;
inline string trim_left(const string& str)
{
string::size_type n = str.find_first_not_of(" \t\v\n\r");
return n == string::npos ? str : str.substr(n, str.length());
}
inline string trim_right(const string& str)
{
string::size_type n = str.find_last_not_of(" \t\v\n\r");
return n == string::npos ? str : str.substr(0, n + 1);
}
string trim(const string& str){return trim_left(trim_right(str));}
static string* StringSplit(string strOrigin, string strTok)
{
int cutAt; //자르는위치
int index = 0; //문자열인덱스
string* strResult = new string[30]; //결과return 할변수
//strTok을찾을때까지반복
while ((cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos)
{
if (cutAt > 0) //자르는위치가0보다크면(성공시)
{
strResult[index++] = strOrigin.substr(0, cutAt); //결과배열에추가
}
strOrigin = strOrigin.substr(cutAt+1); //원본은자른부분제외한나머지
}
if(strOrigin.length() > 0) //원본이아직남았으면
{
strResult[index++] = strOrigin.substr(0, cutAt); //나머지를결과배열에추가
}
for( int i=0;i<index;i++)
{
strResult[i] = trim(strResult[i]);
}
return strResult; //결과return
}
int get_Item_Type_Value(string inputString)
{
string arType[] = {"ITEM_NONE", "ITEM_WEAPON",
"ITEM_ARMOR", "ITEM_USE",
"ITEM_AUTOUSE", "ITEM_MATERIAL",
"ITEM_SPECIAL", "ITEM_TOOL",
"ITEM_LOTTERY", "ITEM_ELK", //10개
"ITEM_METIN", "ITEM_CONTAINER",
"ITEM_FISH", "ITEM_ROD",
"ITEM_RESOURCE", "ITEM_CAMPFIRE",
"ITEM_UNIQUE", "ITEM_SKILLBOOK",
"ITEM_QUEST", "ITEM_POLYMORPH", //20개
"ITEM_TREASURE_BOX", "ITEM_TREASURE_KEY",
"ITEM_SKILLFORGET", "ITEM_GIFTBOX",
"ITEM_PICK", "ITEM_HAIR",
"ITEM_TOTEM", "ITEM_BLEND",
"ITEM_COSTUME", "ITEM_DS", //30개
"ITEM_SPECIAL_DS", "ITEM_EXTRACT", //32개
"ITEM_SECONDARY_COIN", //33개
"ITEM_RING", "ITEM_BELT" //35개 (EItemTypes 값으로 치면 34)
};
int retInt = -1;
//cout << "Type : " << typeStr << " -> ";
for (int j=0;j<sizeof(arType)/sizeof(arType[0]);j++) {
string tempString = arType[j];
if (inputString.find(tempString)!=string::npos && tempString.find(inputString)!=string::npos) {
//cout << j << " ";
retInt = j;
break;
}
}
//cout << endl;
return retInt;
}
int get_Item_SubType_Value(int type_value, string inputString)
{
string arSub1[] = { "WEAPON_SWORD", "WEAPON_DAGGER", "WEAPON_BOW", "WEAPON_TWO_HANDED",
"WEAPON_BELL", "WEAPON_FAN", "WEAPON_ARROW", "WEAPON_MOUNT_SPEAR"};
string arSub2[] = { "ARMOR_BODY", "ARMOR_HEAD", "ARMOR_SHIELD", "ARMOR_WRIST", "ARMOR_FOOTS",
"ARMOR_NECK", "ARMOR_EAR", "ARMOR_NUM_TYPES"};
string arSub3[] = { "USE_POTION", "USE_TALISMAN", "USE_TUNING", "USE_MOVE", "USE_TREASURE_BOX", "USE_MONEYBAG", "USE_BAIT",
"USE_ABILITY_UP", "USE_AFFECT", "USE_CREATE_STONE", "USE_SPECIAL", "USE_POTION_NODELAY", "USE_CLEAR",
"USE_INVISIBILITY", "USE_DETACHMENT", "USE_BUCKET", "USE_POTION_CONTINUE", "USE_CLEAN_SOCKET",
"USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET",
"USE_ADD_ATTRIBUTE2", "USE_RECIPE", "USE_CHANGE_ATTRIBUTE2", "USE_BIND", "USE_UNBIND", "USE_TIME_CHARGE_PER", "USE_TIME_CHARGE_FIX", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET"};
string arSub4[] = { "AUTOUSE_POTION", "AUTOUSE_ABILITY_UP", "AUTOUSE_BOMB", "AUTOUSE_GOLD", "AUTOUSE_MONEYBAG", "AUTOUSE_TREASURE_BOX"};
string arSub5[] = { "MATERIAL_LEATHER", "MATERIAL_BLOOD", "MATERIAL_ROOT", "MATERIAL_NEEDLE", "MATERIAL_JEWEL",
"MATERIAL_DS_REFINE_NORMAL", "MATERIAL_DS_REFINE_BLESSED", "MATERIAL_DS_REFINE_HOLLY"};
string arSub6[] = { "SPECIAL_MAP", "SPECIAL_KEY", "SPECIAL_DOC", "SPECIAL_SPIRIT"};
string arSub7[] = { "TOOL_FISHING_ROD" };
string arSub8[] = { "LOTTERY_TICKET", "LOTTERY_INSTANT" };
string arSub10[] = { "METIN_NORMAL", "METIN_GOLD" };
string arSub12[] = { "FISH_ALIVE", "FISH_DEAD"};
string arSub14[] = { "RESOURCE_FISHBONE", "RESOURCE_WATERSTONEPIECE", "RESOURCE_WATERSTONE", "RESOURCE_BLOOD_PEARL",
"RESOURCE_BLUE_PEARL", "RESOURCE_WHITE_PEARL", "RESOURCE_BUCKET", "RESOURCE_CRYSTAL", "RESOURCE_GEM",
"RESOURCE_STONE", "RESOURCE_METIN", "RESOURCE_ORE" };
string arSub16[] = { "UNIQUE_NONE", "UNIQUE_BOOK", "UNIQUE_SPECIAL_RIDE", "UNIQUE_3", "UNIQUE_4", "UNIQUE_5",
"UNIQUE_6", "UNIQUE_7", "UNIQUE_8", "UNIQUE_9", "USE_SPECIAL"};
string arSub28[] = { "COSTUME_BODY", "COSTUME_HAIR" };
string arSub29[] = { "DS_SLOT1", "DS_SLOT2", "DS_SLOT3", "DS_SLOT4", "DS_SLOT5", "DS_SLOT6" };
string arSub31[] = { "EXTRACT_DRAGON_SOUL", "EXTRACT_DRAGON_HEART" };
string* arSubType[] = {0, //0
arSub1, //1
arSub2, //2
arSub3, //3
arSub4, //4
arSub5, //5
arSub6, //6
arSub7, //7
arSub8, //8
0, //9
arSub10, //10
0, //11
arSub12, //12
0, //13
arSub14, //14
0, //15
arSub16, //16
0, //17
0, //18
0, //19
0, //20
0, //21
0, //22
0, //23
0, //24
0, //25
0, //26
0, //27
arSub28, //28
arSub29, //29
arSub29, //30
arSub31, //31
0, //32
0, //33
0, //34
};
int arNumberOfSubtype[35];
arNumberOfSubtype[0] = 0;
arNumberOfSubtype[1] = sizeof(arSub1)/sizeof(arSub1[0]);
arNumberOfSubtype[2] = sizeof(arSub2)/sizeof(arSub2[0]);
arNumberOfSubtype[3] = sizeof(arSub3)/sizeof(arSub3[0]);
arNumberOfSubtype[4] = sizeof(arSub4)/sizeof(arSub4[0]);
arNumberOfSubtype[5] = sizeof(arSub5)/sizeof(arSub5[0]);
arNumberOfSubtype[6] = sizeof(arSub6)/sizeof(arSub6[0]);
arNumberOfSubtype[7] = sizeof(arSub7)/sizeof(arSub7[0]);
arNumberOfSubtype[8] = sizeof(arSub8)/sizeof(arSub8[0]);
arNumberOfSubtype[9] = 0;
arNumberOfSubtype[10] = sizeof(arSub10)/sizeof(arSub10[0]);
arNumberOfSubtype[11] = 0;
arNumberOfSubtype[12] = sizeof(arSub12)/sizeof(arSub12[0]);
arNumberOfSubtype[13] = 0;
arNumberOfSubtype[14] = sizeof(arSub14)/sizeof(arSub14[0]);
arNumberOfSubtype[15] = 0;
arNumberOfSubtype[16] = sizeof(arSub16)/sizeof(arSub16[0]);
arNumberOfSubtype[17] = 0;
arNumberOfSubtype[18] = 0;
arNumberOfSubtype[19] = 0;
arNumberOfSubtype[20] = 0;
arNumberOfSubtype[21] = 0;
arNumberOfSubtype[22] = 0;
arNumberOfSubtype[23] = 0;
arNumberOfSubtype[24] = 0;
arNumberOfSubtype[25] = 0;
arNumberOfSubtype[26] = 0;
arNumberOfSubtype[27] = 0;
arNumberOfSubtype[28] = sizeof(arSub28)/sizeof(arSub28[0]);
arNumberOfSubtype[29] = sizeof(arSub29)/sizeof(arSub29[0]);
arNumberOfSubtype[30] = sizeof(arSub29)/sizeof(arSub29[0]);
arNumberOfSubtype[31] = sizeof(arSub31)/sizeof(arSub31[0]);
arNumberOfSubtype[32] = 0;
arNumberOfSubtype[33] = 0;
arNumberOfSubtype[34] = 0;
//아이템 타입의 서브타입 어레이가 존재하는지 알아보고, 없으면 0 리턴
if (arSubType[type_value]==0) {
return 0;
}
//
int retInt = -1;
//cout << "SubType : " << subTypeStr << " -> ";
for (int j=0;j<arNumberOfSubtype[type_value];j++) {
string tempString = arSubType[type_value][j];
string tempInputString = trim(inputString);
if (tempInputString.compare(tempString)==0)
{
//cout << j << " ";
retInt = j;
break;
}
}
//cout << endl;
return retInt;
}
int get_Item_AntiFlag_Value(string inputString)
{
string arAntiFlag[] = {"ANTI_FEMALE", "ANTI_MALE", "ANTI_MUSA", "ANTI_ASSASSIN", "ANTI_SURA", "ANTI_MUDANG",
"ANTI_GET", "ANTI_DROP", "ANTI_SELL", "ANTI_EMPIRE_A", "ANTI_EMPIRE_B", "ANTI_EMPIRE_C",
"ANTI_SAVE", "ANTI_GIVE", "ANTI_PKDROP", "ANTI_STACK", "ANTI_MYSHOP", "ANTI_SAFEBOX"};
int retValue = 0;
string* arInputString = StringSplit(inputString, "|"); //프로토 정보 내용을 단어별로 쪼갠 배열.
for(int i =0;i<sizeof(arAntiFlag)/sizeof(arAntiFlag[0]);i++) {
string tempString = arAntiFlag[i];
for (int j=0; j<30 ; j++) //최대 30개 단어까지. (하드코딩)
{
string tempString2 = arInputString[j];
if (tempString2.compare(tempString)==0) { //일치하는지 확인.
retValue = retValue + pow((float)2,(float)i);
}
if(tempString2.compare("") == 0)
break;
}
}
delete []arInputString;
//cout << "AntiFlag : " << antiFlagStr << " -> " << retValue << endl;
return retValue;
}
int get_Item_Flag_Value(string inputString)
{
string arFlag[] = {"ITEM_TUNABLE", "ITEM_SAVE", "ITEM_STACKABLE", "COUNT_PER_1GOLD", "ITEM_SLOW_QUERY", "ITEM_UNIQUE",
"ITEM_MAKECOUNT", "ITEM_IRREMOVABLE", "CONFIRM_WHEN_USE", "QUEST_USE", "QUEST_USE_MULTIPLE",
"QUEST_GIVE", "ITEM_QUEST", "LOG", "STACKABLE", "SLOW_QUERY", "REFINEABLE", "IRREMOVABLE", "ITEM_APPLICABLE"};
int retValue = 0;
string* arInputString = StringSplit(inputString, "|"); //프로토 정보 내용을 단어별로 쪼갠 배열.
for(int i =0;i<sizeof(arFlag)/sizeof(arFlag[0]);i++) {
string tempString = arFlag[i];
for (int j=0; j<30 ; j++) //최대 30개 단어까지. (하드코딩)
{
string tempString2 = arInputString[j];
if (tempString2.compare(tempString)==0) { //일치하는지 확인.
retValue = retValue + pow((float)2,(float)i);
}
if(tempString2.compare("") == 0)
break;
}
}
delete []arInputString;
//cout << "Flag : " << flagStr << " -> " << retValue << endl;
return retValue;
}
int get_Item_WearFlag_Value(string inputString)
{
string arWearrFlag[] = {"WEAR_BODY", "WEAR_HEAD", "WEAR_FOOTS", "WEAR_WRIST", "WEAR_WEAPON", "WEAR_NECK", "WEAR_EAR", "WEAR_SHIELD", "WEAR_UNIQUE",
"WEAR_ARROW", "WEAR_HAIR", "WEAR_ABILITY"};
int retValue = 0;
string* arInputString = StringSplit(inputString, "|"); //프로토 정보 내용을 단어별로 쪼갠 배열.
for(int i =0;i<sizeof(arWearrFlag)/sizeof(arWearrFlag[0]);i++) {
string tempString = arWearrFlag[i];
for (int j=0; j<30 ; j++) //최대 30개 단어까지. (하드코딩)
{
string tempString2 = arInputString[j];
if (tempString2.compare(tempString)==0) { //일치하는지 확인.
retValue = retValue + pow((float)2,(float)i);
}
if(tempString2.compare("") == 0)
break;
}
}
delete []arInputString;
//cout << "WearFlag : " << wearFlagStr << " -> " << retValue << endl;
return retValue;
}
int get_Item_Immune_Value(string inputString)
{
string arImmune[] = {"PARA","CURSE","STUN","SLEEP","SLOW","POISON","TERROR"};
int retValue = 0;
string* arInputString = StringSplit(inputString, "|"); //프로토 정보 내용을 단어별로 쪼갠 배열.
for(int i =0;i<sizeof(arImmune)/sizeof(arImmune[0]);i++) {
string tempString = arImmune[i];
for (int j=0; j<30 ; j++) //최대 30개 단어까지. (하드코딩)
{
string tempString2 = arInputString[j];
if (tempString2.compare(tempString)==0) { //일치하는지 확인.
retValue = retValue + pow((float)2,(float)i);
}
if(tempString2.compare("") == 0)
break;
}
}
delete []arInputString;
//cout << "Immune : " << immuneStr << " -> " << retValue << endl;
return retValue;
}
int get_Item_LimitType_Value(string inputString)
{
string arLimitType[] = {"LIMIT_NONE", "LEVEL", "STR", "DEX", "INT", "CON", "PC_BANG", "REAL_TIME", "REAL_TIME_FIRST_USE", "TIMER_BASED_ON_WEAR"};
int retInt = -1;
//cout << "LimitType : " << limitTypeStr << " -> ";
for (int j=0;j<sizeof(arLimitType)/sizeof(arLimitType[0]);j++) {
string tempString = arLimitType[j];
string tempInputString = trim(inputString);
if (tempInputString.compare(tempString)==0)
{
//cout << j << " ";
retInt = j;
break;
}
}
//cout << endl;
return retInt;
}
int get_Item_ApplyType_Value(string inputString)
{
string arApplyType[] = {"APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED",
"APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT",
"APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL",
"APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP",
"APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD",
"APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW", "APPLY_RESIST_FIRE",
"APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE",
"APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS",
"APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE",
"APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT",
"APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN",
"APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS",
"APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS", "APPLY_NORMAL_HIT_DAMAGE_BONUS",
"APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS",
"APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN",
"APPLY_ENERGY", "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER",
"APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT",
};
int retInt = -1;
//cout << "ApplyType : " << applyTypeStr << " -> ";
for (int j=0;j<sizeof(arApplyType)/sizeof(arApplyType[0]);j++) {
string tempString = arApplyType[j];
string tempInputString = trim(inputString);
if (tempInputString.compare(tempString)==0)
{
//cout << j << " ";
retInt = j;
break;
}
}
//cout << endl;
return retInt;
}
//몬스터 프로토도 읽는다.
int get_Mob_Rank_Value(string inputString)
{
string arRank[] = {"PAWN", "S_PAWN", "KNIGHT", "S_KNIGHT", "BOSS", "KING"};
int retInt = -1;
//cout << "Rank : " << rankStr << " -> ";
for (int j=0;j<sizeof(arRank)/sizeof(arRank[0]);j++) {
string tempString = arRank[j];
string tempInputString = trim(inputString);
if (tempInputString.compare(tempString)==0)
{
//cout << j << " ";
retInt = j;
break;
}
}
//cout << endl;
return retInt;
}
int get_Mob_Type_Value(string inputString)
{
string arType[] = { "MONSTER", "NPC", "STONE", "WARP", "DOOR", "BUILDING", "PC", "POLYMORPH_PC", "HORSE", "GOTO"};
int retInt = -1;
//cout << "Type : " << typeStr << " -> ";
for (int j=0;j<sizeof(arType)/sizeof(arType[0]);j++) {
string tempString = arType[j];
string tempInputString = trim(inputString);
if (tempInputString.compare(tempString)==0)
{
//cout << j << " ";
retInt = j;
break;
}
}
//cout << endl;
return retInt;
}
int get_Mob_BattleType_Value(string inputString)
{
string arBattleType[] = { "MELEE", "RANGE", "MAGIC", "SPECIAL", "POWER", "TANKER", "SUPER_POWER", "SUPER_TANKER"};
int retInt = -1;
//cout << "Battle Type : " << battleTypeStr << " -> ";
for (int j=0;j<sizeof(arBattleType)/sizeof(arBattleType[0]);j++) {
string tempString = arBattleType[j];
string tempInputString = trim(inputString);
if (tempInputString.compare(tempString)==0)
{
//cout << j << " ";
retInt = j;
break;
}
}
//cout << endl;
return retInt;
}
int get_Mob_Size_Value(string inputString)
{
string arSize[] = { "SMALL", "MEDIUM", "BIG"};
int retInt = 0;
//cout << "Size : " << sizeStr << " -> ";
for (int j=0;j<sizeof(arSize)/sizeof(arSize[0]);j++) {
string tempString = arSize[j];
string tempInputString = trim(inputString);
if (tempInputString.compare(tempString)==0)
{
//cout << j << " ";
retInt = j + 1;
break;
}
}
//cout << endl;
return retInt;
}
int get_Mob_AIFlag_Value(string inputString)
{
string arAIFlag[] = {"AGGR","NOMOVE","COWARD","NOATTSHINSU","NOATTCHUNJO","NOATTJINNO","ATTMOB","BERSERK","STONESKIN","GODSPEED","DEATHBLOW","REVIVE"};
int retValue = 0;
string* arInputString = StringSplit(inputString, ","); //프로토 정보 내용을 단어별로 쪼갠 배열.
for(int i =0;i<sizeof(arAIFlag)/sizeof(arAIFlag[0]);i++) {
string tempString = arAIFlag[i];
for (int j=0; j<30 ; j++) //최대 30개 단어까지. (하드코딩)
{
string tempString2 = arInputString[j];
if (tempString2.compare(tempString)==0) { //일치하는지 확인.
retValue = retValue + pow((float)2,(float)i);
}
if(tempString2.compare("") == 0)
break;
}
}
delete []arInputString;
//cout << "AIFlag : " << aiFlagStr << " -> " << retValue << endl;
return retValue;
}
int get_Mob_RaceFlag_Value(string inputString)
{
string arRaceFlag[] = {"ANIMAL","UNDEAD","DEVIL","HUMAN","ORC","MILGYO","INSECT","FIRE","ICE","DESERT","TREE",
"ATT_ELEC","ATT_FIRE","ATT_ICE","ATT_WIND","ATT_EARTH","ATT_DARK"};
int retValue = 0;
string* arInputString = StringSplit(inputString, "|"); //프로토 정보 내용을 단어별로 쪼갠 배열.
for(int i =0;i<sizeof(arRaceFlag)/sizeof(arRaceFlag[0]);i++) {
string tempString = arRaceFlag[i];
for (int j=0; j<30 ; j++) //최대 30개 단어까지. (하드코딩)
{
string tempString2 = arInputString[j];
if (tempString2.compare(tempString)==0) { //일치하는지 확인.
retValue = retValue + pow((float)2,(float)i);
}
if(tempString2.compare("") == 0)
break;
}
}
delete []arInputString;
//cout << "Race Flag : " << raceFlagStr << " -> " << retValue << endl;
return retValue;
}
int get_Mob_ImmuneFlag_Value(string inputString)
{
string arImmuneFlag[] = {"STUN","SLOW","FALL","CURSE","POISON","TERROR"};
int retValue = 0;
string* arInputString = StringSplit(inputString, ","); //프로토 정보 내용을 단어별로 쪼갠 배열.
for(int i =0;i<sizeof(arImmuneFlag)/sizeof(arImmuneFlag[0]);i++) {
string tempString = arImmuneFlag[i];
for (int j=0; j<30 ; j++) //최대 30개 단어까지. (하드코딩)
{
string tempString2 = arInputString[j];
if (tempString2.compare(tempString)==0) { //일치하는지 확인.
retValue = retValue + pow((float)2,(float)i);
}
if(tempString2.compare("") == 0)
break;
}
}
delete []arInputString;
//cout << "Immune Flag : " << immuneFlagStr << " -> " << retValue << endl;
return retValue;
}
+29
View File
@@ -0,0 +1,29 @@
#ifndef __Item_CSV_READER_H__
#define __Item_CSV_READER_H__
#include <iostream>
//csv 파일을 읽어와서 아이템 테이블에 넣어준다.
void putItemIntoTable(); //(테이블, 테스트여부)
int get_Item_Type_Value(std::string inputString);
int get_Item_SubType_Value(int type_value, std::string inputString);
int get_Item_AntiFlag_Value(std::string inputString);
int get_Item_Flag_Value(std::string inputString);
int get_Item_WearFlag_Value(std::string inputString);
int get_Item_Immune_Value(std::string inputString);
int get_Item_LimitType_Value(std::string inputString);
int get_Item_ApplyType_Value(std::string inputString);
//몬스터 프로토도 읽을 수 있다.
int get_Mob_Rank_Value(std::string inputString);
int get_Mob_Type_Value(std::string inputString);
int get_Mob_BattleType_Value(std::string inputString);
int get_Mob_Size_Value(std::string inputString);
int get_Mob_AIFlag_Value(std::string inputString);
int get_Mob_RaceFlag_Value(std::string inputString);
int get_Mob_ImmuneFlag_Value(std::string inputString);
#endif
+114
View File
@@ -0,0 +1,114 @@
#ifndef __INC_ETERLIB_SINGLETON_H__
#define __INC_ETERLIB_SINGLETON_H__
#include <assert.h>
template <typename T> class CSingleton
{
static T * ms_singleton;
public:
CSingleton()
{
assert(!ms_singleton);
int offset = (int) (T*) 1 - (int) (CSingleton <T>*) (T*) 1;
ms_singleton = (T*) ((int) this + offset);
}
virtual ~CSingleton()
{
assert(ms_singleton);
ms_singleton = 0;
}
__forceinline static T & Instance()
{
assert(ms_singleton);
return (*ms_singleton);
}
__forceinline static T * InstancePtr()
{
return (ms_singleton);
}
__forceinline static T & instance()
{
assert(ms_singleton);
return (*ms_singleton);
}
};
template <typename T> T * CSingleton <T>::ms_singleton = 0;
//
// singleton for non-hungarian
//
template <typename T> class singleton
{
static T * ms_singleton;
public:
singleton()
{
assert(!ms_singleton);
int offset = (int) (T*) 1 - (int) (CSingleton <T>*) (T*) 1;
ms_singleton = (T*) ((int) this + offset);
}
virtual ~singleton()
{
assert(ms_singleton);
ms_singleton = 0;
}
__forceinline static T & Instance()
{
assert(ms_singleton);
return (*ms_singleton);
}
__forceinline static T * InstancePtr()
{
return (ms_singleton);
}
__forceinline static T & instance()
{
assert(ms_singleton);
return (*ms_singleton);
}
};
template <typename T> T * singleton <T>::ms_singleton = 0;
/*
template<typename T>
class CSingleton : public T
{
public:
static T & Instance()
{
assert(ms_pInstance != NULL);
return *ms_pInstance;
}
CSingleton()
{
assert(ms_pInstance == NULL);
ms_pInstance = this;
}
virtual ~CSingleton()
{
assert(ms_pInstance);
ms_pInstance = 0;
}
protected:
static T * ms_pInstance;
};
template<typename T> T * CSingleton<T>::ms_pInstance = NULL;
*/
#endif
File diff suppressed because it is too large Load Diff
+245
View File
@@ -0,0 +1,245 @@
<?xml version="1.0" encoding="ks_c_5601-1987"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="dump_proto"
ProjectGUID="{DBCC99BC-1D68-4271-AC99-62EBBE37890F}"
RootNamespace="dump_proto"
SccProjectName="SAK"
SccAuxPath="SAK"
SccLocalPath="SAK"
SccProvider="SAK"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="2"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
<ProjectReference
ReferencedProjectIdentifier="{3AE0E6E6-B750-4769-9A6E-0D47012F1B40}"
RelativePathToProject=".\lzo\lzo.vcproj"
/>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
<File
RelativePath=".\CsvFile.cpp"
>
</File>
<File
RelativePath=".\CsvFile.h"
>
</File>
<File
RelativePath=".\dump_proto.cpp"
>
</File>
<File
RelativePath=".\ItemCSVReader.cpp"
>
</File>
<File
RelativePath=".\ItemCSVReader.h"
>
</File>
<File
RelativePath=".\Singleton.h"
>
</File>
</Filter>
<Filter
Name="LZO"
>
<File
RelativePath=".\lzo.cpp"
>
</File>
<File
RelativePath=".\lzo.h"
>
</File>
</Filter>
<Filter
Name="TEA"
>
<File
RelativePath=".\tea.cpp"
>
</File>
<File
RelativePath=".\tea.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
@@ -0,0 +1,10 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}
+118
View File
@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{DBCC99BC-1D68-4271-AC99-62EBBE37890F}</ProjectGuid>
<RootNamespace>dump_proto</RootNamespace>
<SccProjectName>SAK</SccProjectName>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
<SccProvider>SAK</SccProvider>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\lzo\lzo.vcxproj">
<Project>{3ae0e6e6-b750-4769-9a6e-0d47012f1b40}</Project>
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="CsvFile.cpp" />
<ClCompile Include="dump_proto.cpp" />
<ClCompile Include="ItemCSVReader.cpp" />
<ClCompile Include="lzo.cpp" />
<ClCompile Include="tea.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="CsvFile.h" />
<ClInclude Include="ItemCSVReader.h" />
<ClInclude Include="Singleton.h" />
<ClInclude Include="lzo.h" />
<ClInclude Include="tea.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="LZO">
<UniqueIdentifier>{58f4f6d1-dc21-492e-be8d-f11b650959c2}</UniqueIdentifier>
</Filter>
<Filter Include="TEA">
<UniqueIdentifier>{bf8e0d1b-bcab-4e18-8113-5b4447fd4ce2}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="CsvFile.cpp">
<Filter>Resource Files</Filter>
</ClCompile>
<ClCompile Include="dump_proto.cpp">
<Filter>Resource Files</Filter>
</ClCompile>
<ClCompile Include="ItemCSVReader.cpp">
<Filter>Resource Files</Filter>
</ClCompile>
<ClCompile Include="lzo.cpp">
<Filter>LZO</Filter>
</ClCompile>
<ClCompile Include="tea.cpp">
<Filter>TEA</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="CsvFile.h">
<Filter>Resource Files</Filter>
</ClInclude>
<ClInclude Include="ItemCSVReader.h">
<Filter>Resource Files</Filter>
</ClInclude>
<ClInclude Include="Singleton.h">
<Filter>Resource Files</Filter>
</ClInclude>
<ClInclude Include="lzo.h">
<Filter>LZO</Filter>
</ClInclude>
<ClInclude Include="tea.h">
<Filter>TEA</Filter>
</ClInclude>
</ItemGroup>
</Project>
+248
View File
@@ -0,0 +1,248 @@
//#include "common.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "lzo.h"
#include "tea.h"
CLZO asdfasdfasdfasdf;
#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
DWORD CLZObject::ms_dwFourCC = MAKEFOURCC('M', 'C', 'O', 'Z');
CLZObject::CLZObject()
{
Initialize();
}
void CLZObject::Initialize()
{
m_pHeader = NULL;
m_pbBuffer = NULL;
m_dwBufferSize = 0;
m_pbIn = NULL;
m_bCompressed = false;
}
void CLZObject::Clear()
{
if (m_pbBuffer)
delete [] m_pbBuffer;
Initialize();
}
CLZObject::~CLZObject()
{
Clear();
}
DWORD CLZObject::GetSize()
{
assert(m_pHeader);
if (m_bCompressed)
{
if (m_pHeader->dwEncryptSize)
return sizeof(THeader) + sizeof(DWORD) + m_pHeader->dwEncryptSize;
else
return sizeof(THeader) + sizeof(DWORD) + m_pHeader->dwCompressedSize;
}
else
return m_pHeader->dwRealSize;
}
void CLZObject::BeginCompress(const void * pvIn, UINT uiInLen)
{
m_pbIn = (const BYTE *) pvIn;
// sizeof(SHeader) +
// 암호화를 위한 fourCC 4바이트
// 압축된 후 만들어질 수 있는 최대 용량 +
// 암호화를 위한 8 바이트
m_dwBufferSize = sizeof(THeader) + sizeof(DWORD) + (uiInLen + uiInLen / 64 + 16 + 3) + 8;
m_pbBuffer = new BYTE[m_dwBufferSize];
memset(m_pbBuffer, 0, m_dwBufferSize);
m_pHeader = (THeader *) m_pbBuffer;
m_pHeader->dwFourCC = ms_dwFourCC;
m_pHeader->dwEncryptSize = m_pHeader->dwCompressedSize = m_pHeader->dwRealSize = 0;
m_pHeader->dwRealSize = uiInLen;
}
bool CLZObject::Compress()
{
UINT iOutLen;
BYTE * pbBuffer;
pbBuffer = m_pbBuffer + sizeof(THeader);
*(DWORD *) pbBuffer = ms_dwFourCC;
pbBuffer += sizeof(DWORD);
int r = lzo1x_1_compress((BYTE *) m_pbIn, m_pHeader->dwRealSize, pbBuffer, &iOutLen, CLZO::instance().GetWorkMemory());
if (LZO_E_OK != r)
{
fprintf(stderr, "LZO: lzo1x_compress failed\n");
return false;
}
m_pHeader->dwCompressedSize = iOutLen;
m_bCompressed = true;
return true;
}
bool CLZObject::BeginDecompress(const void * pvIn)
{
THeader * pHeader = (THeader *) pvIn;
if (pHeader->dwFourCC != ms_dwFourCC)
{
fprintf(stderr, "LZObject: not a valid data");
return false;
}
m_pHeader = pHeader;
m_pbIn = (const BYTE *) pvIn + (sizeof(THeader) + sizeof(DWORD));
m_pbBuffer = new BYTE[pHeader->dwRealSize];
memset(m_pbBuffer, 0, pHeader->dwRealSize);
return true;
}
bool CLZObject::Decompress(DWORD * pdwKey)
{
UINT uiSize;
int r;
if (m_pHeader->dwEncryptSize)
{
BYTE * pbDecryptedBuffer = Decrypt(pdwKey);
if (*(DWORD *) pbDecryptedBuffer != ms_dwFourCC)
{
fprintf(stderr, "LZObject: key incorrect");
return false;
}
if (LZO_E_OK != (r = lzo1x_decompress(pbDecryptedBuffer + sizeof(DWORD), m_pHeader->dwCompressedSize, m_pbBuffer, &uiSize, NULL)))
{
fprintf(stderr, "LZObject: Decompress failed(decrypt) ret %d\n", r);
return false;
}
delete [] pbDecryptedBuffer;
}
else
{
uiSize = m_pHeader->dwRealSize;
if (LZO_E_OK != (r = lzo1x_decompress_safe(m_pbIn, m_pHeader->dwCompressedSize, m_pbBuffer, &uiSize, NULL)))
{
fprintf(stderr, "LZObject: Decompress failed : ret %d, CompressedSize %d\n", r, m_pHeader->dwCompressedSize);
return false;
}
}
if (uiSize != m_pHeader->dwRealSize)
{
fprintf(stderr, "LZObject: Size differs");
return false;
}
return true;
}
bool CLZObject::Encrypt(DWORD * pdwKey)
{
if (!m_bCompressed)
{
assert(!"not compressed yet");
return false;
}
BYTE * pbBuffer = m_pbBuffer + sizeof(THeader);
m_pHeader->dwEncryptSize = tea_encrypt((DWORD *) pbBuffer, (const DWORD *) pbBuffer, pdwKey, m_pHeader->dwCompressedSize + 19);
return true;
}
BYTE * CLZObject::Decrypt(DWORD * pdwKey)
{
assert(m_pbBuffer);
BYTE * pbDecryptBuffer = new BYTE[m_pHeader->dwEncryptSize];
tea_encrypt((DWORD *) pbDecryptBuffer, (const DWORD *) (m_pbIn - sizeof(DWORD)), pdwKey, m_pHeader->dwEncryptSize);
return pbDecryptBuffer;
}
CLZO::CLZO() : m_pWorkMem(NULL)
{
if (lzo_init() != LZO_E_OK)
{
fprintf(stderr, "LZO: cannot initialize\n");
return;
}
m_pWorkMem = (BYTE *) malloc(LZO1X_MEM_COMPRESS);
if (NULL == m_pWorkMem)
{
fprintf(stderr, "LZO: cannot alloc memory\n");
return;
}
}
CLZO::~CLZO()
{
if (m_pWorkMem)
{
free(m_pWorkMem);
m_pWorkMem = NULL;
}
}
bool CLZO::CompressMemory(CLZObject & rObj, const void * pIn, UINT uiInLen)
{
rObj.BeginCompress(pIn, uiInLen);
return rObj.Compress();
}
bool CLZO::CompressEncryptedMemory(CLZObject & rObj, const void * pIn, UINT uiInLen, DWORD * pdwKey)
{
rObj.BeginCompress(pIn, uiInLen);
if (rObj.Compress())
{
if (rObj.Encrypt(pdwKey))
return true;
return false;
}
return false;
}
bool CLZO::Decompress(CLZObject & rObj, const BYTE * pbBuf, DWORD * pdwKey)
{
if (!rObj.BeginDecompress(pbBuf))
return false;
if (!rObj.Decompress(pdwKey))
return false;
return true;
}
BYTE * CLZO::GetWorkMemory()
{
return m_pWorkMem;
}
+72
View File
@@ -0,0 +1,72 @@
#ifndef __INC_METIN_II_371GNFBQOCJ_LZO_H__
#define __INC_METIN_II_371GNFBQOCJ_LZO_H__
#include "../lzo/lzoconf.h"
#include "../lzo/lzo1x.h"
#include "Singleton.h"
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned int UINT;
class CLZObject
{
public:
#pragma pack(4)
typedef struct SHeader
{
DWORD dwFourCC;
DWORD dwEncryptSize; // 암호화된 크기
DWORD dwCompressedSize; // 압축된 데이터 크기
DWORD dwRealSize; // 실제 데이터 크기
} THeader;
#pragma pack()
CLZObject();
~CLZObject();
void Clear();
void BeginCompress(const void * pvIn, UINT uiInLen);
bool Compress();
bool BeginDecompress(const void * pvIn);
bool Decompress(DWORD * pdwKey = NULL);
bool Encrypt(DWORD * pdwKey);
BYTE * Decrypt(DWORD * pdwKey);
const THeader & GetHeader() { return *m_pHeader; }
BYTE * GetBuffer() { return m_pbBuffer; }
DWORD GetSize();
private:
void Initialize();
BYTE * m_pbBuffer;
DWORD m_dwBufferSize;
THeader * m_pHeader;
const BYTE * m_pbIn;
bool m_bCompressed;
static DWORD ms_dwFourCC;
};
class CLZO : public singleton<CLZO>
{
public:
CLZO();
virtual ~CLZO();
bool CompressMemory(CLZObject & rObj, const void * pIn, UINT uiInLen);
bool CompressEncryptedMemory(CLZObject & rObj, const void * pIn, UINT uiInLen, DWORD * pdwKey);
bool Decompress(CLZObject & rObj, const BYTE * pbBuf, DWORD * pdwKey = NULL);
BYTE * GetWorkMemory();
private:
BYTE * m_pWorkMem;
};
#endif
+100
View File
@@ -0,0 +1,100 @@
/*
* Filename: tea.c
* Description: TEA 암호화 모듈
*
* Author: 김한주 (aka. 비엽, Cronan), 송영진 (aka. myevan, 빗자루)
*/
#include "tea.h"
#include <memory.h>
/*
* TEA Encryption Module Instruction
* Edited by 김한주 aka. 비엽, Cronan
*
* void tea_code(const unsigned long sz, const unsigned long sy, const unsigned long *key, unsigned long *dest)
* void tea_decode(const unsigned long sz, const unsigned long sy, const unsigned long *key, unsigned long *dest)
* 8바이트를 암호/복호화 할때 사용된다. key 는 16 바이트여야 한다.
* sz, sy 는 8바이트의 역순으로 대입한다.
*
* int tea_decrypt(unsigned long *dest, const unsigned long *src, const unsigned long *key, int size);
* int tea_encrypt(unsigned long *dest, const unsigned long *src, const unsigned long *key, int size);
* 한꺼번에 8 바이트 이상을 암호/복호화 할때 사용한다. 만약 size 가
* 8의 배수가 아니면 8의 배수로 크기를 "늘려서" 암호화 한다.
*
* ex. tea_code(pdwSrc[1], pdwSrc[0], pdwKey, pdwDest);
* tea_decrypt(pdwDest, pdwSrc, pdwKey, nSize);
*/
#define TEA_ROUND 32 // 32 를 권장하며, 높을 수록 결과가 난해해 진다.
#define DELTA 0x9E3779B9 // DELTA 값 바꾸지 말것.
void tea_code(const unsigned long sz, const unsigned long sy, const unsigned long *key, unsigned long *dest)
{
register unsigned long y = sy, z = sz, sum = 0;
unsigned long n = TEA_ROUND;
while (n-- > 0)
{
y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]);
sum += DELTA;
z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]);
}
*(dest++) = y;
*dest = z;
}
void tea_decode(const unsigned long sz, const unsigned long sy, const unsigned long *key, unsigned long *dest)
{
#pragma warning(disable:4307)
register unsigned long y = sy, z = sz, sum = DELTA * TEA_ROUND;
#pragma warning(default:4307)
unsigned long n = TEA_ROUND;
while (n-- > 0)
{
z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]);
sum -= DELTA;
y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]);
}
*(dest++) = y;
*dest = z;
}
int tea_encrypt(unsigned long *dest, const unsigned long *src, const unsigned long * key, int size)
{
int i;
int resize;
if (size % 8 != 0)
{
resize = size + 8 - (size % 8);
memset((char *) src + size, 0, resize - size);
}
else
resize = size;
for (i = 0; i < resize >> 3; i++, dest += 2, src += 2)
tea_code(*(src + 1), *src, key, dest);
return (resize);
}
int tea_decrypt(unsigned long *dest, const unsigned long *src, const unsigned long * key, int size)
{
int i;
int resize;
if (size % 8 != 0)
resize = size + 8 - (size % 8);
else
resize = size;
for (i = 0; i < resize >> 3; i++, dest += 2, src += 2)
tea_decode(*(src + 1), *src, key, dest);
return (resize);
}
+17
View File
@@ -0,0 +1,17 @@
#ifdef __cplusplus
extern "C" {
#endif
/* TEA is a 64-bit symmetric block cipher with a 128-bit key, developed
by David J. Wheeler and Roger M. Needham, and described in their
paper at <URL:http://www.cl.cam.ac.uk/ftp/users/djw3/tea.ps>.
This implementation is based on their code in
<URL:http://www.cl.cam.ac.uk/ftp/users/djw3/xtea.ps> */
int tea_encrypt(unsigned long *dest, const unsigned long *src, const unsigned long *key, int size);
int tea_decrypt(unsigned long *dest, const unsigned long *src, const unsigned long *key, int size);
#ifdef __cplusplus
};
#endif
+151
View File
@@ -0,0 +1,151 @@
/* alloc.c -- memory allocation
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
#include "stdafx.h"
#include "lzo_conf.h"
#include <lzoutil.h>
#if defined(HAVE_MALLOC_H)
# include <malloc.h>
#endif
#if defined(__palmos__)
# include <System/MemoryMgr.h>
#endif
#undef lzo_alloc_hook
#undef lzo_free_hook
#undef lzo_alloc
#undef lzo_malloc
#undef lzo_free
/***********************************************************************
// implementation
************************************************************************/
LZO_PRIVATE(lzo_voidp)
lzo_alloc_internal(lzo_uint nelems, lzo_uint size)
{
lzo_voidp p = NULL;
unsigned long s = (unsigned long) nelems * size;
if (nelems <= 0 || size <= 0 || s < nelems || s < size)
return NULL;
#if defined(__palmos__)
p = (lzo_voidp) MemPtrNew(s);
#elif (LZO_UINT_MAX <= SIZE_T_MAX)
if (s < SIZE_T_MAX)
p = (lzo_voidp) malloc((size_t)s);
#elif defined(HAVE_HALLOC) && defined(__DMC__)
if (size < SIZE_T_MAX)
p = (lzo_voidp) _halloc(nelems,(size_t)size);
#elif defined(HAVE_HALLOC)
if (size < SIZE_T_MAX)
p = (lzo_voidp) halloc(nelems,(size_t)size);
#else
if (s < SIZE_T_MAX)
p = (lzo_voidp) malloc((size_t)s);
#endif
return p;
}
LZO_PRIVATE(void)
lzo_free_internal(lzo_voidp p)
{
if (!p)
return;
#if defined(__palmos__)
MemPtrFree(p);
#elif (LZO_UINT_MAX <= SIZE_T_MAX)
free(p);
#elif defined(HAVE_HALLOC) && defined(__DMC__)
_hfree(p);
#elif defined(HAVE_HALLOC)
hfree(p);
#else
free(p);
#endif
}
/***********************************************************************
// public interface using the global hooks
************************************************************************/
/* global allocator hooks */
LZO_PUBLIC_VAR(lzo_alloc_hook_t) lzo_alloc_hook = lzo_alloc_internal;
LZO_PUBLIC_VAR(lzo_free_hook_t) lzo_free_hook = lzo_free_internal;
LZO_PUBLIC(lzo_voidp)
lzo_alloc(lzo_uint nelems, lzo_uint size)
{
if (!lzo_alloc_hook)
return NULL;
return lzo_alloc_hook(nelems,size);
}
LZO_PUBLIC(lzo_voidp)
lzo_malloc(lzo_uint size)
{
if (!lzo_alloc_hook)
return NULL;
#if defined(__palmos__)
return lzo_alloc_hook(size,1);
#elif (LZO_UINT_MAX <= SIZE_T_MAX)
return lzo_alloc_hook(size,1);
#elif defined(HAVE_HALLOC)
/* use segment granularity by default */
if (size + 15 > size) /* avoid overflow */
return lzo_alloc_hook((size+15)/16,16);
return lzo_alloc_hook(size,1);
#else
return lzo_alloc_hook(size,1);
#endif
}
LZO_PUBLIC(void)
lzo_free(lzo_voidp p)
{
if (!lzo_free_hook)
return;
lzo_free_hook(p);
}
/*
vi:ts=4:et
*/
+47
View File
@@ -0,0 +1,47 @@
#define LZO_NEED_DICT_H
#include "config1b.h"
#if !defined(COMPRESS_ID)
#define COMPRESS_ID _LZO_ECONCAT2(DD_BITS,CLEVEL)
#endif
#include "lzo1b_c.ch"
/***********************************************************************
//
************************************************************************/
#define LZO_COMPRESS \
_LZO_ECONCAT3(lzo1b_,COMPRESS_ID,_compress)
#define LZO_COMPRESS_FUNC \
_LZO_ECONCAT3(_lzo1b_,COMPRESS_ID,_compress_func)
/***********************************************************************
//
************************************************************************/
const lzo_compress_t LZO_COMPRESS_FUNC = do_compress;
LZO_PUBLIC(int)
LZO_COMPRESS ( const lzo_byte *in, lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
#if defined(__LZO_QUERY_COMPRESS)
if (__LZO_IS_COMPRESS_QUERY(in,in_len,out,out_len,wrkmem))
return __LZO_QUERY_COMPRESS(in,in_len,out,out_len,wrkmem,D_SIZE,lzo_sizeof(lzo_dict_t));
#endif
return _lzo1b_do_compress(in,in_len,out,out_len,wrkmem,do_compress);
}
/*
vi:ts=4:et
*/
+47
View File
@@ -0,0 +1,47 @@
#define LZO_NEED_DICT_H
#include "config1c.h"
#if !defined(COMPRESS_ID)
#define COMPRESS_ID _LZO_ECONCAT2(DD_BITS,CLEVEL)
#endif
#include "lzo1b_c.ch"
/***********************************************************************
//
************************************************************************/
#define LZO_COMPRESS \
_LZO_ECONCAT3(lzo1c_,COMPRESS_ID,_compress)
#define LZO_COMPRESS_FUNC \
_LZO_ECONCAT3(_lzo1c_,COMPRESS_ID,_compress_func)
/***********************************************************************
//
************************************************************************/
const lzo_compress_t LZO_COMPRESS_FUNC = do_compress;
LZO_PUBLIC(int)
LZO_COMPRESS ( const lzo_byte *in, lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
#if defined(__LZO_QUERY_COMPRESS)
if (__LZO_IS_COMPRESS_QUERY(in,in_len,out,out_len,wrkmem))
return __LZO_QUERY_COMPRESS(in,in_len,out,out_len,wrkmem,D_SIZE,lzo_sizeof(lzo_dict_t));
#endif
return _lzo1c_do_compress(in,in_len,out,out_len,wrkmem,do_compress);
}
/*
vi:ts=4:et
*/
+43
View File
@@ -0,0 +1,43 @@
/* config1.h -- configuration for the LZO1 algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#include <lzo1.h>
#define LZO_NO_R1
#include "config1a.h"
/*
vi:ts=4:et
*/
+187
View File
@@ -0,0 +1,187 @@
/* config1a.h -- configuration for the LZO1A algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#ifndef __LZO_CONFIG1A_H
#define __LZO_CONFIG1A_H
#include <lzo1a.h>
#include "lzo_conf.h"
#undef LZO_COLLECT_STATS /* no support for stats here */
/***********************************************************************
// algorithm configuration
************************************************************************/
/* run bits (4 - 5) - the compressor and the decompressor
* must use the same value. */
#if !defined(RBITS)
# define RBITS 5
#endif
/* dictionary depth (0 - 6) - this only affects the compressor.
* 0 is fastest, 6 is best compression ratio */
#if !defined(DDBITS)
# define DDBITS 0
#endif
/* compression level (1 - 9) - this only affects the compressor.
* 1 is fastest, 9 is best compression ratio */
#if !defined(CLEVEL)
# define CLEVEL 1 /* fastest by default */
#endif
/* check configuration */
#if (RBITS < 4 || RBITS > 5)
# error "invalid RBITS"
#endif
#if (DDBITS < 0 || DDBITS > 6)
# error "invalid DDBITS"
#endif
#if (CLEVEL < 1 || CLEVEL > 9)
# error "invalid CLEVEL"
#endif
/***********************************************************************
// internal configuration
************************************************************************/
/* add a special code so that the decompressor can detect the
* end of the compressed data block (overhead is 3 bytes per block) */
#undef LZO_EOF_CODE
/* return -1 instead of copying if the data cannot be compressed */
#undef LZO_RETURN_IF_NOT_COMPRESSIBLE
/***********************************************************************
// algorithm internal configuration
************************************************************************/
/* choose the hashing strategy */
#ifndef LZO_HASH
#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_A
#endif
/* config */
#define R_BITS RBITS
#define DD_BITS DDBITS
#ifndef D_BITS
#define D_BITS 16
#endif
/***********************************************************************
// optimization and debugging
************************************************************************/
/* Collect statistics */
#if 0 && !defined(LZO_COLLECT_STATS)
# define LZO_COLLECT_STATS
#endif
/***********************************************************************
//
************************************************************************/
#define M3O_BITS M2O_BITS
#define M3L_BITS CHAR_BIT
#define M3_MAX_LEN (M3_MIN_LEN + LZO_SIZE(M3L_BITS) - 1)
#define _MAX_OFFSET _M2_MAX_OFFSET
#define LZO_NO_M3
#include "lzo_util.h"
#include "lzo1b_de.h"
#include "stats1b.h"
#include "lzo1b_cc.h"
/***********************************************************************
// check for total LZO1/LZO1A compatibility
************************************************************************/
#undef M2_MARKER
#define M2_MARKER (1 << M2O_BITS)
#if (R_BITS != 5)
# error
#endif
#if (M2O_BITS != 5)
# error
#endif
#if (M3O_BITS != 5)
# error
#endif
#if (M2_MIN_LEN != 3)
# error
#endif
#if (M2_MAX_LEN != 8)
# error
#endif
#if (M3_MIN_LEN != 9)
# error
#endif
#if (M3_MAX_LEN != 264)
# error
#endif
#if (_M2_MAX_OFFSET != (1u << 13))
# error
#endif
#if (_M2_MAX_OFFSET != _M3_MAX_OFFSET)
# error
#endif
#if (_M2_MAX_OFFSET != _MAX_OFFSET)
# error
#endif
#if (R0MIN != 32)
# error
#endif
#if (R0MAX != 287)
# error
#endif
#if (R0FAST != 280)
# error
#endif
#endif /* already included */
/*
vi:ts=4:et
*/
+132
View File
@@ -0,0 +1,132 @@
/* config1b.h -- configuration for the LZO1B algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#ifndef __LZO_CONFIG1B_H
#define __LZO_CONFIG1B_H
#include <lzo1b.h>
#include "lzo_conf.h"
/***********************************************************************
// algorithm configuration
************************************************************************/
/* run bits (4 - 5) - the compressor and the decompressor
* must use the same value. */
#if !defined(RBITS)
# define RBITS 5
#endif
/* dictionary depth (0 - 6) - this only affects the compressor.
* 0 is fastest, 6 is best compression ratio */
#if !defined(DDBITS)
# define DDBITS 0
#endif
/* compression level (1 - 9) - this only affects the compressor.
* 1 is fastest, 9 is best compression ratio */
#if !defined(CLEVEL)
# define CLEVEL 1 /* fastest by default */
#endif
/* check configuration */
#if (RBITS < 4 || RBITS > 5)
# error "invalid RBITS"
#endif
#if (DDBITS < 0 || DDBITS > 6)
# error "invalid DDBITS"
#endif
#if (CLEVEL < 1 || CLEVEL > 9)
# error "invalid CLEVEL"
#endif
/***********************************************************************
// internal configuration
************************************************************************/
/* add a special code so that the decompressor can detect the
* end of the compressed data block (overhead is 3 bytes per block) */
#undef LZO_EOF_CODE
#define LZO_EOF_CODE
/* return -1 instead of copying if the data cannot be compressed */
#undef LZO_RETURN_IF_NOT_COMPRESSIBLE
/***********************************************************************
// algorithm internal configuration
************************************************************************/
/* choose the hashing strategy */
#ifndef LZO_HASH
#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_A
#endif
/* config */
#define R_BITS RBITS
#define DD_BITS DDBITS
#ifndef D_BITS
#define D_BITS 14
#endif
/***********************************************************************
// optimization and debugging
************************************************************************/
/* Collect statistics */
#if 0 && !defined(LZO_COLLECT_STATS)
# define LZO_COLLECT_STATS
#endif
/***********************************************************************
//
************************************************************************/
#include "lzo_util.h"
#include "lzo1b_de.h"
#include "stats1b.h"
#include "lzo1b_cc.h"
#endif /* already included */
/*
vi:ts=4:et
*/
+137
View File
@@ -0,0 +1,137 @@
/* config1c.h -- configuration for the LZO1C algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#ifndef __LZO_CONFIG1C_H
#define __LZO_CONFIG1C_H
#include <lzo1c.h>
#include "lzo_conf.h"
/***********************************************************************
// algorithm configuration
************************************************************************/
/* run bits (4 - 5) - the compressor and the decompressor
* must use the same value. */
#if !defined(RBITS)
# define RBITS 5
#endif
/* dictionary depth (0 - 6) - this only affects the compressor.
* 0 is fastest, 6 is best compression ratio */
#if !defined(DDBITS)
# define DDBITS 0
#endif
/* compression level (1 - 9) - this only affects the compressor.
* 1 is fastest, 9 is best compression ratio */
#if !defined(CLEVEL)
# define CLEVEL 1 /* fastest by default */
#endif
/* check configuration */
#if (RBITS < 4 || RBITS > 5)
# error "invalid RBITS"
#endif
#if (DDBITS < 0 || DDBITS > 6)
# error "invalid DDBITS"
#endif
#if (CLEVEL < 1 || CLEVEL > 9)
# error "invalid CLEVEL"
#endif
/***********************************************************************
// internal configuration
************************************************************************/
/* add a special code so that the decompressor can detect the
* end of the compressed data block (overhead is 3 bytes per block) */
#undef LZO_EOF_CODE
#define LZO_EOF_CODE
/* return -1 instead of copying if the data cannot be compressed */
#undef LZO_RETURN_IF_NOT_COMPRESSIBLE
/***********************************************************************
// algorithm internal configuration
************************************************************************/
/* choose the hashing strategy */
#ifndef LZO_HASH
#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_A
#endif
/* config */
#define R_BITS RBITS
#define DD_BITS DDBITS
#ifndef D_BITS
#define D_BITS 14
#endif
/***********************************************************************
// optimization and debugging
************************************************************************/
/* Collect statistics */
#if 0 && !defined(LZO_COLLECT_STATS)
# define LZO_COLLECT_STATS
#endif
/***********************************************************************
//
************************************************************************/
/* good parameters when using a blocksize of 8kB */
#define M3O_BITS 6
#undef LZO_DETERMINISTIC
#include "lzo_util.h"
#include "lzo1b_de.h"
#include "stats1c.h"
#include "lzo1c_cc.h"
#endif /* already included */
/*
vi:ts=4:et
*/
+85
View File
@@ -0,0 +1,85 @@
/* config1f.h -- configuration for the LZO1F algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#ifndef __LZO_CONFIG1F_H
#define __LZO_CONFIG1F_H
#include <lzo1f.h>
#include "lzo_conf.h"
#include "lzo_util.h"
/***********************************************************************
//
************************************************************************/
#define LZO_EOF_CODE
#undef LZO_DETERMINISTIC
#define M2_MAX_OFFSET 0x0800
#define M3_MAX_OFFSET 0x3fff
#define M2_MIN_LEN 3
#define M2_MAX_LEN 8
#define M3_MIN_LEN 3
#define M3_MAX_LEN 33
#define M3_MARKER 224
/***********************************************************************
//
************************************************************************/
#ifndef MIN_LOOKAHEAD
#define MIN_LOOKAHEAD (M2_MAX_LEN + 1)
#endif
#if defined(LZO_NEED_DICT_H)
#ifndef LZO_HASH
#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_A
#endif
#define DL_MIN_LEN M2_MIN_LEN
#include "lzo_dict.h"
#endif
#endif /* already included */
/*
vi:ts=4:et
*/
+106
View File
@@ -0,0 +1,106 @@
/* config1x.h -- configuration for the LZO1X algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#ifndef __LZO_CONFIG1X_H
#define __LZO_CONFIG1X_H
#if !defined(LZO1X) && !defined(LZO1Y) && !defined(LZO1Z)
# define LZO1X
#endif
#if !defined(__LZO_IN_MINILZO)
#include <lzo1x.h>
#endif
#include "lzo_conf.h"
#include "lzo_util.h"
/***********************************************************************
//
************************************************************************/
#define LZO_EOF_CODE
#undef LZO_DETERMINISTIC
#define M1_MAX_OFFSET 0x0400
#ifndef M2_MAX_OFFSET
#define M2_MAX_OFFSET 0x0800
#endif
#define M3_MAX_OFFSET 0x4000
#define M4_MAX_OFFSET 0xbfff
#define MX_MAX_OFFSET (M1_MAX_OFFSET + M2_MAX_OFFSET)
#define M1_MIN_LEN 2
#define M1_MAX_LEN 2
#define M2_MIN_LEN 3
#ifndef M2_MAX_LEN
#define M2_MAX_LEN 8
#endif
#define M3_MIN_LEN 3
#define M3_MAX_LEN 33
#define M4_MIN_LEN 3
#define M4_MAX_LEN 9
#define M1_MARKER 0
#define M2_MARKER 64
#define M3_MARKER 32
#define M4_MARKER 16
/***********************************************************************
//
************************************************************************/
#ifndef MIN_LOOKAHEAD
#define MIN_LOOKAHEAD (M2_MAX_LEN + 1)
#endif
#if defined(LZO_NEED_DICT_H)
#ifndef LZO_HASH
#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_B
#endif
#define DL_MIN_LEN M2_MIN_LEN
#include "lzo_dict.h"
#endif
#endif /* already included */
/*
vi:ts=4:et
*/
+52
View File
@@ -0,0 +1,52 @@
/* config1y.h -- configuration for the LZO1Y algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#ifndef __LZO_CONFIG1Y_H
#define __LZO_CONFIG1Y_H
#if !defined(LZO1Y)
# define LZO1Y
#endif
#include <lzo1y.h>
#define M2_MAX_LEN 14
#define M2_MAX_OFFSET 0x0400
#include "config1x.h"
#endif /* already included */
/*
vi:ts=4:et
*/
+51
View File
@@ -0,0 +1,51 @@
/* config1z.h -- configuration for the LZO1Z algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#ifndef __LZO_CONFIG1Z_H
#define __LZO_CONFIG1Z_H
#if !defined(LZO1Z)
# define LZO1Z
#endif
#include <lzo1z.h>
#define M2_MAX_OFFSET 0x0700
#include "config1x.h"
#endif /* already included */
/*
vi:ts=4:et
*/
+148
View File
@@ -0,0 +1,148 @@
/* config2a.h -- configuration for the LZO2A algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#ifndef __LZO_CONFIG2A_H
#define __LZO_CONFIG2A_H
#include <lzo2a.h>
#include "lzo_conf.h"
#include "lzo_util.h"
/***********************************************************************
// algorithm configuration
************************************************************************/
/* dictionary depth (0 - 6) - this only affects the compressor.
* 0 is fastest, 6 is best compression ratio */
#if !defined(DDBITS)
# define DDBITS 0
#endif
/* compression level (1 - 9) - this only affects the compressor.
* 1 is fastest, 9 is best compression ratio */
#if !defined(CLEVEL)
# define CLEVEL 1 /* fastest by default */
#endif
/* check configuration */
#if (DDBITS < 0 || DDBITS > 6)
# error "invalid DDBITS"
#endif
#if (CLEVEL < 1 || CLEVEL > 9)
# error "invalid CLEVEL"
#endif
/***********************************************************************
// internal configuration
************************************************************************/
#if 1
#define N 8191 /* size of ring buffer */
#else
#define N 16383 /* size of ring buffer */
#endif
#define M1_MIN_LEN 2
#define M1_MAX_LEN 5
#define M2_MIN_LEN 3
#define M3_MIN_LEN 3
/* add a special code so that the decompressor can detect the
* end of the compressed data block (overhead is 3 bytes per block) */
#undef LZO_EOF_CODE
#define LZO_EOF_CODE
/* return -1 instead of copying if the data cannot be compressed */
#undef LZO_RETURN_IF_NOT_COMPRESSIBLE
#undef LZO_DETERMINISTIC
/***********************************************************************
// algorithm internal configuration
************************************************************************/
/* choose the hashing strategy */
#ifndef LZO_HASH
#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_A
#endif
/* config */
#define DD_BITS DDBITS
#ifndef D_BITS
#define D_BITS 14
#endif
/***********************************************************************
// optimization and debugging
************************************************************************/
/* Collect statistics */
#if 0 && !defined(LZO_COLLECT_STATS)
# define LZO_COLLECT_STATS
#endif
/***********************************************************************
//
************************************************************************/
/* get bits */
#define _NEEDBITS \
{ _NEEDBYTE; b |= ((lzo_uint32) _NEXTBYTE) << k; k += 8; assert(k <= 32); }
#define NEEDBITS(j) { assert((j) < 8); if (k < (j)) _NEEDBITS }
/* set bits */
#define SETBITS(j,x) { b |= (x) << k; k += (j); assert(k <= 32); }
/* access bits */
#define MASKBITS(j) (b & ((((lzo_uint32)1 << (j)) - 1)))
/* drop bits */
#define DUMPBITS(j) { assert(k >= j); b >>= (j); k -= (j); }
#endif /* already included */
/*
vi:ts=4:et
*/
+83
View File
@@ -0,0 +1,83 @@
/* fake16.h -- fake the strict 16-bit memory model for test purposes
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/*
* NOTE:
* this file is *only* for testing the strict 16-bit memory model
* on a 32-bit machine. Because things like integral promotion,
* size_t and ptrdiff_t cannot be faked this is no real substitute
* for testing under a real 16-bit system.
*
* See also <lzo16bit.h>
*
* Usage: #include "src/fake16.h" at the top of <lzoconf.h>
*/
#ifndef __LZOFAKE16BIT_H
#define __LZOFAKE16BIT_H
#ifdef __LZOCONF_H
# error "include this file before lzoconf.h"
#endif
#include <limits.h>
#if (USHRT_MAX == 0xffff)
#ifdef __cplusplus
extern "C" {
#endif
#define __LZO16BIT_H /* do not use <lzo16bit.h> */
#define __LZO_STRICT_16BIT
#define __LZO_FAKE_STRICT_16BIT
#define LZO_99_UNSUPPORTED
#define LZO_999_UNSUPPORTED
typedef unsigned short lzo_uint;
typedef short lzo_int;
#define LZO_UINT_MAX USHRT_MAX
#define LZO_INT_MAX SHRT_MAX
#define lzo_sizeof_dict_t sizeof(lzo_uint)
#if 1
#define __LZO_NO_UNALIGNED
#define __LZO_NO_ALIGNED
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif
#endif /* already included */
+41
View File
@@ -0,0 +1,41 @@
Directory overview:
===================
src assembler sources for gcc/gas
d_asm1 sources converted for masm/tasm/wasm
d_asm2 sources converted for masm/tasm/wasm (in a `db' format)
d_asm3 sources converted for nasm (in a `db' format)
Notes:
======
- The assembler sources are designed for a flat 32 bit memory model
running in protected mode - they should work with most i386
32-bit compilers.
- All functions expect a `cdecl' (C stack based) calling convention.
The function return value will be placed into `eax'.
All other registers are preserved.
- There are no prototypes for the assembler functions - copy them
from ltest/asm.h if you need some.
- For reasons of speed all fast assembler decompressors (having `_fast'
in their name) can access (write to) up to 3 bytes past the end of
the decompressed (output) block. Data past the end of the compressed
(input) block is never accessed (read from).
See also LZO.FAQ
- The assembler functions are not available in a Windows or OS/2 DLL because
I don't know how to generate the necessary DLL export information.
- You should prefer the sources in `d_asm2' over those in `d_asm1' - many
assemblers insert their own alignment instructions or perform some
other kinds of "optimizations".
- Finally you should test if the assembler versions are actually faster
than the C version on your machine - some compilers can do a very good
optimization job, and they also can optimize the code for a specific
processor type.
+141
View File
@@ -0,0 +1,141 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1c_decompress_asm
_lzo1c_decompress_asm:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
nop
L3: xor eax,eax
mov al,[esi]
inc esi
cmp al,20H
jae L6
or al,al
je L7
mov ecx,eax
L4: repe movsb
L5: mov al,[esi]
inc esi
cmp al,20H
jb L9
L6: cmp al,40H
jb L10
mov ecx,eax
and al,1fH
lea edx,-1H[edi]
shr ecx,05H
sub edx,eax
mov al,[esi]
inc esi
shl eax,05H
sub edx,eax
inc ecx
xchg esi,edx
repe movsb
mov esi,edx
jmp L3
lea esi,+0H[esi]
L7: mov al,[esi]
inc esi
lea ecx,+20H[eax]
cmp al,0f8H
jb L4
mov ecx,00000118H
sub al,0f8H
je L8
xchg eax,ecx
xor al,al
shl eax,cl
xchg eax,ecx
L8: repe movsb
jmp L3
lea esi,+0H[esi]
L9: lea edx,-1H[edi]
sub edx,eax
mov al,[esi]
inc esi
shl eax,05H
sub edx,eax
xchg esi,edx
movsb
movsb
movsb
mov esi,edx
movsb
xor eax,eax
jmp L5
L10: and al,1fH
mov ecx,eax
jne L13
mov cl,1fH
L11: mov al,[esi]
inc esi
or al,al
jne L12
add ecx,000000ffH
jmp L11
L12: add ecx,eax
L13: mov al,[esi]
inc esi
mov ebx,eax
and al,3fH
mov edx,edi
sub edx,eax
mov al,[esi]
inc esi
shl eax,06H
sub edx,eax
cmp edx,edi
je L14
xchg edx,esi
lea ecx,+3H[ecx]
repe movsb
mov esi,edx
xor eax,eax
shr ebx,06H
mov ecx,ebx
jne L4
jmp L3
L14: cmp ecx,00000001H
setne al
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L17
jb L16
L15: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L15
L16: mov eax,00000008H
jmp L15
L17: mov eax,00000004H
jmp L15
nop
end
+181
View File
@@ -0,0 +1,181 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1c_decompress_asm_safe
_lzo1c_decompress_asm_safe:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
lea eax,-3H[esi]
add eax,+2cH[esp]
mov +4H[esp],eax
mov eax,edi
mov edx,+34H[esp]
add eax,[edx]
mov [esp],eax
lea esi,+0H[esi]
L3: xor eax,eax
mov al,[esi]
inc esi
cmp al,20H
jae L6
or al,al
je L7
mov ecx,eax
L4: lea ebx,[edi+ecx]
cmp [esp],ebx
jb L18
lea ebx,[esi+ecx]
cmp +4H[esp],ebx
jb L17
repe movsb
L5: mov al,[esi]
inc esi
cmp al,20H
jb L9
L6: cmp al,40H
jb L10
mov ecx,eax
and al,1fH
lea edx,-1H[edi]
shr ecx,05H
sub edx,eax
mov al,[esi]
inc esi
shl eax,05H
sub edx,eax
inc ecx
xchg esi,edx
cmp esi,+30H[esp]
jb L19
lea ebx,[edi+ecx]
cmp [esp],ebx
jb L18
repe movsb
mov esi,edx
jmp L3
lea esi,+0H[esi]
L7: mov al,[esi]
inc esi
lea ecx,+20H[eax]
cmp al,0f8H
jb L4
mov ecx,00000118H
sub al,0f8H
je L8
xchg eax,ecx
xor al,al
shl eax,cl
xchg eax,ecx
L8: lea ebx,[edi+ecx]
cmp [esp],ebx
jb L18
lea ebx,[esi+ecx]
cmp +4H[esp],ebx
jb L17
repe movsb
jmp L3
lea esi,+0H[esi]
L9: lea edx,-1H[edi]
sub edx,eax
mov al,[esi]
inc esi
shl eax,05H
sub edx,eax
xchg esi,edx
cmp esi,+30H[esp]
jb L19
lea ebx,+4H[edi]
cmp [esp],ebx
jb L18
movsb
movsb
movsb
mov esi,edx
movsb
xor eax,eax
jmp L5
L10: and al,1fH
mov ecx,eax
jne L13
mov cl,1fH
L11: mov al,[esi]
inc esi
or al,al
jne L12
add ecx,000000ffH
jmp L11
lea esi,+0H[esi]
L12: add ecx,eax
L13: mov al,[esi]
inc esi
mov ebx,eax
and al,3fH
mov edx,edi
sub edx,eax
mov al,[esi]
inc esi
shl eax,06H
sub edx,eax
cmp edx,edi
je L14
xchg edx,esi
lea ecx,+3H[ecx]
cmp esi,+30H[esp]
jb L19
lea eax,[edi+ecx]
cmp [esp],eax
jb L18
repe movsb
mov esi,edx
xor eax,eax
shr ebx,06H
mov ecx,ebx
jne L4
jmp L3
L14: cmp ecx,00000001H
setne al
cmp edi,[esp]
ja L18
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L17
jb L16
L15: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L15
L16: mov eax,00000008H
jmp L15
L17: mov eax,00000004H
jmp L15
L18: mov eax,00000005H
jmp L15
L19: mov eax,00000006H
jmp L15
end
+142
View File
@@ -0,0 +1,142 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1f_decompress_asm_fast
_lzo1f_decompress_asm_fast:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
nop
L3: xor eax,eax
mov al,[esi]
inc esi
cmp al,1fH
ja L9
or al,al
mov ecx,eax
jne L6
L4: mov al,[esi]
inc esi
or al,al
jne L5
add ecx,000000ffH
jmp L4
L5: lea ecx,+1fH[eax+ecx]
L6: mov al,cl
shr ecx,02H
repe movsd
and al,03H
je L7
mov ebx,[esi]
add esi,eax
mov [edi],ebx
add edi,eax
L7: mov al,[esi]
inc esi
L8: cmp al,1fH
jbe L13
L9: cmp al,0dfH
ja L16
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and al,07H
shr ecx,05H
mov ebx,eax
mov al,[esi]
lea eax,[ebx+eax*8]
inc esi
L10: sub edx,eax
add ecx,00000002H
xchg edx,esi
cmp ecx,00000006H
jb L11
cmp eax,00000004H
jb L11
mov al,cl
shr ecx,02H
repe movsd
and al,03H
mov cl,al
L11: repe movsb
mov esi,edx
L12: mov cl,-2H[esi]
and ecx,00000003H
je L3
mov eax,[esi]
add esi,ecx
mov [edi],eax
add edi,ecx
xor eax,eax
mov al,[esi]
inc esi
jmp L8
L13: shr eax,02H
lea edx,-801H[edi]
mov ecx,eax
mov al,[esi]
inc esi
lea eax,[ecx+eax*8]
sub edx,eax
mov eax,[edx]
mov [edi],eax
add edi,00000003H
jmp L12
L14: mov al,[esi]
inc esi
or al,al
jne L15
add ecx,000000ffH
jmp L14
L15: lea ecx,+1fH[eax+ecx]
jmp L17
lea esi,+0H[esi]
L16: and al,1fH
mov ecx,eax
je L14
L17: mov edx,edi
mov ax,[esi]
add esi,00000002H
shr eax,02H
jne L10
cmp ecx,00000001H
setne al
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L20
jb L19
L18: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L18
L19: mov eax,00000008H
jmp L18
L20: mov eax,00000004H
jmp L18
mov esi,esi
end
+171
View File
@@ -0,0 +1,171 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1f_decompress_asm_fast_safe
_lzo1f_decompress_asm_fast_safe:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
lea eax,-3H[esi]
add eax,+2cH[esp]
mov +4H[esp],eax
mov eax,edi
mov edx,+34H[esp]
add eax,[edx]
mov [esp],eax
lea esi,+0H[esi]
L3: xor eax,eax
mov al,[esi]
inc esi
cmp al,1fH
ja L9
or al,al
mov ecx,eax
jne L6
L4: mov al,[esi]
inc esi
or al,al
jne L5
add ecx,000000ffH
jmp L4
L5: lea ecx,+1fH[eax+ecx]
L6: lea ebx,[edi+ecx]
cmp [esp],ebx
jb L21
lea ebx,[esi+ecx]
cmp +4H[esp],ebx
jb L20
mov al,cl
shr ecx,02H
repe movsd
and al,03H
je L7
mov ebx,[esi]
add esi,eax
mov [edi],ebx
add edi,eax
L7: mov al,[esi]
inc esi
L8: cmp al,1fH
jbe L13
L9: cmp al,0dfH
ja L16
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and al,07H
shr ecx,05H
mov ebx,eax
mov al,[esi]
lea eax,[ebx+eax*8]
inc esi
L10: sub edx,eax
add ecx,00000002H
xchg edx,esi
cmp esi,+30H[esp]
jb L22
lea ebx,[edi+ecx]
cmp [esp],ebx
jb L21
cmp ecx,00000006H
jb L11
cmp eax,00000004H
jb L11
mov al,cl
shr ecx,02H
repe movsd
and al,03H
mov cl,al
L11: repe movsb
mov esi,edx
L12: mov cl,-2H[esi]
and ecx,00000003H
je L3
mov eax,[esi]
add esi,ecx
mov [edi],eax
add edi,ecx
xor eax,eax
mov al,[esi]
inc esi
jmp L8
L13: lea edx,+3H[edi]
cmp [esp],edx
jb L21
shr eax,02H
lea edx,-801H[edi]
mov ecx,eax
mov al,[esi]
inc esi
lea eax,[ecx+eax*8]
sub edx,eax
cmp edx,+30H[esp]
jb L22
mov eax,[edx]
mov [edi],eax
add edi,00000003H
jmp L12
L14: mov al,[esi]
inc esi
or al,al
jne L15
add ecx,000000ffH
jmp L14
L15: lea ecx,+1fH[eax+ecx]
jmp L17
lea esi,+0H[esi]
L16: and al,1fH
mov ecx,eax
je L14
L17: mov edx,edi
mov ax,[esi]
add esi,00000002H
shr eax,02H
jne L10
cmp ecx,00000001H
setne al
cmp edi,[esp]
ja L21
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L20
jb L19
L18: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L18
L19: mov eax,00000008H
jmp L18
L20: mov eax,00000004H
jmp L18
L21: mov eax,00000005H
jmp L18
L22: mov eax,00000006H
jmp L18
lea esi,+0H[esi]
end
+195
View File
@@ -0,0 +1,195 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1x_decompress_asm_fast
_lzo1x_decompress_asm_fast:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
xor eax,eax
xor ebx,ebx
lodsb
cmp al,11H
jbe L6
sub al,0eH
jmp L7
L3: add eax,000000ffH
L4: mov bl,[esi]
inc esi
or bl,bl
je L3
lea eax,+15H[eax+ebx]
jmp L7
mov esi,esi
L5: mov al,[esi]
inc esi
L6: cmp al,10H
jae L9
or al,al
je L4
add eax,00000006H
L7: mov ecx,eax
xor eax,ebp
shr ecx,02H
and eax,ebp
L8: mov edx,[esi]
add esi,00000004H
mov [edi],edx
add edi,00000004H
dec ecx
jne L8
sub esi,eax
sub edi,eax
mov al,[esi]
inc esi
cmp al,10H
jae L9
shr eax,02H
mov bl,[esi]
lea edx,-801H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
mov ecx,[edx]
mov [edi],ecx
add edi,ebp
jmp L16
L9: cmp al,40H
jb L12
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and eax,00000007H
mov bl,[esi]
shr ecx,05H
lea eax,[eax+ebx*8]
inc esi
sub edx,eax
add ecx,00000004H
cmp eax,ebp
jae L14
jmp L17
L10: add eax,000000ffH
L11: mov bl,[esi]
inc esi
or bl,bl
je L10
lea ecx,+24H[eax+ebx]
xor eax,eax
jmp L13
nop
L12: cmp al,20H
jb L20
and eax,0000001fH
je L11
lea ecx,+5H[eax]
L13: mov ax,[esi]
lea edx,-1H[edi]
shr eax,02H
add esi,00000002H
sub edx,eax
cmp eax,ebp
jb L17
L14: lea eax,-3H[edi+ecx]
shr ecx,02H
L15: mov ebx,[edx]
add edx,00000004H
mov [edi],ebx
add edi,00000004H
dec ecx
jne L15
mov edi,eax
xor ebx,ebx
L16: mov al,-2H[esi]
and eax,ebp
je L5
mov edx,[esi]
add esi,eax
mov [edi],edx
add edi,eax
mov al,[esi]
inc esi
jmp L9
lea esi,+0H[esi]
L17: xchg edx,esi
sub ecx,ebp
repe movsb
mov esi,edx
jmp L16
L18: add ecx,000000ffH
L19: mov bl,[esi]
inc esi
or bl,bl
je L18
lea ecx,+0cH[ebx+ecx]
jmp L21
lea esi,+0H[esi]
L20: cmp al,10H
jb L22
mov ecx,eax
and eax,00000008H
shl eax,0dH
and ecx,00000007H
je L19
add ecx,00000005H
L21: mov ax,[esi]
add esi,00000002H
lea edx,-4000H[edi]
shr eax,02H
je L23
sub edx,eax
jmp L14
lea esi,+0H[esi]
L22: shr eax,02H
mov bl,[esi]
lea edx,-1H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
mov al,[edx]
mov [edi],al
mov bl,+1H[edx]
mov +1H[edi],bl
add edi,00000002H
jmp L16
L23: cmp ecx,00000006H
setne al
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L26
jb L25
L24: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L24
L25: mov eax,00000008H
jmp L24
L26: mov eax,00000004H
jmp L24
nop
end
+250
View File
@@ -0,0 +1,250 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1x_decompress_asm_fast_safe
_lzo1x_decompress_asm_fast_safe:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
lea eax,-3H[esi]
add eax,+2cH[esp]
mov +4H[esp],eax
mov eax,edi
mov edx,+34H[esp]
add eax,[edx]
mov [esp],eax
xor eax,eax
xor ebx,ebx
lodsb
cmp al,11H
jbe L6
sub al,0eH
jmp L7
L3: add eax,000000ffH
lea edx,+12H[esi+eax]
cmp +4H[esp],edx
jb L26
L4: mov bl,[esi]
inc esi
or bl,bl
je L3
lea eax,+15H[eax+ebx]
jmp L7
lea esi,+0H[esi]
L5: cmp +4H[esp],esi
jb L26
mov al,[esi]
inc esi
L6: cmp al,10H
jae L9
or al,al
je L4
add eax,00000006H
L7: lea edx,-3H[edi+eax]
cmp [esp],edx
jb L27
lea edx,-3H[esi+eax]
cmp +4H[esp],edx
jb L26
mov ecx,eax
xor eax,ebp
shr ecx,02H
and eax,ebp
L8: mov edx,[esi]
add esi,00000004H
mov [edi],edx
add edi,00000004H
dec ecx
jne L8
sub esi,eax
sub edi,eax
mov al,[esi]
inc esi
cmp al,10H
jae L9
lea edx,+3H[edi]
cmp [esp],edx
jb L27
shr eax,02H
mov bl,[esi]
lea edx,-801H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
cmp edx,+30H[esp]
jb L28
mov ecx,[edx]
mov [edi],ecx
add edi,ebp
jmp L16
mov esi,esi
L9: cmp al,40H
jb L12
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and eax,00000007H
mov bl,[esi]
shr ecx,05H
lea eax,[eax+ebx*8]
inc esi
sub edx,eax
add ecx,00000004H
cmp eax,ebp
jae L14
jmp L17
L10: add eax,000000ffH
lea edx,+3H[esi]
cmp +4H[esp],edx
jb L26
L11: mov bl,[esi]
inc esi
or bl,bl
je L10
lea ecx,+24H[eax+ebx]
xor eax,eax
jmp L13
nop
L12: cmp al,20H
jb L20
and eax,0000001fH
je L11
lea ecx,+5H[eax]
L13: mov ax,[esi]
lea edx,-1H[edi]
shr eax,02H
add esi,00000002H
sub edx,eax
cmp eax,ebp
jb L17
L14: cmp edx,+30H[esp]
jb L28
lea eax,-3H[edi+ecx]
shr ecx,02H
cmp [esp],eax
jb L27
L15: mov ebx,[edx]
add edx,00000004H
mov [edi],ebx
add edi,00000004H
dec ecx
jne L15
mov edi,eax
xor ebx,ebx
L16: mov al,-2H[esi]
and eax,ebp
je L5
lea edx,[edi+eax]
cmp [esp],edx
jb L27
lea edx,[esi+eax]
cmp +4H[esp],edx
jb L26
mov edx,[esi]
add esi,eax
mov [edi],edx
add edi,eax
mov al,[esi]
inc esi
jmp L9
lea esi,+0H[esi]
L17: cmp edx,+30H[esp]
jb L28
lea eax,-3H[edi+ecx]
cmp [esp],eax
jb L27
xchg edx,esi
sub ecx,ebp
repe movsb
mov esi,edx
jmp L16
L18: add ecx,000000ffH
lea edx,+3H[esi]
cmp +4H[esp],edx
jb L26
L19: mov bl,[esi]
inc esi
or bl,bl
je L18
lea ecx,+0cH[ebx+ecx]
jmp L21
lea esi,+0H[esi]
L20: cmp al,10H
jb L22
mov ecx,eax
and eax,00000008H
shl eax,0dH
and ecx,00000007H
je L19
add ecx,00000005H
L21: mov ax,[esi]
add esi,00000002H
lea edx,-4000H[edi]
shr eax,02H
je L23
sub edx,eax
jmp L14
lea esi,+0H[esi]
L22: lea edx,+2H[edi]
cmp [esp],edx
jb L27
shr eax,02H
mov bl,[esi]
lea edx,-1H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
cmp edx,+30H[esp]
jb L28
mov al,[edx]
mov [edi],al
mov bl,+1H[edx]
mov +1H[edi],bl
add edi,00000002H
jmp L16
L23: cmp ecx,00000006H
setne al
cmp edi,[esp]
ja L27
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L26
jb L25
L24: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L24
L25: mov eax,00000008H
jmp L24
L26: mov eax,00000004H
jmp L24
L27: mov eax,00000005H
jmp L24
L28: mov eax,00000006H
jmp L24
end
+210
View File
@@ -0,0 +1,210 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1x_decompress_asm
_lzo1x_decompress_asm:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
xor eax,eax
xor ebx,ebx
lodsb
cmp al,11H
jbe L6
sub al,11H
cmp al,04H
jae L7
mov ecx,eax
jmp L9
L3: add eax,000000ffH
L4: mov bl,[esi]
inc esi
or bl,bl
je L3
lea eax,+12H[eax+ebx]
jmp L7
lea esi,+0H[esi]
L5: mov al,[esi]
inc esi
L6: cmp al,10H
jae L10
or al,al
je L4
add eax,00000003H
L7: mov ecx,eax
shr eax,02H
and ecx,ebp
L8: mov edx,[esi]
add esi,00000004H
mov [edi],edx
add edi,00000004H
dec eax
jne L8
L9: repe movsb
mov al,[esi]
inc esi
cmp al,10H
jae L10
shr eax,02H
mov bl,[esi]
lea edx,-801H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
mov al,[edx]
mov [edi],al
mov al,+1H[edx]
mov +1H[edi],al
mov al,+2H[edx]
mov +2H[edi],al
add edi,ebp
jmp L18
L10: cmp al,40H
jb L13
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and eax,00000007H
mov bl,[esi]
shr ecx,05H
lea eax,[eax+ebx*8]
inc esi
sub edx,eax
inc ecx
cmp eax,ebp
jae L15
jmp L20
L11: add eax,000000ffH
L12: mov bl,[esi]
inc esi
or bl,bl
je L11
lea ecx,+21H[eax+ebx]
xor eax,eax
jmp L14
lea esi,+0H[esi]
L13: cmp al,20H
jb L23
and eax,0000001fH
je L12
lea ecx,+2H[eax]
L14: mov ax,[esi]
lea edx,-1H[edi]
shr eax,02H
add esi,00000002H
sub edx,eax
cmp eax,ebp
jb L20
L15: mov ebx,ecx
shr ebx,02H
je L17
L16: mov eax,[edx]
add edx,00000004H
mov [edi],eax
add edi,00000004H
dec ebx
jne L16
and ecx,ebp
je L18
L17: mov al,[edx]
inc edx
mov [edi],al
inc edi
dec ecx
jne L17
L18: mov al,-2H[esi]
and eax,ebp
je L5
L19: mov cl,[esi]
inc esi
mov [edi],cl
inc edi
dec eax
jne L19
mov al,[esi]
inc esi
jmp L10
nop
lea esi,+0H[esi]
L20: xchg edx,esi
repe movsb
mov esi,edx
jmp L18
L21: add ecx,000000ffH
L22: mov bl,[esi]
inc esi
or bl,bl
je L21
lea ecx,+9H[ebx+ecx]
jmp L24
nop
lea esi,+0H[esi]
L23: cmp al,10H
jb L25
mov ecx,eax
and eax,00000008H
shl eax,0dH
and ecx,00000007H
je L22
add ecx,00000002H
L24: mov ax,[esi]
add esi,00000002H
lea edx,-4000H[edi]
shr eax,02H
je L26
sub edx,eax
jmp L15
lea esi,+0H[esi]
L25: shr eax,02H
mov bl,[esi]
lea edx,-1H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
mov al,[edx]
mov [edi],al
mov bl,+1H[edx]
mov +1H[edi],bl
add edi,00000002H
jmp L18
L26: cmp ecx,00000003H
setne al
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L29
jb L28
L27: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L27
L28: mov eax,00000008H
jmp L27
L29: mov eax,00000004H
jmp L27
nop
end
+270
View File
@@ -0,0 +1,270 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1x_decompress_asm_safe
_lzo1x_decompress_asm_safe:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
lea eax,-3H[esi]
add eax,+2cH[esp]
mov +4H[esp],eax
mov eax,edi
mov edx,+34H[esp]
add eax,[edx]
mov [esp],eax
xor eax,eax
xor ebx,ebx
lodsb
cmp al,11H
jbe L6
sub al,11H
cmp al,04H
jae L7
lea edx,[edi+eax]
cmp [esp],edx
jb L30
lea edx,[esi+eax]
cmp +4H[esp],edx
jb L29
mov ecx,eax
jmp L9
L3: add eax,000000ffH
lea edx,+12H[esi+eax]
cmp +4H[esp],edx
jb L29
L4: mov bl,[esi]
inc esi
or bl,bl
je L3
lea eax,+12H[eax+ebx]
jmp L7
lea esi,+0H[esi]
L5: cmp +4H[esp],esi
jb L29
mov al,[esi]
inc esi
L6: cmp al,10H
jae L10
or al,al
je L4
add eax,00000003H
L7: lea edx,+0H[edi+eax]
cmp [esp],edx
jb L30
lea edx,+0H[esi+eax]
cmp +4H[esp],edx
jb L29
mov ecx,eax
shr eax,02H
and ecx,ebp
L8: mov edx,[esi]
add esi,00000004H
mov [edi],edx
add edi,00000004H
dec eax
jne L8
L9: repe movsb
mov al,[esi]
inc esi
cmp al,10H
jae L10
lea edx,+3H[edi]
cmp [esp],edx
jb L30
shr eax,02H
mov bl,[esi]
lea edx,-801H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
cmp edx,+30H[esp]
jb L31
mov al,[edx]
mov [edi],al
mov al,+1H[edx]
mov +1H[edi],al
mov al,+2H[edx]
mov +2H[edi],al
add edi,ebp
jmp L18
mov esi,esi
L10: cmp al,40H
jb L13
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and eax,00000007H
mov bl,[esi]
shr ecx,05H
lea eax,[eax+ebx*8]
inc esi
sub edx,eax
inc ecx
cmp eax,ebp
jae L15
jmp L20
L11: add eax,000000ffH
lea edx,+3H[esi]
cmp +4H[esp],edx
jb L29
L12: mov bl,[esi]
inc esi
or bl,bl
je L11
lea ecx,+21H[eax+ebx]
xor eax,eax
jmp L14
lea esi,+0H[esi]
L13: cmp al,20H
jb L23
and eax,0000001fH
je L12
lea ecx,+2H[eax]
L14: mov ax,[esi]
lea edx,-1H[edi]
shr eax,02H
add esi,00000002H
sub edx,eax
cmp eax,ebp
jb L20
L15: cmp edx,+30H[esp]
jb L31
lea eax,[edi+ecx]
cmp [esp],eax
jb L30
mov ebx,ecx
shr ebx,02H
je L17
L16: mov eax,[edx]
add edx,00000004H
mov [edi],eax
add edi,00000004H
dec ebx
jne L16
and ecx,ebp
je L18
L17: mov al,[edx]
inc edx
mov [edi],al
inc edi
dec ecx
jne L17
L18: mov al,-2H[esi]
and eax,ebp
je L5
lea edx,[edi+eax]
cmp [esp],edx
jb L30
lea edx,[esi+eax]
cmp +4H[esp],edx
jb L29
L19: mov cl,[esi]
inc esi
mov [edi],cl
inc edi
dec eax
jne L19
mov al,[esi]
inc esi
jmp L10
mov esi,esi
L20: cmp edx,+30H[esp]
jb L31
lea eax,+0H[edi+ecx]
cmp [esp],eax
jb L30
xchg edx,esi
repe movsb
mov esi,edx
jmp L18
L21: add ecx,000000ffH
lea edx,+3H[esi]
cmp +4H[esp],edx
jb L29
L22: mov bl,[esi]
inc esi
or bl,bl
je L21
lea ecx,+9H[ebx+ecx]
jmp L24
nop
L23: cmp al,10H
jb L25
mov ecx,eax
and eax,00000008H
shl eax,0dH
and ecx,00000007H
je L22
add ecx,00000002H
L24: mov ax,[esi]
add esi,00000002H
lea edx,-4000H[edi]
shr eax,02H
je L26
sub edx,eax
jmp L15
lea esi,+0H[esi]
L25: lea edx,+2H[edi]
cmp [esp],edx
jb L30
shr eax,02H
mov bl,[esi]
lea edx,-1H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
cmp edx,+30H[esp]
jb L31
mov al,[edx]
mov [edi],al
mov bl,+1H[edx]
mov +1H[edi],bl
add edi,00000002H
jmp L18
L26: cmp ecx,00000003H
setne al
cmp edi,[esp]
ja L30
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L29
jb L28
L27: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L27
L28: mov eax,00000008H
jmp L27
L29: mov eax,00000004H
jmp L27
L30: mov eax,00000005H
jmp L27
L31: mov eax,00000006H
jmp L27
end
+195
View File
@@ -0,0 +1,195 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1y_decompress_asm_fast
_lzo1y_decompress_asm_fast:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
xor eax,eax
xor ebx,ebx
lodsb
cmp al,11H
jbe L6
sub al,0eH
jmp L7
L3: add eax,000000ffH
L4: mov bl,[esi]
inc esi
or bl,bl
je L3
lea eax,+15H[eax+ebx]
jmp L7
mov esi,esi
L5: mov al,[esi]
inc esi
L6: cmp al,10H
jae L9
or al,al
je L4
add eax,00000006H
L7: mov ecx,eax
xor eax,ebp
shr ecx,02H
and eax,ebp
L8: mov edx,[esi]
add esi,00000004H
mov [edi],edx
add edi,00000004H
dec ecx
jne L8
sub esi,eax
sub edi,eax
mov al,[esi]
inc esi
cmp al,10H
jae L9
shr eax,02H
mov bl,[esi]
lea edx,-401H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
mov ecx,[edx]
mov [edi],ecx
add edi,ebp
jmp L16
L9: cmp al,40H
jb L12
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and eax,ebp
mov bl,[esi]
shr ecx,04H
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
add ecx,00000002H
cmp eax,ebp
jae L14
jmp L17
L10: add eax,000000ffH
L11: mov bl,[esi]
inc esi
or bl,bl
je L10
lea ecx,+24H[eax+ebx]
xor eax,eax
jmp L13
mov esi,esi
L12: cmp al,20H
jb L20
and eax,0000001fH
je L11
lea ecx,+5H[eax]
L13: mov ax,[esi]
lea edx,-1H[edi]
shr eax,02H
add esi,00000002H
sub edx,eax
cmp eax,ebp
jb L17
L14: lea eax,-3H[edi+ecx]
shr ecx,02H
L15: mov ebx,[edx]
add edx,00000004H
mov [edi],ebx
add edi,00000004H
dec ecx
jne L15
mov edi,eax
xor ebx,ebx
L16: mov al,-2H[esi]
and eax,ebp
je L5
mov edx,[esi]
add esi,eax
mov [edi],edx
add edi,eax
mov al,[esi]
inc esi
jmp L9
lea esi,+0H[esi]
L17: xchg edx,esi
sub ecx,ebp
repe movsb
mov esi,edx
jmp L16
L18: add ecx,000000ffH
L19: mov bl,[esi]
inc esi
or bl,bl
je L18
lea ecx,+0cH[ebx+ecx]
jmp L21
lea esi,+0H[esi]
L20: cmp al,10H
jb L22
mov ecx,eax
and eax,00000008H
shl eax,0dH
and ecx,00000007H
je L19
add ecx,00000005H
L21: mov ax,[esi]
add esi,00000002H
lea edx,-4000H[edi]
shr eax,02H
je L23
sub edx,eax
jmp L14
lea esi,+0H[esi]
L22: shr eax,02H
mov bl,[esi]
lea edx,-1H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
mov al,[edx]
mov [edi],al
mov bl,+1H[edx]
mov +1H[edi],bl
add edi,00000002H
jmp L16
L23: cmp ecx,00000006H
setne al
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L26
jb L25
L24: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L24
L25: mov eax,00000008H
jmp L24
L26: mov eax,00000004H
jmp L24
nop
end
+250
View File
@@ -0,0 +1,250 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1y_decompress_asm_fast_safe
_lzo1y_decompress_asm_fast_safe:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
lea eax,-3H[esi]
add eax,+2cH[esp]
mov +4H[esp],eax
mov eax,edi
mov edx,+34H[esp]
add eax,[edx]
mov [esp],eax
xor eax,eax
xor ebx,ebx
lodsb
cmp al,11H
jbe L6
sub al,0eH
jmp L7
L3: add eax,000000ffH
lea edx,+12H[esi+eax]
cmp +4H[esp],edx
jb L26
L4: mov bl,[esi]
inc esi
or bl,bl
je L3
lea eax,+15H[eax+ebx]
jmp L7
lea esi,+0H[esi]
L5: cmp +4H[esp],esi
jb L26
mov al,[esi]
inc esi
L6: cmp al,10H
jae L9
or al,al
je L4
add eax,00000006H
L7: lea edx,-3H[edi+eax]
cmp [esp],edx
jb L27
lea edx,-3H[esi+eax]
cmp +4H[esp],edx
jb L26
mov ecx,eax
xor eax,ebp
shr ecx,02H
and eax,ebp
L8: mov edx,[esi]
add esi,00000004H
mov [edi],edx
add edi,00000004H
dec ecx
jne L8
sub esi,eax
sub edi,eax
mov al,[esi]
inc esi
cmp al,10H
jae L9
lea edx,+3H[edi]
cmp [esp],edx
jb L27
shr eax,02H
mov bl,[esi]
lea edx,-401H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
cmp edx,+30H[esp]
jb L28
mov ecx,[edx]
mov [edi],ecx
add edi,ebp
jmp L16
mov esi,esi
L9: cmp al,40H
jb L12
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and eax,ebp
mov bl,[esi]
shr ecx,04H
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
add ecx,00000002H
cmp eax,ebp
jae L14
jmp L17
L10: add eax,000000ffH
lea edx,+3H[esi]
cmp +4H[esp],edx
jb L26
L11: mov bl,[esi]
inc esi
or bl,bl
je L10
lea ecx,+24H[eax+ebx]
xor eax,eax
jmp L13
mov esi,esi
L12: cmp al,20H
jb L20
and eax,0000001fH
je L11
lea ecx,+5H[eax]
L13: mov ax,[esi]
lea edx,-1H[edi]
shr eax,02H
add esi,00000002H
sub edx,eax
cmp eax,ebp
jb L17
L14: cmp edx,+30H[esp]
jb L28
lea eax,-3H[edi+ecx]
shr ecx,02H
cmp [esp],eax
jb L27
L15: mov ebx,[edx]
add edx,00000004H
mov [edi],ebx
add edi,00000004H
dec ecx
jne L15
mov edi,eax
xor ebx,ebx
L16: mov al,-2H[esi]
and eax,ebp
je L5
lea edx,[edi+eax]
cmp [esp],edx
jb L27
lea edx,[esi+eax]
cmp +4H[esp],edx
jb L26
mov edx,[esi]
add esi,eax
mov [edi],edx
add edi,eax
mov al,[esi]
inc esi
jmp L9
lea esi,+0H[esi]
L17: cmp edx,+30H[esp]
jb L28
lea eax,-3H[edi+ecx]
cmp [esp],eax
jb L27
xchg edx,esi
sub ecx,ebp
repe movsb
mov esi,edx
jmp L16
L18: add ecx,000000ffH
lea edx,+3H[esi]
cmp +4H[esp],edx
jb L26
L19: mov bl,[esi]
inc esi
or bl,bl
je L18
lea ecx,+0cH[ebx+ecx]
jmp L21
lea esi,+0H[esi]
L20: cmp al,10H
jb L22
mov ecx,eax
and eax,00000008H
shl eax,0dH
and ecx,00000007H
je L19
add ecx,00000005H
L21: mov ax,[esi]
add esi,00000002H
lea edx,-4000H[edi]
shr eax,02H
je L23
sub edx,eax
jmp L14
lea esi,+0H[esi]
L22: lea edx,+2H[edi]
cmp [esp],edx
jb L27
shr eax,02H
mov bl,[esi]
lea edx,-1H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
cmp edx,+30H[esp]
jb L28
mov al,[edx]
mov [edi],al
mov bl,+1H[edx]
mov +1H[edi],bl
add edi,00000002H
jmp L16
L23: cmp ecx,00000006H
setne al
cmp edi,[esp]
ja L27
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L26
jb L25
L24: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L24
L25: mov eax,00000008H
jmp L24
L26: mov eax,00000004H
jmp L24
L27: mov eax,00000005H
jmp L24
L28: mov eax,00000006H
jmp L24
end
+210
View File
@@ -0,0 +1,210 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1y_decompress_asm
_lzo1y_decompress_asm:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
xor eax,eax
xor ebx,ebx
lodsb
cmp al,11H
jbe L6
sub al,11H
cmp al,04H
jae L7
mov ecx,eax
jmp L9
L3: add eax,000000ffH
L4: mov bl,[esi]
inc esi
or bl,bl
je L3
lea eax,+12H[eax+ebx]
jmp L7
lea esi,+0H[esi]
L5: mov al,[esi]
inc esi
L6: cmp al,10H
jae L10
or al,al
je L4
add eax,00000003H
L7: mov ecx,eax
shr eax,02H
and ecx,ebp
L8: mov edx,[esi]
add esi,00000004H
mov [edi],edx
add edi,00000004H
dec eax
jne L8
L9: repe movsb
mov al,[esi]
inc esi
cmp al,10H
jae L10
shr eax,02H
mov bl,[esi]
lea edx,-401H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
mov al,[edx]
mov [edi],al
mov al,+1H[edx]
mov +1H[edi],al
mov al,+2H[edx]
mov +2H[edi],al
add edi,ebp
jmp L18
L10: cmp al,40H
jb L13
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and eax,ebp
mov bl,[esi]
shr ecx,04H
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
dec ecx
cmp eax,ebp
jae L15
jmp L20
L11: add eax,000000ffH
L12: mov bl,[esi]
inc esi
or bl,bl
je L11
lea ecx,+21H[eax+ebx]
xor eax,eax
jmp L14
lea esi,+0H[esi]
L13: cmp al,20H
jb L23
and eax,0000001fH
je L12
lea ecx,+2H[eax]
L14: mov ax,[esi]
lea edx,-1H[edi]
shr eax,02H
add esi,00000002H
sub edx,eax
cmp eax,ebp
jb L20
L15: mov ebx,ecx
shr ebx,02H
je L17
L16: mov eax,[edx]
add edx,00000004H
mov [edi],eax
add edi,00000004H
dec ebx
jne L16
and ecx,ebp
je L18
L17: mov al,[edx]
inc edx
mov [edi],al
inc edi
dec ecx
jne L17
L18: mov al,-2H[esi]
and eax,ebp
je L5
L19: mov cl,[esi]
inc esi
mov [edi],cl
inc edi
dec eax
jne L19
mov al,[esi]
inc esi
jmp L10
nop
lea esi,+0H[esi]
L20: xchg edx,esi
repe movsb
mov esi,edx
jmp L18
L21: add ecx,000000ffH
L22: mov bl,[esi]
inc esi
or bl,bl
je L21
lea ecx,+9H[ebx+ecx]
jmp L24
nop
lea esi,+0H[esi]
L23: cmp al,10H
jb L25
mov ecx,eax
and eax,00000008H
shl eax,0dH
and ecx,00000007H
je L22
add ecx,00000002H
L24: mov ax,[esi]
add esi,00000002H
lea edx,-4000H[edi]
shr eax,02H
je L26
sub edx,eax
jmp L15
lea esi,+0H[esi]
L25: shr eax,02H
mov bl,[esi]
lea edx,-1H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
mov al,[edx]
mov [edi],al
mov bl,+1H[edx]
mov +1H[edi],bl
add edi,00000002H
jmp L18
L26: cmp ecx,00000003H
setne al
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L29
jb L28
L27: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L27
L28: mov eax,00000008H
jmp L27
L29: mov eax,00000004H
jmp L27
nop
end
+270
View File
@@ -0,0 +1,270 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1y_decompress_asm_safe
_lzo1y_decompress_asm_safe:
push ebp
push edi
push esi
push ebx
push ecx
push edx
sub esp,0000000cH
cld
mov esi,+28H[esp]
mov edi,+30H[esp]
mov ebp,00000003H
lea eax,-3H[esi]
add eax,+2cH[esp]
mov +4H[esp],eax
mov eax,edi
mov edx,+34H[esp]
add eax,[edx]
mov [esp],eax
xor eax,eax
xor ebx,ebx
lodsb
cmp al,11H
jbe L6
sub al,11H
cmp al,04H
jae L7
lea edx,[edi+eax]
cmp [esp],edx
jb L30
lea edx,[esi+eax]
cmp +4H[esp],edx
jb L29
mov ecx,eax
jmp L9
L3: add eax,000000ffH
lea edx,+12H[esi+eax]
cmp +4H[esp],edx
jb L29
L4: mov bl,[esi]
inc esi
or bl,bl
je L3
lea eax,+12H[eax+ebx]
jmp L7
lea esi,+0H[esi]
L5: cmp +4H[esp],esi
jb L29
mov al,[esi]
inc esi
L6: cmp al,10H
jae L10
or al,al
je L4
add eax,00000003H
L7: lea edx,+0H[edi+eax]
cmp [esp],edx
jb L30
lea edx,+0H[esi+eax]
cmp +4H[esp],edx
jb L29
mov ecx,eax
shr eax,02H
and ecx,ebp
L8: mov edx,[esi]
add esi,00000004H
mov [edi],edx
add edi,00000004H
dec eax
jne L8
L9: repe movsb
mov al,[esi]
inc esi
cmp al,10H
jae L10
lea edx,+3H[edi]
cmp [esp],edx
jb L30
shr eax,02H
mov bl,[esi]
lea edx,-401H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
cmp edx,+30H[esp]
jb L31
mov al,[edx]
mov [edi],al
mov al,+1H[edx]
mov +1H[edi],al
mov al,+2H[edx]
mov +2H[edi],al
add edi,ebp
jmp L18
mov esi,esi
L10: cmp al,40H
jb L13
mov ecx,eax
shr eax,02H
lea edx,-1H[edi]
and eax,ebp
mov bl,[esi]
shr ecx,04H
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
dec ecx
cmp eax,ebp
jae L15
jmp L20
L11: add eax,000000ffH
lea edx,+3H[esi]
cmp +4H[esp],edx
jb L29
L12: mov bl,[esi]
inc esi
or bl,bl
je L11
lea ecx,+21H[eax+ebx]
xor eax,eax
jmp L14
lea esi,+0H[esi]
L13: cmp al,20H
jb L23
and eax,0000001fH
je L12
lea ecx,+2H[eax]
L14: mov ax,[esi]
lea edx,-1H[edi]
shr eax,02H
add esi,00000002H
sub edx,eax
cmp eax,ebp
jb L20
L15: cmp edx,+30H[esp]
jb L31
lea eax,[edi+ecx]
cmp [esp],eax
jb L30
mov ebx,ecx
shr ebx,02H
je L17
L16: mov eax,[edx]
add edx,00000004H
mov [edi],eax
add edi,00000004H
dec ebx
jne L16
and ecx,ebp
je L18
L17: mov al,[edx]
inc edx
mov [edi],al
inc edi
dec ecx
jne L17
L18: mov al,-2H[esi]
and eax,ebp
je L5
lea edx,[edi+eax]
cmp [esp],edx
jb L30
lea edx,[esi+eax]
cmp +4H[esp],edx
jb L29
L19: mov cl,[esi]
inc esi
mov [edi],cl
inc edi
dec eax
jne L19
mov al,[esi]
inc esi
jmp L10
mov esi,esi
L20: cmp edx,+30H[esp]
jb L31
lea eax,+0H[edi+ecx]
cmp [esp],eax
jb L30
xchg edx,esi
repe movsb
mov esi,edx
jmp L18
L21: add ecx,000000ffH
lea edx,+3H[esi]
cmp +4H[esp],edx
jb L29
L22: mov bl,[esi]
inc esi
or bl,bl
je L21
lea ecx,+9H[ebx+ecx]
jmp L24
nop
L23: cmp al,10H
jb L25
mov ecx,eax
and eax,00000008H
shl eax,0dH
and ecx,00000007H
je L22
add ecx,00000002H
L24: mov ax,[esi]
add esi,00000002H
lea edx,-4000H[edi]
shr eax,02H
je L26
sub edx,eax
jmp L15
lea esi,+0H[esi]
L25: lea edx,+2H[edi]
cmp [esp],edx
jb L30
shr eax,02H
mov bl,[esi]
lea edx,-1H[edi]
lea eax,[eax+ebx*4]
inc esi
sub edx,eax
cmp edx,+30H[esp]
jb L31
mov al,[edx]
mov [edi],al
mov bl,+1H[edx]
mov +1H[edi],bl
add edi,00000002H
jmp L18
L26: cmp ecx,00000003H
setne al
cmp edi,[esp]
ja L30
mov edx,+28H[esp]
add edx,+2cH[esp]
cmp esi,edx
ja L29
jb L28
L27: sub edi,+30H[esp]
mov edx,+34H[esp]
mov [edx],edi
neg eax
add esp,0000000cH
pop edx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax,00000001H
jmp L27
L28: mov eax,00000008H
jmp L27
L29: mov eax,00000004H
jmp L27
L30: mov eax,00000005H
jmp L27
L31: mov eax,00000006H
jmp L27
end
+140
View File
@@ -0,0 +1,140 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1c_decompress_asm
_lzo1c_decompress_asm:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 144
db 49, 192
db 138, 6
db 70
db 60, 32
db 115, 15
db 8, 192
db 116, 51
db 137, 193
db 243, 164
db 138, 6
db 70
db 60, 32
db 114, 72
db 60, 64
db 114, 93
db 137, 193
db 36, 31
db 141, 87, 255
db 193, 233, 5
db 41, 194
db 138, 6
db 70
db 193, 224, 5
db 41, 194
db 65
db 135, 242
db 243, 164
db 137, 214
db 235, 199
db 141, 180, 38, 0, 0, 0, 0
db 138, 6
db 70
db 141, 72, 32
db 60, 248
db 114, 197
db 185, 24, 1, 0, 0
db 44, 248
db 116, 6
db 145
db 48, 192
db 211, 224
db 145
db 243, 164
db 235, 163
db 141, 118, 0
db 141, 87, 255
db 41, 194
db 138, 6
db 70
db 193, 224, 5
db 41, 194
db 135, 242
db 164
db 164
db 164
db 137, 214
db 164
db 49, 192
db 235, 152
db 36, 31
db 137, 193
db 117, 19
db 177, 31
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 1, 193
db 138, 6
db 70
db 137, 195
db 36, 63
db 137, 250
db 41, 194
db 138, 6
db 70
db 193, 224, 6
db 41, 194
db 57, 250
db 116, 27
db 135, 214
db 141, 73, 3
db 243, 164
db 137, 214
db 49, 192
db 193, 235, 6
db 137, 217
db 15, 133, 80, 255, 255, 255
db 233, 60, 255, 255, 255
db 131, 249, 1
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+181
View File
@@ -0,0 +1,181 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1c_decompress_asm_safe
_lzo1c_decompress_asm_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 141, 118, 0
db 49, 192
db 138, 6
db 70
db 60, 32
db 115, 40
db 8, 192
db 116, 99
db 137, 193
db 141, 28, 15
db 57, 28, 36
db 15, 130, 107, 1, 0, 0
db 141, 28, 14
db 57, 92, 36, 4
db 15, 130, 87, 1, 0, 0
db 243, 164
db 138, 6
db 70
db 60, 32
db 114, 127
db 60, 64
db 15, 130, 169, 0, 0, 0
db 137, 193
db 36, 31
db 141, 87, 255
db 193, 233, 5
db 41, 194
db 138, 6
db 70
db 193, 224, 5
db 41, 194
db 65
db 135, 242
db 59, 116, 36, 48
db 15, 130, 51, 1, 0, 0
db 141, 28, 15
db 57, 28, 36
db 15, 130, 32, 1, 0, 0
db 243, 164
db 137, 214
db 235, 148
db 141, 116, 38, 0
db 138, 6
db 70
db 141, 72, 32
db 60, 248
db 114, 149
db 185, 24, 1, 0, 0
db 44, 248
db 116, 6
db 145
db 48, 192
db 211, 224
db 145
db 141, 28, 15
db 57, 28, 36
db 15, 130, 241, 0, 0, 0
db 141, 28, 14
db 57, 92, 36, 4
db 15, 130, 221, 0, 0, 0
db 243, 164
db 233, 87, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 141, 87, 255
db 41, 194
db 138, 6
db 70
db 193, 224, 5
db 41, 194
db 135, 242
db 59, 116, 36, 48
db 15, 130, 196, 0, 0, 0
db 141, 95, 4
db 57, 28, 36
db 15, 130, 177, 0, 0, 0
db 164
db 164
db 164
db 137, 214
db 164
db 49, 192
db 233, 72, 255, 255, 255
db 36, 31
db 137, 193
db 117, 26
db 177, 31
db 138, 6
db 70
db 8, 192
db 117, 15
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 180, 38, 0, 0, 0, 0
db 1, 193
db 138, 6
db 70
db 137, 195
db 36, 63
db 137, 250
db 41, 194
db 138, 6
db 70
db 193, 224, 6
db 41, 194
db 57, 250
db 116, 41
db 135, 214
db 141, 73, 3
db 59, 116, 36, 48
db 114, 105
db 141, 4, 15
db 57, 4, 36
db 114, 90
db 243, 164
db 137, 214
db 49, 192
db 193, 235, 6
db 137, 217
db 15, 133, 210, 254, 255, 255
db 233, 190, 254, 255, 255
db 131, 249, 1
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+141
View File
@@ -0,0 +1,141 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1f_decompress_asm_fast
_lzo1f_decompress_asm_fast:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 144
db 49, 192
db 138, 6
db 70
db 60, 31
db 119, 51
db 8, 192
db 137, 193
db 117, 19
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 76, 8, 31
db 136, 200
db 193, 233, 2
db 243, 165
db 36, 3
db 116, 8
db 139, 30
db 1, 198
db 137, 31
db 1, 199
db 138, 6
db 70
db 60, 31
db 118, 88
db 60, 223
db 15, 135, 132, 0, 0, 0
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 36, 7
db 193, 233, 5
db 137, 195
db 138, 6
db 141, 4, 195
db 70
db 41, 194
db 131, 193, 2
db 135, 214
db 131, 249, 6
db 114, 16
db 131, 248, 4
db 114, 11
db 136, 200
db 193, 233, 2
db 243, 165
db 36, 3
db 136, 193
db 243, 164
db 137, 214
db 138, 78, 254
db 131, 225, 3
db 15, 132, 123, 255, 255, 255
db 139, 6
db 1, 206
db 137, 7
db 1, 207
db 49, 192
db 138, 6
db 70
db 235, 164
db 193, 232, 2
db 141, 151, 255, 247, 255, 255
db 137, 193
db 138, 6
db 70
db 141, 4, 193
db 41, 194
db 139, 2
db 137, 7
db 131, 199, 3
db 235, 201
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 76, 8, 31
db 235, 9
db 141, 118, 0
db 36, 31
db 137, 193
db 116, 226
db 137, 250
db 102, 139, 6
db 131, 198, 2
db 193, 232, 2
db 15, 133, 122, 255, 255, 255
db 131, 249, 1
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+170
View File
@@ -0,0 +1,170 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1f_decompress_asm_fast_safe
_lzo1f_decompress_asm_fast_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 141, 118, 0
db 49, 192
db 138, 6
db 70
db 60, 31
db 119, 76
db 8, 192
db 137, 193
db 117, 19
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 76, 8, 31
db 141, 28, 15
db 57, 28, 36
db 15, 130, 61, 1, 0, 0
db 141, 28, 14
db 57, 92, 36, 4
db 15, 130, 41, 1, 0, 0
db 136, 200
db 193, 233, 2
db 243, 165
db 36, 3
db 116, 8
db 139, 30
db 1, 198
db 137, 31
db 1, 199
db 138, 6
db 70
db 60, 31
db 118, 110
db 60, 223
db 15, 135, 179, 0, 0, 0
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 36, 7
db 193, 233, 5
db 137, 195
db 138, 6
db 141, 4, 195
db 70
db 41, 194
db 131, 193, 2
db 135, 214
db 59, 116, 36, 48
db 15, 130, 239, 0, 0, 0
db 141, 28, 15
db 57, 28, 36
db 15, 130, 220, 0, 0, 0
db 131, 249, 6
db 114, 16
db 131, 248, 4
db 114, 11
db 136, 200
db 193, 233, 2
db 243, 165
db 36, 3
db 136, 193
db 243, 164
db 137, 214
db 138, 78, 254
db 131, 225, 3
db 15, 132, 76, 255, 255, 255
db 139, 6
db 1, 206
db 137, 7
db 1, 207
db 49, 192
db 138, 6
db 70
db 235, 142
db 141, 87, 3
db 57, 20, 36
db 15, 130, 156, 0, 0, 0
db 193, 232, 2
db 141, 151, 255, 247, 255, 255
db 137, 193
db 138, 6
db 70
db 141, 4, 193
db 41, 194
db 59, 84, 36, 48
db 15, 130, 134, 0, 0, 0
db 139, 2
db 137, 7
db 131, 199, 3
db 235, 179
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 76, 8, 31
db 235, 12
db 141, 182, 0, 0, 0, 0
db 36, 31
db 137, 193
db 116, 223
db 137, 250
db 102, 139, 6
db 131, 198, 2
db 193, 232, 2
db 15, 133, 75, 255, 255, 255
db 131, 249, 1
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+194
View File
@@ -0,0 +1,194 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1x_decompress_asm_fast
_lzo1x_decompress_asm_fast:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 27
db 44, 14
db 235, 34
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 68, 24, 21
db 235, 16
db 137, 246
db 138, 6
db 70
db 60, 16
db 115, 65
db 8, 192
db 116, 230
db 131, 192, 6
db 137, 193
db 49, 232
db 193, 233, 2
db 33, 232
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 73
db 117, 243
db 41, 198
db 41, 199
db 138, 6
db 70
db 60, 16
db 115, 25
db 193, 232, 2
db 138, 30
db 141, 151, 255, 247, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 139, 10
db 137, 15
db 1, 239
db 235, 110
db 60, 64
db 114, 52
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 131, 224, 7
db 138, 30
db 193, 233, 5
db 141, 4, 216
db 70
db 41, 194
db 131, 193, 4
db 57, 232
db 115, 53
db 235, 109
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 76, 24, 36
db 49, 192
db 235, 13
db 144
db 60, 32
db 114, 116
db 131, 224, 31
db 116, 231
db 141, 72, 5
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 58
db 141, 68, 15, 253
db 193, 233, 2
db 139, 26
db 131, 194, 4
db 137, 31
db 131, 199, 4
db 73
db 117, 243
db 137, 199
db 49, 219
db 138, 70, 254
db 33, 232
db 15, 132, 63, 255, 255, 255
db 139, 22
db 1, 198
db 137, 23
db 1, 199
db 138, 6
db 70
db 233, 119, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 135, 214
db 41, 233
db 243, 164
db 137, 214
db 235, 212
db 129, 193, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 243
db 141, 76, 11, 12
db 235, 23
db 141, 118, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 223
db 131, 193, 5
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 43
db 41, 194
db 233, 122, 255, 255, 255
db 141, 116, 38, 0
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 110, 255, 255, 255
db 131, 249, 6
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+250
View File
@@ -0,0 +1,250 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1x_decompress_asm_fast_safe
_lzo1x_decompress_asm_fast_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 55
db 44, 14
db 235, 62
db 5, 255, 0, 0, 0
db 141, 84, 6, 18
db 57, 84, 36, 4
db 15, 130, 78, 2, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 68, 24, 21
db 235, 30
db 141, 182, 0, 0, 0, 0
db 57, 116, 36, 4
db 15, 130, 49, 2, 0, 0
db 138, 6
db 70
db 60, 16
db 115, 119
db 8, 192
db 116, 216
db 131, 192, 6
db 141, 84, 7, 253
db 57, 20, 36
db 15, 130, 29, 2, 0, 0
db 141, 84, 6, 253
db 57, 84, 36, 4
db 15, 130, 8, 2, 0, 0
db 137, 193
db 49, 232
db 193, 233, 2
db 33, 232
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 73
db 117, 243
db 41, 198
db 41, 199
db 138, 6
db 70
db 60, 16
db 115, 52
db 141, 87, 3
db 57, 20, 36
db 15, 130, 226, 1, 0, 0
db 193, 232, 2
db 138, 30
db 141, 151, 255, 247, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 15, 130, 206, 1, 0, 0
db 139, 10
db 137, 15
db 1, 239
db 233, 151, 0, 0, 0
db 137, 246
db 60, 64
db 114, 68
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 131, 224, 7
db 138, 30
db 193, 233, 5
db 141, 4, 216
db 70
db 41, 194
db 131, 193, 4
db 57, 232
db 115, 73
db 233, 170, 0, 0, 0
db 5, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 123, 1, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 231
db 141, 76, 24, 36
db 49, 192
db 235, 17
db 144
db 60, 32
db 15, 130, 200, 0, 0, 0
db 131, 224, 31
db 116, 227
db 141, 72, 5
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 102
db 59, 84, 36, 48
db 15, 130, 77, 1, 0, 0
db 141, 68, 15, 253
db 193, 233, 2
db 57, 4, 36
db 15, 130, 54, 1, 0, 0
db 139, 26
db 131, 194, 4
db 137, 31
db 131, 199, 4
db 73
db 117, 243
db 137, 199
db 49, 219
db 138, 70, 254
db 33, 232
db 15, 132, 216, 254, 255, 255
db 141, 20, 7
db 57, 20, 36
db 15, 130, 14, 1, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 250, 0, 0, 0
db 139, 22
db 1, 198
db 137, 23
db 1, 199
db 138, 6
db 70
db 233, 55, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 59, 84, 36, 48
db 15, 130, 231, 0, 0, 0
db 141, 68, 15, 253
db 57, 4, 36
db 15, 130, 211, 0, 0, 0
db 135, 214
db 41, 233
db 243, 164
db 137, 214
db 235, 164
db 129, 193, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 175, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 76, 11, 12
db 235, 27
db 141, 180, 38, 0, 0, 0, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 219
db 131, 193, 5
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 57
db 41, 194
db 233, 38, 255, 255, 255
db 141, 116, 38, 0
db 141, 87, 2
db 57, 20, 36
db 114, 106
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 114, 93
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 31, 255, 255, 255
db 131, 249, 6
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+209
View File
@@ -0,0 +1,209 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1x_decompress_asm
_lzo1x_decompress_asm:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 35
db 44, 17
db 60, 4
db 115, 40
db 137, 193
db 235, 56
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 68, 24, 18
db 235, 18
db 141, 116, 38, 0
db 138, 6
db 70
db 60, 16
db 115, 73
db 8, 192
db 116, 228
db 131, 192, 3
db 137, 193
db 193, 232, 2
db 33, 233
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 72
db 117, 243
db 243, 164
db 138, 6
db 70
db 60, 16
db 115, 37
db 193, 232, 2
db 138, 30
db 141, 151, 255, 247, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 66, 1
db 136, 71, 1
db 138, 66, 2
db 136, 71, 2
db 1, 239
db 235, 119
db 60, 64
db 114, 52
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 131, 224, 7
db 138, 30
db 193, 233, 5
db 141, 4, 216
db 70
db 41, 194
db 65
db 57, 232
db 115, 55
db 235, 119
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 76, 24, 33
db 49, 192
db 235, 15
db 141, 118, 0
db 60, 32
db 114, 124
db 131, 224, 31
db 116, 229
db 141, 72, 2
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 66
db 137, 203
db 193, 235, 2
db 116, 17
db 139, 2
db 131, 194, 4
db 137, 7
db 131, 199, 4
db 75
db 117, 243
db 33, 233
db 116, 9
db 138, 2
db 66
db 136, 7
db 71
db 73
db 117, 247
db 138, 70, 254
db 33, 232
db 15, 132, 46, 255, 255, 255
db 138, 14
db 70
db 136, 15
db 71
db 72
db 117, 247
db 138, 6
db 70
db 233, 109, 255, 255, 255
db 144
db 141, 116, 38, 0
db 135, 214
db 243, 164
db 137, 214
db 235, 215
db 129, 193, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 243
db 141, 76, 11, 9
db 235, 25
db 144
db 141, 116, 38, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 221
db 131, 193, 2
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 43
db 41, 194
db 233, 114, 255, 255, 255
db 141, 116, 38, 0
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 111, 255, 255, 255
db 131, 249, 3
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+270
View File
@@ -0,0 +1,270 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1x_decompress_asm_safe
_lzo1x_decompress_asm_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 87
db 44, 17
db 60, 4
db 115, 92
db 141, 20, 7
db 57, 20, 36
db 15, 130, 130, 2, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 110, 2, 0, 0
db 137, 193
db 235, 110
db 5, 255, 0, 0, 0
db 141, 84, 6, 18
db 57, 84, 36, 4
db 15, 130, 87, 2, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 68, 24, 18
db 235, 31
db 141, 180, 38, 0, 0, 0, 0
db 57, 116, 36, 4
db 15, 130, 57, 2, 0, 0
db 138, 6
db 70
db 60, 16
db 115, 127
db 8, 192
db 116, 215
db 131, 192, 3
db 141, 84, 7, 0
db 57, 20, 36
db 15, 130, 37, 2, 0, 0
db 141, 84, 6, 0
db 57, 84, 36, 4
db 15, 130, 16, 2, 0, 0
db 137, 193
db 193, 232, 2
db 33, 233
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 72
db 117, 243
db 243, 164
db 138, 6
db 70
db 60, 16
db 115, 64
db 141, 87, 3
db 57, 20, 36
db 15, 130, 238, 1, 0, 0
db 193, 232, 2
db 138, 30
db 141, 151, 255, 247, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 15, 130, 218, 1, 0, 0
db 138, 2
db 136, 7
db 138, 66, 1
db 136, 71, 1
db 138, 66, 2
db 136, 71, 2
db 1, 239
db 233, 163, 0, 0, 0
db 137, 246
db 60, 64
db 114, 68
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 131, 224, 7
db 138, 30
db 193, 233, 5
db 141, 4, 216
db 70
db 41, 194
db 65
db 57, 232
db 115, 75
db 233, 180, 0, 0, 0
db 5, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 125, 1, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 231
db 141, 76, 24, 33
db 49, 192
db 235, 19
db 141, 118, 0
db 60, 32
db 15, 130, 200, 0, 0, 0
db 131, 224, 31
db 116, 225
db 141, 72, 2
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 110
db 59, 84, 36, 48
db 15, 130, 77, 1, 0, 0
db 141, 4, 15
db 57, 4, 36
db 15, 130, 58, 1, 0, 0
db 137, 203
db 193, 235, 2
db 116, 17
db 139, 2
db 131, 194, 4
db 137, 7
db 131, 199, 4
db 75
db 117, 243
db 33, 233
db 116, 9
db 138, 2
db 66
db 136, 7
db 71
db 73
db 117, 247
db 138, 70, 254
db 33, 232
db 15, 132, 196, 254, 255, 255
db 141, 20, 7
db 57, 20, 36
db 15, 130, 2, 1, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 238, 0, 0, 0
db 138, 14
db 70
db 136, 15
db 71
db 72
db 117, 247
db 138, 6
db 70
db 233, 42, 255, 255, 255
db 137, 246
db 59, 84, 36, 48
db 15, 130, 223, 0, 0, 0
db 141, 68, 15, 0
db 57, 4, 36
db 15, 130, 203, 0, 0, 0
db 135, 214
db 243, 164
db 137, 214
db 235, 170
db 129, 193, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 169, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 76, 11, 9
db 235, 21
db 144
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 225
db 131, 193, 2
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 57
db 41, 194
db 233, 38, 255, 255, 255
db 141, 116, 38, 0
db 141, 87, 2
db 57, 20, 36
db 114, 106
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 114, 93
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 43, 255, 255, 255
db 131, 249, 3
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+194
View File
@@ -0,0 +1,194 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1y_decompress_asm_fast
_lzo1y_decompress_asm_fast:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 27
db 44, 14
db 235, 34
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 68, 24, 21
db 235, 16
db 137, 246
db 138, 6
db 70
db 60, 16
db 115, 65
db 8, 192
db 116, 230
db 131, 192, 6
db 137, 193
db 49, 232
db 193, 233, 2
db 33, 232
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 73
db 117, 243
db 41, 198
db 41, 199
db 138, 6
db 70
db 60, 16
db 115, 25
db 193, 232, 2
db 138, 30
db 141, 151, 255, 251, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 139, 10
db 137, 15
db 1, 239
db 235, 110
db 60, 64
db 114, 52
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 33, 232
db 138, 30
db 193, 233, 4
db 141, 4, 152
db 70
db 41, 194
db 131, 193, 2
db 57, 232
db 115, 54
db 235, 110
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 76, 24, 36
db 49, 192
db 235, 14
db 137, 246
db 60, 32
db 114, 116
db 131, 224, 31
db 116, 230
db 141, 72, 5
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 58
db 141, 68, 15, 253
db 193, 233, 2
db 139, 26
db 131, 194, 4
db 137, 31
db 131, 199, 4
db 73
db 117, 243
db 137, 199
db 49, 219
db 138, 70, 254
db 33, 232
db 15, 132, 63, 255, 255, 255
db 139, 22
db 1, 198
db 137, 23
db 1, 199
db 138, 6
db 70
db 233, 119, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 135, 214
db 41, 233
db 243, 164
db 137, 214
db 235, 212
db 129, 193, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 243
db 141, 76, 11, 12
db 235, 23
db 141, 118, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 223
db 131, 193, 5
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 43
db 41, 194
db 233, 122, 255, 255, 255
db 141, 116, 38, 0
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 110, 255, 255, 255
db 131, 249, 6
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+250
View File
@@ -0,0 +1,250 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1y_decompress_asm_fast_safe
_lzo1y_decompress_asm_fast_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 55
db 44, 14
db 235, 62
db 5, 255, 0, 0, 0
db 141, 84, 6, 18
db 57, 84, 36, 4
db 15, 130, 78, 2, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 68, 24, 21
db 235, 30
db 141, 182, 0, 0, 0, 0
db 57, 116, 36, 4
db 15, 130, 49, 2, 0, 0
db 138, 6
db 70
db 60, 16
db 115, 119
db 8, 192
db 116, 216
db 131, 192, 6
db 141, 84, 7, 253
db 57, 20, 36
db 15, 130, 29, 2, 0, 0
db 141, 84, 6, 253
db 57, 84, 36, 4
db 15, 130, 8, 2, 0, 0
db 137, 193
db 49, 232
db 193, 233, 2
db 33, 232
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 73
db 117, 243
db 41, 198
db 41, 199
db 138, 6
db 70
db 60, 16
db 115, 52
db 141, 87, 3
db 57, 20, 36
db 15, 130, 226, 1, 0, 0
db 193, 232, 2
db 138, 30
db 141, 151, 255, 251, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 15, 130, 206, 1, 0, 0
db 139, 10
db 137, 15
db 1, 239
db 233, 151, 0, 0, 0
db 137, 246
db 60, 64
db 114, 68
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 33, 232
db 138, 30
db 193, 233, 4
db 141, 4, 152
db 70
db 41, 194
db 131, 193, 2
db 57, 232
db 115, 74
db 233, 171, 0, 0, 0
db 5, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 124, 1, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 231
db 141, 76, 24, 36
db 49, 192
db 235, 18
db 137, 246
db 60, 32
db 15, 130, 200, 0, 0, 0
db 131, 224, 31
db 116, 226
db 141, 72, 5
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 102
db 59, 84, 36, 48
db 15, 130, 77, 1, 0, 0
db 141, 68, 15, 253
db 193, 233, 2
db 57, 4, 36
db 15, 130, 54, 1, 0, 0
db 139, 26
db 131, 194, 4
db 137, 31
db 131, 199, 4
db 73
db 117, 243
db 137, 199
db 49, 219
db 138, 70, 254
db 33, 232
db 15, 132, 216, 254, 255, 255
db 141, 20, 7
db 57, 20, 36
db 15, 130, 14, 1, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 250, 0, 0, 0
db 139, 22
db 1, 198
db 137, 23
db 1, 199
db 138, 6
db 70
db 233, 55, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 59, 84, 36, 48
db 15, 130, 231, 0, 0, 0
db 141, 68, 15, 253
db 57, 4, 36
db 15, 130, 211, 0, 0, 0
db 135, 214
db 41, 233
db 243, 164
db 137, 214
db 235, 164
db 129, 193, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 175, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 76, 11, 12
db 235, 27
db 141, 180, 38, 0, 0, 0, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 219
db 131, 193, 5
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 57
db 41, 194
db 233, 38, 255, 255, 255
db 141, 116, 38, 0
db 141, 87, 2
db 57, 20, 36
db 114, 106
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 114, 93
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 31, 255, 255, 255
db 131, 249, 6
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+209
View File
@@ -0,0 +1,209 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1y_decompress_asm
_lzo1y_decompress_asm:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 35
db 44, 17
db 60, 4
db 115, 40
db 137, 193
db 235, 56
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 68, 24, 18
db 235, 18
db 141, 116, 38, 0
db 138, 6
db 70
db 60, 16
db 115, 73
db 8, 192
db 116, 228
db 131, 192, 3
db 137, 193
db 193, 232, 2
db 33, 233
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 72
db 117, 243
db 243, 164
db 138, 6
db 70
db 60, 16
db 115, 37
db 193, 232, 2
db 138, 30
db 141, 151, 255, 251, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 66, 1
db 136, 71, 1
db 138, 66, 2
db 136, 71, 2
db 1, 239
db 235, 119
db 60, 64
db 114, 52
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 33, 232
db 138, 30
db 193, 233, 4
db 141, 4, 152
db 70
db 41, 194
db 73
db 57, 232
db 115, 56
db 235, 120
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 76, 24, 33
db 49, 192
db 235, 16
db 141, 116, 38, 0
db 60, 32
db 114, 124
db 131, 224, 31
db 116, 228
db 141, 72, 2
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 66
db 137, 203
db 193, 235, 2
db 116, 17
db 139, 2
db 131, 194, 4
db 137, 7
db 131, 199, 4
db 75
db 117, 243
db 33, 233
db 116, 9
db 138, 2
db 66
db 136, 7
db 71
db 73
db 117, 247
db 138, 70, 254
db 33, 232
db 15, 132, 46, 255, 255, 255
db 138, 14
db 70
db 136, 15
db 71
db 72
db 117, 247
db 138, 6
db 70
db 233, 109, 255, 255, 255
db 144
db 141, 116, 38, 0
db 135, 214
db 243, 164
db 137, 214
db 235, 215
db 129, 193, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 243
db 141, 76, 11, 9
db 235, 25
db 144
db 141, 116, 38, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 221
db 131, 193, 2
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 43
db 41, 194
db 233, 114, 255, 255, 255
db 141, 116, 38, 0
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 111, 255, 255, 255
db 131, 249, 3
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+270
View File
@@ -0,0 +1,270 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
.386p
.model flat
.code
public _lzo1y_decompress_asm_safe
_lzo1y_decompress_asm_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 87
db 44, 17
db 60, 4
db 115, 92
db 141, 20, 7
db 57, 20, 36
db 15, 130, 130, 2, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 110, 2, 0, 0
db 137, 193
db 235, 110
db 5, 255, 0, 0, 0
db 141, 84, 6, 18
db 57, 84, 36, 4
db 15, 130, 87, 2, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 68, 24, 18
db 235, 31
db 141, 180, 38, 0, 0, 0, 0
db 57, 116, 36, 4
db 15, 130, 57, 2, 0, 0
db 138, 6
db 70
db 60, 16
db 115, 127
db 8, 192
db 116, 215
db 131, 192, 3
db 141, 84, 7, 0
db 57, 20, 36
db 15, 130, 37, 2, 0, 0
db 141, 84, 6, 0
db 57, 84, 36, 4
db 15, 130, 16, 2, 0, 0
db 137, 193
db 193, 232, 2
db 33, 233
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 72
db 117, 243
db 243, 164
db 138, 6
db 70
db 60, 16
db 115, 64
db 141, 87, 3
db 57, 20, 36
db 15, 130, 238, 1, 0, 0
db 193, 232, 2
db 138, 30
db 141, 151, 255, 251, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 15, 130, 218, 1, 0, 0
db 138, 2
db 136, 7
db 138, 66, 1
db 136, 71, 1
db 138, 66, 2
db 136, 71, 2
db 1, 239
db 233, 163, 0, 0, 0
db 137, 246
db 60, 64
db 114, 68
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 33, 232
db 138, 30
db 193, 233, 4
db 141, 4, 152
db 70
db 41, 194
db 73
db 57, 232
db 115, 76
db 233, 181, 0, 0, 0
db 5, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 126, 1, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 231
db 141, 76, 24, 33
db 49, 192
db 235, 20
db 141, 116, 38, 0
db 60, 32
db 15, 130, 200, 0, 0, 0
db 131, 224, 31
db 116, 224
db 141, 72, 2
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 110
db 59, 84, 36, 48
db 15, 130, 77, 1, 0, 0
db 141, 4, 15
db 57, 4, 36
db 15, 130, 58, 1, 0, 0
db 137, 203
db 193, 235, 2
db 116, 17
db 139, 2
db 131, 194, 4
db 137, 7
db 131, 199, 4
db 75
db 117, 243
db 33, 233
db 116, 9
db 138, 2
db 66
db 136, 7
db 71
db 73
db 117, 247
db 138, 70, 254
db 33, 232
db 15, 132, 196, 254, 255, 255
db 141, 20, 7
db 57, 20, 36
db 15, 130, 2, 1, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 238, 0, 0, 0
db 138, 14
db 70
db 136, 15
db 71
db 72
db 117, 247
db 138, 6
db 70
db 233, 42, 255, 255, 255
db 137, 246
db 59, 84, 36, 48
db 15, 130, 223, 0, 0, 0
db 141, 68, 15, 0
db 57, 4, 36
db 15, 130, 203, 0, 0, 0
db 135, 214
db 243, 164
db 137, 214
db 235, 170
db 129, 193, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 169, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 76, 11, 9
db 235, 21
db 144
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 225
db 131, 193, 2
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 57
db 41, 194
db 233, 38, 255, 255, 255
db 141, 116, 38, 0
db 141, 87, 2
db 57, 20, 36
db 114, 106
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 114, 93
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 43, 255, 255, 255
db 131, 249, 3
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+139
View File
@@ -0,0 +1,139 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1c_decompress_asm
_lzo1c_decompress_asm:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 144
db 49, 192
db 138, 6
db 70
db 60, 32
db 115, 15
db 8, 192
db 116, 51
db 137, 193
db 243, 164
db 138, 6
db 70
db 60, 32
db 114, 72
db 60, 64
db 114, 93
db 137, 193
db 36, 31
db 141, 87, 255
db 193, 233, 5
db 41, 194
db 138, 6
db 70
db 193, 224, 5
db 41, 194
db 65
db 135, 242
db 243, 164
db 137, 214
db 235, 199
db 141, 180, 38, 0, 0, 0, 0
db 138, 6
db 70
db 141, 72, 32
db 60, 248
db 114, 197
db 185, 24, 1, 0, 0
db 44, 248
db 116, 6
db 145
db 48, 192
db 211, 224
db 145
db 243, 164
db 235, 163
db 141, 118, 0
db 141, 87, 255
db 41, 194
db 138, 6
db 70
db 193, 224, 5
db 41, 194
db 135, 242
db 164
db 164
db 164
db 137, 214
db 164
db 49, 192
db 235, 152
db 36, 31
db 137, 193
db 117, 19
db 177, 31
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 1, 193
db 138, 6
db 70
db 137, 195
db 36, 63
db 137, 250
db 41, 194
db 138, 6
db 70
db 193, 224, 6
db 41, 194
db 57, 250
db 116, 27
db 135, 214
db 141, 73, 3
db 243, 164
db 137, 214
db 49, 192
db 193, 235, 6
db 137, 217
db 15, 133, 80, 255, 255, 255
db 233, 60, 255, 255, 255
db 131, 249, 1
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+180
View File
@@ -0,0 +1,180 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1c_decompress_asm_safe
_lzo1c_decompress_asm_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 141, 118, 0
db 49, 192
db 138, 6
db 70
db 60, 32
db 115, 40
db 8, 192
db 116, 99
db 137, 193
db 141, 28, 15
db 57, 28, 36
db 15, 130, 107, 1, 0, 0
db 141, 28, 14
db 57, 92, 36, 4
db 15, 130, 87, 1, 0, 0
db 243, 164
db 138, 6
db 70
db 60, 32
db 114, 127
db 60, 64
db 15, 130, 169, 0, 0, 0
db 137, 193
db 36, 31
db 141, 87, 255
db 193, 233, 5
db 41, 194
db 138, 6
db 70
db 193, 224, 5
db 41, 194
db 65
db 135, 242
db 59, 116, 36, 48
db 15, 130, 51, 1, 0, 0
db 141, 28, 15
db 57, 28, 36
db 15, 130, 32, 1, 0, 0
db 243, 164
db 137, 214
db 235, 148
db 141, 116, 38, 0
db 138, 6
db 70
db 141, 72, 32
db 60, 248
db 114, 149
db 185, 24, 1, 0, 0
db 44, 248
db 116, 6
db 145
db 48, 192
db 211, 224
db 145
db 141, 28, 15
db 57, 28, 36
db 15, 130, 241, 0, 0, 0
db 141, 28, 14
db 57, 92, 36, 4
db 15, 130, 221, 0, 0, 0
db 243, 164
db 233, 87, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 141, 87, 255
db 41, 194
db 138, 6
db 70
db 193, 224, 5
db 41, 194
db 135, 242
db 59, 116, 36, 48
db 15, 130, 196, 0, 0, 0
db 141, 95, 4
db 57, 28, 36
db 15, 130, 177, 0, 0, 0
db 164
db 164
db 164
db 137, 214
db 164
db 49, 192
db 233, 72, 255, 255, 255
db 36, 31
db 137, 193
db 117, 26
db 177, 31
db 138, 6
db 70
db 8, 192
db 117, 15
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 180, 38, 0, 0, 0, 0
db 1, 193
db 138, 6
db 70
db 137, 195
db 36, 63
db 137, 250
db 41, 194
db 138, 6
db 70
db 193, 224, 6
db 41, 194
db 57, 250
db 116, 41
db 135, 214
db 141, 73, 3
db 59, 116, 36, 48
db 114, 105
db 141, 4, 15
db 57, 4, 36
db 114, 90
db 243, 164
db 137, 214
db 49, 192
db 193, 235, 6
db 137, 217
db 15, 133, 210, 254, 255, 255
db 233, 190, 254, 255, 255
db 131, 249, 1
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+140
View File
@@ -0,0 +1,140 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1f_decompress_asm_fast
_lzo1f_decompress_asm_fast:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 144
db 49, 192
db 138, 6
db 70
db 60, 31
db 119, 51
db 8, 192
db 137, 193
db 117, 19
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 76, 8, 31
db 136, 200
db 193, 233, 2
db 243, 165
db 36, 3
db 116, 8
db 139, 30
db 1, 198
db 137, 31
db 1, 199
db 138, 6
db 70
db 60, 31
db 118, 88
db 60, 223
db 15, 135, 132, 0, 0, 0
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 36, 7
db 193, 233, 5
db 137, 195
db 138, 6
db 141, 4, 195
db 70
db 41, 194
db 131, 193, 2
db 135, 214
db 131, 249, 6
db 114, 16
db 131, 248, 4
db 114, 11
db 136, 200
db 193, 233, 2
db 243, 165
db 36, 3
db 136, 193
db 243, 164
db 137, 214
db 138, 78, 254
db 131, 225, 3
db 15, 132, 123, 255, 255, 255
db 139, 6
db 1, 206
db 137, 7
db 1, 207
db 49, 192
db 138, 6
db 70
db 235, 164
db 193, 232, 2
db 141, 151, 255, 247, 255, 255
db 137, 193
db 138, 6
db 70
db 141, 4, 193
db 41, 194
db 139, 2
db 137, 7
db 131, 199, 3
db 235, 201
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 76, 8, 31
db 235, 9
db 141, 118, 0
db 36, 31
db 137, 193
db 116, 226
db 137, 250
db 102, 139, 6
db 131, 198, 2
db 193, 232, 2
db 15, 133, 122, 255, 255, 255
db 131, 249, 1
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+169
View File
@@ -0,0 +1,169 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1f_decompress_asm_fast_safe
_lzo1f_decompress_asm_fast_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 141, 118, 0
db 49, 192
db 138, 6
db 70
db 60, 31
db 119, 76
db 8, 192
db 137, 193
db 117, 19
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 76, 8, 31
db 141, 28, 15
db 57, 28, 36
db 15, 130, 61, 1, 0, 0
db 141, 28, 14
db 57, 92, 36, 4
db 15, 130, 41, 1, 0, 0
db 136, 200
db 193, 233, 2
db 243, 165
db 36, 3
db 116, 8
db 139, 30
db 1, 198
db 137, 31
db 1, 199
db 138, 6
db 70
db 60, 31
db 118, 110
db 60, 223
db 15, 135, 179, 0, 0, 0
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 36, 7
db 193, 233, 5
db 137, 195
db 138, 6
db 141, 4, 195
db 70
db 41, 194
db 131, 193, 2
db 135, 214
db 59, 116, 36, 48
db 15, 130, 239, 0, 0, 0
db 141, 28, 15
db 57, 28, 36
db 15, 130, 220, 0, 0, 0
db 131, 249, 6
db 114, 16
db 131, 248, 4
db 114, 11
db 136, 200
db 193, 233, 2
db 243, 165
db 36, 3
db 136, 193
db 243, 164
db 137, 214
db 138, 78, 254
db 131, 225, 3
db 15, 132, 76, 255, 255, 255
db 139, 6
db 1, 206
db 137, 7
db 1, 207
db 49, 192
db 138, 6
db 70
db 235, 142
db 141, 87, 3
db 57, 20, 36
db 15, 130, 156, 0, 0, 0
db 193, 232, 2
db 141, 151, 255, 247, 255, 255
db 137, 193
db 138, 6
db 70
db 141, 4, 193
db 41, 194
db 59, 84, 36, 48
db 15, 130, 134, 0, 0, 0
db 139, 2
db 137, 7
db 131, 199, 3
db 235, 179
db 138, 6
db 70
db 8, 192
db 117, 8
db 129, 193, 255, 0, 0, 0
db 235, 241
db 141, 76, 8, 31
db 235, 12
db 141, 182, 0, 0, 0, 0
db 36, 31
db 137, 193
db 116, 223
db 137, 250
db 102, 139, 6
db 131, 198, 2
db 193, 232, 2
db 15, 133, 75, 255, 255, 255
db 131, 249, 1
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+193
View File
@@ -0,0 +1,193 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1x_decompress_asm_fast
_lzo1x_decompress_asm_fast:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 27
db 44, 14
db 235, 34
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 68, 24, 21
db 235, 16
db 137, 246
db 138, 6
db 70
db 60, 16
db 115, 65
db 8, 192
db 116, 230
db 131, 192, 6
db 137, 193
db 49, 232
db 193, 233, 2
db 33, 232
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 73
db 117, 243
db 41, 198
db 41, 199
db 138, 6
db 70
db 60, 16
db 115, 25
db 193, 232, 2
db 138, 30
db 141, 151, 255, 247, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 139, 10
db 137, 15
db 1, 239
db 235, 110
db 60, 64
db 114, 52
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 131, 224, 7
db 138, 30
db 193, 233, 5
db 141, 4, 216
db 70
db 41, 194
db 131, 193, 4
db 57, 232
db 115, 53
db 235, 109
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 76, 24, 36
db 49, 192
db 235, 13
db 144
db 60, 32
db 114, 116
db 131, 224, 31
db 116, 231
db 141, 72, 5
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 58
db 141, 68, 15, 253
db 193, 233, 2
db 139, 26
db 131, 194, 4
db 137, 31
db 131, 199, 4
db 73
db 117, 243
db 137, 199
db 49, 219
db 138, 70, 254
db 33, 232
db 15, 132, 63, 255, 255, 255
db 139, 22
db 1, 198
db 137, 23
db 1, 199
db 138, 6
db 70
db 233, 119, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 135, 214
db 41, 233
db 243, 164
db 137, 214
db 235, 212
db 129, 193, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 243
db 141, 76, 11, 12
db 235, 23
db 141, 118, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 223
db 131, 193, 5
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 43
db 41, 194
db 233, 122, 255, 255, 255
db 141, 116, 38, 0
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 110, 255, 255, 255
db 131, 249, 6
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+249
View File
@@ -0,0 +1,249 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1x_decompress_asm_fast_safe
_lzo1x_decompress_asm_fast_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 55
db 44, 14
db 235, 62
db 5, 255, 0, 0, 0
db 141, 84, 6, 18
db 57, 84, 36, 4
db 15, 130, 78, 2, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 68, 24, 21
db 235, 30
db 141, 182, 0, 0, 0, 0
db 57, 116, 36, 4
db 15, 130, 49, 2, 0, 0
db 138, 6
db 70
db 60, 16
db 115, 119
db 8, 192
db 116, 216
db 131, 192, 6
db 141, 84, 7, 253
db 57, 20, 36
db 15, 130, 29, 2, 0, 0
db 141, 84, 6, 253
db 57, 84, 36, 4
db 15, 130, 8, 2, 0, 0
db 137, 193
db 49, 232
db 193, 233, 2
db 33, 232
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 73
db 117, 243
db 41, 198
db 41, 199
db 138, 6
db 70
db 60, 16
db 115, 52
db 141, 87, 3
db 57, 20, 36
db 15, 130, 226, 1, 0, 0
db 193, 232, 2
db 138, 30
db 141, 151, 255, 247, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 15, 130, 206, 1, 0, 0
db 139, 10
db 137, 15
db 1, 239
db 233, 151, 0, 0, 0
db 137, 246
db 60, 64
db 114, 68
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 131, 224, 7
db 138, 30
db 193, 233, 5
db 141, 4, 216
db 70
db 41, 194
db 131, 193, 4
db 57, 232
db 115, 73
db 233, 170, 0, 0, 0
db 5, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 123, 1, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 231
db 141, 76, 24, 36
db 49, 192
db 235, 17
db 144
db 60, 32
db 15, 130, 200, 0, 0, 0
db 131, 224, 31
db 116, 227
db 141, 72, 5
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 102
db 59, 84, 36, 48
db 15, 130, 77, 1, 0, 0
db 141, 68, 15, 253
db 193, 233, 2
db 57, 4, 36
db 15, 130, 54, 1, 0, 0
db 139, 26
db 131, 194, 4
db 137, 31
db 131, 199, 4
db 73
db 117, 243
db 137, 199
db 49, 219
db 138, 70, 254
db 33, 232
db 15, 132, 216, 254, 255, 255
db 141, 20, 7
db 57, 20, 36
db 15, 130, 14, 1, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 250, 0, 0, 0
db 139, 22
db 1, 198
db 137, 23
db 1, 199
db 138, 6
db 70
db 233, 55, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 59, 84, 36, 48
db 15, 130, 231, 0, 0, 0
db 141, 68, 15, 253
db 57, 4, 36
db 15, 130, 211, 0, 0, 0
db 135, 214
db 41, 233
db 243, 164
db 137, 214
db 235, 164
db 129, 193, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 175, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 76, 11, 12
db 235, 27
db 141, 180, 38, 0, 0, 0, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 219
db 131, 193, 5
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 57
db 41, 194
db 233, 38, 255, 255, 255
db 141, 116, 38, 0
db 141, 87, 2
db 57, 20, 36
db 114, 106
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 114, 93
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 31, 255, 255, 255
db 131, 249, 6
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+208
View File
@@ -0,0 +1,208 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1x_decompress_asm
_lzo1x_decompress_asm:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 35
db 44, 17
db 60, 4
db 115, 40
db 137, 193
db 235, 56
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 68, 24, 18
db 235, 18
db 141, 116, 38, 0
db 138, 6
db 70
db 60, 16
db 115, 73
db 8, 192
db 116, 228
db 131, 192, 3
db 137, 193
db 193, 232, 2
db 33, 233
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 72
db 117, 243
db 243, 164
db 138, 6
db 70
db 60, 16
db 115, 37
db 193, 232, 2
db 138, 30
db 141, 151, 255, 247, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 66, 1
db 136, 71, 1
db 138, 66, 2
db 136, 71, 2
db 1, 239
db 235, 119
db 60, 64
db 114, 52
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 131, 224, 7
db 138, 30
db 193, 233, 5
db 141, 4, 216
db 70
db 41, 194
db 65
db 57, 232
db 115, 55
db 235, 119
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 76, 24, 33
db 49, 192
db 235, 15
db 141, 118, 0
db 60, 32
db 114, 124
db 131, 224, 31
db 116, 229
db 141, 72, 2
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 66
db 137, 203
db 193, 235, 2
db 116, 17
db 139, 2
db 131, 194, 4
db 137, 7
db 131, 199, 4
db 75
db 117, 243
db 33, 233
db 116, 9
db 138, 2
db 66
db 136, 7
db 71
db 73
db 117, 247
db 138, 70, 254
db 33, 232
db 15, 132, 46, 255, 255, 255
db 138, 14
db 70
db 136, 15
db 71
db 72
db 117, 247
db 138, 6
db 70
db 233, 109, 255, 255, 255
db 144
db 141, 116, 38, 0
db 135, 214
db 243, 164
db 137, 214
db 235, 215
db 129, 193, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 243
db 141, 76, 11, 9
db 235, 25
db 144
db 141, 116, 38, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 221
db 131, 193, 2
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 43
db 41, 194
db 233, 114, 255, 255, 255
db 141, 116, 38, 0
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 111, 255, 255, 255
db 131, 249, 3
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+269
View File
@@ -0,0 +1,269 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1x_decompress_asm_safe
_lzo1x_decompress_asm_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 87
db 44, 17
db 60, 4
db 115, 92
db 141, 20, 7
db 57, 20, 36
db 15, 130, 130, 2, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 110, 2, 0, 0
db 137, 193
db 235, 110
db 5, 255, 0, 0, 0
db 141, 84, 6, 18
db 57, 84, 36, 4
db 15, 130, 87, 2, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 68, 24, 18
db 235, 31
db 141, 180, 38, 0, 0, 0, 0
db 57, 116, 36, 4
db 15, 130, 57, 2, 0, 0
db 138, 6
db 70
db 60, 16
db 115, 127
db 8, 192
db 116, 215
db 131, 192, 3
db 141, 84, 7, 0
db 57, 20, 36
db 15, 130, 37, 2, 0, 0
db 141, 84, 6, 0
db 57, 84, 36, 4
db 15, 130, 16, 2, 0, 0
db 137, 193
db 193, 232, 2
db 33, 233
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 72
db 117, 243
db 243, 164
db 138, 6
db 70
db 60, 16
db 115, 64
db 141, 87, 3
db 57, 20, 36
db 15, 130, 238, 1, 0, 0
db 193, 232, 2
db 138, 30
db 141, 151, 255, 247, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 15, 130, 218, 1, 0, 0
db 138, 2
db 136, 7
db 138, 66, 1
db 136, 71, 1
db 138, 66, 2
db 136, 71, 2
db 1, 239
db 233, 163, 0, 0, 0
db 137, 246
db 60, 64
db 114, 68
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 131, 224, 7
db 138, 30
db 193, 233, 5
db 141, 4, 216
db 70
db 41, 194
db 65
db 57, 232
db 115, 75
db 233, 180, 0, 0, 0
db 5, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 125, 1, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 231
db 141, 76, 24, 33
db 49, 192
db 235, 19
db 141, 118, 0
db 60, 32
db 15, 130, 200, 0, 0, 0
db 131, 224, 31
db 116, 225
db 141, 72, 2
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 110
db 59, 84, 36, 48
db 15, 130, 77, 1, 0, 0
db 141, 4, 15
db 57, 4, 36
db 15, 130, 58, 1, 0, 0
db 137, 203
db 193, 235, 2
db 116, 17
db 139, 2
db 131, 194, 4
db 137, 7
db 131, 199, 4
db 75
db 117, 243
db 33, 233
db 116, 9
db 138, 2
db 66
db 136, 7
db 71
db 73
db 117, 247
db 138, 70, 254
db 33, 232
db 15, 132, 196, 254, 255, 255
db 141, 20, 7
db 57, 20, 36
db 15, 130, 2, 1, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 238, 0, 0, 0
db 138, 14
db 70
db 136, 15
db 71
db 72
db 117, 247
db 138, 6
db 70
db 233, 42, 255, 255, 255
db 137, 246
db 59, 84, 36, 48
db 15, 130, 223, 0, 0, 0
db 141, 68, 15, 0
db 57, 4, 36
db 15, 130, 203, 0, 0, 0
db 135, 214
db 243, 164
db 137, 214
db 235, 170
db 129, 193, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 169, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 76, 11, 9
db 235, 21
db 144
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 225
db 131, 193, 2
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 57
db 41, 194
db 233, 38, 255, 255, 255
db 141, 116, 38, 0
db 141, 87, 2
db 57, 20, 36
db 114, 106
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 114, 93
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 43, 255, 255, 255
db 131, 249, 3
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+193
View File
@@ -0,0 +1,193 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1y_decompress_asm_fast
_lzo1y_decompress_asm_fast:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 27
db 44, 14
db 235, 34
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 68, 24, 21
db 235, 16
db 137, 246
db 138, 6
db 70
db 60, 16
db 115, 65
db 8, 192
db 116, 230
db 131, 192, 6
db 137, 193
db 49, 232
db 193, 233, 2
db 33, 232
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 73
db 117, 243
db 41, 198
db 41, 199
db 138, 6
db 70
db 60, 16
db 115, 25
db 193, 232, 2
db 138, 30
db 141, 151, 255, 251, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 139, 10
db 137, 15
db 1, 239
db 235, 110
db 60, 64
db 114, 52
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 33, 232
db 138, 30
db 193, 233, 4
db 141, 4, 152
db 70
db 41, 194
db 131, 193, 2
db 57, 232
db 115, 54
db 235, 110
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 76, 24, 36
db 49, 192
db 235, 14
db 137, 246
db 60, 32
db 114, 116
db 131, 224, 31
db 116, 230
db 141, 72, 5
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 58
db 141, 68, 15, 253
db 193, 233, 2
db 139, 26
db 131, 194, 4
db 137, 31
db 131, 199, 4
db 73
db 117, 243
db 137, 199
db 49, 219
db 138, 70, 254
db 33, 232
db 15, 132, 63, 255, 255, 255
db 139, 22
db 1, 198
db 137, 23
db 1, 199
db 138, 6
db 70
db 233, 119, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 135, 214
db 41, 233
db 243, 164
db 137, 214
db 235, 212
db 129, 193, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 243
db 141, 76, 11, 12
db 235, 23
db 141, 118, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 223
db 131, 193, 5
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 43
db 41, 194
db 233, 122, 255, 255, 255
db 141, 116, 38, 0
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 110, 255, 255, 255
db 131, 249, 6
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+249
View File
@@ -0,0 +1,249 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1y_decompress_asm_fast_safe
_lzo1y_decompress_asm_fast_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 55
db 44, 14
db 235, 62
db 5, 255, 0, 0, 0
db 141, 84, 6, 18
db 57, 84, 36, 4
db 15, 130, 78, 2, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 68, 24, 21
db 235, 30
db 141, 182, 0, 0, 0, 0
db 57, 116, 36, 4
db 15, 130, 49, 2, 0, 0
db 138, 6
db 70
db 60, 16
db 115, 119
db 8, 192
db 116, 216
db 131, 192, 6
db 141, 84, 7, 253
db 57, 20, 36
db 15, 130, 29, 2, 0, 0
db 141, 84, 6, 253
db 57, 84, 36, 4
db 15, 130, 8, 2, 0, 0
db 137, 193
db 49, 232
db 193, 233, 2
db 33, 232
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 73
db 117, 243
db 41, 198
db 41, 199
db 138, 6
db 70
db 60, 16
db 115, 52
db 141, 87, 3
db 57, 20, 36
db 15, 130, 226, 1, 0, 0
db 193, 232, 2
db 138, 30
db 141, 151, 255, 251, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 15, 130, 206, 1, 0, 0
db 139, 10
db 137, 15
db 1, 239
db 233, 151, 0, 0, 0
db 137, 246
db 60, 64
db 114, 68
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 33, 232
db 138, 30
db 193, 233, 4
db 141, 4, 152
db 70
db 41, 194
db 131, 193, 2
db 57, 232
db 115, 74
db 233, 171, 0, 0, 0
db 5, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 124, 1, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 231
db 141, 76, 24, 36
db 49, 192
db 235, 18
db 137, 246
db 60, 32
db 15, 130, 200, 0, 0, 0
db 131, 224, 31
db 116, 226
db 141, 72, 5
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 102
db 59, 84, 36, 48
db 15, 130, 77, 1, 0, 0
db 141, 68, 15, 253
db 193, 233, 2
db 57, 4, 36
db 15, 130, 54, 1, 0, 0
db 139, 26
db 131, 194, 4
db 137, 31
db 131, 199, 4
db 73
db 117, 243
db 137, 199
db 49, 219
db 138, 70, 254
db 33, 232
db 15, 132, 216, 254, 255, 255
db 141, 20, 7
db 57, 20, 36
db 15, 130, 14, 1, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 250, 0, 0, 0
db 139, 22
db 1, 198
db 137, 23
db 1, 199
db 138, 6
db 70
db 233, 55, 255, 255, 255
db 141, 180, 38, 0, 0, 0, 0
db 59, 84, 36, 48
db 15, 130, 231, 0, 0, 0
db 141, 68, 15, 253
db 57, 4, 36
db 15, 130, 211, 0, 0, 0
db 135, 214
db 41, 233
db 243, 164
db 137, 214
db 235, 164
db 129, 193, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 175, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 76, 11, 12
db 235, 27
db 141, 180, 38, 0, 0, 0, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 219
db 131, 193, 5
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 57
db 41, 194
db 233, 38, 255, 255, 255
db 141, 116, 38, 0
db 141, 87, 2
db 57, 20, 36
db 114, 106
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 114, 93
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 31, 255, 255, 255
db 131, 249, 6
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+208
View File
@@ -0,0 +1,208 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1y_decompress_asm
_lzo1y_decompress_asm:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 35
db 44, 17
db 60, 4
db 115, 40
db 137, 193
db 235, 56
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 68, 24, 18
db 235, 18
db 141, 116, 38, 0
db 138, 6
db 70
db 60, 16
db 115, 73
db 8, 192
db 116, 228
db 131, 192, 3
db 137, 193
db 193, 232, 2
db 33, 233
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 72
db 117, 243
db 243, 164
db 138, 6
db 70
db 60, 16
db 115, 37
db 193, 232, 2
db 138, 30
db 141, 151, 255, 251, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 66, 1
db 136, 71, 1
db 138, 66, 2
db 136, 71, 2
db 1, 239
db 235, 119
db 60, 64
db 114, 52
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 33, 232
db 138, 30
db 193, 233, 4
db 141, 4, 152
db 70
db 41, 194
db 73
db 57, 232
db 115, 56
db 235, 120
db 5, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 244
db 141, 76, 24, 33
db 49, 192
db 235, 16
db 141, 116, 38, 0
db 60, 32
db 114, 124
db 131, 224, 31
db 116, 228
db 141, 72, 2
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 66
db 137, 203
db 193, 235, 2
db 116, 17
db 139, 2
db 131, 194, 4
db 137, 7
db 131, 199, 4
db 75
db 117, 243
db 33, 233
db 116, 9
db 138, 2
db 66
db 136, 7
db 71
db 73
db 117, 247
db 138, 70, 254
db 33, 232
db 15, 132, 46, 255, 255, 255
db 138, 14
db 70
db 136, 15
db 71
db 72
db 117, 247
db 138, 6
db 70
db 233, 109, 255, 255, 255
db 144
db 141, 116, 38, 0
db 135, 214
db 243, 164
db 137, 214
db 235, 215
db 129, 193, 255, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 243
db 141, 76, 11, 9
db 235, 25
db 144
db 141, 116, 38, 0
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 221
db 131, 193, 2
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 43
db 41, 194
db 233, 114, 255, 255, 255
db 141, 116, 38, 0
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 111, 255, 255, 255
db 131, 249, 3
db 15, 149, 192
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
end
+269
View File
@@ -0,0 +1,269 @@
; /*** DO NOT EDIT - GENERATED AUTOMATICALLY ***/
; /*** Copyright (C) 1996-2002 Markus F.X.J. Oberhumer ***/
BITS 32
SECTION .text
GLOBAL _lzo1y_decompress_asm_safe
_lzo1y_decompress_asm_safe:
db 85
db 87
db 86
db 83
db 81
db 82
db 131, 236, 12
db 252
db 139, 116, 36, 40
db 139, 124, 36, 48
db 189, 3, 0, 0, 0
db 141, 70, 253
db 3, 68, 36, 44
db 137, 68, 36, 4
db 137, 248
db 139, 84, 36, 52
db 3, 2
db 137, 4, 36
db 49, 192
db 49, 219
db 172
db 60, 17
db 118, 87
db 44, 17
db 60, 4
db 115, 92
db 141, 20, 7
db 57, 20, 36
db 15, 130, 130, 2, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 110, 2, 0, 0
db 137, 193
db 235, 110
db 5, 255, 0, 0, 0
db 141, 84, 6, 18
db 57, 84, 36, 4
db 15, 130, 87, 2, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 68, 24, 18
db 235, 31
db 141, 180, 38, 0, 0, 0, 0
db 57, 116, 36, 4
db 15, 130, 57, 2, 0, 0
db 138, 6
db 70
db 60, 16
db 115, 127
db 8, 192
db 116, 215
db 131, 192, 3
db 141, 84, 7, 0
db 57, 20, 36
db 15, 130, 37, 2, 0, 0
db 141, 84, 6, 0
db 57, 84, 36, 4
db 15, 130, 16, 2, 0, 0
db 137, 193
db 193, 232, 2
db 33, 233
db 139, 22
db 131, 198, 4
db 137, 23
db 131, 199, 4
db 72
db 117, 243
db 243, 164
db 138, 6
db 70
db 60, 16
db 115, 64
db 141, 87, 3
db 57, 20, 36
db 15, 130, 238, 1, 0, 0
db 193, 232, 2
db 138, 30
db 141, 151, 255, 251, 255, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 15, 130, 218, 1, 0, 0
db 138, 2
db 136, 7
db 138, 66, 1
db 136, 71, 1
db 138, 66, 2
db 136, 71, 2
db 1, 239
db 233, 163, 0, 0, 0
db 137, 246
db 60, 64
db 114, 68
db 137, 193
db 193, 232, 2
db 141, 87, 255
db 33, 232
db 138, 30
db 193, 233, 4
db 141, 4, 152
db 70
db 41, 194
db 73
db 57, 232
db 115, 76
db 233, 181, 0, 0, 0
db 5, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 126, 1, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 231
db 141, 76, 24, 33
db 49, 192
db 235, 20
db 141, 116, 38, 0
db 60, 32
db 15, 130, 200, 0, 0, 0
db 131, 224, 31
db 116, 224
db 141, 72, 2
db 102, 139, 6
db 141, 87, 255
db 193, 232, 2
db 131, 198, 2
db 41, 194
db 57, 232
db 114, 110
db 59, 84, 36, 48
db 15, 130, 77, 1, 0, 0
db 141, 4, 15
db 57, 4, 36
db 15, 130, 58, 1, 0, 0
db 137, 203
db 193, 235, 2
db 116, 17
db 139, 2
db 131, 194, 4
db 137, 7
db 131, 199, 4
db 75
db 117, 243
db 33, 233
db 116, 9
db 138, 2
db 66
db 136, 7
db 71
db 73
db 117, 247
db 138, 70, 254
db 33, 232
db 15, 132, 196, 254, 255, 255
db 141, 20, 7
db 57, 20, 36
db 15, 130, 2, 1, 0, 0
db 141, 20, 6
db 57, 84, 36, 4
db 15, 130, 238, 0, 0, 0
db 138, 14
db 70
db 136, 15
db 71
db 72
db 117, 247
db 138, 6
db 70
db 233, 42, 255, 255, 255
db 137, 246
db 59, 84, 36, 48
db 15, 130, 223, 0, 0, 0
db 141, 68, 15, 0
db 57, 4, 36
db 15, 130, 203, 0, 0, 0
db 135, 214
db 243, 164
db 137, 214
db 235, 170
db 129, 193, 255, 0, 0, 0
db 141, 86, 3
db 57, 84, 36, 4
db 15, 130, 169, 0, 0, 0
db 138, 30
db 70
db 8, 219
db 116, 230
db 141, 76, 11, 9
db 235, 21
db 144
db 60, 16
db 114, 44
db 137, 193
db 131, 224, 8
db 193, 224, 13
db 131, 225, 7
db 116, 225
db 131, 193, 2
db 102, 139, 6
db 131, 198, 2
db 141, 151, 0, 192, 255, 255
db 193, 232, 2
db 116, 57
db 41, 194
db 233, 38, 255, 255, 255
db 141, 116, 38, 0
db 141, 87, 2
db 57, 20, 36
db 114, 106
db 193, 232, 2
db 138, 30
db 141, 87, 255
db 141, 4, 152
db 70
db 41, 194
db 59, 84, 36, 48
db 114, 93
db 138, 2
db 136, 7
db 138, 90, 1
db 136, 95, 1
db 131, 199, 2
db 233, 43, 255, 255, 255
db 131, 249, 3
db 15, 149, 192
db 59, 60, 36
db 119, 57
db 139, 84, 36, 40
db 3, 84, 36, 44
db 57, 214
db 119, 38
db 114, 29
db 43, 124, 36, 48
db 139, 84, 36, 52
db 137, 58
db 247, 216
db 131, 196, 12
db 90
db 89
db 91
db 94
db 95
db 93
db 195
db 184, 1, 0, 0, 0
db 235, 227
db 184, 8, 0, 0, 0
db 235, 220
db 184, 4, 0, 0, 0
db 235, 213
db 184, 5, 0, 0, 0
db 235, 206
db 184, 6, 0, 0, 0
db 235, 199
end
+75
View File
@@ -0,0 +1,75 @@
/* enter.sh -- LZO assembler stuff
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
pushl %ebp
pushl %edi
pushl %esi
pushl %ebx
pushl %ecx
pushl %edx
subl $12,%esp
cld
movl INP,%esi
movl OUTP,%edi
#if defined(N_3_EBP)
movl $3,%ebp
#endif
#if defined(N_255_EBP)
movl $255,%ebp
#endif
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_INPUT)
#if defined(INIT_OVERRUN)
INIT_OVERRUN
# undef INIT_OVERRUN
#endif
leal -3(%esi),%eax /* 3 == length of EOF code */
addl INS,%eax
movl %eax,INEND
#endif
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
#if defined(INIT_OVERRUN)
INIT_OVERRUN
# undef INIT_OVERRUN
#endif
movl %edi,%eax
movl OUTS,%edx
addl (%edx),%eax
movl %eax,OUTEND
#endif
/*
vi:ts=4
*/
+100
View File
@@ -0,0 +1,100 @@
/* leave.sh -- LZO assembler stuff
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
/* check uncompressed size */
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
cmpl OUTEND,%edi
ja .L_output_overrun
#endif
/* check compressed size */
movl INP,%edx
addl INS,%edx
cmpl %edx,%esi /* check compressed size */
ja .L_input_overrun
jb .L_input_not_consumed
.L_leave:
subl OUTP,%edi /* write back the uncompressed size */
movl OUTS,%edx
movl %edi,(%edx)
negl %eax
addl $12,%esp
popl %edx
popl %ecx
popl %ebx
popl %esi
popl %edi
popl %ebp
#if 1
ret
#else
jmp .L_end
#endif
.L_error:
movl $1,%eax /* LZO_E_ERROR */
jmp .L_leave
.L_input_not_consumed:
movl $8,%eax /* LZO_E_INPUT_NOT_CONSUMED */
jmp .L_leave
.L_input_overrun:
movl $4,%eax /* LZO_E_INPUT_OVERRUN */
jmp .L_leave
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
.L_output_overrun:
movl $5,%eax /* LZO_E_OUTPUT_OVERRUN */
jmp .L_leave
#endif
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND)
.L_lookbehind_overrun:
movl $6,%eax /* LZO_E_LOOKBEHIND_OVERRUN */
jmp .L_leave
#endif
#if defined(LZO_DEBUG)
.L_assert_fail:
movl $99,%eax
jmp .L_leave
#endif
.L_end:
/*
vi:ts=4
*/
+178
View File
@@ -0,0 +1,178 @@
/* lzo1c_d.sh -- assembler implementation of the LZO1C decompression algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/*
* This file has been adapted from code generously contributed by
* Laszlo Molnar aka ML1050 <ml1050@hotmail.com>
*
* Many thanks, Laszlo !
*/
/***********************************************************************
//
************************************************************************/
ALIGN3
.L1:
xorl %eax,%eax
movb (%esi),%al
incl %esi
cmpb $32,%al
jnb .LMATCH
orb %al,%al
jz .L12
movl %eax,%ecx
.LIT:
TEST_OP((%edi,%ecx),%ebx)
TEST_IP((%esi,%ecx),%ebx)
rep
movsb
.LM1:
movb (%esi),%al
incl %esi
cmpb $32,%al
jb .LM2
.LMATCH:
cmpb $64,%al
jb .LN3
movl %eax,%ecx
andb $31,%al
leal -1(%edi),%edx
shrl $5,%ecx
subl %eax,%edx
movb (%esi),%al
incl %esi
shll $5,%eax
subl %eax,%edx
incl %ecx
xchgl %esi,%edx
TEST_LOOKBEHIND(%esi)
TEST_OP((%edi,%ecx),%ebx)
rep
movsb
movl %edx,%esi
jmp .L1
ALIGN3
.L12:
LODSB
leal 32(%eax),%ecx
cmpb $248,%al
jb .LIT
movl $280,%ecx
subb $248,%al
jz .L11
xchgl %eax,%ecx
xorb %al,%al
shll %cl,%eax
xchgl %eax,%ecx
.L11:
TEST_OP((%edi,%ecx),%ebx)
TEST_IP((%esi,%ecx),%ebx)
rep
movsb
jmp .L1
ALIGN3
.LM2:
leal -1(%edi),%edx
subl %eax,%edx
LODSB
shll $5,%eax
subl %eax,%edx
xchgl %esi,%edx
TEST_LOOKBEHIND(%esi)
TEST_OP(4(%edi),%ebx)
movsb
movsb
movsb
movl %edx,%esi
movsb
xorl %eax,%eax
jmp .LM1
.LN3:
andb $31,%al
movl %eax,%ecx
jnz .LN6
movb $31,%cl
.LN4:
LODSB
orb %al,%al
jnz .LN5
addl N_255,%ecx
jmp .LN4
ALIGN3
.LN5:
addl %eax,%ecx
.LN6:
movb (%esi),%al
incl %esi
movl %eax,%ebx
andb $63,%al
movl %edi,%edx
subl %eax,%edx
movb (%esi),%al
incl %esi
shll $6,%eax
subl %eax,%edx
cmpl %edi,%edx
jz .LEOF
xchgl %edx,%esi
leal 3(%ecx),%ecx
TEST_LOOKBEHIND(%esi)
TEST_OP((%edi,%ecx),%eax)
rep
movsb
movl %edx,%esi
xorl %eax,%eax
shrl $6,%ebx
movl %ebx,%ecx
jnz .LIT
jmp .L1
.LEOF:
/**** xorl %eax,%eax eax=0 from above */
cmpl $1,%ecx /* ecx must be 1 */
setnz %al
/*
vi:ts=4
*/
+47
View File
@@ -0,0 +1,47 @@
/* lzo1c_s1.s -- LZO1C decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1c_decompress_asm)
#include "enter.sh"
#include "lzo1c_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1c_decompress_asm)
/*
vi:ts=4
*/
+51
View File
@@ -0,0 +1,51 @@
/* lzo1c_s2.s -- LZO1C decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#define LZO_TEST_DECOMPRESS_OVERRUN_INPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1c_decompress_asm_safe)
#include "enter.sh"
#include "lzo1c_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1c_decompress_asm_safe)
/*
vi:ts=4
*/
+170
View File
@@ -0,0 +1,170 @@
/* lzo1f_d.sh -- assembler implementation of the LZO1F decompression algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/*
* This file has been adapted from code generously contributed by
* Laszlo Molnar aka ML1050 <ml1050@hotmail.com>
*
* Many thanks, Laszlo !
*/
/***********************************************************************
//
************************************************************************/
ALIGN3
.L0:
xorl %eax,%eax
movb (%esi),%al
incl %esi
cmpb $31,%al
ja .LM2
orb %al,%al
movl %eax,%ecx
jnz .L2
1:
LODSB
orb %al,%al
jnz 2f
addl N_255,%ecx
jmp 1b
2:
lea 31(%eax,%ecx),%ecx
.L2:
TEST_OP((%edi,%ecx),%ebx)
TEST_IP((%esi,%ecx),%ebx)
movb %cl,%al
shrl $2,%ecx
rep
movsl
andb $3,%al
jz 1f
movl (%esi),%ebx
addl %eax,%esi
movl %ebx,(%edi)
addl %eax,%edi
1:
movb (%esi),%al
incl %esi
.LM1:
cmpb $31,%al
jbe .LM21
.LM2:
cmpb $223,%al
ja .LM3
movl %eax,%ecx
shrl $2,%eax
lea -1(%edi),%edx
andb $7,%al
shrl $5,%ecx
movl %eax,%ebx
movb (%esi),%al
leal (%ebx,%eax,8),%eax
incl %esi
.LM5:
subl %eax,%edx
addl $2,%ecx
xchgl %edx,%esi
TEST_LOOKBEHIND(%esi)
TEST_OP((%edi,%ecx),%ebx)
cmpl $6,%ecx
jb 1f
cmpl $4,%eax
jb 1f
movb %cl,%al
shrl $2,%ecx
rep
movsl
andb $3,%al
movb %al,%cl
1:
rep
movsb
movl %edx,%esi
.LN1:
movb -2(%esi),%cl
andl $3,%ecx
jz .L0
movl (%esi),%eax
addl %ecx,%esi
movl %eax,(%edi)
addl %ecx,%edi
xorl %eax,%eax
movb (%esi),%al
incl %esi
jmp .LM1
.LM21:
TEST_OP(3(%edi),%edx)
shrl $2,%eax
leal -0x801(%edi),%edx
movl %eax,%ecx
movb (%esi),%al
incl %esi
leal (%ecx,%eax,8),%eax
subl %eax,%edx
TEST_LOOKBEHIND(%edx)
movl (%edx),%eax
movl %eax,(%edi)
addl $3,%edi
jmp .LN1
1:
LODSB
orb %al,%al
jnz 2f
addl N_255,%ecx
jmp 1b
2:
lea 31(%eax,%ecx),%ecx
jmp .LM4
ALIGN3
.LM3:
andb $31,%al
movl %eax,%ecx
jz 1b
.LM4:
movl %edi,%edx
movw (%esi),%ax
addl $2,%esi
shrl $2,%eax
jnz .LM5
.LEOF:
/**** xorl %eax,%eax eax=0 from above */
cmpl $1,%ecx /* ecx must be 1 */
setnz %al
/*
vi:ts=4
*/
+47
View File
@@ -0,0 +1,47 @@
/* lzo1f_f1.s -- fast LZO1F decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1f_decompress_asm_fast)
#include "enter.sh"
#include "lzo1f_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1f_decompress_asm_fast)
/*
vi:ts=4
*/
+51
View File
@@ -0,0 +1,51 @@
/* lzo1f_f2.s -- fast LZO1F decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#define LZO_TEST_DECOMPRESS_OVERRUN_INPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1f_decompress_asm_fast_safe)
#include "enter.sh"
#include "lzo1f_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1f_decompress_asm_fast_safe)
/*
vi:ts=4
*/
+397
View File
@@ -0,0 +1,397 @@
/* lzo1x_d.sh -- assembler implementation of the LZO1X decompression algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/*
* This file has been adapted from code generously contributed by
* Laszlo Molnar aka ML1050 <ml1050@hotmail.com>
*
* Many thanks, Laszlo !
*
* I (Markus) have optimized the fast version a lot, so enjoy...
*/
#if !defined(LZO1X) && !defined(LZO1Y)
# define LZO1X
#endif
#if defined(LZO_FAST)
# define NN 3
#else
# define NN 0
#endif
/***********************************************************************
// init
************************************************************************/
xorl %eax,%eax
xorl %ebx,%ebx /* high bits 9-32 stay 0 */
lodsb
cmpb $17,%al
jbe .L01
subb $17-NN,%al
#if defined(LZO_FAST)
jmp .LFLR
#else
cmpb $4,%al
jae .LFLR
#if 1
TEST_OP((%edi,%eax),%edx)
TEST_IP((%esi,%eax),%edx)
movl %eax,%ecx
jmp .LFLR2
#else
jmp .LFLR3
#endif
#endif
/***********************************************************************
// literal run
************************************************************************/
0: addl N_255,%eax
TEST_IP(18(%esi,%eax),%edx) /* minimum */
1: movb (%esi),%bl
incl %esi
orb %bl,%bl
jz 0b
leal 18+NN(%eax,%ebx),%eax
jmp 3f
ALIGN3
.L00:
#ifdef LZO_DEBUG
andl $0xffffff00,%eax ; jnz .L_assert_fail
andl $0xffffff00,%ebx ; jnz .L_assert_fail
xorl %eax,%eax ; xorl %ebx,%ebx
xorl %ecx,%ecx ; xorl %edx,%edx
#endif
TEST_IP_R(%esi)
LODSB
.L01:
cmpb $16,%al
jae .LMATCH
/* a literal run */
orb %al,%al
jz 1b
addl $3+NN,%eax
3:
.LFLR:
TEST_OP(-NN(%edi,%eax),%edx)
TEST_IP(-NN(%esi,%eax),%edx)
#if defined(LZO_FAST)
movl %eax,%ecx
NOTL_3(%eax)
shrl $2,%ecx
andl N_3,%eax
COPYL(%esi,%edi,%edx)
subl %eax,%esi
subl %eax,%edi
#else
movl %eax,%ecx
shrl $2,%eax
andl N_3,%ecx
COPYL_C(%esi,%edi,%edx,%eax)
.LFLR2:
rep
movsb
#endif
#ifdef LZO_DEBUG
andl $0xffffff00,%eax ; jnz .L_assert_fail
andl $0xffffff00,%ebx ; jnz .L_assert_fail
xorl %eax,%eax ; xorl %ebx,%ebx
xorl %ecx,%ecx ; xorl %edx,%edx
#endif
LODSB
cmpb $16,%al
jae .LMATCH
/***********************************************************************
// R1
************************************************************************/
TEST_OP(3(%edi),%edx)
shrl $2,%eax
movb (%esi),%bl
#if defined(LZO1X)
leal -0x801(%edi),%edx
#elif defined(LZO1Y)
leal -0x401(%edi),%edx
#endif
leal (%eax,%ebx,4),%eax
incl %esi
subl %eax,%edx
TEST_LOOKBEHIND(%edx)
#if defined(LZO_FAST)
movl (%edx),%ecx
movl %ecx,(%edi)
#else
movb (%edx),%al
movb %al,(%edi)
movb 1(%edx),%al
movb %al,1(%edi)
movb 2(%edx),%al
movb %al,2(%edi)
#endif
addl N_3,%edi
jmp .LMDONE
/***********************************************************************
// M2
************************************************************************/
ALIGN3
.LMATCH:
cmpb $64,%al
jb .LM3MATCH
/* a M2 match */
movl %eax,%ecx
shrl $2,%eax
leal -1(%edi),%edx
#if defined(LZO1X)
andl $7,%eax
movb (%esi),%bl
shrl $5,%ecx
leal (%eax,%ebx,8),%eax
#elif defined(LZO1Y)
andl N_3,%eax
movb (%esi),%bl
shrl $4,%ecx
leal (%eax,%ebx,4),%eax
#endif
incl %esi
subl %eax,%edx
#if defined(LZO_FAST)
#if defined(LZO1X)
addl $1+3,%ecx
#elif defined(LZO1Y)
addl $2,%ecx
#endif
#else
#if defined(LZO1X)
incl %ecx
#elif defined(LZO1Y)
decl %ecx
#endif
#endif
cmpl N_3,%eax
jae .LCOPYLONG
jmp .LCOPYBYTE
/***********************************************************************
// M3
************************************************************************/
0: addl N_255,%eax
TEST_IP(3(%esi),%edx) /* minimum */
1: movb (%esi),%bl
incl %esi
orb %bl,%bl
jz 0b
leal 33+NN(%eax,%ebx),%ecx
xorl %eax,%eax
jmp 3f
ALIGN3
.LM3MATCH:
cmpb $32,%al
jb .LM4MATCH
/* a M3 match */
andl $31,%eax
jz 1b
lea 2+NN(%eax),%ecx
3:
#ifdef LZO_DEBUG
andl $0xffff0000,%eax ; jnz .L_assert_fail
#endif
movw (%esi),%ax
leal -1(%edi),%edx
shrl $2,%eax
addl $2,%esi
subl %eax,%edx
cmpl N_3,%eax
jb .LCOPYBYTE
/***********************************************************************
// copy match
************************************************************************/
ALIGN1
.LCOPYLONG: /* copy match using longwords */
TEST_LOOKBEHIND(%edx)
#if defined(LZO_FAST)
leal -3(%edi,%ecx),%eax
shrl $2,%ecx
TEST_OP_R(%eax)
COPYL(%edx,%edi,%ebx)
movl %eax,%edi
xorl %ebx,%ebx
#else
TEST_OP((%edi,%ecx),%eax)
movl %ecx,%ebx
shrl $2,%ebx
jz 2f
COPYL_C(%edx,%edi,%eax,%ebx)
andl N_3,%ecx
jz 1f
2: COPYB_C(%edx,%edi,%al,%ecx)
1:
#endif
.LMDONE:
movb -2(%esi),%al
andl N_3,%eax
jz .L00
.LFLR3:
TEST_OP((%edi,%eax),%edx)
TEST_IP((%esi,%eax),%edx)
#if defined(LZO_FAST)
movl (%esi),%edx
addl %eax,%esi
movl %edx,(%edi)
addl %eax,%edi
#else
COPYB_C(%esi,%edi,%cl,%eax)
#endif
#ifdef LZO_DEBUG
andl $0xffffff00,%eax ; jnz .L_assert_fail
andl $0xffffff00,%ebx ; jnz .L_assert_fail
xorl %eax,%eax ; xorl %ebx,%ebx
xorl %ecx,%ecx ; xorl %edx,%edx
#endif
LODSB
jmp .LMATCH
ALIGN3
.LCOPYBYTE: /* copy match using bytes */
TEST_LOOKBEHIND(%edx)
TEST_OP(-NN(%edi,%ecx),%eax)
xchgl %edx,%esi
#if defined(LZO_FAST)
subl N_3,%ecx
#endif
rep
movsb
movl %edx,%esi
jmp .LMDONE
/***********************************************************************
// M4
************************************************************************/
0: addl N_255,%ecx
TEST_IP(3(%esi),%edx) /* minimum */
1: movb (%esi),%bl
incl %esi
orb %bl,%bl
jz 0b
leal 9+NN(%ebx,%ecx),%ecx
jmp 3f
ALIGN3
.LM4MATCH:
cmpb $16,%al
jb .LM1MATCH
/* a M4 match */
movl %eax,%ecx
andl $8,%eax
shll $13,%eax /* save in bit 16 */
andl $7,%ecx
jz 1b
addl $2+NN,%ecx
3:
#ifdef LZO_DEBUG
movl %eax,%edx ; andl $0xfffe0000,%edx ; jnz .L_assert_fail
#endif
movw (%esi),%ax
addl $2,%esi
leal -0x4000(%edi),%edx
shrl $2,%eax
jz .LEOF
subl %eax,%edx
jmp .LCOPYLONG
/***********************************************************************
// M1
************************************************************************/
ALIGN3
.LM1MATCH:
/* a M1 match */
TEST_OP(2(%edi),%edx)
shrl $2,%eax
movb (%esi),%bl
leal -1(%edi),%edx
leal (%eax,%ebx,4),%eax
incl %esi
subl %eax,%edx
TEST_LOOKBEHIND(%edx)
movb (%edx),%al /* we must use this because edx can be edi-1 */
movb %al,(%edi)
movb 1(%edx),%bl
movb %bl,1(%edi)
addl $2,%edi
jmp .LMDONE
/***********************************************************************
//
************************************************************************/
.LEOF:
/**** xorl %eax,%eax eax=0 from above */
cmpl $3+NN,%ecx /* ecx must be 3/6 */
setnz %al
/*
vi:ts=4
*/
+49
View File
@@ -0,0 +1,49 @@
/* lzo1x_f1.s -- fast LZO1X decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#define LZO_FAST
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1x_decompress_asm_fast)
#include "enter.sh"
#include "lzo1x_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1x_decompress_asm_fast)
/*
vi:ts=4
*/
+53
View File
@@ -0,0 +1,53 @@
/* lzo1x_f2.s -- fast LZO1X decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#define LZO_FAST
#define LZO_TEST_DECOMPRESS_OVERRUN_INPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1x_decompress_asm_fast_safe)
#include "enter.sh"
#include "lzo1x_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1x_decompress_asm_fast_safe)
/*
vi:ts=4
*/
+47
View File
@@ -0,0 +1,47 @@
/* lzo1x_s1.s -- LZO1X decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1x_decompress_asm)
#include "enter.sh"
#include "lzo1x_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1x_decompress_asm)
/*
vi:ts=4
*/
+51
View File
@@ -0,0 +1,51 @@
/* lzo1x_s2.s -- LZO1X decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#define LZO_TEST_DECOMPRESS_OVERRUN_INPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1x_decompress_asm_safe)
#include "enter.sh"
#include "lzo1x_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1x_decompress_asm_safe)
/*
vi:ts=4
*/
+51
View File
@@ -0,0 +1,51 @@
/* lzo1y_f1.s -- fast LZO1Y decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#define LZO_FAST
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1y_decompress_asm_fast)
#define LZO1Y
#include "enter.sh"
#include "lzo1x_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1y_decompress_asm_fast)
/*
vi:ts=4
*/
+55
View File
@@ -0,0 +1,55 @@
/* lzo1y_f2.s -- fast LZO1Y decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#define LZO_FAST
#define LZO_TEST_DECOMPRESS_OVERRUN_INPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1y_decompress_asm_fast_safe)
#define LZO1Y
#include "enter.sh"
#include "lzo1x_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1y_decompress_asm_fast_safe)
/*
vi:ts=4
*/
+49
View File
@@ -0,0 +1,49 @@
/* lzo1y_s1.s -- LZO1Y decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1y_decompress_asm)
#define LZO1Y
#include "enter.sh"
#include "lzo1x_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1y_decompress_asm)
/*
vi:ts=4
*/
+53
View File
@@ -0,0 +1,53 @@
/* lzo1y_s2.s -- LZO1Y decompression in assembler (i386 + gcc)
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
//
************************************************************************/
#define LZO_TEST_DECOMPRESS_OVERRUN_INPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT
#define LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND
#include "lzo_asm.h"
.text
LZO_PUBLIC(lzo1y_decompress_asm_safe)
#define LZO1Y
#include "enter.sh"
#include "lzo1x_d.sh"
#include "leave.sh"
LZO_PUBLIC_END(lzo1y_decompress_asm_safe)
/*
vi:ts=4
*/
+257
View File
@@ -0,0 +1,257 @@
/* lzo_asm.h -- LZO assembler stuff
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/***********************************************************************
// <asmconfig.h>
************************************************************************/
#if !defined(__i386__)
# error
#endif
#if !defined(IN_CONFIGURE)
#if defined(LZO_HAVE_CONFIG_H)
# include <config.h>
#else
/* manual configuration - see defaults below */
# if defined(__ELF__)
# define MFX_ASM_HAVE_TYPE
# define MFX_ASM_NAME_NO_UNDERSCORES
# elif defined(__linux__) /* Linux a.out */
# define MFX_ASM_ALIGN_PTWO
# elif defined(__DJGPP__)
# define MFX_ASM_ALIGN_PTWO
# elif defined(__GO32__) /* djgpp v1 */
# define MFX_ASM_CANNOT_USE_EBP
# elif defined(__EMX__)
# define MFX_ASM_ALIGN_PTWO
# define MFX_ASM_CANNOT_USE_EBP
# endif
#endif
#endif
/***********************************************************************
// name always uses underscores
// [ OLD: name (default: with underscores) ]
************************************************************************/
#if !defined(LZO_ASM_NAME)
# define LZO_ASM_NAME(n) _ ## n
#if 0
# if defined(MFX_ASM_NAME_NO_UNDERSCORES)
# define LZO_ASM_NAME(n) n
# else
# define LZO_ASM_NAME(n) _ ## n
# endif
#endif
#endif
/***********************************************************************
// .type (default: do not use)
************************************************************************/
#if defined(MFX_ASM_HAVE_TYPE)
# define LZO_PUBLIC(func) \
ALIGN3 ; .type LZO_ASM_NAME(func),@function ; \
.globl LZO_ASM_NAME(func) ; LZO_ASM_NAME(func):
# define LZO_PUBLIC_END(func) \
.size LZO_ASM_NAME(func),.-LZO_ASM_NAME(func)
#else
# define LZO_PUBLIC(func) \
ALIGN3 ; .globl LZO_ASM_NAME(func) ; LZO_ASM_NAME(func):
# define LZO_PUBLIC_END(func)
#endif
/***********************************************************************
// .align (default: bytes)
************************************************************************/
#if !defined(MFX_ASM_ALIGN_BYTES) && !defined(MFX_ASM_ALIGN_PTWO)
# define MFX_ASM_ALIGN_BYTES
#endif
#if !defined(LZO_ASM_ALIGN)
# if defined(MFX_ASM_ALIGN_PTWO)
# define LZO_ASM_ALIGN(x) .align x
# else
# define LZO_ASM_ALIGN(x) .align (1 << (x))
# endif
#endif
#define ALIGN1 LZO_ASM_ALIGN(1)
#define ALIGN2 LZO_ASM_ALIGN(2)
#define ALIGN3 LZO_ASM_ALIGN(3)
/***********************************************************************
// ebp usage (default: can use)
************************************************************************/
#if !defined(MFX_ASM_CANNOT_USE_EBP)
# if 1 && !defined(N_3_EBP) && !defined(N_255_EBP)
# define N_3_EBP
# endif
# if 0 && !defined(N_3_EBP) && !defined(N_255_EBP)
# define N_255_EBP
# endif
#endif
#if defined(N_3_EBP) && defined(N_255_EBP)
# error
#endif
#if defined(MFX_ASM_CANNOT_USE_EBP)
# if defined(N_3_EBP) || defined(N_255_EBP)
# error
# endif
#endif
#if !defined(N_3)
# if defined(N_3_EBP)
# define N_3 %ebp
# else
# define N_3 $3
# endif
#endif
#if !defined(N_255)
# if defined(N_255_EBP)
# define N_255 %ebp
# define NOTL_3(r) xorl %ebp,r
# else
# define N_255 $255
# endif
#endif
#if !defined(NOTL_3)
# define NOTL_3(r) xorl N_3,r
#endif
/***********************************************************************
//
************************************************************************/
#ifndef INP
#define INP 4+36(%esp)
#define INS 8+36(%esp)
#define OUTP 12+36(%esp)
#define OUTS 16+36(%esp)
#endif
#define INEND 4(%esp)
#define OUTEND (%esp)
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_INPUT)
# define TEST_IP_R(r) cmpl r,INEND ; jb .L_input_overrun
# define TEST_IP(addr,r) leal addr,r ; TEST_IP_R(r)
#else
# define TEST_IP_R(r)
# define TEST_IP(addr,r)
#endif
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
# define TEST_OP_R(r) cmpl r,OUTEND ; jb .L_output_overrun
# define TEST_OP(addr,r) leal addr,r ; TEST_OP_R(r)
#else
# define TEST_OP_R(r)
# define TEST_OP(addr,r)
#endif
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND)
# define TEST_LOOKBEHIND(r) cmpl OUTP,r ; jb .L_lookbehind_overrun
#else
# define TEST_LOOKBEHIND(r)
#endif
/***********************************************************************
//
************************************************************************/
#define LODSB movb (%esi),%al ; incl %esi
#define MOVSB(r1,r2,x) movb (r1),x ; incl r1 ; movb x,(r2) ; incl r2
#define MOVSW(r1,r2,x) movb (r1),x ; movb x,(r2) ; \
movb 1(r1),x ; addl $2,r1 ; \
movb x,1(r2) ; addl $2,r2
#define MOVSL(r1,r2,x) movl (r1),x ; addl $4,r1 ; movl x,(r2) ; addl $4,r2
#if defined(LZO_DEBUG)
#define COPYB_C(r1,r2,x,rc) \
cmpl $0,rc ; jz .L_assert_fail; \
9: MOVSB(r1,r2,x) ; decl rc ; jnz 9b
#define COPYL_C(r1,r2,x,rc) \
cmpl $0,rc ; jz .L_assert_fail; \
9: MOVSL(r1,r2,x) ; decl rc ; jnz 9b
#else
#define COPYB_C(r1,r2,x,rc) \
9: MOVSB(r1,r2,x) ; decl rc ; jnz 9b
#define COPYL_C(r1,r2,x,rc) \
9: MOVSL(r1,r2,x) ; decl rc ; jnz 9b
#endif
#define COPYB(r1,r2,x) COPYB_C(r1,r2,x,%ecx)
#define COPYL(r1,r2,x) COPYL_C(r1,r2,x,%ecx)
/***********************************************************************
// not used
************************************************************************/
#if 0
#if 0
#define REP_MOVSB(x) rep ; movsb
#define REP_MOVSL(x) shrl $2,%ecx ; rep ; movsl
#elif 1
#define REP_MOVSB(x) COPYB(%esi,%edi,x)
#define REP_MOVSL(x) shrl $2,%ecx ; COPYL(%esi,%edi,x)
#else
#define REP_MOVSB(x) rep ; movsb
#define REP_MOVSL(x) jmp 9f ; 8: movsb ; decl %ecx ; \
9: testl $3,%edi ; jnz 8b ; \
movl %ecx,x ; shrl $2,%ecx ; andl $3,x ; \
rep ; movsl ; movl x,%ecx ; rep ; movsb
#endif
#if 1
#define NEGL(x) negl x
#else
#define NEGL(x) xorl $-1,x ; incl x
#endif
#endif
/*
vi:ts=4
*/
+107
View File
@@ -0,0 +1,107 @@
/* io.c -- portable io functions
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
#include "lzo_conf.h"
#include <lzoutil.h>
#if !defined(NO_STDIO_H)
#include <stdio.h>
#undef lzo_fread
#undef lzo_fwrite
/***********************************************************************
//
************************************************************************/
LZO_PUBLIC(lzo_uint)
lzo_fread(LZO_FILEP ff, lzo_voidp s, lzo_uint len)
{
FILE *f = (FILE *) ff;
#if 1 && (LZO_UINT_MAX <= SIZE_T_MAX)
return fread(s,1,len,f);
#else
lzo_byte *p = (lzo_byte *) s;
lzo_uint l = 0;
size_t k;
unsigned char *b;
unsigned char buf[512];
while (l < len)
{
k = len - l > sizeof(buf) ? sizeof(buf) : (size_t) (len - l);
k = fread(buf,1,k,f);
if (k <= 0)
break;
l += k;
b = buf; do *p++ = *b++; while (--k > 0);
}
return l;
#endif
}
/***********************************************************************
//
************************************************************************/
LZO_PUBLIC(lzo_uint)
lzo_fwrite(LZO_FILEP ff, const lzo_voidp s, lzo_uint len)
{
FILE *f = (FILE *) ff;
#if 1 && (LZO_UINT_MAX <= SIZE_T_MAX)
return fwrite(s,1,len,f);
#else
const lzo_byte *p = (const lzo_byte *) s;
lzo_uint l = 0;
size_t k, n;
unsigned char *b;
unsigned char buf[512];
while (l < len)
{
k = len - l > sizeof(buf) ? sizeof(buf) : (size_t) (len - l);
b = buf; n = k; do *b++ = *p++; while (--n > 0);
k = fwrite(buf,1,k,f);
if (k <= 0)
break;
l += k;
}
return l;
#endif
}
#endif /* !NO_STDIO_H */
/*
vi:ts=4:et
*/
+615
View File
@@ -0,0 +1,615 @@
<?xml version="1.0" encoding="ks_c_5601-1987"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="lzo"
ProjectGUID="{3AE0E6E6-B750-4769-9A6E-0D47012F1B40}"
RootNamespace="lzo"
SccProjectName="SAK"
SccAuxPath="SAK"
SccLocalPath="SAK"
SccProvider="SAK"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="."
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="2"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
AdditionalIncludeDirectories="."
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="¼Ò½º ÆÄÀÏ"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\alloc.c"
>
</File>
<File
RelativePath=".\io.c"
>
</File>
<File
RelativePath=".\lzo1.c"
>
</File>
<File
RelativePath=".\lzo1_99.c"
>
</File>
<File
RelativePath=".\lzo1a.c"
>
</File>
<File
RelativePath=".\lzo1a_99.c"
>
</File>
<File
RelativePath=".\lzo1b_1.c"
>
</File>
<File
RelativePath=".\lzo1b_2.c"
>
</File>
<File
RelativePath=".\lzo1b_3.c"
>
</File>
<File
RelativePath=".\lzo1b_4.c"
>
</File>
<File
RelativePath=".\lzo1b_5.c"
>
</File>
<File
RelativePath=".\lzo1b_6.c"
>
</File>
<File
RelativePath=".\lzo1b_7.c"
>
</File>
<File
RelativePath=".\lzo1b_8.c"
>
</File>
<File
RelativePath=".\lzo1b_9.c"
>
</File>
<File
RelativePath=".\lzo1b_99.c"
>
</File>
<File
RelativePath=".\lzo1b_9x.c"
>
</File>
<File
RelativePath=".\lzo1b_cc.c"
>
</File>
<File
RelativePath=".\lzo1b_d1.c"
>
</File>
<File
RelativePath=".\lzo1b_d2.c"
>
</File>
<File
RelativePath=".\lzo1b_rr.c"
>
</File>
<File
RelativePath=".\lzo1b_xx.c"
>
</File>
<File
RelativePath=".\lzo1c_1.c"
>
</File>
<File
RelativePath=".\lzo1c_2.c"
>
</File>
<File
RelativePath=".\lzo1c_3.c"
>
</File>
<File
RelativePath=".\lzo1c_4.c"
>
</File>
<File
RelativePath=".\lzo1c_5.c"
>
</File>
<File
RelativePath=".\lzo1c_6.c"
>
</File>
<File
RelativePath=".\lzo1c_7.c"
>
</File>
<File
RelativePath=".\lzo1c_8.c"
>
</File>
<File
RelativePath=".\lzo1c_9.c"
>
</File>
<File
RelativePath=".\lzo1c_99.c"
>
</File>
<File
RelativePath=".\lzo1c_9x.c"
>
</File>
<File
RelativePath=".\lzo1c_cc.c"
>
</File>
<File
RelativePath=".\lzo1c_d1.c"
>
</File>
<File
RelativePath=".\lzo1c_d2.c"
>
</File>
<File
RelativePath=".\lzo1c_rr.c"
>
</File>
<File
RelativePath=".\lzo1c_xx.c"
>
</File>
<File
RelativePath=".\lzo1f_1.c"
>
</File>
<File
RelativePath=".\lzo1f_9x.c"
>
</File>
<File
RelativePath=".\lzo1f_d1.c"
>
</File>
<File
RelativePath=".\lzo1f_d2.c"
>
</File>
<File
RelativePath=".\lzo1x_1.c"
>
</File>
<File
RelativePath=".\lzo1x_1k.c"
>
</File>
<File
RelativePath=".\lzo1x_1l.c"
>
</File>
<File
RelativePath=".\lzo1x_1o.c"
>
</File>
<File
RelativePath=".\lzo1x_9x.c"
>
</File>
<File
RelativePath=".\lzo1x_d1.c"
>
</File>
<File
RelativePath=".\lzo1x_d2.c"
>
</File>
<File
RelativePath=".\lzo1x_d3.c"
>
</File>
<File
RelativePath=".\lzo1x_o.c"
>
</File>
<File
RelativePath=".\lzo1y_1.c"
>
</File>
<File
RelativePath=".\lzo1y_9x.c"
>
</File>
<File
RelativePath=".\lzo1y_d1.c"
>
</File>
<File
RelativePath=".\lzo1y_d2.c"
>
</File>
<File
RelativePath=".\lzo1y_d3.c"
>
</File>
<File
RelativePath=".\lzo1y_o.c"
>
</File>
<File
RelativePath=".\lzo1z_9x.c"
>
</File>
<File
RelativePath=".\lzo1z_d1.c"
>
</File>
<File
RelativePath=".\lzo1z_d2.c"
>
</File>
<File
RelativePath=".\lzo1z_d3.c"
>
</File>
<File
RelativePath=".\lzo2a_9x.c"
>
</File>
<File
RelativePath=".\lzo2a_d1.c"
>
</File>
<File
RelativePath=".\lzo2a_d2.c"
>
</File>
<File
RelativePath=".\lzo_crc.c"
>
</File>
<File
RelativePath=".\lzo_dll.c"
>
</File>
<File
RelativePath=".\lzo_init.c"
>
</File>
<File
RelativePath=".\lzo_ptr.c"
>
</File>
<File
RelativePath=".\lzo_str.c"
>
</File>
<File
RelativePath=".\lzo_util.c"
>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Çì´õ ÆÄÀÏ"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\compr1b.h"
>
</File>
<File
RelativePath=".\compr1c.h"
>
</File>
<File
RelativePath=".\config1.h"
>
</File>
<File
RelativePath=".\config1a.h"
>
</File>
<File
RelativePath=".\config1b.h"
>
</File>
<File
RelativePath=".\config1c.h"
>
</File>
<File
RelativePath=".\config1f.h"
>
</File>
<File
RelativePath=".\config1x.h"
>
</File>
<File
RelativePath=".\config1y.h"
>
</File>
<File
RelativePath=".\config1z.h"
>
</File>
<File
RelativePath=".\config2a.h"
>
</File>
<File
RelativePath=".\fake16.h"
>
</File>
<File
RelativePath=".\lzo1.h"
>
</File>
<File
RelativePath=".\lzo16bit.h"
>
</File>
<File
RelativePath=".\lzo1a.h"
>
</File>
<File
RelativePath=".\lzo1a_de.h"
>
</File>
<File
RelativePath=".\lzo1b.h"
>
</File>
<File
RelativePath=".\lzo1b_cc.h"
>
</File>
<File
RelativePath=".\lzo1b_de.h"
>
</File>
<File
RelativePath=".\lzo1c.h"
>
</File>
<File
RelativePath=".\lzo1c_cc.h"
>
</File>
<File
RelativePath=".\lzo1f.h"
>
</File>
<File
RelativePath=".\lzo1x.h"
>
</File>
<File
RelativePath=".\lzo1y.h"
>
</File>
<File
RelativePath=".\lzo1z.h"
>
</File>
<File
RelativePath=".\lzo2a.h"
>
</File>
<File
RelativePath=".\lzo_conf.h"
>
</File>
<File
RelativePath=".\lzo_dict.h"
>
</File>
<File
RelativePath=".\lzo_ptr.h"
>
</File>
<File
RelativePath=".\lzo_util.h"
>
</File>
<File
RelativePath=".\lzoconf.h"
>
</File>
<File
RelativePath=".\lzoutil.h"
>
</File>
<File
RelativePath=".\stats1a.h"
>
</File>
<File
RelativePath=".\stats1b.h"
>
</File>
<File
RelativePath=".\stats1c.h"
>
</File>
<File
RelativePath=".\stdafx.h"
>
</File>
<File
RelativePath=".\targetver.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
+10
View File
@@ -0,0 +1,10 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}
+200
View File
@@ -0,0 +1,200 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3AE0E6E6-B750-4769-9A6E-0D47012F1B40}</ProjectGuid>
<RootNamespace>lzo</RootNamespace>
<SccProjectName>SAK</SccProjectName>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
<SccProvider>SAK</SccProvider>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="alloc.c" />
<ClCompile Include="io.c" />
<ClCompile Include="lzo1.c" />
<ClCompile Include="lzo1_99.c" />
<ClCompile Include="lzo1a.c" />
<ClCompile Include="lzo1a_99.c" />
<ClCompile Include="lzo1b_1.c" />
<ClCompile Include="lzo1b_2.c" />
<ClCompile Include="lzo1b_3.c" />
<ClCompile Include="lzo1b_4.c" />
<ClCompile Include="lzo1b_5.c" />
<ClCompile Include="lzo1b_6.c" />
<ClCompile Include="lzo1b_7.c" />
<ClCompile Include="lzo1b_8.c" />
<ClCompile Include="lzo1b_9.c" />
<ClCompile Include="lzo1b_99.c" />
<ClCompile Include="lzo1b_9x.c" />
<ClCompile Include="lzo1b_cc.c" />
<ClCompile Include="lzo1b_d1.c" />
<ClCompile Include="lzo1b_d2.c" />
<ClCompile Include="lzo1b_rr.c" />
<ClCompile Include="lzo1b_xx.c" />
<ClCompile Include="lzo1c_1.c" />
<ClCompile Include="lzo1c_2.c" />
<ClCompile Include="lzo1c_3.c" />
<ClCompile Include="lzo1c_4.c" />
<ClCompile Include="lzo1c_5.c" />
<ClCompile Include="lzo1c_6.c" />
<ClCompile Include="lzo1c_7.c" />
<ClCompile Include="lzo1c_8.c" />
<ClCompile Include="lzo1c_9.c" />
<ClCompile Include="lzo1c_99.c" />
<ClCompile Include="lzo1c_9x.c" />
<ClCompile Include="lzo1c_cc.c" />
<ClCompile Include="lzo1c_d1.c" />
<ClCompile Include="lzo1c_d2.c" />
<ClCompile Include="lzo1c_rr.c" />
<ClCompile Include="lzo1c_xx.c" />
<ClCompile Include="lzo1f_1.c" />
<ClCompile Include="lzo1f_9x.c" />
<ClCompile Include="lzo1f_d1.c" />
<ClCompile Include="lzo1f_d2.c" />
<ClCompile Include="lzo1x_1.c" />
<ClCompile Include="lzo1x_1k.c" />
<ClCompile Include="lzo1x_1l.c" />
<ClCompile Include="lzo1x_1o.c" />
<ClCompile Include="lzo1x_9x.c" />
<ClCompile Include="lzo1x_d1.c" />
<ClCompile Include="lzo1x_d2.c" />
<ClCompile Include="lzo1x_d3.c" />
<ClCompile Include="lzo1x_o.c" />
<ClCompile Include="lzo1y_1.c" />
<ClCompile Include="lzo1y_9x.c" />
<ClCompile Include="lzo1y_d1.c" />
<ClCompile Include="lzo1y_d2.c" />
<ClCompile Include="lzo1y_d3.c" />
<ClCompile Include="lzo1y_o.c" />
<ClCompile Include="lzo1z_9x.c" />
<ClCompile Include="lzo1z_d1.c" />
<ClCompile Include="lzo1z_d2.c" />
<ClCompile Include="lzo1z_d3.c" />
<ClCompile Include="lzo2a_9x.c" />
<ClCompile Include="lzo2a_d1.c" />
<ClCompile Include="lzo2a_d2.c" />
<ClCompile Include="lzo_crc.c" />
<ClCompile Include="lzo_dll.c" />
<ClCompile Include="lzo_init.c" />
<ClCompile Include="lzo_ptr.c" />
<ClCompile Include="lzo_str.c" />
<ClCompile Include="lzo_util.c" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="compr1b.h" />
<ClInclude Include="compr1c.h" />
<ClInclude Include="config1.h" />
<ClInclude Include="config1a.h" />
<ClInclude Include="config1b.h" />
<ClInclude Include="config1c.h" />
<ClInclude Include="config1f.h" />
<ClInclude Include="config1x.h" />
<ClInclude Include="config1y.h" />
<ClInclude Include="config1z.h" />
<ClInclude Include="config2a.h" />
<ClInclude Include="fake16.h" />
<ClInclude Include="lzo1.h" />
<ClInclude Include="lzo16bit.h" />
<ClInclude Include="lzo1a.h" />
<ClInclude Include="lzo1a_de.h" />
<ClInclude Include="lzo1b.h" />
<ClInclude Include="lzo1b_cc.h" />
<ClInclude Include="lzo1b_de.h" />
<ClInclude Include="lzo1c.h" />
<ClInclude Include="lzo1c_cc.h" />
<ClInclude Include="lzo1f.h" />
<ClInclude Include="lzo1x.h" />
<ClInclude Include="lzo1y.h" />
<ClInclude Include="lzo1z.h" />
<ClInclude Include="lzo2a.h" />
<ClInclude Include="lzo_conf.h" />
<ClInclude Include="lzo_dict.h" />
<ClInclude Include="lzo_ptr.h" />
<ClInclude Include="lzo_util.h" />
<ClInclude Include="lzoconf.h" />
<ClInclude Include="lzoutil.h" />
<ClInclude Include="stats1a.h" />
<ClInclude Include="stats1b.h" />
<ClInclude Include="stats1c.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+341
View File
@@ -0,0 +1,341 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="소스 파일">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="헤더 파일">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="alloc.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="io.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1_99.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1a.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1a_99.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_3.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_4.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_5.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_6.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_7.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_8.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_9.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_99.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_9x.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_cc.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_d1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_d2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_rr.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1b_xx.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_3.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_4.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_5.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_6.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_7.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_8.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_9.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_99.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_9x.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_cc.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_d1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_d2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_rr.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1c_xx.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1f_1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1f_9x.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1f_d1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1f_d2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_1k.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_1l.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_1o.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_9x.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_d1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_d2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_d3.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1x_o.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1y_1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1y_9x.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1y_d1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1y_d2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1y_d3.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1y_o.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1z_9x.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1z_d1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1z_d2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo1z_d3.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo2a_9x.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo2a_d1.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo2a_d2.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo_crc.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo_dll.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo_init.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo_ptr.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo_str.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="lzo_util.c">
<Filter>소스 파일</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>소스 파일</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="compr1b.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="compr1c.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config1.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config1a.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config1b.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config1c.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config1f.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config1x.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config1y.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config1z.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="config2a.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="fake16.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo16bit.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1a.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1a_de.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1b.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1b_cc.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1b_de.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1c.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1c_cc.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1f.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1x.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1y.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo1z.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo2a.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo_conf.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo_dict.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo_ptr.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzo_util.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzoconf.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="lzoutil.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="stats1a.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="stats1b.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="stats1c.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>헤더 파일</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>헤더 파일</Filter>
</ClInclude>
</ItemGroup>
</Project>
+643
View File
@@ -0,0 +1,643 @@
/* lzo1.c -- implementation of the LZO1 algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
#include <lzo1.h>
#include "lzo_conf.h"
/***********************************************************************
// The next two defines can be changed to customize LZO1.
// The default version is LZO1-5/1.
************************************************************************/
/* run bits (3 - 5) - the compressor and the decompressor
* must use the same value. */
#if !defined(RBITS)
# define RBITS 5
#endif
/* compression level (1 - 9) - this only affects the compressor.
* 1 is fastest, 9 is best compression ratio */
#if !defined(CLEVEL)
# define CLEVEL 1 /* fastest by default */
#endif
/* check configuration */
#if (RBITS < 3 || RBITS > 5)
# error "invalid RBITS"
#endif
#if (CLEVEL < 1 || CLEVEL > 9)
# error "invalid CLEVEL"
#endif
/***********************************************************************
// You should not have to change anything below this line.
************************************************************************/
#include "lzo_util.h"
/***********************************************************************
//
************************************************************************/
/*
Format of the marker byte
76543210
--------
00000000 a long run (a 'R0' run) - there are short and long R0 runs
000rrrrr a short run with len r
mmmooooo a short match (len = 2+m, o = offset low bits)
111ooooo a long match (o = offset low bits)
*/
#define RSIZE (1 << RBITS)
#define RMASK (RSIZE - 1)
#define OBITS RBITS /* offset and run-length use same bits */
#define OSIZE (1 << OBITS)
#define OMASK (OSIZE - 1)
#define MBITS (8 - OBITS)
#define MSIZE (1 << MBITS)
#define MMASK (MSIZE - 1)
/* sanity checks */
#if (OBITS < 3 || OBITS > 5)
# error "invalid OBITS"
#endif
#if (MBITS < 3 || MBITS > 5)
# error "invalid MBITS"
#endif
/***********************************************************************
// some macros to improve readability
************************************************************************/
/* Minimum len of a match */
#define MIN_MATCH 3
#define THRESHOLD (MIN_MATCH - 1)
/* Minimum len of match coded in 2 bytes */
#define MIN_MATCH_SHORT MIN_MATCH
/* Maximum len of match coded in 2 bytes */
#define MAX_MATCH_SHORT (THRESHOLD + (MSIZE - 2))
/* MSIZE - 2: 0 is used to indicate runs,
* MSIZE-1 is used to indicate a long match */
/* Minimum len of match coded in 3 bytes */
#define MIN_MATCH_LONG (MAX_MATCH_SHORT + 1)
/* Maximum len of match coded in 3 bytes */
#define MAX_MATCH_LONG (MIN_MATCH_LONG + 255)
/* Maximum offset of a match */
#define MAX_OFFSET (1 << (8 + OBITS))
/*
RBITS | MBITS MIN THR. MSIZE MAXS MINL MAXL MAXO R0MAX R0FAST
======+===============================================================
3 | 5 3 2 32 32 33 288 2048 263 256
4 | 4 3 2 16 16 17 272 4096 271 264
5 | 3 3 2 8 8 9 264 8192 287 280
*/
/***********************************************************************
// internal configuration
// all of these affect compression only
************************************************************************/
/* return -1 instead of copying if the data cannot be compressed */
#undef LZO_RETURN_IF_NOT_COMPRESSIBLE
/* choose the hashing strategy */
#ifndef LZO_HASH
#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_A
#endif
#define D_INDEX1(d,p) d = DM((0x21*DX2(p,5,5)) >> 5)
#define D_INDEX2(d,p) d = d ^ D_MASK
#define DBITS (8 + RBITS)
#include "lzo_dict.h"
#define DVAL_LEN DVAL_LOOKAHEAD
/***********************************************************************
// get algorithm info, return memory required for compression
************************************************************************/
LZO_EXTERN(lzo_uint) lzo1_info ( int *rbits, int *clevel );
LZO_PUBLIC(lzo_uint)
lzo1_info ( int *rbits, int *clevel )
{
if (rbits)
*rbits = RBITS;
if (clevel)
*clevel = CLEVEL;
return D_SIZE * lzo_sizeof(lzo_byte *);
}
/***********************************************************************
// decode a R0 literal run (a long run)
************************************************************************/
#define R0MIN (RSIZE) /* Minimum len of R0 run of literals */
#define R0MAX (R0MIN + 255) /* Maximum len of R0 run of literals */
#define R0FAST (R0MAX & ~7u) /* R0MAX aligned to 8 byte boundary */
#if (R0MAX - R0FAST != 7) || ((R0FAST & 7) != 0)
# error "something went wrong"
#endif
/* 7 special codes from R0FAST+1 .. R0MAX
* these codes mean long R0 runs with lengths
* 512, 1024, 2048, 4096, 8192, 16384, 32768 */
/***********************************************************************
// LZO1 decompress a block of data.
//
// Could be easily translated into assembly code.
************************************************************************/
LZO_PUBLIC(int)
lzo1_decompress ( const lzo_byte *in , lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
lzo_byte *op;
const lzo_byte *ip;
const lzo_byte * const ip_end = in + in_len;
lzo_uint t;
LZO_UNUSED(wrkmem);
#if defined(__LZO_QUERY_DECOMPRESS)
if (__LZO_IS_DECOMPRESS_QUERY(in,in_len,out,out_len,wrkmem))
return __LZO_QUERY_DECOMPRESS(in,in_len,out,out_len,wrkmem,0,0);
#endif
op = out;
ip = in;
while (ip < ip_end)
{
t = *ip++; /* get marker */
if (t < R0MIN) /* a literal run */
{
if (t == 0) /* a R0 literal run */
{
t = *ip++;
if (t >= R0FAST - R0MIN) /* a long R0 run */
{
t -= R0FAST - R0MIN;
if (t == 0)
t = R0FAST;
else
{
#if 0
t = 256u << ((unsigned) t);
#else
/* help the optimizer */
lzo_uint tt = 256;
do tt <<= 1; while (--t > 0);
t = tt;
#endif
}
MEMCPY8_DS(op,ip,t);
continue;
}
t += R0MIN;
}
MEMCPY_DS(op,ip,t);
}
else /* a match */
{
lzo_uint tt;
/* get match offset */
const lzo_byte *m_pos = op - 1;
m_pos -= (lzo_uint)(t & OMASK) | (((lzo_uint) *ip++) << OBITS);
/* get match len */
if (t >= ((MSIZE - 1) << OBITS)) /* all m-bits set */
tt = (MIN_MATCH_LONG - THRESHOLD) + *ip++; /* a long match */
else
tt = t >> OBITS; /* a short match */
assert(m_pos >= out);
assert(m_pos < op);
/* a half unrolled loop */
*op++ = *m_pos++;
*op++ = *m_pos++;
MEMMOVE_DS(op,m_pos,tt);
}
}
*out_len = op - out;
/* the next line is the only check in the decompressor ! */
return (ip == ip_end ? LZO_E_OK :
(ip < ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
}
/***********************************************************************
// code a literal run
************************************************************************/
static lzo_byte *
store_run(lzo_byte *op, const lzo_byte *ii, lzo_uint r_len)
{
assert(r_len > 0);
/* code a long R0 run */
if (r_len >= 512)
{
unsigned r_bits = 7; /* 256 << 7 == 32768 */
do {
while (r_len >= (256u << r_bits))
{
r_len -= (256u << r_bits);
*op++ = 0; *op++ = LZO_BYTE((R0FAST - R0MIN) + r_bits);
MEMCPY8_DS(op, ii, (256u << r_bits));
}
} while (--r_bits > 0);
}
while (r_len >= R0FAST)
{
r_len -= R0FAST;
*op++ = 0; *op++ = R0FAST - R0MIN;
MEMCPY8_DS(op, ii, R0FAST);
}
if (r_len >= R0MIN)
{
/* code a short R0 run */
*op++ = 0; *op++ = LZO_BYTE(r_len - R0MIN);
MEMCPY_DS(op, ii, r_len);
}
else if (r_len > 0)
{
/* code a 'normal' run */
*op++ = LZO_BYTE(r_len);
MEMCPY_DS(op, ii, r_len);
}
assert(r_len == 0);
return op;
}
/***********************************************************************
// LZO1 compress a block of data.
//
// Could be translated into assembly code without too much effort.
//
// I apologize for the spaghetti code, but it really helps the optimizer.
************************************************************************/
static int
do_compress ( const lzo_byte *in , lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
const lzo_byte *ip;
#if defined(__LZO_HASH_INCREMENTAL)
lzo_uint32 dv;
#endif
lzo_byte *op;
const lzo_byte *m_pos;
const lzo_byte * const ip_end = in+in_len - DVAL_LEN - MIN_MATCH_LONG;
const lzo_byte * const in_end = in+in_len - DVAL_LEN;
const lzo_byte *ii;
lzo_dict_p const dict = (lzo_dict_p) wrkmem;
#if !defined(NDEBUG)
const lzo_byte *m_pos_sav;
#endif
op = out;
ip = in;
ii = ip; /* point to start of literal run */
if (in_len <= MIN_MATCH_LONG + DVAL_LEN + 1)
goto the_end;
/* init dictionary */
#if defined(LZO_DETERMINISTIC)
BZERO8_PTR(wrkmem,sizeof(lzo_dict_t),D_SIZE);
#endif
DVAL_FIRST(dv,ip);
UPDATE_D(dict,0,dv,ip,in);
ip++;
DVAL_NEXT(dv,ip);
do {
lzo_moff_t m_off;
lzo_uint dindex;
DINDEX1(dindex,ip);
GINDEX(m_pos,m_off,dict,dindex,in);
if (LZO_CHECK_MPOS(m_pos,m_off,in,ip,MAX_OFFSET))
goto literal;
if (m_pos[0] == ip[0] && m_pos[1] == ip[1] && m_pos[2] == ip[2])
goto match;
DINDEX2(dindex,ip);
GINDEX(m_pos,m_off,dict,dindex,in);
if (LZO_CHECK_MPOS(m_pos,m_off,in,ip,MAX_OFFSET))
goto literal;
if (m_pos[0] == ip[0] && m_pos[1] == ip[1] && m_pos[2] == ip[2])
goto match;
goto literal;
literal:
UPDATE_I(dict,0,dindex,ip,in);
if (++ip >= ip_end)
break;
continue;
match:
UPDATE_I(dict,0,dindex,ip,in);
#if !defined(NDEBUG) && defined(LZO_DICT_USE_PTR)
m_pos_sav = m_pos;
#endif
m_pos += 3;
{
/* we have found a match (of at least length 3) */
#if !defined(NDEBUG) && !defined(LZO_DICT_USE_PTR)
assert((m_pos_sav = ip - m_off) == (m_pos - 3));
#endif
/* 1) store the current literal run */
if (pd(ip,ii) > 0)
{
lzo_uint t = pd(ip,ii);
#if 1
/* OPTIMIZED: inline the copying of a short run */
if (t < R0MIN)
{
*op++ = LZO_BYTE(t);
MEMCPY_DS(op, ii, t);
}
else
#endif
op = store_run(op,ii,t);
}
/* 2a) compute match len */
ii = ip; /* point to start of current match */
/* we already matched MIN_MATCH bytes,
* m_pos also already advanced MIN_MATCH bytes */
ip += MIN_MATCH;
assert(m_pos < ip);
/* try to match another MIN_MATCH_LONG - MIN_MATCH bytes
* to see if we get a long match */
#define PS *m_pos++ != *ip++
#if (MIN_MATCH_LONG - MIN_MATCH == 2) /* MBITS == 2 */
if (PS || PS)
#elif (MIN_MATCH_LONG - MIN_MATCH == 6) /* MBITS == 3 */
if (PS || PS || PS || PS || PS || PS)
#elif (MIN_MATCH_LONG - MIN_MATCH == 14) /* MBITS == 4 */
if (PS || PS || PS || PS || PS || PS || PS ||
PS || PS || PS || PS || PS || PS || PS)
#elif (MIN_MATCH_LONG - MIN_MATCH == 30) /* MBITS == 5 */
if (PS || PS || PS || PS || PS || PS || PS || PS ||
PS || PS || PS || PS || PS || PS || PS || PS ||
PS || PS || PS || PS || PS || PS || PS || PS ||
PS || PS || PS || PS || PS || PS)
#else
# error "MBITS not yet implemented"
#endif
{
lzo_uint m_len;
/* 2b) code a short match */
assert((lzo_moff_t)(ip-m_pos) == m_off);
--ip; /* ran one too far, point back to non-match */
m_len = ip - ii;
assert(m_len >= MIN_MATCH_SHORT);
assert(m_len <= MAX_MATCH_SHORT);
assert(m_off > 0);
assert(m_off <= MAX_OFFSET);
assert(ii-m_off == m_pos_sav);
assert(lzo_memcmp(m_pos_sav,ii,m_len) == 0);
--m_off;
/* code short match len + low offset bits */
*op++ = LZO_BYTE(((m_len - THRESHOLD) << OBITS) |
(m_off & OMASK));
/* code high offset bits */
*op++ = LZO_BYTE(m_off >> OBITS);
/* 2c) Insert phrases (beginning with ii+1) into the dictionary. */
#define SI /* nothing */
#define DI ++ii; DVAL_NEXT(dv,ii); UPDATE_D(dict,0,dv,ii,in);
#define XI assert(ii < ip); ii = ip; DVAL_FIRST(dv,(ip));
#if (CLEVEL == 9) || (CLEVEL >= 7 && MBITS <= 4) || (CLEVEL >= 5 && MBITS <= 3)
/* Insert the whole match (ii+1)..(ip-1) into dictionary. */
++ii;
do {
DVAL_NEXT(dv,ii);
UPDATE_D(dict,0,dv,ii,in);
} while (++ii < ip);
DVAL_NEXT(dv,ii);
assert(ii == ip);
DVAL_ASSERT(dv,ip);
#elif (CLEVEL >= 3)
SI DI DI XI
#elif (CLEVEL >= 2)
SI DI XI
#else
XI
#endif
}
else
{
/* we've found a long match - see how far we can still go */
const lzo_byte *end;
lzo_uint m_len;
assert(ip <= in_end);
assert(ii == ip - MIN_MATCH_LONG);
#if defined(__LZO_CHECKER)
if (in_end - ip <= (MAX_MATCH_LONG - MIN_MATCH_LONG))
#else
if (in_end <= ip + (MAX_MATCH_LONG - MIN_MATCH_LONG))
#endif
end = in_end;
else
{
end = ip + (MAX_MATCH_LONG - MIN_MATCH_LONG);
assert(end < in_end);
}
while (ip < end && *m_pos == *ip)
m_pos++, ip++;
assert(ip <= in_end);
/* 2b) code the long match */
m_len = ip - ii;
assert(m_len >= MIN_MATCH_LONG);
assert(m_len <= MAX_MATCH_LONG);
assert(m_off > 0);
assert(m_off <= MAX_OFFSET);
assert(ii-m_off == m_pos_sav);
assert(lzo_memcmp(m_pos_sav,ii,m_len) == 0);
assert((lzo_moff_t)(ip-m_pos) == m_off);
--m_off;
/* code long match flag + low offset bits */
*op++ = LZO_BYTE(((MSIZE - 1) << OBITS) | (m_off & OMASK));
/* code high offset bits */
*op++ = LZO_BYTE(m_off >> OBITS);
/* code match len */
*op++ = LZO_BYTE(m_len - MIN_MATCH_LONG);
/* 2c) Insert phrases (beginning with ii+1) into the dictionary. */
#if (CLEVEL == 9)
/* Insert the whole match (ii+1)..(ip-1) into dictionary. */
/* This is not recommended because it is slow. */
++ii;
do {
DVAL_NEXT(dv,ii);
UPDATE_D(dict,0,dv,ii,in);
} while (++ii < ip);
DVAL_NEXT(dv,ii);
assert(ii == ip);
DVAL_ASSERT(dv,ip);
#elif (CLEVEL >= 8)
SI DI DI DI DI DI DI DI DI XI
#elif (CLEVEL >= 7)
SI DI DI DI DI DI DI DI XI
#elif (CLEVEL >= 6)
SI DI DI DI DI DI DI XI
#elif (CLEVEL >= 5)
SI DI DI DI DI XI
#elif (CLEVEL >= 4)
SI DI DI DI XI
#elif (CLEVEL >= 3)
SI DI DI XI
#elif (CLEVEL >= 2)
SI DI XI
#else
XI
#endif
}
/* ii now points to the start of next literal run */
assert(ii == ip);
}
} while (ip < ip_end);
the_end:
assert(ip <= in_end);
#if defined(LZO_RETURN_IF_NOT_COMPRESSIBLE)
/* return -1 if op == out to indicate that we
* couldn't compress and didn't copy anything.
*/
if (op == out)
{
*out_len = 0;
return LZO_E_NOT_COMPRESSIBLE;
}
#endif
/* store the final literal run */
if (pd(in_end+DVAL_LEN,ii) > 0)
op = store_run(op,ii,pd(in_end+DVAL_LEN,ii));
*out_len = op - out;
return 0; /* compression went ok */
}
/***********************************************************************
// compress public entry point.
************************************************************************/
LZO_PUBLIC(int)
lzo1_compress ( const lzo_byte *in , lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
int r = LZO_E_OK;
#if defined(__LZO_QUERY_COMPRESS)
if (__LZO_IS_COMPRESS_QUERY(in,in_len,out,out_len,wrkmem))
return __LZO_QUERY_COMPRESS(in,in_len,out,out_len,wrkmem,D_SIZE,lzo_sizeof(lzo_dict_t));
#endif
/* don't try to compress a block that's too short */
if (in_len <= 0)
*out_len = 0;
else if (in_len <= MIN_MATCH_LONG + DVAL_LEN + 1)
{
#if defined(LZO_RETURN_IF_NOT_COMPRESSIBLE)
r = LZO_E_NOT_COMPRESSIBLE;
#else
*out_len = store_run(out,in,in_len) - out;
#endif
}
else
r = do_compress(in,in_len,out,out_len,wrkmem);
return r;
}
/*
vi:ts=4:et
*/
+90
View File
@@ -0,0 +1,90 @@
/* lzo1.h -- public interface of the LZO1 compression algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
http://www.oberhumer.com/opensource/lzo/
*/
#ifndef __LZO1_H
#define __LZO1_H
#ifndef __LZOCONF_H
#include <lzoconf.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/***********************************************************************
//
************************************************************************/
/* Memory required for the wrkmem parameter.
* When the required size is 0, you can also pass a NULL pointer.
*/
#define LZO1_MEM_COMPRESS ((lzo_uint32) (8192L * lzo_sizeof_dict_t))
#define LZO1_MEM_DECOMPRESS (0)
LZO_EXTERN(int)
lzo1_compress ( const lzo_byte *src, lzo_uint src_len,
lzo_byte *dst, lzo_uintp dst_len,
lzo_voidp wrkmem );
LZO_EXTERN(int)
lzo1_decompress ( const lzo_byte *src, lzo_uint src_len,
lzo_byte *dst, lzo_uintp dst_len,
lzo_voidp wrkmem /* NOT USED */ );
/***********************************************************************
// better compression ratio at the cost of more memory and time
************************************************************************/
#define LZO1_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t))
#if !defined(LZO_99_UNSUPPORTED)
LZO_EXTERN(int)
lzo1_99_compress ( const lzo_byte *src, lzo_uint src_len,
lzo_byte *dst, lzo_uintp dst_len,
lzo_voidp wrkmem );
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* already included */
+99
View File
@@ -0,0 +1,99 @@
/* lzo16bit.h -- configuration for the strict 16-bit memory model
This file is part of the LZO real-time data compression library.
Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
http://www.oberhumer.com/opensource/lzo/
*/
/*
* NOTE:
* the strict 16-bit memory model is *not* officially supported.
* This file is only included for the sake of completeness.
*/
#ifndef __LZOCONF_H
# include <lzoconf.h>
#endif
#ifndef __LZO16BIT_H
#define __LZO16BIT_H
#if defined(__LZO_STRICT_16BIT)
#if (UINT_MAX < LZO_0xffffffffL)
#ifdef __cplusplus
extern "C" {
#endif
/***********************************************************************
//
************************************************************************/
#ifndef LZO_99_UNSUPPORTED
#define LZO_99_UNSUPPORTED
#endif
#ifndef LZO_999_UNSUPPORTED
#define LZO_999_UNSUPPORTED
#endif
typedef unsigned int lzo_uint;
typedef int lzo_int;
#define LZO_UINT_MAX UINT_MAX
#define LZO_INT_MAX INT_MAX
#define lzo_sizeof_dict_t sizeof(lzo_uint)
/***********************************************************************
//
************************************************************************/
#if defined(__LZO_DOS16) || defined(__LZO_WIN16)
#if 0
#define __LZO_MMODEL __far
#else
#define __LZO_MMODEL
#endif
#endif /* defined(__LZO_DOS16) || defined(__LZO_WIN16) */
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* (UINT_MAX < LZO_0xffffffffL) */
#endif /* defined(__LZO_STRICT_16BIT) */
#endif /* already included */
+126
View File
@@ -0,0 +1,126 @@
/* lzo1_99.c -- implementation of the LZO1-99 algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
#include <lzoconf.h>
#if !defined(LZO_99_UNSUPPORTED)
#define COMPRESS_ID 99
#define DDBITS 3
#define CLEVEL 9
/***********************************************************************
//
************************************************************************/
#define LZO_NEED_DICT_H
#include "config1.h"
/***********************************************************************
// compression internal entry point.
************************************************************************/
static int
_lzo1_do_compress ( const lzo_byte *in, lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem,
lzo_compress_t func )
{
int r;
/* don't try to compress a block that's too short */
if (in_len <= 0)
{
*out_len = 0;
r = LZO_E_OK;
}
else if (in_len <= MIN_LOOKAHEAD + 1)
{
#if defined(LZO_RETURN_IF_NOT_COMPRESSIBLE)
*out_len = 0;
r = LZO_E_NOT_COMPRESSIBLE;
#else
*out_len = STORE_RUN(out,in,in_len) - out;
r = (*out_len > in_len) ? LZO_E_OK : LZO_E_ERROR;
#endif
}
else
r = func(in,in_len,out,out_len,wrkmem);
return r;
}
/***********************************************************************
//
************************************************************************/
#if !defined(COMPRESS_ID)
#define COMPRESS_ID _LZO_ECONCAT2(DD_BITS,CLEVEL)
#endif
#define LZO_CODE_MATCH_INCLUDE_FILE "lzo1_cm.ch"
#include "lzo1b_c.ch"
/***********************************************************************
//
************************************************************************/
#define LZO_COMPRESS \
_LZO_ECONCAT3(lzo1_,COMPRESS_ID,_compress)
#define LZO_COMPRESS_FUNC \
_LZO_ECONCAT3(_lzo1_,COMPRESS_ID,_compress_func)
/***********************************************************************
//
************************************************************************/
LZO_PUBLIC(int)
LZO_COMPRESS ( const lzo_byte *in, lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
#if defined(__LZO_QUERY_COMPRESS)
if (__LZO_IS_COMPRESS_QUERY(in,in_len,out,out_len,wrkmem))
return __LZO_QUERY_COMPRESS(in,in_len,out,out_len,wrkmem,D_SIZE,lzo_sizeof(lzo_dict_t));
#endif
return _lzo1_do_compress(in,in_len,out,out_len,wrkmem,do_compress);
}
#endif
/*
vi:ts=4:et
*/
+39
View File
@@ -0,0 +1,39 @@
/* lzo1_cm.ch -- implementation of the LZO1 compression algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
#include "lzo1a_cm.ch"
/*
vi:ts=4:et
*/
+139
View File
@@ -0,0 +1,139 @@
/* lzo1_d.ch -- common decompression stuff
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
#if defined(LZO_TEST_DECOMPRESS_OVERRUN)
# if !defined(LZO_TEST_DECOMPRESS_OVERRUN_INPUT)
# define LZO_TEST_DECOMPRESS_OVERRUN_INPUT 2
# endif
# if !defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
# define LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT 2
# endif
# if !defined(LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND)
# define LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND
# endif
#endif
/***********************************************************************
// Overrun detection is internally handled by these macros:
//
// TEST_IP test input overrun at loop begin
// NEED_IP test input overrun at every input byte
//
// TEST_OP test output overrun at loop begin
// NEED_OP test output overrun at every output byte
//
// TEST_LOOKBEHIND test match postion
//
// The fastest decompressor results when testing for no overruns
// and using LZO_EOF_CODE.
************************************************************************/
#undef TEST_IP
#undef TEST_OP
#undef TEST_LOOKBEHIND
#undef NEED_IP
#undef NEED_OP
#undef HAVE_TEST_IP
#undef HAVE_TEST_OP
#undef HAVE_NEED_IP
#undef HAVE_NEED_OP
#undef HAVE_ANY_IP
#undef HAVE_ANY_OP
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_INPUT)
# if (LZO_TEST_DECOMPRESS_OVERRUN_INPUT >= 1)
# define TEST_IP (ip < ip_end)
# endif
# if (LZO_TEST_DECOMPRESS_OVERRUN_INPUT >= 2)
# define NEED_IP(x) \
if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x)) goto input_overrun
# endif
#endif
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
# if (LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT >= 1)
# define TEST_OP (op <= op_end)
# endif
# if (LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT >= 2)
# undef TEST_OP /* don't need both of the tests here */
# define NEED_OP(x) \
if ((lzo_uint)(op_end - op) < (lzo_uint)(x)) goto output_overrun
# endif
#endif
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND)
# define TEST_LOOKBEHIND(m_pos,out) if (m_pos < out) goto lookbehind_overrun
#else
# define TEST_LOOKBEHIND(m_pos,op) ((void) 0)
#endif
#if !defined(LZO_EOF_CODE) && !defined(TEST_IP)
/* if we have no EOF code, we have to test for the end of the input */
# define TEST_IP (ip < ip_end)
#endif
#if defined(TEST_IP)
# define HAVE_TEST_IP
#else
# define TEST_IP 1
#endif
#if defined(TEST_OP)
# define HAVE_TEST_OP
#else
# define TEST_OP 1
#endif
#if defined(NEED_IP)
# define HAVE_NEED_IP
#else
# define NEED_IP(x) ((void) 0)
#endif
#if defined(NEED_OP)
# define HAVE_NEED_OP
#else
# define NEED_OP(x) ((void) 0)
#endif
#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
# define HAVE_ANY_IP
#endif
#if defined(HAVE_TEST_OP) || defined(HAVE_NEED_OP)
# define HAVE_ANY_OP
#endif
/*
vi:ts=4:et
*/
+674
View File
@@ -0,0 +1,674 @@
/* lzo1a.c -- implementation of the LZO1A algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
#include <lzo1a.h>
#include "lzo_conf.h"
/***********************************************************************
// The next two defines can be changed to customize LZO1A.
// The default version is LZO1A-5/1.
************************************************************************/
/* run bits (3 - 5) - the compressor and the decompressor
* must use the same value. */
#if !defined(RBITS)
# define RBITS 5
#endif
/* compression level (1 - 9) - this only affects the compressor.
* 1 is fastest, 9 is best compression ratio
*/
#if !defined(CLEVEL)
# define CLEVEL 1 /* fastest by default */
#endif
/* Collect statistics */
#if 0 && !defined(LZO_COLLECT_STATS)
# define LZO_COLLECT_STATS
#endif
/***********************************************************************
// You should not have to change anything below this line.
************************************************************************/
/* check configuration */
#if (RBITS < 3 || RBITS > 5)
# error "invalid RBITS"
#endif
#if (CLEVEL < 1 || CLEVEL > 9)
# error "invalid CLEVEL"
#endif
/***********************************************************************
// internal configuration
// all of these affect compression only
************************************************************************/
/* return -1 instead of copying if the data cannot be compressed */
#undef LZO_RETURN_IF_NOT_COMPRESSIBLE
/* choose the hashing strategy */
#ifndef LZO_HASH
#define LZO_HASH LZO_HASH_LZO_INCREMENTAL_A
#endif
#define D_INDEX1(d,p) d = DM((0x21*DX2(p,5,5)) >> 5)
#define D_INDEX2(d,p) d = d ^ D_MASK
#include "lzo1a_de.h"
#include "stats1a.h"
#include "lzo_util.h"
/* check other constants */
#if (LBITS < 5 || LBITS > 8)
# error "invalid LBITS"
#endif
#if defined(LZO_COLLECT_STATS)
static lzo1a_stats_t lzo_statistics;
lzo1a_stats_t *lzo1a_stats = &lzo_statistics;
# define lzo_stats lzo1a_stats
#endif
/***********************************************************************
// get algorithm info, return memory required for compression
************************************************************************/
LZO_EXTERN(lzo_uint) lzo1a_info ( int *rbits, int *clevel );
LZO_PUBLIC(lzo_uint)
lzo1a_info ( int *rbits, int *clevel )
{
if (rbits)
*rbits = RBITS;
if (clevel)
*clevel = CLEVEL;
return D_SIZE * lzo_sizeof(lzo_byte *);
}
/***********************************************************************
// LZO1A decompress a block of data.
//
// Could be easily translated into assembly code.
************************************************************************/
LZO_PUBLIC(int)
lzo1a_decompress ( const lzo_byte *in , lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
#if defined(LZO_OPTIMIZE_GNUC_i386)
register lzo_byte *op __asm__("%edi");
register const lzo_byte *ip __asm__("%esi");
register lzo_uint t __asm__("%ecx");
register const lzo_byte *m_pos __asm__("%ebx");
#else
register lzo_byte *op;
register const lzo_byte *ip;
register lzo_uint t;
register const lzo_byte *m_pos;
#endif
const lzo_byte * const ip_end = in + in_len;
LZO_UNUSED(wrkmem);
#if defined(__LZO_QUERY_DECOMPRESS)
if (__LZO_IS_DECOMPRESS_QUERY(in,in_len,out,out_len,wrkmem))
return __LZO_QUERY_DECOMPRESS(in,in_len,out,out_len,wrkmem,0,0);
#endif
op = out;
ip = in;
while (ip < ip_end)
{
t = *ip++; /* get marker */
LZO_STATS(lzo_stats->marker[t]++);
if (t == 0) /* a R0 literal run */
{
t = *ip++;
if (t >= R0FAST - R0MIN) /* a long R0 run */
{
t -= R0FAST - R0MIN;
if (t == 0)
t = R0FAST;
else
{
#if 0
t = 256u << ((unsigned) t);
#else
/* help the optimizer */
lzo_uint tt = 256;
do tt <<= 1; while (--t > 0);
t = tt;
#endif
}
MEMCPY8_DS(op,ip,t);
continue;
}
t += R0MIN;
goto literal;
}
else if (t < R0MIN) /* a short literal run */
{
literal:
MEMCPY_DS(op,ip,t);
/* after a literal a match must follow */
while (ip < ip_end)
{
t = *ip++; /* get R1 marker */
if (t >= R0MIN)
goto match;
/* R1 match - a context sensitive 3 byte match + 1 byte literal */
assert((t & OMASK) == t);
m_pos = op - MIN_OFFSET;
m_pos -= t | (((lzo_uint) *ip++) << OBITS);
assert(m_pos >= out); assert(m_pos < op);
*op++ = *m_pos++;
*op++ = *m_pos++;
*op++ = *m_pos++;
*op++ = *ip++;
}
}
else /* a match */
{
match:
/* get match offset */
m_pos = op - MIN_OFFSET;
m_pos -= (t & OMASK) | (((lzo_uint) *ip++) << OBITS);
assert(m_pos >= out); assert(m_pos < op);
/* get match len */
if (t < ((MSIZE - 1) << OBITS)) /* a short match */
{
t >>= OBITS;
*op++ = *m_pos++;
*op++ = *m_pos++;
MEMMOVE_DS(op,m_pos,t);
}
else /* a long match */
{
#if (LBITS < 8)
t = (MIN_MATCH_LONG - THRESHOLD) + ((lzo_uint)(*ip++) & LMASK);
#else
t = (MIN_MATCH_LONG - THRESHOLD) + (lzo_uint)(*ip++);
#endif
*op++ = *m_pos++;
*op++ = *m_pos++;
MEMMOVE_DS(op,m_pos,t);
#if (LBITS < 8)
/* a very short literal following a long match */
t = ip[-1] >> LBITS;
if (t) do
*op++ = *ip++;
while (--t);
#endif
}
}
}
*out_len = op - out;
/* the next line is the only check in the decompressor */
return (ip == ip_end ? LZO_E_OK :
(ip < ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
}
/***********************************************************************
// LZO1A compress a block of data.
//
// I apologize for the spaghetti code, but it really helps the optimizer.
************************************************************************/
#include "lzo1a_cr.ch"
static int
do_compress ( const lzo_byte *in , lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
#if defined(LZO_OPTIMIZE_GNUC_i386)
register const lzo_byte *ip __asm__("%esi");
#else
register const lzo_byte *ip;
#endif
#if defined(__LZO_HASH_INCREMENTAL)
lzo_uint32 dv;
#endif
const lzo_byte *m_pos;
lzo_byte *op;
const lzo_byte * const ip_end = in+in_len - DVAL_LEN - MIN_MATCH_LONG;
const lzo_byte * const in_end = in+in_len - DVAL_LEN;
const lzo_byte *ii;
lzo_dict_p const dict = (lzo_dict_p) wrkmem;
const lzo_byte *r1 = ip_end; /* pointer for R1 match (none yet) */
#if (LBITS < 8)
const lzo_byte *im = ip_end; /* pointer to last match start */
#endif
#if !defined(NDEBUG)
const lzo_byte *m_pos_sav;
#endif
op = out;
ip = in;
ii = ip; /* point to start of current literal run */
/* init dictionary */
#if defined(LZO_DETERMINISTIC)
BZERO8_PTR(wrkmem,sizeof(lzo_dict_t),D_SIZE);
#endif
DVAL_FIRST(dv,ip); UPDATE_D(dict,0,dv,ip,in); ip++;
DVAL_NEXT(dv,ip);
do {
lzo_moff_t m_off;
lzo_uint dindex;
DINDEX1(dindex,ip);
GINDEX(m_pos,m_off,dict,dindex,in);
if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,MAX_OFFSET))
goto literal;
if (m_pos[0] == ip[0] && m_pos[1] == ip[1] && m_pos[2] == ip[2])
goto match;
DINDEX2(dindex,ip);
GINDEX(m_pos,m_off,dict,dindex,in);
if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,MAX_OFFSET))
goto literal;
if (m_pos[0] == ip[0] && m_pos[1] == ip[1] && m_pos[2] == ip[2])
goto match;
goto literal;
literal:
UPDATE_I(dict,0,dindex,ip,in);
if (++ip >= ip_end)
break;
continue;
match:
UPDATE_I(dict,0,dindex,ip,in);
#if !defined(NDEBUG) && defined(LZO_DICT_USE_PTR)
assert(m_pos == NULL || m_pos >= in);
m_pos_sav = m_pos;
#endif
m_pos += 3;
{
/* we have found a match (of at least length 3) */
#if !defined(NDEBUG) && !defined(LZO_DICT_USE_PTR)
assert((m_pos_sav = ip - m_off) == (m_pos - 3));
#endif
assert(m_pos >= in);
assert(ip < ip_end);
/* 1) store the current literal run */
if (pd(ip,ii) > 0)
{
lzo_uint t = pd(ip,ii);
if (ip - r1 == MIN_MATCH + 1)
{
/* Code a context sensitive R1 match.
* This is tricky and somewhat difficult to explain:
* multiplex a literal run of length 1 into the previous
* short match of length MIN_MATCH.
* The key idea is:
* - after a short run a match MUST follow
* - therefore the value m = 000 in the mmmooooo marker is free
* - use 000ooooo to indicate a MIN_MATCH match (this
* is already coded) plus a 1 byte literal
*/
assert(t == 1);
/* modify marker byte */
assert((op[-2] >> OBITS) == (MIN_MATCH - THRESHOLD));
op[-2] &= OMASK;
assert((op[-2] >> OBITS) == 0);
/* copy 1 literal */
*op++ = *ii;
LZO_STATS(lzo_stats->r1_matches++);
r1 = ip; /* set new R1 pointer */
}
else if (t < R0MIN)
{
/* inline the copying of a short run */
#if (LBITS < 8)
if (t < (1 << (8-LBITS)) && ii - im >= MIN_MATCH_LONG)
{
/* Code a very short literal run into the
* previous long match length byte.
*/
LZO_STATS(lzo_stats->lit_runs_after_long_match++);
LZO_STATS(lzo_stats->lit_run_after_long_match[t]++);
assert(ii - im <= MAX_MATCH_LONG);
assert((op[-1] >> LBITS) == 0);
op[-1] |= t << LBITS;
MEMCPY_DS(op, ii, t);
}
else
#endif
{
LZO_STATS(lzo_stats->lit_runs++);
LZO_STATS(lzo_stats->lit_run[t]++);
*op++ = LZO_BYTE(t);
MEMCPY_DS(op, ii, t);
r1 = ip; /* set new R1 pointer */
}
}
else if (t < R0FAST)
{
/* inline the copying of a short R0 run */
LZO_STATS(lzo_stats->r0short_runs++);
*op++ = 0; *op++ = LZO_BYTE(t - R0MIN);
MEMCPY_DS(op, ii, t);
r1 = ip; /* set new R1 pointer */
}
else
op = store_run(op,ii,t);
}
#if (LBITS < 8)
im = ip;
#endif
/* 2) compute match len */
ii = ip; /* point to start of current match */
/* we already matched MIN_MATCH bytes,
* m_pos also already advanced MIN_MATCH bytes */
ip += MIN_MATCH;
assert(m_pos < ip);
/* try to match another MIN_MATCH_LONG - MIN_MATCH bytes
* to see if we get a long match */
#define PS *m_pos++ != *ip++
#if (MIN_MATCH_LONG - MIN_MATCH == 2) /* MBITS == 2 */
if (PS || PS)
#elif (MIN_MATCH_LONG - MIN_MATCH == 6) /* MBITS == 3 */
if (PS || PS || PS || PS || PS || PS)
#elif (MIN_MATCH_LONG - MIN_MATCH == 14) /* MBITS == 4 */
if (PS || PS || PS || PS || PS || PS || PS ||
PS || PS || PS || PS || PS || PS || PS)
#elif (MIN_MATCH_LONG - MIN_MATCH == 30) /* MBITS == 5 */
if (PS || PS || PS || PS || PS || PS || PS || PS ||
PS || PS || PS || PS || PS || PS || PS || PS ||
PS || PS || PS || PS || PS || PS || PS || PS ||
PS || PS || PS || PS || PS || PS)
#else
# error "MBITS not yet implemented"
#endif
{
/* we've found a short match */
lzo_uint m_len;
/* 2a) compute match parameters */
assert(ip-m_pos == (int)m_off);
--ip; /* ran one too far, point back to non-match */
m_len = ip - ii;
assert(m_len >= MIN_MATCH_SHORT);
assert(m_len <= MAX_MATCH_SHORT);
assert(m_off >= MIN_OFFSET);
assert(m_off <= MAX_OFFSET);
assert(ii-m_off == m_pos_sav);
assert(lzo_memcmp(m_pos_sav,ii,m_len) == 0);
m_off -= MIN_OFFSET;
/* 2b) code a short match */
/* code short match len + low offset bits */
*op++ = LZO_BYTE(((m_len - THRESHOLD) << OBITS) |
(m_off & OMASK));
/* code high offset bits */
*op++ = LZO_BYTE(m_off >> OBITS);
#if defined(LZO_COLLECT_STATS)
lzo_stats->short_matches++;
lzo_stats->short_match[m_len]++;
if (m_off < OSIZE)
lzo_stats->short_match_offset_osize[m_len]++;
if (m_off < 256)
lzo_stats->short_match_offset_256[m_len]++;
if (m_off < 1024)
lzo_stats->short_match_offset_1024[m_len]++;
#endif
/* 2c) Insert phrases (beginning with ii+1) into the dictionary. */
#define SI /* nothing */
#define DI ++ii; DVAL_NEXT(dv,ii); UPDATE_D(dict,0,dv,ii,in);
#define XI assert(ii < ip); ii = ip; DVAL_FIRST(dv,(ip));
#if (CLEVEL == 9) || (CLEVEL >= 7 && MBITS <= 4) || (CLEVEL >= 5 && MBITS <= 3)
/* Insert the whole match (ii+1)..(ip-1) into dictionary. */
++ii;
do {
DVAL_NEXT(dv,ii);
UPDATE_D(dict,0,dv,ii,in);
} while (++ii < ip);
DVAL_NEXT(dv,ii);
assert(ii == ip);
DVAL_ASSERT(dv,ip);
#elif (CLEVEL >= 3)
SI DI DI XI
#elif (CLEVEL >= 2)
SI DI XI
#else
XI
#endif
}
else
{
/* we've found a long match - see how far we can still go */
const lzo_byte *end;
lzo_uint m_len;
assert(ip <= in_end);
assert(ii == ip - MIN_MATCH_LONG);
#if defined(__LZO_CHECKER)
if (in_end - ip <= (MAX_MATCH_LONG - MIN_MATCH_LONG))
#else
if (in_end <= ip + (MAX_MATCH_LONG - MIN_MATCH_LONG))
#endif
end = in_end;
else
{
end = ip + (MAX_MATCH_LONG - MIN_MATCH_LONG);
assert(end < in_end);
}
while (ip < end && *m_pos == *ip)
m_pos++, ip++;
assert(ip <= in_end);
/* 2a) compute match parameters */
m_len = (ip - ii);
assert(m_len >= MIN_MATCH_LONG);
assert(m_len <= MAX_MATCH_LONG);
assert(m_off >= MIN_OFFSET);
assert(m_off <= MAX_OFFSET);
assert(ii-m_off == m_pos_sav);
assert(lzo_memcmp(m_pos_sav,ii,m_len) == 0);
assert(ip-m_pos == (int)m_off);
m_off -= MIN_OFFSET;
/* 2b) code the long match */
/* code long match flag + low offset bits */
*op++ = LZO_BYTE(((MSIZE - 1) << OBITS) | (m_off & OMASK));
/* code high offset bits */
*op++ = LZO_BYTE(m_off >> OBITS);
/* code match len */
*op++ = LZO_BYTE(m_len - MIN_MATCH_LONG);
#if defined(LZO_COLLECT_STATS)
lzo_stats->long_matches++;
lzo_stats->long_match[m_len]++;
#endif
/* 2c) Insert phrases (beginning with ii+1) into the dictionary. */
#if (CLEVEL == 9)
/* Insert the whole match (ii+1)..(ip-1) into dictionary. */
/* This is not recommended because it is slow. */
++ii;
do {
DVAL_NEXT(dv,ii);
UPDATE_D(dict,0,dv,ii,in);
} while (++ii < ip);
DVAL_NEXT(dv,ii);
assert(ii == ip);
DVAL_ASSERT(dv,ip);
#elif (CLEVEL >= 8)
SI DI DI DI DI DI DI DI DI XI
#elif (CLEVEL >= 7)
SI DI DI DI DI DI DI DI XI
#elif (CLEVEL >= 6)
SI DI DI DI DI DI DI XI
#elif (CLEVEL >= 5)
SI DI DI DI DI XI
#elif (CLEVEL >= 4)
SI DI DI DI XI
#elif (CLEVEL >= 3)
SI DI DI XI
#elif (CLEVEL >= 2)
SI DI XI
#else
XI
#endif
}
/* ii now points to the start of the next literal run */
assert(ii == ip);
}
} while (ip < ip_end);
assert(ip <= in_end);
#if defined(LZO_RETURN_IF_NOT_COMPRESSIBLE)
/* return -1 if op == out to indicate that we
* couldn't compress and didn't copy anything.
*/
if (op == out)
{
*out_len = 0;
return LZO_E_NOT_COMPRESSIBLE;
}
#endif
/* store the final literal run */
if (pd(in_end+DVAL_LEN,ii) > 0)
op = store_run(op,ii,pd(in_end+DVAL_LEN,ii));
*out_len = op - out;
return 0; /* compression went ok */
}
/***********************************************************************
// LZO1A compress public entry point.
************************************************************************/
LZO_PUBLIC(int)
lzo1a_compress ( const lzo_byte *in , lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
int r = LZO_E_OK;
#if defined(__LZO_QUERY_COMPRESS)
if (__LZO_IS_COMPRESS_QUERY(in,in_len,out,out_len,wrkmem))
return __LZO_QUERY_COMPRESS(in,in_len,out,out_len,wrkmem,D_SIZE,lzo_sizeof(lzo_dict_t));
#endif
#if defined(LZO_COLLECT_STATS)
memset(lzo_stats,0,sizeof(*lzo_stats));
lzo_stats->rbits = RBITS;
lzo_stats->clevel = CLEVEL;
lzo_stats->dbits = DBITS;
lzo_stats->lbits = LBITS;
lzo_stats->min_match_short = MIN_MATCH_SHORT;
lzo_stats->max_match_short = MAX_MATCH_SHORT;
lzo_stats->min_match_long = MIN_MATCH_LONG;
lzo_stats->max_match_long = MAX_MATCH_LONG;
lzo_stats->min_offset = MIN_OFFSET;
lzo_stats->max_offset = MAX_OFFSET;
lzo_stats->r0min = R0MIN;
lzo_stats->r0fast = R0FAST;
lzo_stats->r0max = R0MAX;
lzo_stats->in_len = in_len;
#endif
/* don't try to compress a block that's too short */
if (in_len <= 0)
*out_len = 0;
else if (in_len <= MIN_MATCH_LONG + DVAL_LEN + 1)
{
#if defined(LZO_RETURN_IF_NOT_COMPRESSIBLE)
r = LZO_E_NOT_COMPRESSIBLE;
#else
*out_len = store_run(out,in,in_len) - out;
#endif
}
else
r = do_compress(in,in_len,out,out_len,wrkmem);
#if defined(LZO_COLLECT_STATS)
lzo_stats->short_matches -= lzo_stats->r1_matches;
lzo_stats->short_match[MIN_MATCH] -= lzo_stats->r1_matches;
lzo_stats->out_len = *out_len;
#endif
return r;
}
/*
vi:ts=4:et
*/
+90
View File
@@ -0,0 +1,90 @@
/* lzo1a.h -- public interface of the LZO1A compression algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
http://www.oberhumer.com/opensource/lzo/
*/
#ifndef __LZO1A_H
#define __LZO1A_H
#ifndef __LZOCONF_H
#include <lzoconf.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/***********************************************************************
//
************************************************************************/
/* Memory required for the wrkmem parameter.
* When the required size is 0, you can also pass a NULL pointer.
*/
#define LZO1A_MEM_COMPRESS ((lzo_uint32) (8192L * lzo_sizeof_dict_t))
#define LZO1A_MEM_DECOMPRESS (0)
LZO_EXTERN(int)
lzo1a_compress ( const lzo_byte *src, lzo_uint src_len,
lzo_byte *dst, lzo_uintp dst_len,
lzo_voidp wrkmem );
LZO_EXTERN(int)
lzo1a_decompress ( const lzo_byte *src, lzo_uint src_len,
lzo_byte *dst, lzo_uintp dst_len,
lzo_voidp wrkmem /* NOT USED */ );
/***********************************************************************
// better compression ratio at the cost of more memory and time
************************************************************************/
#define LZO1A_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t))
#if !defined(LZO_99_UNSUPPORTED)
LZO_EXTERN(int)
lzo1a_99_compress ( const lzo_byte *src, lzo_uint src_len,
lzo_byte *dst, lzo_uintp dst_len,
lzo_voidp wrkmem );
#endif
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* already included */
+126
View File
@@ -0,0 +1,126 @@
/* lzo1a_99.c -- implementation of the LZO1A-99 algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
#include <lzoconf.h>
#if !defined(LZO_99_UNSUPPORTED)
#define COMPRESS_ID 99
#define DDBITS 3
#define CLEVEL 9
/***********************************************************************
//
************************************************************************/
#define LZO_NEED_DICT_H
#include "config1a.h"
/***********************************************************************
// compression internal entry point.
************************************************************************/
static int
_lzo1a_do_compress ( const lzo_byte *in, lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem,
lzo_compress_t func )
{
int r;
/* don't try to compress a block that's too short */
if (in_len <= 0)
{
*out_len = 0;
r = LZO_E_OK;
}
else if (in_len <= MIN_LOOKAHEAD + 1)
{
#if defined(LZO_RETURN_IF_NOT_COMPRESSIBLE)
*out_len = 0;
r = LZO_E_NOT_COMPRESSIBLE;
#else
*out_len = STORE_RUN(out,in,in_len) - out;
r = (*out_len > in_len) ? LZO_E_OK : LZO_E_ERROR;
#endif
}
else
r = func(in,in_len,out,out_len,wrkmem);
return r;
}
/***********************************************************************
//
************************************************************************/
#if !defined(COMPRESS_ID)
#define COMPRESS_ID _LZO_ECONCAT2(DD_BITS,CLEVEL)
#endif
#define LZO_CODE_MATCH_INCLUDE_FILE "lzo1a_cm.ch"
#include "lzo1b_c.ch"
/***********************************************************************
//
************************************************************************/
#define LZO_COMPRESS \
_LZO_ECONCAT3(lzo1a_,COMPRESS_ID,_compress)
#define LZO_COMPRESS_FUNC \
_LZO_ECONCAT3(_lzo1a_,COMPRESS_ID,_compress_func)
/***********************************************************************
//
************************************************************************/
LZO_PUBLIC(int)
LZO_COMPRESS ( const lzo_byte *in, lzo_uint in_len,
lzo_byte *out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
#if defined(__LZO_QUERY_COMPRESS)
if (__LZO_IS_COMPRESS_QUERY(in,in_len,out,out_len,wrkmem))
return __LZO_QUERY_COMPRESS(in,in_len,out,out_len,wrkmem,D_SIZE,lzo_sizeof(lzo_dict_t));
#endif
return _lzo1a_do_compress(in,in_len,out,out_len,wrkmem,do_compress);
}
#endif
/*
vi:ts=4:et
*/
+233
View File
@@ -0,0 +1,233 @@
/* lzo1a_cm.ch -- implementation of the LZO1A compression algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the library and is subject
to change.
*/
/***********************************************************************
// code the match in LZO1 compatible format
************************************************************************/
#define THRESHOLD (M2_MIN_LEN - 1)
#define MSIZE LZO_SIZE(M2L_BITS)
/***********************************************************************
//
************************************************************************/
#if (DD_BITS == 0)
/* we already matched M2_MIN_LEN bytes,
* m_pos also already advanced M2_MIN_LEN bytes */
ip += M2_MIN_LEN;
assert(m_pos < ip);
/* try to match another M2_MAX_LEN + 1 - M2_MIN_LEN bytes
* to see if we get more than a M2 match */
#define M2_OR_M3 (MATCH_M2)
#else /* (DD_BITS == 0) */
/* we already matched m_len bytes */
assert(m_len >= M2_MIN_LEN);
ip += m_len;
assert(ip <= in_end);
#define M2_OR_M3 (m_len <= M2_MAX_LEN)
#endif /* (DD_BITS == 0) */
if (M2_OR_M3)
{
/* we've found a short match */
assert(ip <= in_end);
/* 2a) compute match parameters */
#if (DD_BITS == 0)
assert((lzo_moff_t)(ip-m_pos) == m_off);
--ip; /* ran one too far, point back to non-match */
m_len = ip - ii;
#endif
assert(m_len >= M2_MIN_LEN);
assert(m_len <= M2_MAX_LEN);
assert(m_off >= M2_MIN_OFFSET);
assert(m_off <= M2_MAX_OFFSET);
assert(ii-m_off == m_pos_sav);
assert(lzo_memcmp(m_pos_sav,ii,m_len) == 0);
/* 2b) code the match */
m_off -= M2_MIN_OFFSET;
/* code short match len + low offset bits */
*op++ = LZO_BYTE(((m_len - THRESHOLD) << M2O_BITS) |
(m_off & M2O_MASK));
/* code high offset bits */
*op++ = LZO_BYTE(m_off >> M2O_BITS);
if (ip >= ip_end)
{
ii = ip;
break;
}
/* 2c) Insert phrases (beginning with ii+1) into the dictionary. */
#if (CLEVEL == 9) || (CLEVEL >= 7 && M2L_BITS <= 4) || (CLEVEL >= 5 && M2L_BITS <= 3)
/* Insert the whole match (ii+1)..(ip-1) into dictionary. */
++ii;
do {
DVAL_NEXT(dv,ii);
#if 0
UPDATE_D(dict,drun,dv,ii,in);
#else
dict[ DINDEX(dv,ii) ] = DENTRY(ii,in);
#endif
MI
} while (++ii < ip);
DVAL_NEXT(dv,ii);
assert(ii == ip);
DVAL_ASSERT(dv,ip);
#elif (CLEVEL >= 3)
SI DI DI XI
#elif (CLEVEL >= 2)
SI DI XI
#else
XI
#endif
}
else
{
/* we've found a long match - see how far we can still go */
const lzo_byte *end;
assert(ip <= in_end);
assert(ii == ip - (M2_MAX_LEN + 1));
assert(lzo_memcmp(m_pos_sav,ii,(lzo_uint)(ip-ii)) == 0);
#if (DD_BITS > 0)
assert(m_len == (lzo_uint)(ip-ii));
m_pos = ip - m_off;
assert(m_pos == m_pos_sav + m_len);
#endif
#if defined(__LZO_CHECKER)
if (in_end - ip <= (lzo_ptrdiff_t) (M3_MAX_LEN - M3_MIN_LEN))
#else
if (in_end <= ip + (M3_MAX_LEN - M3_MIN_LEN))
#endif
end = in_end;
else
{
end = ip + (M3_MAX_LEN - M3_MIN_LEN);
assert(end < in_end);
}
while (ip < end && *m_pos == *ip)
m_pos++, ip++;
assert(ip <= in_end);
/* 2a) compute match parameters */
m_len = (ip - ii);
assert(m_len >= M3_MIN_LEN);
assert(m_len <= M3_MAX_LEN);
assert(m_off >= M3_MIN_OFFSET);
assert(m_off <= M3_MAX_OFFSET);
assert(ii-m_off == m_pos_sav);
assert(lzo_memcmp(m_pos_sav,ii,m_len) == 0);
assert((lzo_moff_t)(ip-m_pos) == m_off);
/* 2b) code the match */
m_off -= M3_MIN_OFFSET - M3_EOF_OFFSET;
/* code long match flag + low offset bits */
*op++ = LZO_BYTE(((MSIZE - 1) << M3O_BITS) | (m_off & M3O_MASK));
/* code high offset bits */
*op++ = LZO_BYTE(m_off >> M3O_BITS);
/* code match len */
*op++ = LZO_BYTE(m_len - M3_MIN_LEN);
if (ip >= ip_end)
{
ii = ip;
break;
}
/* 2c) Insert phrases (beginning with ii+1) into the dictionary. */
#if (CLEVEL == 9)
/* Insert the whole match (ii+1)..(ip-1) into dictionary. */
/* This is not recommended because it can be slow. */
++ii;
do {
DVAL_NEXT(dv,ii);
#if 0
UPDATE_D(dict,drun,dv,ii,in);
#else
dict[ DINDEX(dv,ii) ] = DENTRY(ii,in);
#endif
MI
} while (++ii < ip);
DVAL_NEXT(dv,ii);
assert(ii == ip);
DVAL_ASSERT(dv,ip);
#elif (CLEVEL >= 8)
SI DI DI DI DI DI DI DI DI XI
#elif (CLEVEL >= 7)
SI DI DI DI DI DI DI DI XI
#elif (CLEVEL >= 6)
SI DI DI DI DI DI DI XI
#elif (CLEVEL >= 5)
SI DI DI DI DI XI
#elif (CLEVEL >= 4)
SI DI DI DI XI
#elif (CLEVEL >= 3)
SI DI DI XI
#elif (CLEVEL >= 2)
SI DI XI
#else
XI
#endif
}
/* ii now points to the start of the next literal run */
assert(ii == ip);
/*
vi:ts=4:et
*/
+121
View File
@@ -0,0 +1,121 @@
/* lzo1a_cr.ch -- literal run handling for the the LZO1A algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the LZO package and is subject
to change.
*/
#ifndef __LZO1A_CR_H
#define __LZO1A_CR_H
/***********************************************************************
// code a literal run
************************************************************************/
static lzo_byte *
store_run(lzo_byte * const oo, const lzo_byte * const ii, lzo_uint r_len)
{
#if defined(LZO_OPTIMIZE_GNUC_i386)
register lzo_byte *op __asm__("%edi");
register const lzo_byte *ip __asm__("%esi");
register lzo_uint t __asm__("%ecx");
#else
register lzo_byte *op;
register const lzo_byte *ip;
register lzo_uint t;
#endif
op = oo;
ip = ii;
assert(r_len > 0);
/* code a long R0 run */
if (r_len >= 512)
{
unsigned r_bits = 6; /* 256 << 6 == 16384 */
lzo_uint tt = 32768u;
while (r_len >= (t = tt))
{
r_len -= t;
*op++ = 0; *op++ = (R0MAX - R0MIN);
MEMCPY8_DS(op, ip, t);
LZO_STATS(lzo_stats->r0long_runs++);
}
tt >>= 1;
do {
if (r_len >= (t = tt))
{
r_len -= t;
*op++ = 0; *op++ = LZO_BYTE((R0FAST - R0MIN) + r_bits);
MEMCPY8_DS(op, ip, t);
LZO_STATS(lzo_stats->r0long_runs++);
}
tt >>= 1;
} while (--r_bits > 0);
}
assert(r_len < 512);
while (r_len >= (t = R0FAST))
{
r_len -= t;
*op++ = 0; *op++ = (R0FAST - R0MIN);
MEMCPY8_DS(op, ip, t);
LZO_STATS(lzo_stats->r0fast_runs++);
}
t = r_len;
if (t >= R0MIN)
{
/* code a short R0 run */
*op++ = 0; *op++ = LZO_BYTE(t - R0MIN);
MEMCPY_DS(op, ip, t);
LZO_STATS(lzo_stats->r0short_runs++);
}
else if (t > 0)
{
/* code a short literal run */
LZO_STATS(lzo_stats->lit_runs++);
LZO_STATS(lzo_stats->lit_run[t]++);
*op++ = LZO_BYTE(t);
MEMCPY_DS(op, ip, t);
}
return op;
}
#endif /* already included */
/*
vi:ts=4:et
*/
+145
View File
@@ -0,0 +1,145 @@
/* lzo1a_de.h -- definitions for the the LZO1A algorithm
This file is part of the LZO real-time data compression library.
Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the LZO package and is subject
to change.
*/
#ifndef __LZO_DEFS_H
#define __LZO_DEFS_H
#ifdef __cplusplus
extern "C" {
#endif
/***********************************************************************
//
************************************************************************/
/*
Format of the marker byte
76543210
--------
00000000 a long literal run ('R0' run) - there are short and long R0 runs
000rrrrr a short literal run with len r
mmmooooo a short match (len = 2+m, o = offset low bits)
111ooooo a long match (o = offset low bits)
*/
#define RSIZE (1 << RBITS)
#define RMASK (RSIZE - 1)
#define MBITS (8 - OBITS)
#define MSIZE (1 << MBITS)
#define MMASK (MSIZE - 1)
#define OBITS RBITS /* offset and run-length use same bits */
#define OSIZE (1 << OBITS)
#define OMASK (OSIZE - 1)
/* additional bits for coding the length in a long match */
#define LBITS 8
#define LSIZE (1 << LBITS)
#define LMASK (LSIZE - 1)
/***********************************************************************
// some macros to improve readability
************************************************************************/
/* Minimum len of a match */
#define MIN_MATCH 3
#define THRESHOLD (MIN_MATCH - 1)
/* Min-/Maximum len of a match coded in 2 bytes */
#define MIN_MATCH_SHORT (MIN_MATCH)
#define MAX_MATCH_SHORT (MIN_MATCH_SHORT + (MSIZE - 2) - 1)
/* why (MSIZE - 2) ? because 0 is used to mark runs,
* and MSIZE-1 is used to mark a long match */
/* Min-/Maximum len of a match coded in 3 bytes */
#define MIN_MATCH_LONG (MAX_MATCH_SHORT + 1)
#define MAX_MATCH_LONG (MIN_MATCH_LONG + LSIZE - 1)
/* Min-/Maximum offset of a match */
#define MIN_OFFSET 1
#define MAX_OFFSET (1 << (CHAR_BIT + OBITS))
/* R0 literal run (a long run) */
#define R0MIN (RSIZE) /* Minimum len of R0 run of literals */
#define R0MAX (R0MIN + 255) /* Maximum len of R0 run of literals */
#define R0FAST (R0MAX & ~7) /* R0MAX aligned to 8 byte boundary */
#if (R0MAX - R0FAST != 7) || ((R0FAST & 7) != 0)
# error "something went wrong"
#endif
/* 7 special codes from R0FAST+1 .. R0MAX
* these codes mean long R0 runs with lengths
* 512, 1024, 2048, 4096, 8192, 16384, 32768 */
/*
RBITS | MBITS MIN THR. MSIZE MAXS MINL MAXL MAXO R0MAX R0FAST
======+===============================================================
3 | 5 3 2 32 32 33 288 2048 263 256
4 | 4 3 2 16 16 17 272 4096 271 264
5 | 3 3 2 8 8 9 264 8192 287 280
*/
/***********************************************************************
//
************************************************************************/
#define DBITS 13
#include "lzo_dict.h"
#define DVAL_LEN DVAL_LOOKAHEAD
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* already included */
/*
vi:ts=4:et
*/

Some files were not shown because too many files have changed in this diff Show More